倒数第二个禁忌列标题的垂直错位

倒数第二个禁忌列标题的垂直错位

即使不受欢迎,我也想保留垂直线。然而,在下面的 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}}

并将其添加在besetztand之后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}

相关内容