我正在使用在这里找到的一个技巧来在需要时抑制文本输出。见下文。唯一的问题是 1. 我的方程式仍然显示(未抑制)和 2. 我的表格显示 \hlines。我该如何修改它以摆脱那些。
注意:我的目的是运行一个章节,但从输出中删除一些材料,但仍保留我输出部分的表格、图形和方程式的数量。
谢谢,卢卡斯
\documentclass{article}
\long\def\suppress#1\endsuppress{%
\begingroup%
\tracinglostchars=0%
\let\selectfont=\nullfont
\nullfont #1\endgroup}
\pagestyle{empty}
\begin{document}
\suppress
This text will not be seen in the generated document.
\endsuppress
But this text will.
\suppress
And this text won't again.
\endsuppress
\end{document}
答案1
您提到的常见用例是书籍的章节。在这种情况下,您应该研究\include
和\includeonly
。 \include
工作原理类似于\input
,但还会处理辅助文件,以便计数器正确更新。这意味着一旦您有\include
一个文件,只要它没有改变,您就可以从中省略它\includeonly
。要注意的主要一点是\include
会导致分页。因此,它最常用于书籍的章节。
\documentclass{book}
\includeonly{chapter2file} % comma separated list (or comment out to have everything)
\pagestyle{empty}
\begin{document}
\include{chapter1file} % not seen in the generated document
\include{chapter2file} % But this text will
\include{chapter3file} % And this text won't again
\end{document}
每个章节chapter#file
都有从该章节到\chapter{Chapter Title}
该章节结尾的所有内容。
这也适用于各个部分,但听起来您的用例涉及的文件太多而不值得。
答案2
这是基于来自的 udbox 环境这里. 和lrbox一样,它有点脆弱。
与任何组一样,全局更改(如\stepcounter
)将生效,而局部更改将丢失。此外,辅助文件条目(如\label
)将被延迟,直到打印框为止(永不)。
后来:我想到了一种添加\label
s 的方法,但我不得不使用 TikZ(这似乎有点过头了)。
\documentclass{article}
\usepackage{tikz}
\newsavebox{\bitbucket}
\newenvironment{supress}{\begin{udbox}{\bitbucket}}%
{\end{udbox}}
\newenvironment{supress*}{\begin{udbox}{\bitbucket}}% add aux file entries
{\end{udbox}\tikz[overlay]{\node[opacity=0]{\box\bitbucket};}}
\makeatletter
\def\udbox#1{% fragile
\edef\reserved@a{%
\endgroup
\setbox#1\vbox{%
\begingroup\aftergroup}%
\def\noexpand\@currenvir{\@currenvir}%
\def\noexpand\@currenvline{\on@line}}%
\reserved@a
\@endpefalse
\color@setgroup
\ignorespaces}
\def\endudbox{\unskip\color@endgroup}
\makeatother
\pagestyle{empty}
\begin{document}
\begin{supress}
This text will not be seen in the generated document.
\end{supress}
But this text will.
\begin{supress}
And this text won't again.
\end{supress}
\end{document}