打字机字体中的转义字符

打字机字体中的转义字符

我知道有很多方法可以解决这个问题(例如\usepackage[T1]{fontenc}),但我想了解以下例子中发生的情况。

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

转义字符

  • 为什么尝试获取\ttfamily括号、下划线或反斜杠会导致替换普通罗马符号?字形显然没有丢失,因为逐字模式可以访问它们。

  • 逐字模式究竟如何访问这些字形?

  • 删除括号和反斜杠,这样下划线就成为唯一剩下的“问题”字符,尽管替换仍在进行,但字体警告已消失。这是为什么?

答案1

\verbverbatim假设字体在其 ascii 位置上有这些字符,并且在本地使这些字符成为 catcode 12(如标点符号),没有特殊定义。

\textbackslash(和朋友)被定义为特定于编码的命令,并且(为了假装对原始 TeX 编码保持理智)LaTeX 假设编码是没有反斜杠字符OT1的编码。因此在默认定义中使用(使用数学字体)。更改系列但不更改编码,因此在这种情况下,即使字体的编码方式不同,您也会获得 OT1 定义。cmr10OT\ttfamilycmtt

事情进展得更好,T1因为标记为 T1 编码的字体实际上具有相同的编码。

\_是不同的,因为它\textunderscore有一个默认定义,它根本不使用字体,而是使用水平规则。

相关内容