\LaTeX 徽标内的命令有何作用?

\LaTeX 徽标内的命令有何作用?

我正在尝试以与徽标类似的方式排版一个单词\LaTeX。我找到了徽标的代码(下面在 MWE 中给出),但它使用了许多我从未见过的命令,例如\z@(根据谷歌搜索是零?)和T\vbox to \ht我不习惯的奇怪语法()。

我试图理解命令的每个步骤,包括语法,以及为什么这样做。

如果有人觉得有必要摆弄代码,可以使用 MWE:

\documentclass{standalone}
\begin{document}
\makeatletter
    L\kern -.36em{\sbox \z@ T\vbox to\ht \z@ {\hbox {\check@mathfonts \fontsize \sf@size \z@ \math@fontsfalse \selectfont A}\vss }}\kern -.15em\TeX
\makeatother
\end{document}

答案1

\makeatletter %% access private macros
L%% print an L
\kern -.36em%% add a negative kern
{%% open a group
  \sbox \z@ T%% load box 0 with a T
  \vbox to\ht \z@ {%% start a vertical box as high as box 0
    \hbox {% start a horizontal box
      \check@mathfonts%% ensure the math fonts sizes are set up at the current font size
      \fontsize \sf@size \z@%% use the established font size for sub/superscripts
      \math@fontsfalse%% don't bother setting up all the math fonts for the new current size
      \selectfont%% select the font
      A%% print an A
    }%% finish the horizontal box
    \vss%% fill up the stated height
  }%% finish the \vbox
}%% end the group
\kern -.15em%% add a negative kern
\TeX%% print the TeX logo
\makeatother%% no more private macros allowed

一些注释。

\sbox\z@ T完全等同于\sbox{0}{T};代码被减少到最少的标记数,因为在开发 LaTeX2e 时,计算机内存非常稀缺。 的定义中存储的代码\LaTeX是三个标记,而\sbox{0}{T}有七个。

您可以在 TeX by Topic 中找到a\vbox和 an 的含义(可在任何 TeX 发行版中免费获取,如或在 CTAN 上)。\hboxtexdoc texbytopic

\check@mathfonts确保数学字体设置为当前大小;通常这仅在启动数学公式时才执行。特别是,此命令定义\sf@size为第一级下标/上标的字体大小。宏\selectfont设置当前字体;\math@fontsfalse我们告诉它不要执行设置数学字体所需的工作,因为我们只想以请求的大小打印 A,而不是用数学排版任意文本。

\vss与 相同\vspace{0pt plus 1fil minus 1fil},因此它是一个无限可拉伸和收缩的空间,它将推动\hbox包含 A 的 与 的顶部齐平\vbox。因此,A 的顶部将与 T 的顶部栏处于同一高度(也可能是 L 的顶部)。

A\kern类似于\hspace,但不能拉伸或收缩。在这些地方,它是首选,因为它不能用作换行点(除非它后面跟着跳过)。

的定义\TeX更简单:将 E 向下移动,并应用一些字距调整。


正如 Barbara 在评论中指出的那样,这个定义是针对 Computer Modern 字体经过非常仔细的研究的。其他字体可能会给出不太好的结果。该metalogo包试图“抽象”间距,因此徽标可以以最少的麻烦适应其他字体(但需要进行一些尝试才能获得正确的参数)。

相关内容