我不知道这是否可以在 Latex 中实现,但我想这样做。我想使用其标签引用一个定理,但应该出现的是其定理编号和其名称(\begin{theorem} 后方括号中的文本)。
例如,考虑以下定理定义:
\begin{定理}[三角不等式]\label{thm:triangle}
......
\end{定理}
当我引用这篇文章时,我希望能够写一些类似的东西
使用 \SomeCommand{thm:triangle} 可以轻松证明这一点。
我想出现的是
使用三角不等式(定理 1)可以很容易地证明这一点。
理想情况下,文本也会超链接到定理。
这能做到吗?
答案1
这里有两种方法。首先,您可以结合\ref
和\nameref
来根据需要格式化。其次,您可以使用\mylabel
来保存预格式化的文本。后者的优点是它作为单个超链接实现。
\documentclass{article}
\usepackage[colorlinks=true]{hyperref}
\newtheorem{theorem}{Theorem}
\makeatletter
\@ifpackageloaded{hyperref}%
{\newcommand{\mylabel}[2]% #1=name, #2 = contents
{\protected@write\@auxout{}{\string\newlabel{#1}{{#2}{\thepage}%
{\@currentlabelname}{\@currentHref}{}}}}}%
{\newcommand{\mylabel}[2]% #1=name, #2 = contents
{\protected@write\@auxout{}{\string\newlabel{#1}{{#2}{\thepage}}}}}
\makeatother
\begin{document}
\begin{theorem}[Triangle inequality]\label{thm:triangle}
\mylabel{text:triangle}{Triangle inequality (Theorem \thetheorem)}
\end{theorem}
This is easily proved using the \nameref{thm:triangle} (Theorem \ref{thm:triangle}).
\medskip\noindent
This is easily proved using the \ref{text:triangle}.
\end{document}