Escape-Zeichen in Schreibmaschinenschriftart

Escape-Zeichen in Schreibmaschinenschriftart

Ich kenne mehrere Möglichkeiten, dies zu beheben (z. B. \usepackage[T1]{fontenc}), aber ich möchte verstehen, was im folgenden Beispiel passiert.

\documentclass{article}
\begin{document}
\noindent
\$ \% \& \{ \} \_ \# \textbackslash \\
\ttfamily \$ \% \& \{ \} \_ \# \textbackslash \\
\verb+$ % & { } _ # \ +
\end{document}

Escape-Zeichen

  • Warum führt der Versuch, eine Klammer, einen Unterstrich oder einen Backslash zu erhalten, \ttfamilyzur Ersetzung durch das normale römische Symbol? Die Glyphen fehlen offensichtlich nicht, da der Verbatim-Modus auf sie zugreifen kann.

  • Wie genau greift der Verbatim-Modus auf diese Glyphen zu?

  • Das Löschen der Klammern und des Backslashs, so dass der Unterstrich das einzige verbleibende „Problem“-Zeichen ist, beseitigt die Schriftartwarnungen, obwohl immer noch eine Ersetzung stattfindet. Warum ist das so?

Antwort1

\verbund verbatimnehmen Sie an, dass die Schriftart diese Zeichen an ihren ASCII-Positionen hat und die Zeichen lokal in Catcode 12 (wie Satzzeichen) ohne besondere Definition umwandelt.

\textbackslash(und Freunde) ist als kodierungsspezifischer Befehl definiert und (um einen Anschein von Vernunft gegenüber den ursprünglichen TeX-Kodierungen vorzutäuschen) geht LaTeX davon aus, dass OT1Kodierung die Kodierung ist, cmr10die keinen Backslash hat. Daher OTwird die Standarddefinition verwendet (die die mathematischen Schriftarten verwendet). \ttfamilyändert die Familie, aber nicht die Kodierung und in diesem Fall erhalten Sie die OT1-Definition, obwohl die cmttSchriftart tatsächlich anders kodiert ist.

Dies funktioniert besser, T1da die als T1-codiert gekennzeichneten Schriftarten tatsächlich dieselbe Codierung aufweisen.

\_ist anders, da \textunderscorees eine Standarddefinition hat, die überhaupt keine Schriftart, sondern eine horizontale Linie verwendet.

verwandte Informationen