본문 서체를 Times나 Palatino로 바꾸었는데 수식만 Computer Modern 그대로라면 그 불일치가 눈에 띕니다. 이 페이지의 주제는 그런 “어긋남”을 피하는 것입니다. LaTeX에서는 본문 글꼴과 수식 글꼴이 따로 결정되므로, 문서 전체의 수식 글꼴을 의식적으로 고르고 본문과 조화시켜야 합니다. pdfLaTeX 시대의 기존 패키지인 mathptmx, mathpazo, newtxmath와, XeLaTeX/LuaLaTeX에서 unicode-math와 \setmathfont를 쓰는 현대적인 방법을 실제로 동작하는 예와 함께 살펴봅니다. \mathbb나 \mathcal 같은 기호별 수식 알파벳 명령은 별도 페이지(수학 영역의 “Math fonts”)에서 다루며 여기서는 반복하지 않습니다.
본문과 수식은 따로 정해진다
먼저 원칙부터 확인합니다. LaTeX에서는 본문(일반 텍스트) 글꼴과 수식 모드 글꼴이 서로 독립된 두 계통으로 관리됩니다. 본문 글꼴을 바꾸어도 수식의 기호나 영문자가 자동으로 따라오지는 않습니다. 그래서 “\usepackage{...}로 본문을 Times로 만들었는데 수식의 x나 \sum은 예전 서체 그대로”라는 불일치가 생깁니다. 좋은 조판의 조건은 둘을 의도적으로 맞추는 것입니다. 수식 안의 변수와 기호가 주변 본문과 같은 굵기와 같은 분위기로 조판되어야 합니다.
기본 수식 글꼴은 Knuth가 TeX와 함께 설계한 Computer Modern math입니다. pdfLaTeX에서 아무것도 지정하지 않으면 본문과 수식이 모두 Computer Modern으로 조판되고, 원래 한 벌로 설계되었기 때문에 자연스럽게 조화됩니다. lmodern 패키지를 읽어들이면 윤곽선을 더 매끄럽게 한 Latin Modern(본문)과 대응하는 수식 글꼴 Latin Modern Math로 바뀝니다(후자는 주로 unicode-math를 통해 사용). 즉 “아무것도 하지 않는” 상태가 이미 본문과 수식이 맞춰진 출발점입니다.
여기서부터 본문을 다른 서체로 바꾸고 싶어지는 순간 선택지는 둘로 갈라집니다. pdfLaTeX라면 수식 글꼴마다 전용 패키지를 읽어들이는 기존 방식이고, XeLaTeX와 LuaLaTeX라면 unicode-math로 하나의 OpenType 수식 글꼴을 지정하는 현대 방식입니다. 다음 절부터 차례로 살펴봅니다.
기존 방식(pdfLaTeX / Type1)
pdfLaTeX에서는 문서 전체의 수식 글꼴을 바꾸기 위해 수식 글꼴 패키지를 사용합니다. 대부분은 본문용 글꼴과 짝이 되도록 만들어져 있어, 본문 쪽 패키지와 함께 읽어들이면 본문과 수식이 같은 서체 패밀리로 맞춰집니다. 대표적인 것을 아래 표에 정리합니다.
| 패키지 | 본문 / 대응 서체 | 비고 |
|---|---|---|
mathptmx | Times | Times 계열 수식(Times, Symbol, CM에서 합성). 간편하지만 다소 오래됨 |
mathpazo | Palatino | Pazo Math 알파벳을 동반한 Palatino용 수식 |
newtxmath | Times(newtxtext와 함께) | 현대적인 Times풍 수식. [libertine], [utopia] 등으로 다른 본문 서체에 맞출 수 있음 |
newpxmath | Palatino(newpxtext와 함께) | Palatino풍 수식(TeX Gyre Pagella 필요) |
fourier | Utopia | Utopia 본문과 Fourier 수식을 함께 설정 |
kpfonts | 자체 본문/수식 세트 | 본문과 수식을 함께 제공하는 종합 패키지 |
mathdesign | Garamond / Charter / Utopia | 선택한 본문 서체에 맞는 수식(garamond/charter/utopia) |
eulervm | (임의의 본문 서체) | Euler 수식 알파벳. 자체 수식이 없는 본문 서체와 조합 가능 |
전형적인 사용법은 본문 쪽 패키지와 수식 쪽 패키지를 함께 읽어들이는 것입니다. 예를 들어 mathpazo는 Palatino 본문과 Pazo 수식을 한 번에 설정합니다. 오늘날 가장 권하기 쉬운 것은 newtx 계열입니다. \usepackage{newtxtext,newtxmath}라고 두 개를 나란히 쓰면 본문은 Times 계열, 수식도 Times풍의 현대적인 서체로 맞춰집니다. newtxmath는 옵션이 풍부해 [libertine]를 붙이면 Libertine(libertinus) 본문에 맞는 수식이 되고, [utopia](또는 Erewhon 계열)을 붙이면 Utopia 계열 본문에 맞는 수식이 됩니다.
% --- Palatino 本文+数式 / Palatino text & math ---
\usepackage{mathpazo} % Palatino + Pazo math
% --- Times 本文+数式(おすすめ) / Times text & math (recommended) ---
\usepackage{newtxtext} % 本文 / text
\usepackage{newtxmath} % 数式 / math
% --- Libertine 本文に数式を合わせる / match math to Libertine text ---
% \usepackage{libertine}
% \usepackage[libertine]{newtxmath}주의할 점은 본문과 수식을 별도의 패키지로 지정하면 조합을 잘못 골라 불조화가 생기기 쉽다는 것입니다. newtxtext와 newpxmath(Times 본문에 Palatino 수식)처럼 짝이 아닌 것을 섞으면, 바로 이 페이지가 피하려는 불일치를 스스로 만들게 됩니다. 읽어들이는 순서도 중요해서, 수식 글꼴 패키지는 본문 글꼴 패키지 뒤에 두는 것이 무난합니다. 원칙은 단순합니다. 본문과 수식은 짝이 되는 것을 고른다는 것입니다.
현대 방식: unicode-math(XeLaTeX 및 LuaLaTeX)
XeLaTeX나 LuaLaTeX를 사용한다면 기존의 “패키지 모음”을 정리할 수 있습니다. unicode-math 패키지는 \setmathfont{…}로 하나의 OpenType 수식 글꼴만 지정하면 수식 전체를 그 글꼴로 조판합니다. 본문은 fontspec으로 OpenType 본문 글꼴로 바꾸고, 수식은 \setmathfont로 대응하는 OpenType 수식 글꼴로 바꾸면 이 두 줄로 본문과 수식이 맞춰집니다. unicode-math는 내부에서 fontspec을 읽어들이며, XeTeX 또는 LuaTeX 엔진이 필요합니다(pdfLaTeX에서는 동작하지 않음). 또한 amsmath 기능을 전제로 하므로 amsmath를 먼저 읽어둡니다.
사용할 수 있는 OpenType 수식 글꼴에는 좋은 무료 선택지가 많습니다. Latin Modern Math(Computer Modern 계보), STIX Two Math(과학 기호 수록 범위가 넓음), TeX Gyre 계열의 각 Math 버전(Termes=Times풍, Pagella=Palatino풍, Bonum, Schola), Libertinus Math(Libertine / Linux Libertine의 후계), 그리고 XITS(STIX 유래), Asana Math, Fira Math 등이 있습니다. \begin{document} 전까지 수식 글꼴을 지정하지 않으면 기본으로 Latin Modern Math가 읽힙니다.
| OpenType 수식 글꼴 | 계통 / 특징 | 어울리는 본문 글꼴 |
|---|---|---|
Latin Modern Math | Computer Modern 계열; 기본값 | Latin Modern |
TeX Gyre Termes Math | Times풍 | TeX Gyre Termes / Times |
TeX Gyre Pagella Math | Palatino풍 | TeX Gyre Pagella / Palatino |
STIX Two Math | Times풍, 매우 넓은 기호 세트 | STIX Two Text / Times |
Libertinus Math | Libertine의 후계 | Libertinus Serif |
XITS / Asana / Fira Math | STIX 기반 / 독자적 / 산세리프 계열 | 용도에 맞게 |
아래는 최소 예입니다. amsmath → unicode-math 순서로 읽어들이고 \setmathfont로 수식 글꼴을 이름으로 지정합니다. 기존 방식의 mathptmx나 mathpazo 같은 개별 패키지는 필요 없으며, 이 한 줄이 수식 전체를 맡습니다. 본문도 맞추고 싶다면 fontspec의 \setmainfont로 대응하는 본문 글꼴을 지정합니다(unicode-math가 fontspec을 읽어들이므로 fontspec 자체의 로드는 생략할 수 있습니다).
% コンパイルは xelatex または lualatex / compile with xelatex or lualatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes} % 本文(fontspec)/ text
\setmathfont{TeX Gyre Termes Math} % 数式(対の OpenType フォント)/ matching math
\begin{document}
\[
f(x) = \int_{-\infty}^{\infty} \hat f(\xi)\, e^{2\pi i x \xi}\, d\xi.
\]
\end{document}이 예에서는 본문이 TeX Gyre Termes(Times풍), 수식이 그 짝인 TeX Gyre Termes Math로 조판되어 적분 기호, 첨자, 변수까지 본문과 같은 서체감을 공유합니다. 하나의 수식 글꼴만으로 부족할 때는 \setmathfont의 range= 옵션으로 수식 알파벳의 일부만 다른 글꼴에서 가져올 수 있습니다(자세한 내용은 “Math fonts” 페이지). 전체적으로 Unicode 엔진을 사용한다면 unicode-math + \setmathfont가 오늘날의 표준이며, 기존 패키지보다 설정이 훨씬 간결합니다.
무엇을 고를까: 본문과 수식을 짝짓기
결국 핵심 조언은 하나입니다. 본문 글꼴과 수식 글꼴을 “짝”으로 고르세요. pdfLaTeX라면 newtxtext + newtxmath(Times 계열)나 mathpazo(Palatino 계열)처럼 설계상 함께 쓰도록 만들어진 조합을 사용합니다. XeLaTeX나 LuaLaTeX라면 \setmainfont{...}와 \setmathfont{...}로 Libertinus 본문 + Libertinus Math, TeX Gyre Pagella 본문 + 같은 계열 Math처럼 대응하는 패밀리를 맞춥니다.
- 아무것도 하지 않는다면: Computer Modern(pdfLaTeX) 또는 Latin Modern Math(
unicode-math기본값). 본문과 수식이 이미 맞춰져 있습니다. - pdfLaTeX에서 본문을 바꾼다면: 본문/수식이 짝인 패키지를 사용하세요. Times는
newtxtext+newtxmath, Palatino는mathpazo/newpxmath, Utopia는fourier나mathdesign입니다. - XeLaTeX/LuaLaTeX라면:
amsmath다음unicode-math를 읽어들이고,\setmainfont와\setmathfont로 대응하는 OpenType 본문/수식 글꼴을 지정하세요. - 하지 말아야 할 것: 짝이 아닌 본문과 수식을 섞는 것(예: Times 본문에 Palatino 수식).
한편 \mathbb, \mathcal, \mathfrak처럼 수식 안의 특정 문자만 다른 서체로 만드는 명령은 이 페이지의 문서 전체 수식 글꼴 선택과는 별개의 주제입니다. 그 내용은 수학 영역의 “Math fonts” 페이지에 정리되어 있습니다. 본문 글꼴 자체의 선택지는 “Western font families”, Unicode 엔진에서의 본문 글꼴 지정은 “fontspec”, NFSS 같은 구조는 “Font system”을 참조하세요.