Makros, um [ ] und ( ) automatisch \mleft und \mright haben zu lassen

Makros, um [ ] und ( ) automatisch \mleft und \mright haben zu lassen

Da ich ein Dokument mit Tausenden von Klammern aller Art schreibe, wird es am Ende sehr viel Zeit in Anspruch nehmen, die Größe aller Klammern manuell anzupassen oder jedes Mal manuell neue hinzuzufügen \mleft. \mrightDarüber hinaus muss ich keine strengen typografischen Regeln einhalten, da das Dokument für den privaten Gebrauch bestimmt ist.

Daher ist es in diesem Fall keine schlechte Idee, (und )als \mleft(bzw. neu zu definieren \mright), und dasselbe gilt auch für eckige und geschweifte Klammern (offensichtlich nur im Mathematikmodus).

Ich bin mir aller Nachteile bewusst, die die Verwendung von Klammern zur automatischen Größenanpassung mit sich bringt (zum BeispielAbstand um \left und \rightoderWarum interpretiert LaTeX ( nicht als \left( und ) nicht als \right)?oderIst es jemals schlecht, \left und \right zu verwenden?), zumindest mit \mleftund \rightdas Abstandsproblem ist gelöst.

Auf der SeiteWie man dafür sorgt, dass \{ und \} automatisch \left und \right habenegreg erklärt, dass es im Fall von geschweiften Klammern einen einfachen Weg gibt, das Ziel zu erreichen. Das Makro besteht darin, \leftund \rightin die Definitionen von \{und einzufügen \}, die in der Datei gefunden werden 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}

Bildbeschreibung hier eingeben

Ich suche nach einer ähnlichen Möglichkeit, die Befehle für runde und eckige Klammern neu zu definieren, weiß aber nicht, wie ich ihre Definitionen in der Datei finden kann, latex.ltxda es sich um eine sehr große Datei handelt.

Antwort1

Sie können die Mathematik dieser Symbole aktivieren, indem Sie ihren Mathematikcode auf 8000 setzen und sie dann mit dem Kleinbuchstabentrick definieren:

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

Bildbeschreibung hier eingeben

Bearbeiten: Hier ist ein Code, der mit PDFTeX funktioniert. In PDFTeX scheint AMSMath ein Problem mit aktiven mathematischen Zeichen zu haben.

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

verwandte Informationen