\LaTeX 로고 내부의 명령은 무엇을 합니까?

\LaTeX 로고 내부의 명령은 무엇을 합니까?

로고 와 비슷한 방식으로 단어를 조판하려고 합니다 \LaTeX. 로고에 대한 코드(아래 MWE에 있음)를 찾았지만 이전에 본 적이 없는 많은 명령 \z@(예: Google 검색에 따르면 0입니까?)과 이상한 구문( 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개입니다.

a와 \vboxan은 \hbox주제별로 TeX에서 찾을 수 있습니다( texdoc texbytopicCTAN과 같은 모든 TeX 배포판에서 무료로 사용 가능).

\check@mathfonts수학 글꼴이 현재 크기에 맞게 설정되었는지 확인합니다. 일반적으로 이는 수학 공식이 시작될 때만 수행됩니다. 특히 이 명령은 \sf@size첫 번째 수준 하위/위 첨자의 글꼴 크기를 정의합니다. 매크로는 \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는 간격을 "추상화"하려고 시도하므로 번거로움을 최소화하면서 로고를 다른 글꼴에 적용할 수 있습니다(그러나 매개변수를 올바르게 얻으려면 몇 가지 시도가 필요합니다).

관련 정보