![重新定义 `\\`](https://linux22.com/image/410612/%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%20%60%5C%5C%60.png)
编辑:这个问题的原始版本是一个愚蠢的问题;@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
matrix
LaTeX 内核中没有环境。
\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}
你会得到的标准含义\\
。