我正在尝试了解类文件是如何工作的。在我使用的示例中,它来自很棒的简历模板文件。在.cls文件中,有一部分定义了一个宏,用于设置字体的目录。
\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
我想具体了解的是,\@fontdir
在这种情况下它做什么?它看起来像一个原始命令,但我在任何文档中都找不到它。
答案1
它不执行任何操作,您显示的命令只是将提供的参数保存在宏中\@fontdir
,该参数只是一个任意名称,大概位于所使用的包代码的其他地方。
这种习惯用法在乳胶中很常见,例如它与标准类中的完全相同\title
(除了默认值)
如果你走的话
\title{hello world}
那么就可以
\def\@title{hello world}
保存该字符串,除非某个宏(\maketitle
在本例中)\@title
在某处使用,否则什么也不会发生。
所以你可以去这里
\fontdir{a/b/c}
但这和去
\renewcommand\@fontdir{a/b/c}
\@fontdir
并且除非使用,否则不执行任何操作。
查看类源,它稍后会
\newfontfamily\FA[Path=\@fontdir]{FontAwesome}
这意味着如果您在非标准位置安装了匹配的字体,您可以使用\fontdir
保存该位置的命令记录其所在的文件夹\@fontdir
,并将在上面的字体加载命令中使用它。因此,它只是特定于此类加载的这一种字体,而不是通用机制。