From: Enrico Forestieri Date: Tue, 26 May 2009 17:38:27 +0000 (+0000) Subject: Don try to be smart and always protect the preamble with \makeatletter X-Git-Tag: 2.0.0~6442 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=b3fe7330de14c47dab2b05dfc21ff730da2ecaa1;p=features.git Don try to be smart and always protect the preamble with \makeatletter and \makeatother if it is not empty. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29853 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index d2192067d1..5fc3573703 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -1445,7 +1445,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, lyxpreamble += oss.str(); } - // Will be surrounded by \makeatletter and \makeatother when needed + // Will be surrounded by \makeatletter and \makeatother when not empty docstring atlyxpreamble; // Some macros LyX will need @@ -1464,9 +1464,11 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, + tmppreamble + '\n'; /* the user-defined preamble */ - if (!preamble.empty()) + if (preamble.find_first_not_of(" \n\t") != docstring::npos) // FIXME UNICODE - atlyxpreamble += from_utf8(preamble); + atlyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% " + "User specified LaTeX commands.\n" + + from_utf8(preamble) + '\n'; // subfig loads internally the LaTeX package "caption". As // caption is a very popular package, users will load it in @@ -1519,19 +1521,9 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features, if (!bullets_def.empty()) atlyxpreamble += bullets_def + "}\n\n"; - lyxpreamble += "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% " - "User specified LaTeX commands.\n"; - - // Check whether we should change the catcode of '@' in the preamble. - // We do it when '@' explicitly appears and, as a safety measure, also - // when an external file is included. - if (atlyxpreamble.find(from_ascii("@")) != docstring::npos - || atlyxpreamble.find(from_ascii("\\input")) != docstring::npos - || atlyxpreamble.find(from_ascii("\\include")) != docstring::npos) - lyxpreamble += "\\makeatletter\n" + if (!atlyxpreamble.empty()) + lyxpreamble += "\n\\makeatletter\n" + atlyxpreamble + "\\makeatother\n\n"; - else - lyxpreamble += atlyxpreamble + '\n'; // We try to load babel late, in case it interferes with other packages. // Jurabib and Hyperref have to be called after babel, though.