mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-11 05:33:33 +00:00
isTextAt improvements from John
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3090 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
aa41b3033b
commit
b8e78dc35f
@ -1,3 +1,9 @@
|
|||||||
|
2001-11-27 John Levon <moz@compsoc.man.ac.uk>
|
||||||
|
|
||||||
|
* paragraph_pimpl.h:
|
||||||
|
* paragraph_pimpl.C: tidy, and fix font-change in "LaTeX"
|
||||||
|
bug a bit
|
||||||
|
|
||||||
2001-11-26 John Levon <moz@compsoc.man.ac.uk>
|
2001-11-26 John Levon <moz@compsoc.man.ac.uk>
|
||||||
|
|
||||||
* text.C:
|
* text.C:
|
||||||
|
@ -28,11 +28,23 @@ using lyx::pos_type;
|
|||||||
extern int tex_code_break_column;
|
extern int tex_code_break_column;
|
||||||
|
|
||||||
|
|
||||||
|
// Initialize static member.
|
||||||
|
ShareContainer<LyXFont> Paragraph::Pimpl::FontTable::container;
|
||||||
// Initialization of the counter for the paragraph id's,
|
// Initialization of the counter for the paragraph id's,
|
||||||
unsigned int Paragraph::Pimpl::paragraph_id = 0;
|
unsigned int Paragraph::Pimpl::paragraph_id = 0;
|
||||||
|
|
||||||
// Initialize static member.
|
namespace {
|
||||||
ShareContainer<LyXFont> Paragraph::Pimpl::FontTable::container;
|
|
||||||
|
string special_phrases[][2] = {
|
||||||
|
{ "LyX", "\\LyX{}" },
|
||||||
|
{ "TeX", "\\TeX{}" },
|
||||||
|
{ "LaTeX2e", "\\LaTeXe{}" },
|
||||||
|
{ "LaTeX", "\\LaTeX{}" },
|
||||||
|
};
|
||||||
|
|
||||||
|
size_t phrases_nr = sizeof(special_phrases)/sizeof(special_phrases[0]);
|
||||||
|
|
||||||
|
} // namespace anon
|
||||||
|
|
||||||
|
|
||||||
Paragraph::Pimpl::Pimpl(Paragraph * owner)
|
Paragraph::Pimpl::Pimpl(Paragraph * owner)
|
||||||
@ -243,13 +255,16 @@ void Paragraph::Pimpl::simpleTeXBlanks(std::ostream & os, TexRow & texrow,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Paragraph::Pimpl::isTextAt(string const & str, pos_type pos)
|
bool Paragraph::Pimpl::isTextAt(BufferParams const & bp, LyXFont & font,
|
||||||
|
string const & str, pos_type pos)
|
||||||
{
|
{
|
||||||
for (int i=0; i < str.length(); ++i) {
|
for (string::size_type i = 0; i < str.length(); ++i) {
|
||||||
if (pos + i >= size())
|
if (pos + static_cast<pos_type>(i) >= size())
|
||||||
return false;
|
return false;
|
||||||
if (str[i] != getChar(pos + i))
|
if (str[i] != getChar(pos + i))
|
||||||
return false;
|
return false;
|
||||||
|
if (owner_->getFont(bp, pos + i) != font)
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -461,24 +476,24 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const * buf,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTextAt("LyX", i)) {
|
// LyX, LaTeX etc.
|
||||||
os << "\\LyX{}";
|
|
||||||
i += 2;
|
// FIXME: if we have "LaTeX" with a font change in the middle (before
|
||||||
column += 5;
|
// the 'T', then the "TeX" part is still special cased. Really we
|
||||||
} else if (isTextAt("TeX", i)) {
|
// should only operate this on "words" for some definition of word
|
||||||
os << "\\TeX{}";
|
|
||||||
i += 2;
|
size_t pnr = 0;
|
||||||
column += 5;
|
|
||||||
} else if (isTextAt("LaTeX2e", i)) {
|
for (; pnr < phrases_nr; ++pnr) {
|
||||||
os << "\\LaTeXe{}";
|
if (isTextAt(bparams, font, special_phrases[pnr][0], i)) {
|
||||||
i += 6;
|
os << special_phrases[pnr][1];
|
||||||
column += 8;
|
i += special_phrases[pnr][0].length() - 1;
|
||||||
} else if (isTextAt("LaTeX", i)) {
|
column += special_phrases[pnr][1].length() - 1;
|
||||||
os << "\\LaTeX{}";
|
break;
|
||||||
i += 4;
|
}
|
||||||
column += 7;
|
}
|
||||||
// do we really try to print out '\0' ?
|
|
||||||
} else if (c != '\0') {
|
if (pnr == phrases_nr && c != '\0') {
|
||||||
os << c;
|
os << c;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -148,7 +148,8 @@ struct Paragraph::Pimpl {
|
|||||||
ParagraphParameters params;
|
ParagraphParameters params;
|
||||||
private:
|
private:
|
||||||
/// match a string against a particular point in the paragraph
|
/// match a string against a particular point in the paragraph
|
||||||
bool isTextAt(string const & str, lyx::pos_type pos);
|
bool isTextAt(BufferParams const &, LyXFont &,
|
||||||
|
string const & str, lyx::pos_type pos);
|
||||||
|
|
||||||
/// Who owns us?
|
/// Who owns us?
|
||||||
Paragraph * owner_;
|
Paragraph * owner_;
|
||||||
|
Loading…
Reference in New Issue
Block a user