commit db8abfec04aa714879879b1d5104367e69cd96e8
Author: Juergen Spitzmueller <[email protected]>
Date: Thu Jul 11 11:37:49 2013 +0200
Properly nest ulem commands within other font changes
This reverts the wrong fix to #8424 which caused #8733 and fixes both
problems properly
diff --git a/src/Font.cpp b/src/Font.cpp
index 76e0f2e..3602e31 100644
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -393,46 +393,45 @@ int Font::latexWriteStartChanges(odocstream & os,
BufferParams const & bparams,
count += 6;
env = true; //We have opened a new environment
}
+ // \noun{} is a LyX special macro
+ if (f.noun() == FONT_ON) {
+ os << "\\noun{";
+ count += 6;
+ env = true; //We have opened a new environment
+ }
+ if (f.size() != FONT_SIZE_INHERIT) {
+ // If we didn't open an environment above, we open one here
+ if (!env) {
+ os << '{';
+ ++count;
+ }
+ os << '\\'
+ << LaTeXSizeNames[f.size()]
+ << "{}";
+ 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;
- 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{";
- count += 6;
- env = true; //We have opened a new environment
- }
- if (f.size() != FONT_SIZE_INHERIT) {
- // If we didn't open an environment above, we open one here
- if (!env) {
- os << '{';
- ++count;
- }
- os << '\\'
- << LaTeXSizeNames[f.size()]
- << '{';
- count += strlen(LaTeXSizeNames[f.size()]) + 2;
}
return count;
}
@@ -481,46 +480,40 @@ int Font::latexWriteEndChanges(otexstream & os,
BufferParams const & bparams,
++count;
env = true; // Size change need not bother about closing env.
}
+ if (f.noun() == FONT_ON) {
+ os << '}';
+ ++count;
+ env = true; // Size change need not bother about closing env.
+ }
+ if (f.size() != FONT_SIZE_INHERIT) {
+ // We only have to close if only size changed
+ if (!env) {
+ os << '}';
+ ++count;
+ }
+ }
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;
- env = true; // Size change need not bother about closing env.
- }
- if (f.size() != FONT_SIZE_INHERIT) {
- // We only have to close if only size changed
- if (!env) {
- os << '}';
- ++count;
- }
- os << '}';
- ++count;
}
- // 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.
diff --git a/status.20x b/status.20x
index beebe07..ca26caf 100644
--- a/status.20x
+++ b/status.20x
@@ -52,6 +52,9 @@ What's new
* DOCUMENT INPUT/OUTPUT
+- Fix output of ulem commands (underline etc.) which was broken as of
+ LyX 2.0.6 (bug 8733).
+
- Fix problem with unbalanced braces in XeTeX output (bug 8765).
- Added h5 and h6 as tags for Paragraph and Subparagraph.