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)
: 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),
use_indices(false), use_japanese(false), linelen(0), depth(0),
exportdata(new ExportData),

View File

@ -99,6 +99,14 @@ public:
*/
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
*/
Font const * local_font;

View File

@ -978,9 +978,6 @@ void latexParagraphs(Buffer const & buf,
pit_type pit = runparams.par_begin;
// 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();
for (; pit < runparams.par_end; ++pit) {
@ -993,12 +990,12 @@ void latexParagraphs(Buffer const & buf,
tclass.plainLayout() : par->layout();
if (layout.intitle) {
if (already_title) {
if (runparams.didTitle) {
LYXERR0("Error in latexParagraphs: You"
" should not mix title layouts"
" with normal ones.");
} else if (!was_title) {
was_title = true;
} else if (!runparams.inTitle) {
runparams.inTitle = true;
if (tclass.titletype() == TITLE_ENVIRONMENT) {
os << "\\begin{"
<< from_ascii(tclass.titlename())
@ -1006,7 +1003,7 @@ void latexParagraphs(Buffer const & buf,
texrow.newline();
}
}
} else if (was_title && !already_title) {
} else if (runparams.inTitle && !runparams.didTitle) {
if (tclass.titletype() == TITLE_ENVIRONMENT) {
os << "\\end{" << from_ascii(tclass.titlename())
<< "}\n";
@ -1016,8 +1013,8 @@ void latexParagraphs(Buffer const & buf,
<< "\n";
}
texrow.newline();
already_title = true;
was_title = false;
runparams.didTitle = true;
runparams.inTitle = false;
}
@ -1043,7 +1040,7 @@ void latexParagraphs(Buffer const & buf,
}
// 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) {
os << "\\end{" << from_ascii(tclass.titlename())
<< "}\n";