\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
向前看下一個標記,看看是使用低點還是居中點。 \DeclareUnicodeCharacter
將其定義包裝在\IeC{...}
其中\IeC
(此處)只是一個宏,除了使用其參數之外什麼也不做。
但主要問題是\dots
使用\futurelet
(而不是說\@ifnextchar
),因此它在查找下一個標記時不會跳過空白。這通常並不重要,因為\dots
在命令名稱之後會忽略空格,但在...之後不會被忽略(這是要解決的問題\IeC
,以確保輸入 enc 字元沒有以強制使用白色的標記結尾的定義如果寫入外部檔案(例如目錄),則需要忽略空間。
所以在這裡我定義 ... 接受一個參數並返回它,這是一種(或多或少安全)強制忽略字元後的空格的方法,因此測試\dots
看\}
不到空格。唯一不安全的部分是,這{…}
會產生解析錯誤,因為參數解析器在尋找時會到達群組的末端#1
。