автоматическая \texorpdfstring для \ref в закладках pdf (названия разделов)

автоматическая \texorpdfstring для \ref в закладках pdf (названия разделов)
\section{Proof of Theorem~\ref{thm:main}}

не создает правильную закладку PDF (используя пакет hyperref).

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

даст желаемый результат (\texorpdfstring и настройка заголовка), но поскольку " 3.1.7" жестко закодировано, мне приходится менять эту строку кода каждый раз, когда я переставляю текст.

Я понимаю, что многие математические форумы не могут быть использованы в качестве строк PDF (закладок PDF), поскольку они не имеют представления Unicode (Автоматически добавлять \texorpdfstring для math-mode в заголовки разделов).

Но "Теорема 3.1.7" содержит только простые символы ASCII. Так что, по крайней мере, теоретически, должно быть возможно реализовать автоматическое решение для этого.

В идеале я хотел бы иметь код, который позволял бы мне просто написать:

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

(используя cleverefпакет, но решение для \refуже было бы очень полезно)

Пример:

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

(этот код не дает правильных закладок PDF)

(P.S.: Я думаю, было бы здорово включить такой код в hypperrefили в cleverefпакет)

решение1

Вы можете использовать отмеченную звездочкой версию \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}

решение2

@Phelype Oleinik дал ссылку на очень хорошее решениеhttps://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}

Это решение другого вопросаСкрыть умные ссылки в заголовке разделатакже прекрасно отвечает на этот вопрос.

Решение Ульрике Фишерhttps://tex.stackexchange.com/a/504969/128042является прекрасной альтернативой, если вы не можете использовать пакет crossreftools.

Связанный контент