\@setfontsize 与 \fontsize

\@setfontsize 与 \fontsize

\@setfontsize和 之间有什么区别 \fontsize

例如,Martin Scharrer 回答如何为字体大小创建新命令?他说:

这是通过调用来完成的\@setfontsize,但在您的情况下是不可用的。

为什么?

答案1

该命令的名称中\@setfontsize有一个@,这意味着它是一个“低级”命令,或者更确切地说是内部命令。它不应该出现在普通文档中,除非在序言中做出一些特殊的定义。

的定义\fontsize

\DeclareRobustCommand{\fontsize}[2]{%
  \set@fontsize \baselinestretch {#1}{#2}}

这意味着用户级命令\fontsize将控制权交给\set@fontsize。这是 LaTeX 中的常用技术。

内部命令\@setfontsize的用途不同于\fontsize

% latex.ltx, line 3611:
\def\@setfontsize#1#2#3{\@nomath#1%
    \ifx\protect\@typeset@protect
      \let\@currsize#1%
    \fi
    \fontsize{#2}{#3}\selectfont}

它通常位于“类选项文件”中size10.clo,例如

\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}

让我们看看当\normalsize被调用时会发生什么(大多数时候是隐式的);LaTeX 会

\@setfontsize\normalsize\@xpt\@xiipt

根据上述定义,

\@nomath\normalsize
\ifx\protect\@typeset@protect\let\@currsize\normalsize\fi
\fontsize{\@xpt}{\@xiipt}\selectfont

第一行\normalsize告诉 LaTeX 在数学模式下不允许\normalsize;第二行将设置\@currsize为等同于\normalsize,但仅限于正常排版期间(例如,在写入操作中它不执行任何操作)。最后,\fontsize使用字体大小 10pt 和基线跳过 12pt 调用命令,然后实际选择字体。

因此您会发现这\@setfontsize是一个内部实用程序,在文档中调用它是没有意义的。

的用途是什么?和size10.clo等类通常以“大小无关”的方式编写;大小选项(可能是默认选项)使 LaTeX 读取、或(对于类,它是、或)。这些文件设置字体选择和列表参数以及许多其他取决于主体字体大小的内容。articlereportsize10.closize11.closize12.clobk10.clobk11.clobk12.clobook

相关内容