합, 적분과 큰 연산자

총합 Σ, 적분 ∫, 집합의 합 ⋃은 수식 안에서 크게 조판되고 위아래나 옆에 범위(리미트)를 가지는 특수한 기호입니다. LaTeX에서는 이들을 가변 크기 연산자(대형 연산자)라고 부르며 \sum, \int, \bigcup 같은 명령으로 냅니다. 공통된 원리는 아래첨자 _와 위첨자 ^가 곧 연산자의 리미트가 되어, 표시 수식에서는 기호의 위아래에 쌓이고, 본문 안에서는 오른쪽 옆에 붙는 것입니다. 이 페이지에서는 리미트가 붙는 방식과 위치 제어(\limits, \nolimits), 여러 줄 첨자, 사용자 정의 연산자까지 정리합니다.

가변 크기 연산자란

수식 기호에는 글자 높이에 들어가는 고정 크기 기호(+, =, \cup 등)와, 조판되는 문맥에 따라 크기가 달라지는 가변 크기 연산자가 있습니다. 대표적인 예가 총합 \sum, 총곱 \prod, 적분 \int, 집합의 합 \bigcup입니다. 이들은 표시 스타일에서는 크게, 텍스트 스타일에서는 작게 조판되며, 아래첨자와 위첨자를 리미트로 특별히 처리합니다.

“리미트”란 합이나 적분의 범위를 나타내는 첨자입니다. \sum_{i=1}^{n}이라고 쓰면 i=1이 하한, n이 상한이 됩니다. 이는 x_ix^2처럼 문자 오른쪽 아래/위에 붙는 일반 아래첨자와 위첨자와는 다르게 처리됩니다. 가변 크기 연산자에 붙은 첨자는 기호의 바로 아래와 바로 위에 놓일 수 있습니다. 어느 쪽이 되는지는 조판 스타일과 기호 종류에 따라 결정되며, 이것이 다음 절의 주제입니다.

기본 구성원은 표준 LaTeX(실제로는 그 아래의 TeX)에 내장되어 있어 추가 패키지 없이 사용할 수 있습니다. 다중 적분 \iint, \iiint, 뒤에서 다룰 여러 줄 첨자 \substack, 연산자 정의 \DeclareMathOperator 등은 amsmath 패키지가 필요합니다. amsmath는 사실상의 표준이므로 본격적으로 수식을 조판한다면 프리앰블에 \usepackage{amsmath}를 써 두는 것이 좋습니다.

총합, 총곱과 리미트가 붙는 방식

총합은 \sum, 총곱은 \prod, 쌍대곱은 \coprod입니다. 범위는 아래첨자 _와 위첨자 ^로 줍니다. 예를 들어 \sum_{k=0}^{n} a_k에서 표시 수식은 총합 기호 Σ를 크게 조판하고, k=0바로 아래, n바로 위에 둡니다. 같은 식을 본문 안에 쓰면 줄 높이를 흐트러뜨리지 않도록 Σ가 작아지고, k=0n은 기호의 오른쪽 옆에 작게 위아래로 붙습니다.

latex
別行立て:
\[
  \sum_{k=0}^{n} a_k = a_0 + a_1 + \dots + a_n,
  \qquad \prod_{k=1}^{n} k = n!
\]

本文中: 級数 $\sum_{k=0}^{n} a_k$ は行内に収まる。

이 위아래/옆 전환은 스타일에 연동된 기본 동작입니다. 총합, 총곱, 쌍대곱 같은 “sum-class” 기호는 표시 스타일에서는 리미트를 위아래에 쌓고, 텍스트 스타일에서는 옆에 붙입니다. amsmath 용어로 이 방식을 displaylimits(표시될 때만 위아래)라고 합니다. 주변 본문 줄간격이 불필요하게 넓어지는 것을 피하는 합리적인 기본값입니다.

