Como estou escrevendo um documento com milhares de colchetes de todos os tipos, dimensionar manualmente todos os colchetes ou adicioná-los manualmente \mleft
e \mright
toda 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 \mleft
e \right
o 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 \left
e \right
nas definições de \{
e \}
que se encontram no latex.ltx
arquivo.
\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}
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.ltx
pois é 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}
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}