tmp->setLabelWidthString(params().labelWidthString());
}
- if (size() > pos || !size() || flag == 2) {
+ bool isempty = textclasslist[bparams.textclass][layout()].keepempty;
+ if (!isempty && (size() > pos || !size() || flag == 2)) {
tmp->layout(layout());
tmp->params().align(params().align());
tmp->setLabelWidthString(params().labelWidthString());
}
// just an idea of me
- if (!pos) {
+ if (!isempty && !pos) {
tmp->params().lineTop(params().lineTop());
tmp->params().pagebreakTop(params().pagebreakTop());
tmp->params().spaceTop(params().spaceTop());
// Fully instantiated font
LyXFont font = getFont(bparams, i);
- LyXFont const & last_font = running_font;
+ LyXFont const last_font = running_font;
// Spaces at end of font change are simulated to be
// outside font change, i.e. we write "\textXX{text} "
}
// We end font definition before blanks
- if (font != running_font && open_font) {
+ if (open_font &&
+ (font != running_font ||
+ font.language() != running_font.language()))
+ {
column += running_font.latexWriteEndChanges(os,
basefont,
(i == main_body-1) ? basefont : font);
}
// Do we need to change font?
- if (font != running_font && i != main_body - 1) {
+ if ((font != running_font ||
+ font.language() != running_font.language()) &&
+ i != main_body - 1)
+ {
column += font.latexWriteStartChanges(os, basefont,
last_font);
running_font = font;