본격적인 수학을 조판한다면 가장 먼저 불러와야 할 패키지는 amsmath입니다. 미국수학회(AMS)가 만든 이 패키지는 수식 조판의 사실상 표준으로, 정렬된 별행 수식부터 세밀한 간격 제어까지 LaTeX 기본 수식 기능을 크게 보강합니다. 이 페이지는 정렬 환경 자체의 사용법(별도 페이지에서 다룹니다)이 아니라 왜 amsmath를 불러오는지, 그리고 여러 환경에서 공통으로 쓰이는 명령인 \text, \operatorname, \DeclareMathOperator, \intertext, \substack, \numberwithin을 정리합니다. 또한 blackboard bold, Fraktur, 수백 개의 추가 기호를 제공하는 짝꿍 amssymb / AMSFonts, 정리 환경을 위한 amsthm도 소개합니다.
amsmath란
amsmath는 American Mathematical Society (AMS)가 자체 학술지 조판을 위해 발전시킨 수식 패키지입니다. LaTeX의 기본 수식 기능은 최소한에 가깝기 때문에 여러 줄 수식 정렬, 식 번호의 세밀한 제어, 함수명 올바른 조판까지는 다루지 못합니다. amsmath는 이런 부족함을 한 번에 보완하며, 오늘날 수학과 물리 문서에서는 사실상 필수로 여겨집니다. 프리앰블에 한 줄만 쓰면 불러올 수 있습니다.
\usepackage{amsmath}amsmath는 하나의 패키지라기보다 여러 작은 패키지를 묶은 집합에 가깝습니다. 공식 User’s Guide가 분명히 말하듯 amsmath는 amstext(수식 안의 텍스트 명령 \text), amsopn(연산자를 정의하는 \DeclareMathOperator 등), amsbsy(\boldsymbol을 통한 수식 굵게)를 incorporates 합니다. 따라서 \usepackage{amsmath} 한 줄로 이 기능들도 함께 사용할 수 있습니다. amsmath는 LaTeX의 required 패키지로 분류되며, 2016년 이후에는 AMS가 아니라 LaTeX Project가 유지보수를 맡고 있습니다(현재 릴리스는 2.17z, 2025년 7월).
amsmath가 제공하는 기능 중 가장 눈에 띄는 것은 여러 줄 수식을 정렬해 조판하는 환경입니다. align, gather, multline, split, alignat, 그리고 경우 나누기 환경 cases 등이 여기에 해당합니다. 이들은 분량이 많아 별도 페이지 “Displayed, aligned & numbered equations”에서 다루므로, 여기서는 이름만 언급하고 어떤 환경 안에서도 쓸 수 있는 공통 명령에 초점을 둡니다.
amssymb와 AMSFonts
amsmath와 짝을 이루는 것은 기호와 글꼴을 제공하는 amssymb(AMSFonts의 일부)입니다. 둘의 역할은 다릅니다. amsmath는 조판 장치(정렬, 간격, 번호)를 더하고, amssymb는 쓸 수 있는 기호와 수식 알파벳을 늘립니다. amssymb는 프리앰블에서 다음처럼 불러옵니다.
\usepackage{amssymb}amssymb는 AMS 기호 글꼴 msam과 msbm에 들어 있는 모든 기호를 정의하여, 표준 LaTeX에는 없는 수백 개의 추가 기호를 사용할 수 있게 합니다. 예를 들어 \leqslant와 \geqslant(기울어진 부등호), \nleq와 \subsetneq(부정 및 진부분집합 관계), \therefore와 \because, \square와 \blacksquare, \varnothing(공집합의 다른 글리프) 등이 있습니다. amssymb는 내부에서 amsfonts를 불러오므로 amsfonts를 따로 지정할 필요가 없습니다.
amssymb(더 정확히는 AMSFonts)는 수식용 알파벳 두 가지도 추가합니다. \mathbb{...}로 쓰는 blackboard bold와 \mathfrak{...}로 쓰는 Fraktur (Gothic)입니다. \mathbb{R}, \mathbb{C}, \mathbb{Z}는 각각 실수, 복소수, 정수를 나타내는 속 빈 굵은 R, C, Z가 됩니다. 다만 blackboard bold는 대문자만 있으며 소문자나 숫자는 없습니다. 반대로 Fraktur는 대문자와 소문자가 모두 있어 \mathfrak{g}로 리 대수 g, \mathfrak{p}로 소 아이디얼 p를 쓸 수 있습니다.
\[
\mathbb{R} \subset \mathbb{C}, \qquad
\mathfrak{g} = \operatorname{Lie}(G)
\]이 예는 속 빈 굵은 글자로 실수 R이 복소수 C에 포함됨을 보이고, 이어서 리 군 G의 리 대수를 Fraktur g로 쓴 것입니다. \mathbb와 \mathfrak는 AMSFonts 기능이므로 기호는 필요 없고 글꼴만 필요하다면 \usepackage{amsfonts}로도 충분하지만, 보통은 기호도 함께 쓰므로 amssymb를 불러오는 편이 확실합니다.
수식 안의 텍스트 — \text
수식 모드에서는 모든 영문자가 변수로 읽히므로 area라고 입력하면 네 변수의 곱이 됩니다. 공식 안에 보통 단어를 직립체와 올바른 자간으로 넣고 싶다면 amsmath(정확히는 포함된 amstext)의 \text{...}를 사용합니다. 안에 쓴 문자열은 본문과 같은 글꼴과 간격으로 조판됩니다.
\text의 장점은 크기를 문맥에 맞춘다는 점입니다. 오래된 \mbox{...}도 수식 안에 직립 텍스트를 넣을 수 있지만, 아래첨자나 위첨자 안에서도 본문 크기 그대로 조판되어 주변의 작은 문자와 어울리지 않습니다. \text는 문맥에 맞게 줄어듭니다. 아래첨자 안에서는 첨자 크기로, 두 번째 단계의 첨자에서는 더 작게 됩니다. 이름도 용도(텍스트를 넣음)를 그대로 나타냅니다.
\[
f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
\qquad v_{\text{max}} = 3.
\]여기서 식 오른쪽의 \text{for all }은 직립체와 본문 크기로 조판되고(끝의 공백도 적용됨), 이어지는 v의 아래첨자 \text{max}는 직립체이지만 첨자 크기로 줄어든 상태로 조판됩니다. \mbox를 쓰면 후자가 주변에 비해 너무 크게 나옵니다. \text{...} 안에 다시 $...$를 쓰면 그 부분만 수식으로 돌아갑니다.
이름 있는 연산자 — \operatorname과 \DeclareMathOperator
\sin, \log, \lim 같은 함수명은 표준 LaTeX에 미리 정의되어 있어 직립체와 적절한 간격으로 조판됩니다. 하지만 그 목록에 없는 연산자, 예를 들어 rank, Hom, ess sup 등은 직접 정의해야 합니다. amsmath(포함된 amsopn)의 두 명령이 이를 담당합니다.
한 번만 직립 연산자를 조판할 때는 \operatorname{...}를 사용합니다. 예를 들어 \operatorname{rank} A라고 쓰면 rank가 직립체로 조판되고 뒤에 연산자로서 적절한 간격이 붙어, 이어지는 A와 너무 붙거나 너무 떨어지지 않습니다. 같은 연산자를 여러 번 쓴다면 프리앰블에서 \DeclareMathOperator{\rank}{rank}로 한 번 정의해 두고 본문에서는 \rank라고 쓰는 편이 깔끔합니다. \DeclareMathOperator는 프리앰블 전용 명령이며 본문에서는 사용할 수 없습니다.
두 명령 모두 첨자의 위치를 바꾸는 별표 형태가 있습니다. 별표 없는 \operatorname / \DeclareMathOperator는 아래첨자를 연산자의 오른쪽 아래에 둡니다(\log와 같은 방식). 별표가 붙은 \operatorname* / \DeclareMathOperator*는 display style에서 첨자를 연산자의 바로 아래에 둡니다. 이는 \lim, \sup, \max와 같은 “limits” 위치입니다. 아래에 지표가 붙는 argmax, argmin 등은 이 별표 형태로 정의합니다.
% プリアンブル / in the preamble
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}
% 本文 / in the body
\[
\rank A \le n, \qquad
\hat{x} = \argmax_{x \in S} f(x)
\]이 예에서는 프리앰블에서 두 연산자를 정의합니다. 본문의 \rank A는 rank를 직립체로 조판하고, \argmax는 별행 수식 안에 있으므로 x ∈ S를 arg max의 바로 아래에 둡니다(별표로 정의했기 때문). 정의 안의 \,는 arg와 max 사이의 얇은 공백으로, arg max가 두 단어처럼 보이도록 합니다.
정렬 안의 텍스트와 여러 줄 첨자
다음 두 명령은 정렬 환경이나 대형 연산자와 함께 쓸 때 유용합니다. 먼저 \intertext{...}는 align 같은 여러 줄 별행 수식의 중간에 한 줄의 텍스트를 넣으면서도 정렬을 유지하는 명령입니다. 단순히 환경을 닫고 텍스트를 쓴 뒤 다시 열면 앞뒤의 정렬 위치가 어긋납니다. \intertext를 쓰면 텍스트를 넣어도 위아래 줄의 & 열이 계속 맞습니다.
\begin{align}
A &= B + C \\
\intertext{ここで $C$ を展開すると / expanding $C$ gives}
A &= B + D + E
\end{align}이 예에서는 두 등식 사이에 “expanding C gives”라는 한 줄 설명이 들어가지만, A &=의 = 위치는 위아래에서 그대로 맞습니다. \intertext는 align 같은 정렬 환경 안에서만 의미가 있습니다(정렬 환경 자체의 자세한 내용은 별도 페이지 참고).
다른 하나인 \substack{...}는 합이나 곱 같은 대형 연산자 아래에 여러 줄 조건을 쌓아 놓는 명령입니다. 줄은 \\로 구분합니다. 예를 들어 합 기호 아래에 “0 ≤ i ≤ m”과 “0 < j < n”을 두 줄로 표시하고 싶을 때 사용합니다. 비슷한 역할을 하는 subarray 환경도 있으며, 이쪽은 l(왼쪽 정렬) 같은 정렬 지정을 받을 수 있습니다.
\[
\sum_{\substack{0 \le i \le m \\ 0 < j < n}} a_{ij}
\]여기서는 두 조건이 합 기호 아래에 두 줄로 쌓여, 그 범위에 걸친 a_{ij}의 합을 나타냅니다. \substack 안은 여전히 수식 모드이므로 \le 같은 관계 기호도 그대로 사용할 수 있습니다.
분수, 이항계수와 식 번호 제어
분수 명령 \frac 자체는 표준 LaTeX에 속하지만, amsmath는 스타일 고정 변형을 추가합니다. \dfrac{...}{...}는 문맥과 관계없이 항상 display style(큰 분수)로, \tfrac{...}{...}는 항상 text style(작은 분수)로 조판합니다. 본문 중 분수를 크게 보이고 싶을 때는 \dfrac, 별행 수식 안에서 일부만 작게 하고 싶을 때는 \tfrac가 편리합니다. 연분수에는 \cfrac{...}{...}가 있으며, 몇 단계로 중첩되어도 각 단계가 읽기 좋은 크기로 조판됩니다.
이항계수에는 \binom{n}{k}가 있으며, 둥근 괄호 안에 n과 k를 세로로 놓은 조합 기호를 조판합니다. 이것에도 스타일 고정 형태인 \dbinom(항상 display style)과 \tbinom(항상 text style)이 있습니다.
\[
\binom{n}{k} = \dfrac{n!}{k!\,(n-k)!}
\]이 예에서는 좌변에 이항계수(둥근 괄호 안에 n, k를 세로로 배치), 우변에 \dfrac로 크게 조판한 분수 n!/(k!(n−k)!)가 놓입니다. 분모의 \,는 팩토리얼 기호와 괄호 사이의 얇은 공백입니다.
식 번호에는 \numberwithin{equation}{section}가 편리합니다. 프리앰블에 이렇게 쓰면 식 번호가 절 번호와 연결되고, 절이 바뀔 때마다 식 번호가 재설정됩니다. 예를 들어 2절의 첫 번째 식은 “(2.1)”처럼 절 번호를 포함해 매겨집니다. 긴 문서에서 식 번호가 세 자리, 네 자리까지 커지는 것을 막는 표준 설정입니다.
amsmath는 이 밖에도 행렬 환경(pmatrix, bmatrix 등), 자동 크기 조정 구분 기호, 별행 수식 정렬 환경, \boldsymbol을 통한 수식 굵게 등 많은 기능을 제공합니다. 행렬은 “Matrices & arrays”, 정렬 환경은 “Displayed, aligned & numbered equations”, 합과 대형 연산자는 “Sums, integrals & big operators” 페이지에서 자세히 다룹니다.
프리앰블에 무엇을 쓸까
실제로 수학이 들어간 문서에서는 다음 세 줄을 함께 프리앰블에 두는 것이 표준입니다. amsmath(조판 장치), amssymb(기호와 blackboard bold, Fraktur), 그리고 정리와 증명 환경을 위한 amsthm입니다. 불러오는 순서는 대체로 자유롭지만, amsthm을 amsmath 뒤에 두어야 한다는 점만 주의하면 됩니다.
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\begin{document}
\[
\zeta(s) = \sum_{n=1}^{\infty} \frac{1}{n^{s}}, \qquad s \in \mathbb{C}
\]
\end{document}이 최소 예는 세 패키지를 불러온 뒤 리만 제타 함수의 정의를 별행 수식으로 조판합니다. 합 기호 아래에는 n=1, 위에는 ∞가 붙고, \mathbb{C}로 복소수체 C가 속 빈 굵은 글자로 나옵니다. amsthm이 제공하는 theorem, proof 등의 정리 환경은 별도의 주제이므로 “Theorems & proofs (amsthm)” 페이지에서 다룹니다.
| 패키지 | 역할 | 주요 제공 기능 |
|---|---|---|
amsmath | 수식 조판 장치 | 정렬 환경, \text, \operatorname, \dfrac, \binom 등 |
amssymb | 기호와 수식 알파벳 | 수백 개의 msam/msbm 기호, \mathbb, \mathfrak(amsfonts 내부 로드) |
amsfonts | 글꼴만 | \mathbb와 \mathfrak(추가 기호 없음) |
amsthm | 정리와 증명 환경 | \newtheorem, proof 환경, \theoremstyle |