]> git.lyx.org Git - features.git/commitdiff
Apply \protect more selectively for special phrases
authorMartin Vermeer <martin.vermeer@hut.fi>
Sat, 3 Nov 2007 17:07:37 +0000 (17:07 +0000)
committerMartin Vermeer <martin.vermeer@hut.fi>
Sat, 3 Nov 2007 17:07:37 +0000 (17:07 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21403 a592a061-630c-0410-9148-cb99ea01b6c8

src/Paragraph.cpp

index 12a267fb5f48d1d90bb14f0b5dc8a733a707fb3b..05151cd08639b870563fe986c67aa295fd0245fb 100644 (file)
@@ -161,7 +161,8 @@ public:
        bool latexSpecialPhrase(
                odocstream & os,
                pos_type & i,
-               unsigned int & column);
+               unsigned int & column,
+               OutputParams & runparams);
 
        ///
        void validate(LaTeXFeatures & features,
@@ -232,10 +233,10 @@ struct special_phrase {
 };
 
 special_phrase const special_phrases[] = {
-       { "LyX", from_ascii("\\protect\\LyX{}"), false },
-       { "TeX", from_ascii("\\protect\\TeX{}"), true },
-       { "LaTeX2e", from_ascii("\\protect\\LaTeXe{}"), true },
-       { "LaTeX", from_ascii("\\protect\\LaTeX{}"), true },
+       { "LyX", from_ascii("\\LyX{}"), false },
+       { "TeX", from_ascii("\\TeX{}"), true },
+       { "LaTeX2e", from_ascii("\\LaTeXe{}"), true },
+       { "LaTeX", from_ascii("\\LaTeX{}"), true },
 };
 
 size_t const phrases_nr = sizeof(special_phrases)/sizeof(special_phrase);
@@ -886,7 +887,7 @@ void Paragraph::Private::latexSpecialChar(
        default:
 
                // LyX, LaTeX etc.
-               if (latexSpecialPhrase(os, i, column))
+               if (latexSpecialPhrase(os, i, column, runparams))
                        return;
 
                if (c == '\0')
@@ -989,7 +990,7 @@ bool Paragraph::Private::latexSpecialTypewriter(char_type const c, odocstream &
 
 
 bool Paragraph::Private::latexSpecialPhrase(odocstream & os, pos_type & i,
-       unsigned int & column)
+       unsigned int & column, OutputParams & runparams)
 {
        // FIXME: if we have "LaTeX" with a font
        // change in the middle (before the 'T', then
@@ -1000,6 +1001,8 @@ bool Paragraph::Private::latexSpecialPhrase(odocstream & os, pos_type & i,
        for (size_t pnr = 0; pnr < phrases_nr; ++pnr) {
                if (!isTextAt(special_phrases[pnr].phrase, i))
                        continue;
+               if (runparams.moving_arg)
+                       os << "\\protect";
                os << special_phrases[pnr].macro;
                i += special_phrases[pnr].phrase.length() - 1;
                column += special_phrases[pnr].macro.length() - 1;