commit 003d675c2f3bb66f147b99def57296545d4c170e
Author: Juergen Spitzmueller <[email protected]>
Date: Sat Jul 13 08:42:42 2019 +0200
Use \babelfonts only if babel >= 3.15 is available.
---
lib/chkconfig.ltx | 28 ++++++++++++++++++++++++++++
lib/doc/LaTeXConfig.lyx | 27 ++++++++++++++++++++++++++-
src/BufferParams.cpp | 22 ++++++++++++----------
3 files changed, 66 insertions(+), 11 deletions(-)
diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index 970b26b..fb04719 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -120,6 +120,29 @@
#6
\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
\newcommand{\TestFont}[2][\default]{
\def\default{#2}
@@ -527,6 +550,11 @@
%\TestPackage{mathabx}
%\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
% The list of layout files has been put in this file here by the
% configure script.
diff --git a/lib/doc/LaTeXConfig.lyx b/lib/doc/LaTeXConfig.lyx
index 8ad9a5b..3f7fcf8 100644
--- a/lib/doc/LaTeXConfig.lyx
+++ b/lib/doc/LaTeXConfig.lyx
@@ -1,5 +1,5 @@
#LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 578
+\lyxformat 580
\begin_document
\begin_header
\save_transient_properties true
@@ -4941,6 +4941,31 @@ Table of contents
\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
Your \SpecialChar LaTeX
installation has hyphenation patterns for the following languages:
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index dd6e91e..e65e6e4 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -1762,8 +1762,9 @@ bool BufferParams::writeLaTeX(otexstream & os,
LaTeXFeatures & features,
os << from_ascii(ams);
if (useNonTeXFonts) {
- // Babel loads fontspec itself
- if (!features.isProvided("fontspec") && !features.useBabel())
+ // Babel (as of 2017/11/03) loads fontspec itself
+ if (!features.isProvided("fontspec")
+ && !(features.useBabel() &&
features.isAvailable("babel-2017/11/03")))
os << "\\usepackage{fontspec}\n";
if (features.mustProvide("unicode-math")
&& features.isAvailable("unicode-math"))
@@ -3390,14 +3391,15 @@ string const BufferParams::loadFonts(LaTeXFeatures &
features) const
// variants are understood by both engines. However,
// we want to provide support for at least TeXLive 2009
// (for XeTeX; LuaTeX is only supported as of v.2)
- // Babel has its own higher-level interface on top of
- // fontspec that is to be used.
- bool const babel = features.useBabel();
+ // As of 2017/11/03, Babel has its own higher-level
+ // interface on top of fontspec that is to be used.
+ bool const babelfonts = features.useBabel()
+ && features.isAvailable("babel-2017/11/03");
string const texmapping =
(features.runparams().flavor == OutputParams::XETEX) ?
"Mapping=tex-text" : "Ligatures=TeX";
if (fontsRoman() != "default") {
- if (babel)
+ if (babelfonts)
os << "\\babelfont{rm}[";
else
os << "\\setmainfont[";
@@ -3411,7 +3413,7 @@ string const BufferParams::loadFonts(LaTeXFeatures &
features) const
if (fontsSans() != "default") {
string const sans = parseFontName(fontsSans());
if (fontsSansScale() != 100) {
- if (babel)
+ if (babelfonts)
os << "\\babelfont{sf}";
else
os << "\\setsansfont";
@@ -3422,7 +3424,7 @@ string const BufferParams::loadFonts(LaTeXFeatures &
features) const
os << texmapping << "]{"
<< sans << "}\n";
} else {
- if (babel)
+ if (babelfonts)
os << "\\babelfont{sf}[";
else
os << "\\setsansfont[";
@@ -3435,7 +3437,7 @@ string const BufferParams::loadFonts(LaTeXFeatures &
features) const
if (fontsTypewriter() != "default") {
string const mono = parseFontName(fontsTypewriter());
if (fontsTypewriterScale() != 100) {
- if (babel)
+ if (babelfonts)
os << "\\babelfont{tt}";
else
os << "\\setmonofont";
@@ -3446,7 +3448,7 @@ string const BufferParams::loadFonts(LaTeXFeatures &
features) const
os << "]{"
<< mono << "}\n";
} else {
- if (babel)
+ if (babelfonts)
os << "\\babelfont{tt}";
else
os << "\\setmonofont";