我在 Linux 上使用 TexLive 2016 和 LuaTeX,但我相信我的问题通常适用于任何平台上的 LaTeX。我无法切换到 XeTeX。在来这里之前,我发现有没有办法从包内部检测是否使用了 MiKTeX? 但它并没有让我放心。
使用fontspec
和unicode-math
我有\setmathfont{Asana Math}
。这有效。没有问题。我的问题是:
我的 TeX 系统只安装了我当时需要的软件包。所以我习惯tlmgr
获取其他软件包。结果发现正确的软件包不是 也不asana
是asana-math
也不是Asana-math
。它只是Asana-Math
,大写的 A 和 M。要么接受,要么离开。
根据 CTAN,在 MiKTeX 中,包名称是asana-math
。小写的 a 和 m。这是否意味着如果我将文档传输到 MiKTeX 系统,他们将无法找到我需要的内容?或者,在检测包名称并自动获取包名称时,MiKTeX 是否不区分大小写?
如果发行版之间存在大小写问题,那么是否有可靠的方法可以从 TeX 文档中知道正在使用哪一个?因此,shell 命令不起作用。查看完整横幅可能不起作用,因为它似乎会不时发生变化。
理想的解决方案看起来类似于以下伪代码:
\IfPackageExists{Asana-Math} % not necessarily installed
\usepackage{Asana-Math} % if not installed, get it or error message
\else
\IfPackageExists{asana-math} % not necessarily installed
\usepackage{asana-math} % if not installed, get it or error message
\else
% some suitable error message
\fi\fi
答案1
miktex 和 TeXLive(以及经常以不同方式重新打包 texlive 的 Linux 发行版)使用的“软件包名称”会影响安装和更新选项期间的选择,但根本不会影响 TeX 中使用的标记。在 TeXlive 中,如果缺少字体或软件包,tex 将无法获得有关该字体或软件包是否可以安装在 texlive 未安装部分的信息,您只会收到文件未找到错误。(miktex 确实可以按需下载内容,但即使这样也不会影响文档标记)。