前言
TeX Gyre Pagella Math
我正在使用 XeLaTeX,并结合该包使用字体排版文档unicode-math
。这是一些示例代码
\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}
\begin{document}
$a^2 + b^2 = c^2$
\end{document}
我在我的计算机上使用 Debian GNU/Linux 和“vanilla” TeXLive。对我来说,上述示例编译得很好,但是当我的一个朋友使用来自texlive-full
官方存储库的 Ubuntu GNU/Linux 尝试编译它时,他遇到了font-not-found
错误。
事实证明,该字体已安装在他的系统上,但名称TG Pagella Math
不是TeX Gyre Pagella Math
。
问题
如何使用 XeLaTeX 实现两种字体名称之间的切换unicode-math
?请参阅我的伪代码为了更好的可视化
...
\usepackage{unicode-math}
\IFDEF UBUNTU
\setmathfont{TG Pagella Math}
\ELSE
\setmathfont{TeX Gyre Pagella Math}
\ENDIF
...
答案1
这应该有效
\ifx\UBUNTU\undefined
\setmathfont{TG Pagella Math}
\else
\setmathfont{TeX Gyre Pagella Math}
\fi
(假设您\UBUNTU
在朋友的代码版本中先前定义并在您的代码版本中对其进行注释,或者为了避免麻烦并能够毫不费力地同步,两者都包含一个同名但已\UBUNTU
定义或未定义的设置文件)。
有关该机制(和替代方案)的更多详细信息,请查看以下答案:
\ifx\somecommand\undefined 和 \ifdefined\somecommand\else 之间有什么区别?
答案2
请注意,如果字体名称不同,则它们可能是不同的版本,因此(可能?)具有不同的度量标准,这将导致不同的换行符和分页符。因此,另一种选择可能是在两台机器上本地安装最新版本的字体并加载它们。
然而,实现这种本地定制最简单的方法可能是
\InputIfFileExists{\jobname.cfg}{}
然后你可以共享文档,但有一个非共享.cfg
文件,其中一个说
\setmathfont{TG Pagella Math}
另一个说
\setmathfont{TeX Gyre Pagella Math}
当然,您可以在同一文件中包含任何其他定制内容。