指定表格的行高

指定表格的行高

我需要画一个tabular像这样的

在此处输入图片描述

所有行都可以是小于 1 的行拉伸(我设置为 0.5),以便适合页面上的整个表格。除前三行不同的其他行的高度,为了整齐,应该等于最后一行的自然高度。

我写的代码如下

\documentclass{article}
\usepackage{booktabs,multirow,array,caption}

\begin{document}
\begin{table}\renewcommand{\arraystretch}{0.5}
\captionof{table}{Budget Plan 2015--2017}
\begin{tabular}{cc*{6}{>{\centering\arraybackslash}m{3em}}}
\toprule
row 1&\multirow{3}*[-1ex]{\textbf{Project}}&\multicolumn{6}{c}{\textbf{Year}}
\\\cmidrule{3-7}
row 2&&\multicolumn{2}{c}{2015}&\multicolumn{2}{c}{2016}&\multicolumn{2}{c}{2017}
\\\cmidrule{3-7}
row 3&&\pounds&\$&\pounds&\$&\pounds&\$\\\midrule
row 4&Investment Costs&60&60&60&60&60&60\\\midrule
row 5&Operating Costs&60&60&60&60&60&60\\\midrule
\vdots&\vdots\\\midrule
\multirow{2}*{row 6}&Industrial/Commercial&\multirow{2}*{60}\\
&Contract\\
\bottomrule
\end{tabular}\end{table}
\end{document}

如何在指定线拉伸的情况下使各行高度相等?

答案1

像这样吗?

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{booktabs,multirow,array,caption}
\newcolumntype{N}{@{}m{0pt}@{}}

\begin{document}
\begin{table}\renewcommand{\arraystretch}{0.5}
\caption{Budget Plan 2015--2017}
\begin{tabular}{cc*{6}{>{\centering\arraybackslash}m{2em}}N}
\toprule
row 1&\multirow{3}*[-1ex]{\textbf{Project}}&\multicolumn{6}{c}{\textbf{Year}}
\\\cmidrule(lr){3-8}
row 2&&\multicolumn{2}{c}{2015}&\multicolumn{2}{c}{2016}&\multicolumn{2}{c}{2017}
\\\cmidrule(lr){3-8}
row 3&&\pounds&\$&\pounds&\$&\pounds&\$\\\midrule
row 4&Investment Costs&60&60&60&60&60&60&\\[\baselineskip]\midrule
row 5&Operating Costs&60&60&60&60&60&60&\\[\baselineskip]\midrule
\vdots&\vdots\\\midrule
\multirow{2}*{row 6}&Industrial/Commercial&\multirow{2}*{60}\\
&Contract\\
\bottomrule
\end{tabular}\end{table}
\end{document} 

评论:

  1. 我已将m{3em}列数减少m{2em}为适合页面的大小。
  2. 我已\cmidrule{3-7}改为\cmidrule(lr){3-8}
  3. \\[\baselineskip]我在您想要增加高度的行中引入了一个额外的跳过 ( )。
  4. 我引入了一种新的列类型N作为最后一个列类型,以避免此处描述的问题:表格中的垂直对齐:m 列,行大小 - 最后一列存在问题

答案2

通过删除除第一个 s 之外的所有 s,您可以节省相当多的垂直空间\midrule—— 甚至可能足以让整个表格适合可用空间。通过省略这些水平线,您还可以立即降低(甚至完全消除)以使所有数据行的高度相同,因为眼睛可以注意到更少的干扰元素。

我还建议(a)使用tabularx环境而不是表格环境,以及(b)将第二个\cmidrule部分分成三个较短的段,以对应前一行中的三年标签。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs,tabularx,array,caption}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage{siunitx}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{table}
\caption{Budget Plan 2015--2017}
\begin{tabularx}{\textwidth}{@{} l L *{6}{C{2em}} @{} }
\toprule
row 1&\textbf{Project}&\multicolumn{6}{c@{}}{\textbf{Year}}\\
\cmidrule(l){3-8}
row 2 & &\multicolumn{2}{c}{2015} &\multicolumn{2}{c}{2016} &\multicolumn{2}{c@{}}{2017} \\
\cmidrule(lr){3-4} \cmidrule(lr){5-6} \cmidrule(l){7-8}
row 3& &\pounds&\$&\pounds&\$&\pounds&\$\\
\midrule
row 4&Investment Costs&60&60&60&60&60&60\\
row 5&Operating Costs&60&60&60&60&60&60\\
\vdots&\vdots\\
row $n$&Industrial\slash Commercial Contract &60\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

相关内容