Properly nest ulem commands within other font changes

This reverts the wrong fix to #8424 which caused #8733 and fixes both problems properly
This commit is contained in:
Juergen Spitzmueller 2013-07-11 11:37:49 +02:00 committed by Vincent van Ravesteijn
parent 89b2c54c00
commit c2cea31aea

View File

@ -392,30 +392,6 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
count += 6;
env = true; //We have opened a new environment
}
if (f.underbar() == FONT_ON) {
os << "\\uline{";
count += 10;
runparams.inulemcmd = true;
env = true; //We have opened a new environment
}
if (f.strikeout() == FONT_ON) {
os << "\\sout{";
count += 9;
runparams.inulemcmd = true;
env = true; //We have opened a new environment
}
if (f.uuline() == FONT_ON) {
os << "\\uuline{";
count += 11;
runparams.inulemcmd = true;
env = true; //We have opened a new environment
}
if (f.uwave() == FONT_ON) {
os << "\\uwave{";
count += 10;
runparams.inulemcmd = true;
env = true; //We have opened a new environment
}
// \noun{} is a LyX special macro
if (f.noun() == FONT_ON) {
os << "\\noun{";
@ -430,8 +406,31 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
}
os << '\\'
<< LaTeXSizeNames[f.size()]
<< '{';
count += strlen(LaTeXSizeNames[f.size()]) + 2;
<< "{}";
count += strlen(LaTeXSizeNames[f.size()]) + 3;
}
// The ulem commands need to be on the deepest nesting level
// because ulem puts every nested group or macro in a box,
// which prevents linebreaks (#8424, #8733)
if (f.underbar() == FONT_ON) {
os << "\\uline{";
count += 10;
runparams.inulemcmd = true;
}
if (f.strikeout() == FONT_ON) {
os << "\\sout{";
count += 9;
runparams.inulemcmd = true;
}
if (f.uuline() == FONT_ON) {
os << "\\uuline{";
count += 11;
runparams.inulemcmd = true;
}
if (f.uwave() == FONT_ON) {
os << "\\uwave{";
count += 10;
runparams.inulemcmd = true;
}
return count;
}
@ -480,30 +479,6 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams,
++count;
env = true; // Size change need not bother about closing env.
}
if (f.underbar() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
env = true; // Size change need not bother about closing env.
}
if (f.strikeout() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
env = true; // Size change need not bother about closing env.
}
if (f.uuline() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
env = true; // Size change need not bother about closing env.
}
if (f.uwave() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
env = true; // Size change need not bother about closing env.
}
if (f.noun() == FONT_ON) {
os << '}';
++count;
@ -515,11 +490,29 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams,
os << '}';
++count;
}
}
if (f.underbar() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
}
if (f.strikeout() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
}
if (f.uuline() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
}
if (f.uwave() == FONT_ON) {
os << '}';
++count;
runparams.inulemcmd = false;
}
// When the current language is Hebrew, Arabic, or Farsi
// If the current language is Hebrew, Arabic, or Farsi
// the numbers are written Left-to-Right. ArabTeX package
// reorders the number automatically but the packages used
// for Hebrew and Farsi (Arabi) do not.