如何從 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),然後使用外部文件僅輸出定理。

我們僅將 newif 檢定\onlytrue用於定理和\onlyfalse正常使用。

輔助環境用於保存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}

相關內容