使用 subfig 包在浮动表格中进行分页

使用 subfig 包在浮动表格中进行分页

我正在尝试在横向环境中创建一个包含多个子表且内容超过一页的表格。因此需要在表格内设置分页符以分隔多个页面上的子表。

这里的主要问题是我不能使用 longtable 环境。

我一直在使用表格环境并在里面放置表格,但是即使使用该\ContinuedFloat命令,表格环境也不会分页。

我尝试过使用图形环境并在里面放入表格,但即使使用命令,图形环境也不会分页\ContinuedFloat

\documentclass{scrartcl}

\usepackage[english,ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{subfig}
\usepackage{lscape}
\usepackage{float}
\usepackage{booktabs}
\usepackage{ltxtable}   
\usepackage{tabularx}


\newcolumntype{M}[1]{>{\centering}m{#1}}
\captionsetup[table]{position=top}
\captionsetup[subtable]{position=top}


\begin{document}

        \begin{landscape}
        \begin{table}[H] 
            \centering
            \caption{caption}
            \label{tab:1}
            %1  
            \subfloat[subcaption]{
                \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
                    \hline
                    & a & b & c & d & e                                                                 \\ \hline               
                    i                                       & $5$ & $2$ & $2$ & $5$ & $3,2$ \tabularnewline \hline
                    ii                                      & $3$ & $3$ & $3$ & $2$ & $2,3$ \tabularnewline \hline
                \end{tabular}   }
            \subref{tab:a} 
            \qquad  
            %2          
            \subfloat[subcaption2]{
                \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
                    \hline
                    & f & g & h & i & j \tabularnewline \hline

                    i       & $4$ & $3$ & $3$ & $3$ & $2,125$ \tabularnewline \hline
                    ii      & $4$ & $4$ & $5$ & $4$ & $2,8$ \tabularnewline \hline
            \end{tabular}   }
            \subref{tab:b} 

        \end{table}     

        \qquad

        \begin{table}[H]
            \centering
            \ContinuedFloat
            \addtocounter{table}{0}
            \caption{caption (continued)}
            \label{tab:1_continued}
            %6
            \subfloat[subcaption3]{
                \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}|c|}
                    \hline
                    & k & l & m & n & o \tabularnewline \hline

                    i                   & $5$ & $5$ & $5$ & $5$ & $3,75$  \tabularnewline \hline
                    ii                  & $4$ & $3$ & $3$ & $3$ & $2,5$ \tabularnewline \hline
                \end{tabular}   }
            \subref{tab:c}

            \qquad

            \subfloat[subcaption4]{
                \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}|c|}
                    \hline
                    & p & q & r & s & t \tabularnewline \hline

                    i       & $5$ & $5$ & $5$ & $5$ & $3,75$ \tabularnewline \hline
                    ii      & $5$ & $5$ & $3$ & $3$ & $3,15$ \tabularnewline \hline
                    iii     & $3$ & $3$ & $5$ & $5$ & $2,85$ \tabularnewline \hline
            \end{tabular}   }
            \subref{tab:d}

        \end{table}

        random ref \ref{tab:c}

    \end{landscape}
\end{document}

在表格之间使用\newline或可以给我:\\

“这里没有结束的行。\newline”

它看起来是这样的:

无论我迄今为止尝试过什么。

答案1

  • 您提供的代码无法测试。遗漏的是文档类的类型,文档前言中有输入错误,文档正文中也有错误,遗漏了\end{landscape}。在上传到此处之前,请务必测试文档示例(MWE:最小工作示例),看它是否可以编译并消除所有发现的输入错误。
  • 正如我在评论中提到的,使用命令\ContinuedFloat的浮点标题在其使用的地方具有与前一个相同类型的浮点相同的数字。您的使用似乎是错误的,因为您在使用它的浮点之前没有相同类型的浮点。因此您的标题看起来像:

在此处输入图片描述

  • 似乎您混淆了\label\ref或 的功能subref。后两个用于引用带有标签的某物,这些标签指示最后使用的可引用计数器(如tablefiguresection)。如果您想要此功能,则需要先在这些计数器后插入标签。例如:\section{...}\label{sec:my section}并将其引用为例如 请参阅章节\ref{sec:my section}subfloats。在您的情况下,您需要在浮动标题后或标题内添加标签。请参阅下面的 MWE。
  • 不清楚为什么在\\代码中应该使用它们。要将一些放在\subfloat前一个下面,只需在它们之间插入空行即可。
\documentclass{article}
\usepackage{booktabs, ltxtable, tabularx}
\newcolumntype{M}[1]{>{\centering}m{#1}}
\usepackage{subfig}
\usepackage{pdflscape}

\begin{document}
    \begin{landscape}
\begin{table}[htb]
\centering
\subfloat[subcaption 1  \label{tab:1}]{
    \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
    \hline
    & a & b & c & d & e \tabularnewline 
    \hline
    \end{tabular}   }

\subfloat[subcaption 2  {tab:2}]{
    \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
    \hline
    & a & b & c & d & e \tabularnewline
    \hline
    \end{tabular}   }

\caption{overall-caption for the first part of image}
\label{tab:label}
\end{table}

\newpage % For put next "table" on the next page. In the real document it should be removed
\begin{table}[htb]
    \centering
    \ContinuedFloat
\subfloat[subcaption 3  \label{tab:3}]{
    \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
    \hline
    & a & b & c & d & e \tabularnewline
    \hline
    \end{tabular}   }

\subfloat[subcaption 4  \label{tab:4}]{
    \begin{tabular}{|M{3cm}|M{3cm}|M{3cm}|M{3cm}|M{3cm}| c| }
    \hline
    & a & b & c & d & e \tabularnewline
    \hline
    \end{tabular}   }
\caption{overall-caption}
\label{tab:label}
\end{table}
\end{landscape}

See table \ref{tab:label}, particularly its subtables \ref{tab:4}, \ref{tab:4}, \ref{tab:4} and \ref{tab:4} \dots
\end{document}

这使:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案2

感谢@Zarko,我理解了 \ContinuedFloat 命令,并使用 \ContinuedFloat 命令构建了几个带有表格的表格环境,这些表格会继续计数(按字母顺序),并使用 \addtocounter[table]{0} 停止表格的计数。为了引用子浮点数,我使用 \label 而不是 \subref,因为有些问号错误我还是不明白。

相关内容