下划线字符_
的类别代码为 8,因为它在 TeX 中具有特殊含义和特殊作用。
在 LaTeX 文档主体中包含下划线通常会导致错误,Missing $ inserted
因为 TeX 认为该字符位于数学排版上下文中。
不过,我注意到,在命令的参数中包含下划线字符\cite
不会使编译器失败。例如,\cite{forensic_engineering}
在文件中使用相应的键.bib
将编译成功并且不会抛出任何错误。
有人能解释一下为什么会这样吗?我检查了 cite 包文档但它没有提到下划线的特殊处理。
在此先感谢您的帮助。
编辑
将带有下划线的参数传递给用户定义的控制序列似乎会产生错误! Missing $ inserted
:
\documentclass{article}
\newcommand\test[1]{hello #1}
\begin{document}
\test{bla_bli}
\end{document}
答案1
使用_
for排版不允许使用文本,因为它在数学公式中起着特殊作用。这与\alpha
在普通文本中引发错误的情况非常相似(LuaTeX 除外,但这是另一回事)。
当在不同情况下使用时,例如引用键或标签,下划线通常是安全的。1
为什么?技术原因是引用键和标签被包裹在\csname...\endcsname
指令中,忽略了字符的类别代码(13 个除外)。但是,上面更简单的“规则”,即“排版与非排版”,可能更容易记住。
脚注
1例外:当某个包为了underscore
允许_
在普通文本中使用下划线而做了一些令人讨厌的事情时。