如何从 tex 文件中仅打印出语句(定理、引理等)?

如何从 tex 文件中仅打印出语句(定理、引理等)?

假设我有一个很长的 tex 文件,里面有很多内容。为了只读取逻辑结构,我只想打印 \begin{theorem}..\end{theorem} 和 \begin{lemma}..\end{lemma} 内的文本。

当然,我可以将所有其他部分都包括在内,例如 \show{...},然后当我想查看所有内容时将 \show[1] 定义为 %1,如果我只想查看语句,则将其定义为 {}。

但我正在寻找更优雅的解决方案。=)类似于预览包http://www.pirbot.com/mirrors/ctan/macros/latex/contrib/preview/preview.pdf

答案1

这是一个基于atbegshianswers包的解决方案。

这个想法是使用answers将定理、引理的内容写入外部文件(mtfile.tex),丢弃所有页面(主文件的所有内容https://tex.stackexchange.com/a/267555/71471),然后使用外部文件仅输出定理。

\onlytrue我们仅对定理和\onlyfalse正常使用使用 newif 测试。

用于保存theorem和的原始定义的辅助环境lemma

\newtheorem{xtheorem}{Theorem}
\newtheorem{xlemma}{Lemma} 

完整代码。

\documentclass{article}
\usepackage{lipsum}

\usepackage{atbegshi}
\newcommand{\handlethispage}{}
\AtBeginShipout{\handlethispage}

\newtheorem{xtheorem}{Theorem}
\newtheorem{xlemma}{Lemma}

\newif\ifonly % uncomment next line
%\onlytrue   
\ifonly
\usepackage{answers}
\Newassociation{lemma}{mtlemma}{mtfile}
\Newassociation{theorem}{mttheorem}{mtfile}
\renewenvironment{mttheorem}{\begin{xtheorem}}{\end{xtheorem}}
\renewenvironment{mtlemma}{\begin{xlemma}}{\end{xlemma}}
\Opensolutionfile{mtfile}
\AtBeginDocument{%
\let\handlethispage\AtBeginShipoutDiscard}
\AtEndDocument{%
\clearpage\pagenumbering{arabic}
\let\handlethispage\relax
\Closesolutionfile{mtfile}
\Readsolutionfile{mtfile}}
\else
\newenvironment{theorem}{\begin{xtheorem}}{\end{xtheorem}}
\newenvironment{lemma}{\begin{xlemma}}{\end{xlemma}}
\fi


\begin{document}
\lipsum[1-12]
\begin{lemma}
this is some bla bla in lamma
\end{lemma}
\lipsum[1-12]
\begin{theorem}
some bla bla in lamma
\end{theorem}
\lipsum[1-12]
\begin{lemma}
some bla bla in lamma
\end{lemma}
\end{document}

相关内容