检索定理的标题,例如“引理 1(我的名字)”中的“我的名字”

检索定理的标题,例如“引理 1(我的名字)”中的“我的名字”

我如何才能检索定理的名称?

我知道如何使用标签来引用定理,并负责自己给出“定理”或“引理”的标题。我还知道诸如这样的软件包ntheorem可以更进一步,并给出“定理”或“引理”的名称,然后为我保持一致性。但是,我找不到允许我定义定理并恢复其标题的软件包。

例如,请看以下代码片段:

\begin{theorem}[Rely-to-Atomic] For any predicate @{term "p"}, and relations @{term "r"}
and @{term "q"}, such that @{term "❙[p,q❙]"} tolerates interference @{term "r"},
\begin{IEEEeqnarray*}{c}
@{thm (concl) Law_7_4_Rely_To_Atomic_Ref}
\end{IEEEeqnarray*}\label{RTA_Ref}
\end{theorem}

系统处理完@块内的搞笑引语后,生成相应的latex,并编译为:

在此处输入图片描述

我想要的是一种检索字符串“依赖原子“来自标签RTA_Ref。如果我有这个,我可以引用包括标题在内的定理以方便我的读者。例如,通过输入:

Law~\ref{RTA_Ref}~(\nameofthm{RTA_Ref}) 

获得方法:

定律 3.95 (Rely-to-Atomic)

因为我知道有些包可以提供定理表,所以我相信应该有一种方法来访问定理的标题或适合此目的的包。

答案1

thmtools软件包可以轻松实现这一点:

\documentclass{article}
\usepackage{hyperref}
\usepackage{thmtools}
\declaretheorem{Theorem}
\begin{document}

\begin{Theorem}[My Theorem]\label{thm}
  $1 + 3 = 4$
\end{Theorem}

As we saw in Theorem~\ref{thm} (\nameref{thm})

\end{document}

通过名称引用定理

您可以使用以下方法获得相同的结果amsthm

\documentclass{article}
\usepackage{hyperref}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}
\begin{document}

\begin{thm}[My Theorem]\label{thm}
  $1 + 3 = 4$
\end{thm}

As we saw in Theorem~\ref{thm} (\nameref{thm})

\end{document}

最后,如果您想要一个链接而不是两个,您可以使用以下命令:

\documentclass{article}
\usepackage{hyperref}
\usepackage{thmtools}
\declaretheorem{Theorem}

\begin{document}

\begin{Theorem}[My Theorem]\label{thm}
  $1 + 3 = 4$
\end{Theorem}

As we saw in \hyperref[thm]{Theorem~\ref*{thm} (\nameref*{thm})}.

\end{document}

相同,只有一个链接。

如果您不想要任何链接,只需使用\nameref*{thm}

我想您将能够调整代码以打印“Law”而不是“Theorem”。

答案2

这里有一个额外的解决方案,它使用amsthm并且独立于hyperref。它模仿了 cross-ref-routine 中内置的 LaTeX:

\documentclass{article}
\usepackage{amsthm}
\usepackage{amssymb}

\newtheorem{law}{Law}

\makeatletter
\let\sv@law\law
\let\sv@label\label
\renewcommand\law[1][]{\sv@law[#1]\def\curr@thmname{#1}}
\renewcommand\label[1]{%
  \immediate\write\@auxout{%
    \noexpand\global\noexpand\@namedef{#1-thmname}{\curr@thmname}}
  \sv@label{#1}
}
\newcommand\nameofthm[1]{\@nameuse{#1-thmname}}
\makeatother

\begin{document}
%Law~\ref{RTA_Ref}~(\nameofthm{RTA_Ref}) 
%
\begin{law}[Rely-to-Atomic]\label{RTA_Ref}
For any predicate $p$, and relations $r$ and $q$, such that $[p,q]$ tolerates interference $r$,
\[
  \mathbf{rely}\,r\cdot[p,q]\sqsubseteq\langle p,q\rangle
\]
\end{law}

...

Law~\ref{RTA_Ref}~(\nameofthm{RTA_Ref})
\end{document}

示例_渲染

相关内容