我遇到了一些与我之前的问题答案的应用相关的问题,这些问题可以在这里。
下面有一个 MWE,我在这里\clearpage
广泛使用,因为我注意到当\hypertarget
它不能正常工作时,它会链接到文档的第一页。
问题:
当我使用[\hypertarget{...}{...}]
along with\begin{proof}
或 时\begin{namedtheorem}
,文本中不会出现额外的圆括号。但是,当我将它与
\begin{step}
、\begin{claim}
或一起使用时\begin{myclaim}
,会出现两个额外的圆形括号。有没有什么办法可以去掉那些圆形牙套?
\documentclass[12pt]{article}
\usepackage{amsthm,xcolor}
\usepackage[colorlinks, linkcolor=red]{hyperref}
\usepackage[noabbrev,nameinlink]{cleveref}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\theoremstyle{remark}
\newtheorem{claim}{Claim}
\newtheorem*{myclaim}{Claim}
\newtheorem{step}{Step}
\newtheoremstyle{named}%
{}{}{\itshape}{}{\bfseries}{.}{.5em}{\thmnote{#3}}
\theoremstyle{named}
\newtheorem*{namedtheorem}{Theorem}
\newcommand{\aref}[2][blue]{%
\begingroup%
\hypersetup{linkcolor=#1}%
\cref{#2}%
\endgroup}
\newcommand\bref[3][blue]{%
\begingroup%
\hypersetup{linkcolor=#1}%
\hyperlink{#2}{#3}%
\endgroup}
\begin{document}
\section{One}
LaTeX Problems.
\clearpage
\section{Two} \label{section:two}
\begin{theorem}[Bla]\label{thm:bla}
Bla.
\end{theorem}
\begin{proof}[\hypertarget{proof:1}{Proof.}]
Bla
\end{proof}
\begin{namedtheorem}[\hypertarget{thm:mystery}{Mystery theorem}]
A mysterious theorem
\end{namedtheorem}
\begin{proof}
\begin{step}[\hypertarget{step1}{}]
Here step 1.
\end{step}
\begin{step}
Here step 2.
\end{step}
\begin{claim}[\hypertarget{claim1}{}]
A numbered claim.
\end{claim}
\end{proof}
\clearpage
\begin{theorem}
Bla bla
\end{theorem}
\begin{proof}
\begin{myclaim}[\hypertarget{myclaim}{}]
An unnumbered claim.
\end{myclaim}
\end{proof}
\clearpage
\section{Three}
In \cref{section:two}, we have both a \aref{thm:bla}, a \bref{proof:1}{proof}, \bref{step1}{step 1}, a numbered \bref{claim1}{claim 1}, and a single \bref{myclaim}{claim}.
\end{document}
感谢您的时间。
答案1
你写了:
但是,当我将它与
\begin{step}
、\begin{claim}
或一起使用时\begin{myclaim}
,会出现两个额外的圆括号。有没有什么办法可以去掉那些圆形牙套?
不要\hypertarget{...}{}
用方括号([
和]
)将相应的语句括起来。否则,amsthm
将把材料解释为指示相应定理类环境的可选“标题”。换句话说,只有当的第二个参数\hypertarget
非空时才使用方括号。
更好地理解这一点的另一种方法是考虑代码中第二个参数\hypertarget
非空的两种情况:
\begin{proof}[\hypertarget{proof:1}{Proof.}]
和
\begin{namedtheorem}[\hypertarget{thm:mystery}{Mystery theorem}]
在这些情况下,方括号向 LaTeX 表明应分别使用“证明。”和“神秘定理”作为相应环境的标题。但
\begin{step}\hypertarget{step1}{}
\begin{claim}\hypertarget{claim1}{}
\begin{myclaim}\hypertarget{myclaim}{}
这就是为什么你不应该提供方括号。
您还写道:
下面有一个 MWE,我在这里
\clearpage
广泛使用,因为我注意到当\hypertarget
它不能正常工作时,它会链接到文档的第一页。
发生这种情况时,请尝试在环境或通过和\phantomsection
交叉引用的其他项目之前立即插入指令。\hypertarget
\hyperlink
答案2
编号实体不需要额外的\hypertarget
,因为hyperref
的位置已经设置了一个锚点\refstepcounter
。 A\label
足以捕获锚点。\hyperref[<label>]{<text>}
可用于设置指向标签的任意文本。
未编号的实体更棘手。由于通常没有锚点,可以使用 放置锚点\phantomsection
。位置是棘手的部分。由于存在问题,定理环境的可选参数不是最佳选择。以下示例将锚点设置在垂直列表中前第一段带有定理标题的段落通过 实现\vadjust pre{...}
,这是 pdfTeX 引擎的一个功能。
\documentclass[12pt]{article}
\usepackage{amsthm,xcolor}
\usepackage[colorlinks, linkcolor=red]{hyperref}
\usepackage[noabbrev,nameinlink]{cleveref}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\theoremstyle{remark}
\newtheorem{claim}{Claim}
\newtheorem*{myclaim}{Claim}
\newtheorem{step}{Step}
\newtheoremstyle{named}%
{}{}{\itshape}{}{\bfseries}{.}{.5em}{\thmnote{#3}}
\theoremstyle{named}
\newtheorem*{namedtheorem}{Theorem}
\newcommand{\aref}[2][blue]{%
\begingroup%
\hypersetup{linkcolor={#1}}%
\cref{#2}%
\endgroup
}
\newcommand\bref[3][blue]{%
\begingroup%
\hypersetup{linkcolor={#1}}%
% \hyperlink{#2}{#3}%
\hyperref[{#2}]{#3}%
\endgroup
}
\newcommand*{\vprelabel}[1]{%
\leavevmode
\vadjust pre{\phantomsection\label{#1}}%
\ignorespaces
}
\begin{document}
\section{One}
\LaTeX\ problems are hopefully solved more or less.
\clearpage
\section{Two} \label{section:two}
\begin{theorem}[Bla]\label{thm:bla}
Bla.
\end{theorem}
\begin{proof}[Proof.]
\vprelabel{proof:1}
Bla
\end{proof}
\begin{namedtheorem}[Mystery theorem]
\label{thm:mystery}
A mysterious theorem
\end{namedtheorem}
\begin{proof}
\begin{step}
\label{step1}
Here step 1.
\end{step}
\begin{step}
Here step 2.
\end{step}
\begin{claim}
\label{claim1}
A numbered claim.
\end{claim}
\end{proof}
\clearpage
\begin{theorem}
Bla bla
\end{theorem}
\begin{proof}
\begin{myclaim}
\vprelabel{myclaim}
An unnumbered claim.
\end{myclaim}
\end{proof}
\clearpage
\section{Three}
In \cref{section:two}, we have both a \aref{thm:bla}, a
\bref{proof:1}{proof}, \bref{step1}{step 1}, a numbered \bref{claim1}{claim
1}, and a single \bref{myclaim}{claim}.
\end{document}