
假設我有一個很長的 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
這是一個基於atbegshi
和answers
包的解決方案。
這個想法是使用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}