automatischer \texorpdfstring für \ref in PDF-Lesezeichen (Abschnittstitel)

automatischer \texorpdfstring für \ref in PDF-Lesezeichen (Abschnittstitel)
\section{Proof of Theorem~\ref{thm:main}}

erstellt nicht das richtige PDF-Lesezeichen (mithilfe des hyperrefPakets).

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

würde das gewünschte Ergebnis liefern (\texorpdfstring und Header-Einstellung), aber da " 3.1.7" fest codiert ist, muss ich diese Codezeile jedes Mal ändern, wenn ich meinen Text neu anordne.

Ich verstehe, dass viele mathematische Formeln nicht als PDF-Strings (PDF-Lesezeichen) verwendet werden können, da sie keine Unicode-Darstellung haben (Automatisch \texorpdfstring für den Mathematikmodus in Abschnittstiteln hinzufügen).

Aber „Theorem 3.1.7“ enthält nur einfache ASCII-Symbole. Daher sollte es zumindest theoretisch möglich sein, dafür eine automatische Lösung zu implementieren.

Idealerweise hätte ich gerne Code, der es mir ermöglicht, einfach Folgendes zu schreiben:

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

(durch Verwendung des cleverefPakets, aber eine Lösung für \refwäre auch schon sehr hilfreich)

Beispiel:

\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}

(dieser Code liefert nicht die richtigen PDF-Lesezeichen)

(PS: Ich denke, es wäre wirklich toll, einen solchen Code in das hypperrefoder in das cleverefPaket aufzunehmen)

Antwort1

Sie können die mit einem Sternchen versehene Version von \ref verwenden:

\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}

Antwort2

@Phelype Oleinik hat einen Link zu einer sehr guten Lösung veröffentlichthttps://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}

Diese Lösung für die andere FrageClevereEf-Links im Abschnittstitel verbergenbeantwortet diese Frage auch perfekt.

Ulrike Fischer Lösunghttps://tex.stackexchange.com/a/504969/128042ist eine tolle Alternative, wenn Sie das crossreftoolsPaket nicht nutzen können.

verwandte Informationen