У меня есть большой файл LaTeX, и я хочу скрыть большую часть его содержимого в PDF, но сохранить исходную нумерацию теорем и т. д. Что-то похожее на display:none
CSS.
Среда comment
не помогает, потому что она вообще не обрабатывает контент. Она может быть использована только для сокрытия текста за пределами теорем.
\hphantom
или \vphantom
не оборачивайте такие среды, как \begin{theorem}
.
Если говорить точнее, предположим, что у меня есть следующее:
% I want to hide from here ...
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}
% ... to here
\begin{theorem}
Second
\end{theorem}
Я хочу видеть только вторую теорему с оригинальной нумерацией в формате PDF: Theorem 1.1.2
.
Мой вопрос очень похож наВот этот, но автор этого вопроса сотрудничает с Sage, и принятый ответ, насколько я понимаю, относится только к Sage.
Если универсального способа добиться этого эффекта не существует, я был бы рад, если бы существовали способы скрыть следующие объекты:
- Названия разделов/подразделов
- Теоремы/леммы и т.д.
- Цифры
Я также думал о «перенаправлении» вывода в другой файл (не PDF), но не смог найти решения.
Последней альтернативой было бы«жестко закодировать» номера теорем, но я хочу этого избежать.
решение1
Просто попытка, которая может сработать, если все, что вы хотите исключить, находится в аргументе команды или обернуто в окружение. И если вы точно знаете, что вы хотите исключить.
Левое изображение — без сокрытия, правое — с.
Идея состоит в том, чтобы переопределить все команды и среды так, чтобы они поглощали содержимое аргументов, но при этом продолжали выполнять арифметические вычисления.
\documentclass{article}
\usepackage{environ}
\newtheorem{theorem}{Theorem}
\newenvironment{hide}%
{\renewcommand\section[1]{\refstepcounter{section}}%
\renewcommand\subsection[1]{\refstepcounter{subsection}}%
\RenewEnviron{theorem}{\refstepcounter{theorem}}%
}%
{}
\begin{document}
% i want to hide from here ...
\begin{hide}
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}
\end{hide}
% ... to here
\begin{theorem}
Second
\end{theorem}
\subsection{Subsection 1.2}
\section{Section 2}
\begin{theorem}
Third
\end{theorem}
\end{document}
решение2
Если вы запустите этот документ, а затем раскомментируете includeonly и запустите его снова, вы получите одностраничный документ с (только) теоремой 2 на странице 2.
\begin{filecontents}{zzzz1.tex}
\section{Section 1}
\subsection{Subsection 1.1}
\begin{theorem}
First
\end{theorem}
\end{filecontents}
\begin{filecontents}{zzzz2.tex}
\begin{theorem}
Second
\end{theorem}
\end{filecontents}
\documentclass{article}
\newtheorem{theorem}{Theorem}
%\includeonly{zzzz2}
\begin{document}
% i want to hide from here ...
\include{zzzz1}
% ... to here
\include{zzzz2}
\end{document}
решение3
Мне нравится ответ gernot, но я уже начал это делать до того, как увидел его, так что могу и опубликовать:
\documentclass{article}
\newif\ifskipstuff
\skipstufffalse
%\skipstufftrue
\usepackage{amsmath}
\begin{document}
\ifskipstuff
\refstepcounter{section}
\refstepcounter{subsection}
\refstepcounter{equation}
\else
\section{Section 1}
\subsection{Subsection 1.1}
\begin{equation}
First
\end{equation}
\fi
\section{A Section}
\subsection{Subsection}
\begin{equation}
Second
\end{equation}
\end{document}
Недостаток в том, что вам нужно вручную увеличивать все счетчики, всегда. Не очень хорошо (особенно если у вас много вещей в предложении \else
. Возможно, это можно было бы улучшить (включив \ifskipstuff
проверки в переопределенные среды, возможно, так, чтобы они выполняли свои собственные проверки). Плюс в том, что вы можете глобально задать, хотите ли вы включать свой материал или нет, изменяя между \skipstufffalse
и \skipstufftrue
, соответственно. Что ж, это может быть плюсом, в зависимости от вашего варианта использования.
\skipstufftrue
:
\skipstufffalse
: