Problema com sublinhados em \newcommand

Problema com sublinhados em \newcommand

Atualmente estou escrevendo minha tese e tenho cada capítulo como um projeto separado. Disseram-me que deveria juntá-los, mas não quero fazê-lo por enquanto, pois acharia isso muito difícil. Eu gostaria de poder fazer referência a rótulos de figuras, tabelas, equações, etc., que estão em outros capítulos, ou seja, outros projetos, para que, quando eu eventualmente vincular os capítulos como um único projeto, a referência cruzada funcione bem. Se eu adicionar as referências neste estágio, obviamente recebo avisos porque a referência não existe. O que eu gostaria de fazer é ter um comando que possa ligar e desligar, que ligue e desligue essas referências externas. Eu chamo esse comando \refextde 'referência externa'. Inicialmente, eu tinha um código parecido com:

Opção 1: Não faça nada, não estou pronto, produza a referência como palavras

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

Opção 2: Sim, vá em frente e faça referência - estou pronto para compilar todas essas coisas juntas como um único documento:

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

Eu comentaria o comando que não estava usando e, desta forma, era 'alternável'. Ele imprimiria o nome do rótulo ou o trataria como uma referência comum.

Isso funciona se o rótulo for uma única palavra. No entanto, isso não funciona se o rótulo contiver um sublinhado no título - o que acontece com todos os meus rótulos.

Depois de alguma leitura, encontrei esta resposta que é semelhante ao que quero fazer: Como posso passar o sublinhado para \newcommand corretamente?

No entanto, tentei isso e não funciona para mim:

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

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

Recebo o erro 'documento inicial ausente', mas é claro que quero definir minhas regras antes de iniciar meu documento. O documento compila bem com todos os meus outros \newcommandno mesmo lugar.

Catcode 12 também não funciona. Troquei por 11 porque pensei que seria melhor se tratasse o sublinhado como texto.

Eu realmente não sei o que estou fazendo aqui! Não sou muito adepto do látex e entrei um pouco cego nesta nova área de comandos! A ajuda seria muito apreciada - obrigado!

Responder1

Os sublinhados podem fazer parte de uma etiqueta, mas normalmente não é permitido imprimi-los, porque o sublinhado é usado em texto corrido para denotar subscritos em fórmulas matemáticas.

A opção 2 não deve causar problemas: você está apenas substituindo \refpor \refext. Para a opção 1, quando quiser ver as chaves em vez da referência, você pode fazer

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

O \detokenizecomando irá, além de outras coisas, tornar _imprimível. Acrescentei também \textttpara tornar a chave mais evidente no texto.

Pequeno exemplo (usarei a opção 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}

insira a descrição da imagem aqui

informação relacionada