Use \babelfonts only if babel >= 3.15 is available.

This commit is contained in:
Juergen Spitzmueller 2019-07-13 08:42:42 +02:00
parent 5e33e4fc2c
commit 003d675c2f
3 changed files with 66 additions and 11 deletions

View File

@ -120,6 +120,29 @@
#6 #6
\fi} \fi}
% Tests whether an package is present in a specific version (or newer)
% Syntax: \TestPackageVersion{<name>}{<yyyy/mm/dd>}
% Note: This requires the package to be loaded first
\newcommand{\TestPackageVersion}[2]{
\message{^^J\prefix checking for package #1 at least as of #2...}
\IfFileExists{#1.sty}
{
\@ifpackagelater{#1}{#2}{\existstrue}{\existsfalse}
}
{
\existsfalse
}
\ifexists
\message{yes^^J}
\AddVariable{#1}{yes}
\AddPackage{#1-#2}
\else
\message{no^^J}
\AddVariable{#1}{no}
\fi}
% Adapted from ltxcheck.tex % Adapted from ltxcheck.tex
\newcommand{\TestFont}[2][\default]{ \newcommand{\TestFont}[2][\default]{
\def\default{#2} \def\default{#2}
@ -527,6 +550,11 @@
%\TestPackage{mathabx} %\TestPackage{mathabx}
%\TestPackage{mathdesign}% But see above! %\TestPackage{mathdesign}% But see above!
%%% Specific package versions
% This only works if the package has been loaded before
\IfFileExists{babel.sty}{\RequirePackage{babel}}{}
\TestPackageVersion{babel}{2017/11/03}
%%% Document classes %%% Document classes
% The list of layout files has been put in this file here by the % The list of layout files has been put in this file here by the
% configure script. % configure script.

View File

@ -1,5 +1,5 @@
#LyX 2.4 created this file. For more info see https://www.lyx.org/ #LyX 2.4 created this file. For more info see https://www.lyx.org/
\lyxformat 578 \lyxformat 580
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true
@ -4940,6 +4940,31 @@ Table of contents
\end_layout \end_layout
\begin_deeper \begin_deeper
\begin_layout Standard
\change_inserted -712698321 1563000039
As of version 3.15 (2017/11/03),
\family sans
babel
\family default
also provides specific commands to select OpenType, TrueType and PostScript
fonts from the Operating System (with XeTeX or LuaTeX).
If this version (or a newer one) is installed (on your system:
\begin_inset Info
type "package"
arg "babel-2017/11/03"
\end_inset
), \SpecialChar LyX
will use this rather than
\family sans
fontspec
\family default
's commands.
\change_unchanged
\end_layout
\begin_layout Standard \begin_layout Standard
Your \SpecialChar LaTeX Your \SpecialChar LaTeX
installation has hyphenation patterns for the following languages: installation has hyphenation patterns for the following languages:

View File

@ -1762,8 +1762,9 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
os << from_ascii(ams); os << from_ascii(ams);
if (useNonTeXFonts) { if (useNonTeXFonts) {
// Babel loads fontspec itself // Babel (as of 2017/11/03) loads fontspec itself
if (!features.isProvided("fontspec") && !features.useBabel()) if (!features.isProvided("fontspec")
&& !(features.useBabel() && features.isAvailable("babel-2017/11/03")))
os << "\\usepackage{fontspec}\n"; os << "\\usepackage{fontspec}\n";
if (features.mustProvide("unicode-math") if (features.mustProvide("unicode-math")
&& features.isAvailable("unicode-math")) && features.isAvailable("unicode-math"))
@ -3390,14 +3391,15 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
// variants are understood by both engines. However, // variants are understood by both engines. However,
// we want to provide support for at least TeXLive 2009 // we want to provide support for at least TeXLive 2009
// (for XeTeX; LuaTeX is only supported as of v.2) // (for XeTeX; LuaTeX is only supported as of v.2)
// Babel has its own higher-level interface on top of // As of 2017/11/03, Babel has its own higher-level
// fontspec that is to be used. // interface on top of fontspec that is to be used.
bool const babel = features.useBabel(); bool const babelfonts = features.useBabel()
&& features.isAvailable("babel-2017/11/03");
string const texmapping = string const texmapping =
(features.runparams().flavor == OutputParams::XETEX) ? (features.runparams().flavor == OutputParams::XETEX) ?
"Mapping=tex-text" : "Ligatures=TeX"; "Mapping=tex-text" : "Ligatures=TeX";
if (fontsRoman() != "default") { if (fontsRoman() != "default") {
if (babel) if (babelfonts)
os << "\\babelfont{rm}["; os << "\\babelfont{rm}[";
else else
os << "\\setmainfont["; os << "\\setmainfont[";
@ -3411,7 +3413,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
if (fontsSans() != "default") { if (fontsSans() != "default") {
string const sans = parseFontName(fontsSans()); string const sans = parseFontName(fontsSans());
if (fontsSansScale() != 100) { if (fontsSansScale() != 100) {
if (babel) if (babelfonts)
os << "\\babelfont{sf}"; os << "\\babelfont{sf}";
else else
os << "\\setsansfont"; os << "\\setsansfont";
@ -3422,7 +3424,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
os << texmapping << "]{" os << texmapping << "]{"
<< sans << "}\n"; << sans << "}\n";
} else { } else {
if (babel) if (babelfonts)
os << "\\babelfont{sf}["; os << "\\babelfont{sf}[";
else else
os << "\\setsansfont["; os << "\\setsansfont[";
@ -3435,7 +3437,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
if (fontsTypewriter() != "default") { if (fontsTypewriter() != "default") {
string const mono = parseFontName(fontsTypewriter()); string const mono = parseFontName(fontsTypewriter());
if (fontsTypewriterScale() != 100) { if (fontsTypewriterScale() != 100) {
if (babel) if (babelfonts)
os << "\\babelfont{tt}"; os << "\\babelfont{tt}";
else else
os << "\\setmonofont"; os << "\\setmonofont";
@ -3446,7 +3448,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
os << "]{" os << "]{"
<< mono << "}\n"; << mono << "}\n";
} else { } else {
if (babel) if (babelfonts)
os << "\\babelfont{tt}"; os << "\\babelfont{tt}";
else else
os << "\\setmonofont"; os << "\\setmonofont";