Mathematisch-mathematische Operatoren immer im Textstil

Mathematisch-mathematische Operatoren immer im Textstil

Ich möchte ein Makro definieren, das sich zum gleichen Symbol erweitert, \sumaber den Inline-Stil ( \textstyle) verwendet, auch wenn es in einer angezeigten Umgebung verwendet wird.

Das habe ich bekommen:

\newcommand{\Alt}{\@ifstar{\sum}{{\textstyle\sum}}}

Mit der markierten Version kann ich den Anzeigestil in Ausnahmesituationen selektiv aktivieren. Dies ist jedoch keine zwingende Voraussetzung.

Wenn ich dies nicht in ein Makro eingebunden hätte, hätte ich es folgendermaßen erreicht:

bla {\textstyle \sum_a^b bla} bla

\sumIch fühle mich nicht ganz wohl dabei , in der Makrodefinition eine Gruppe einzuschließen , nur um den Umfang einzuschränken \textstyle.

Meine Frage ist: Gibt es Situationen, in denen der Abstand durch die zusätzliche Gruppe um ihn herum unterbrochen werden kann \sum?

Antwort1

Basierend auf der Kommentardiskussion hatte ich etwas Ähnliches wie die Antwort unter vorgeschlagenWie werden große Betreiber definiert?, in der Form von \DeclareMathOperator*{\barr}{\textstyle\sum}. Dieser Ansatz setzt jedoch immer noch Anzeigestilgrenzen oberhalb und unterhalb der Summe (Beispiel 1). Dennoch wissen wir, dass der von \barrin Textstil bereitgestellte Abstand (Beispiel 2) der richtige Abstand ist, den der OP sucht.

Ich konnte diesen Abstand und die Platzierung von Hoch- und Tiefstellung in Beispiel 3-5 mithilfe verschiedener Ansätze nachbilden. Beispiel 3 manipuliert das Ergebnis im Anzeigestil, indem ein \mathordanstelle von verwendet wird \mathop, aber natürlich muss der Abstand vor und nach - angepasst werden, um dem richtigen Abstand (Beispiel 2) zu entsprechen.

Bsp. 4 und 5 sind Variationen des vom OP vorgeschlagenen Ansatzes. In Bsp. 4 füge ich innerhalb seiner Klammern Vor- und Nachmaterial hinzu. Je nach Art des Materials ist dieser Ansatz jedoch möglicherweise nicht verfügbar.

Beispiel 5 ist der Ansatz des OP, außer dass schmale Leerzeichen hinzugefügt wurden, da die Klammern die Möglichkeit der Summenformel aufheben, \mathopihre Reichweite über die Klammern hinaus auszudehnen.

Dies beantwortet tatsächlich die Frage des OP: „Gibt es Situationen, in denen die Abstände durch die zusätzliche Gruppe um unterbrochen werden können \sum?“, denn ohne die schmalen Abstände in Beispiel 5 wären die Abstände im Ansatz des OP nicht korrekt.

\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator*{\barr}{\textstyle\sum}
\begin{document}
\centering
\verb|\barr| in \verb|\displaystyle|:
\[
A\barr_{i=3}^{6}B
\]

\verb|\barr| in \verb|\textstyle|:

\medskip inline: \(A A\barr_{i=3}^{6}B B\)

\verb|\mathord| with thin spaces added
\[
A A\,\mathord{\textstyle\sum}_{i=3}^6\, B B
\]

OP's original approach \textit{if} pre- and post- content embraced
\[
A {A \textstyle \sum_{i=3}^6 B} B
\]

OP's original approach, with no embraced pre- and post- content, but thin spaces added

\[
A A {\,\textstyle \sum_{i=3}^6\,} B B
\]
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Möglicherweise möchten Sie diesbezüglich einen abstrakten Ansatz wählen. Wir können die Tatsache ausnutzen, dass amsmathsich alle Operatornamen, die Grenzwerte annehmen, auf einheitliche Weise ändern, indem wir @am Ende des Namens das Symbol hinzufügen, das die Bedeutung hat.

