"{\\leavevmode\\,$\\triangleleft$\\,\\allowbreak}\n"
"{\\leavevmode\\,$\\triangleright$\\,\\allowbreak}}");
+// ZERO WIDTH SPACE (ZWSP) is actually not a space character
+// but marks a line break opportunity. Several commands provide a
+// line break opportunity. They differ in side-effects:
+// \allowbreak prevents hyphenation after hyphen or dash + ZWSP
+// \linebreak[<n>] takes an optional argument denoting "urgency".
+// The \LyXZeroWidthSpace wrapper allows customization in the preamble.
+static docstring const lyxZWSP_def = from_ascii(
+ "\\newcommand*\\LyXZeroWidthSpace{\\hspace{0pt}}");
+
// for quotes without babel. This does not give perfect results, but
// anybody serious about non-english quotes should use babel (JMarc).
static docstring const textquotedblp_xetex_def = from_ascii(
"\\providecommand\\textquotedblplain{%\n"
- " \\bgroup\\addfontfeatures{Mapping=}\\textquotedbl\\egroup}");
+ " \\bgroup\\addfontfeatures{Mapping=}\\char34\\egroup}");
static docstring const textquotedblp_luatex_def = from_ascii(
"\\providecommand\\textquotedblplain{%\n"
- " \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotedbl\\egroup}");
+ " \\bgroup\\addfontfeatures{RawFeature=-tlig}\\char34\\egroup}");
static docstring const textquotesinglep_xetex_def = from_ascii(
"\\providecommand\\textquotesingleplain{%\n"
- " \\bgroup\\addfontfeatures{Mapping=}\\textquotesingle\\egroup}");
+ " \\bgroup\\addfontfeatures{Mapping=}\\char39\\egroup}");
static docstring const textquotesinglep_luatex_def = from_ascii(
"\\providecommand\\textquotesingleplain{%\n"
- " \\bgroup\\addfontfeatures{RawFeature=-tlig}\\textquotesingle\\egroup}");
+ " \\bgroup\\addfontfeatures{RawFeature=-tlig}\\char39\\egroup}");
static docstring const paragraphleftindent_def = from_ascii(
"\\newenvironment{LyXParagraphLeftIndent}[1]%\n"
if (params_.useNonTeXFonts)
return params_.documentClass().provides(name);
- bool const ot1 = (params_.font_encoding() == "default"
- || params_.font_encoding() == "OT1");
+ bool const ot1 = (params_.main_font_encoding() == "default"
+ || params_.main_font_encoding() == "OT1");
bool const complete = (params_.fontsSans() == "default"
&& params_.fontsTypewriter() == "default");
bool const nomath = (params_.fontsMath() == "default");
"authordate1-4",
"babelbib",
"bibgerm",
+ "chapterbib",
"chicago",
"chscite",
"harvard",
// if fontspec or newtxmath is used, AMS packages have to be loaded
// before fontspec (in BufferParams)
string const amsPackages = loadAMSPackages();
- bool const ot1 = (params_.font_encoding() == "default" || params_.font_encoding() == "OT1");
+ bool const ot1 = (params_.main_font_encoding() == "default"
+ || params_.main_font_encoding() == "OT1");
bool const use_newtxmath =
theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
ot1, false, false) == "newtxmath";
if (mustProvide("lyxarrow"))
macros << lyxarrow_def << '\n';
+ if (mustProvide("lyxzerowidthspace"))
+ macros << lyxZWSP_def << '\n';
+
if (!usePolyglossia() && mustProvide("textgreek")) {
// ensure LGR font encoding is defined also if fontenc is not loaded by LyX
- if (params_.font_encoding() == "default")
+ if (params_.main_font_encoding() == "default")
macros << textgreek_LGR_def;
macros << textgreek_def << '\n';
}
if (!usePolyglossia() && mustProvide("textcyr")) {
// ensure T2A font encoding is set up also if fontenc is not loaded by LyX
- if (params_.font_encoding() == "default")
+ if (params_.main_font_encoding() == "default")
macros << textcyr_T2A_def;
macros << textcyr_def << '\n';
}
list<docstring>::const_iterator cit = usedLayouts_.begin();
list<docstring>::const_iterator end = usedLayouts_.end();
for (; cit != end; ++cit)
- tcpreamble << tclass[*cit].preamble();
+ // For InPreamble layouts, we output the preamble stuff earlier
+ // (before the layouts). See Paragraph::Private::validate.
+ if (!tclass[*cit].inpreamble)
+ tcpreamble << tclass[*cit].preamble();
cit = usedInsetLayouts_.begin();
end = usedInsetLayouts_.end();