From c31d6acf650dc7314c7c2f47cb8e123b033013eb Mon Sep 17 00:00:00 2001 From: Tommaso Cucinotta Date: Sat, 12 Feb 2011 11:03:24 +0000 Subject: [PATCH] When exporting to latex with a length that does not include entirely a special phrase, simply export the segment as normal text. For other uses of these methods, end_pos is -1, so the original behavior is unaltered. This allows for finding properly the LyX, LaTeX and other special phrases with Advanced Find, when ignore format is off. This complements the other changes made to latex export methods, for exporting to latex with a given final end position. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37599 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Paragraph.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 50b0bcfb00..7778e4019a 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -336,6 +336,7 @@ public: Change const & running_change, Layout const & style, pos_type & i, + pos_type end_pos, unsigned int & column); /// @@ -354,6 +355,7 @@ public: bool latexSpecialPhrase( otexstream & os, pos_type & i, + pos_type end_pos, unsigned int & column, OutputParams const & runparams); @@ -1148,6 +1150,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os, Change const & running_change, Layout const & style, pos_type & i, + pos_type end_pos, unsigned int & column) { char_type const c = text_[i]; @@ -1237,7 +1240,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os, default: // LyX, LaTeX etc. - if (latexSpecialPhrase(os, i, column, runparams)) + if (latexSpecialPhrase(os, i, end_pos, column, runparams)) return; if (c == '\0') @@ -1323,7 +1326,10 @@ bool Paragraph::Private::latexSpecialTypewriter(char_type const c, otexstream & } -bool Paragraph::Private::latexSpecialPhrase(otexstream & os, pos_type & i, +/// \param end_pos +/// If [start_pos, end_pos) does not include entirely the special phrase, then +/// do not apply the macro transformation. +bool Paragraph::Private::latexSpecialPhrase(otexstream & os, pos_type & i, pos_type end_pos, unsigned int & column, OutputParams const & runparams) { // FIXME: if we have "LaTeX" with a font @@ -1333,7 +1339,8 @@ bool Paragraph::Private::latexSpecialPhrase(otexstream & os, pos_type & i, // "words" for some definition of word for (size_t pnr = 0; pnr < phrases_nr; ++pnr) { - if (!isTextAt(special_phrases[pnr].phrase, i)) + if (!isTextAt(special_phrases[pnr].phrase, i) + || (end_pos != -1 && i + int(special_phrases[pnr].phrase.size()) > end_pos)) continue; if (runparams.moving_arg) os << "\\protect"; @@ -2499,7 +2506,7 @@ void Paragraph::latex(BufferParams const & bparams, if (i >= start_pos && (end_pos == -1 || i < end_pos)) { try { d->latexSpecialChar(os, rp, running_font, runningChange, - style, i, column); + style, i, end_pos, column); } catch (EncodingException & e) { if (runparams.dryrun) { os << "<" << _("LyX Warning: ")