if needed, as usual.
* The new setting
- "Document->Settings->Fonts->Output em- and en-dash as ligatures" forces
- output of en- and em-dashes as -- and --- when exporting to LaTeX.
- It is is "true" by default but "false" when opening documents edited
- with LyX 2.2.
- See chapter 3.9.1.1 "Dashes and line breaks" of the User Guide and
+ "Document->Settings->Fonts->Disallow line breaks after dashes" forces
+ output of en- and em-dashes as \textendash and \textemdash when exporting
+ to LaTeX. It is is "false" by default but "true" when opening documents
+ edited with LyX 2.2.
+ See chapter 3.9.1.1 "Dashes and Line Breaks" of the User Guide and
"Caveats when upgrading from earlier versions to 2.3.x" below.
* The following UI translations were dropped, because the lack of translation
the external_templates file, you will have to move the modifications to
the respective *.xtemplate file manually.
-* By default, LyX 2.3 forces output of all en and em dashes as -- and ---
- when exporting to LaTeX. This can lead to incorrect line breaks, wrong
- characters in typewriter fonts, and problems with some LaTeX packages.
- Unselect "Document->Settings->Fonts->Output em- and en-dash as ligatures"
- to keep the LyX 2.2 behaviour and avoid these problems. See chapter 3.9.1.1
- "Dashes and line breaks" of the User Guide for details.
+* By default, LyX 2.3 outputs en- and em-dashes after which a line break can
+ occur in the output. Sometimes, this results in undesired line breaks.
+ Select "Document->Settings->Fonts->Disallow line breaks after dashes"
+ to keep the LyX 2.2 behaviour, where such line breaks have been generally
+ suppressed. See chapter 3.9.1.1, "Dashes and Line Breaks", of the User Guide
+ for details.
* ZWSP characters (u200b) following literal em- and en-dashes are deleted by
lyx2lyx when converting to 2.3 format. If you used them as optional line
breaks after dashes, convert them to space insets before opening your
document with LyX 2.3 or the optional line breaks will be lost!
-* If using TeX fonts and en- and em-dashes are output as font ligatures,
+* If using TeX fonts and en- and em-dashes are output in breakable form,
when exporting documents containing en- and em-dashes to the format of
LyX 2.0 or earlier, the following line has to be manually added to the
unicodesymbols file of that LyX version:<br>
macros << getPreambleSnippets();
}
+ if (mustProvide("xetexdashbreakstate"))
+ macros << "\\XeTeXdashbreakstate 0" << '\n';
+
if (mustProvide("papersize")) {
if (runparams_.flavor == OutputParams::LATEX
|| runparams_.flavor == OutputParams::DVILUATEX)
case 0x2013:
case 0x2014:
- if (bparams.use_dash_ligatures && !bparams.useNonTeXFonts) {
+ // XeTeX's dash behaviour is determined via a global setting
+ if (bparams.use_dash_ligatures
+ && owner_->getFontSettings(bparams, i).fontInfo().family() != TYPEWRITER_FAMILY
+ && (!bparams.useNonTeXFonts || runparams.flavor != OutputParams::XETEX)) {
if (c == 0x2013) {
// en-dash
os << "--";
os << "\\textvertline" << termcmd;
column += 14;
return true;
+ case 0x2013:
+ os << "\\textendash" << termcmd;
+ column += 12;
+ return true;
+ case 0x2014:
+ os << "\\textemdash" << termcmd;
+ column += 12;
+ return true;
default:
return false;
}
void Paragraph::Private::validate(LaTeXFeatures & features) const
{
+ Buffer const & buf = inset_owner_->buffer();
+ BufferParams const & bp = features.runparams().is_child
+ ? buf.masterParams() : buf.params();
if (layout_->inpreamble && inset_owner_) {
bool const is_command = layout_->latextype == LATEX_COMMAND;
- Buffer const & buf = inset_owner_->buffer();
- BufferParams const & bp = features.runparams().is_child
- ? buf.masterParams() : buf.params();
Font f;
// Using a string stream here circumvents the encoding
// switching machinery of odocstream. Therefore the
}
// then the contents
- BufferParams const bp = features.buffer().masterParams();
for (pos_type i = 0; i < int(text_.size()) ; ++i) {
char_type c = text_[i];
if (c == 0x0022) {
|| ((&owner_->getFontSettings(bp, i))->language()->internalFontEncoding()))
features.require("textquotedbl");
}
+ if (!bp.use_dash_ligatures
+ && (c == 0x2013 || c == 0x2014)
+ && bp.useNonTeXFonts
+ && features.runparams().flavor == OutputParams::XETEX)
+ // XeTeX's dash behaviour is determined via a global setting
+ features.require("xetexdashbreakstate");
BufferEncodings::validate(c, features);
}
}
fontModule->fontsRomanCO->currentIndex()).toString();
fontModule->fontScCB->setEnabled(providesSC(font));
fontModule->fontOsfCB->setEnabled(providesOSF(font));
- fontModule->dashesCB->setEnabled(tex_fonts);
updateMathFonts(font);
}
fromqstr(fontModule->cjkFontLE->text());
bp_.use_microtype = fontModule->microtypeCB->isChecked();
- bp_.use_dash_ligatures = fontModule->dashesCB->isChecked();
+ bp_.use_dash_ligatures = !fontModule->dashesCB->isChecked();
bp_.fonts_sans_scale[nontexfonts] = fontModule->scaleSansSB->value();
bp_.fonts_sans_scale[!nontexfonts] = fontModule->font_sf_scale;
fontModule->cjkFontLE->setText(QString());
fontModule->microtypeCB->setChecked(bp_.use_microtype);
- fontModule->dashesCB->setChecked(bp_.use_dash_ligatures);
+ fontModule->dashesCB->setChecked(!bp_.use_dash_ligatures);
fontModule->fontScCB->setChecked(bp_.fonts_expert_sc);
fontModule->fontOsfCB->setChecked(bp_.fonts_old_figures);
<item row="11" column="1">
<widget class="QCheckBox" name="dashesCB">
<property name="toolTip">
- <string>Use font ligatures -- and --- instead of \textendash and \textemdash for en- and em-dashes</string>
+ <string>By default, a line break can occur after en- and em-dashes and before em-dashes. Checking this box prevents that.</string>
</property>
<property name="text">
- <string>Output en- and &em-dashes as ligatures</string>
+ <string>Disallow l&ine breaks at dashes</string>
</property>
</widget>
</item>