\LaTeX ロゴ内のコマンドは何を実行しますか?

\LaTeX ロゴ内のコマンドは何を実行しますか?

ロゴと同様の方法で単語をタイプセットしようとしています\LaTeX。ロゴのコードを見つけました (MWE で下記参照) が、\z@(Google 検索によるとゼロ?) などの見たことのないコマンドや、慣れていない奇妙な構文 ( 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 が開発されていた当時はコンピュータのメモリが非常に少なかったため、コードは最小限のトークン数に削減されています。 の定義に格納されているコードは\LaTeX3 つのトークンですが、 には\sbox{0}{T}7 つのトークンがあります。

\vboxaと an が何であるかは、TeX by Topic (任意の TeX ディストリビューションで として、または CTAN で\hbox無料で入手可能) で確認できます。texdoc texbytopic

\check@mathfonts数式フォントが現在のサイズに設定されていることを確認します。通常、これは数式が開始されたときにのみ実行されます。このコマンドは特に、\sf@size第 1 レベルの上付き/下付き文字のフォント サイズを定義します。マクロは\selectfont現在のフォントを設定します。では、\math@fontsfalse数式フォントの設定に必要な作業も実行しないように指示します。これは、数式を含む任意のテキストをタイプセットするのではなく、要求されたサイズで A を印刷するだけだからです。

\vssは と同じな\vspace{0pt plus 1fil minus 1fil}ので、無限に伸縮可能な空間であり、\hboxA を含む は の上部と同じ高さになります\vbox。したがって、A の上部は T の上部のバーと同じ高さになります (おそらく L の上部も同じ高さになります)。

A\kernは に似ています\hspaceが、伸縮できません。これらの場所では、行区切りとして使用できないため (その後にスキップが続く場合を除く)、 が推奨されます。

の定義は\TeXより単純です。E が下方にシフトされ、いくつかのカーニングが適用されます。


Barbara がコメントで述べているように、この定義は Computer Modern フォント用に非常に注意深く研究されています。他のフォントでは、それほど良い結果が得られない可能性があります。metalogoパッケージは間隔を「抽象化」しようとするため、最小限の手間でロゴを他のフォントに適応させることができます (ただし、パラメータを正しく設定するには、何度か試行する必要があります)。

関連情報