将环境的逐字 LaTeX 内容导出到外部文件

将环境的逐字 LaTeX 内容导出到外部文件

有没有办法将环境的内容导出到外部文件而不阻止环境的操作?

通常在以下示例中,我想保留定理的内容,以便生成仅包含定理的文档(第二个文档将由 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}

输出如下:

使用 getstored

如果我们改变序言中的这些行

%\usepackage[store-env=thmout,print-env=false]{scontents}
\usepackage[store-env=thmout,print-env=true]{scontents}

输出如下:

使用 print-env=true

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.textest-thm-2.textest-thm-all.tex仅包含提取的定理的文件。当然,您必须\includegraphics在文件中删除或注释它们test-out.tex。如果您希望生成图像,请删除--norun

相关内容