\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}}

我收到錯誤“缺少開始文檔”,但是我當然想在開始文檔之前定義我的規則。該文檔編譯良好,我的所有其他\newcommand文檔都在同一位置。

Catcode 12 也不起作用。我將其切換為 11,因為我認為將下劃線視為文字可能會更好。

我真的不知道我在這裡做什麼!我不太擅長乳膠,而且我進入這個新命令區域有點盲目!非常感謝您的幫助 - 謝謝!

答案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}

在此輸入影像描述

相關內容