是否可以使用命令在 bNiceMatrix 中构建一行?

是否可以使用命令在 bNiceMatrix 中构建一行?

我想bNiceMatrix通过在命令中存储行来构建一个。这是一个 mwe。

\documentclass[a5paper]{article}

\usepackage{nicematrix}

\begin{document}

This is the matrix I want.
\[
  \begin{bNiceMatrix}[light-syntax]
    w x y z;
    a b c d;
  \end{bNiceMatrix}
\]
Something goes wrong when I try to store the second row in a command.

\newcommand{\MySecondRow}{a b c d}
\[
  \begin{bNiceMatrix}[light-syntax]
    w x y z;
    \MySecondRow ;
  \end{bNiceMatrix}
\]


\end{document}

在此处输入图片描述

问题似乎是在单个标记\MySecondRow内进行处理。这可以修复吗?bNiceMatrix

答案1

的 6.27 版 (2024-02-13)nicematrix有一个新键light-syntax-expanded,专门用于解决这种情况。当该键生效时,环境主体会先展开(在 TeX 意义上:它是eLaTeX3 类型的展开),然后再拆分成行(但在提取潜在的 之后\CodeAfer)。

\documentclass[a5paper]{article}

\usepackage{nicematrix}

\begin{document}

This is the matrix I want.
\[
  \begin{bNiceMatrix}[light-syntax]
    w x y z;
    a b c d;
  \end{bNiceMatrix}
\]
With the key \verb|light-syntax-expanded|.

\newcommand{\MySecondRow}{a b c d}
\[
  \begin{bNiceMatrix}[light-syntax-expanded]
    w x y z;
    \MySecondRow ;
  \end{bNiceMatrix}
\]

\end{document}

上述代码的输出

答案2

虽然您不能&在实际的 [light-syntax] 环境中使用,但如果您愿意在命令本身中指定它,那么这对我有用:

\usepackage{nicematrix}

\newcommand{\MySecondRow}{a & b & c & d}

\begin{document}

\[
  \begin{bNiceMatrix}[light-syntax]
    w  x  y  z;
   \MySecondRow
  \end{bNiceMatrix}
\]

\end{document}

并生产

在此处输入图片描述

相关内容