有没有办法将环境的内容导出到外部文件而不阻止环境的操作?
通常在以下示例中,我想保留定理的内容,以便生成仅包含定理的文档(第二个文档将由 Python 或 Bash 文件构建)。
\documentclass[12pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Théorème}[section]
\newtheorem*{theorem*}{Théorème}
\begin{document}
I do not need to go oustide.
\begin{theorem}
Here is the best theorem for ever... I want to go outside. $ok^?$
\begin{center}
The same is true for me.
\end{center}}
\end{theorem}
\begin{center}
I do not need to go oustide.
\end{center}
\end{document}
答案1
让我稍微修改一下你的例子,并对你想要的东西提出一些建议(如果我理解正确的话)
建议1.使用新的 内容包,将内容保存在内存中。
\documentclass[12pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Théorème}[section]
\newtheorem*{theorem*}{Théorème}
\usepackage[store-env=thmout,print-env=false]{scontents}
%\usepackage[store-env=thmout,print-env=true]{scontents}
\pagestyle{empty}
\begin{document}
I do not need to go oustide.
\begin{scontents}[write-env=test-thm-1.tex]
\begin{theorem}
Here is the best first theorem for ever... I want to go outside. $ok^?$
\begin{center}
The same is true for me.
\end{center}
\end{theorem}
\end{scontents}
\begin{center}
I do not need to go oustide.
\end{center}
I do not need to go oustide.
\begin{scontents}[write-env=test-thm-2.tex]
\begin{theorem}
Here is the best second theorem for ever... I want to go outside. $ok^?$
\begin{center}
The same is true for me.
\end{center}
\end{theorem}
\end{scontents}
\begin{center}
I do not need to go oustide.
\end{center}
% Are you sure you want to write it in external files?
% ...better to leave them in memory :)
%\getstored[1]{thmout}
%\getstored[2]{thmout}
\end{document}
得到的输出如下:
如果我们删除\getstored
\getstored[1]{thmout}
\getstored[2]{thmout}
输出如下:
如果我们改变序言中的这些行
%\usepackage[store-env=thmout,print-env=false]{scontents}
\usepackage[store-env=thmout,print-env=true]{scontents}
输出如下:
test-thm-1.tex
在所有情况下,我们都会在单独的文件(和)中获取定理环境的内容test-thm-2.tex
,但我们无需写入外部文件即可做到这一点,只需将所有定理放入里面即可:
\begin{scontents}
\begin{theorem}
...
\end{theorem}
\end{scontents}
并且所有内容都将根据print-env=true|false
可以全局定义为包选项或本地选项的内容进行存储和显示。
\begin{scontents}[print-env=true]
\begin{theorem}
...
\end{theorem}
\end{scontents}
建议2:如果你仍然想在单独的文件中处理所有内容,縮寫完成这项工作(我假设您正在使用更新TeXLive
,并且您有perl
...是的perl
)。我们只需要运行下一行:
ltximg --imgdir=mythm --prefix=thm --srcenv --noprew --norun --extrenv=theorem -o test-out test.tex
test-out.tex
在您的工作目录中,您将找到所有theorem
转换为的文件\includegraphics
,在/mythm
目录中,您将找到单独的文件test-thm-1.tex
,test-thm-2.tex
和test-thm-all.tex
仅包含提取的定理的文件。当然,您必须\includegraphics
在文件中删除或注释它们test-out.tex
。如果您希望生成图像,请删除--norun
。