xspace와 비교하여 명령 끝에 {} 추가

xspace와 비교하여 명령 끝에 {} 추가

나는 다음에 대한 답변을 읽었습니다.

LaTeX 명령 뒤의 공백

하지만 현재 사용하는 대안은 언급되지 않았습니다.

\newcommand{\arnold}{Arnold Schwarzenegger{}}

물론 {}명령을 호출한 후 추가하는 것보다 입력이 적고 오류가 발생하기 쉽습니다. 지금까지 어떤 문제도 발생하지 않았습니다. 반대로 \xspace원하지 않는 공간을 삽입하는 복잡한 경우가 있다는 것을 알았습니다 {}.

그래서 나는 왜 아무도 이것을 사용하지 않는지, 그리고 그것이 내가 알지 못하는 문제를 일으킬 수 있는지 궁금했습니다.

편집: 댓글을 보고 나서 저는 항상 매개변수가 있는 명령과 함께 이 접근 방식을 사용했다는 것을 깨달았습니다. 따라서 제 예는 다음과 같아야 했습니다.

\newcommand{\arnold}[1]{Arnold #1 Schwarzenegger}

그러면 내 코드가 아무리 유사해 보이더라도 항상 내 예제를 확인하는 방법을 배울 수 있습니다.

따라서 실제로는 {}보다는 올바른 간격을 유발하는 인수입니다. 누군가 나에게 왜 그 주장이 달라지는지 설명해 준다면 나는 전적으로 기뻐할 것입니다.

답변1

문제는 소스의 공백이 출력에서 ​​공백을 생성하지 않는 이유입니다. 뒤의 공백은 \arnold명령 이름을 끝내기 위해 사용되며 토큰화되지 않으므로 출력이 생성되지 않습니다. 그래서 논증 없는 형태로

\arnold text

다음으로 확장

Arnold Schwarzenegger{}text

{}이는 아무것도 유용하지 않은 "Arnold Schwarzeneggertext"로 조판됩니다 .

반대로 인수가 있는 형식에서는 이후 공백이 \arnold토큰화되지 않는다는 것이 여전히 사실입니다.

\arnold {} text

그리고

\arnold{} text

동일한 방식으로 구문 분석되며 둘 다 다음으로 확장됩니다.

 Arnold␣␣Schwarzenegger␣text

따라서 인수 뒤의 공백은 일반 단어 공백으로 처리되지만 Arnold와 Schwarzenegger 사이에는 두 개의 공백 토큰 공백이 생깁니다.

관련 정보