수식 모드의 영문자는 기본적으로 수식 이탤릭이지만, 분야에 따라 정해진 수식 알파벳이 필요한 경우가 있습니다. 집합론의 칠판 굵은 ℝ, 함자 이름에 쓰는 스크립트 문자, Lie 대수에 쓰는 장식적인 Fraktur가 그런 예입니다. 이 페이지에서는 \mathbf, \mathbb 같은 수식 알파벳 명령과 각 명령에 필요한 패키지, 벡터와 기호를 굵게 만들 때 \boldsymbol과 \bm을 어떻게 구분하는지 정리합니다. 마지막으로 XeLaTeX와 LuaLaTeX에서 OpenType 수식 글꼴을 쓰는 현대적인 방식인 unicode-math도 다룹니다.
수식 알파벳이란
수식 모드의 글자는 하나하나 변수로 간주되어 수식 이탤릭으로 조판됩니다. 이것이 기본 “수식 알파벳”입니다. 반대로 \mathbf{v}처럼 명령으로 감싸면 감싼 범위만 다른 서체로 바뀝니다. LaTeX는 이런 전환 명령을 본문용 \textbf, \textsf 등에 대응시키는 방식으로 \math… 이름으로 제공합니다.
주의할 점은 수식 알파벳 명령이 인수를 텍스트가 아니라 “한 글자씩의 수학 기호 나열”로 다시 조판한다는 것입니다. 그래서 \mathbf{fit}은 단어 “fit”이 아니라 굵은 기호 f, i, t 세 개의 곱으로 취급됩니다. 수식 안에 실제 단어를 그대로 직립으로 넣고 싶을 때는 \text{…}(amsmath)를 사용합니다.
기본이 되는 일곱 명령은 아무 패키지 없이 사용할 수 있습니다. 아래 표에서 먼저 LaTeX에 내장된 것들을 확인하세요(\mathnormal은 기본 수식 이탤릭 자체를 명시하는 명령입니다).
| 명령 | 모양 | 비고 |
|---|---|---|
\mathnormal | 기본 수식 이탤릭 | 내장됨; 변수의 기본 모양 |
\mathrm | 직립 로마체 | 내장됨; 직립 상수와 약어에 사용 |
\mathbf | 직립 굵은체 | 내장됨; 직립이라 변수에는 부적합(아래 참조) |
\mathsf | 산세리프체 | 내장됨; 텐서나 범주 이름 등에 사용 |
\mathtt | 등폭(타자기체) | 내장됨; 수식 안의 코드 같은 토큰 등에 사용 |
\mathit | 본문용 이탤릭 | 내장됨; 여러 글자 단어를 기울임(단어에 맞는 자간) |
\mathcal | 캘리그래픽; 대문자만 | 내장됨; 집합족, 범주 등에 사용 |
\mathit과 \mathnormal은 헷갈리기 쉬우므로 덧붙이면, \mathnormal(기본)은 글자 하나하나를 변수로 조판해 자간이 넓고, \mathit은 본문용 이탤릭이라 \mathit{diff}처럼 여러 글자 단어를 하나의 기울어진 단위로 만들 때 알맞습니다.
칠판 굵은체, 캘리그래픽, Fraktur, 스크립트
다음 네 가지는 수학에서 특히 자주 쓰이는 서체이지만, 표준 \mathcal을 제외하면 각각 패키지를 읽어들여야 합니다. 모양, 용도, 필요한 패키지가 모두 다릅니다.
\mathbb(칠판 굵은체, blackboard bold)는 세로획 등을 이중선으로 만든 독특한 굵은체입니다. 원래 칠판에서 굵은 글씨를 쓰기 위해 획을 겹쳐 그리던 방식에서 왔습니다. amssymb(또는 amsfonts)가 필요하고 대문자만 지원합니다. 용도는 거의 정해져 있어 실수 ℝ, 복소수 ℂ, 정수 ℤ, 유리수 ℚ, 자연수 ℕ 같은 수의 집합을 나타내는 데 씁니다. \mathbb{R}이라고 쓰면 세로획이 이중선인 “칠판 굵은 R”이 나옵니다.
\mathcal(캘리그래픽)은 흐르는 듯한 장식적인 대문자를 내며, 표준으로 사용할 수 있고 대문자만 지원합니다. 집합족 𝒜, 푸리에 변환 ℱ, 범주나 층의 이름 등에 널리 쓰입니다. \mathcal{F}는 “장식이 붙은 F”를 만듭니다.
\mathscr(스크립트체)는 \mathcal보다 더 필기체답고 더욱 유려한 서체입니다. 보통 mathrsfs 패키지(Ralph Smith의 Formal Script를 읽어들임)를 사용하며, euscript 패키지(Euler Script)도 다른 계열의 스크립트를 제공합니다. \mathcal과 구분해 두 종류의 장식 문자를 함께 쓰고 싶을 때 유용합니다(이쪽도 실용적으로는 대문자용입니다).
\mathfrak(Fraktur)는 독일의 오래된 활자에서 유래한 각진 장식 서체로, Lie 대수 𝔤나 아이디얼 𝔭, 𝔮의 이름 등에 쓰입니다. amssymb(또는 내부에서 eufrak을 읽어들이는 amsfonts)가 필요하며, \mathbb나 \mathcal과 달리 대문자와 소문자 모두를 지원합니다.
\usepackage{amssymb} % \mathbb と \mathfrak
\usepackage{mathrsfs} % \mathscr
% ...
\[
\mathbb{R} \subset \mathbb{C}, \qquad
\mathcal{F}(f) = \hat{f}, \qquad
\mathscr{L}(f) = F, \qquad
\mathfrak{g} = \operatorname{Lie}(G).
\]이 예에서 \mathbb{R}과 \mathbb{C}는 칠판 굵은체, \mathcal{F}는 캘리그래픽, \mathscr{L}은 더 유려한 스크립트, \mathfrak{g}는 각진 Fraktur 소문자로 조판됩니다. 아래 표에는 서체별 필요한 패키지와 지원 범위를 정리합니다.
| 명령 | 필요한 패키지 | 지원 범위와 대표 용도 |
|---|---|---|
\mathbb | amssymb(또는 amsfonts) | 대문자만; 수의 집합 ℝ ℂ ℤ ℚ ℕ |
\mathcal | 표준(불필요) | 대문자만; 집합족, 범주, 변환 이름 |
\mathscr | mathrsfs(또는 euscript) | 실용상 대문자; 더 유려한 스크립트 |
\mathfrak | amssymb / amsfonts(eufrak) | 대문자와 소문자; Lie 대수, 아이디얼 |
공통되는 중요한 제한은 이 장식 알파벳들이 수록한 문자가 제한적이라는 점입니다. \mathbb와 \mathcal은 본질적으로 대문자 A–Z가 중심이고, 숫자나 그리스 문자, 소문자는 표준 글꼴에서는 보통 갖추어져 있지 않습니다. “\mathbb{2}로 칠판 굵은 2를” 같은 용도는 표준으로는 만족할 수 없으며, mathalpha/mathalfa, bbm, dsfont 같은 별도 글꼴 패키지나 아래에서 다루는 unicode-math가 필요합니다.
수식을 굵게 만들기
벡터나 행렬을 굵게 나타내는 등 수식을 굵게 만들고 싶은 경우는 많지만, 여기에는 함정이 있습니다. 앞서 든 \mathbf는 “직립 굵은체”라서 본래 굵은 상수나 약어처럼 직립이어도 되는 것에 쓰입니다. 이것으로 벡터 \mathbf{v}를 조판하면 굵어지기는 하지만 직립이 되어, 변수는 기울임이어야 한다는 관례에서 벗어납니다. 게다가 \mathbf는 기호나 그리스 문자에는 효과가 없습니다(\mathbf{\alpha}라고 해도 α는 굵어지지 않습니다).
기울임을 유지한 채 굵게 만들고 싶을 때 첫 번째 선택지는 \boldsymbol입니다. amsmath(내부의 amsbsy)가 제공하는 명령으로, 변수뿐 아니라 그리스 문자와 기호도 굵게 만들 수 있고 원래의 모양(기울임 등)을 유지합니다. \boldsymbol{\beta}는 “굵은 이탤릭 β”를 줍니다.
그리고 오늘날 가장 권장되는 견고한 방법은 bm 패키지의 \bm입니다. bm은 LaTeX 필수 도구 모음(latex-tools)에 포함되므로 표준 TeX 배포판이라면 별도 설치 없이 사용할 수 있습니다. \bm{…}은 주어진 것에 굵기만 더하고, 기울임 등 다른 모양은 그대로 유지하도록 설계되어 있어 변수, 그리스 문자, 기호는 물론 복잡한 입력도 거의 그대로 굵게 만들 수 있습니다. 자간 처리도 \boldsymbol보다 세심하며, CTAN 설명에서도 “\bm은 \boldsymbol보다 일을 처리하는 방식이 더 주의 깊다”고 말합니다. bm은 \boldsymbol을 \bm의 별칭으로 재정의하고, 더 굵은 용도의 \hm(\heavysymbol)도 제공합니다.
\usepackage{amsmath} % \boldsymbol
\usepackage{bm} % \bm(推奨)
% ...
\[
\mathbf{v} \neq \bm{v}, \qquad
\bm{\beta} = (\beta_1, \dots, \beta_n), \qquad
\nabla \bm{F} = \bm{0}.
\]이 예에서 \mathbf{v}는 직립 굵은 v이고, \bm{v}는 기울임을 유지한 굵은 v이므로 둘이 다르다는 것을 볼 수 있습니다. \bm{\beta}는 굵은 이탤릭 β, \bm{0}은 굵은 0(영벡터)입니다. 원칙적으로 변수, 벡터, 기호의 굵은꼴에는 \bm, 직립이어도 되는 상수나 약어에는 \mathbf를 쓰는 것이 안전합니다.
\mathbf— 직립 굵은체. 표준으로 쓸 수 있지만 기울어야 하는 변수에는 부적합하고, 기호나 그리스 문자에는 효과가 없다.\boldsymbol— amsmath(amsbsy) 제공. 기울임을 유지하며 그리스 문자와 기호도 굵게 만들 수 있다.\bm— bm 패키지 제공. 권장. 굵기만 더하고 글자 모양과 간격을 유지한다. 가장 견고하고 적용 범위가 넓다.
unicode-math(XeLaTeX 및 LuaLaTeX)
여기까지는 각 서체를 전용 패키지로 하나씩 더하는 전통적인 방식이었습니다. 새로운 엔진인 XeLaTeX와 LuaLaTeX에서는 unicode-math 패키지를 사용하면 수식 전체를 하나의 OpenType 수식 글꼴로 한꺼번에 조판할 수 있습니다. 본문 글꼴을 바꾸듯 수식 서체를 바꿀 수 있으며, \mathbb 등을 하나씩 더하는 기존 방식을 대체합니다(한 문서에서 두 방식을 섞을 수는 없습니다).
사용의 핵심은 \setmathfont{…}입니다. amsmath를 읽어들인 뒤, 다른 글꼴 관련 패키지보다 나중에 unicode-math를 읽고, \setmathfont로 OpenType 수식 글꼴을 지정합니다. 대표적인 글꼴로는 Latin Modern Math(Computer Modern 계보), STIX Two Math, TeX Gyre 계열(Termes/Pagella/Bonum/Schola Math) 등이 있습니다. \begin{document} 전까지 수식 글꼴을 지정하지 않으면 기본으로 Latin Modern Math가 읽힙니다.
% コンパイルは xelatex または lualatex
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{STIX Two Math} % OpenType 数式フォント
% ...
\[
\symbb{R} \subset \symbb{C}, \qquad
\symcal{F}, \quad \symscr{L}, \quad \symfrak{g}, \qquad
\symbf{v} = \symbf{0}.
\]매뉴얼은 기존 \math… 명령 대신 \sym… 명령을 사용할 것을 권장합니다. 대응은 단순합니다. \symbf(굵은체), \symbb(칠판 굵은체), \symcal(캘리그래픽), \symscr(스크립트), \symfrak(Fraktur), \symup(직립), \symit(이탤릭), \symsf(산세리프) 등이 있습니다. 이들은 Unicode의 대응하는 수학 영숫자 문자로 매핑되므로, 출력 PDF에서 글리프를 복사해도 의미가 유지됩니다. \mathbb 같은 기존 이름도 하위 호환을 위해 남아 있지만, 새 문서에서는 \sym…이 권장됩니다.
하나의 수식 글꼴이 모든 문자 종류를 담당할 수 없을 때는 \setmathfont의 range= 옵션으로 수식 알파벳의 일부만 다른 글꼴에서 가져올 수 있습니다. range=에는 "1D538-"1D56B" 같은 Unicode 범위, range=\int 같은 특정 기호, range=\symbb(또는 range=bb) 같은 알파벳 스타일을 지정할 수 있습니다. 예를 들어 칠판 굵은 글자만, 또는 그리스 소문자와 대문자만 다른 글꼴로 바꿀 수 있습니다. 단, range=를 사용하기 전에 주 수식 글꼴을 보통 방식으로 먼저 읽어들여야 합니다.
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math} % 主たる数式フォント
\setmathfont{STIX Two Math}[range=\symbb] % 黒板太字だけ別フォント
\setmathfont{TeX Gyre Termes Math}[range=bfit/{greek,Greek}] % 太字斜体のギリシャだけ이 예에서는 수식의 본체를 Latin Modern Math로 조판하면서, 칠판 굵은 글자(\symbb)만 STIX Two Math에서, 굵은 이탤릭 그리스 문자만 TeX Gyre Termes Math에서 가져옵니다. 효율을 위해 unicode-math는 range=로 지정한 글꼴을 필요한 범위만 읽어들입니다. 전체적으로 XeLaTeX나 LuaLaTeX를 쓴다면, 서체마다 패키지를 더하는 기존 방식보다 unicode-math + \setmathfont가 오늘날의 표준적인 방법입니다.