Me gustaría definir una macro que se expanda al mismo símbolo \sum
pero usando el estilo en línea ( \textstyle
) incluso cuando se usa en un entorno mostrado.
Esto es lo que obtuve:
\newcommand{\Alt}{\@ifstar{\sum}{{\textstyle\sum}}}
la versión destacada me permite habilitar selectivamente el estilo de visualización en situaciones excepcionales. Sin embargo, este no es un requisito estricto.
Si no estuviera envolviendo esto en una macro, lo habría logrado haciendo
bla {\textstyle \sum_a^b bla} bla
Me siento un poco incómodo al incluir \sum
un grupo en la definición de macro, solo para limitar el alcance de \textstyle
.
Mi pregunta es: ¿hay situaciones en las que el grupo adicional alrededor puede romper el espaciado \sum
?
Respuesta1
Basado en la discusión de comentarios, sugerí algo similar a la respuesta en¿Cómo se definen los grandes operadores?, en forma de \DeclareMathOperator*{\barr}{\textstyle\sum}
. Sin embargo, ese enfoque todavía coloca límites de estilo de visualización por encima y por debajo de la suma (ej. 1). No obstante, sabemos que el espacio proporcionado por \barr
en estilo de texto (ej. 2) es el espacio adecuado que busca el OP.
Pude recrear ese espaciado y ubicación de subíndice/superíndice en ej. 3-5, utilizando diferentes enfoques. Ex. 3 engaña el resultado en el estilo de visualización usando a \mathord
en lugar de a \mathop
, pero, por supuesto, el espaciado previo y posterior deben ajustarse para que coincida con el espaciado adecuado (por ejemplo, 2).
Ex. 4 y 5 son variaciones del enfoque propuesto por el OP. En ej. 4, agrego material previo y posterior dentro de sus frenillos. Sin embargo, dependiendo de la naturaleza del material, es posible que este enfoque no esté disponible para su uso.
Ex. 5 es el enfoque del OP, excepto que se han agregado espacios delgados, ya que las llaves eliminan la capacidad de la suma \mathop
de extender su alcance fuera de las llaves.
De hecho, esta respuesta es la pregunta del OP de "¿hay situaciones en las que el grupo adicional alrededor puede romper el espaciado \sum
?", Porque sin los espacios delgados en el ej. 5, el espaciamiento del enfoque del OP no será correcto.
\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}
Respuesta2
Es posible que desee tener un enfoque abstracto para esto; Podemos aprovechar el hecho de que amsmath
cambia todos los nombres de operadores tomando límites de manera uniforme, agregando @
al final del nombre el significado del 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}
La primera línea pretende mostrar que se respeta el comportamiento habitual.
El amsmath
paquete se redefine \sum
con
\let\sum@\sum
\def\sum{\DOTSB\sum@\slimits@}
y hace lo mismo para \coprod
, \bigvee
, \bigwedge
, \biguplus
, \bigcap
, \bigcup
, \prod
, \bigotimes
, \bigoplus
y \bigodot
. \bigsqcup
Esto hace que los símbolos sean “conscientes de los puntos” y respeten la opción sumlimits
o nosumlimits
debido a
\DeclareOption{sumlimits}{\let\slimits@\displaylimits}
\DeclareOption{nosumlimits}{\let\slimits@\nolimits}
En base a esto, redefino \sum
ser
\togglefalse{reducedop}\sumsaved
si \sum*
se encuentra y
\toggletrue{reducedop}\sumsaved
de lo contrario. Aquí \sumsaved
es lo mismo que \sum
se define en amsmath
. Luego lo redefino \sum@
para hacerlo \sum@saved
si el interruptor está configurado en falso, donde \sum@saved
es el mismo que el original \sum@
. Si el cambio se establece en verdadero, \mathop{\mathpalette\reduced@operator@i{sum}}
se ejecuta. Dentro \mathpalette
verifico el estilo: si es así \displaystyle
, lo uso \textstyle
; de lo contrario, el estilo actual y la composición tipográfica \sum@saved
. El entorno \mathop
sigue \slimits@
como antes.
Respuesta3
Sé que esta es una publicación antigua, pero la estaba leyendo hoy. Lo que uso es esto:
\newcommand{\sumt}[2][]{
\ifthenelse{\isempty{#1}}
{\textstyle \sum_{#2} \displaystyle}
{\textstyle \sum_{#2}^{#1} \displaystyle}
}
Tenga en cuenta que requiere \usepackage{xifthen}
.
Luego, por ejemplo, llamo \sumt[n-1]{i=1} k_i
para obtener lo mismo que habría recibido de \sum_{i=1}^{n-1} k_i
. Tenga en cuenta que esto obliga a que todo lo que sigue esté en modo de visualización, lo que puede resultar inútil o no. Una vez que haga algo similar con \int
y \prod
. Tenga en cuenta que esto está escrito al revés en comparación con lo habitual.
Lo ideal sería que ambos argumentos fueran opcionales y en el orden \sum[lower][upper]
. (No estoy seguro de qué efecto ^{}
tiene el espacio en blanco). ¡Sin embargo, alguien con mayor destreza en tex que yo necesitaría ser llamado para eso!
Por ejemplo, el código minimalista.
\begin{align*}
a &+ \sumt[n-1]{i=1} i = 3\\
a &+ \textstyle\sum_{i=1}^{n-1} i = 3
\end{align*}
produce la siguiente imagen.