看起来,表格在前一页(即我的文档的子部分标题所在的页面)上有足够的空间。通过将 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}