Поскольку я пишу документ с тысячами скобок всех видов, ручное изменение размера всех скобок или ручное добавление \mleft
и \mright
каждый раз в конечном итоге займет много времени. Более того, у меня нет строгих типографских правил, которым нужно следовать, поскольку документ предназначен для личного пользования.
Поэтому в этом случае неплохой идеей будет переопределить (
и )
как \mleft(
и \mright)
соответственно, и то же самое сделать для квадратных и фигурных скобок (разумеется, только в математическом режиме).
Я знаю обо всех недостатках использования скобок с автоматическим изменением размера (например,Интервалы вокруг \left и \rightилиПочему LaTeX не интерпретирует ( как \left( и ) как \right)?илиРазве плохо использовать \left и \right?), по крайней мере, с использованием \mleft
и \right
проблема с интервалами решена.
На страницеКак сделать так, чтобы \{ и \} автоматически имели \left и \rightegreg объясняет, что есть простой способ достичь цели в случае фигурных скобок. Макрос состоит в добавлении \left
и \right
в определения \{
и \}
, которые находятся в latex.ltx
файле.
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\let\{\relax \let\}\relax % to avoid warnings about the redefinition
\DeclareRobustCommand{\{}{\ifmmode\mleft\lbrace\else\textbraceleft\fi}
\DeclareRobustCommand{\}}{\ifmmode\mright\rbrace\else\textbraceright\fi}
\begin{document}
$a\{\dfrac13\}a$
\end{document}
Я ищу аналогичный способ переопределения команд фигурных и квадратных скобок, но не знаю, как найти их определения в файле, latex.ltx
так как он очень большой.
решение1
Вы можете сделать эти символы математически активными, установив их математический код на 8000, а затем обозначив их с помощью приема со строчными буквами:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\makeatletter
\def\@mathactive#1#2{\begingroup
\lccode`~=`#1
\lowercase{\endgroup
\def~{#2}}%
\mathcode`#1="8000\relax}
\@mathactive({\mleft(}
\@mathactive){\mright)}
% Do the same for brackets. (Do not try it with braces.)
\makeatother
\begin{document}
$ (\dfrac12) $
\end{document}
Редактировать: Вот код, который работает с PDFTeX. В PDFTeX у AMSMath, похоже, есть проблема с активными математическими символами.
\documentclass{article}
\usepackage{amsmath}
\usepackage{mleftright}
\begingroup
\catcode`\(=\active
\catcode`\)=\active
\gdef({\mleft\lparen}
\gdef){\mright\rparen}
\endgroup
\def\lparen{\delimiter"028300\relax}
\def\rparen{\delimiter"029301\relax}
\everymath{\mathcode`\(="8000
\mathcode`\)="8000}
\everydisplay{\mathcode`\(="8000
\mathcode`\)="8000}
\begin{document}
$ (\dfrac12) $
\[ (\frac18) \]
\end{document}