Мне интересно, есть ли способ присвоить кнопкам (
и )
псевдонимы \begin{pmatrix}
и \end{pmatrix}
, чтобы при вводе этих символов в математическом режиме LaTeX волшебным образом заменял их правильными командами.
Насколько я могу судить, нет смысла использовать "тупые" версии, и это сэкономило бы мне кучу времени. Возможно ли это?
На самом деле я не спрашиваю, как переопределить (
. Я прошу LaTeX заменить все (
s в математическом режиме на \begin{pmatrix}
.
решение1
Редактировать
Оригинальный вопрос, который я видел, просили \( ... \)
расширить до \begin{pmatrix} ... \end{pmatrix}
, но на самом деле OP хочет ( ... )
автоматически расширить до \begin{pmatrix} ... \end{pmatrix}
. Я проголосовал за закрытие этого, потому что это дубликатАвтоматические команды влево и вправо(см. ответ LSpice), а затем вопрос был закрыт и снова открыт. Поэтому я отвечаю повторно.
Хитрость в том, чтобы сделать то, что хочет ОП, заключается в создании (
и )
активных персонажей. Как только это будет сделано, их можно будет переопределять по желанию:
\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
и вне этого они ведут себя нормально. Переопределение коткодов внутри среды требует немного больше гимнастики (см.Как можно изменить коды котов в определении среды?):
\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)
, поэтому у меня есть сомнения относительно моральных утверждений выше о том, что этого делать не следует!]