\multirow 环境中的换行符

\multirow 环境中的换行符

多行列中的一个元素很长。我该如何拆分它,以便它跨越多行。以下代码

\documentclass{article}
\usepackage{multirow,array}
\usepackage{booktabs}
\begin{document}

\begin{tabular}{rcc}
  \toprule
  Name & Subject & Grade \\
  \midrule
  \multirow{3}*{John}           & Maths   & A \\
                                & Science & A \\
                                & Arts    & A \\[.5\normalbaselineskip]
  \multirow{3}*{Very Long Name} & Maths   & A \\
                                & Science & A \\
                                & Arts    & A \\
  \bottomrule
\end{tabular}

\end{document}

生成:

在此处输入图片描述

有没有办法将“非常长的名字”分成多行?

答案1

minipage您可能想要做的是在参数中使用,\multirow来强制名称具有一定的水平宽度,如果超出一定宽度,则将其分成多行。(这要求名称具有足够的空格,或至少允许使用连字符。)

正如egreg评论中所建议的,如果您不希望“名称”列在名称都足够短的情况下始终占据最大可能的宽度,那么更好的方法是使用varwidth(使用varwidth),这也使文本占用的水平空间小于最大空间。

示例代码:

\documentclass{article}
\usepackage{multirow,array,varwidth}
\usepackage{booktabs}
\begin{document}

\newcommand\NameEntry[1]{%
  \multirow{3}*{%
    \begin{varwidth}{5em}% --- or minipage, if you prefer a fixed width
    \flushright #1%
    \end{varwidth}}}

\begin{tabular}{rcc}
  \toprule
  Name & Subject & Grade \\
  \midrule
  \NameEntry{John}           & Maths   & A \\
                             & Science & A \\
                             & Arts    & A \\[.5\normalbaselineskip]
  \NameEntry{Very Long Name} & Maths   & A \\
                             & Science & A \\
                             & Arts    & A \\
  \bottomrule
\end{tabular}

\end{document}

(您应该编辑 varwidth/minipage 环境的宽度以满足您的需要。)

输出:

根据示例代码创建的表

相关内容