我正在尝试在版本控制下的 LyX 文档中使用自定义 OpenType 字体(使用LuaLaTeX
和fontspec
包)。该文档可能会被其他机器上的其他人访问,因此我决定将 .otf 文件发送到文档文件夹的子目录中,而不是依赖于它们安装在系统上。换句话说,我只是想让文档在从版本控制中签出后立即处于可编译状态无需安装 otf 文件。
这就是我想要在文档的 LaTeX 序言中添加字体的方式:
\setmainfont{foo}[
Path = mypath,
UprightFont = foo-regular.otf,
BoldFont = foo-bold.otf,
ItalicFont = foo-it.otf,
BoldItalicFont = foo-boldit.otf,
]
只要mypath
绝对路径,一切都很好。一旦我想使用相对的这里的路径(因为绝对路径对于版本控制下的文件没有意义)不再找到字体。
是否有任何解决方案可以(a)使相对路径在这里工作或(b)以某种方式确定当前文件夹的绝对路径(不是LyX 的临时文件夹(文档实际编译的位置)并将其插入mypath
?或者还有其他我忽略的明显解决方案吗?
答案1
以下是我解决问题的方法(感谢 GM 的帮助)。假设 otf 文件位于包含主 LyX 文件的目录下的名为“fonts”的子目录中:
\setmainfont{foo}[
Path = \input@path,
UprightFont = fonts/foo-regular.otf,
BoldFont = fonts/foo-bold.otf,
ItalicFont = fonts/foo-it.otf,
BoldItalicFont = fonts/foo-boldit.otf,
]
正如GM所解释的,\input@path
指的是原始目录(即不是将编译所有内容的临时目录)。
更新:
在我最初的解决方案中,我将所有内容都用\makeatletter
和包围起来\makeatother
。但是,正如 GM 所提到的,LyX 的 LaTeX Preamble 已经提供了此功能。因此,这在这里是不必要的,甚至可能确实会造成麻烦。