具有不同行数的列

具有不同行数的列

我想创建一个两列行数不同的表格,例如 5/4、7/3、2/3……每列的行数必须在垂直方向上均等划分。这意味着,对于 5/4,第一列行的高度将小于第二列行的高度,但第一列的总高度将等于第二列的总高度。

下面是我进行不同尝试的 MWE:

\documentclass{report}

\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{makecell}

\begin{document}

  % Using only multirow
  \begin{tabular}[c]{|c|l|}
    \hline
    \rowcolor{blue!70}
    \multicolumn{2}{|c|}{}\\
    \hline

    \multirow{4}{5cm}{
      \centering
      World company\newline
      Main Street\newline
      World Capital\newline
      Earth\newline
      Tel: +00~1~23~45~67~89
    }

     & Alphonse \\
    \cline{2-2}
     & Daudet \\
    \cline{2-2}
     & Marcel \\
    \cline{2-2}
     & Pagnol \\
    \hline
  \end{tabular}

  \vspace{4\baselineskip}

  % Using makecell
  \begin{tabular}[c]{|c|l|}
    \hline
    \rowcolor{blue!70}
    \multicolumn{2}{|c|}{}\\
    \hline

    \makecell{
      \centering
      World company \newline
      Main Street \newline
      World Capital \newline
      Earth \newline
      Tel: +00~1~23~45~67~89
    }

     & Alphonse \\
    \cline{2-2}
     & Daudet \\
    \cline{2-2}
     & Marcel \\
    \cline{2-2}
     & Pagnol \\
    \hline
  \end{tabular}

  \vspace{4\baselineskip}

  % Using multirow and minipage
  \begin{tabular}[c]{|c|l|}
    \hline
    \rowcolor{blue!70}
    \multicolumn{2}{|c|}{}\\
    \hline

    \multirow{4}{5cm}{
      \begin{minipage}[t]{5cm}
        \centering
        World company \\
        Main Street \\
        World Capital \\
        Earth \\
        Tel: +00~1~23~45~67~89
      \end{minipage}
    }

     & Alphonse \\
    \cline{2-2}
     & Daudet \\
    \cline{2-2}
     & Marcel \\
    \cline{2-2}
     & Pagnol \\
    \hline
  \end{tabular}

  \vspace{4\baselineskip}

  % Using multirow on second column
  \begin{tabular}[c]{|c|l|}
    \hline
    \rowcolor{blue!70}
    \multicolumn{2}{|c|}{}\\
    \hline

    World company &

    \multirow{5}{3cm}{
      \noindent
      Alphonse \newline
      \hrule
      Daudet \newline
      \hrule
      Marcel \newline
      \hrule
      Pagnol \newline
    } \\
    Main Street & \\
    World Capital & \\
    Earth & \\
    Tel: +00~1~23~45~67~89 & \\
    \hline
  \end{tabular}
\end{document}

第一次尝试仅multirow在第一列使用。
问题:

  • 文本未正确居中
  • 表格下方第一列第五行

好的:

  • 文本从列顶部开始

第二次尝试使用该makecell命令。
问题:

  • \newline不考虑

第三个测试在第一列中使用了minipagea 内的 a 。问题:multirow

  • 文本没有从列的开头开始
  • 最后两行在表格下面

好的:

  • 文本正确居中

最后一次尝试使用multirow第二列。
问题:

  • 第二列第一行好像缩进
  • 不适\hline用于multirow,并且hrule不适合所有宽度
  • 行距和文本间距不好
  • 第二列的文本位于表格下方

好的

  • 第一列正确居中
  • 第一列文本与表格正确匹配




正如你所看到的,每个“解决方案”都有其自身的问题,而我没有更多的想法。

答案1

我建议使用\makegapedcells命令来makecell增加单元格高度。由于右列有 4 个单元格,因此此列的总高度没问题。

但是,makecell 在着色表方面存在问题,并且在目前的情况下rowcolor不起作用,所以我删除了第一行(空行),并用\midrule(来自booktabs)替换它,它可以采用可选的厚度参数,并且与配合良好\arrayrulecolor{...}

但这会导致相应高度上的垂直外线消失,因为第一行已被删除。因此,我删除了所有外线,并\fbox使用适当的参数将其替换为。

\documentclass{report}

\usepackage[table]{xcolor}
\usepackage{multirow}

\usepackage{makecell}
\usepackage{booktabs}

\begin{document}

 {\setcellgapes{1ex}\makegapedcells
 \setlength{\aboverulesep}{0pt}
 \setlength{\belowrulesep}{0pt}
 \setlength{\fboxsep}{-\fboxrule}
 \fbox{\begin{tabular}[c]{c|l}
\arrayrulecolor{blue!70}\midrule[12pt]
\arrayrulecolor{black}
    \hline

    \multirowcell{4}{%
      World company\\
      Main Street\\
      World Capital\\
      Earth\\
      Tel: +00\,1\,23\,45\,67\,89
    }

     & Alphonse \\
    \cline{2-2}
     & Baudet \\
    \cline{2-2}
     & Marcel \\
    \cline{2-2}
     & Pagnol \
  \end{tabular}}}

\end{document} 

在此处输入图片描述

相关内容