
モノフォントのアンダースコアの問題に苦労しています。他の記号よりも短いようです。例:
\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}
結果:
ご覧のとおり、最後の行(アンダースコア付き)は左にシフトされています。
PSいいえ、ネイティブテーブルは使用できません。これはユーザーが作成したもので、そのまま挿入する必要があります。PSSはverbatim
内部では機能しないため、オプションではありません。multicolumn
答え1
の代わりに\_
、以下を使用できます\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}
答え2
最も自然な方法は、verbatim
(下記参照) を使用することです。しかし、まず何が起こるかを少し説明しましょう。
OT1
エンコーディングでは\textunderscore
、\_
に依存する は、ルールを使用して偽装されます (現在のフォントの文字ではありません)。T1
を追加してエンコーディングに切り替えると、 で選択されたフォントの実際の文字が使用され\usepackage[T1]{fontenc}
ます。\_
\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}
アンダースコアは、他の文字と同じサイズになりました。ただし、Barbara Beeton が指摘したように、非逐語モードでは、連続するハイフンは合字 (en ダッシュは--
、em ダッシュは---
) に結合されます。合字をオフにすると (これが機能の 1 つですverbatim
)、すべての行が期待どおりの長さになります。
\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}
しかし実際には、verbatim
このような状況では を使用する方が自然です。上記の例は、舞台裏で何が起きているのか理解しやすくするためのものでした。したがって、ここで私が行うことは次のようになります。
\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}
「Test」はverbatim
環境内にあるため、この場合は段落のインデントは行われないことに注意してください。
技術的な詳細
興味のある方のために、で得られる エンコーディング\textunderscore
でのの実装は次のようになります。OT1
\tracingmacros=1\tracingonline=1
\leavevmode \kern .06em\vbox{\hrule width .3em}
一方、T1
エンコードでは、最終的には単純になります\char"5F
(つまり、現在のフォントの 16 進コード 5F の文字を含む文字ボックスを現在のリストに追加するコマンド)。
答え3
私が使うのは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}