使用 \l@addto@macro

使用 \l@addto@macro

我正在尝试更改 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在意外和错误的位置执行。为了描述完整,第二个参数不会执行任何操作,因为赋值无论如何都会在组中执行。

相关内容