在单独的文件中重述定理

在单独的文件中重述定理

我在文档正文中陈述一个定理,并在附录中证明它。我使用 thmtools 的可重述环境在那里重述该定理。但是,我现在需要将附录放在单独的 pdf 文件中(因此是单独的 tex 文档)。我使用 xr 和 xcite 使交叉引用和书目引用能够很好地发挥作用。

但是 restatable 创建的命令没有被携带。有没有办法在单独的文档中重新陈述附录中的定理?

以下是 MWE:

主要文件:main.tex

\documentclass{article}
\usepackage{thmtools}
\newtheorem{theorem}{Theorem}

\begin{document}

\begin{restatable}{theorem}{thmcmd}\label{thmlabel}
Here is the statement of the theorem.
\end{restatable}

The above is Theorem~\ref{thmlabel}.

In this way I can restate it:
\thmcmd*

\end{document}

附录:appendix.tex

\documentclass{article}
\usepackage{xr}
\externaldocument{main}
\usepackage{thmtools}
\newtheorem{theorem}{Theorem}

\begin{document}

I can refer to Theorem~\ref{thmlabel}.

But I cannot restate it like this:
% \thmcmd*

\end{document}

答案1

tcolorbox包提供了一些宏,用于保存盒子的内容并在以后使用。

最简单的例子可能是:

\documentclass{article}
\usepackage[most]{tcolorbox}

\begin{document}
\begin{tcolorbox}[saveto=myfile.tex, lowerbox=ignored]
This is a nice theorem
\tcblower
This is the nice prove
\end{tcolorbox}

\begin{tcolorbox}[title=A nice theorem with its prove]
\input{myfile.tex}
\end{tcolorbox}

\end{document}

在前面的代码saveto选项中,将整个tcolorbox内容(上部和下部)保存在文件中myfile.tex。它仅保存内容,而不保存框的格式。

选项lowerbox=ignored使得下部(本例中为证明)不会出现,但它会被保存。

稍后放入同一个文档,或者放入另一个文档,myfile.tex都可以重新表述为 tcolorbox 内容。

在此处输入图片描述

有关这些命令的更多信息可以在tcolorbox文档、章节4.3 Upper part4.4 Lower part章节中找到更复杂的示例8. Recording。 这里有一些例子:https://tex.stackexchange.com/a/257455/1952https://tex.stackexchange.com/a/224429/1952

更新

我将尝试展示https://tex.stackexchange.com/a/224429/1952也可以与外部文档一起使用。第一个文档将包含定理和证明,尽管只会打印定理,而第二个文档将显示定理和证明。此解决方案应用了一个invisible框(blankest命名tcolorbox法),正如 OP 所希望的那样。

调用含有定理和证明的文档TestTheorems.tex,其内容为:

\documentclass{article}

\usepackage{lipsum}
\usepackage[most]{tcolorbox}

\NewTColorBox[auto counter,number within=section]{theorem}{+O{}}{ %
    enhanced, blankest,
    coltitle=black,
    title={Theorem~\thetcbcounter:},
    label={theorem@\thetcbcounter},
    attach title to upper=\quad,
    theorem style=standard,
    lowerbox=ignored,
    saveto=theorems/theorem-\thetcbcounter.tex,
    record={\string\proof{\thetcbcounter}{theorems/theorem-\thetcbcounter.tex}},
    #1
}

\begin{document}
\section{Some theorems without proof}

\tcbstartrecording

Some theorems are shown in this document. All proofs are also written here, but not printed. They will be printed in another document.

\begin{theorem}
This is the first theorem
\tcblower
This is the proof of the first theorem\end{theorem}

\begin{theorem}
This is the second theorem
\tcblower
This is the proof of the second theorem\end{theorem}

\begin{theorem}
This is the third theorem
\tcblower
This is the proof of the third theorem\end{theorem}

\begin{theorem}
This is the fourth theorem
\tcblower
This is the proof of the fourth theorem\end{theorem}

\tcbstoprecording

\end{document}

它声明了一个theoremtcolorbox,其内容将保存(saveto选项)在不同的文件中,每个定理一个。这些文件的名称也记录(record选项)到名为的辅助文件中TestTheorems.record。此辅助文件使用命令创建\tcbstartrecording并使用命令关闭\tcbstoprecording

处理此文件后结果是:

在此处输入图片描述

而且还有一个theorems包含四个文件的文件夹,每个定理一个,并将文件TestTheorems.records放入主文件夹中。

第二个文件TestProofs.tex包含将读取所有记录的定理和证明的定义tcolorbox。在xr帮助下,它们将保留其原始名称和编号。命令\tcbinputrecords声明将读取哪个文件。作为外部文件,有必要将名称作为选项指示出来。

\documentclass{article}

\usepackage{xr}
\externaldocument{TestTheorems}
\usepackage[most]{tcolorbox}

\NewTotalTColorBox{\proof}{mm}{ %
    enhanced, blankest,
    coltitle=black,
    theorem style=plain,
    title={Theorem~\ref{theorem@#1}:},
    phantomlabel={proof@#1},
    attach title to upper=\par,
    before lower={Proof:\par}
}{\input{#2}}

\begin{document}
\section{Phnatom section}

\section{Theorems and proofs}

This document shows already printed theorems but it also includes all proofs.

\tcbinputrecords[TestTheorems.records]

\end{document}

结果是:

在此处输入图片描述

相关内容