
Я пытаюсь набрать слово в том же стиле, что и \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
состоит из трех токенов, тогда как \sbox{0}{T}
имеет семь.
Что такое a \vbox
и an \hbox
, можно узнать в TeX by Topic (он свободно доступен в любом дистрибутиве TeX, например, texdoc texbytopic
на CTAN).
\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 смещена вниз и применены некоторые керны.
Как отмечает Барбара в комментариях, это определение очень тщательно изучено для шрифтов Computer Modern. Другие шрифты могут дать не такой хороший результат. Пакет metalogo
пытается «абстрагировать» интервалы, поэтому логотип можно адаптировать к другим шрифтам с минимальными трудностями (но некоторые попытки нужны, чтобы получить правильные параметры).