选择

选择

我正在寻找一种方法,在草稿模式下将表格排除在编译之外(从技术上讲,我想创建一个布尔值,例如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}

选择

否则,您可能更愿意加载tikzpgf然后在\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}

相关内容