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; count += 6;
env = true; //We have opened a new environment 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 // \noun{} is a LyX special macro
if (f.noun() == FONT_ON) { if (f.noun() == FONT_ON) {
os << "\\noun{"; os << "\\noun{";
@ -430,8 +406,31 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams,
} }
os << '\\' os << '\\'
<< LaTeXSizeNames[f.size()] << 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; return count;
} }
@ -480,30 +479,6 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams,
++count; ++count;
env = true; // Size change need not bother about closing env. 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) { if (f.noun() == FONT_ON) {
os << '}'; os << '}';
++count; ++count;
@ -515,11 +490,29 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams,
os << '}'; os << '}';
++count; ++count;
} }
}
if (f.underbar() == FONT_ON) {
os << '}'; os << '}';
++count; ++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 // the numbers are written Left-to-Right. ArabTeX package
// reorders the number automatically but the packages used // reorders the number automatically but the packages used
// for Hebrew and Farsi (Arabi) do not. // for Hebrew and Farsi (Arabi) do not.