Dado que estoy escribiendo un documento con miles de corchetes de todo tipo, dimensionar manualmente todos los corchetes o agregarlos manualmente \mleft
y \mright
cada vez necesitará mucho tiempo al final. Además, no tengo reglas tipográficas estrictas que seguir ya que el documento es para uso privado.
Entonces, en este caso no es mala idea redefinir (
y )
como \mleft(
y \mright)
respectivamente, y lo mismo también para las llaves y las llaves (obviamente solo en modo matemático).
Soy consciente de todos los inconvenientes del uso de corchetes de cambio de tamaño automático (por ejemploEspaciado alrededor de \left y \righto¿Por qué LaTeX no interpreta (como \left( y ) como \right)?o¿Alguna vez es malo usar \left y \right?), al menos usando \mleft
y \right
el problema de espaciado está resuelto.
en la paginaCómo hacer que \{ y \} tengan automáticamente \left y \rightegreg explica que hay una manera fácil de lograr el objetivo en el caso de llaves. La macro consiste en agregar \left
y \right
en las definiciones de \{
y \}
que se encuentran en latex.ltx
el archivo.
\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}
Estoy buscando una forma similar de redefinir los comandos de corchetes y corchetes, pero no sé cómo encontrar sus definiciones en el archivo latex.ltx
ya que es un archivo muy grande.
Respuesta1
Puedes hacer que estos símbolos sean matemáticos activos estableciendo su código matemático en 8000 y luego definiéndolos con el truco de minúsculas:
\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}
Editar: Aquí hay un código que funciona con PDFTeX. En PDFTeX, AMSMath parece tener un problema con los caracteres matemáticos activos.
\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}