\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
包,则是一个很好的替代方案。