pgfkeys 和 nicematrix 使用 pgfkeys 计算并在 nicematrix 前言中使用

pgfkeys 和 nicematrix 使用 pgfkeys 计算并在 nicematrix 前言中使用

我有以下内容:

\documentclass[10pt, a4paper]{article}

\usepackage{nicematrix}

\pgfkeys{
        /tikz/gaussenv/.cd,
        % column number
        col/.initial=1,
        colC/.initial=4,
}

\newenvironment{gaussMatrix}[1][]%
{
        \pgfkeys{/tikz/gaussenv/.cd, #1}
        \pgfkeys{/tikz/gaussenv/colC=\pgfmathparse{int(\pgfkeysvalueof{/tikz/gaussenv/col}-1)}\pgfmathresult}
        %\pgfkeysvalueof{/tikz/gaussenv/colC}
        \begin{pNiceArray}[name=mymatrix]{*{\pgfkeysvalueof{/tikz/gaussenv/colC}}{C}|C}
        }%
        {
        \end{pNiceArray}
}


\begin{document}
\begin{align*}
        \begin{gaussMatrix}[col=5,colC=4] %number of colums in total, number of columns left of the line
                1 & 1 & 1 & 1 & 1 \\
                2 & 2 & 2 & 2 & 2 \\
                3 & 3 & 3 & 3 & 3 \\
                4 & 4 & 4 & 4 & 4 \\
                5 & 5 & 5 & 5 & 5 \\
        \end{gaussMatrix}
\\
\end{align*}

\end{document}

但不知何故,nicematrix我不喜欢 pgfkeys 的输出。没有计算,它也能工作,但我想删除它,因为必须指定总列数 -1(尽管这很容易计算)。

有人知道为什么这不起作用并且可能有办法修复它吗?

答案1

您需要区分可用于排版数字的某些命令组合和可用于存储该数字的某些宏。您可以使用它们\pgfmathsetmacro来创建宏:

\documentclass[10pt, a4paper]{article}

\usepackage{nicematrix}

\pgfkeys{
        /tikz/gaussenv/.cd,
        % column number
        col/.initial=1,
        colC/.initial=4,
}

\newenvironment{gaussMatrix}[1][]%
{
        \pgfkeys{/tikz/gaussenv/.cd, #1}
        \pgfmathsetmacro{\mycolC}{int(\pgfkeysvalueof{/tikz/gaussenv/col}-1)}
        \pgfkeys{/tikz/gaussenv/colC=\mycolC}
        \begin{pNiceArray}[name=mymatrix]{*{\pgfkeysvalueof{/tikz/gaussenv/colC}}{C}|C}
        }%
        {
        \end{pNiceArray}
}


\begin{document}
\begin{align*}
        \begin{gaussMatrix}[col=5,colC=4] %number of colums in total, number of columns left of the line
                1 & 1 & 1 & 1 & 1 \\
                2 & 2 & 2 & 2 & 2 \\
                3 & 3 & 3 & 3 & 3 \\
                4 & 4 & 4 & 4 & 4 \\
                5 & 5 & 5 & 5 & 5 \\
        \end{gaussMatrix}
\\
\end{align*}

\end{document}

在此处输入图片描述

这假设您有理由将结果存储在 pgf 密钥中。如果不是这种情况,您可以使用更短的代码。

\documentclass[10pt, a4paper]{article}

\usepackage{nicematrix}

\pgfkeys{
        /tikz/gaussenv/.cd,
        % column number
        col/.initial=1,
        colC/.initial=4,
}

\newenvironment{gaussMatrix}[1][]%
{
        \pgfkeys{/tikz/gaussenv/.cd, #1}
        \begin{pNiceArray}[name=mymatrix]{*{\the\numexpr\pgfkeysvalueof{/tikz/gaussenv/col}-1}{C}|C}
        }%
        {
        \end{pNiceArray}
}


\begin{document}
\begin{align*}
        \begin{gaussMatrix}[col=5,colC=4] %number of colums in total, number of columns left of the line
                1 & 1 & 1 & 1 & 1 \\
                2 & 2 & 2 & 2 & 2 \\
                3 & 3 & 3 & 3 & 3 \\
                4 & 4 & 4 & 4 & 4 \\
                5 & 5 & 5 & 5 & 5 \\
        \end{gaussMatrix}
\\
\end{align*}

\end{document}

相关内容