Problem mit Unterstrichen in \newcommand

Problem mit Unterstrichen in \newcommand

Ich schreibe gerade meine Abschlussarbeit und habe jedes Kapitel als separates Projekt. Man hat mir gesagt, ich sollte sie zusammenführen, aber das möchte ich im Moment nicht, da ich das überfordern würde. Ich möchte Beschriftungen von Abbildungen, Tabellen, Gleichungen usw. referenzieren können, die sich in anderen Kapiteln, also anderen Projekten befinden, damit die Querverweise problemlos funktionieren, wenn ich die Kapitel schließlich zu einem einzigen Projekt verknüpfe. Wenn ich in dieser Phase die Referenzen hinzufüge, erhalte ich natürlich Warnungen, weil die Referenz nicht existiert. Was ich möchte, ist ein Befehl, den ich ein- und ausschalten kann, um diese externen Referenzen ein- und auszuschalten. Ich nenne diesen Befehl \refext„externe Referenz“. Anfangs hatte ich Code, der so aussah:

Option 1: Nichts tun, ich bin nicht bereit, die Referenz als Worte ausgeben

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

Option 2: Ja, machen Sie weiter und verweisen Sie darauf. Ich bin bereit, all diese Dinge in einem einzigen Dokument zusammenzustellen:

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

Ich würde den Befehl, den ich nicht verwende, auskommentieren, und auf diese Weise wäre er „umschaltbar“. Er würde entweder den Namen des Etiketts ausdrucken oder es als normale Referenz behandeln.

Dies funktioniert, wenn die Bezeichnung aus einem einzelnen Wort besteht. Allerdings funktioniert es nicht, wenn die Bezeichnung im Titel einen Unterstrich enthält – was bei allen meinen Bezeichnungen der Fall ist.

Nach einigem Lesen bin ich auf diese Antwort gestoßen, die dem ähnelt, was ich tun möchte: Wie kann ich einen Unterstrich richtig an \newcommand übergeben?

Ich habe jedoch Folgendes versucht und es funktioniert bei mir nicht:

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

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

Ich erhalte die Fehlermeldung „Dokumentanfang fehlt“, obwohl ich natürlich meine Regeln definieren möchte, bevor ich mit meinem Dokument beginne. Das Dokument wird problemlos kompiliert, da sich alle anderen \newcommandS an derselben Stelle befinden.

Catcode 12 funktioniert auch nicht. Ich habe ihn durch 11 ersetzt, weil ich dachte, es wäre besser, wenn er den Unterstrich als Text behandeln würde.

Ich weiß nicht wirklich, was ich hier mache! Ich kenne mich mit Latex nicht so gut aus und bin etwas blind in diesen neuen Befehlsbereich eingestiegen! Für Hilfe wäre ich sehr dankbar – danke!

Antwort1

Unterstriche können Teil einer Beschriftung sein, ihr Ausdruck ist jedoch normalerweise nicht zulässig, da der Unterstrich im Fließtext zur Kennzeichnung tiefgestellter Ziffern in mathematischen Formeln verwendet wird.

Option 2 sollte kein Problem darstellen: Sie ersetzen einfach \refdurch \refext. Für Option 1, wenn Sie die Schlüssel und nicht die Referenz sehen möchten, können Sie Folgendes tun:

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

Der \detokenizeBefehl macht unter anderem _druckbar. Ich habe ihn auch hinzugefügt, \textttum den Schlüssel im Text deutlicher hervorzuheben.

Kleines Beispiel (ich verwende Option 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}

Bildbeschreibung hier eingeben

verwandte Informationen