
Ich habe Probleme mit Unterstrichen in einer Monoschriftart. Es sieht so aus, als ob sie kürzer sind als andere Symbole. Beispiel:
\documentclass{article}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
Das Ergebnis:
Wie Sie sehen, ist die letzte Zeile (mit Unterstrichen) nach links verschoben. Wie kann ich die
PS Nein, ich kann keine native Tabelle verwenden - dies ist ein benutzergeneriertes Teil, das ich so einfügen muss, wie es ist. PSS Das verbatim
ist keine Option, weil es nicht funktioniertmulticolumn
Antwort1
Anstelle von \_
können Sie Folgendes verwenden \string_
:
\documentclass{article}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\string_cke[x]\ |\ dfi\string_cs\string_n[x]\ |\ dfi\string_act\string_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
Antwort2
Der natürlichste Weg ist die Verwendung von verbatim
(siehe unten). Aber lassen Sie uns zunächst kurz erklären, was passiert.
Bei OT1
der Kodierung wird \textunderscore
, die \_
auf basiert, mithilfe einer Regel vorgetäuscht (es ist kein Zeichen der aktuellen Schriftart). Beim Umschalten auf T1
die Kodierung durch Hinzufügen \usepackage[T1]{fontenc}
wird \_
ein tatsächliches Zeichen der durch ausgewählten Schriftart verwendet \ttfamily
:
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\ttfamily
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\end{document}
Die Unterstriche haben jetzt dieselbe Größe wie andere Zeichen. Wie Barbara Beeton jedoch anmerkt, werden aufeinanderfolgende Bindestriche im nicht wörtlichen Modus zu Ligaturen kombiniert (Halbgeviertstrich mit --
, Geviertstrich mit ---
). Wenn wir Ligaturen ausschalten – was unter anderem der verbatim
Fall ist –, haben alle Zeilen die erwartete Länge:
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\begingroup
\ttfamily\makeatletter\@noligs\makeatother
Test \\
.------------.-------------.--------------.\\
\ |\ abcdefghig\ |\ klmnopqrstu\ |\ vwxyzabcdefg\ | \\
.------------.-------------.--------------.\\
\ |\ abc[e]ghig\ |\ klm[o]qrstu\ |\ vwxyza[c]efg\ | \\
.------------.-------------.--------------.\\
\ |\ dfi\_cke[x]\ |\ dfi\_cs\_n[x]\ |\ dfi\_act\_n[x]\ | \\
.------------.-------------.--------------.
\endgroup
\end{document}
In der Praxis verbatim
ist die Verwendung in solchen Situationen jedoch natürlicher. Die obigen Beispiele sollen nur helfen zu verstehen, was hinter den Kulissen passiert. Daher würde ich hier Folgendes tun:
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\begin{verbatim}
Test
.-------------.-------------.--------------.
| abcdefghig | klmnopqrstu | vwxyzabcdefg |
.-------------.-------------.--------------.
| abc[e]ghig | klm[o]qrstu | vwxyza[c]efg |
.-------------.-------------.--------------.
| dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] |
.-------------.-------------.--------------.
\end{verbatim}
\end{document}
Beachten Sie, dass „Test“ innerhalb der verbatim
Umgebung liegt und daher in diesem Fall keine Absatzeinrückung erhält.
Technische Details
Für Interessierte: Die Implementierung der \textunderscore
in der OT1
mit erhaltenen Kodierung \tracingmacros=1\tracingonline=1
bewirkt:
\leavevmode \kern .06em\vbox{\hrule width .3em}
Während T1
es sich bei der Kodierung letztendlich um eine einfache Funktion handelt \char"5F
(also einen Befehl, der der aktuellen Liste ein Zeichenfeld hinzufügt, das das Zeichen mit dem Hexadezimalcode 5F in der aktuellen Schriftart enthält).
Antwort3
Ich würde verwenden verbatim
:
\documentclass{article}
\begin{document}
\begin{verbatim}
Test
.------------.-------------.--------------.
| abcdefghig | klmnopqrstu | vwxyzabcdefg |
.------------.-------------.--------------.
| abc[e]ghig | klm[o]qrstu | vwxyza[c]efg |
.------------.-------------.--------------.
| dfi_cke[x] | dfi_cs_n[x] | dfi_act_n[x] |
.------------.-------------.--------------.
\end{verbatim}
\end{document}