Las macros para hacer que [ ] y ( ) tengan automáticamente \mleft y \mright

Las macros para hacer que [ ] y ( ) tengan automáticamente \mleft y \mright

Dado que estoy escribiendo un documento con miles de corchetes de todo tipo, dimensionar manualmente todos los corchetes o agregarlos manualmente \mlefty \mrightcada 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 \mlefty \rightel 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 \lefty \righten las definiciones de \{y \}que se encuentran en latex.ltxel 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}

ingrese la descripción de la imagen aquí

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.ltxya 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}

ingrese la descripción de la imagen aquí

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}

información relacionada