我如何在论文的第一部分使用可选参数陈述定理,然后在后续章节中不使用可选参数重述该定理?(可选参数将包含给出定理证明的章节编号。在证明之前,我想重述没有章节编号的定理。)
\documentclass{article}
\usepackage{thmtools}
\usepackage{thm-restate}
\newtheorem{thm}{Theorem}
\begin{document}
\section{Introduction}
\begin{restatable}[\S\ref{SectionNumber}]{thm}{TheoremName}
theorem contents
\end{restatable}
\section{Some Section}
\label{SectionNumber}
\TheoremName*
\end{document}
此代码输出以下内容:
1 简介
定理 1(§2)定理内容
2 部分
定理 1(§2)定理内容
我希望当我重新表述这个定理时“(§2)”消失。
请注意,有一个类似的问题[重述没有可选参数的定理] 将“后续章节”替换为“附录”,但我不知道如何翻译答案来解决我的问题。
答案1
解决方案重述没有可选参数的定理可以通过将附录的检查更改为检查命令是否带星号来进行调整。该thmtools
包内部实现了一个名为的切换\ifthmt@thisistheone
。此切换在定理的定义处为真(即,在执行环境时restatable
),因此条件(是否打印可选参数)应该与相关问题相反。此外,切换使用\if \else \fi
语法而不是语法\IfAppendix{do if true}{do if false}
。
梅威瑟:
\documentclass{article}
\usepackage{thmtools}
\usepackage{thm-restate}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\thmt@restatable}% Edit \thmt@restatable
{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi}% Replace this code
{\ifthmt@thisistheone\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi\else\csname #2\@xa\endcsname\fi}% with this code
{}{} % execute code for success/failure instances
\makeatother
\newtheorem{thm}{Theorem}
\begin{document}
\section{Introduction}
\begin{restatable}[\S\ref{SectionNumber}]{thm}{TheoremName}
theorem contents
\end{restatable}
\section{Some Section}
\label{SectionNumber}
\TheoremName*
\end{document}
结果: