commit b536759c0769dab641993347baeb62400455be04
Author: Richard Kimberly Heck <[email protected]>
Date:   Tue Mar 17 01:50:28 2020 -0400

    Track whether title has been issued via OutputParams.
    
    When branches are used in the title, we may need to track whether
    we've issued the title across branch insets. So we put the relevant
    variables into OutputParams.
---
 src/OutputParams.cpp |    3 ++-
 src/OutputParams.h   |    6 ++++++
 src/output_latex.cpp |   20 +++++++++++---------
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/OutputParams.cpp b/src/OutputParams.cpp
index d26955e..8b1d60e 100644
--- a/src/OutputParams.cpp
+++ b/src/OutputParams.cpp
@@ -33,7 +33,8 @@ OutputParams::OutputParams(Encoding const * enc)
          dryrun(false), silent(false), pass_thru(false),
          html_disable_captions(false), html_in_par(false),
          html_make_pars(true), for_toc(false), for_tooltip(false),
-         for_search(false), for_preview(false), includeall(false)
+         for_search(false), for_preview(false), includeall(false),
+         already_title(false), issued_title_cmd(false)
 {
        // Note: in PreviewLoader::Impl::dumpPreamble
        // OutputParams runparams(0);
diff --git a/src/OutputParams.h b/src/OutputParams.h
index 5503d8b..7e578c3 100644
--- a/src/OutputParams.h
+++ b/src/OutputParams.h
@@ -357,6 +357,12 @@ public:
 
        /// Explicit output folder, if any is desired
        std::string export_folder;
+
+       /// Have we already output the title?
+       mutable bool already_title;
+       /// Used to signal we need to output \end{TITLEBLOCK} when title
+       /// environment is used.
+       mutable bool issued_title_cmd;
 };
 
 
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 1185e2d..07490e5 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -1593,8 +1593,6 @@ void latexParagraphs(Buffer const & buf,
        // lastpit is for the language check after the loop.
        pit_type lastpit = pit;
        // variables used in the loop:
-       bool was_title = false;
-       bool already_title = false;
        DocumentClass const & tclass = bparams.documentClass();
 
        // Did we already warn about inTitle layout mixing? (we only warn once)
@@ -1609,7 +1607,7 @@ void latexParagraphs(Buffer const & buf,
                                tclass.plainLayout() : par->layout();
 
                if (layout.intitle) {
-                       if (already_title) {
+                       if (runparams.already_title) {
                                if (!gave_layout_warning && !runparams.dryrun) {
                                        gave_layout_warning = true;
                                        frontend::Alert::warning(_("Error in 
latexParagraphs"),
@@ -1619,15 +1617,16 @@ void latexParagraphs(Buffer const & buf,
                                                          "could lead to 
missing or incorrect output."
                                                          ), layout.name()));
                                }
-                       } else if (!was_title) {
-                               was_title = true;
+                       } else if (!runparams.issued_title_cmd) {
+                               runparams.issued_title_cmd = true;
                                if (tclass.titletype() == TITLE_ENVIRONMENT) {
                                        os << "\\begin{"
                                                        << 
from_ascii(tclass.titlename())
                                                        << "}\n";
                                }
                        }
-               } else if (was_title && !already_title && !layout.inpreamble) {
+               } else if (runparams.issued_title_cmd &&
+                                  !runparams.already_title && 
!layout.inpreamble) {
                        if (tclass.titletype() == TITLE_ENVIRONMENT) {
                                os << "\\end{" << from_ascii(tclass.titlename())
                                                << "}\n";
@@ -1636,8 +1635,8 @@ void latexParagraphs(Buffer const & buf,
                                os << "\\" << from_ascii(tclass.titlename())
                                                << "\n";
                        }
-                       already_title = true;
-                       was_title = false;
+                       runparams.already_title = true;
+                       runparams.issued_title_cmd = false;
                }
 
                if (layout.isCommand() && !layout.latexname().empty()
@@ -1692,14 +1691,17 @@ void latexParagraphs(Buffer const & buf,
        // But if we're in a branch, this is not the end of
        // the document. (There may be some other checks of this
        // kind that are needed.)
-       if (was_title && !already_title && !runparams.inbranch) {
+       if (runparams.issued_title_cmd &&
+                       !runparams.already_title && !runparams.inbranch) {
                if (tclass.titletype() == TITLE_ENVIRONMENT) {
                        os << "\\end{" << from_ascii(tclass.titlename())
                           << "}\n";
+                       runparams.issued_title_cmd = false;
                } else {
                        os << "\\" << from_ascii(tclass.titlename())
                           << "\n";
                }
+               runparams.already_title = true;
        }
 
        if (maintext && !is_child && runparams.openbtUnit)
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to