LuaLaTeX - tabularx - 为什么这个表格不适合上一页?

LuaLaTeX - tabularx - 为什么这个表格不适合上一页?

看起来,表格在前一页(即我的文档的子部分标题所在的页面)上有足够的空间。通过将 arraystretch 减小到 1.15 左右,它将适合第一页,但看起来确实有点挤。

必须有某种设置来强制表格周围留出这么多空白,以便将其移到下一页。我正在寻找它。

  • 不幸的是,!h 或 b! 不是一个选项,我的导师明确禁止。
  • 我在 \begin{table} 之后尝试了所有其他定位选项,但都不起作用(除了 h!或 b!)
  • \vspace 和其他手动方法直接更改表格的垂直位置也是不行的。不要问我为什么,这是我第二次尝试通过这门课程(这些是我在第一次尝试中犯的“错误”)哈哈。
  • 哦,不幸的是,其他直接方法(如 \resizebox 等)也不受欢迎。

这是代码,不用担心表格中缺少卡片符号(方块、红心……)。在我的原始文件中,我有另一种包含这些符号的字体,但为了这个最小示例,我将其省略了。

\documentclass[paper=a4, fontsize=12pt, parskip=half, captions=tableabove]{scrartcl}

\usepackage[top=3.5cm, bottom=3.5cm, left=2.5cm, right=2.5cm]{geometry}

\usepackage[autostyle = true, german = quotes]{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\setotherlanguages{english}

\usepackage{ulem}
\usepackage[x11names]{xcolor}

\usepackage[plainheadsepline=true, plainfootsepline=true,  headsepline=0.6pt, footsepline=0.6pt]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles

\ohead{\headmark}
\automark{section}


\cfoot{\pagemark}


\usepackage[font=singlespacing]{caption}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}


\begin{document}

\subsubsection{random subsubsection}

%Math mode for percentages
\newcolumntype{O}{>{$\displaystyle\RaggedLeft}X<{$}}

\begin{table}[hb]

        \caption{Rangfolge der Pokerhände aufsteigend}
        
        \renewcommand{\arraystretch}{1.5}

        
        \belowrulesep=0pt
        \aboverulesep=0pt
        
        \centering
        
        \begin{tabularx}{\textwidth}{
        >{\RaggedRight\arraybackslash}X|
        >{\RaggedRight\arraybackslash}X
        c
        >{\RaggedRight\arraybackslash}X
        O
        }
        
        \toprule

    %erste Zeile
            Name                        &   Bedeutung                           &   \multicolumn{1}{>{\RaggedRight\arraybackslash}X}{Beispiel}             &   Entscheidungskriterium      &   \multicolumn{1}{>{\RaggedRight\arraybackslash}X}{Wahrscheinlichkeit} \\
            
    
        \cmidrule(r{10pt}){1-1} \cmidrule(l){2-5}
        
    %restliche Zeilen
            Höchste Karte               &   Keine der unteren Kombinationen     &   A♠ {\color{red}K♦} J♠ 7♣ 4♣                             &   Höhe der einzelnen Karten               &   17,41 \% \\
            
            Ein Paar (One Pair)         &   Zwei Karten gleichen Wertes         &   10♠ {\color{red}10♥} J♦ 8♣ {\color{red}6♥}              &   Höhe des Paars + Beikarten              &   43,83 \% \\
            
            Zwei Paare (Two Pair)       &   Zwei Paare                          &   {\color{red}J♦} J♠ 8♣ 8♠ A♠                             &   Höhe der Paare + Beikarten              &   23,50 \% \\
            
            Drilling \\(Three of a Kind)  &   Drei Karten gleichen Wertes         &   Q♣ {\color{red}Q♥} Q♠ {\color{red}A♥} 4♣                &   Höhe des Drillings + Beikarten          &   4,83 \% \\
            
            Straße (Straight)           &   Fünf Karten in einer Reihe          &   {\color{red}7♥} 8♣ {\color{red}9♦ 10♥} J♠               &   Höchste Karte                           &   4,62 \% \\
            
            Flush                       &   Fünf Karten in einer Farbe          &   3♠ 5♠ 8♠ 9♠ K♠                                          &   Höhe der einzelnen Karten               &   3,03 \% \\
            
            Full House                  &   Ein Drilling und ein Paar           &   {\color{red}K♥} K♣ {\color{red}K♦} 9♠ {\color{red}9♦}   &   Höhe des Drillings und Höhe des Paars   &   2,60 \% \\
            
            Four of a Kind              &   Vier Karten gleichen Wertes         &   A♣ {\color{red}A♦ A♥} A♠ 4♠                             &   Höhe des Vierlings und der Beikarte     &   0,17 \% \\
            
            Straight Flush              &   Straße in einer Farbe               &   8♣ 9♣ 10♣ J♣ Q♣                                         &   Höchste Karte                           &   0,028 \% \\
            
            Royal Flush                 &   Straße in einer Farbe, Zehn bis Ass   &   {\color{red}10♦ J♦ Q♦ K♦ A♦}                            &   Split Pot                               &   0,003 \% \\
            

            \bottomrule
            
        \end{tabularx}
        \label{tab:Rangfolge der Pokerhände aufsteigend}
        
