\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}
).
\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
.