使用子目录中的字体文件(类似于“\graphicspath”)

使用子目录中的字体文件(类似于“\graphicspath”)

我有一个 LaTeX 文档,它使用了标准软件包中没有的字体(和字体映射)文件。它是用 和 编译pdflatexbiber

如果所有相关字体文件都与主 .tex 文件位于同一目录中,则 LaTeX 会在编译期间正确使用所有字体。

我知道最佳方法是将所有这些文件设置在 texmf 树中的适当目录中,然后设置各种环境变量等(我对不需要共享的文档也这样做)。但是上面的“不正确”方法允许我快速与其他(可能不太熟悉 latex 的)人共享我的文档:我将目录发送给他们,他们也可以编译 tex 文件而无需更改环境变量等。例如,他们可以将所有内容上传到他们的 Overleaf 帐户,然后由该帐户完成其余工作。

唯一的问题是目录中最终会包含许多令人困惑的文件。我更愿意将所有与字体相关的文件放在一个子目录中,比如“fontfiles”,如果可能的话,让 LaTeX 在那里搜索它们 - 就像\graphicspath图片文件命令那样。

我尝试将其放在文档的开头:

\makeatletter
\def\input@path{{./fontfiles/}}
\makeatother

从答案中得到启发这个问题.但是它不起作用。

我该如何解决这个问题?

答案1

如果这样做的目的是为了让其他人能够自己编译文件,那么没有出版商会强迫您使用上个世纪的旧文件格式。您可以快马加鞭,使用 OpenType 字体文件,并使用以下选项加载它们fontspec,例如:

/defaultfontfeatures[SomeFont]{
  Ligatures={Common, TeX},
  Path = {./fonts/},
  UprightFont = {*-Regular},
  BoldFont = {*-Bold},
  ItalicFont = (*-Italic},
  BoldItalicFont = {*-BoldItalic},
  Extension = {.otf} }

\setmainfont{SomeFont}
\setsansfont{SomeFont}

但这不一定能解决您的问题,因为您在其他问题中说您还想将图形放在子目录中。不过,您似乎找到了其他解决方法。

因此,您需要设置您的TEXINPUTS环境变量(David Carlisle 建议您在您链接的答案中将其设置为当前工作目录)。 然后 TeX 将递归地在此目录中搜索输入文件。

尽管您无疑知道这一点,但为了完整起见:在 Linux/Unix 上,要添加到 makefile 或 shell 脚本的命令是export TEXINPUTS=graphicspath,而在 Windows 批处理文件中,它是set TEXINPUTS=graphics\path。 (在 Windows 上,斜杠或反斜杠都可以使用。)

您没有给出 MWE 或说明您链接的答案中的方法如何不起作用,但答案表明它应该仅适用于包中的某些特定命令graphics

相关内容