重述定理,同时更改其名称(标题)

重述定理,同时更改其名称(标题)

我们都知道“restatable”包可以帮助以完全相同的格式重复定理。但是,我需要重述定理,同时在括号中更改其名称。例如,原始定理显示为“定理 1(此处命名)”;后来当我重述它时,我想要“定理 1(重述)”。可以实现吗?

我注意到在“thmtools”的文档中有一个名为“restate”的参数。但是没有足够解释,我不知道如何使用它。

谢谢你的帮助!

答案1

thmtoolsrestatable提供一个使用以下语法调用的环境

\begin{restatable}[theorm-title]{envname}{commandtorestate}
<some text>
\end{restatable}

在文档的第 7 页,我们必须遵循以下示例

\documentclass{article}

\usepackage{thmtools, thm-restate}
\declaretheorem{theorem}

\begin{document}

\begin{restatable}[Euclid]{theorem}{firsteuclid}
\label{thm:euclid}%
For every prime $p$, there is a prime $p'>p$.
In particular, the list of primes,
\begin{equation}\label{eq:1}
2,3,45,7,\dots
\end{equation}
is infinite.
\end{restatable}

\firsteuclid*
\vdots
\firsteuclid*

\end{document}

产生以下结果

在此处输入图片描述

如果我理解正确的话,以下补丁就是你想要的

\documentclass{article}

\usepackage{thmtools,thm-restate}
\declaretheorem{theorem}

\usepackage{regexpatch}
\makeatletter
\xpatchcmd\thmt@restatable{%
\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi
}{%
\ifthmt@thisistheone
\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi
\else
\csname #2\@xa\endcsname[{Restated}]
\fi}{}{}
\makeatother


\begin{document}
    
    \begin{restatable}[Euclid]{theorem}{firsteuclid}
        \label{thm:euclid}%
        For every prime $p$, there is a prime $p'>p$.
        In particular, the list of primes,
        \begin{equation}\label{eq:1}
            2,3,45,7,\dots
        \end{equation}
        is infinite.
    \end{restatable}
    
    \firsteuclid*
    \vdots
    \firsteuclid*
    
\end{document}

在此处输入图片描述

相关内容