endfloat 与 sidewaystables 结合的问题

endfloat 与 sidewaystables 结合的问题

我正在使用endfloatpdflscape在文档末尾创建侧边表。问题是我想要生成一个较长的侧边表,即超过 2 页。但是,表格的第二部分(在第二页)与第一部分有很大不同,即列数等。所以我制作了一个新的侧边表。这在普通文档中看起来完全没问题(看起来像一个超过 2 页的完整表格),但使用 endfloat 时,正如人们所期望的那样,将生成 2 个链接,而不是第一个表格只有一个链接。

有什么办法可以解决这个问题?即表格内应该只有一个链接:[表格 1 关于此处...],

而不是两个链接。因此,应删除链接 [表 2 关于此处...]。

举例说明该问题:

\documentclass{article}
\usepackage{caption}
\usepackage{booktabs}
\usepackage{rotating} 
\usepackage{longtable} % for 'longtable' environment
\usepackage{pdflscape} % for 'landscape' environment
\usepackage{endfloat}

\DeclareDelayedFloatFlavor{sidewaystable}{table}

\begin{document}

\section{Start}

\begin{sidewaystable}
\noindent
\captionbox{This is the first table.\label{tab:one}}{%
  \begin{tabular}{ccccc}\toprule
  \textbf{a} & \textbf{b} & \textbf{c} & \textbf{d} & \textbf{e} \\ \midrule
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  \bottomrule
  \end{tabular}
}
\end{sidewaystable}

\begin{sidewaystable}
\noindent
\captionbox{This is the second table.\label{tab:two}}{%
  \begin{tabular}{ccccc}\toprule
  \textbf{a} & \textbf{b} & \textbf{c} & \textbf{d} & \textbf{e} \\ \midrule
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  \bottomrule
  \end{tabular}
}
\end{sidewaystable}

\section{End}
\end{document}

答案1

endfloat 的工作方式是检测特定环境的开始,并将从那里到环境结束的代码从文档中剪辑到另一个文件中。您几乎可以将任何内容放入环境中,包括几页的浮动或非浮动。

该解决方案使用包装器环境来精确地实现这一点。

\documentclass{article}
\usepackage{caption}
\usepackage{booktabs}
\usepackage{rotating} 
\usepackage{longtable} % for 'longtable' environment
\usepackage{pdflscape} % for 'landscape' environment
\usepackage{endfloat}

\newenvironment{wrapper}{}{}
\DeclareDelayedFloatFlavor{wrapper}{table}
\DeclareDelayedFloatFlavor{sidewaystable}{table}% to check for conflicts

\begin{document}

\section{Start}

\begin{wrapper}
\begin{sidewaystable}
\noindent
\captionbox{This is the first table.\label{tab:one}}{%
  \begin{tabular}{ccccc}\toprule
  \textbf{a} & \textbf{b} & \textbf{c} & \textbf{d} & \textbf{e} \\ \midrule
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  \bottomrule
  \end{tabular}
}
\end{sidewaystable}

\begin{sidewaystable}
\noindent
\captionbox{This is the second table.\label{tab:two}}{%
  \begin{tabular}{ccccc}\toprule
  \textbf{a} & \textbf{b} & \textbf{c} & \textbf{d} & \textbf{e} \\ \midrule
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  1 & 2 & 3 & 4 & 5\\
  \bottomrule
  \end{tabular}
}
\end{sidewaystable}
\end{wrapper}

\section{End}
\end{document}

相关内容