
ロゴと同様の方法で単語をタイプセットしようとしています\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 が開発されていた当時はコンピュータのメモリが非常に少なかったため、コードは最小限のトークン数に削減されています。 の定義に格納されているコードは\LaTeX
3 つのトークンですが、 には\sbox{0}{T}
7 つのトークンがあります。
\vbox
aと 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}
ので、無限に伸縮可能な空間であり、\hbox
A を含む は の上部と同じ高さになります\vbox
。したがって、A の上部は T の上部のバーと同じ高さになります (おそらく L の上部も同じ高さになります)。
A\kern
は に似ています\hspace
が、伸縮できません。これらの場所では、行区切りとして使用できないため (その後にスキップが続く場合を除く)、 が推奨されます。
の定義は\TeX
より単純です。E が下方にシフトされ、いくつかのカーニングが適用されます。
Barbara がコメントで述べているように、この定義は Computer Modern フォント用に非常に注意深く研究されています。他のフォントでは、それほど良い結果が得られない可能性があります。metalogo
パッケージは間隔を「抽象化」しようとするため、最小限の手間でロゴを他のフォントに適応させることができます (ただし、パラメータを正しく設定するには、何度か試行する必要があります)。