Make it less ugly and safer, as when adding to the preamble one doesn't

have to check whether \makeatletter has already been added or not.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24713 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2008-05-10 22:35:17 +00:00
parent a476534342
commit c4bcdf837a

View File

@ -1271,45 +1271,30 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
lyxpreamble += oss.str(); lyxpreamble += oss.str();
} }
// only add \makeatletter and \makeatother when actually needed // Will be surrounded by \makeatletter and \makeatother when needed
bool makeatletter = false; docstring atlyxpreamble;
// Some macros LyX will need // Some macros LyX will need
docstring tmppreamble(from_ascii(features.getMacros())); docstring tmppreamble(from_ascii(features.getMacros()));
if (!tmppreamble.empty()) { if (!tmppreamble.empty())
if (!makeatletter) { atlyxpreamble += "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
lyxpreamble += "\n\\makeatletter\n";
makeatletter = true;
}
lyxpreamble += "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
"LyX specific LaTeX commands.\n" "LyX specific LaTeX commands.\n"
+ tmppreamble + '\n'; + tmppreamble + '\n';
}
// the text class specific preamble // the text class specific preamble
tmppreamble = features.getTClassPreamble(); tmppreamble = features.getTClassPreamble();
if (!tmppreamble.empty()) { if (!tmppreamble.empty())
if (!makeatletter) { atlyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
lyxpreamble += "\n\\makeatletter\n";
makeatletter = true;
}
lyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
"Textclass specific LaTeX commands.\n" "Textclass specific LaTeX commands.\n"
+ tmppreamble + '\n'; + tmppreamble + '\n';
}
/* the user-defined preamble */ /* the user-defined preamble */
if (!preamble.empty()) { if (!preamble.empty())
if (!makeatletter) {
lyxpreamble += "\n\\makeatletter\n";
makeatletter = true;
}
// FIXME UNICODE // FIXME UNICODE
lyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% " atlyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
"User specified LaTeX commands.\n" "User specified LaTeX commands.\n"
+ from_utf8(preamble) + '\n'; + from_utf8(preamble) + '\n';
}
// Itemize bullet settings need to be last in case the user // Itemize bullet settings need to be last in case the user
// defines their own bullets that use a package included // defines their own bullets that use a package included
@ -1343,16 +1328,14 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
} }
} }
if (!bullets_def.empty()) { if (!bullets_def.empty())
if (!makeatletter) { atlyxpreamble += bullets_def + "}\n\n";
lyxpreamble += "\n\\makeatletter\n";
makeatletter = true;
}
lyxpreamble += bullets_def + "}\n\n";
}
if (makeatletter) if (atlyxpreamble.find(from_ascii("@")) != docstring::npos)
lyxpreamble += "\\makeatother\n\n"; lyxpreamble += "\n\\makeatletter\n"
+ atlyxpreamble + "\\makeatother\n\n";
else
lyxpreamble += '\n' + atlyxpreamble;
int const nlines = int const nlines =
int(count(lyxpreamble.begin(), lyxpreamble.end(), '\n')); int(count(lyxpreamble.begin(), lyxpreamble.end(), '\n'));