更改矩阵环境以使用特定字体的括号

更改矩阵环境以使用特定字体的括号

以下是我尝试过的:

\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{environ,scalerel}

\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{OldStandard-Regular.otf}[range={"0028,"0029},]

\let\pmatrix\relax
\let\endpmatrix\relax
\NewEnviron{pmatrix}{\scaleleftright[.8ex]{(}{\begin{matrix}\BODY\end{matrix}}{)}}


\begin{document}
    \begin{align*}
        \scaleleftright[2ex]{(}{a^{\dfrac{n^{k}}{2}}}{)}\\
        \begin{pmatrix}
            ajsbdjkhfbv & \mbox{ where}\\
            \alpha,\beta,\Omega & \mbox{ otherwise}
        \end{pmatrix}
    \end{align*}
\end{document}

scalerel包应该可以帮助使用所述字体的括号并调整大小。但我一直收到此错误:

Argument of \pmatrix has an extra }. ^^I\end{align*}

Paragraph ended before \pmatrix was complete. ^^I\end{align*}

注意:没有限制,任何可以处理这个问题的解决方案都可以。

答案1

这是一个解决方案。它通过将环境的主体放在一个框 ( ) 中来避免将环境的整个主体作为参数\l_masum_box。然后该框用于 的第二个强制参数\scaleleftright

\documentclass{article}
\usepackage{mathtools}
\usepackage{scalerel}

\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{OldStandard-Regular.otf}[range={"0028,"0029},]

\ExplSyntaxOn
\box_new:N \l_masum_box
\RenewDocumentEnvironment{pmatrix}{}
   { 
     \hbox_set:Nw \l_masum_box 
     \c_math_toggle_token
     \begin{matrix}
   }
   { 
     \end{matrix}
     \c_math_toggle_token
     \hbox_set_end:
     \scaleleftright[.8ex]{(}{\box_use:N \l_masum_box}{)}
   }
\ExplSyntaxOff


\begin{document}
    \begin{align*}
        \scaleleftright[2ex]{(}{a^{\dfrac{n^{k}}{2}}}{)}\\
        \begin{pmatrix}
            ajsbdjkhfbv & \mbox{ where}\\
            \alpha,\beta,\Omega & \mbox{ otherwise}
        \end{pmatrix}
     \end{align*}
\end{document}

该代码必须用 xelatex 或 lualatex 进行编译(因为它使用unicode-math)。

上述代码的输出

相关内容