多行内的文本不可读

多行内的文本不可读

我有多行里面的文本由于某种原因无法读取。

\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”的多行,但我在以下屏幕上看到类似内容:

enter image description here

列类型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} 

enter image description here

答案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}

enter image description here

相关内容