Macros para fazer [ ] e ( ) automaticamente possuem \mleft e \mright

Macros para fazer [ ] e ( ) automaticamente possuem \mleft e \mright

Como estou escrevendo um documento com milhares de colchetes de todos os tipos, dimensionar manualmente todos os colchetes ou adicioná-los manualmente \mlefte \mrighttoda vez vai demorar muito no final. Além disso, não tenho regras tipográficas rígidas a seguir, uma vez que o documento é para uso privado.

Portanto, neste caso, não é uma má ideia redefinir (e )como \mleft(e \mright)respectivamente, e o mesmo também para colchetes e colchetes (obviamente apenas no modo matemático).

Estou ciente de todas as desvantagens do uso de colchetes de redimensionamento automático (por exemploEspaçamento em torno de \esquerda e \direitaouPor que o LaTeX não interpreta (como \left( e ) como \right)?ouÉ ruim usar \left e \right?), pelo menos usando \mlefte \righto problema de espaçamento está resolvido.

Na páginaComo fazer com que \{ e \} tenham automaticamente \left e \rightegreg explica que existe uma maneira fácil de atingir o objetivo no caso de chaves. A macro consiste em adicionar \lefte \rightnas definições de \{e \}que se encontram no latex.ltxarquivo.

\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}

insira a descrição da imagem aqui

Estou procurando uma forma semelhante de redefinir os comandos de colchetes e colchetes, mas não sei como encontrar suas definições no arquivo, latex.ltxpois é um arquivo muito grande.

Responder1

Você pode ativar a matemática desses símbolos definindo seu código matemático para 8000 e, em seguida, defini-los pelo truque de letras 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}

insira a descrição da imagem aqui

Editar: Aqui está um código que funciona com PDFTeX. No PDFTeX, o AMSMath parece ter problemas com caracteres matemáticos ativos.

\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}

informação relacionada