我正在寻找一种方法,在草稿模式下将表格排除在编译之外(从技术上讲,我想创建一个布尔值,例如drafttables
在活动时排除表格)。通常,我将表格放在文档末尾的单独文件中,并在处理文档时将其排除在编译之外。但现在我需要将许多表格作为浮点数放入文档中,并且由于表格相当复杂,编译需要很长时间。
是否可以创建一个宏,只放置占位符而不是表格,类似于包的选项graphicx
?如果占位符的尺寸与表格相似,那么布局将保持不变,这将是一个好处。
答案1
我借用了一些pgfplots 的草稿模式在下面的解决方案中。
如果你使用
\documentclass[draft]{article}
那么所有的tables
都不会出现。如果你使用
\documentclass{article}
那么它们就会像往常一样出现。
verbatim
我只是为了环境才使用该包comment
。
测量桌子的尺寸可能比较棘手——也许这会帮助某些人朝这个方向努力。
%\documentclass{article}
\documentclass[draft]{article}
\usepackage{verbatim}
\makeatletter
\@tempswafalse
\def\@tempa{draft}
\@for\next:=\@classoptionslist\do
{\ifx\next\@tempa\@tempswatrue\fi}
\if@tempswa % draft option is active
\renewenvironment{table}{\comment}{\endcomment}
\fi
\makeatother
\begin{document}
hello world
\begin{table}[!htb]
\begin{minipage}{.5\textwidth}
\centering
\caption{}
\label{tab:first}
\begin{tabular}{rcl}
right & center & left \\
right & center & left
\end{tabular}
\end{minipage}%
\begin{minipage}{.5\textwidth}
\centering
\caption{}
\label{tab:second}
\begin{tabular}{rcl}
right & center & left \\
right & center & left
\end{tabular}
\end{minipage}
\end{table}
\end{document}
选择
否则,您可能更愿意加载tikz
或pgf
然后在\ifdraft
检查中使用以下内容
\renewenvironment{tabular}{%
\pgfpicture\pgfpathrectanglecorners{\pgfpointorigin}{\pgfpoint{3cm}{3cm}}%
\pgfusepath{stroke}\endpgfpicture%
\comment}{\endcomment}
这使
答案2
cmhughes 的回答让我意识到,任何形式的“自动”表格大小识别都是矫枉过正。首先,我的表格通常是文本宽度,因此大小变化不大。其次,即使尺寸长几厘米或短几厘米也无关紧要。所以我的策略如下:
- 创建一个新的
ifnotables
条件,可以通过以下方式由 documentclass 激活notables
- 创建一些预定义的空表:
\fulltable
位于额外的页面浮动上、\halftable
大小为其一半......\thirdtable
,\quartertable
等等。
然后可以通过 设置表格\ifnotables{\halftable}{\begin{tabular}...\end{tabular}
。优点是,当设置为表格浮动时,标题、标签等保持不变,从而实现良好的布局:只缺少实际的表格。
\documentclass[%
notables
]{article}
\usepackage{tikz}
\usepackage{booktabs,lmodern}
\makeatletter
% Provide new conditionals
\newif\if@notables
\DeclareOption{notables}{%
\@notablestrue
}
\ProcessOptions*\relax
\newcommand*{\ifnotables}{%
\if@notables
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\makeatother
% create dummy tables
\newcommand{\fulltable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}l}
\hspace{-.5em}\pgfpicture\pgfpathrectanglecorners{\pgfpointorigin}{\pgfpoint{\textwidth}{23cm}}%
\pgfusepath{stroke}\endpgfpicture%
\end{tabular*}
}
\newcommand{\halftable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}l}
\hspace{-.5em}\pgfpicture\pgfpathrectanglecorners{\pgfpointorigin}{\pgfpoint{\textwidth}{11.5cm}}%
\pgfusepath{stroke}\endpgfpicture%
\end{tabular*}
}
\newcommand{\thirdtable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}l}
\hspace{-.5em}\pgfpicture\pgfpathrectanglecorners{\pgfpointorigin}{\pgfpoint{\textwidth}{7cm}}%
\pgfusepath{stroke}\endpgfpicture%
\end{tabular*}
}
\newcommand{\quartertable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}l}
\hspace{-.5em}\pgfpicture\pgfpathrectanglecorners{\pgfpointorigin}{\pgfpoint{\textwidth}{5cm}}%
\pgfusepath{stroke}\endpgfpicture%
\end{tabular*}
}
\begin{document}
\begin{table}[!htb]
\centering
\caption{First table}
\label{tab:first}
\ifnotables{\thirdtable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}ccc}
\toprule
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
\bottomrule
\end{tabular*}
}
\end{table}
\begin{table}[!b]
\centering
\caption{Second table}
\label{tab:second}
\ifnotables{\quartertable}{%
\begin{tabular*}{\textwidth}{c@{\extracolsep{\fill}}ccc}
\toprule
right & center & left \\
right & center & left \\
right & center & left \\
right & center & left \\
\bottomrule
\end{tabular*}
}
\end{table}
\end{document}
当然,虚拟变量的大小可以进行微调。我通常将表格存储在单独的 tex 文件中,因此可以通过创建以下命令:
\usepackage{etoolbox}
\newcommand{\mytable}[2][]{%
\ifstrempty{#1}{%
\input{#2}
}{%
\ifnotables{#1}{\input{#2}}%
}
}
我可以使浮点型代码更整洁,并且虚拟表的规范是可选的:
\begin{table}[!htb]
\centering
\caption{First table}
\label{tab:first}
\mytable[\halftable]{table2}
\end{table}