Version von \left und \right, die tiefgestellte und hochgestellte Zeichen ignoriert

Version von \left und \right, die tiefgestellte und hochgestellte Zeichen ignoriert

Wie kann ich ein Makro (oder Makros) definieren, das automatisch funktioniert wie die Grundelemente \leftund , aber den Raum unter oder über Operatoren wie oder \rightnicht berücksichtigt ?\sum\bigcup

Dieses geänderte linke und rechte \mleft/ \mrightsollte so funktionieren, \[\Bigl(\sum_i^j\Bigr)\]als ob die Eingabe wäre \[\mleft(\sum_i^j\mright)\], während das ursprüngliche \left/ \righterzeugt \[\Biggl(\sum_i^j\Biggr)\].

Ich habe zwar bereits eine Lösung (sb), diese weist jedoch einige Einschränkungen auf und es könnte einen besseren Ansatz geben.

Antwort1

Das folgende Makro \lrmverwendet zunächst a \vphantommit dem tatsächlichen Inhalt der Klammern, um die korrekte Gesamtzeilenhöhe zu erhalten. Dann ruft es \leftein weiteres auf und erstellt es \vphantom, aber dieses Mal ändert es die Catcodes und definiert ^und _neu in die Bedeutung \relax. Schließlich gibt es tatsächlich den Inhalt innerhalb von a \smashdirekt vor dem Aufruf von aus \right. Denn \smashdie Zeilenhöhe erhöht sich nicht.

\begingroup
\catcode`_=\active
\catcode`^=\active
\gdef\lrm#1#2#3{%
 \vphantom{#2}%
 \left#1%
 \vphantom{
   \begingroup
   \def\sb##1{\relax}%
   \def\sp##1{\relax}%
   \def_##1{\sb{##1}}%
   \def^##1{\sp{##1}}%
   \catcode`_=\active
   \catcode`^=\active
   \scantokens{ #2\endinput}%
   \endgroup
  }
  \smash{#2}
  \right#3%
}

\gdef\mleft#1#2\mright#3{\lrm{#1}{#2}{#3}}
\gdef\mmleft#1#2\mmright#3{\lrm{#1}{#2}{#3}}
\gdef\mmmleft#1#2\mmmright#3{\lrm{#1}{#2}{#3}}
\endgroup

Diese Lösung weist einige Einschränkungen auf:

  • Tief- und Hochstellungen innerhalb von Makros werden nicht erkannt ( \expandonceinnerhalb der \scantokensHilfen, würden aber die meisten verschachtelten Anwendungen beschädigen).
  • \mleft/ \mrightkönnen nicht verschachtelt werden, aber eine Verschachtelung \lrmist möglich.
  • \scantokenserfordert eTeX (d. h. pdftex, luatex, xetex …).
  • Bei Verwendung für Klammern um einen Bruch mit zwei Summen können die resultierenden Klammern zu klein aussehen.

verwandte Informationen