{NiceTabular} 自动换行问题

{NiceTabular} 自动换行问题

我正在使用 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 节点)。

上述代码的输出

相关内容