%20%E3%81%AE%E3%81%BF%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
たくさんの内容が書かれた長い 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) を実行し、外部ファイルを使用して定理のみを出力します。
\onlytrue
定理と通常の使用のためだけにnewif テストを使用します\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}