%20%D0%B8%D0%B7%20tex-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%3F.png)
Предположим, что у меня есть длинный tex-файл с большим количеством вещей. Чтобы прочитать только логическую структуру, я хочу напечатать только текст внутри \begin{theorem}..\end{theorem} и \begin{lemma}..\end{lemma}.
Конечно, я могу охватить все остальные части, включая что-то вроде \show{...}, а затем определить \show[1] как %1, когда я хочу увидеть все содержимое, и как {}, если я хочу увидеть только утверждения.
Но я ищу более элегантное решение. =) Что-то вроде пакета previewhttp://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}