\end{table}

\end{document}

这是最终的表格,目前单独放在一个页面上。观察表格上方和下方的大量空白。

在此处输入图片描述

答案1

LaTeX 限制了页面上浮动元素的大小。具体来说,该参数\textfraction指定了为文本保留的页面的最小量(因此不能由浮动元素使用)。默认值为 0.2,因此最多 80% 的页面空间可以由浮动元素使用。查看 LaTeX 文档以了解其他参数。您的问题可以通过以下方法解决

\renewcommand{\textfraction}{0.0}

答案2

仅对解决方案的哲学有一条长篇评论:

!h或者b!不是一个选择,不幸的是,我的导师明确禁止这样做。

浮动规则的原因是尽可能避免糟糕的文档布局,而您的表格高度迫切需要专门的页面。如果一个页面有一个大表格,表格前后只有几行文本,那简直太糟糕了。!为了获得良好的设计,选择就是忽略规则,所以我非常理解这位导师,但任何其他以其他方式执行相同操作的解决方案,如减少,\textfraction对于这个浮动来说同样糟糕,对于下一个浮动来说也可能更糟糕,而这!是一个准时的“违规行为”,在某些情况下可能有意义,在这方面更好,但不是最好的。

哦,不幸的是,其他直接方法(如 \resizebox 等)也不受欢迎。

很不幸,为什么?调整表格大小是最糟糕的解决方案,它会产生粗细不定、字体大小不一的表格,破坏文档的一致性。如果您需要较小的表格,切勿尝试对表格进行负缩放,只需将表格的字体缩小到\small\footnotesize,或者重新设计表格(有趣的是,Mico 在写这篇文章时就发布了这个解决方案。)

另一个解决方案是重新考虑整个文档的布局:一个部分直接用一个大表格出现而没有任何解释,这样好吗?用表格开始一个部分很奇怪。即使该部分的内容只是表格,最好在表格中添加一些介绍性文字,并允许浮动移动到下一页,即使这意味着将表格放在下一节之后,因为交叉引用(即,)应该..whatever (table \ref{tab:Rangfolge der Pokerhände aufsteigend})足以避免对该表格的相关位置产生疑问。

(边注:使用更简单的标签,你会更快乐)

答案3

与浮点数相关的参数列表(基于来源:LaTeX 2e 版标准文档类别*,第 17 页):

范围 描述 如何改变
\topfraction 这表示文本页面顶部浮动元素可占据的最大部分。 \renewcommand\topfraction{.7}
\bottomfraction 这表示文本页面底部浮动元素可占据的最大部分。 \renewcommand\bottomfraction{.3}
\textfraction 这表示文本页面中必须被文本占据的最小部分。 \renewcommand\textfraction{.2}
\floatpagefraction 这表示在产生“浮动页面”之前,浮动对象必须占据页面的最小部分。 \renewcommand\floatpagefraction{.5}

LaTeX 由用户给出的限制([hb]仅接受“此处”和“页面底部”)也必须与参数给出的限制相匹配。在默认设置下,浮动超出了浮动专用的可用空间。然后,浮动被放入队列中。由于其大小,它永远不会匹配任何页面的限制,因此很可能被放置在文档末尾的附加页面上,即第二页。

以下设置放宽了限制

\renewcommand\textfraction{.1}
\renewcommand\bottomfraction{.9}

请参阅下面的示例,其中我使用了上述设置。即使我在部分和表格之间添加了一个段落,浮动仍然会放在同一页面上

在此处输入图片描述

