重述没有可选参数的定理

重述没有可选参数的定理

我目前正在文档正文中陈述定理,然后在附录中证明它们(使用 thmtools)。我目前会写类似

\begin{restatable}[Proof in \Cref{whatever}]{lemma}{whatever}
       Lemma stuff
\end{restatable}

当我在附录中重述引理时,我不希望可选参数(说明证明在哪里)再次出现。有没有办法让 thmtools 或其他一些包来做到这一点?

编辑:下面我提供了一个工作示例

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\begin{document}
\newtheorem{lemma}{Lemma}
\begin{restatable}[Proof in Foo]{lemma}{whatever}
       Lemma stuff
\end{restatable}
\section{Hmm}
\whatever*
\appendix
\section{Wow}
\whatever*
\end{document}

答案1

apptools包提供了\IfAppendix{<true>}{<false}可用于检测\appendixxpatch\thmt@restatable我们可以进入(由 调用的宏)的定义\begin{restatable}并调整可选参数的使用方式,相关部分是\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi。我们可以将其设置为分支,以便仅在我们不在附录中时才使用可选参数,因此将该代码段替换为 ,\IfAppendix{\csname #2\@xa\endcsname}{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi以便\ifx检查是否#1为非空然后传递它的 仅包含在附录之外。

\documentclass{article}
\usepackage{xpatch}
\usepackage{thmtools}
\usepackage{apptools}

\makeatletter
\xpatchcmd{\thmt@restatable}% Edit \thmt@restatable
{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi}% Replace this code
{\IfAppendix{\csname #2\@xa\endcsname}{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi}}% with this code
{}{} % execute code for success/failure instances
\makeatother

\newtheorem{lemma}{Lemma}

\begin{document}

\begin{restatable}[Proof in Foo]{lemma}{whatever}
       Lemma stuff
\end{restatable}

\whatever*

\appendix

\whatever*

\end{document}

生产

Theorems with source omitted in appendices

相关内容