如何创建主对角线上有线的多行乳胶表?

如何创建主对角线上有线的多行乳胶表?

我想创建一个在主对角线上有一条线的 Latex 表。我的问题:diagbox 无法以正确的方式计算多行字段的高度。一个小例子:

\documentclass[a4paper]{article}
\usepackage{calc}
\usepackage{diagbox}

\begin{document}
\begin{tabular}{p{\textwidth*1/7}*{3}{|p{\textwidth*1/7}}}
\diagbox[innerwidth=\textwidth*1/7]{from}{to} & item1 & item2 & item3 \\\hline
item1 & \diagbox[innerwidth=\textwidth*1/7]{~}{~} & --- this --- is --- a --- very --- long --- multirow --- text --- & \\\hline
item2 & & \diagbox[innerwidth=\textwidth*1/7]{~}{~} &   \\\hline
item3 & & & \diagbox[innerwidth=\textwidth*1/7]{~}{~}
\end{tabular}
\end{document}

diagbox 和 multirow

我怎样才能连接对角线?

你好,帕特里克

答案1

我不知道为什么如果使用height=...选项,\diagbox以下多行单元格的文本会向下移动,但您可以通过添加一个来解决这个问题,\vspace{-...}以便再次将其调出。

不过,我建议您重新设计表格,不要使用垂直规则、对角线框,并使用破折号作为对角线上单元格的文本。

\documentclass[a4paper]{article}
\usepackage{booktabs}
\usepackage{diagbox}

\begin{document}
\noindent With a little workaround:
\begin{center}
    \begin{tabular}{p{\textwidth*1/7}*{3}{|p{\textwidth*1/7}}}
        \diagbox[innerwidth=\textwidth*1/7]{from}{to} & item1 & item2 & item3 \\\hline
        item1 & \diagbox[innerwidth=\textwidth*1/7,height=7\line]{~}{~} & \vspace{-9ex}--- this --- is --- a --- very --- long --- multirow --- text --- & \\\hline
        item2 & & \diagbox[innerwidth=\textwidth*1/7]{~}{~} &   \\\hline
        item3 & & & \diagbox[innerwidth=\textwidth*1/7]{~}{~}
    \end{tabular}   
\end{center}
\noindent But I suggest to you to use something like this:
\begin{center}
    \begin{tabular}{*{4}{p{\textwidth*1/7}}}
        \toprule
        & \multicolumn{3}{c}{To:}\\
        \cmidrule{2-4}
        From: & item1 & item2 & item3 \\
        \midrule
        item1 & \textemdash & --- this --- is --- a --- very --- long --- multirow --- text --- & \\
        item2 & & \textemdash & \\
        item3 & & & \textemdash \\
        \bottomrule
    \end{tabular}
\end{center}
\end{document}

在此处输入图片描述

答案2

环境{NiceTabular}nicematrix一个内置命令\diagbox,它总是绘制预期的对角线规则(事实上,该规则是在构建数组后用 PGF 绘制的)。

\documentclass[a4paper]{article}
\usepackage{nicematrix}
\usepackage{calc}

\begin{document}

\begin{NiceTabular}{p{\textwidth*1/7}*{3}{|p{\textwidth*1/7}}}
\diagbox{from}{to} & item1 & item2 & item3 \\\hline
item1 & \diagbox{}{} & --- this --- is --- a --- very --- long --- multirow --- text --- & \\\hline
item2 & & \diagbox{}{} &   \\\hline
item3 & & & \diagbox{}{}
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容