多列表格中文本的垂直和水平对齐

多列表格中文本的垂直和水平对齐

我创建了下表:

当前表

使用以下代码:

\begin{table}[h]
    \begin{tabular}
        {|M{0.16\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
          M{0.24\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
          M{0.18\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
          M{0.44\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|}
        \hline
        Zeitpunkt
        & Variable 
        & Datentyp  
        & Beschreibung 
        \\ 
        \hline
        t0, t1, t2 &
        Alter & 
        Numerisch &
        Alter eines Studenten in \newline Jahren 
        \\ 
        \hline
        t0, t1, t2 &
        Geschlecht & 
        Nominal & 
        Geschlecht eine Studenten
        \\ 
        \hline
        t0, t1, t2 &
        HzbArt & 
        Nominal &
        Art der HZB
        \\ 
        \hline
        t0, t1, t2 &
        HzbNote & 
        Numerisch &
        Notendurchschnitt der HZB
        \\ 
        \hline
        t0, t1, t2 &
        Ang\textunderscore Abschluss & 
        Nominal  &  
        Bachelor oder Master
        \\ 
        \hline
        t0, t1, t2 &
        Studiengang & 
        Nominal & 
        Studiengang eines Studenten 
        \\ 
        \hline
        t0, t1, t2 &
        Bildungsland &
        Nominal &
        Bildungsinländer oder \newline Bildungsausländer 
        \\ 
        \hline
        t1, t2 &
        DN \textunderscore Sem\textunderscore1 &
        Numerisch &
        Notendurchschnitt nach dem ersten Semester
        \\ 
        \hline
        t1, t2 &
        NB\textunderscore Pruef\textunderscore \newline Sem\textunderscore1 &
        Numerisch &
        Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester
        \\ 
        \hline
        t2 &
        DN \textunderscore Sem\textunderscore2 &
        Numerisch &
        Notendurchschnitt nach dem zweiten Semester
        \\ 
        \hline
        t2 &
        NB\textunderscore Pruef\textunderscore \newline Sem\textunderscore2 &
        Numerisch &
        Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester
        \\ 
        \hline
        t0, t1, t2 &
        Abbrecher & 
        Nominal &
        Studienabbrecher oder \newline Nicht-Studienabbrecher
        \\ 
        \hline
    \end{tabular}
\caption{Variablen der finalen Datensätze}
\label{Variablen der finalen Datensätze}
\end{table} 

但是,我想创建一个如下所示的表:

我想要创建的表

换句话说,我想聚合第一列共享相同信息的单元格,并垂直和水平对齐相应的文本。

我读到过,我必须使用多列表格来实现这一点。但是,一旦我使用以下代码创建多列元素

\begin{table}[h]
        \begin{tabular}
                {|M{0.16\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
                M{0.24\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
                M{0.18\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|
                M{0.44\textwidth-2\tabcolsep - 1.25\arrayrulewidth}|}
            \hline
            Zeitpunkt & 
            Variable & 
            Datentyp & Beschreibung                                                         \\ \hline
            \multirow{7}{*}{t0, t1, t2} 
            & 
            Alter & 
            Numerisch & 
            Alter eines Studenten in Jahren 
            \\ 
            \cline{2-4} 
            & 
            Geschlecht & 
            Nominal & 
            Geschlecht eines Studenten                                    
            \\ 
            \cline{2-4} 
            & 
            HzbArt & 
            Nominal & 
            Art der HZB 
            \\ 
            \cline{2-4} 
            & 
            HzbNote & 
            Numerisch & 
            Notendurchschnitt der HZB 
            \\ 
            \cline{2-4} 
            & 
            Ang\_Abschluss & 
            Nominal & 
            Bachelor oder Master 
            \\ 
            \cline{2-4} 
            & 
            Studiengang & 
            Nominal & 
            Studiengang eines Studenten 
            \\ 
            \cline{2-4} 
            & Bildungsland 
            & Nominal 
            & Bildungsinländer oder Bildungsausländer  
            \\ 
            \hline
            \multirow{2}{*}{t1, t2}   
             & 
             DN\_Sem\_1 & 
             Numerisch & 
             Notendurchschnitt nach dem ersten Semester         
             \\ 
             \cline{2-4} 
             & 
             NB\_Pruef\_ Sem\_1 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester  
             \\ 
             \hline
            \multirow{2}{*}{t2} 
            & 
            DN\_Sem\_2 & 
            Numerisch & 
            Notendurchschnitt nach dem zweiten Semester 
            \\ 
            \cline{2-4} 
            &
             NB\_Pruef\_ Sem\_2 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester     
             \\ 
             \hline
             t0, t1, t2 & 
             Abbrecher & 
             Nominal & 
             Studienabbrecher oder Nicht-Studienabbrecher 
             \\ 
             \hline
        \end{tabular}%
\end{table}

表格将如下所示(文本垂直和水平对齐,比例错误):

多列尝试 1

我尝试使用常规列大小的另一个代码如下所示:

\begin{table}[h]
        \begin{tabular}{|c|l|l|l|}
            \hline
            Zeitpunkt & 
            Variable & 
            Datentyp & Beschreibung                                                         \\ \hline
            \multirow{7}{*}{t0, t1, t2} 
            & 
            Alter & 
            Numerisch & 
            Alter eines Studenten in Jahren 
            \\ 
            \cline{2-4} 
            & 
            Geschlecht & 
            Nominal & 
            Geschlecht eines Studenten                                    
            \\ 
            \cline{2-4} 
            & 
            HzbArt & 
            Nominal & 
            Art der HZB 
            \\ 
            \cline{2-4} 
            & 
            HzbNote & 
            Numerisch & 
            Notendurchschnitt der HZB 
            \\ 
            \cline{2-4} 
            & 
            Ang\_Abschluss & 
            Nominal & 
            Bachelor oder Master 
            \\ 
            \cline{2-4} 
            & 
            Studiengang & 
            Nominal & 
            Studiengang eines Studenten 
            \\ 
            \cline{2-4} 
            & Bildungsland 
            & Nominal 
            & Bildungsinländer oder Bildungsausländer  
            \\ 
            \hline
            \multirow{2}{*}{t1, t2}   
             & 
             DN\_Sem\_1 & 
             Numerisch & 
             Notendurchschnitt nach dem ersten Semester         
             \\ 
             \cline{2-4} 
             & 
             NB\_Pruef\_ Sem\_1 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester  
             \\ 
             \hline
            \multirow{2}{*}{t2} 
            & 
            DN\_Sem\_2 & 
            Numerisch & 
            Notendurchschnitt nach dem zweiten Semester 
            \\ 
            \cline{2-4} 
            &
             NB\_Pruef\_ Sem\_2 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester     
             \\ 
             \hline
             t0, t1, t2 & 
             Abbrecher & 
             Nominal & 
             Studienabbrecher oder Nicht-Studienabbrecher 
             \\ 
             \hline
        \end{tabular}%
\end{table}

在这种情况下,表格不再适合文本宽度并且会扭曲:

多列尝试 2

我如何才能创建一个表格,将所需的列聚合起来,并以正确的比例(上下和左右之间的空间相同)水平和垂直对齐它们的文本。此外,它也不应大于我的 latex 文档的文本大小(即 \documentclass[11pt,a4paper]{article})。

首先十分感谢!

答案1

以下是使用该tabularray包解决您问题的方法。SetCell宏相当于和multicolumnmultirow其中可选参数r表示要包含的行数(c表示列数)。hlinesvlines选项指示在每个单元格周围设置水平线和垂直线,它们会自动处理多行和多列(如果有)。X列类型相当于tabularx X列,其中可选值分别设置列的水平和垂直对齐方式,编号可选值设置列相对于默认宽度的相对宽度。

\documentclass[11pt,a4paper]{article}

\usepackage{tabularray}

\begin{document}
\begin{table}[h]
        \begin{tblr}{
            hlines, vlines,
            colspec={*{3}{X[c,m]} X[2.5,c,m]},
        }
            Zeitpunkt & 
            Variable & 
            Datentyp & Beschreibung
            \\ 
            \SetCell[r=7]{c}t0, t1, t2 
            & 
            Alter & 
            Numerisch & 
            Alter eines Studenten in Jahren 
            \\ 
            & 
            Geschlecht & 
            Nominal & 
            Geschlecht eines Studenten              
            \\ 
            & 
            HzbArt & 
            Nominal & 
            Art der HZB 
            \\ 
            & 
            HzbNote & 
            Numerisch & 
            Notendurchschnitt der HZB 
            \\
            & 
            Ang\_Abschluss & 
            Nominal & 
            Bachelor oder Master 
            \\
            & 
            Studiengang & 
            Nominal & 
            Studiengang eines Studenten 
            \\
            & Bildungsland 
            & Nominal 
            & Bildungsinländer oder Bildungsausländer  
            \\
            \SetCell[r=2]{c} t1, t2   
             & 
             DN\_Sem\_1 & 
             Numerisch & 
             Notendurchschnitt nach dem ersten Semester 
             \\
             & 
             NB\_Pruef\_ Sem\_1 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester  
             \\
            \SetCell[r=2]{c}t2 
            & 
            DN\_Sem\_2 & 
            Numerisch & 
            Notendurchschnitt nach dem zweiten Semester 
            \\
            &
             NB\_Pruef\_ Sem\_2 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester     
             \\
             t0, t1, t2 & 
             Abbrecher & 
             Nominal & 
             Studienabbrecher oder Nicht-Studienabbrecher 
             \\ 
        \end{tblr}%
\end{table}
\end{document}

在此处输入图片描述

不过,我建议您删除所有垂直线和大部分水平线,以使表格看起来更专业。

附录

这是表格的一个更好看的版本(对我来说)。我认为第 2、3 和 4 列(带有居中标题)的左对齐看起来更好。

\documentclass[11pt,a4paper]{article}

\usepackage{tabularray}
\UseTblrLibrary{booktabs} %allows to use the booktabs rules in the tblr environment.

\begin{document}
\begin{table}[h]
        \begin{tblr}{
            stretch=1.5, %adds extra vertical space (1.5 times of default) around the row
            colspec={X[c,m] *{2}{X[l,m]} X[2.5,l,m]},
            row{1} = {halign=c} %aligns the content of the first row horizontally
        }
            \toprule
            Zeitpunkt & 
            Variable & 
            Datentyp & Beschreibung
            \\ 
            \midrule
            \SetCell[r=7]{c}t0, t1, t2 
            & 
            Alter & 
            Numerisch & 
            Alter eines Studenten in Jahren 
            \\ 
            & 
            Geschlecht & 
            Nominal & 
            Geschlecht eines Studenten              
            \\ 
            & 
            HzbArt & 
            Nominal & 
            Art der HZB 
            \\ 
            & 
            HzbNote & 
            Numerisch & 
            Notendurchschnitt der HZB 
            \\
            & 
            Ang\_Abschluss & 
            Nominal & 
            Bachelor oder Master 
            \\
            & 
            Studiengang & 
            Nominal & 
            Studiengang eines Studenten 
            \\
            & Bildungsland 
            & Nominal 
            & Bildungsinländer oder Bildungsausländer  
            \\
            \midrule
            \SetCell[r=2]{c} t1, t2   
             & 
             DN\_Sem\_1 & 
             Numerisch & 
             Notendurchschnitt nach dem ersten Semester 
             \\
             & 
             NB\_Pruef\_ Sem\_1 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester  
             \\
             \midrule
            \SetCell[r=2]{c}t2 
            & 
            DN\_Sem\_2 & 
            Numerisch & 
            Notendurchschnitt nach dem zweiten Semester 
            \\
            &
             NB\_Pruef\_ Sem\_2 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester     
             \\
             \midrule
             t0, t1, t2 & 
             Abbrecher & 
             Nominal & 
             Studienabbrecher oder Nicht-Studienabbrecher 
             \\ 
             \bottomrule
        \end{tblr}%
\end{table}
\end{document}

在此处输入图片描述

附录2:即使不使用tabularray,也可以将多行单元格居中。正如我所说,要垂直居中,您需要手动调整行数(第一个)参数。要将多行内容水平居中,您可以将其插入命令中multicolumn

\documentclass[11pt,a4paper]{article}

\usepackage{array}
\usepackage{multirow}
\usepackage{ragged2e}
\usepackage{calc}
\usepackage{booktabs}

\newcolumntype{M}[1]{>{\RaggedRight}m{#1}}

\begin{document}
\begin{table}[h]
        \renewcommand{\arraystretch}{1.5}
        \begin{tabular}
                {M{0.16\textwidth-2\tabcolsep - 1.25\arrayrulewidth}
                M{0.24\textwidth-2\tabcolsep - 1.25\arrayrulewidth}
                M{0.18\textwidth-2\tabcolsep - 1.25\arrayrulewidth}
                M{0.44\textwidth-2\tabcolsep - 1.25\arrayrulewidth}}
            \toprule
            \multicolumn{1}{c}{Zeitpunkt} &
            \multicolumn{1}{c}{Variable}  &
            \multicolumn{1}{c}{Datentyp}  &
            \multicolumn{1}{c}{Beschreibung}
            \\\midrule
            \multicolumn{1}{c}{\multirow{8}{*}{t0, t1, t2}} 
            & 
            Alter & 
            Numerisch & 
            Alter eines Studenten in Jahren 
            \\
            & 
            Geschlecht & 
            Nominal & 
            Geschlecht eines Studenten                                    
            \\ 
            & 
            HzbArt & 
            Nominal & 
            Art der HZB 
            \\ 
            & 
            HzbNote & 
            Numerisch & 
            Notendurchschnitt der HZB 
            \\ 
            & 
            Ang\_Abschluss & 
            Nominal & 
            Bachelor oder Master 
            \\ 
            & 
            Studiengang & 
            Nominal & 
            Studiengang eines Studenten 
            \\ 
            & Bildungsland 
            & Nominal 
            & Bildungsinländer oder Bildungsausländer  
            \\ 
            \midrule
            \multicolumn{1}{c}{\multirow{3.3}{*}{t1, t2}}
            & 
             DN\_Sem\_1 & 
             Numerisch & 
             Notendurchschnitt nach dem ersten Semester         
             \\ 
             & 
             NB\_Pruef\_ Sem\_1 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem ersten Semester  
             \\ 
            \midrule
            \multicolumn{1}{c}{\multirow{3.3}{*}{t2}}
            & 
            DN\_Sem\_2 & 
            Numerisch & 
            Notendurchschnitt nach dem zweiten Semester 
            \\ 
            &
             NB\_Pruef\_ Sem\_2 & 
             Numerisch & 
             Anzahl der nicht bestandenen Prüfungen nach dem zweiten Semester     
             \\ 
             \midrule
             t0, t1, t2 & 
             Abbrecher & 
             Nominal & 
             Studienabbrecher oder Nicht-Studienabbrecher 
             \\ 
             \bottomrule
        \end{tabular}%
\end{table}
\end{document}

在此处输入图片描述

相关内容