如何使表格浮动与预览/独立环境一起工作?

如何使表格浮动与预览/独立环境一起工作?

无法使表格浮动在预览环境中工作:

\documentclass[fontsize=16pt]{scrartcl}

\usepackage[active,tightpage]{preview}
\setlength{\PreviewBorder}{25pt}

\begin{document}
\begin{preview}

\begin{table}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\caption{testing}
\label{tab:testing}
\end{table}

\end{preview}
\end{document}

给出错误“不在外部 par 模式中”。预览手册中提到了“浮动”选项,但添加它并没有什么区别。我知道在单个预览页面中让表格“浮动”没有多大意义,我只想让它们变为非浮动并停留在定义的位置并显示在预览中。

然后我发现问题。它说独立包可以工作。但我也无法让它工作:

\documentclass{standalone}

\begin{document}

\begin{table}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\caption{testing}
\label{tab:testing}
\end{table}

\end{document}

给出错误“有些错误——可能缺少 \item”。即使它能工作,也会引起一个严重的问题,即它占用了 documentclass,但我必须使用 KOMA-Script。顺便说一句,我使用 xelatex,不知道这是否重要。

有任何想法吗?

编辑:我想我在帖子中提到过,我知道“浮动”是什么意思,而且它没有“太多”意义。但它确实有一定意义:我使用预览来预览。因此,文档中的每个元素都应该显示在预览中,这样我就可以“预览”它。对于表格浮动,正确的显示方式是成为非浮动并停留在定义的位置。这正是帖子说独立版应该可以做到。然后在预览之后,如果我注释掉预览包或使其不活动,一切应该会再次正常工作(表格浮动正常浮动等)。所以我不是在问如何让表格浮动变得粘稠,而是问如何让它显示在预览/独立环境中。

解决方案:解决方案是

\documentclass[preview,class=scrartcl,fontsize=20pt]{standalone}

这将自动将表格浮动变为非浮动,同时保留原始文档类。另请参阅 Jesse 的答案,了解一个聪明但更复杂的解决方案。

答案1

更新

在您发布的链接中,该standalone包的作者提到现在可以使用浮点数,standalone并且应该查看有关该float选项的手册。

为您完成此操作后,我得到了以下代码,它应该适合您。

编辑我还包含了获取scrartcl外观和所需字体大小所需的选项。

% arara: pdflatex

\documentclass[%
    ,float=false % this is the new default and can be left away.
    ,preview=true
    ,class=scrartcl
    ,fontsize=20pt
    ]{standalone}

\begin{document}

\begin{table}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\caption{testing}
\label{tab:testing}
\end{table}

\end{document}

原始答案

您不应该在standalone类中使用浮动环境,因为它没有意义。标签也没有意义。我建议使用包caption作为标题(因为这个包也经常用于普通文章)并将您的表格包装在迷你页面中。

在此处输入图片描述

% arara: pdfatex

\documentclass{standalone}
\usepackage{caption}

\begin{document}
\minipage{0.2\textwidth}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\captionof{table}{testing}
\endminipage
\end{document}

答案2

另一种方法是定义一个非浮动环境tablehere,但仍能实现字幕功能而无需使用包。

更新: tablehere已更改为table,但在使用预览模式时将其更新为非浮动。因此,在预览模式下删除下面的所有 %。

\documentclass[fontsize=16pt]{scrartcl}

%\usepackage[active,tightpage]{preview}
%\setlength{\PreviewBorder}{25pt}
%
%\makeatletter
%\renewenvironment{table}
%{\def\@captype{table}}
%{}
%\makeatother

\begin{document}
%\begin{preview}

\begin{table}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\caption{testing}
\label{tab:testing}
\end{table}

%\end{preview}
\end{document}

原始答案:

在此处输入图片描述

\makeatletter
\newenvironment{tablehere}
{\def\@captype{table}}
{}
\makeatother

代码

\documentclass[fontsize=16pt]{scrartcl}

\usepackage[active,tightpage]{preview}
\setlength{\PreviewBorder}{25pt}
\makeatletter
\newenvironment{tablehere}
{\def\@captype{table}}
{}
\makeatother
\begin{document}
\begin{preview}

\begin{tablehere}
\centering
\begin{tabular}{c|c}
a & b\\
\hline
c & d\\
\end{tabular}
\caption{testing}
\label{tab:testing}
\end{tablehere}

\end{preview}
\end{document}

相关内容