我正在尝试更改 achemso 文档类的字体大小,并且在第二个答案中遇到了这段代码片段:是否可以在 achemso 包中使用 12 pt 字体大小?
\let\titlefont\undefined
\makeatletter
\let\l@addto@macro\relax
\makeatother
\usepackage[fontsize=10pt]{scrextend}
它很好地实现了目标,但我想了解各个线条的作用。我知道这\let\titlefont\undefined
是取消定义 KOMA-script 的标题字体以避免与 achemso 发生冲突。我对线条\makeatletter \makeatother
和\usepackage
线条也满意。但是线条在做什么\let\l@addto@macro\relax
?无论有没有它似乎都可以工作。我尝试研究\l@addto@macro
,但我所能找到的只是有关的信息\g@addto@macro
;有什么区别?
答案1
\makeatletter
和之间的代码\makeatother
是错误的,不应在任何地方使用。
如果您尝试不采用那条线,您将看不到任何差别。
komascript 类和包\l@addto@macro
在几个地方使用。在scrextend.sty
其中使用过一次:
\newcommand\deffootnote[4][]{%
\expandafter\ifnum\scr@v@is@ge{3.22}\relax
\long\def\@makefntext##1{%
\ExecuteDoHook{footnote/text/begin}%
\raggedfootnote
\leftskip #2
\l@addto@macro\@trivlist{%
\ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi
}%
\parindent #3\noindent
[...code not relevant...]
}
该宏应该接受两个参数,而将其等同于\relax
会在使用 时将这些参数留在输入流中\deffootnote
,稍后会处理脚注,因此会\@trivlist
在意外和错误的位置执行。为了描述完整,第二个参数不会执行任何操作,因为赋值无论如何都会在组中执行。