\newcommand 中的下划线问题

\newcommand 中的下划线问题

我目前正在撰写论文,将每一章都作为一个单独的项目 - 有人告诉我应该将它们合并起来,但我现在还不想这样做,因为我觉得这会让人不知所措。我希望能够引用其他章节(即其他项目)中的图表、表格、方程式等的标签,这样当我最终将这些章节链接为一个项目时,交叉引用就可以正常工作。如果我在此阶段添加参考文献,我显然会收到警告,因为参考文献不存在。我想要做的是有一个可以打开和关闭的命令,可以打开和关闭这些外部引用。我称此命令\refext为“外部引用”。最初,我的代码如下:

选项 1:什么也不做,我还没准备好,将参考输出为文字

\newcommand{\refext}[1]{Ref. #1}

选项 2:是的,继续参考 - 我准备将所有这些内容编译在一起作为一份文档:

\newcommand{\refext}[1]{\ref{#1}}

我会注释掉我没有使用的命令,这样它就是“可切换的”,它要么打印出标签的名称,要么将其视为普通参考。

如果标签是单个单词,这种方法是可行的。但是,如果标签的标题中包含下划线(我的所有标签都是这样),这种方法就行不通了。

经过一些阅读,我遇到了这个答案,它与我想要做的类似: 我如何才能正确地将下划线传递给 \newcommand?

但是,我尝试过这个并且它对我来说不起作用:

\newcommand{\refext}{\begingroup\catcode`\_=11 \dorefext}

\newcommand{\dorefext}[1]{\ref{#1}}

我收到错误“缺少开始文档”,但是我当然希望在开始文档之前定义我的规则。文档编译良好,所有其他\newcommands 都位于同一位置。

Catcode 12 也不起作用。我将其替换为 11,因为我认为如果将下划线视为文本可能会更好。

我真的不知道我在这里做什么!我不太擅长使用 latex,而且我对这个新命令领域有点盲目!非常感谢您的帮助 - 谢谢!

答案1

下划线可以作为标签的一部分,但通常不允许打印它们,因为下划线在运行文本中用于表示数学公式中的下标。

选项 2 应该不会有问题:你只需\ref用替换\refext即可。对于选项 1,当你想查看键而不是引用时,你可以这样做

\newcommand{\refext}[1]{Ref.~\texttt{\detokenize{#1}}}

\detokenize除其他功能外,该命令还将使其_可打印。我还添加了\texttt以使文本中的关键字更加明显。

小例子(我将使用选项 2):

\documentclass{article}

\newcommand{\refext}[1]{Ref.~\texttt{\detokenize{#1}}}

\begin{document}

Here's some text where we cite \refext{some_thing} and go on

\end{document}

enter image description here

相关内容