我有一个关于 Latex 表格的问题。我花了两个小时试图找到解决方案,但无法用一个代码解决所有问题。所以我为所有问题都找到了单一的解决方案,但无法将它们整合在一起。
我添加了一些代码和图片来解释我最终想要的表格。不幸的是,有些地方我不喜欢,希望有人能帮助我。我想要:
- 线上下没有白色空间
- 我想调整行间距
- 表格的宽度应与我的文本宽度一致
- 我想根据自己指定的百分比调整所有列的宽度
- 在某些情况下,我希望第一列的颜色不同
- 我希望头部行中的文本为白色
- 我需要在表格中使用脚注。无论它们是在表格下方解释还是在页面底部解释都无所谓。
- 我想将包含数字的单元格的水平对齐方式更改为右对齐。
- 我愿意使用该软件包,因此如果需要的话,请随意提出另一个:-)
非常感谢您的帮助。
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{colortbl}
\definecolor{Gray}{rgb}{0.80784, 0.86667, 0.90196} %dunkelblau
\definecolor{Lightgray}{rgb}{0.9176, 0.95, 0.95686} %hellblau
\definecolor{Akzent}{rgb}{0.6627, 0.63529, 0.55294} %akzentfarbe
\begin{document}
\lipsum[2]
\begin{table}
\begin{center}
\begin{tabularx}{\textwidth}{p{.15\linewidth} p{.1\linewidth} p{.2\linewidth} p{.2\linewidth} X}
\toprule
\rowcolor{Akzent}
Category & Size & Maximum Takeoff Weight (MTOW) (kg) & Normal Operating Altitude (ft) & Airspeed (m/s)\\
\midrule
\rowcolor{Gray}
Group 1 & Small & 0 - 20 & < 1,200 AGL & < 100\\
\rowcolor{Lightgray}
Group 2 & Medium & 21 - 55 & < 3500 & < 250\footnote{Explanation}\\
\bottomrule
\end{tabularx}
\caption{Table}
\end{center}
\end{table}
\end{document}
答案1
这是看起来更漂亮的东西,尽管远非完美。点 1,这是由于在其规则上方和/或下方添加的填充booktabs
。因此,我不得不抑制此填充,并将其替换为\extrarowsep
,对于和\belowrulesep
,使用与下面相同厚度且与行颜色相同的规则,对于aboverulesep
。为了简化操作,我定义了一个\colourpadding
命令,带有一个参数,即所需的颜色。
\makegapedcells
使用中的命令可能有一个更简单的解决方案makecell
。不幸的是,它似乎与着色表不兼容。
要点2:有几种方法可以做到这一点。最简单的方法是更改 的值arraystretch
。它的不便之处在于,对于 bib 值,内容不再位于其单元格的中心。如有必要,您可以使用\arraystretch=some length
,这会在每行单元格的顶部添加一个长度。最后两个解决方案:makecell
有两个命令:\setcellgapes{some length}
和\makegapedcells}
,这会在表格中所有单元格的顶部和底部添加一个固定长度。它在这里不起作用。最后的解决方案:cellspace
定义最小单元格顶部与上方的线(或上方行的底部)之间的距离,以及单元格底部与下方的线之间的距离。
要点3。这样就完成了tabularx
。我更喜欢使用 3X
列,并稍微改变前两列的宽度。
要点4:我不明白你到底想要什么。
要点5:我认为您必须通过为第一列的每个单元格设置不同的颜色\cellcolor
。
要点6已经完成了。
第七点:脚注可以与包一起放在表格底部threeparttable
(threeparttablex
长表格除外)。对于通常的脚注,您可以使用tablefootnote
包。
要点 8。要使数字右对齐,您可以添加>{\raggedleft}
到列说明符,或选择S
列类型(加载siunitx
)。
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ragged2e, eqparbox}
\newcolumntype{M}[1]{>{\RaggedRight}m{#1} <{\hspace*{-1pt}}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage[table]{xcolor}
\definecolor{Gray}{rgb}{0.80784, 0.86667, 0.90196} %dunkelblau
\definecolor{Lightgray}{rgb}{0.9176, 0.95, 0.95686} %hellblau
\definecolor{Akzent}{rgb}{0.6627, 0.63529, 0.55294} %akzentfarbe
\newcommand{\whitehead}{\bfseries\color{white}}
\newcommand\colourpadding[1]{\addlinespace[-1pt]\arrayrulecolor{#1}\midrule[6pt]\arrayrulecolor{black}}
\begin{document}
\lipsum[2]
\begin{table}
\centering
\setlength\aboverulesep{0pt}
\setlength\belowrulesep{0pt}
\setlength\doublerulesep{0pt}
\setlength\extrarowheight{5pt}
\begin{tabularx}{\textwidth}{M{.12 \linewidth}M{.08\linewidth}*{3}{X}} \toprule
\rowcolor{Akzent}
\whitehead Category & \whitehead Size &\whitehead Maximum Takeoff Weight (MTOW) (kg) &\whitehead Normal Operating Altitude (ft) &\whitehead Airspeed (m/s)\\
\colourpadding{Akzent}
\midrule
\rowcolor{Gray}
Group 1 & Small & 0 – 20 & \eqmakebox[A][l]{< 1,200 AGL} & < 100\\
\colourpadding{Gray}
\rowcolor{Lightgray}
Group 2 & Medium & 21 – 55 & \eqmakebox[A][l]{< 3500} & < 250\rlap{\footnote{Explanation}}\\
\colourpadding{Lightgray}
\bottomrule
\end{tabularx}
\caption{Table}
\end{table}
\end{document}
答案2
利用boldline
来自希普诺夫用于线宽和celspace
单元格中额外垂直空间的捆绑:
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[table]{xcolor}
\definecolor{Gray}{rgb}{0.80784, 0.86667, 0.90196} %dunkelblau
\definecolor{Lightgray}{rgb}{0.9176, 0.95, 0.95686} %hellblau
\definecolor{Akzent}{rgb}{0.6627, 0.63529, 0.55294} %akzentfarbe
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\addparagraphcolumntypes{C}
\usepackage{boldline}% part of Shipunov bundle
\begin{document}
\lipsum[1]
\begin{table}[ht]
\centering
\newcommand\whitehead[1]{\textcolor{white}{\bfseries #1}}
\renewcommand\tabularxcolumn[1]{b{#1}}
\setlength\extrarowheight{4pt}
\begin{tabularx}{\textwidth}{Sl
l
*{3}{C}
}
\hlineB{2} % <-- defined in the package "boldline", thicknes=2pt
\rowcolor{gray}
\whitehead{Category}
& \whitehead{Size}
& \whitehead{Maximum Take-off Weight (MTOW) (kg)}
& \whitehead{Normal Operating Altitude (ft)}
& \whitehead{Airspeed (m/s)} \\
\hlineB{1}
\rowcolor{gray!10}
Group 1 & Small & 0 – 20 & < 1,200 AGL & < 100 \\
\rowcolor{gray!20}
Group 2 & Medium & 21 – 55 & < 3500 & < 250 \rlap{\footnote{Explanation}}\\
\hlineB{2}
\end{tabularx}
\caption{Table}
\end{table}
\lipsum[2]
\end{document}
答案3
{NiceTabular}
以下是的功能。nicematrix
的主要缺点{NiceTabular}
是它不能被破坏(像 一样longtable
)。
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage{nicematrix}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{enumitem}
\definecolor{Gray}{rgb}{0.80784, 0.86667, 0.90196} %dunkelblau
\definecolor{Lightgray}{rgb}{0.9176, 0.95, 0.95686} %hellblau
\definecolor{Akzent}{rgb}{0.6627, 0.63529, 0.55294} %akzentfarbe
\begin{document}
\lipsum[1]
\begin{table}
\NiceMatrixOptions{cell-space-top-limit=2pt}
\begin{NiceTabular}{m[l]{.12 \linewidth}m[l]{.08\linewidth}*{3}{X[m,c]}}[colortbl-like]
\toprule
\rowcolor{Akzent}
\RowStyle[color=white,bold]{\sffamily}
Category & Size & Maximum Takeoff Weight (MTOW) (kg) & Normal Operating Altitude (ft) & Airspeed (m/s)\\
\midrule
\rowcolor{Gray}
Group 1 & Small & 0 -- 20 & < 1,200 AGL & < 100\\
\rowcolor{Lightgray}
Group 2 & Medium & 21 -- 55 & < 3500 & < 250\tabularnote{Explanation}\\
\bottomrule
\end{NiceTabular}
\caption{Table}
\end{table}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。