通过名称和编号引用定理

通过名称和编号引用定理

我不知道这是否可以在 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} 

演示

相关内容