更改表格/表格环境的位置说明符会破坏 LaTeX 中的行距 - 可能与包 setspace 发生冲突

更改表格/表格环境的位置说明符会破坏 LaTeX 中的行距 - 可能与包 setspace 发生冲突

(注意:我已经在 stackoverflow 上发布了这个问题,因为表格是用 Python 生成的,但这可能是一个错误。一旦我得到答案,我就会从最合适的网站上删除重复的问题)。

我正在做一份报告,其中展示了几个表格,这些表格几乎占了一页,但仍有一些空间可以写一段。我想使用[h](或类似的,例如[ht]位置说明符允许 LaTeX 管理剩余空间,但是当我更改说明符(从[H],这是唯一保持正确行距的说明符)时,行距被压缩,我不明白为什么也不知道如何纠正这个问题。

下面是我正在使用的代码版本(精简版并适合于文章):

\documentclass{article}

\usepackage{setspace} % for custom spacing (spaces)
\setstretch{1.3} % for custom spacing
% Tables
\usepackage{multicol}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{rotating}
\usepackage{float}
\usepackage{adjustbox}


\usepackage{lipsum} 

\AtBeginEnvironment{tabular}{\footnotesize} 

\begin{document}
Test here
\begin{table}[H]
  \centering
  \caption{My table with \textit{H} option}
  %\begin{adjustbox}{max width=\textwidth}
  \begin{tabular}{@{}llrrrrr@{}}
  \toprule
  {\textbf{Dataset}} & {\textbf{Model}} & {\textbf{F-1}} & {\textbf{F-2}} & {\textbf{F-3}} & {\textbf{F-4}} & {\textbf{F-5}}\\
  \midrule 
  \multirow[c]{8}{*}{\textit{Dataset1}} & Model0 & 0.805 & 0.800 & 0.840 & 0.817 & 0.853 \\
   & Model1 & 0.839 & 0.813 & 0.855 & 0.879 & 0.822 \\
   & Model2 & 0.840 & 0.811 & 0.855 & 0.880 & 0.825 \\
   & Model3 & 0.845 & 0.812 & 0.849 & 0.806 & 0.843 \\
   & Model4 & 0.846 & 0.814 & 0.850 & 0.808 & 0.844 \\
   \cline{2-7}
  & Model5 & 0.840 & 0.817 & 0.857 & 0.879 & 0.818 \\
   & Model6 & 0.807 & 0.891 & 0.835 & 0.816 & 0.857 \\
   & Model7 & 0.828 & 0.803 & 0.844 & 0.889 & 0.828 \\
  \midrule
  \multirow[c]{8}{*}{\textit{Dataset2}} & Model0 & 0.448 & 0.417 & 0.659 & 0.376 & 0.477 \\
   & Model1 & 0.488 & 0.424 & 0.682 & 0.412 & 0.432 \\
   & Model2 & 0.493 & 0.424 & 0.682 & 0.411 & 0.430 \\
   & Model3 & 0.637 & 0.487 & 0.724 & 0.467 & 0.703 \\
   & Model4 & 0.639 & 0.483 & 0.724 & 0.463 & 0.702 \\
   \cline{2-7}
  & Model5 & 0.481 & 0.429 & 0.682 & 0.403 & 0.416 \\
   & Model6 & 0.452 & 0.419 & 0.657 & 0.380 & 0.475 \\
   & Model7 & 0.495 & 0.467 & 0.701 & 0.437 & 0.664 \\
  \midrule
  \multirow[c]{8}{*}{\textit{Dataset3}} & Model0 & 0.885 & 0.806 & 0.829 & 0.793 & 0.811 \\
   & Model1 & 0.814 & 0.815 & 0.840 & 0.851 & 0.872 \\
   & Model2 & 0.814 & 0.812 & 0.837 & 0.851 & 0.872 \\
   & Model3 & 0.838 & 0.819 & 0.850 & 0.809 & 0.839 \\
   & Model4 & 0.837 & 0.818 & 0.849 & 0.808 & 0.838 \\
   \cline{2-7}
  & Model5 & 0.810 & 0.816 & 0.840 & 0.843 & 0.863 \\
   & Model6 & 0.885 & 0.805 & 0.828 & 0.794 & 0.812 \\
   & Model7 & 0.820 & 0.806 & 0.841 & 0.887 & 0.820 \\
  \midrule
  \multirow[c]{8}{*}{\textit{Dataset4}} & Model0 & 0.811 & 0.850 & 0.834 & 0.732 & 0.806 \\
   & Model1 & 0.826 & 0.824 & 0.841 & 0.754 & 0.870 \\
   & Model2 & 0.824 & 0.818 & 0.839 & 0.746 & 0.865 \\
   & Model3 & 0.845 & 0.796 & 0.838 & 0.791 & 0.833 \\
   & Model4 & 0.845 & 0.799 & 0.838 & 0.793 & 0.833 \\
   \cline{2-7}
  & Model5 & 0.851 & 0.873 & 0.851 & 0.826 & 0.802 \\
   & Model6 & 0.810 & 0.842 & 0.826 & 0.730 & 0.804 \\
   & Model7 & 0.843 & 0.827 & 0.841 & 0.812 & 0.827 \\
  \bottomrule
  \end{tabular}
  %\end{adjustbox}
  \end{table}
  
  \lipsum[1]

  \begin{table}[ht]
    \centering
    \caption{My table with \textit{ht} option}
    %\begin{adjustbox}{max width=\textwidth}
    \begin{tabular}{@{}llrrrrr@{}}
    \toprule
    {\textbf{Dataset}} & {\textbf{Model}} & {\textbf{F-1}} & {\textbf{F-2}} & {\textbf{F-3}} & {\textbf{F-4}} & {\textbf{F-5}}\\
    \midrule 
    \multirow[c]{8}{*}{\textit{Dataset1}} & Model0 & 0.805 & 0.800 & 0.840 & 0.817 & 0.853 \\
     & Model1 & 0.839 & 0.813 & 0.855 & 0.879 & 0.822 \\
     & Model2 & 0.840 & 0.811 & 0.855 & 0.880 & 0.825 \\
     & Model3 & 0.845 & 0.812 & 0.849 & 0.806 & 0.843 \\
     & Model4 & 0.846 & 0.814 & 0.850 & 0.808 & 0.844 \\
     \cline{2-7}
    & Model5 & 0.840 & 0.817 & 0.857 & 0.879 & 0.818 \\
     & Model6 & 0.807 & 0.891 & 0.835 & 0.816 & 0.857 \\
     & Model7 & 0.828 & 0.803 & 0.844 & 0.889 & 0.828 \\
    \midrule
    \multirow[c]{8}{*}{\textit{Dataset2}} & Model0 & 0.448 & 0.417 & 0.659 & 0.376 & 0.477 \\
     & Model1 & 0.488 & 0.424 & 0.682 & 0.412 & 0.432 \\
     & Model2 & 0.493 & 0.424 & 0.682 & 0.411 & 0.430 \\
     & Model3 & 0.637 & 0.487 & 0.724 & 0.467 & 0.703 \\
     & Model4 & 0.639 & 0.483 & 0.724 & 0.463 & 0.702 \\
     \cline{2-7}
    & Model5 & 0.481 & 0.429 & 0.682 & 0.403 & 0.416 \\
     & Model6 & 0.452 & 0.419 & 0.657 & 0.380 & 0.475 \\
     & Model7 & 0.495 & 0.467 & 0.701 & 0.437 & 0.664 \\
    \midrule
    \multirow[c]{8}{*}{\textit{Dataset3}} & Model0 & 0.885 & 0.806 & 0.829 & 0.793 & 0.811 \\
     & Model1 & 0.814 & 0.815 & 0.840 & 0.851 & 0.872 \\
     & Model2 & 0.814 & 0.812 & 0.837 & 0.851 & 0.872 \\
     & Model3 & 0.838 & 0.819 & 0.850 & 0.809 & 0.839 \\
     & Model4 & 0.837 & 0.818 & 0.849 & 0.808 & 0.838 \\
     \cline{2-7}
    & Model5 & 0.810 & 0.816 & 0.840 & 0.843 & 0.863 \\
     & Model6 & 0.885 & 0.805 & 0.828 & 0.794 & 0.812 \\
     & Model7 & 0.820 & 0.806 & 0.841 & 0.887 & 0.820 \\
    \midrule
    \multirow[c]{8}{*}{\textit{Dataset4}} & Model0 & 0.811 & 0.850 & 0.834 & 0.732 & 0.806 \\
     & Model1 & 0.826 & 0.824 & 0.841 & 0.754 & 0.870 \\
     & Model2 & 0.824 & 0.818 & 0.839 & 0.746 & 0.865 \\
     & Model3 & 0.845 & 0.796 & 0.838 & 0.791 & 0.833 \\
     & Model4 & 0.845 & 0.799 & 0.838 & 0.793 & 0.833 \\
     \cline{2-7}
    & Model5 & 0.851 & 0.873 & 0.851 & 0.826 & 0.802 \\
     & Model6 & 0.810 & 0.842 & 0.826 & 0.730 & 0.804 \\
     & Model7 & 0.843 & 0.827 & 0.841 & 0.812 & 0.827 \\
    \bottomrule
    \end{tabular}
    %\end{adjustbox}
    \end{table}
    
\end{document}

这是具有正确尺寸表格的页面图像(使用 制作[H]): 在此处输入图片描述

下面是一个包含错误尺寸表格的页面图片(使用 制作[ht]): 在此处输入图片描述

如何在不破坏行距的情况下更改表格的位置说明符?

补充说明:我注意到这个问题来自于使用包设置空间(不知何故只适用于H表格位置说明符),但我确实需要使用这个包,否则文本会过于压缩。有人知道我该如何解决这个问题吗?

答案1

精确选择setspace在浮动中恢复单倍间距。由于[H]实际上没有浮动,因此不会发生恢复。

您可以通过改回相关命令来“修复”这个问题。

\documentclass{article}

\usepackage{setspace} % for custom spacing (spaces)
\usepackage{multirow}
\usepackage{booktabs}

% cancel the modification by setspace
\makeatletter
\let\@xfloat\latex@xfloat
\makeatother

% all tabulars in footnote size -- are you really sure?
\AtBeginEnvironment{tabular}{\footnotesize}

\setstretch{1.3} % for custom spacing

\begin{document}

\begin{table}[ht]
\centering

\caption{My table with \textit{ht} option}

\begin{tabular}{@{}llrrrrr@{}}
\toprule
{\textbf{Dataset}} & {\textbf{Model}} & {\textbf{F-1}} & {\textbf{F-2}} &
 {\textbf{F-3}} & {\textbf{F-4}} & {\textbf{F-5}}\\
\midrule 
\multirow[c]{8}{*}{\textit{Dataset1}}
 & Model0 & 0.805 & 0.800 & 0.840 & 0.817 & 0.853 \\
 & Model1 & 0.839 & 0.813 & 0.855 & 0.879 & 0.822 \\
 & Model2 & 0.840 & 0.811 & 0.855 & 0.880 & 0.825 \\
 & Model3 & 0.845 & 0.812 & 0.849 & 0.806 & 0.843 \\
 & Model4 & 0.846 & 0.814 & 0.850 & 0.808 & 0.844 \\
 \cline{2-7}
 & Model5 & 0.840 & 0.817 & 0.857 & 0.879 & 0.818 \\
 & Model6 & 0.807 & 0.891 & 0.835 & 0.816 & 0.857 \\
 & Model7 & 0.828 & 0.803 & 0.844 & 0.889 & 0.828 \\
\midrule
\multirow[c]{8}{*}{\textit{Dataset2}}
 & Model0 & 0.448 & 0.417 & 0.659 & 0.376 & 0.477 \\
 & Model1 & 0.488 & 0.424 & 0.682 & 0.412 & 0.432 \\
 & Model2 & 0.493 & 0.424 & 0.682 & 0.411 & 0.430 \\
 & Model3 & 0.637 & 0.487 & 0.724 & 0.467 & 0.703 \\
 & Model4 & 0.639 & 0.483 & 0.724 & 0.463 & 0.702 \\
 \cline{2-7}
 & Model5 & 0.481 & 0.429 & 0.682 & 0.403 & 0.416 \\
 & Model6 & 0.452 & 0.419 & 0.657 & 0.380 & 0.475 \\
 & Model7 & 0.495 & 0.467 & 0.701 & 0.437 & 0.664 \\
\midrule
\multirow[c]{8}{*}{\textit{Dataset3}}
 & Model0 & 0.885 & 0.806 & 0.829 & 0.793 & 0.811 \\
 & Model1 & 0.814 & 0.815 & 0.840 & 0.851 & 0.872 \\
 & Model2 & 0.814 & 0.812 & 0.837 & 0.851 & 0.872 \\
 & Model3 & 0.838 & 0.819 & 0.850 & 0.809 & 0.839 \\
 & Model4 & 0.837 & 0.818 & 0.849 & 0.808 & 0.838 \\
 \cline{2-7}
 & Model5 & 0.810 & 0.816 & 0.840 & 0.843 & 0.863 \\
 & Model6 & 0.885 & 0.805 & 0.828 & 0.794 & 0.812 \\
 & Model7 & 0.820 & 0.806 & 0.841 & 0.887 & 0.820 \\
\midrule
\multirow[c]{8}{*}{\textit{Dataset4}}
 & Model0 & 0.811 & 0.850 & 0.834 & 0.732 & 0.806 \\
 & Model1 & 0.826 & 0.824 & 0.841 & 0.754 & 0.870 \\
 & Model2 & 0.824 & 0.818 & 0.839 & 0.746 & 0.865 \\
 & Model3 & 0.845 & 0.796 & 0.838 & 0.791 & 0.833 \\
 & Model4 & 0.845 & 0.799 & 0.838 & 0.793 & 0.833 \\
 \cline{2-7}
 & Model5 & 0.851 & 0.873 & 0.851 & 0.826 & 0.802 \\
 & Model6 & 0.810 & 0.842 & 0.826 & 0.730 & 0.804 \\
 & Model7 & 0.843 & 0.827 & 0.841 & 0.812 & 0.827 \\
\bottomrule
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

我认为,并不是很漂亮。

答案2

如果有人遇到同样的问题,我将在这里留下对我有用的解决方案:

根据@egreg的说法,浮点数中的单倍间距被恢复,这消除了对 的精确选择setspace。由于[H]并不是真正的浮点数,所以在这种情况下不会发生恢复,但它会发生在其他定位符说明符中。

通过@campa 链接,我找到了一种更简单的“修复”方法来解决此行为,即\setstretch在每个表格环境中强制执行:

\AtBeginEnvironment{tabular}{\footnotesize} % already in code
\AtBeginEnvironment{tabular}{\setstretch{1.2}} % add this line

相关内容