我在 latex 中使用此命令来指定字体路径:
\setmainfont[Color=primary, Path = fonts/source-han-serif/,BoldItalicFont=SourceHanSerifSC-Bold,BoldFont=SourceHanSerifSC-Bold,ItalicFont=SourceHanSerifSC-Bold]{SourceHanSerifSC-Regular}
现在我有一个问题,我有许多包含字体路径的 cls 文件,如果我想更改文件路径,我必须打开每个 cls 文件并逐个编辑。是否可以让 setmainfont 读取环境,以便我可以在一个地方指定字体路径?我可能的操作系统是 Ubuntu 和 macOS。
答案1
是的,你可以使用我的代码https://tex.stackexchange.com/a/62032/4427
这里我使用了之前回答您关于的问题的一个答案的变体HOME
,仅作为例子。
\documentclass{article}
\usepackage{fontspec}
\ExplSyntaxOn
\NewDocumentCommand{\getenv}{om}
{
\sys_get_shell:nnN { kpsewhich ~ --var-value ~ #2 } { } \l_tmpa_tl
\tl_trim_spaces:N \l_tmpa_tl
\IfNoValueTF { #1 }
{
\tl_use:N \l_tmpa_tl
}
{
\tl_set_eq:NN #1 \l_tmpa_tl
}
}
\ExplSyntaxOff
\getenv[\HOME]{HOME}
\getenv[\TEST]{TEST}
\newfontface{\fell}{IMFePIit29C}[
Path=\HOME/provaccia/conf-1.7b/fell/,
Extension=.otf,
]
\begin{document}
\texttt{TEST is \TEST}
\texttt{TEST is \getenv{TEST}}
{\fell Hello}
\end{document}
我运行bash
它
TEST=foo xelatex dolphin
输出为
当然,您有责任在每个系统上正确定义和导出所需的环境变量。