如何不渲染文档的一部分(纯 LaTeX)

如何不渲染文档的一部分(纯 LaTeX)

我有一个很大的 LaTeX 文件,想隐藏 PDF 中的大部分内容,但保留定理的原始编号等。类似于display:noneCSS。

环境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

skipstufftrue

\skipstufffalse

skipstufffalse

相关内容