표시된 환경에서 사용하더라도 \sum
인라인 스타일( )을 사용하여 동일한 기호로 확장되는 매크로를 정의하고 싶습니다 .\textstyle
내가 얻은 것은 다음과 같습니다.
\newcommand{\Alt}{\@ifstar{\sum}{{\textstyle\sum}}}
별표 표시된 버전을 사용하면 예외적인 상황에서 디스플레이 스타일을 선택적으로 활성화할 수 있습니다. 그러나 이는 강력한 요구 사항은 아닙니다.
이것을 매크로로 포장하지 않았다면 다음과 같이 했을 것입니다.
bla {\textstyle \sum_a^b bla} bla
. \sum
의 범위를 제한하기 위해 매크로 정의에서 그룹을 래핑하는 것이 약간 불편합니다.\textstyle
내 질문은: 주변의 추가 그룹으로 인해 간격이 깨질 수 있는 상황이 있습니까 \sum
?
답변1
의견 토론을 바탕으로 나는 다음의 답변과 비슷한 것을 제안했습니다.대형 사업자는 어떻게 정의되나요?, 형태 \DeclareMathOperator*{\barr}{\textstyle\sum}
. 그러나 이 접근 방식은 여전히 합계 위와 아래에 표시 스타일 제한을 둡니다(예: 1). 그럼에도 불구하고 우리는 텍스트 스타일(예: 2)에서 제공되는 간격이 \barr
OP가 추구하는 적절한 간격이라는 것을 알고 있습니다.
예에서 해당 간격과 아래 첨자/위 첨자 배치를 다시 만들 수 있었습니다. 3-5, 다양한 접근 방식을 사용합니다. 전. 3은 \mathord
a 대신 a 를 사용하여 디스플레이 스타일의 결과를 속입니다 \mathop
. 그러나 물론 적절한 간격(예: 2)과 일치하도록 사전 및 사후 간격을 조정해야 합니다.
전. 4와 5는 OP가 제안한 접근 방식의 변형입니다. 예에서. 4, 교정기 안에 사전 및 사후 자료를 추가합니다. 그러나 재료의 특성에 따라 이 방법을 사용하지 못할 수도 있습니다.
전. 5는 얇은 공백이 추가되었다는 점을 제외하면 OP의 접근 방식입니다. 중괄호는 \mathop
중괄호 외부로 범위를 확장하기 위해 합계의 edness 기능을 제거하기 때문입니다 .
실제로 이것은 "주변의 추가 그룹에 의해 간격이 깨질 수 있는 상황이 있습니까 \sum
?"라는 OP의 질문에 대한 대답입니다. 5, OP 접근 방식의 간격이 정확하지 않습니다.
\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
합니다 . 이렇게 하면 기호가 "점을 인식"하고 or 옵션을 존중하게 됩니다.\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
동일합니다 . 그런 다음 토글이 false로 설정된 경우 do를 재정의합니다 . 여기서는 원본과 동일합니다 . 토글이 true로 설정되면 대신 실행됩니다. 내에서 스타일을 확인합니다. 이면 을 사용하고 , 그렇지 않으면 현재 스타일과 조판을 사용합니다 . 주변은 이전과 마찬가지로 이어집니다 .\sum
amsmath
\sum@
\sum@saved
\sum@saved
\sum@
\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
. 이는 이후의 모든 항목이 디스플레이 모드에 있도록 강제하므로 도움이 되지 않을 수도 있습니다. 일단 \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*}
다음 이미지를 생성합니다.