多行列中的一个元素很长。我该如何拆分它,以便它跨越多行。以下代码
\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 环境的宽度以满足您的需要。)
输出: