pdf 书签(章节标题)中 \ref 的自动 \texorpdfstring

pdf 书签(章节标题)中 \ref 的自动 \texorpdfstring
\section{Proof of Theorem~\ref{thm:main}}

没有生成正确的 pdf 书签(使用该hyperref包)。

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

会得到想要的结果(\texorpdfstring 和 Header 设置),但由于“ 3.1.7”是硬编码的,所以每次重新排列文本时我都必须更改此行代码。

我知道许多数学公式不能用作 pdf 字符串(pdf 书签),因为它们没有 Unicode 表示形式(在章节标题中自动添加 \texorpdfstring 作为数学模式)。

但是“定理 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 书签)

hypperref(PS:我认为在包中包含这样的代码会非常棒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}

这个解决方案针对不同的问题在章节标题中隐藏 cleveref 链接也完美地回答了这个问题。

Ulrike Fischer 的解决方案https://tex.stackexchange.com/a/504969/128042如果您不能使用该crossreftools包,则是一个很好的替代方案。

相关内容