LaTeX 기호를 찾는 도구들은 기호 목록이 너무 길어져 뒤지기 어려워졌기 때문에 생겨났습니다. 손으로 그려서 찾는 인식 도구 Detexify는 그 동기를 자기 소개문에 그대로 적어 두었습니다. symbols-a4.pdf에서 외우지 못한 기호를 찾아내는 일은 시간이 너무 많이 든다는 것입니다. 그 symbols-a4.pdf가 바로 The Comprehensive LaTeX Symbol List이며, TeX Live 2024에 동봉된 판은 481쪽에 20,323개의 기호를 싣고 있습니다. 이 페이지는 또 하나의 기호표가 아닙니다. “지금 눈앞에 있는 이 글자를 LaTeX으로 어떻게 입력하는가”에 답하기 위한 도구 상자를, 손이 가야 할 순서대로 늘어놓은 것입니다. amssymb, Comprehensive 목록, Detexify, 그리고 XeLaTeX / LuaLaTeX을 위한 unicode-math입니다.
그 기호는 어느 패키지에 있나: 먼저 amssymb
표준 LaTeX에 없는 수학 기호라면 답은 대개 \usepackage{amssymb} 한 줄입니다. 미국수학회(AMS)의 패키지인데, 막상 열어 보면 맥이 빠질 만큼 단순합니다. amssymb.sty(v3.01, 2013년)는 이백 줄 남짓한 \DeclareMathSymbol이 이어질 뿐, AMS 기호 글꼴에 이미 들어 있는 글리프에 이름을 붙이는 일만 하는 파일입니다. 흔히 혼동되는 amsmath와의 차이도 여기에 있습니다. amsmath는 수식의 구조(align 환경, 분수 관련 기능)를 맡고, amssymb는 기호 자체를 늘립니다. 문제가 “이 기호가 없다”면 amssymb, “수식이 정렬되지 않는다”면 amsmath입니다.
이름만 붙인다면 글자는 어디에 있을까요. amssymb를 불러오면 내부에서 \RequirePackage{amsfonts}가 실행되어 AMSa(NFSS 이름 U/msa, 글꼴 msam10)와 AMSb(U/msb, msbm10)라는 두 기호 글꼴이 수식 글꼴로 등록됩니다. amssymb.sty는 각 명령이 그 두 글꼴의 몇 번째 자리를 가리키는지를 선언할 뿐입니다. 이 연쇄의 실질적인 이득은 \usepackage{amssymb} 한 줄로 amsfonts가 주는 것까지 딸려 온다는 점입니다. \mathbb(칠판 굵은체), \mathfrak(프락투어), \hbar, \checkmark, \dashrightarrow는 엄밀히는 amsfonts.sty 쪽 정의이지만, 따로 \usepackage{amsfonts}를 쓸 필요는 없습니다.
그리고 찾는 것이 애초에 amssymb에 있을 만한지는 다섯 계열만 알면 대체로 판단할 수 있습니다. 원하는 모양이 그 어느 쪽에도 들지 않는다면—악보 기호, 회로 소자, 체스 말 같은 것들—amssymb를 훑는 일은 시간 낭비이며, 다음 절의 Comprehensive LaTeX Symbol List로 바로 가는 편이 빠릅니다.
- 추가 관계 기호. 표준 관계 기호의 변형과 친척들:
\leqslant(기울어진 “작거나 같음”)와\geqslant,\lesssim과\gtrsim, 이중선의\subseteqq와\supseteqq. - 부정 관계 기호. 처음부터 사선이 그어진 전용 글리프:
\nleq(작거나 같지 않음),\ngeq,\nsim,\nsubseteq,\nmid(나누어떨어지지 않음). - 추가 화살표.
\twoheadrightarrow(두 머리 = 전사),\rightrightarrows(나란한 두 화살표),\rightsquigarrow(물결선),\dashrightarrow(파선) 같은 장식적 화살표. - 기타 기호.
\varnothing(둥근 공집합),\square/\blacksquare,\complement(여집합),\nexists,\circledast등. - 히브리 문자. 기수에 쓰는
\beth,\gimel,\daleth.\aleph만은 이미 표준 LaTeX에 있습니다.
\usepackage{amssymb} % extra relations, negations, arrows, misc symbols, Hebrew
% ...
\[ 0 \leqslant x \lesssim 1, \qquad a \nmid b, \qquad A \subseteqq B \]
\[ f \colon X \twoheadrightarrow Y, \qquad \varnothing \ne S, \qquad \aleph_0 < \beth_1 \]\leqslant와 \nleq — amssymb의 관계 기호와 부정
다섯 계열 가운데 매일 손이 가는 것은 관계 기호의 변형과 부정형입니다. 기울어진 \leqslant(⩽)는 많은 수학 책이 수평의 \leq(≤)보다 선호하는 자형이며, 한쪽을 고르면 문서 전체에서 통일하는 것이 원칙입니다. 같은 논문에 ≤와 ⩽이 섞여 있으면 독자에게는 서로 다른 두 관계를 구분하는 신호처럼 보입니다. 부정도 마찬가지로, 전용 글리프가 있는 관계 기호에는 반드시 그것을 쓰십시오. 아래 표는 대표 예이며 망라한 목록은 아닙니다(모두 amssymb가 필요합니다).
| 명령 | 자형 | 의미(모두 amssymb 필요) |
|---|---|---|
\leqslant | ⩽ | 작거나 같음(기울어진 변형) |
\geqslant | ⩾ | 크거나 같음(기울어진 변형) |
\lesssim | ≲ | 작거나 유사함 |
\gtrsim | ≳ | 크거나 유사함 |
\subseteqq | ⫅ | 부분집합, 이중 등호 막대 |
\nleq | ≰ | 작거나 같지 않음 |
\ngeq | ≱ | 크거나 같지 않음 |
\nsim | ≁ | 유사하지 않음 |
\nsubseteq | ⊈ | 부분집합 또는 같음이 아님 |
\nmid | ∤ | 나누어떨어지지 않음 |
\nparallel | ∦ | 평행하지 않음 |
전용 부정형이 없는 관계 기호는 앞에 \not을 붙여 그 자리에서 부정할 수 있습니다(\not\equiv 등). 다만 \not은 크기와 기울기가 고정된 사선을 덧씌울 뿐이어서, 어떤 글리프 위에서는 선이 중심에서 벗어나 어색해집니다. \nleq 같은 전용 글리프가 마련된 이유가 바로 그것입니다. 반대로 \ne(≠)와 \notin(∉)은 표준 LaTeX에 전용 명령이 있어 amssymb도 \not도 필요하지 않습니다. 관계 기호가 양옆에 두는 간격의 원리와 \not의 세부 동작은 “관계 기호” 페이지에서 다룹니다.
\varnothing, \twoheadrightarrow, ℶ — amssymb의 화살표와 기타 기호
남은 세 계열에서는 모양 자체가 의미를 말해 주는 글리프가 눈에 띕니다. 화살촉이 겹인 \twoheadrightarrow(↠)는 전사, 꼬리가 달린 \rightarrowtail(↣)은 단사입니다. “위를 전부 덮는다”와 “아래에서 끼어든다”는 직관이 그대로 자형이 된 것입니다. 기타 기호에서는 둥근 공집합 \varnothing(∅)이 표준 \emptyset보다 선호되는 경우가 많고, 증명의 끝은 \square(□)나 \blacksquare(■)로 맺습니다.
| 명령 | 자형 | 의미 / 비고(모두 amssymb 필요) |
|---|---|---|
\twoheadrightarrow | ↠ | 두 머리 오른쪽 화살표; 전사 |
\rightarrowtail | ↣ | 꼬리 달린 오른쪽 화살표; 단사 |
\rightrightarrows | ⇉ | 오른쪽 화살표 두 개 나란히 |
\rightsquigarrow | ⇝ | 물결 오른쪽 화살표 |
\varnothing | ∅ | 둥근 공집합(\emptyset의 변형) |
\square | □ | 흰 사각형 / 증명 끝(QED) |
\blacksquare | ■ | 검은 사각형 |
\complement | ∁ | 여집합 |
\nexists | ∄ | 존재하지 않음(∃의 부정) |
\checkmark | ✓ | 체크 표시(amsfonts에서 옴) |
\beth | ℶ | 히브리 문자 beth(기수) |
\gimel | ℷ | 히브리 문자 gimel |
\daleth | ℸ | 히브리 문자 daleth |
히브리 문자는 집합론에서 기수(무한한 농도)로 쓰입니다. \aleph(ℵ)만 표준 LaTeX에 있고, 이어지는 \beth, \gimel, \daleth는 amssymb가 필요합니다. 그리스 문자 변형 \digamma(ϝ)와 \varkappa(ϰ)도 출처가 같으며, 이쪽은 “그리스 문자” 페이지에서 다룹니다. 여기까지 보면 알 수 있듯이, 이 페이지의 표는 모두 대표 예뿐입니다. 화살표, 기타 기호, 관계 기호 각각의 망라적 목록은 해당 분류 페이지에 있으며, 이 메타 페이지의 역할은 어디를 봐야 하는지를 알려 주는 데 있습니다.
Comprehensive LaTeX Symbol List — 2만 5천 개 중에서 찾아내기
amssymb에도 없는 기호를 찾을 때, 또는 “이건 어느 패키지에 들어 있나”를 확인해야 할 때의 결정판이 Scott Pakin의 The Comprehensive LaTeX Symbol List입니다. CTAN에서의 패키지 이름은 comprehensive이고 라이선스는 LPPL입니다. 수록 수는 판을 거듭하며 늘어나, CTAN의 설명에 따르면 2026년 4월에 공개된 16.0판에서 25,000개를 넘었습니다. 손안의 TeX Live 2024에 들어 있는 판만 해도 20,323개, 481쪽입니다. 곧 “너무 많아서 찾기 어렵다”는 사치스러운 문제 그 자체입니다.
그 규모에 질리지 않게 해 주는 입구가 두 개 있습니다. 하나는 맨 앞의 “Frequently Requested Symbols(자주 찾는 기호)” 절입니다. 찾는 글리프가 여기 있다면 몇 초면 끝납니다. 다른 하나는 장 구성으로, 본문 기호, 수학 기호, 과학·기술 기호, 딩뱃, 고대 문자, 음악 기호, 게임 기호, 지리 기호처럼 분야로 잘라 두었습니다. “LaTeX 기호 목록에 고대 문자와 게임 장이 있다”는 말은 농담처럼 들리지만, 이 판은 225종의 서체에서 글자를 모았으니 그 정도 폭은 자연스럽습니다. 분야로 범위를 좁힌 뒤 패키지별 표에서 명령 이름을 확인하는 것, 이것이 가장 짧은 길입니다.
# open the copy already installed with TeX Live / MiKTeX -- no network needed
texdoc comprehensive
# or name the PDF directly (symbols-letter for US Letter paper)
texdoc symbols-a4이 목록은 TeX Live에도 MiKTeX에도 동봉되어 있어 인터넷 없이 로컬에서 열 수 있습니다. 다만 실려 있다는 것과 바로 쓸 수 있다는 것은 다릅니다. 상당수 기호는 전용 글꼴이나 패키지를 따로 설치해야 비로소 조판되며, 문서 자체도 앞머리에서 이를 밝혀 둡니다. 실무에서 값어치를 하는 절이 하나 더 있는데, 뒤쪽의 “Symbol Name Clashes(명령 이름 충돌)”입니다. 기호 패키지 두 개를 동시에 불러오다 ! LaTeX Error: Command \... already defined를 만났을 때, 어느 패키지가 어떤 이름을 주장하는지 찾아볼 수 있는 곳은 여기뿐입니다.
Detexify — 기호를 그려서 LaTeX 명령 찾기
기호의 이름도 분야도 모르고 모양만 아는 상황, 곧 분야별 장 구성이 전혀 도움이 되지 않는 상황이 있습니다. Detexify는 바로 그것을 위해 만들어졌습니다. 칸 안에 마우스나 손가락으로 기호를 그리면 모양이 가까운 LaTeX 명령을 순서대로 늘어놓습니다. 착상은 Philipp Kühl, 구현은 Daniel Kirsch였습니다. Detexify는 만든 동기를 스스로 밝혀 두었는데, 그 원인이 바로 앞 절의 481쪽짜리 PDF입니다. 외우지 못한 기호를 symbols-a4.pdf에서 찾는 일은 시간이 너무 오래 걸린다는 것이었습니다. 기호 목록이 비대해진 끝에, 그 목록을 펼치지 않아도 되는 도구가 태어난 셈입니다.
속을 들여다보면 소박한 기계 학습입니다. Kirsch 자신의 설명에 따르면, 그린 획은 “위치와 시각을 가진 점들의 열(스트로크)”로 전송되고, 거기에서 획수, 점의 밀도, 방향 같은 특징이 추출됩니다. 분류는 k-최근접 이웃법입니다. 쌓인 필기 표본을 특징 공간에서의 거리 순으로 정렬한 뒤, 서로 다른 기호가 다섯 종류 모일 때까지 이웃을 세는 방식입니다. 통계에 기반하는 이상 한 번에 맞으리라는 보장은 없지만, 실무에서 고마운 점은 후보마다 필요한 패키지가 표시된다는 것입니다. 자형을 알아낸 순간 \usepackage 줄까지 정해집니다. 공식 사이트는 detexify.kirelabs.org이며, 학습 데이터는 공개되어 있어 누군가 정답을 확인할 때마다 다음 정확도가 조금씩 올라갑니다.
Too many math alphabets used in version normal이 나오면
기호 패키지를 계속 더하다 보면 언젠가 ! LaTeX Error: Too many math alphabets used in version normal.에서 조판이 멈춥니다. 원인은 기호의 개수가 아니라 수식 글꼴을 담을 “칸”의 개수입니다. LaTeX은 수식 글꼴을 열여섯 칸만 가질 수 있고(커널 파일 latex.ltx의 \e@mathgroup@top이 16), amssymb를 불러오기만 해도 AMSa와 AMSb로 두 칸, \mathfrak을 쓰면 한 칸이 더, 뒤에서 다룰 mathcomp의 \tcdigitoldstyle로 또 한 칸이 사라집니다. 16이라는 숫자는 TeX의 설계에서 곧바로 나옵니다. TeX은 수식 속 한 글자를 “클래스, 글꼴 칸, 위치”로 담아 나타내는데, 글꼴 칸에 배정된 것이 4비트, 곧 열여섯 가지이기 때문입니다.
해결책은 둘입니다. 하나는 불러오는 패키지를 줄이는 것입니다. 기호 패키지들은 칸뿐 아니라 명령 이름까지 다투며, amssymb 자신도 stix가 먼저 불려 있으면 자기가 불필요하다는 경고를 남기고 스스로 물러납니다. 다른 하나는 엔진을 바꾸는 것입니다. XeLaTeX과 LuaLaTeX에서는 상한이 256칸으로 올라가고, 여기에 Will Robertson 등의 unicode-math를 쓰면 셈법 자체가 달라집니다. OpenType 수식 글꼴 하나가 수천 개의 글리프를 품기 때문에, 기호를 더할 때마다 칸을 소비한다는 계산이 필요 없어집니다. 함께 들어 있는 unicode-math-table.tex는 Unicode 수식 문자 2,448개를 명령 이름에 대응시킨 표로, 예를 들어 U+2200은 \forall입니다. 다만 unicode-math는 pdfLaTeX에서는 동작하지 않습니다.
% XeLaTeX or LuaLaTeX only -- one OpenType font carries thousands of glyphs
\usepackage{unicode-math}
\setmathfont{latinmodern-math.otf}
% ...
\[ \forall \varepsilon > 0,\ \exists \delta > 0 \]수식 안에서 ℃·Ω·µ를 직립으로 조판하기(mathcomp / textcomp)
단위를 수식에 섞으면 기호 찾기와는 별개의 문제가 생깁니다. 수식 모드의 µ는 기울어진 변수로 조판되지만, 단위의 마이크로 접두어는 직립이어야 하기 때문입니다. 이를 바로잡는 작은 패키지가 mathcomp입니다. \usepackage{mathcomp}이라고 쓰면 \tcmu(µ), \tcohm(Ω), \tccelsius(℃) 같은 명령을 수식 모드에서 쓸 수 있습니다. 이름 규칙은 단순합니다. 텍스트 모드 쪽의 \textmu, \textdegree에서 text를 tc(text companion)로 바꾸면 됩니다.
tc의 유래는 TS1(Text Companion) 인코딩입니다. 예전에는 본문에서 \textdegree(°)나 \textperthousand(‰)를 내려면 \usepackage{textcomp}가 필수였지만, LaTeX News 31이 전하듯 2020년 릴리스에서 TS1 기호가 커널에 편입되어 이제는 textcomp를 불러오지 않아도 본문에서 쓸 수 있습니다. 그래도 textcomp에는 남은 역할이 있습니다. \usepackage[error]{textcomp}나 [warn]으로 쓰면, 글꼴에 글자가 없어 대체가 일어날 때 LaTeX 오류나 경고로 알려 줍니다. 반면 수식 모드 쪽은 같은 방식으로 자동화되지 않았기 때문에, 수식 안에 직립 단위 기호를 넣으려면 지금도 mathcomp가 필요합니다.
| 명령(mathcomp) | 자형 | 의미 |
|---|---|---|
\tcohm | Ω | 옴(저항 단위); 직립 |
\tcmu | µ | 마이크로 기호(µm의 µ); 직립 |
\tcdegree | ° | 도 기호 |
\tccelsius | ℃ | 섭씨도(\tccentigrade도 동의어) |
\tcperthousand | ‰ | 퍼밀(천분율) |
\tcpertenthousand | ‱ | 만분율(베이시스 포인트) |
\usepackage{mathcomp} % loads textcomp and adds the \tc... commands for math mode
% ...
\[ R = 4.7\,\mathrm{k}\tcohm, \qquad d = 25\,\tcmu\mathrm{m}, \qquad T = 37\,\tccelsius \]mathcomp이 제공하는 것은 이 여섯 기호에 올드스타일 숫자용 \tcdigitoldstyle{0} … \tcdigitoldstyle{9}을 더한 작은 집합이며, 옵션으로 서체도 고를 수 있습니다(\usepackage[ppl]{mathcomp}이면 Palatino의 TC 글꼴). 주의할 점이 하나 있습니다. \tcohm(Ω)은 그리스 대문자 \Omega와 다른 글자이며, 단위로 옳은 쪽은 앞의 것입니다. 앞서의 칸 계산도 여기서 그대로 작용합니다. \tcdigitoldstyle은 수식 글꼴 칸을 하나 차지하므로, 기호 패키지를 잔뜩 쌓아 둔 문서에서는 이것이 마지막 한 방이 될 수 있습니다. 단위를 본격적으로 조판한다면 기호를 하나씩 주워 모으기보다 siunitx에 맡기는 편이 빠르며, 수치와 단위 사이의 간격이나 복합 단위의 조립까지 돌봐 줍니다(“단위(siunitx)” 페이지 참조).