범위가 하나뿐이면 한쪽 첨자만 씁니다. \sum_{i \in S}처럼 하한에 조건을 쓸 수도 있으며, 표시 수식에서는 i ∈ S가 Σ 바로 아래에 놓입니다. 첨자가 여러 토큰에 걸치면 반드시 { }로 묶어야 합니다(\sum_{k=1}k=1처럼). 이를 잊고 \sum_k=1이라고 쓰면 k만 아래첨자가 되고 =1은 기호 오른쪽으로 흘러나갑니다.

적분 — 옆에 붙는 리미트

적분 기호는 \int이며, 그 범위(적분 구간)도 아래첨자와 위첨자로 줍니다. \int_a^b f(x)\,dx라고 쓰면 하한 a, 상한 b의 정적분이 됩니다. 여기서 중요한 점은 적분은 총합과 기본 동작이 다르다는 것입니다. \int 같은 “integral-class” 기호는 표시 수식에서도 리미트를 기호 오른쪽 옆에 붙입니다. 이는 수학 조판 관습이며, \int 정의 안에 내부적으로 \nolimits(옆 붙임)가 들어 있기 때문입니다.

latex
\[
  \int_{0}^{\infty} e^{-x}\,dx = 1,
  \qquad \oint_{C} \mathbf{F}\cdot d\mathbf{r}
\]

이 예는 표시 수식에서도 0을 ∫의 오른쪽 아래, 오른쪽 위에 붙입니다(총합이라면 위아래에 쌓일 자리입니다). 피적분함수와 dx 사이의 \,(얇은 공백)은 수학 조판에서 관례적으로 넣는 작은 간격입니다. 폐곡선을 따라 적분하는 선적분은 \oint이며, ∫에 작은 원을 겹친 기호가 됩니다.

다중 적분은 기호를 나란히 \int\int처럼 써도 되지만, 기호 사이 간격이 어색해지기 쉽습니다. amsmath를 불러오면 간격을 최적으로 좁힌 전용 명령을 사용할 수 있습니다. 이중 적분 \iint, 삼중 적분 \iiint, 사중 적분 \iiiint, 그리고 두 적분 기호 사이에 점을 두는 점선 다중 적분 \idotsint(∫⋯∫처럼)입니다. 모두 본문과 표시 수식 양쪽에서 간격이 조정됩니다.

latex
\[
  \iint_{D} f(x,y)\,dx\,dy,
  \qquad \iiint_{V} f\,dV,
  \qquad \idotsint_{A} f\,dV
\]

물리에서 자주 쓰는 선, 면, 부피에 대한 닫힌 적분 기호(환적분의 이중, 삼중판 등)가 필요하다면 esint 패키지가 \oiint, \oiiint 등을 제공합니다. 표준으로는 \oint만 사용할 수 있습니다.

리미트 위치 바꾸기(\limits / \nolimits)

기본 붙는 방식은 두 명령으로 덮어쓸 수 있습니다. 연산자 바로 뒤\limits를 두면 리미트를 강제로 위아래에 붙이고, \nolimits를 두면 강제로 옆에 붙입니다. 예를 들어 본문 안의 총합 범위를 위아래로 내고 싶으면 \sum\limits_{k=1}^{n}라고 쓰고, 반대로 표시 수식의 적분에서도 리미트를 위아래에 쌓고 싶으면 \int\limits_0^1이라고 씁니다.

latex
本文中で上下に: $\sum\limits_{k=1}^{n} k$

別行立ての積分を上下に:
\[
  \int\limits_{0}^{1} x^2\,dx = \frac{1}{3}
\]

여기서 핵심은 놓는 위치입니다. \limits\nolimits는 적용할 연산자의 바로 뒤(첨자를 쓰기 전)에 와야 합니다. \sum_{k=1}\limits처럼 첨자 뒤에 두면 오류가 납니다. \limits, \nolimits, \displaylimits가 여러 개 연속으로 나타나면 마지막 것이 우선합니다.

표시 수식인지 본문 중인지에 연동되는 기본 동작(sum-class의 displaylimits)으로 되돌리고 싶을 때는 \displaylimits를 씁니다. 다음 표는 기호 종류별 기본값과 덮어쓰기 명령의 효과를 정리합니다.

