LaTeX에서 대문자 알파를 쓰려고 \Alpha를 입력하면 ! Undefined control sequence.가 돌아옵니다. 그리스 문자를 처음 다룰 때 가장 흔한 사고입니다. 이유는 허탈할 만큼 단순합니다. 대문자 알파는 라틴 문자 A와 모양이 똑같아서, LaTeX은 그냥 A를 치면 된다고 보고 명령 자체를 만들어 두지 않았습니다. 수식 모드의 그리스 문자는 전부 이 하나의 방침 위에 서 있습니다. 라틴 알파벳에 없는 모양에만 이름을 준다는 것입니다. 이 페이지는 그 방침에서 출발해 소문자와 대문자의 전체 명령 목록, \epsilon과 \varepsilon 같은 변형 글자꼴, 굵은 글씨와 직립 그리스 문자를 얻는 방법, 그리고 본문에서 그리스 문자를 쓰는 방법까지 차례로 풀어 갑니다.
\Alpha가 없는 이유와 대신 입력할 것
대문자 그리스 문자 중 명령이 있는 것은 \Gamma, \Delta, \Theta, \Lambda, \Xi, \Pi, \Sigma, \Upsilon, \Phi, \Psi, \Omega 열한 자뿐입니다. 나머지 열세 자는 대응하는 라틴 대문자 A B E Z H I K M N O P T X를 그대로 입력합니다. LaTeX 커널의 fontmath.ltx를 열어 보아도 선언된 것은 정말 이 열한 줄뿐이고, \Alpha도 \Beta도 \Epsilon도 애초에 존재하지 않습니다. Α와 A, Β와 B, Ε와 E는 활자로서 같은 모양이므로 두 번째 이름을 줄 이유가 없었습니다.
설계로는 깔끔하지만 찾는 쪽에는 몹시 불친절합니다. \Alpha로 검색해도 아무것도 나오지 않는 것은 명령을 "못 찾아서"가 아니라 "처음부터 없어서"입니다. 오류도 ! Undefined control sequence.라고만 할 뿐, 대신 A를 치라고 알려 주지 않습니다. 규칙이 선명해지는 대목은 텍스트 모드와의 대비입니다. 본문용 textgreek 패키지에는 \textAlpha, \textBeta, \textEpsilon이 제대로 갖춰져 있습니다. 본문에서 조판하는 것은 수학 변수가 아니라 진짜 그리스 글자이므로 스물네 자 모두에 이름이 필요하기 때문입니다. 즉 수식 모드의 11이라는 수는 그리스어에 관한 사실이 아니라 라틴 문자가 이미 제공하지 않는 글자꼴의 개수입니다.
% the eleven uppercase Greek letters that do have commands
\[ \Gamma(n) = (n-1)!, \qquad \Delta x, \qquad \Omega \]
% the other thirteen: type the Latin capital directly
\[ A, B, E, Z, H, I, K, M, N, O, P, T, X \]
% \Alpha, \Beta, \Epsilon ... -> ! Undefined control sequence.소문자 그리스 문자 목록 — \alpha부터 \omega까지
소문자는 24자 가운데 오미크론을 뺀 23자에 명령이 있습니다. 오미크론만 빠진 이유는 대문자와 똑같습니다. ο는 라틴 소문자 o와 구별되지 않으므로 수식 모드에서 그냥 o를 칩니다. 대문자에서 열세 자, 소문자에서 한 자가 비어 있는 것은 별개의 예외가 아니라 하나의 규칙이 두 군데에서 드러난 것입니다. 명령 이름은 문자의 영어 철자 그대로여서 \alpha, \beta, \gamma처럼 외우기보다 떠올리는 쪽에 가깝습니다.
| 명령 | 글리프 | 이름 |
|---|---|---|
\alpha | α | 알파 |
\beta | β | 베타 |
\gamma | γ | 감마 |
\delta | δ | 델타 |
\epsilon | ϵ | 엡실론(둥근 자형) |
\zeta | ζ | 제타 |
\eta | η | 에타 |
\theta | θ | 세타 |
\iota | ι | 이오타 |
\kappa | κ | 카파 |
\lambda | λ | 람다 |
\mu | μ | 뮤 |
\nu | ν | 뉴(라틴 v와 혼동하기 쉬움) |
\xi | ξ | 크시 |
o | o | 오미크론 — 명령이 없으며 라틴 o를 입력 |
\pi | π | 파이 |
\rho | ρ | 로 |
\sigma | σ | 시그마 |
\tau | τ | 타우 |
\upsilon | υ | 웁실론 |
\phi | ϕ | 피(닫힌 자형) |
\chi | χ | 카이 |
\psi | ψ | 프사이 |
\omega | ω | 오메가 |
헷갈리기 쉬운 짝이 몇 있습니다. \xi(ξ)와 \zeta(ζ), \nu(ν)와 \upsilon(υ), 그리고 가장 위험한 \nu(ν)와 라틴 소문자 v입니다. ν를 쓰려다 v를 입력해도 문서는 그대로 컴파일됩니다. 오류는 나지 않고 인쇄된 지면만 틀립니다. 원고에서는 글자 모양이 아니라 명령 이름으로 확인하는 것이 안전합니다. 하나 더 기억해 둘 점은, fontmath.ltx가 소문자를 letters 폰트(Computer Modern에서는 cmmi, 수식 이탤릭)에서 가져온다는 것입니다. 그래서 변수와 똑같이 기울어져 나옵니다. 다음 절에서 보듯 대문자 열한 자는 전혀 다른 폰트에서 옵니다.
대문자 열한 개 명령과 그것만 직립으로 나오는 이유
수식 안에 \Gamma나 \Omega를 쓰면 소문자와 달리 직립(로만체)으로 나옵니다. 우연이 아닙니다. fontmath.ltx의 선언을 보면 소문자는 letters 폰트에서 가져오는 반면, 대문자 열한 자는 operators 폰트에서 가져옵니다. Computer Modern에서는 cmr, 곧 본문과 같은 직립 서체입니다. 한 수식에 \Gamma와 \gamma를 나란히 두면 하나는 곧게 서고 하나는 기웁니다. LaTeX이 수십 년 동안 손대지 않은 유명한 비대칭입니다.
| 명령 | 글리프 | 이름 |
|---|---|---|
\Gamma | Γ | 감마 |
\Delta | Δ | 델타 |
\Theta | Θ | 세타 |
\Lambda | Λ | 람다 |
\Xi | Ξ | 크시 |
\Pi | Π | 파이(\prod과 다름) |
\Sigma | Σ | 시그마(\sum과 다름) |
\Upsilon | Υ | 웁실론 |
\Phi | Φ | 피 |
\Psi | Ψ | 프사이 |
\Omega | Ω | 오메가 |
여기에 실무상의 성가신 문제가 둘 숨어 있습니다. 하나는 서체의 불일치입니다. 명령이 없는 열세 자는 라틴 대문자로 입력하므로 "변수"로서 이탤릭으로 조판됩니다. \Gamma(직립)와 A(이탤릭)가 같은 줄에 놓이면 모양이 어긋납니다. 다른 하나는 \Sigma·\Pi와 \sum·\prod의 혼동입니다. 앞의 것은 글자이고 뒤의 것은 큰 연산자로, 글자 크기도 다르고 별행 수식에서 범위가 위아래에 놓이는지도 다릅니다. 합과 곱에는 반드시 \sum_{i=1}^{n}, \prod_{i=1}^{n}을 쓰고, \Sigma와 \Pi는 정말 그리스 대문자 자체가 필요할 때만 씁니다.
\epsilon과 \varepsilon, \phi와 \varphi의 차이
\epsilon은 둥근 ϵ을, \varepsilon은 초승달 모양의 ε을 냅니다. 마찬가지로 \phi는 닫힌 ϕ, \varphi는 열린 φ입니다. 이름만 보면 \epsilon이 "표준"처럼 보이지만, 수학의 관행에서는 ε 쪽이 다수입니다. ε–δ 논법의 ε도, "임의의 ε > 0에 대하여"의 ε도 인쇄에서는 대개 초승달 모양을 씁니다. 다시 말해 누군가 "엡실론"이라고 할 때 떠오르는 그 모양을 얻으려면 var가 붙은 쪽을 입력해야 합니다. 이름과 실제 쓰임이 어긋나 있어서 초보자가 반드시 걸려 넘어지는 지점입니다.
ϵ을 둘러싼 더 오래된 혼동이 하나 더 있습니다. 원소 기호 ∈은 본래 그리스 문자 엡실론이었습니다. 주세페 페아노는 1889년 『Arithmetices principia, nova methodo exposita』에서 소속 관계에 ε을 사용하면서, 그것이 라틴어 est("이다")의 약자라고 스스로 밝혔습니다. 이후 두 글자꼴은 갈라섰지만 닮은 탓에 \epsilon과 \in을 뒤바꾸는 일은 지금도 일어나며, x \epsilon A라고 써도 오류는 전혀 나지 않습니다. \in은 관계 기호(\mathrel)로 선언되어 양옆에 간격을 두지만 \epsilon은 보통 기호(\mathord)이기 때문에, 이 실수는 간격이 빠진 이상한 수식으로 조용히 인쇄될 뿐입니다.
% the epsilon-delta definition conventionally uses the lunate \varepsilon
\[ |x - a| < \delta \implies |f(x) - f(a)| < \varepsilon \]
% \epsilon is a letter, \in is a relation -- different commands, different spacing
\[ x \in A, \qquad \epsilon > 0 \]| 명령 | 글리프 | 비고 |
|---|---|---|
\epsilon | ϵ | 둥근 엡실론 |
\varepsilon | ε | 초승달 모양. 수학에서 더 흔함 |
\theta | θ | 표준 세타 |
\vartheta | ϑ | 필기체풍 세타 |
\pi | π | 표준 파이 |
\varpi | ϖ | ω와 비슷한 모양이라 오독하기 쉬움 |
\rho | ρ | 표준 로 |
\varrho | ϱ | 꼬리가 있는 로 |
\sigma | σ | 표준 시그마 |
\varsigma | ς | 그리스어 어말 시그마. 수식에서는 거의 안 씀 |
\phi | ϕ | 닫힌 피 |
\varphi | φ | 열린 피. 물리학에서 흔함 |
\varkappa | ϰ | 변형 카파. amssymb 필요 |
\digamma | ϝ | 디감마(고대 문자). amssymb 필요 |
실무 지침은 아주 단순합니다. 문서 안에서 한쪽으로 통일하는 것입니다. 수학 원고라면 대체로 \varepsilon과 \varphi를, 기존 편집 규정에 맞춘다면 그 규정을 따릅니다. 위 표 가운데 \varkappa(ϰ)와 \digamma(ϝ) 둘만 표준 LaTeX에 정의되어 있지 않아 전처리부에 \usepackage{amssymb}가 필요합니다. 빠뜨리면 역시 ! Undefined control sequence.가 나옵니다. 또한 var가 붙는 변형 글자꼴은 소문자에만 있습니다. 대문자를 기울이는 일은 변형이 아니라 서체 스타일의 문제이며, 바로 다음 절들의 주제입니다.
그리스 문자를 굵게 — \mathbf{\alpha}가 듣지 않는 이유
그리스 문자를 굵게 조판하려면 \boldsymbol{\alpha}(amsmath가 불러오는 amsbsy)나 \bm{\alpha}(bm 패키지)를 씁니다. \mathbf{\alpha}는 오류도 경고도 없이 아무 일도 하지 않습니다. 실제로 상자 너비를 재 보면 Computer Modern 10pt에서 \alpha와 \mathbf{\alpha}가 똑같이 6.43404pt입니다. 이유는 기호의 "클래스"에 있습니다. \mathbf 같은 수식 알파벳 명령은 \mathalpha 클래스 기호에만 작용하는데, fontmath.ltx는 소문자 그리스 문자를 \mathord로 선언해 두었으므로 애초에 대상이 아닙니다.
정말 헷갈리는 대목은 대문자 그리스 문자가 \mathalpha라는 점입니다. 그래서 \mathbf{\Gamma}는 제대로 작동합니다. 같은 조건에서 너비가 6.25002pt에서 6.91663pt로 바뀝니다. "대문자는 굵어졌는데 소문자만 안 된다"는 알 수 없는 증상이 여기서 나옵니다. 그리스 문자로 벡터나 텐서를 쓴다면 처음부터 \boldsymbol이나 \bm으로 통일하는 편이 안전합니다. 둘 중 \bm이 더 유연해서 \bm{\nabla \times E}처럼 부분식 전체에 적용되고, 굵은 서체가 없으면 합성까지 해 줍니다.
\usepackage{amsmath} % provides \boldsymbol (via amsbsy)
\usepackage{bm} % provides \bm
% ...
\[ \boldsymbol{\alpha} \cdot \bm{\omega}, \qquad \bm{\nabla \times E} \]
% \mathbf{\alpha} silently produces the same box as \alpha직립 그리스 문자와 ISO 규칙 — upgreek과 unicode-math
상수나 단위로 쓰는 그리스 문자는 직립으로 조판하는 것이 ISO 80000-2의 방식이며, pdfLaTeX에서는 upgreek 패키지가 답입니다. \usepackage{upgreek}을 불러오면 소문자는 \upalpha, \upmu, \uppi, 대문자는 \Upgamma, \Updelta 등을 쓸 수 있습니다(대문자가 또다시 열한 자인 것은 이 페이지 첫머리의 규칙이 그대로 작동하기 때문입니다). ISO 80000-2는 변수는 이탤릭으로, 단위와 값이 변하지 않는 수학 상수는 직립으로 조판하도록 정합니다. 따라서 원주율 π는 본래 \uppi, 단위 접두어 마이크로는 \upmu가 맞고, 변수로 쓰는 π는 그대로 \pi를 씁니다.
같은 규칙은 반대 방향으로도 작동합니다. ISO는 모든 변수를 이탤릭으로 정하므로, 변수로 쓰는 대문자 그리스 문자도 본래 기울어져야 합니다. 그런데 표준 LaTeX의 \Gamma는 앞 절에서 보았듯 직립입니다. pdfLaTeX에서 이를 바로잡는 것이 Walter Schmidt의 fixmath로, 대문자 그리스 문자를 operators가 아니라 letters에서 다시 가져옵니다(isomath는 그 위에 벡터·행렬·텐서용 서체까지 갖춥니다). XeLaTeX이나 LuaLaTeX이라면 unicode-math의 math-style 키가 한 줄로 해결합니다. 기본값 math-style=TeX은 대문자 직립·소문자 이탤릭이라는 LaTeX 전래의 비대칭을 그대로 재현하고, math-style=ISO로 바꾸면 둘 다 이탤릭이 됩니다. french와 upright도 고를 수 있습니다. 다만 함수 이름으로서의 Γ(감마 함수)는 ISO에서도 직립이 맞으므로 규칙을 기계적으로 적용하지는 마십시오.
\usepackage{upgreek}
% ...
% constants and units are upright
\[ C = 2 \uppi r, \qquad \lambda = 5\,\upmu\mathrm{m} \]
% variables stay italic
\[ \pi_1(X), \qquad \gamma \]
% XeLaTeX / LuaLaTeX: one line switches the whole convention
% \usepackage[math-style=ISO]{unicode-math}본문에서 그리스 문자 쓰기 — ! Missing $ inserted 피하기
본문에 \alpha라고 쓰면 ! Missing $ inserted.로 멈춥니다. 그리스 문자 명령은 수식 모드에서만 쓸 수 있는 수식 문자(mathchar)로 선언되어 있어서, 수평 모드에서 이를 만난 TeX이 $를 보충하려다 실패하기 때문입니다. 손쉬운 회피책은 $\alpha$이지만, 이렇게 하면 기울어진 "변수 α"로 조판되므로 단위 μm이나 생물 학명처럼 본문의 일부로서의 그리스 문자에는 적절하지 않습니다. 수식을 쓰는지 문장을 쓰는지에 따라 필요한 도구가 달라집니다.
본문용으로는 textgreek 패키지가 있습니다. \textalpha, \textbeta, \textmu에 더해 \textAlpha부터 \textOmega까지, 대소문자 스물네 자가 모두 갖춰져 있습니다. 수식 모드에서 열한 자뿐이던 대문자가 여기서는 온전히 다 있습니다. 그리스어 문장 자체를 조판하려면 babel의 greek 옵션(실체는 babel-greek의 greek.ldf)을 쓰고 \textgreek{…} 안에 LGR 부호화 전사 입력을 넣어 그리스 문자로 변환시키는 것이 정석입니다. 단위 접두어 마이크로만 필요하다면 siunitx의 \micro를 쓰는 방법도 있습니다. 어느 쪽이든 $\mu$m으로 때우는 것은 첫 번째가 아니라 마지막 수단으로 여기십시오.
\usepackage{textgreek}
% ...
A wavelength of 5\,\textmu m, and a coefficient \textalpha.
% writing \alpha here instead -> ! Missing $ inserted.| 명령·옵션 | 패키지 | 얻는 것 |
|---|---|---|
\boldsymbol{\alpha} | amsmath (amsbsy) | 굵은 이탤릭 그리스 문자 |
\bm{\alpha} | bm | 굵게. 부분식 전체에 적용 가능 |
\upalpha | upgreek | 직립 소문자 그리스 문자 |
\Upgamma | upgreek | 직립 대문자 그리스 문자(열한 자) |
\varkappa | amssymb | 변형 카파 ϰ와 \digamma ϝ |
\textalpha | textgreek | 텍스트 모드의 그리스 문자 24자 |
math-style=ISO | unicode-math | ISO 준수 전체 이탤릭(XeLaTeX / LuaLaTeX) |