将双反斜杠传递给宏

将双反斜杠传递给宏

我正在尝试编写一个宏,其中一个参数是双反斜杠,以获取列矩阵,但我无法转义该\字符。这是一个抛出错误的简单示例。如果我尝试\myBmatrix{z_1 \\ z_2}\myBmatrix{z_1 \\\\\\ z_2}

(我试图编写的实际宏更复杂,但我想从这个愚蠢的宏开始)

\documentclass{amsart}
\def\myBmatrix#1{
    \begin{bmatrix}
    {{#1}}
    \end{bmatrix}
    }
\begin{document}
\begin{align}
\myBmatrix{z_1 \\\\ z_2}
\end{align}
\end{document}

答案1

你可能想要(你的某些行被我的版本注释和替换了):

\documentclass{amsart}
\def\myBmatrix#1{
    \begin{bmatrix}
%    {{#1}}
    #1
    \end{bmatrix}
    }
\begin{document}
\begin{align}
%\myBmatrix{z_1 \\\\ z_2}
\myBmatrix{z_1 \\ z_2}
\end{align}
\end{document}

在此处输入图片描述

答案2

\def如果您删除多余的花括号和额外的反斜杠,则可行。但是,\newcommand*由于这是针对 LaTeX 的,因此效果会更好。

\documentclass{amsart}
\newcommand*\myBmatrix[1]{%
  \begin{bmatrix}
    #1
  \end{bmatrix}%
}
\begin{document}
\begin{align}
  \myBmatrix{z_1 \\ z_2}
\end{align}
\end{document}

请记住,在 TeX 中,反斜杠不会转义反斜杠。如果\\不起作用,\\\\可能不会更好 ;)。

输出

相关内容