대상 / 명령표시 스타일인라인 스타일
\sum, \prod, \bigcup …위아래에 쌓임오른쪽 옆에 붙음
\int, \oint, \iint …오른쪽 옆에 붙음오른쪽 옆에 붙음
\limits(作用素の直後)위아래에 쌓임(강제)위아래에 쌓임(강제)
\nolimits(作用素の直後)옆에 붙음(강제)옆에 붙음(강제)
\displaylimits위아래에 쌓임오른쪽 옆에 붙음

극한과 상하극한(\lim 계열)

\lim(극한), \limsup(상극한), \liminf(하극한)은 함수명처럼 직립체(로만체)로 조판되는 연산자이지만, 첨자의 처리는 가변 크기 연산자와 같은 sum-class 방식입니다. 즉 표시 수식에서는 아래첨자가 바로 아래에, 본문 안에서는 오른쪽 아래에 붙습니다. \limsup\liminf는 각각 “lim sup”, “lim inf” 두 단어로, 단어 사이에도 적절한 간격이 들어갑니다.

latex
\[
  \lim_{n \to \infty} \frac{1}{n} = 0,
  \qquad \limsup_{n \to \infty} a_n \ge \liminf_{n \to \infty} a_n
\]

이 예는 표시 수식이므로 n→∞lim 바로 아래에 조판됩니다. 같은 식을 본문 안에 쓰면 n→∞lim의 오른쪽 아래에 작게 붙습니다. \sup, \inf, \max, \min도 같은 계열이며 아래첨자를 아래에 둡니다(이들은 “수식 모드 기본”의 함수명 절에도 모아져 있습니다). \to, 무한대는 \infty입니다.

큰 기호(n항 연산자)

집합, 논리, 대수에서 쓰는 n항 연산자에도 \sum과 같은 가변 크기의 “큰” 버전이 있습니다. 명령은 대응하는 이항 연산자 이름 앞에 big을 붙인 형태입니다. 예를 들어 이항 합집합 \cup(A ∪ B)에 대한 가변 크기 버전이 \bigcup입니다. 이들은 모두 sum-class라서 표시 수식에서는 리미트를 위아래에 쌓고, 본문 안에서는 옆에 붙입니다.

명령의미대응하는 이항 연산자
\bigcup합집합(n항)\cup(∪)
\bigcap교집합(n항)\cap(∩)
\bigsqcup서로소 합(각진 합)\sqcup(⊔)
\biguplus다중집합의 합\uplus(⊎)
\bigvee논리합 / 상한(n항)\vee(∨)
\bigwedge논리곱 / 하한(n항)\wedge(∧)
\bigoplus직합(동그라미 속 +)\oplus(⊕)
\bigotimes텐서곱(동그라미 속 ×)\otimes(⊗)
\bigodot동그라미 속 점(n항)\odot(⊙)
latex
\[
  \bigcup_{i=1}^{n} A_i, \qquad
  \bigcap_{i \in I} A_i, \qquad
  V = \bigoplus_{k} V_k
\]

이 예는 표시 수식이므로 \bigcup_{i=1}^{n}에서 i=1은 큰 ⋃ 바로 아래에, n은 바로 위에 쌓입니다. \bigoplus_{k}에서는 커진 ⊕ 아래에 k가 놓여 직합 V = V₁ ⊕ V₂ ⊕ … 을 하나의 기호로 나타낼 수 있습니다. 본문 안에 쓰면 모든 리미트가 기호 오른쪽 옆에 작게 붙습니다.

여러 줄 첨자(\substacksubarray)

총합이나 대형 연산자 아래에 조건을 여러 줄로 쓰고 싶을 때가 있습니다(예: “0 ≤ i ≤ m 그리고 0 < j < n”). amsmath의 \substack{…}을 쓰면 \\로 구분한 각 줄이 가운데 정렬로 쌓인 첨자가 됩니다. \substack{…} 전체를 아래첨자 위치에 둔다는 점에 주의하세요.

latex
\[
  \sum_{\substack{0 \le i \le m \\ 0 < j < n}} P(i,j)
\]

