Technische Details

Technische Details

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:

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 verbatimist keine Option, weil es nicht funktioniertmulticolumn

Antwort1

Anstelle von \_können Sie Folgendes verwenden \string_:

Bildbeschreibung hier eingeben

\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 OT1der Kodierung wird \textunderscore, die \_auf basiert, mithilfe einer Regel vorgetäuscht (es ist kein Zeichen der aktuellen Schriftart). Beim Umschalten auf T1die 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}

Bildbeschreibung hier eingeben

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 verbatimFall 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}

Bildbeschreibung hier eingeben

In der Praxis verbatimist 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}

Mit wörtlicher

Beachten Sie, dass „Test“ innerhalb der verbatimUmgebung liegt und daher in diesem Fall keine Absatzeinrückung erhält.

Technische Details

Für Interessierte: Die Implementierung der \textunderscorein der OT1mit erhaltenen Kodierung \tracingmacros=1\tracingonline=1bewirkt:

\leavevmode \kern .06em\vbox{\hrule width .3em}

Während T1es 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:

Bildbeschreibung hier eingeben

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

verwandte Informationen