\relax를 공백으로 바꿀 수 있나요?

\relax를 공백으로 바꿀 수 있나요?

LaTeX는 \vec다음과 같이 정의합니다.

\DeclareMathAccent{\vec}{\mathord}{letters}{"7E}

이는 결국 다음으로 확장됩니다.

\mathaccent"017E\relax

반면 plainTeX는 이를 다음과 같이 정의합니다.

\def\vec{\mathaccent"017E }

\relax공백으로 대체합니다 .

실질적인 차이가 있나요?

답변1

is 의 구문은 \mathaccent(TeXbook, p. 291)

\mathaccent⟨15비트 숫자⟩⟨수학 필드⟩

⟨15비트 숫자⟩는 0–2 15 범위의 정수(LaTeX에서 허용하는 모든 표기법)입니다 . ⟨수학 분야⟩란 무엇인가요? 289페이지에서 찾을 수 있습니다.

⟨수학 필드⟩ → ⟨필러⟩⟨수학 기호⟩ | ⟨필러⟩ {⟨수학 모드 자료⟩}

\relax⟨filler⟩는 구문 규칙에 맞는 것을 찾기 위해 입력 스트림을 처리할 때 무시되는(확장 수행) 공간 토큰 및 토큰의 시퀀스입니다 .

따라서 LaTeX에서는 \relax⟨filler⟩로 표시되는 반면 일반 TeX에서는 공백이 숫자 지정을 종료하고 무시됩니다.

LaTeX는 왜 사용하나요 \relax? 대답은 \DeclareMathAccent내부적으로 사용되는 정의에 있습니다 \set@mathaccent.

% latex.ltx, line 3596:
\def\set@mathaccent#1#2#3#4{%
  \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}

\relax선택은 보조 파일에 쓸 때 작업에 더 적합하다는 사실에 따라 달라질 수 있습니다 .

관련 정보