编辑

编辑

下划线字符_的类别代码为 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允许_在普通文本中使用下划线而做了一些令人讨厌的事情时。

相关内容