\texorpdfstring automático para \ref em marcadores de pdf (títulos de seção)

\texorpdfstring automático para \ref em marcadores de pdf (títulos de seção)
\section{Proof of Theorem~\ref{thm:main}}

não produz o marcador de PDF correto (usando o hyperrefpacote).

\section{Proof of \texorpdfstring{Theorem~\ref{thm:main}}{Theorem 3.1.7}}

daria o resultado desejado (\texorpdfstring e configuração de cabeçalho), mas como " 3.1.7" é codificado, tenho que alterar essa linha de código toda vez que reorganizo meu texto.

Entendo que muitos fóruns matemáticos não podem ser usados ​​como strings de PDF (marcadores de PDF), pois não possuem uma representação Unicode (Adicionar automaticamente \texorpdfstring para modo matemático nos títulos das seções).

Mas o "Teorema 3.1.7" contém apenas símbolos ASCII simples. Então, pelo menos teoricamente, deveria ser possível implementar uma solução automática para isso.

Idealmente, eu gostaria de ter um código que me permitisse apenas escrever:

\section{Proof of \Cref{thm:main}}

(usando o cleverefpacote, mas uma solução \refjá seria muito útil também)

Exemplo:

\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}[section]


\begin{document}

    \begin{theorem}\label{thm:main}
        text
    \end{theorem}

many pages

\section{Proof of \Cref{thm:main}}  
\end{document}

(este código não fornece os marcadores de PDF corretos)

(PS: Acho que seria ótimo incluir esse código no hypperrefou no cleverefpacote)

Responder1

Você pode usar a versão com estrela de \ref:

\documentclass{article}
\newtheorem{theorem}{theorem}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\section{Proof of Theorem~\texorpdfstring{\ref{thm:main}}{\ref*{thm:main}}}
\begin{theorem}
  \label{thm:main} some theorem
\end{theorem}
\end{document}

Responder2

@Phelype Oleinik vinculado a uma solução muito boahttps://tex.stackexchange.com/a/485979/128042

\documentclass{article}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}[section]
\usepackage{crossreftools}

\pdfstringdefDisableCommands{%
    \let\Cref\crtCref
    \let\cref\crtcref
}
\begin{document}

    \begin{theorem}\label{thm:main}
        text
    \end{theorem}

many pages

\section{Proof of \Cref{thm:main}}  
\end{document}

Esta solução para a questão diferenteOcultar links inteligentes no título da seçãoresponde a esta pergunta também perfeitamente.

Solução Ulrike Fischerhttps://tex.stackexchange.com/a/504969/128042é uma ótima alternativa se você não puder usar o crossreftoolspacote.

informação relacionada