Problema con guiones bajos en \newcommand

Problema con guiones bajos en \newcommand

Actualmente estoy escribiendo mi tesis y tengo cada capítulo como un proyecto separado. Me han dicho que debería unirme a ellos, pero no quiero hacerlo por ahora porque lo encontraría abrumador. Me gustaría poder hacer referencia a etiquetas de figuras, tablas, ecuaciones, etc. que se encuentran en otros capítulos, es decir, otros proyectos, de modo que cuando finalmente vincule los capítulos como un solo proyecto, las referencias cruzadas funcionen bien. Si agrego las referencias en esta etapa, obviamente recibo advertencias porque la referencia no existe. Lo que me gustaría hacer es tener un comando que pueda activar y desactivar y que active y desactive estas referencias externas. Llamo a este comando \refextpara 'referencia externa'. Inicialmente, tenía un código que se parecía a:

Opción 1: no hacer nada, no estoy listo, generar la referencia como palabras

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

Opción 2: Sí, continúe y haga referencia. Estoy listo para compilar todas estas cosas en un solo documento:

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

Comentaba el comando que no estaba usando y de esta manera era "conmutable". Imprimiría el nombre de la etiqueta o la trataría como una referencia ordinaria.

Esto funciona si la etiqueta es una sola palabra. Sin embargo, esto no funciona si la etiqueta contiene un guión bajo en el título, lo que hacen todas mis etiquetas.

Después de leer un poco, encontré esta respuesta que es similar a lo que quiero hacer: ¿Cómo puedo pasar un guión bajo a \newcommand correctamente?

Sin embargo he probado esto y no me funciona:

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

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

Recibo el error "Falta el documento inicial". Sin embargo, por supuesto, quiero definir mis reglas antes de comenzar mi documento. El documento se compila bien y todos los demás \newcommandestán en el mismo lugar.

Catcode 12 tampoco funciona. Lo cambié por 11 porque pensé que sería mejor si tratara el guión bajo como texto.

¡Realmente no sé qué estoy haciendo aquí! ¡No soy muy experto en látex y he entrado un poco a ciegas en esta nueva zona de comandos! La ayuda sería muy apreciada, ¡gracias!

Respuesta1

Los guiones bajos pueden ser parte de una etiqueta, pero normalmente no se permite imprimirlos porque el guión bajo se usa en el texto para indicar subíndices en fórmulas matemáticas.

La opción 2 no debería dar ningún problema: simplemente la estás reemplazando \refcon \refext. Para la opción 1, cuando desee ver las claves en lugar de la referencia, puede hacer

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

El \detokenizecomando, entre otras cosas, lo hará _imprimible. Agregué también \textttpara hacer más evidente la clave en el texto.

Pequeño ejemplo (usaré la opción 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}

ingrese la descripción de la imagen aquí

información relacionada