Operador matemático sempre em estilo de texto

Operador matemático sempre em estilo de texto

Gostaria de definir uma macro que se expanda para o mesmo símbolo, \summas usando o estilo embutido ( \textstyle), mesmo quando usado em um ambiente exibido.

Aqui está o que eu consegui:

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

a versão com estrela me permite ativar seletivamente o estilo de exibição em situações excepcionais. No entanto, este não é um requisito forte.

Se eu não estivesse envolvendo isso em uma macro, teria feito isso fazendo

bla {\textstyle \sum_a^b bla} bla

Estou um pouco desconfortável em agrupar \sumum grupo na definição de macro, apenas para limitar o escopo de \textstyle.

Minha pergunta é: existem situações em que o espaçamento pode ser quebrado pelo grupo extra ao redor \sum?

Responder1

Com base na discussão dos comentários, sugeri algo semelhante à resposta emComo são definidas as grandes operadoras?, na forma de \DeclareMathOperator*{\barr}{\textstyle\sum}. No entanto, essa abordagem ainda coloca limites de estilo de exibição acima e abaixo da soma (ex. 1). Porém, sabemos que o espaçamento fornecido \barrno estilo de texto (ex. 2) é o espaçamento adequado que o OP busca.

Consegui recriar esse espaçamento e posicionamento sub/sobrescrito no ex. 3-5, usando diferentes abordagens. Ex. 3 engana o resultado no displaystyle usando a \mathordem vez de a \mathop, mas é claro, o espaçamento pré e pós precisa de ajuste para corresponder ao espaçamento adequado (ex. 2).

Ex. 4 e 5 são variações da abordagem proposta pelo OP. No ex. 4, adiciono material pré e pós dentro do aparelho. Contudo, dependendo da natureza do material, esta abordagem pode não estar disponível para uso.

Ex. 5 é a abordagem do OP, exceto que espaços finos foram adicionados, uma vez que os colchetes removem a capacidade da soma \mathopde estender seu alcance fora dos colchetes.

Na verdade, esta resposta é a pergunta do OP de "existem situações em que o espaçamento pode ser quebrado pelo grupo extra ao redor \sum?", Porque sem os espaços finos no ex. 5, o espaçamento da abordagem do OP não será correto.

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

insira a descrição da imagem aqui

Responder2

Você pode querer uma abordagem abstrata para isso; podemos explorar o fato de que amsmathaltera todos os nomes de operadores tomando limites de maneira uniforme, adicionando @no final do nome o símbolo.

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

A primeira linha pretende mostrar que o comportamento habitual é respeitado.

insira a descrição da imagem aqui

O amsmathpacote redefine \sumcom

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

e faz o mesmo para \coprod, \bigvee, \bigwedge, \biguplus, \bigcap, \bigcup, \prod, \bigotimes, \bigoplus, \bigodote \bigsqcup. Isso torna os símbolos “pontuais conscientes” e respeitando a opção sumlimitsou nosumlimitspor causa de

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

Com base nisso, eu redefino \sumser

\togglefalse{reducedop}\sumsaved

se \sum*for encontrado e

\toggletrue{reducedop}\sumsaved

de outra forma. Aqui \sumsavedé o mesmo \sumdefinido em amsmath. Então eu redefino \sum@para fazer \sum@savedse a alternância estiver definida como falsa, onde \sum@savedé igual ao original \sum@. Se a alternância estiver definida como verdadeira, \mathop{\mathpalette\reduced@operator@i{sum}}será executado. Dentro \mathpaletteeu verifico o estilo: se for \displaystyle, eu uso \textstyle, caso contrário o estilo atual e digitado \sum@saved. O entorno \mathopé seguido \slimits@como antes.

Responder3

Sei que o post é antigo, mas estava lendo hoje. O que eu uso é isso:

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

Observe que isso requer \usepackage{xifthen}.

Eu então, por exemplo, ligo \sumt[n-1]{i=1} k_ipara obter o mesmo que teria obtido de \sum_{i=1}^{n-1} k_i. Observe que isso impõe que tudo o que vem depois esteja no modo de exibição, o que pode ou não ser inútil. Depois de fazer algo semelhante com \inte \prod. Observe que isso está escrito de trás para frente em comparação com o normal.

Idealmente, eu teria os dois argumentos opcionais e na ordem \sum[lower][upper]. (Não tenho certeza do efeito que o espaço em branco ^{}tem.) Alguém com maior habilidade no texto do que eu precisaria ser chamado para isso!


Por exemplo, o código minimalista

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

produz a seguinte imagem.

insira a descrição da imagem aqui

informação relacionada