我想知道是否有任何方法可以将(
和)
按钮别名为\begin{pmatrix}
和\end{pmatrix}
,以便当我在数学模式下输入这些字符时,LaTeX 会神奇地用正确的命令替换它们。
据我所知,没有理由使用“愚蠢”的版本,而且它可以节省我很多时间。这可能吗?
我实际上并不是在问如何重新定义。我是要求 LaTeX 将数学模式中的(
所有 s 替换为。(
\begin{pmatrix}
答案1
编辑
我看到的原始问题要求\( ... \)
扩展为\begin{pmatrix} ... \end{pmatrix}
,但实际上,OP希望( ... )
自动扩展为\begin{pmatrix} ... \end{pmatrix}
。我投票关闭此问题,因为它与自动左右命令(参见 LSpice 的回答),然后问题被关闭并重新打开。所以,我重新回答。
实现 OP 要求的诀窍是创建(
活跃)
角色。完成此操作后,可以随意重新定义它们:
\documentclass{amsart}
\let\lparen=(\let\rparen=) % save parentheses
\catcode`(=\active\catcode`)=\active % make them active
\def({\begin{pmatrix}} % redefine them
\def){\end{pmatrix}}
\begin{document}
\[ ( 1 & 0 & 1 \\ 0 & 1 & 0\\ 0 & 0 & 1 ) \]
\end{document}
使用此代码,如果您想输入(
或 ,)
则需要使用\lparen
和\rparen
。这很可能会产生奇怪且不太好的副作用。
一个稍微好一点的方法是定义一个环境,其中(
和)
扩展为一个pmatrix
,在这个环境之外它们表现正常。在环境内重新定义 catcode 需要更多的技巧(参见如何改变环境定义中的 catcodes?):
\documentclass{amsart}
\let\lparen=(\let\rparen=)% save parentheses
\catcode`(=\active\catcode`)=\active% change catcode for newenvironment
\newenvironment{pequation}{%
\catcode`(=\active\catcode`)=\active% make them active in environment
\def({\begin{pmatrix}}% redefine them
\def){\end{pmatrix}}%
\equation%
}{\endequation}
\catcode`(=12\catcode`)=12% restore to original catcodes
\begin{document}
\begin{pequation}
( 1 & 0 & 1 \\ 0 & 1 & 0\\ 0 & 0 & 1 )
\end{pequation}
$\sin(x)$
\end{document}
原始答案
如果你能做到真的想要,但正如评论所示,大多数人不建议这样做。主要问题是,默认情况下,LaTeX 使用\( ... \)
来排版数学,因此它(几乎)相当于$ ... $
--- 事实上,对于数学模式来说,\( 和 \) 是否比美元符号更可取?, \(...\)
提供更好的错误消息。该\(...\)
命令与 LaTeX 鼓励我们使用 排版显示方程的方式相反\[ ... \]
。请注意\[ ... \]
注意不是相当于$$ ... $$
!参见为什么 \[ ... \] 比 $$ ... $$ 更可取?。
也就是说,你可以用\renewcommand
(或\def
) 覆盖任何命令的定义。覆盖命令的定义时应小心谨慎,因为这样做可能会破坏其他东西。
除了这些警告之外,以下内容可以满足您的要求:
\documentclass{amsart}
\renewcommand\({\begin{pmatrix}}
\renewcommand\){\end{pmatrix}}
\begin{document}
Here is a wonderful matrix
\[ \( 1 & 0 & 1 \\ 0 & 1 & 0\\ 0 & 0 & 1\) \]
\end{document}
可能会出现意想不到的后果,但我认为这应该没问题,尽管这可能会让你的合著者感到困惑!在我看来,更好的方法是正确配置你的编辑器:)
[我必须承认,我曾经重新定义\(
了\bigl(
和,\)
所以\bigr)
我对上面的道德陈述表示怀疑,认为你不应该这样做!]