Математический оператор всегда в текстовом стиле

Математический оператор всегда в текстовом стиле

Я хотел бы определить макрос, который расширяется до того же символа, что и , \sumно с использованием встроенного стиля ( \textstyle) даже при использовании в отображаемой среде.

Вот что я получил:

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

версия со звездочкой позволяет мне выборочно включать displaystyle в исключительных ситуациях. Однако это не является жестким требованием.

Если бы я не заключал это в макрос, я бы сделал это так:

bla {\textstyle \sum_a^b bla} bla

Мне немного не по себе от включения \sumгруппы в определение макроса, только чтобы ограничить область действия \textstyle.

У меня такой вопрос: существуют ли ситуации, когда интервал может быть нарушен дополнительной группой вокруг \sum?

решение1

На основе обсуждения комментариев я предложил что-то похожее на ответ наКак определяются крупные операторы?, в форме \DeclareMathOperator*{\barr}{\textstyle\sum}. Однако этот подход все еще устанавливает пределы displaystyle выше и ниже суммирования (пример 1). Тем не менее, мы знаем, что интервал, предоставленный в \barrtextstyle (пример 2), является правильным интервалом, который ищет OP.

Мне удалось воссоздать этот интервал и размещение подстрочных/надстрочных индексов в примерах 3-5, используя разные подходы. Пример 3 обманывает результат в displaystyle, используя a \mathordвместо a \mathop, но, конечно, интервалы до и после нужно скорректировать, чтобы они соответствовали правильному интервалу (пример 2).

Примеры 4 и 5 являются вариациями подхода, предложенного автором. В примере 4 я добавляю пред- и пост-материал внутри его скобок. Однако, в зависимости от характера материала, этот подход может быть недоступен для использования.

Пример 5 представляет собой подход OP, за исключением того, что были добавлены тонкие пробелы, поскольку фигурные скобки исключают возможность \mathopрасширения суммы за пределы фигурных скобок.

Фактически, это ответ на вопрос автора: «Есть ли ситуации, когда интервал может быть нарушен дополнительной группой вокруг \sum?», потому что без тонких пробелов в примере 5 интервал в подходе автора будет неправильным.

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

введите описание изображения здесь

решение2

Возможно, вы захотите подойти к этому вопросу абстрактно; мы можем воспользоваться тем фактом, что amsmathвсе имена операторов принимают ограничения единообразно, добавив @в конце имени символ , означающий .

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

Первая строка призвана показать, что обычное поведение соблюдается.

введите описание изображения здесь

Пакет amsmathпереопределяет \sumс

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

и делает то же самое для \coprod, \bigvee, \bigwedge, \biguplus, \bigcap, \bigcup, \prod, \bigotimes, \bigoplus, \bigodotи \bigsqcup. Это делает символы «точками осведомленными» и уважающими опцию sumlimitsили nosumlimitsиз-за

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

Исходя из этого, я переопределяю \sumбыть

\togglefalse{reducedop}\sumsaved

если \sum*найдено и

\toggletrue{reducedop}\sumsaved

в противном случае. Здесь \sumsavedто же самое, что \sumи определено в amsmath. Затем я переопределяю, \sum@чтобы сделать \sum@saved, если переключатель установлен в false, где \sum@savedто же самое, что и исходный \sum@. Если переключатель установлен в true, вместо этого \mathop{\mathpalette\reduced@operator@i{sum}}выполняется. Внутри \mathpaletteя проверяю стиль: если это \displaystyle, я использую \textstyle, в противном случае текущий стиль и набирается \sum@saved. Окружение \mathopследует за тем, \slimits@как и раньше.

решение3

Я знаю, что это старый пост, но я читал его сегодня. Я использую это:

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

Обратите внимание, что для этого требуется \usepackage{xifthen}.

Затем я, например, вызываю , \sumt[n-1]{i=1} k_iчтобы получить то же самое, что я бы получил от \sum_{i=1}^{n-1} k_i. Обратите внимание, что это заставляет все после находиться в режиме отображения, что может быть бесполезным, а может и нет. Однажды an сделать что-то подобное с \intи \prod. Обратите внимание, что это написано в обратном порядке по сравнению с обычным.

В идеале я бы хотел, чтобы оба аргумента были необязательными и располагались в порядке \sum[lower][upper]. (Я не уверен, какой эффект имеет пробел ^{}.) Однако для этого нужно было бы призвать кого-то с большим тексом, чем я!


Например, минималистичный код

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

получается следующее изображение.

введите описание изображения здесь

Связанный контент