]> git.lyx.org Git - features.git/commitdiff
Track whether title has been issued via OutputParams.
authorRichard Kimberly Heck <rikiheck@lyx.org>
Tue, 17 Mar 2020 05:50:28 +0000 (01:50 -0400)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:54 +0000 (15:48 +0200)
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
src/OutputParams.h
src/output_latex.cpp

index d26955e69aa68189bdf414675806102c24a0628f..8b1d60e690d2a121f7074d7c4f395868250e442f 100644 (file)
@@ -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);
index 5503d8b7cd191b1f2c944abd14b69fa18ce320b0..7e578c3b0c07293f7162952ba1f78278de1f1a28 100644 (file)
@@ -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;
 };
 
 
index 1185e2d6e343149dbb0e7eddbb740958c9bed6ea..07490e5dfe90e524fb9feb5525c1883110dbf435 100644 (file)
@@ -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)