표시 수식에서는 “0 ≤ i ≤ m”과 “0 < j < n”이 두 줄로 총합 기호 Σ 바로 아래에 쌓입니다. 각 줄은 가운데 정렬됩니다. \substack 안의 \\는 줄 구분이며, 마지막 줄 뒤에는 붙이지 않습니다.

각 줄을 왼쪽 정렬하고 싶을 때는 더 일반적인 subarray 환경을 씁니다. \begin{subarray}{l} … \end{subarray}{l}이 왼쪽 정렬을 지정합니다({c}이면 가운데 정렬). 내용은 \substack와 마찬가지로 \\로 줄을 바꿉니다. 조건식의 시작을 맞추고 싶을 때 읽기 좋아집니다.

latex
\[
  \sum_{\begin{subarray}{l} i \in \Lambda \\ 0 < j < n \end{subarray}} P(i,j)
\]

사용자 정의 연산자(\DeclareMathOperator*)

목록에 없는 연산자 이름을 직립체로 조판하고, 아래첨자를 바로 아래에 두고 싶을 때, 예를 들어 argmax, argmin, esssup 같은 경우에는 amsmath의 \DeclareMathOperator를 씁니다. 프리앰블에서 한 번 선언하면 본문에서 짧은 명령으로 호출할 수 있습니다. 리미트를 바로 아래에 두는(\lim과 같은 sum-class 동작) 핵심은 별표가 붙은 \DeclareMathOperator*를 쓰는 것입니다. 별표가 없으면 아래첨자는 함수명 오른쪽 아래에 붙습니다.

latex
% プリアンブルで:
\usepackage{amsmath}
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator{\rank}{rank}

% 本文で:
\[
  \hat{\theta} = \argmax_{\theta} L(\theta),
  \qquad \rank A \le n
\]

이 예에서 \argmax는 별표가 붙어 정의되었으므로 표시 수식에서는 θarg max 바로 아래에 놓입니다(본문 안에서는 오른쪽 아래). 이름 텍스트 안의 \,는 단어 사이의 얇은 공백으로, “arg max” 두 단어를 적절히 떨어뜨립니다. 반면 \rank는 별표가 없으므로 \rank Arank A로 직립체와 적절한 간격으로 조판되고, 첨자를 붙이면 오른쪽 아래에 붙습니다. 한 번만 쓸 경우 선언하지 않고 \operatorname{rank}라고 직접 쓸 수도 있습니다(리미트를 아래에 두려면 \operatorname*{…}).

이름 텍스트 안에는 특별한 약속이 있습니다. 하이픈 -은 본문과 같은 일반 하이픈(마이너스 기호가 아님)으로, 별표 *는 위로 올라간 텍스트 별표(가운데 이항 연산자 별이 아님)로 조판됩니다. 함수명은 \text{…}가 아니라 \DeclareMathOperator\mathrm로 조판하는 것이 올바르며, 이렇게 하면 앞뒤 간격이 자동으로 조정되고 정리 환경처럼 이탤릭 문맥에 놓여도 직립체가 유지됩니다.

관련된 작은 기법으로, sum-class 기호의 네 모서리에 첨자를 붙이고 싶을 때(총합 기호에 “prime(′)”을 붙이는 경우 등)는 amsmath의 \sideset이 있습니다. \sideset{}{'}\sum_{n} a_n처럼 쓰면 Σ의 오른쪽 위에 prime을 붙이면서 아래에는 리미트를 둘 수 있습니다. \sideset은 sum-class 기호 전용이며, 첫 번째 인수는 왼쪽, 두 번째 인수는 오른쪽 네 모서리를 지정합니다. 각 인수 안에서는 _{lo}^{hi} 형태로 아래쪽과 위쪽 모서리를 따로 쓸 수 있어, \sideset{_a^b}{_c^d}\sum이면 네 모서리 모두에 서로 다른 첨자를 둘 수 있습니다(일반 _, ^ 리미트는 그대로 사용할 수 있습니다).