即使不受欢迎,我也想保留垂直线。然而,在下面的 MWE 中,我的标题出现了错位。一次朝顶部,一次朝底部 - 我在图片中添加了一条线以便澄清。在第一个示例中增加单元格宽度以将标题保持在一行并不能解决问题。问题:如何在禁忌环境中实现所有列的垂直对齐?
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{tabu}
\usepackage{multirow}
\usepackage{array}
\begin{document}
\begin{table}[!htb]
\vspace{2ex}
\centering
{\tabulinesep=1.2mm
\begin{tabu}spread 0pt{|X[1cm]|X[-2.5cm]|X[-2cm]|}\hline\hline
\textbf{Jahr}&\textbf{Plätze insgesamt}&\textbf{Plätze besetzt}\\ \hline
2010&579.564&559.959\\ \hline
\hline
\end{tabu}}
\end{table}
\begin{table}[!htb]
\vspace{2ex}
\centering
{\tabulinesep=1.2mm
\begin{tabu}spread 0pt{|X[1cm]|X[1cm]|X[-1cm]|X[-2cm]|}\hline\hline
\textbf{Jahrgang}&\textbf{Hauptschule}&\textbf{Realschule}&\textbf{Studienberechtigung}\\ \hline
2010 & 4 \% & 67 \% & 29 \% \\ \hline
\hline
\end{tabu}}
\end{table}
\end{document}
编辑(因为我还不能评论):1)Salim Bou 提供的链接处理多行 X[m] 表中的对齐问题。我遇到了该解决方案,但此处概述的问题甚至出现在单行(标题)表中。
2) gernot 提供的解决方案有效 (!) 并且可以快速实施,但我想指出一个缺点:在我的 MWE 中,只要表格展开,也Jahr
需要\dstrut
。此外,我必须使用几次迭代来识别需要向下扩展器的每个列 - 这在较长的文档中很快就会失控。
3)egreg 的解决方案还有一个额外的好处,就是允许将其放置在\newenvironment
可以动态修复此问题的位置。
%Mytable with three arguments
%#1 - Label
%#2 - Ref
%#3 - dynamic number of columns
%example for a table with two columns:
%\begin{mt}
% {Number of things in this case over the years}{tab:things_yrs}{2}
%1&2\\ \hline
%3&4\\ \hline
%\end{mt}
\newenvironment{mt}[4]{
\begin{table}[!htb]
\vspace{2ex}
\caption[#1]{#2}
\label{#3}
\centering
\tabulinesep=1.2mm
\begin{tabu}{|*#4{X[-1cm]<{\unskip\strut}|}}\hline\hline}
{\hline\hline
\end{tabu}
\end{table}}
答案1
这是一个已知问题:tabu
没有在列\strut
中单元格的末尾添加X
。第二个表格没有受到此问题的影响,因为是a\strut
开头。
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{tabu}
\usepackage{multirow}
\usepackage{array}
\begin{document}
\begin{table}[!htb]
\centering
\tabulinesep=1.2mm
\begin{tabu} spread 0pt{
|X[1cm]<{\unskip\strut}|
X[-2.5cm]<{\unskip\strut}|
X[-2cm]<{\unskip\strut}|
}
\hline
\textbf{Jahr} & \textbf{Plätze insgesamt} & \textbf{Plätze besetzt} \\
\hline
2010 & 579.564 & 559.959 \\
\hline
\end{tabu}
\end{table}
\begin{table}[!htb]
\centering
\tabulinesep=1.2mm
\begin{tabu} spread 0pt{|X[1cm]|X[1cm]|X[-1cm]|X[-2cm]|}
\hline
\textbf{Jahrgang} & \textbf{Hauptschule} & \textbf{Realschule} & \textbf{Studienberechtigung}\\
\hline
2010 & 4\% & 67\% & 29\% \\
\hline
\end{tabu}
\end{table}
\end{document}
答案2
垂直对齐的差异是由于insgesamt
延伸到基线以下,而 则不besetzt
延伸。因此 的高度Plätze insgesamt
略大于 的高度。 (没有向下延伸)Plätze besetzt
也是如此。Realschule
最简单的解决方案是定义一个不可见的向下延伸器
\newcommand\dstrut{\vphantom{g}}
并将其添加在besetzt
and之后Realschule
。
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{tabu}
\usepackage{multirow}
\usepackage{array}
\newcommand\dstrut{\vphantom{g}}
\begin{document}
\begin{table}[!htb]
\vspace{2ex}
\centering
{\tabulinesep=1.2mm
\begin{tabu}spread 0pt{|X[1cm]|X[-2.5cm]|X[-2cm]|}\hline\hline
\textbf{Jahr}&\textbf{Plätze insgesamt}&\textbf{Plätze besetzt\dstrut}\\ \hline
2010&579.564&559.959\\ \hline
\hline
\end{tabu}}
\end{table}
\begin{table}[!htb]
\vspace{2ex}
\centering
{\tabulinesep=1.2mm
\begin{tabu}spread 0pt{|X[1cm]|X[1cm]|X[-1cm]|X[-2cm]|}\hline\hline
\textbf{Jahrgang}&\textbf{Hauptschule}&\textbf{Realschule\dstrut}&\textbf{Studienberechtigung}\\ \hline
2010 & 4 \% & 67 \% & 29 \% \\ \hline
\hline
\end{tabu}}
\end{table}
\end{document}