amsmath와 함께 \dots 및 …의 간격이 일관되지 않음

amsmath와 함께 \dots 및 …의 간격이 일관되지 않음
\documentclass{article}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{2026}{\dots}% …
\usepackage{amsmath}
\begin{document}

\[\left\{a \dots \right\}\]
\[\left\{a … \right\}\]

\end{document}

줄임표 주위의 간격은 위 문서 \dots문서에서 동일하지 않습니다(세 번째 경우는 을 제거한 경우입니다 \DeclareUnicodeCharacter{2026}{\dots}).

유니코드 줄임표는 \DeclareUnicodeCharacter를 사용하면 오른쪽에 더 적은 공간이 있습니다. \DeclareUnicodeCharacter가 없으면 왼쪽에 공간이 없습니다(하지만 오른쪽에는 올바른 간격이 있다고 생각합니다).

\dots및 와 동일한 간격을 어떻게 얻을 수 있습니까 ? 수식 자체의 아무것도 변경하지 않고 코드만 변경하면 이 작업이 수행될 수 있기를 바랍니다. \DeclareUnicodeCharacter그렇지 않으면 대부분의 경우 해킹 내용을 잊어버릴 가능성이 높으며 수식은 덜 간결해집니다.

을 사용하지 않으면 문제가 사라집니다 amsmath.

답변1

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}

%\DeclareUnicodeCharacter{2026}{\dots}% …
% \u8:… ->\IeC {\dots }
\expandafter\def\csname u8:\detokenize{…}\endcsname#1{\dots#1}


\begin{document}


$\left\{a \dots \right\}$\vline

$\left\{a … \right\}$\vline

\end{document}

\dots낮은 점 또는 중앙 점을 사용할지 여부를 확인하기 위해 다음 토큰을 미리 살펴봅니다. 여기서 (here)는 인수를 사용하는 것 외에는 아무것도 하지 않는 매크로로 \DeclareUnicodeCharacter정의를 래핑합니다 .\IeC{...}\IeC

그러나 주요 문제는 (말하기보다는 )을 \dots사용하므로 다음 토큰을 찾는 동안 공백을 건너뛰지 않는다는 것입니다. 공백은 명령 이름 다음에서는 무시되지만 ... 이후에는 무시되지 않기 때문에 일반적으로 문제가 되지 않습니다 . ( 이는 입력 enc 문자에 흰색을 강제하는 토큰으로 끝나는 정의가 없는지 확인하기 위해 해결하는 문제입니다. 목차와 같은 외부 파일에 기록되는 경우 무시되는 공간입니다.\futurelet\@ifnextchar\dots\IeC

\dots그래서 여기서는 ... 문자 뒤의 공백을 무시하도록 강제하여 테스트에서 \}공백이 표시되지 않도록 하는 (다소 안전한) 방법인 인수를 가져와 반환하도록 정의합니다 . 이에 대해 유일하게 안전하지 않은 부분은 {…}인수 파서가 를 찾는 동안 그룹의 끝에 도달하므로 구문 분석 오류가 발생한다는 것 입니다 #1.

관련 정보