私は現在論文を執筆中で、各章を別々のプロジェクトとして扱っています。それらを結合すべきだと言われたのですが、今はやりたくないです。なぜなら、それは大変なことだからです。他の章、つまり他のプロジェクトにある図、表、方程式などのラベルを参照できるようにしたいのです。そうすれば、最終的に章を 1 つのプロジェクトとしてリンクしたときに、相互参照がすべて正常に機能します。この段階で参照を追加すると、参照が存在しないため、当然警告が表示されます。私がやりたいのは、これらの外部参照のオン/オフを切り替えることができるコマンドです。このコマンドを\refext
「外部参照」と呼びます。最初は、次のようなコードでした。
オプション1: 何もしない、準備ができていない、参照を単語として出力する
\newcommand{\refext}[1]{Ref. #1}
オプション 2: はい、どうぞ参照してください。これらすべてを 1 つのドキュメントにまとめる準備ができています。
\newcommand{\refext}[1]{\ref{#1}}
使用していないコマンドをコメントアウトすると、ラベルの名前を出力するか、通常の参照として扱うかを切り替えることができます。
これは、ラベルが 1 つの単語である場合に機能します。ただし、ラベルのタイトルにアンダースコアが含まれている場合は機能しません。これは、すべてのラベルに含まれています。
いくつか読んだ後、私がやりたいことと似たこの答えを見つけました: アンダースコアを \newcommand に適切に渡すにはどうすればよいですか?
しかし、私はこれを試してみましたが、うまくいきませんでした:
\newcommand{\refext}{\begingroup\catcode`\_=11 \dorefext}
\newcommand{\dorefext}[1]{\ref{#1}}
「ドキュメントの開始部分が見つかりません」というエラーが表示されますが、もちろん、ドキュメントを開始する前にルールを定義したいです。他のすべての要素が\newcommand
同じ場所にあるため、ドキュメントは正常にコンパイルされます。
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}