我正在研究 LaTeX 中的脚注是如何产生的,以及幕后究竟运行了哪些过程,然后注意到了\@makefntext
。但事实上,latex.ltx
这个宏只出现了两次,它被调用,但找不到实际的定义。它是否由某个包装器命令隐式定义?还是在另一个文件中发生?或者两者兼而有之?
答案1
借助以下帮助grep
:标准类定义此命令:
例如article.cls
之内\maketitle
:
\long\def\@makefntext##1{\parindent 1em\noindent
\hb@[email protected]{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
之后在课堂上:
\newcommand\@makefntext[1]{%
\parindent 1em%
\noindent
\hb@[email protected]{\hss\@makefnmark}#1}
在letter.cls
\long\def\@makefntext#1{%
\noindent
\hangindent 5\p@
\hb@xt@5\p@{\hss\@makefnmark}#1}
book
和类的定义report
等于article.cls
,对于 KOMA 类,定义略有不同。
答案2
要查找定义,您可以使用latexdef
命令。
示例(使用-s
选项尝试显示命令定义的原始源代码和-c
选项加载给定的类):
latexdef -s -c 文章@makefntext
生成:
% article.cls, line 619:
\newcommand\@makefntext[1]{%
\parindent 1em%
\noindent
\hb@[email protected]{\hss\@makefnmark}#1}