タイプライターフォントのエスケープ文字

タイプライターフォントのエスケープ文字

これを修正する方法はいくつか知っていますが (例\usepackage[T1]{fontenc})、次の例で何が起こっているのか理解したいと思います。

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

エスケープ文字

  • なぜ中括弧、アンダースコア、またはバックスラッシュを取得しようとする\ttfamilyと、通常のローマ字記号に置き換えられるのでしょうか? 逐語モードではグリフにアクセスできるため、グリフが欠落しているわけではないことは明らかです。

  • 逐語モードではこれらのグリフに具体的にどのようにアクセスするのでしょうか?

  • 中括弧とバックスラッシュを削除して、アンダースコアだけが残る「問題」文字にすると、置換がまだ行われているにもかかわらず、フォントの警告が表示されなくなります。これはなぜでしょうか?

答え1

\verbそして、verbatimフォントにはこれらの文字が ASCII 位置にあり、特別な定義なしで文字がローカルで catcode 12 (句読点など) になるものと想定します。

\textbackslash(および関連) は、エンコーディング固有のコマンドとして定義されており、(元の TeX エンコーディングに対して健全な印象を与えるために) LaTeX は、エンコーディングがバックスラッシュ文字を持たないOT1エンコーディングであると想定しています。そのため、デフォルトの定義では が使用されます (数式フォントを使用)。 はファミリを変更しますが、エンコーディングは変更しないため、その場合、フォントが実際には異なる方法でエンコードされているにもかかわらず、OT1 定義が取得されます。cmr10OT\ttfamilycmtt

T1T1 エンコードとラベル付けされたフォントは実際には同じエンコードを持つため、動作はより良好になります。

\_\textunderscoreデフォルトの定義ではフォントをまったく使用せず、水平線のみを使用するため、異なります。

関連情報