\documentclass[paper=a4, fontsize=12pt, parskip=half, captions=tableabove]{scrartcl}

\usepackage[top=3.5cm, bottom=3.5cm, left=2.5cm, right=2.5cm]{geometry}

\usepackage[autostyle = true, german = quotes]{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\setotherlanguages{english}

\usepackage{ulem}
\usepackage[x11names]{xcolor}

\usepackage[plainheadsepline=true, plainfootsepline=true,  headsepline=0.6pt, footsepline=0.6pt]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles

\ohead{\headmark}
\automark{section}


\cfoot{\pagemark}


\usepackage[font=singlespacing]{caption}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}

\renewcommand\textfraction{.1}
\renewcommand\bottomfraction{.9}

\usepackage{kantlipsum}   %<--- added

\begin{document}
\subsubsection{random subsubsection}
\kant[6][1-2]   %<--- Added

%Math mode for percentages
\newcolumntype{O}{>{$\displaystyle\RaggedLeft}X<{$}}

\begin{table}[hb]

  \caption{Rangfolge der Pokerhände aufsteigend}

  \renewcommand{\arraystretch}{1.5}


  \belowrulesep=0pt
  \aboverulesep=0pt

  \centering

  \begin{tabularx}{\textwidth}{
      >{\RaggedRight\arraybackslash}X|
      >{\RaggedRight\arraybackslash}X
    c
      >{\RaggedRight\arraybackslash}X
    O
  }

    \toprule

    %erste Zeile
    Name                        &   Bedeutung                           &   \multicolumn{1}{>{\RaggedRight\arraybackslash}X}{Beispiel}             &   Entscheidungskriterium      &   \multicolumn{1}{>{\RaggedRight\arraybackslash}X}{Wahrscheinlichkeit} \\
    \cmidrule(r{10pt}){1-1} \cmidrule(l){2-5}
    %restliche Zeilen
    Höchste Karte                 & Keine der unteren Kombinationen       & A♠ {\color{red}K♦} J♠ 7♣ 4♣                           & Höhe der einzelnen Karten             & 17,41 \% \\
    Ein Paar (One Pair)           & Zwei Karten gleichen Wertes           & 10♠ {\color{red}10♥} J♦ 8♣ {\color{red}6♥}            & Höhe des Paars + Beikarten            & 43,83 \% \\
    Zwei Paare (Two Pair)         & Zwei Paare                            & {\color{red}J♦} J♠ 8♣ 8♠ A♠                           & Höhe der Paare + Beikarten            & 23,50 \% \\
    Drilling \\(Three of a Kind)  & Drei Karten gleichen Wertes           & Q♣ {\color{red}Q♥} Q♠ {\color{red}A♥} 4♣              & Höhe des Drillings + Beikarten        & 4,83 \% \\
    Straße (Straight)             & Fünf Karten in einer Reihe            & {\color{red}7♥} 8♣ {\color{red}9♦ 10♥} J♠             & Höchste Karte                         & 4,62 \% \\
    Flush                         & Fünf Karten in einer Farbe            & 3♠ 5♠ 8♠ 9♠ K♠                                        & Höhe der einzelnen Karten             & 3,03 \% \\
    Full House                    & Ein Drilling und ein Paar             & {\color{red}K♥} K♣ {\color{red}K♦} 9♠ {\color{red}9♦} & Höhe des Drillings und Höhe des Paars & 2,60 \% \\
    Four of a Kind                & Vier Karten gleichen Wertes           & A♣ {\color{red}A♦ A♥} A♠ 4♠                           & Höhe des Vierlings und der Beikarte   & 0,17 \% \\
    Straight Flush                & Straße in einer Farbe                 & 8♣ 9♣ 10♣ J♣ Q♣                                       & Höchste Karte                         & 0,028 \% \\
    Royal Flush                   & Straße in einer Farbe, Zehn bis Ass   & {\color{red}10♦ J♦ Q♦ K♦ A♦}                          & Split Pot                             & 0,003 \% \\


    \bottomrule

  \end{tabularx}
  \label{tab:Rangfolge der Pokerhände aufsteigend}

\end{table}

\end{document}

更新。
看来你的导师希望你用标准方法学习 LaTeX。技巧留到以后再学,直到你学会并理解了基础知识。我会选择同样的方法。

