重新定义 `\\`

重新定义 `\\`

编辑:这个问题的原始版本是一个愚蠢的问题;@egreg指出我正在考虑{amsmath}矩阵环境。

我确信以前有人问过这个问题,但很难搜索\\。我想添加一个钩子来修改\\换行命令的行为,但我的幼稚方法没有奏效。

\documentclass{article}
\usepackage{mwe}
\begin{document}
\[\def\\{\end{matrix}, \begin{matrix}}
\begin{matrix}
a \\ c
\end{matrix}\]
\end{document}

我想要的输出与我输入的相同

\documentclass{article}
\usepackage{mwe}
\begin{document}
\[
\begin{matrix}
a \end{matrix}, \begin{matrix}c
\end{matrix}\]
\end{document}

答案1

matrixLaTeX 内核中没有环境。

\DeclareRobustCommand\matrix[1]{\null\,\vcenter{\normalbaselines\m@th
    \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
      \mathstrut\crcr\noalign{\kern-\baselineskip}
      #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}

实际上语法是纯 TeX 的语法,应该是

\matrix{a & b \cr c & d }

由于您本质上使用的是\matrix\def\\{b}...,所以的参数\matrix\def,这会破坏一切。

环境matrix由 定义amsmath。如果您将代码更改为

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\begin{matrix}
\def\\{b}
a \\ c
\end{matrix}\]
\end{document}

然后你就会得到你想要的。但很难知道为什么。的重新定义\\只是在矩阵的第一个单元格中,所以它不会传播。如果你这样做

\begin{matrix}
\def\\{b}
a & b \\ c & d
\end{matrix}

你会得到的标准含义\\

相关内容