我正在使用 NiceMatrix 包中的 NiceTabular,但在单元格内换行文本时遇到了麻烦。我发现使用此包的背景颜色可以获得最佳效果,因为它在渲染时似乎不会弄乱边框。但是,如果文本太长,它不会像使用 tabular 那样换行。我是新手,但在我看来,如果仅使用 tabular,文本只会在指定列宽时换行,但即使在 NiceTabular 中指定列宽,也不会产生相同的效果。
\begin{NiceTabular}{|WC{0.5\textwidth}|WL{0.5\textwidth}|}[code-before = \rowcolor{gray!30}{1}]
\hline
\textbf{Level 1} & \textbf{Level 2}\\
blah blah blah & long long line of blah blah that will not wrap when the table fills the column width\\
\hline
\end{NiceTabular}
产量:
我已阅读完文档,但发现没有任何帮助,而且这似乎是一个相当新的软件包,我在互联网上找不到太多结果(至少与此问题相关的结果)。有什么想法吗?
答案1
使用两种自定义列类型,您可以允许在表格单元格内自动换行。我还更改了列宽计算,以确保表格适合文本宽度:
\documentclass{article}
\usepackage{nicematrix}
\usepackage{calc}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1\textwidth-2\tabcolsep-1.5\arrayrulewidth}}
\newcolumntype{Y}[1]{>{\centering\arraybackslash}p{#1\textwidth-2\tabcolsep-1.5\arrayrulewidth}}
\begin{document}
\noindent
\begin{NiceTabular}{|Y{0.5}|P{0.5}|}[code-before = \rowcolor{gray!30}{1}]
\hline
\textbf{Level 1} & \textbf{Level 2}\\
blah blah blah & long long line of blah blah that will not wrap when the table fills the column width\\
\hline
\end{NiceTabular}
\end{document}
答案2
最新版本 de nicematrix
(2021-08-10 的 v. 6.0)提供了X
与 的列类似的列tabularx
(实际上带有可选键,如tabu
---obsolete---and tabularray
)。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\noindent
\begin{NiceTabular}{X[c]X[l]}[vlines]
\CodeBefore
\rowcolor{gray!30}{1}
\Body
\Hline
\RowStyle{\bfseries}
Level 1 & Level 2\\
blah blah blah & long long line of blah blah that will not wrap when the table fills the column width\\
\Hline
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。