使用多行换行文字

使用多行换行文字

我正在处理一个长表格,但遇到了一些问题。我无法在最后一列中换行,因为最后一列使用了多列。因此,文本超出了边距。这是我的代码:

\usepackage{multirow}
\usepackage{makecell}

\begin{tabularx}{\textwidth}{XXXXXX}%[H]
        \hline
    Header that can be wrapped & Header 2 & Header 3 & Header 4 & Header 5 & Header 6\\ 
      \hline
    Data1 & 0.111 & 0.112 & 0.113 & 0.114 & \multirow{3}{*}{This text is too long and can not be wrapped}\\
    Data2 & 0.221 & 0.222 & 0.223 & 0.224 & \\
    Data3 & 0.331 & 0.332 & 0.333 & 0.334 & \\
    \hline
    \end{tabularx}

第一次尝试

我尝试强制最后一列的线断开,但它会侵入下面的单元格。这是我尝试过的方法:

 \usepackage{multirow}
 \usepackage{makecell}    
\begin{tabularx}{\textwidth}{XXXXXX}%[H]
            \hline
        Header that can be wrapped & Header 2 & Header 3 & Header 4 & Header 5 & Header 6\\ 
          \hline
        Data1 & 0.111 & 0.112 & 0.113 & 0.114 & \multirow{3}{*}{This text is too long and can not be wrapped}\\
        Data2 & 0.221 & 0.222 & 0.223 & 0.224 & \\
        Data3 & 0.331 & 0.332 & 0.333 & 0.334 & \\
        \hline
        Data4 & 0.111 & 0.112 & 0.113 & 0.114 & \multirow{2}{*}{Cell bellow}\\
        Data5 & 0.221 & 0.222 & 0.223 & 0.224 & \\
        \hline
        \end{tabularx}

第二次尝试

我知道该如何解决这种情况吗?

答案1

当左侧行的高度小于右侧文本的高度时,将它们放在tabular内的子行中\multicolumn

当左侧的行比右侧的文本高时,您可以简单地在命令中使用=而不是,来自包手册:*\multirow

宽度可以指定参数以=使用出现的列的定义宽度\multirow

我还向您建议了一些改进:使用booktabs规则和siunitx数字对齐。

X 列垂直居中文本的代码\renewcommand\tabularxcolumn[1]{m{#1}}来自Zarko 的这个回答

\documentclass{book}
\usepackage{array}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{U}{S[table-format=1.3,table-column-width=4em]}
\usepackage{booktabs}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}% for vertical centering text in X column code from https://tex.stackexchange.com/a/343329/101651
\usepackage{multirow}
\usepackage{siunitx}

\begin{document}    
\begin{table}
\begin{tabularx}{\textwidth}{P{1.5cm} *4{U} X}
    \toprule
    Header that can be wrapped & {Header 2} & {Header 3} & {Header 4} & {Header 5} & Header 6\\ 
    \midrule
    \multicolumn{5}{@{}c@{}}{\begin{tabular}{P{1.5cm}*4{U}}
            Data1 & 0.111 & 0.112 & 0.113 & 0.114 \\
            Data2 & 0.221 & 0.222 & 0.223 & 0.224 \\
            Data3 & 0.331 & 0.332 & 0.333 & 0.334 \\
        \end{tabular}} &
    This text is too long and can not be wrapped long long long long text\\
    \midrule
    Data4 & 0.111 & 0.112 & 0.113 & 0.114 & \multirow{2}{=}{Cell below}\\
    Data5 & 0.221 & 0.222 & 0.223 & 0.224 & \\
    \bottomrule
\end{tabularx}
\end{table}
\end{document}

在此处输入图片描述

相关内容