我如何确定 tex 文件是在哪个 TeX 发行版或操作系统中构建的?

我如何确定 tex 文件是在哪个 TeX 发行版或操作系统中构建的?

我遇到了这个问题,即参考书目 .sty 文件在 Windows(Miktex)和 MacOS(Mactex)之间的命名可能不同。(编辑:我的意思是 .bst 文件)我无法验证这是问题的根源,因为我目前没有可用的 Windows 来检查 .sty 文件名,但在 Windows 上,以下构建正确

\bibliographystyle{IEEETran}

而在 MacOS 上,必须将同一行更改为以下内容才能构建文件(注意大写)

\bibliographystyle{IEEEtran}

我想要类似 C/C++ #ifdef 指令的东西,它让我检测正在构建文件的系统或发行版并有条件地使用适当的行,以便在两个设置上构建相同的文件。当然,我还没有在 Windows 上尝试过与 MacOS 兼容的行;小写的“t”可能在 Windows 上也能工作。然而,我的问题仍然存在:是否有可能检测出该文件是在什么系统或分布中构建的,并对结果进行一些标记?

答案1

始终使用正确的文件名,即使操作系统/文件系统不区分大小写。如果一开始就能给出正确的文件名,那么添加复杂的启发式代码来检测操作系统或文件系统是否支持错误的文件名是没有意义的。

LaTeX 也是区分大小写

例如,加载包MnSymbolmnsymbol

\usepackage{mnsymbol}
  • 在文件敏感的文件系统上,找不到该包。
  • 如果在不区分大小写的文件系统中发现它,那么 LaTeX 会抱怨:

    LaTeX Warning: You have requested package `mnsymbol',
                  but the package provides `MnSymbol'.
    

    如果再次以 as 形式加载包MnSymbol,则 LaTeX 不知道这是已经加载过的包,因此会再次加载。这通常会导致许多错误,例如,如果包\newcommand在以下情况下使用 as MnSymbl

    ! LaTeX Error: Command \Mn@Fake@Missing already defined.
               Or name \end... illegal, see p.192 of the manual.
    

对于IEEEtran,正确的拼写是:在 MiKTeX 和 TeX Live 中,分发包中的所有文件均IEEEtran使用小写字母。tIEEEtran

相关内容