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 \refext
de '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 \newcommand
no 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 \ref
por \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 \detokenize
comando irá, além de outras coisas, tornar _
imprimível. Acrescentei também \texttt
para 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}