表格中的多行和頂部對齊

表格中的多行和頂部對齊

tabular我想在某些單元格必須將文字垂直對齊到每個單元格的頂部跨多行

如果可能的話盡量不要使用其他包。 (我無法控製附加軟體包的安裝。)

\documentclass[12pt, margin = 1mm]{standalone}
\newcommand\TS{\rule{0pt}{2.6ex}}         % Top strut
\newcommand\BS{\rule[-0.9ex]{0pt}{0pt}}   % Bottom strut
\usepackage{array, multirow}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering  \let\newline\\\TS\BS\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft \let\newline\\\TS\BS\arraybackslash}p{#1}}

\begin{document}
\begin{tabular} [t] { C{2cm} C{3cm} | C{2cm} C{3cm} }
    Column 1 & Column 2 & Column 3 & Column 4 \\ \hline
    Foo & Line 1 \newline Line 2 &
    \multirow{2}{*}{Alpha} & Line 1 \newline Line 2 \newline Line 3 \\
    Bar & Line 1 \newline Line 2 \\
    Spam & Line 1 \newline Line 2 &
    \multirow{2}{*}{Beta} & Line 1 \newline Line 2 \newline Line 3 \\
    Eggs & Line 1 \newline Line 2 \\
\end{tabular}
\end{document}

在此輸入影像描述

有兩個問題:

  1. 使用p{#1}代替有助於m{#1}將 Foo、Bar、Spam、Eggs 對齊到頂部,但不能將 Alpha、Beta 對齊。爭論[t]沒有成功。

  2. Alpha 及其 3 行不跨越 Foo、Bar 的行。對於 Beta 來說也是如此。

我們要怎麼解決這兩個問題呢?

答案1

像這樣?

在此輸入影像描述

不使用multirow,使用簡化的列定義類型並使用makecell

\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array,  makecell}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}
{\makegapedcells
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
Foo         & \makecell[t]{Line 1\\ Line 2} & Alpha & \makecell[t]{Line 1\\ Line 2} \\
Bar         & \makecell[t]{Line 1\\ Line 2} &       &   \\
Spam        & \makecell[t]{Line 1\\ Line 2} & Beta  & \makecell[t]{Line 1\\ Line 2}  \\
Eggs        & \makecell[t]{Line 1\\ Line 2} &       & \\
    \end{tabular}
}
\end{document}

編輯(1):或者您正在尋找簡單的表格:

{\makegapedcells
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
Foo         & Line 1    & Alpha & Line 1    \\ 
            & Line 2    &       & Line 2    \\ 
Bar         & Line 1    &       &           \\
            & Line 2    &       &           \\
Spam        & Line 1    & Beta  & Line 1    \\
            & Line 2    &       & Line 2    \\ 
Eggs        & Line 1    &       &           \\
            & Line 2    &       &           \\
    \end{tabular}
}

其垂直間距略有不同:

在此輸入影像描述

編輯(2):解決方案multirow(正如操作人員所希望的那樣,但是不幸的是我不清楚應該跨越哪些/多少行)

\documentclass[12pt, margin=3mm]{standalone}
\usepackage{array,  makecell, multirow}
\setcellgapes{3pt}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}
{\makegapedcells
 \renewcommand\multirowsetup{\centering}% <-- for centering contents of multirow center
    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
\multirow[t]{2}{=}{Foo} & Line 1    & \multirow[t]{4}{=}{Alpha} & Line 1    \\ 
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Bar} & Line 1    &                           &           \\
                        & Line 2    &                           &           \\
\multirow[t]{2}{=}{Spam}& Line 1    & \multirow[t]{4}{=}{Beta}  & Line 1    \\
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Eggs}& Line 1    &                           &           \\
                        & Line 2    &                           &           \\
    \end{tabular}
}
\end{document}

multirow如果s 單元格中只有一個單詞,結果看起來與之前(在編輯 (1) 中)相同。如果還有更多,例如:

    \begin{tabular} { C{2cm} C{3cm} | C{2cm} C{3cm} }
Column 1    & Column 2 & Column 3 & Column 4 \\
    \hline
\multirow[t]{2}{=}{Foo} & Line 1    & \multirow[t]{4}{=}{Alpha} & Line 1    \\ 
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Bar} & Line 1    &                           &           \\
                        & Line 2    &                           &           \\
\multirow[t]{2}{=}{Spam}& Line 1    & \multirow[t]{4}{=}{Beta Beta Beta Beta Beta
                                                         Beta Beta Beta Beta Beta}  
                                                                & Line 1    \\
                        & Line 2    &                           & Line 2    \\ 
\multirow[t]{2}{=}{Eggs}& Line 1    &                           &           \\
                        & Line 2    &                           &           \\
    \end{tabular}

結果是:

在此輸入影像描述

相關內容