
다음 m(비)we를 고려하십시오.
\documentclass{standalone}
\begin{document}
Foo & Bar
\end{document}
빌드가 실패합니다.
! Misplaced alignment tab character &.
&
코드에서 문자를 제거하면 완벽하게 미세한 PDF가 생성됩니다 .
평범한 TeX조차도 그렇게 행동합니다.
Foo & Bar
\bye
같은 오류가 발생합니다.
나는 테이블 형식 및 배열 환경에서만 사용되는 것을 본 적이 &
있으며 그 외부에서는 본 적이 없습니다. 왜 그런 겁니까?
\tabular
예 를 들어 \endtabular
그것은 &
환경 내부에서만 특별하고 이러한 환경 외부에서는 정상적인 캐릭터일 뿐이라는 것을 정의할 수 없습니까 ?
&
테이블 형식 및 배열 환경 외부에서 문서가 중단되어야 하는 이유는 무엇입니까 ?
질문을 바꿔 말하면: WTF는 정렬 탭 문자이며 일반적으로 어디에 배치합니까?
답변1
형식이나 사용자가 &(또는 다른 기호)의 catcode를 전역적으로 4로 설정하지 않았다고 가정해 보겠습니다.
로컬에서 그러한 문자를 계속 갖고 싶다고 가정하고( \nc
항상 "새 열"과 같은 명령을 사용하지 않는다고 가정하면) 결과는 어떻게 될까요?
- 모든테이블 형식 환경에서는 문자를 정렬 탭으로 설정해야 하며 사용할 문자에 동의해야 합니다. 여기에는 많은 패치가 필요합니다. 이것은 당연히 형식이 작성될 때 수행되지 않은 이유에 대한 논쟁이 아닙니다.
- 일부 명령의 인수에 표 형식을 사용하는 경우 이 문자를 사용할 수 없습니다. 예를 들어 바닥글과 머리글, 문자 주소, 작성자 목록, 비머 프레임에서 표 형식을 사용할 때 문제가 발생할 수 있습니다. 자연스럽게 명령을 대체 명령으로 정의할 수 있지만 사용자는 이 명령이 언제 필요한지 이해해야 합니다.
정렬 탭을 로컬에서 비활성화하는 것은 다소 어려울 수 있습니다. 예를 들어 현재 다음과 같이 &가 많이 포함된 표 형식을 쉽게 입력할 수 있습니다.
\documentclass{article} \begin{document} \begingroup \catcode`\&=12 \catcode`!=4 \begin{tabular}{ll} a & b ! c & d \end{tabular} \endgroup \end{document}
그러나 테이블 형식이 &의 catcode를 재설정하면 더 이상 작동하지 않습니다. 따라서 이러한 조작을 허용하려면 몇 가지 후크가 필요하며 모든 테이블 형식 환경에서도 마찬가지입니다.
전체적으로 패키지 작성자와 사용자에게는 많은 일이 훨씬 더 어려워질 것입니다. 타이핑하는 법을 배우는 것이 더 쉽습니다 \&
.
답변2
물어:
&가 테이블 형식 환경 외부에서 특별한 이유는 무엇입니까?
질문이 적절하지 않은 것 같아요. 나는 그것이 &
특별하다고 말하고 싶다어디에나tabular
, 외부 환경 뿐만이 아닙니다 . 캐릭터 &
는카테고리 코드 4-- "정렬 탭" -- 내가 본 모든 TeX 및 LaTeX 형식입니다. 이 catcode 설정을 사용하면 tabular
유사한 환경(예: tabular*
, tabularx
, longtable
등)뿐만 아니라 array
환경, 더 이상 사용되지 않는 eqnarray
환경, 패키지의 일부 표시 수학 환경 amsmath
, 패키지, 그리고 아마도 꽤 많은 추가 환경이 있을 것입니다.IEEEeqnarray
IEEEtrantools
&
기본적으로 catcode 4를 할당하는 장점 은 모든 패키지 작성자가~해야 한다) catcode 4가 있다고 가정하고 코드를 작성합니다 &
. 이 기본값이 없으면 일부 패키지 작성자가 &
정렬 탭 문자로 선택하는 반면, 다른 작성자는 @
다른 항목을 선택할 수도 있고 누가 알 수도 있습니다. 이러한 결과는 대부분의 사용자에게 확실히 열등할 것입니다. 왜냐하면 어떤 문자(들)가 어떤 환경에서 정렬 탭 기능으로 사용되는지 기억해야 하기 때문입니다.
반대로, 특별해지고 싶지 않고 &
해당 catcode를 수정하고 싶지 않다면 로 입력해야 합니다 \&
.