Fix bug #7096: Wrong LaTeX export for layouts with intitle=true in branches.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37092 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2011-01-03 21:23:38 +00:00
parent 996b707a6f
commit a7c135b9e1
3 changed files with 17 additions and 11 deletions

View File

@ -20,7 +20,8 @@ namespace lyx {
OutputParams::OutputParams(Encoding const * enc) OutputParams::OutputParams(Encoding const * enc)
: flavor(LATEX), math_flavor(NotApplicable), nice(false), moving_arg(false), : flavor(LATEX), math_flavor(NotApplicable), nice(false), moving_arg(false),
inulemcmd(false), local_font(0), master_language(0), encoding(enc), inulemcmd(false), inTitle(false), didTitle(false). local_font(0),
master_language(0), encoding(enc),
free_spacing(false), use_babel(false), use_polyglossia(false), free_spacing(false), use_babel(false), use_polyglossia(false),
use_indices(false), use_japanese(false), linelen(0), depth(0), use_indices(false), use_japanese(false), linelen(0), depth(0),
exportdata(new ExportData), exportdata(new ExportData),

View File

@ -99,6 +99,14 @@ public:
*/ */
mutable bool inulemcmd; mutable bool inulemcmd;
/** Whether we are in the process of outputting title information.
*/
mutable bool inTitle;
/** Whether we have arleady output \maketitle or whatever.
*/
mutable bool didTitle;
/** the font at the point where the inset is /** the font at the point where the inset is
*/ */
Font const * local_font; Font const * local_font;

View File

@ -978,9 +978,6 @@ void latexParagraphs(Buffer const & buf,
pit_type pit = runparams.par_begin; pit_type pit = runparams.par_begin;
// lastpit is for the language check after the loop. // lastpit is for the language check after the loop.
pit_type lastpit = pit; pit_type lastpit = pit;
// variables used in the loop:
bool was_title = false;
bool already_title = false;
DocumentClass const & tclass = bparams.documentClass(); DocumentClass const & tclass = bparams.documentClass();
for (; pit < runparams.par_end; ++pit) { for (; pit < runparams.par_end; ++pit) {
@ -993,12 +990,12 @@ void latexParagraphs(Buffer const & buf,
tclass.plainLayout() : par->layout(); tclass.plainLayout() : par->layout();
if (layout.intitle) { if (layout.intitle) {
if (already_title) { if (runparams.didTitle) {
LYXERR0("Error in latexParagraphs: You" LYXERR0("Error in latexParagraphs: You"
" should not mix title layouts" " should not mix title layouts"
" with normal ones."); " with normal ones.");
} else if (!was_title) { } else if (!runparams.inTitle) {
was_title = true; runparams.inTitle = true;
if (tclass.titletype() == TITLE_ENVIRONMENT) { if (tclass.titletype() == TITLE_ENVIRONMENT) {
os << "\\begin{" os << "\\begin{"
<< from_ascii(tclass.titlename()) << from_ascii(tclass.titlename())
@ -1006,7 +1003,7 @@ void latexParagraphs(Buffer const & buf,
texrow.newline(); texrow.newline();
} }
} }
} else if (was_title && !already_title) { } else if (runparams.inTitle && !runparams.didTitle) {
if (tclass.titletype() == TITLE_ENVIRONMENT) { if (tclass.titletype() == TITLE_ENVIRONMENT) {
os << "\\end{" << from_ascii(tclass.titlename()) os << "\\end{" << from_ascii(tclass.titlename())
<< "}\n"; << "}\n";
@ -1016,8 +1013,8 @@ void latexParagraphs(Buffer const & buf,
<< "\n"; << "\n";
} }
texrow.newline(); texrow.newline();
already_title = true; runparams.didTitle = true;
was_title = false; runparams.inTitle = false;
} }
@ -1043,7 +1040,7 @@ void latexParagraphs(Buffer const & buf,
} }
// It might be that we only have a title in this document // It might be that we only have a title in this document
if (was_title && !already_title) { if (runparams.inTitle && !runparams.didTitle) {
if (tclass.titletype() == TITLE_ENVIRONMENT) { if (tclass.titletype() == TITLE_ENVIRONMENT) {
os << "\\end{" << from_ascii(tclass.titlename()) os << "\\end{" << from_ascii(tclass.titlename())
<< "}\n"; << "}\n";