\documentclass{article}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{2026}{\dots}% …
\usepackage{amsmath}
\begin{document}
\[\left\{a \dots \right\}\]
\[\left\{a … \right\}\]
\end{document}
\dots
Der Abstand um die Auslassungspunkte ist für und …
im obigen Dokument nicht derselbe (der dritte Fall ist, wenn ich das entferne \DeclareUnicodeCharacter{2026}{\dots}
):
\dots
Wie kann ich mit und den gleichen Abstand erreichen …
? Hoffentlich geht das, ohne etwas an der Formel selbst zu ändern, nur am \DeclareUnicodeCharacter
Code, denn sonst vergesse ich den Hack wahrscheinlich die meiste Zeit und die Formeln sind weniger prägnant.
Das Problem verschwindet, wenn ich nicht verwende amsmath
.
Antwort1
\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
schaut sich das nächste Token an, um zu sehen, ob tiefe oder zentrierte Punkte verwendet werden sollen. \DeclareUnicodeCharacter
umschließt seine Definition in „ \IeC{...}
wobei \IeC
(hier) nur ein Makro ist, das nichts anderes tut, als sein Argument zu verwenden.“
Das Hauptproblem besteht jedoch darin, dass (anstatt zu sagen ) \dots
verwendet wird , damit beim Suchen nach dem nächsten Token keine Leerzeichen übersprungen werden. Dies spielt normalerweise keine Rolle, da Leerzeichen nach einem Befehlsnamen ignoriert werden, aber nicht nach ... (dies ist das Problem, das behoben werden muss, um sicherzustellen, dass Eingabecodierungszeichen keine Definitionen haben, die mit einem Token enden, das das Ignorieren von Leerzeichen erzwingt, wenn sie in eine externe Datei wie ein Inhaltsverzeichnis geschrieben werden).\futurelet
\@ifnextchar
\dots
\IeC
Also definiere ich hier ..., um ein Argument anzunehmen und zurückzugeben, was eine (mehr oder weniger sichere) Möglichkeit ist, das Leerzeichen nach dem zu ignorierenden Zeichen zu erzwingen, sodass die \dots
Tests kein Leerzeichen sehen \}
. Der einzige unsichere Teil daran ist, dass dies {…}
zu einem Analysefehler führen würde, da der Argumentparser beim Suchen nach auf das Ende der Gruppe stoßen würde #1
.