\documentclass{article}
\usepackage{amsmath,etoolbox}
\makeatletter
\newtoggle{reducedop}
\newcommand{\reduceoperatorsize}[1]{%
  \csletcs{#1saved}{#1}%
  \csletcs{#1@saved}{#1@}%
  \@namedef{#1}{%
    \@ifstar
      {\togglefalse{reducedop}\@nameuse{#1saved}}%
      {\toggletrue{reducedop}\@nameuse{#1saved}}%
  }
  \@namedef{#1@}{%
    \iftoggle{reducedop}
      {\reduced@operator{#1}}
      {\@nameuse{#1@saved}}
  }%
}
\newcommand{\reduced@operator}[1]{%
  \mathop{\mathpalette\reduced@operator@i{#1}\relax}%
}
\newcommand\reduced@operator@i[2]{%
  \ifx#1\displaystyle\textstyle\else#1\fi
  \csname #2@saved\endcsname
}
\makeatother

\reduceoperatorsize{sum}

\begin{document}
$\sum*_{k=1}^n$\quad$\sum_{k=1}^n$\quad$\sum\limits_{k=1}^n$
\[
\sum*_{k=1}^n\quad\sum_{k=1}^{n} k^2=\frac{n(n+1)(2n+1)}{6}
\]
\end{document}

Die erste Zeile soll zeigen, dass das übliche Verhalten respektiert wird.

Bildbeschreibung hier eingeben

Das amsmathPaket definiert neu \summit

\let\sum@\sum
\def\sum{\DOTSB\sum@\slimits@}

und macht dasselbe für \coprod, \bigvee, \bigwedge, \biguplus, \bigcap, , \bigcup, \prod, \bigotimes, \bigoplus, \bigodotund \bigsqcup. Dadurch werden die Symbole „punktbewusst“ und respektieren die Option sumlimitsoder nosumlimitsaufgrund von

\DeclareOption{sumlimits}{\let\slimits@\displaylimits}
\DeclareOption{nosumlimits}{\let\slimits@\nolimits}

Auf dieser Grundlage definiere \sumich

\togglefalse{reducedop}\sumsaved

wenn \sum*gefunden wird und

\toggletrue{reducedop}\sumsaved

andernfalls. Hier \sumsavedist das Gleiche wie \sumin definiert amsmath. Dann definiere ich neu, \sum@um zu tun \sum@saved, wenn der Umschalter auf „false“ gesetzt ist, wobei \sum@saveddas Gleiche wie das Original ist \sum@. Wenn der Umschalter auf „true“ gesetzt ist, \mathop{\mathpalette\reduced@operator@i{sum}}wird stattdessen ausgeführt. Innerhalb \mathpaletteüberprüfe ich den Stil: Wenn es ist \displaystyle, verwende ich \textstyle, andernfalls den aktuellen Stil und Schriftsatz \sum@saved. Auf die Umgebung \mathopfolgt \slimits@wie zuvor „“.

Antwort3

Ich weiß, das ist ein alter Beitrag, aber ich habe ihn heute gelesen. Ich verwende Folgendes:

\newcommand{\sumt}[2][]{
    \ifthenelse{\isempty{#1}}
    {\textstyle \sum_{#2}      \displaystyle}
    {\textstyle \sum_{#2}^{#1} \displaystyle}
}

Beachten Sie, dass es erforderlich ist \usepackage{xifthen}.

Ich rufe dann beispielsweise auf, \sumt[n-1]{i=1} k_ium dasselbe zu erhalten, was ich von erhalten hätte \sum_{i=1}^{n-1} k_i. Beachten Sie, dass dies erzwingt, dass alles danach im Anzeigemodus ist, was möglicherweise nicht hilfreich ist. Einmal mache ich etwas Ähnliches mit \intund \prod. Beachten Sie, dass dies im Vergleich zum Üblichen rückwärts geschrieben ist.

Idealerweise hätte ich beide Argumente optional und in der Reihenfolge \sum[lower][upper]. (Ich bin nicht sicher, welche Wirkung das Leerzeichen ^{}hat.) Dafür müsste allerdings jemand mit größeren Tex-Kenntnissen als ich herbeigerufen werden!


Zum Beispiel der minimalistische Code

\begin{align*}
    a &+ \sumt[n-1]{i=1} i = 3\\
    a &+ \textstyle\sum_{i=1}^{n-1} i = 3
\end{align*}

erzeugt das folgende Bild.

Bildbeschreibung hier eingeben

verwandte Informationen