我正在输入一份报告,其中我使用 NiceTabular 环境来处理大表格以显示数据表。我希望能够在编译时设置给定一组单元格/块的对齐方式(l、c 或 r)(以允许用户轻松更改它们),并让其他单元格/块保持给定的对齐方式。当然,在每次编译时,我都可以手动更改每个我想更改对齐方式的块中的每个对齐命令。但我的表格非常大,每当我想更改这些单元格的对齐方式时,这都会花费很长时间。
因此,我的想法是定义一个仅适用于某些单元格/块的命令 \MyAlignment:
\documentclass[12pt,a4paper]{article}
\usepackage{nicematrix}
\newcommand{\MyAlignment}{r}
\begin{document}
\begin{NiceTabular}{cccc}
\Block[r]{1-1}{11} & \Block[\MyAlignment]{1-2}{12} & & 14 \\
\Block[\MyAlignment]{2-1}{23} & \Block[r]{1-2}{22} & & 24 \\
& 32 & 33 & 34 \\
41 & 42 & \Block[\MyAlignment]{1-2}{43} &
\end{NiceTabular}
\end{document}
但是,当我尝试编译它时,编译器返回“键 '\MyAlignment' 对于命令 \Block 来说是未知的。如果继续,它将被忽略”。我尝试使用 \def、\edef、\xdef 和 \gdef 代替 \newcommand,但它没有改变任何东西。
您是否知道是否可以做到这一点以及如何做到这一点?我通常会在 StackExchange 上找到所有问题的答案,但这次,尽管我尽了最大努力,却没有找到任何可以解决这个问题的主题。
太感谢了!
答案1
这是一个通过定义新命令来解决的问题\MyBlock
。
\documentclass[12pt,a4paper]{article}
\usepackage{nicematrix}
\newcommand{\MyAlignment}{r}
\ExplSyntaxOn
\NewDocumentCommand { \MyBlock } { O { } }
{ \use:x { \exp_not:N \Block [ #1 ] } }
\ExplSyntaxOff
\begin{document}
\begin{NiceTabular}{cccc}
\MyBlock[r]{1-1}{11} & \MyBlock[\MyAlignment]{1-2}{12} & & 14 \\
\MyBlock[\MyAlignment]{2-1}{23} & \MyBlock[r]{1-2}{22} & & 24 \\
& 32 & 33 & 34 \\
41 & 42 & \MyBlock[\MyAlignment]{1-2}{43} &
\end{NiceTabular}
\end{document}