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
This commit is contained in:
Tommaso Cucinotta 2011-02-12 11:03:24 +00:00
parent ac56711021
commit c31d6acf65

View File

@ -336,6 +336,7 @@ public:
Change const & running_change, Change const & running_change,
Layout const & style, Layout const & style,
pos_type & i, pos_type & i,
pos_type end_pos,
unsigned int & column); unsigned int & column);
/// ///
@ -354,6 +355,7 @@ public:
bool latexSpecialPhrase( bool latexSpecialPhrase(
otexstream & os, otexstream & os,
pos_type & i, pos_type & i,
pos_type end_pos,
unsigned int & column, unsigned int & column,
OutputParams const & runparams); OutputParams const & runparams);
@ -1148,6 +1150,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
Change const & running_change, Change const & running_change,
Layout const & style, Layout const & style,
pos_type & i, pos_type & i,
pos_type end_pos,
unsigned int & column) unsigned int & column)
{ {
char_type const c = text_[i]; char_type const c = text_[i];
@ -1237,7 +1240,7 @@ void Paragraph::Private::latexSpecialChar(otexstream & os,
default: default:
// LyX, LaTeX etc. // LyX, LaTeX etc.
if (latexSpecialPhrase(os, i, column, runparams)) if (latexSpecialPhrase(os, i, end_pos, column, runparams))
return; return;
if (c == '\0') 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) unsigned int & column, OutputParams const & runparams)
{ {
// FIXME: if we have "LaTeX" with a font // 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 // "words" for some definition of word
for (size_t pnr = 0; pnr < phrases_nr; ++pnr) { 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; continue;
if (runparams.moving_arg) if (runparams.moving_arg)
os << "\\protect"; os << "\\protect";
@ -2499,7 +2506,7 @@ void Paragraph::latex(BufferParams const & bparams,
if (i >= start_pos && (end_pos == -1 || i < end_pos)) { if (i >= start_pos && (end_pos == -1 || i < end_pos)) {
try { try {
d->latexSpecialChar(os, rp, running_font, runningChange, d->latexSpecialChar(os, rp, running_font, runningChange,
style, i, column); style, i, end_pos, column);
} catch (EncodingException & e) { } catch (EncodingException & e) {
if (runparams.dryrun) { if (runparams.dryrun) {
os << "<" << _("LyX Warning: ") os << "<" << _("LyX Warning: ")