我正在尝试使用 NiceTabular 创建一个表格,因为我遇到了多列/多行的一些颜色问题。
表格看起来已经很好了,除了 \Block 单元格中没有换行。在普通单元格中,换行按预期工作。使用多行时我遇到了同样的问题,但我可以再次将宽度设置为多行参数,然后换行完成,但使用 NiceTabular 我无法做到这一点:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{nicematrix} % nicematrix.sty must be installed
\begin{document}
\begin{NiceTabular}[colortbl-like]{|p{1cm}|p{2cm}|Wc{3cm}|p{4cm}|p{4cm}|}
\hline
\Block[fill=[HTML]{FFFF00}]{2-1}{Table Title} &
\Block[fill=[HTML]{FFFF00}]{2-1}{Column 1} & Column & \Block[fill=[HTML]{FFFF00}] {2-2}{Column 3} & \\
\cline{3-3}
& & 2 & & \\
\hline
Row 1 & Value 1 & Value 2 & Value 3 & Value 4 \\
\hline
\Block[fill=[HTML]{780373}]{2-1}{Row 2} &
Long text outside of Block &
\Block[fill=[HTML]{548235}]{2-1}{This cell contains a long value} & \Block[fill=[HTML]{0070C0}]{2-2}{Value 8} & \\
\cline{2-2}
& Value 6 & & & \\
\hline
\end{NiceTabular}
\end{document}
表格应该在最后从 excel 自动创建,因此仅在文本中添加换行符并不能解决问题。如何在 NiceTabular \Block 中获得换行符?
答案1
带有\parbox
。
\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{nicematrix}
\usepackage{rotating}
\begin{document}
\begin{sidewaystable}
\begin{NiceTabular}[hvlines,colortbl-like]{p{1cm}p{2cm}Wc{3cm}p{4cm}p{4cm}}
\Block[fill=[HTML]{FFFF00}]{2-1}{Table Title} &
\Block[fill=[HTML]{FFFF00}]{2-1}{Column 1} & Column & \Block[fill=[HTML]{FFFF00}] {2-2}{Column 3} & \\
& & 2 & & \\
Row 1 & Value 1 & Value 2 & Value 3 & Value 4 \\
\Block[fill=[HTML]{780373}]{2-1}{Row 2} &
Long text outside of Block &
\Block[fill=[HTML]{548235}]{2-1}{\parbox{3cm}{This cell contains a long value}} & \Block[fill=[HTML]{0070C0}]{2-2}{Value 8} & \\
& Value 6 & & & \\
\end{NiceTabular}
\end{sidewaystable}
\end{document}
备注: 就您而言,密钥hvlines
绘制了所有必需的规则。
与往常一样nicematrix
,您需要进行多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案2
在最新版本nicematrix
(2021-08-10 的 v. 6.0)中,固定宽度的列(类型为 、 和 的列)的宽度p
用于b
该m
列X
的单列块。因此,就您而言,您直接得到了预期的结果。
\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{nicematrix}
\usepackage{rotating}
\begin{document}
\begin{sidewaystable}
\begin{NiceTabular}[hvlines,colortbl-like]{p{1cm}p{2cm}Wc{3cm}p{4cm}p{4cm}}
\Block[fill=[HTML]{FFFF00}]{2-1}{Table Title} &
\Block[fill=[HTML]{FFFF00}]{2-1}{Column 1} & Column & \Block[fill=[HTML]{FFFF00}]{2-2}{Column 3} & \\
& & 2 & & \\
Row 1 & Value 1 & Value 2 & Value 3 & Value 4 \\
\Block[fill=[HTML]{780373}]{2-1}{Row 2} &
Long text outside of Block &
\Block[fill=[HTML]{548235}]{2-1}{This cell contains a long value} & \Block[fill=[HTML]{0070C0}]{2-2}{Value 8} & \\
& Value 6 & & & \\
\end{NiceTabular}
\end{sidewaystable}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。