我有多行里面的文本由于某种原因无法读取。
\begingroup
\renewcommand\tabularxcolumn[1]{ >{\arraybackslash}m{#1}}
\renewcommand*{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}%
{| >{\hsize=1.0\hsize}K|
>{\hsize=1.00\hsize}X|
>{\hsize=1.00\hsize}X|
>{\hsize=1.00\hsize}X|
>{\hsize=1.00\hsize}X|
}
\hline
\rowcolor{gray!50}\textbf{Code 1} & \textbf{Code 2} & \textbf{code3} & \textbf{code 4} & \textbf{code5}\\
\hline
\endfirsthead
\hline
\endhead
\multirow{4}{*}{\parbox{1.5cm}{Long text to break aaaaaa}}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\hline
\end{tabularx}
\endgroup
我应该看到带有文本“长文本要中断 aaaaaa”的多行,但我在以下屏幕上看到类似内容:
列类型K的定义是:
\newcolumntype{K}{>{\RaggedRight\arraybackslash \columncolor{blue!10}}m{3cm}}
我怎样才能使文本可读?
答案1
只需将\multirow
命令放在第 4 行,行数为负值即可。正如 @Mico 指出的那样,>{\hsize=1.0\hsize}
这是无用的,因为它是列的默认设置X
。如果您想要 X 列宽度不等,则使用此规范。
\documentclass{article}
\usepackage{ltablex, multirow, ragged2e}
\usepackage[table]{xcolor} \newcolumntype{K}{>{\RaggedRight\arraybackslash \columncolor{blue!10}}m{3cm}}
\begin{document}
\begingroup
\renewcommand\tabularxcolumn[1]{ >{\arraybackslash}m{#1}}
\renewcommand*{\arraystretch}{1.5}
\keepXColumns
\begin{tabularx}{\textwidth}%
{|K|*{4}{X|}}
\hline
\rowcolor{gray!50}\textbf{Code 1} & \textbf{Code 2} & \textbf{code3} & \textbf{code 4} & \textbf{code5}\\
\hline
\endfirsthead
\hline
\endhead
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\cline{2-5}
\multirow{-4}{*}{\parbox{1.5cm}{Long text to break aaaaaa}}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
\\
\hline
\end{tabularx}
\endgroup
\end{document}
答案2
引用该包的用户指南第 7f 页multirow
:
如果您使用
\multirow
包,colortbl
则必须采取预防措施,以便为包含 的列着色\multirow
。该colortbl
包通过单独着色每个单元格来工作。因此,如果您使用\multirow
正值<nrows>
,colortbl
将首先为顶部单元格着色,然后从此单元格开始\multirow
排版<nrows>
单元格,然后再为其他单元格着色,从而有效地隐藏该区域中的文本。可以通过将放在最后一行colortbl
来解决此问题\multirow
消极的<nrows>
价值。
应用于你的代码,这意味着,而不是放置
\multirow{4}{*}{\parbox{1.5cm}{Long text to break aaaaaa}}
在第一行,你应该放置
\multirow{-4}{*}{\parbox{1.5cm}{Long text to break aaaaaa}}
在最后一排。
答案3
答案几乎和伯纳德(他花了我五分钟来寻找 K 列类型定义并猜测为什么在一个简单的表中使用长表元素)。
\documentclass[12pt]{article}
\usepackage{multirow, tabularx}
\usepackage[table]{xcolor}
\usepackage{ragged2e}
\newcolumntype{K}{>{\RaggedRight\cellcolor{blue!10}}m{3cm}}
\begin{document}
\begingroup
\renewcommand\tabularxcolumn[1]{ >{\arraybackslash}m{#1}}
\renewcommand*{\arraystretch}{1.5}
\begin{tabularx}{\textwidth}{|K|X|X|X|X|}
\hline
\rowcolor{gray!50}
\textbf{Code 1} & \textbf{Code 2} & \textbf{code3} & \textbf{code 4} & \textbf{code5}\\
\hline
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz \\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz \\
\cline{2-5}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz \\
\cline{2-5}
\multirow{-4}{=}{Long text to break aaaaaa}
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz
& xyzxyzxyz \\
\hline
\end{tabularx}
\endgroup
\end{document}