你能解释一下为什么吗
a\_b {\ttfamily a\_b} \\
\chardef\_=`\_
a\_b {\ttfamily a\_b}
生产
?
我想在普通文本中使用短下划线,在等宽字体中使用长下划线。我无法更改{\ttfamily a\_b}
。其他的a\_b
我可以更改。
感谢您的帮助!
编辑:我意识到这a\textunderscore b
解决了我在文本中遇到的直接问题。我仍然想知道这个神秘的点是从哪里来的。
在数学模式中,
\chardef\_=`\_
$a\_b$
LaTeX 在我的安装中完全停止编译(没有错误,只是停止)。
答案1
您的\chardef
定义\_
为位于位置“5F(下划线字符的 ASCII)的字符,而该位置恰好包含神秘的点。至少在 cmr10 中是这样的,显然在您使用的字体中也是如此(运行(pdf)tex testfont
以为您感兴趣的任何字体制作字体表)。纯 TeX 中的标准定义\_
只是排版一些合适宽度的规则,因为 cmr 字体中没有任何下划线字形。我认为 LaTeX 中也有类似的东西,尽管我还没有费心去挖掘其中的\textunderscore
奥秘。
不过,我不太清楚你能做什么。整个 LaTeX 字体选择业务是我的 TeX foo 的弱点。
答案2
在固定宽度字体中,每个符号的宽度都应相同。因此,长下划线有点不寻常。无论如何:在 OT1 编码(您显然正在使用)中\_
内部调用\textunderscore
,这反过来又定义为宽度为 0.3em 和一些空间的规则。您可以重新定义\_
以获得更长的规则并\textunderscore
在其他地方使用:
\documentclass{book}
\DeclareTextCommand{\_}{OT1}{%
\leavevmode \kern.06em\vbox{\hrule width.6em}}
\begin{document}
a\textunderscore b {\ttfamily a\_b}
\end{document}