这问题是每个单元格顶部的规则与其内容之间没有足够的空间。
在我的示例中,使用\arraystretch
不起作用,因为我没有将其放在或环境tabularx
中。tabular
table
我不确定这是否与我使用\parbox
或有关\mutlirow
。这就是我将其保存在此处的 MWE 中的原因。
\documentclass{scrartcl}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{calc}
\newlength{\mrwidth}
\begin{document}
\newcommand{\mytext}{And then it happened… a door opened to a world…
rushing through the phone line like heroin through an addict's veins, an
electronic pulse is sent out, a refuge from the day-to-day incompetencies is
sought… a board is found.}
\setlength{\mrwidth}{0.2\textwidth-2\tabcolsep}
\renewcommand\arraystretch{1.1} % <-- doesn't work here
\begin{tabularx}{\textwidth}{|X|X|X|X|X|}
\hline
\multirow{2}*{\parbox{\mrwidth}{\mytext}}
&b&c&d&e\\\cline{2-5}
&\parbox{\mrwidth}{\mytext}
&c&d&e\\\hline
\end{tabularx}
\end{document}
答案1
这种\rewnewcommand\araystretch{1.1}
方法并不能解决所有问题... 您的表格非常不寻常,因此无法帮助在multirow
单元格中放置文本。对于您的情况,您需要另一种方法,例如使用gapedcells
from 包makecell
:
\documentclass{scrartcl}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{makecell}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{calc}
\begin{document}
\newcommand{\mytext}{And then it happened ... a door opened to a world ...
rushing through the phone line like heroin through an addict's veins, an
electronic pulse is sent out, a refuge from the day-to-day incompetencies
is a board is found.}
\setcellgapes{5pt}
\makegapedcells
\begin{tabularx}{\textwidth}{|X|X|X|X|X|}
\hline
\multirow{10}*{\parbox{\linewidth}{\mytext}}
&b&c&d&e\\\cline{2-5}
&\mytext
&c&d&e\\\hline
\end{tabularx}
\end{document}
笔记:\arraystretch
正如名称所暗示的那样,它可以在任何数组环境中工作,从到array
甚至tabular
(tabu
它们中的大多数都基于array
)。关于表中列的宽度:如果没有必要让所有列都具有相同的宽度,您可以更改它,例如使用>{\setlength\hsize{0.5\hsize}}X
(使其变窄),或者甚至在列中只有一行文本的单元格的情况下使用l
列类型。通过这种方式,您可以增加其他列的宽度X
并在其中获得更好的文本格式。
现在,如果您减小字体大小和形状,您就可以获得稍微好一点的文本格式:
{\sffamily\small
\begin{tabularx}{\textwidth}{|X|X|X|X|X|}
...
\end{tabularx}
}
除此之外,值得考虑包ragged2e
及其宏\RaggedRight
。有了它,文本不再对齐,但连字符仍然有效。有了它,您可以获得以下结果:
(视为 \sffamily\small 字体)。上述 MWE 的变更包括:\usepackage{ragged2e}
在序言和表格中添加:
\begin{tabularx}{\textwidth}{|X|X|X|X|X|}
\hline
\multirow{10}*{\parbox{\mrwidth}{\RaggedRight\mytext}}
&b&c&d&e\\\cline{2-5}
&\RaggedRight\mytext
&c&d&e\\\hline
\end{tabularx}
附录:
为了给您提供良好的答案,我忘记了一个非常基本的mutirow
未来:用 定义它的宽度linewidth
。这引入了p{\linewidth}
一种单元格类型,其中文本会自动拆分为多行文本。因此,parbox
似乎不是必需的(关于这一点,让我想起了 Bernard 的回答,它在哪里使用),但是连字符似乎有所不同。如果您进一步将字体大小减小到 ,则可以观察到差异footnotesize
:
上图中第一列没有使用\parbox
,使用 后,此列的文字形状与第二列相同。
答案2
使用该makecell
包及其\setcellgapes
命令,这很容易,您可以获得更简单的代码。无需\parbox
计算宽度。
\documentclass{scrartcl}
\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{geometry}
\geometry{showframe, a4paper}
\usepackage{ragged2e}
\usepackage{multirow}
\usepackage{tabularx, makecell}
\setcellgapes{4pt}
\begin{document}
\newcommand{\mytext}{And then it happened… a door opened to a world…
rushing through the phone line like heroin through an addict's veins, an
electronic pulse is sent out, a refuge from the day-to-day incompetencies is
sought… a board is found.}
{\setlength\tabcolsep{4pt}
\makegapedcells
\noindent\begin{tabularx}{\linewidth}{|*{5}{>{\RaggedRight\arraybackslash}X|}}
\hline
\multirow{2}{\linewidth}{\mytext}
&b&c&d&e\\\cline{2-5}
& \mytext
&c&d&e\\\hline
\end{tabularx}}
\end{document}