表格太冗长了,在我看来,您唯一能想到的就是增加包含长短语的列的宽度;如果有必要,还可以减小整个表格的字体大小。然后,行将减少到两行。表格应该适合您的页面,无需任何非标准更改。因为您不能使用,\hsize并且仍然需要控制特定列的宽度,所以我将您真正需要的加倍tabularx;也许可以将其用作最后一列的“填充”。

我或多或少按照上面的建议做了。我将字体大小改为,\footnotesize并使用固定长度增加了列宽,p{}下面是表格

在此处输入图片描述

\documentclass[paper=a4, fontsize=12pt, parskip=half, captions=tableabove]{scrartcl}
\usepackage[top=3.5cm, bottom=3.5cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage[font=singlespacing]{caption}
    \captionsetup[table]{position=top, skip=3pt}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{ragged2e,microtype}
\usepackage[autostyle = true, german = quotes]{csquotes}
\usepackage{polyglossia}
    \setdefaultlanguage{german}
    \setotherlanguages{english}
\usepackage{ulem}
\usepackage[x11names]{xcolor}
\usepackage[
  plainheadsepline=true,
  plainfootsepline=true,
  headsepline=0.6pt,
  footsepline=0.6pt,
]{scrlayer-scrpage}

\clearpairofpagestyles
\automark{section}
\ohead{\headmark}
\cfoot{\pagemark}
\pagestyle{scrheadings}

% Added
\renewcommand{\tabularxcolumn}[1]{>{\footnotesize}p{#1}}
\newcommand\xthead[1]{\small#1}
\newcolumntype{P}[1]{>{\footnotesize\RaggedRight}p{#1}}

\begin{document}
\section{Random section}

\begingroup
  \renewcommand{\arraystretch}{1.4}
  \belowrulesep=0pt
  \aboverulesep=0pt
  \begin{table}[hb]
    \caption{Rangfolge der Pokerhände aufsteigend}
    \centering
    \begin{tabularx}{\textwidth}{P{2.4cm} c | P{3.2cm} c P{3.2cm} >{\Centering}X}
      \toprule
      %erste Zeile
      \xthead{Name}
        && \xthead{Bedeutung}
        & \xthead{Beispiel}
        & \xthead{Entscheidungskriterium}
        & \xthead{Wahrschein-\newline lichkeit (\%)} \\
      \cmidrule(r{-6pt}){1-1} \cmidrule(l{6pt}){3-6}
      %restliche Zeilen
      Höchste Karte                       && Keine der unteren Kombinationen       & A♠ {\color{red}K♦} J♠ 7♣ 4♣                           & Höhe der einzelnen Karten             & 17,41 \\
      Ein Paar\newline (One Pair)         && Zwei Karten gleichen Wertes           & 10♠ {\color{red}10♥} J♦ 8♣ {\color{red}6♥}            & Höhe des Paars\newline+ Beikarten     & 43,83 \\
      Zwei Paare\newline(Two Pair)        && Zwei Paare                            & {\color{red}J♦} J♠ 8♣ 8♠ A♠                           & Höhe der Paare\newline+ Beikarten     & 23,50 \\
      Drilling\newline (Three of a Kind)  && Drei Karten gleichen Wertes           & Q♣ {\color{red}Q♥} Q♠ {\color{red}A♥} 4♣              & Höhe des Drillings\newline+ Beikarten & 4,83  \\
      Straße\newline(Straight)            && Fünf Karten in einer Reihe            & {\color{red}7♥} 8♣ {\color{red}9♦ 10♥} J♠             & Höchste Karte                         & 4,62  \\
      Flush                               && Fünf Karten in einer Farbe            & 3♠ 5♠ 8♠ 9♠ K♠                                        & Höhe der einzelnen Karten             & 3,03  \\
      Full House                          && Ein Drilling und ein Paar             & {\color{red}K♥} K♣ {\color{red}K♦} 9♠ {\color{red}9♦} & Höhe des Drillings und Höhe des Paars & 2,60  \\
      Four of a Kind                      && Vier Karten gleichen Wertes           & A♣ {\color{red}A♦ A♥} A♠ 4♠                           & Höhe des Vierlings und der Beikarte   & 0,17  \\
      Straight Flush                      && Straße in einer Farbe                 & 8♣ 9♣ 10♣ J♣ Q♣                                       & Höchste Karte                         & 0,028 \\
      Royal Flush                         && Straße in einer Farbe, Zehn bis Ass   & {\color{red}10♦ J♦ Q♦ K♦ A♦}                          & Split Pot                             & 0,003 \\


      \bottomrule

    \end{tabularx}
    \label{tab:Rangfolge der Pokerhände aufsteigend}
  \end{table}
\endgroup
\end{document}

答案4

导师可能禁止了[h!],但他/她也没有禁止[h],对吧?如果是这样,重新分配列宽足以使表格以及子小节级标题适合页面。 的唯一用途[h]是确保表格位于子小节级标题下方而不是上方。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass[paper=a4, 
               fontsize=12pt, 
               parskip=half, 
               captions=tableabove]{scrartcl}

\usepackage[vmargin=3.5cm, hmargin=2.5cm]{geometry}

\usepackage[autostyle = true, german = quotes]{csquotes}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\setotherlanguages{english}

\usepackage{ulem}
\usepackage[x11names]{xcolor}

\usepackage[plainheadsepline=true, 
            plainfootsepline=true, 
            headsepline=0.6pt, 
            footsepline=0.6pt]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles

\ohead{\headmark}
\automark{section}
\cfoot{\pagemark}

\usepackage[font=singlespacing,skip=0.333\baselineskip]{caption}
\usepackage{setspace,booktabs}

\usepackage{tabularx,ragged2e}
%% Define a variable-width X-type column type:
\newcolumntype{L}[1]{>{\RaggedRight\hsize=#1\hsize}X}

\begin{document}
\setcounter{section}{3}    % just for this example
\setcounter{subsection}{2} % just for this example
\subsubsection{Random subsubsection}

\begin{table}[h]
\caption{Rangfolge der Pokerhände aufsteigend}
\label{tab:Rangfolge der Pokerhände aufsteigend}

\begin{tabularx}{\textwidth}{@{} L{1} L{1.12} l L{1.1} L{0.78} @{}}
% rule: sum of arguments (1+1.12+1.1+0.78=4) must equal # of X-type cols (4)

\toprule

% erste Zeile
Name & Bedeutung & Beispiel & Entscheidungskriterium & Wahrscheinlichkeit \\
 
\midrule
 
% restliche Zeilen
Höchste Karte & Keine der unteren Kombinationen & A♠ {\color{red}K♦} J♠ 7♣ 4♣ & Höhe der einzelnen Karten & 17,41\,\% \\ \addlinespace
 
Ein Paar \newline (One Pair) & Zwei Karten gleichen Wertes & 10♠ {\color{red}10♥} J♦ 8♣ {\color{red}6♥} & Höhe des Paars + Beikarten & 43,83\,\% \\ \addlinespace
 
Zwei Paare \newline (Two Pair) & Zwei Paare & {\color{red}J♦} J♠ 8♣ 8♠ A♠ & Höhe der Paare + Beikarten & 23,50\,\% \\ \addlinespace
 
Drilling (Three of a Kind) & Drei Karten gleichen Wertes & Q♣ {\color{red}Q♥} Q♠ {\color{red}A♥} 4♣ & Höhe des Drillings + Beikarten & 4,83\,\% \\ \addlinespace
 
Straße \newline (Straight) & Fünf Karten in einer Reihe & {\color{red}7♥} 8♣ {\color{red}9♦ 10♥} J♠ & Höchste Karte & 4,62\,\% \\ \addlinespace
 
Flush & Fünf Karten in einer Farbe & 3♠ 5♠ 8♠ 9♠ K♠ & Höhe der einzelnen Karten & 3,03\,\% \\ \addlinespace
 
Full House & Ein Drilling und ein Paar & {\color{red}K♥} K♣ {\color{red}K♦} 9♠ {\color{red}9♦} & Höhe des Drillings und Höhe des Paars & 2,60\,\% \\ \addlinespace
 
Vierling (Four of a Kind) & Vier Karten gleichen Wertes & A♣ {\color{red}A♦ A♥} A♠ 4♠ & Höhe des Vierlings und der Beikarte & 0,17\,\% \\ \addlinespace
 
Straight Flush & Straße in einer Farbe & 8♣ 9♣ 10♣ J♣ Q♣ & Höchste Karte & 0,028\,\% \\ \addlinespace
 
Royal Flush & Straße in einer Farbe, 10 bis Ass & {\color{red}10♦ J♦ Q♦ K♦ A♦} & Split Pot & 0,003\,\% \\

\bottomrule

\end{tabularx} 
\end{table}
\end{document}

相关内容