저작권 기호 ©, 등록상표 ®, 단락 기호 ¶, 절 기호 §, 퍼밀 ‰, 섭씨 ℃ — LaTeX에서 이런 텍스트 기호를 내려면 오랫동안 \usepackage{textcomp}가 필요하다고 배워 왔습니다. 그 상식은 2020년 2월 2일 커널 갱신으로 끝났습니다. TS1(Text Companion) 인코딩의 기호 일체가 LaTeX 본체에 들어갔고, TeX Live 2024에서 시험하면 \textcopyright도 \texttrademark도 \textcelsius도 전처리부에 패키지 한 줄 없이 나옵니다. 그뿐 아니라 textcomp.sty 자체가 기호를 하나도 정의하지 않는 “옵션만 있는 패키지”가 되었습니다. 이 페이지는 지금 무엇이 표준으로 나오고 무엇에 패키지가 필요한지를 실측으로 확인하면서, \S・\P 무리, 트럼프 무늬 ♠ ♥ ♦ ♣, pifont의 \ding 번호표, fontawesome5의 아이콘, 그리고 일본어 원문자와 이체자까지 정리합니다.
\usepackage{textcomp}는 이제 필요 없다 — 2020년에 TS1이 커널로 들어갔다
TeX Live 2024에서 패키지를 하나도 불러오지 않고 © ® ™ ℠ € ¢ ¥ £ ‰ ° ℃ • ¶ § ¦ ♪ ℮ ¤ № ※ ‽ Ω µ ₩ ₤ ƒ ₦ 를 모두 조판해 보면 경고도 오류도 한 줄 나오지 않습니다. 이유는 textcomp.sty를 열어 보면 압니다. 첫머리는 \ProvidesPackage{textcomp}[2020/02/02 v2.0n]이고, 본문은 full, almostfull, euro, safe, error, warn, info, quiet, force 같은 옵션 선언뿐입니다. 기호 정의는 하나도 남아 있지 않습니다. 전부 latex.ltx로 옮겨 갔습니다.
이 이동은 단순한 정리가 아니라 출력 자체를 고쳤습니다. 2020년 이전에는 \textbullet, \textdagger, \textsection, \textparagraph, \textperiodcentered 등의 기본값이 TS1이 아니라 OMS, 곧 수식 기호 글꼴이었습니다. 즉 본문의 §가 몰래 수식 글꼴에서 빌려 온 글자였던 것입니다. 차이는 잴 수 있습니다. Helvetica를 본문 서체로 삼은 문서에서 \textsection의 폭은 5.55994pt(Helvetica 자체의 §)이고, 옛 구현에 해당하는 \textlegacysection은 4.44447pt(Computer Modern의 수식 §)입니다. \textbullet에서는 3.5pt 대 5.00002pt로 더 벌어집니다. 호환을 위한 우회로도 남아 있어, \UseLegacyTextSymbols를 부르면 한꺼번에 옛 동작으로 돌아가고, \textlegacybullet처럼 기호별 명령도 마련되어 있습니다.
\documentclass{article}
% no \usepackage{textcomp} needed since the 2020-02-02 kernel
\begin{document}
Foo\textregistered{} is a trademark of Bar Inc.\texttrademark
\textcopyright\ 2026 \quad 40\textperthousand \quad 25\textcelsius \quad 90\textdegree
\end{document}© ® ™ 내기 — \copyright와 \textcopyright의 차이
본문에서는 둘 다 같은 ©가 나옵니다. 차이는 수식 모드에 들어갔을 때의 행동입니다. latex.ltx의 정의는 \DeclareRobustCommand{\copyright}{\ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi} 입니다. 즉 \copyright는 모드를 보고 스스로 전환하는 “양용” 명령이고, \textcopyright는 텍스트 전용입니다. 같은 구조의 명령이 \pounds(£)에도 있고, 이쪽은 수식에서 \mathsterling으로 바뀝니다. 실무에서는 본문에서 어느 쪽이든 되고, 맥락을 알 수 없는 곳(예: 매크로 안)에서는 \copyright가 더 안전하다고 기억해 두면 충분합니다.
\texttrademark의 기본 구현도 볼 만합니다. latex.ltx에는 \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}가, 그리고 \textcircled{...}을 쓰는 \textregistered 정의가 아직 남아 있습니다. TS1에 닿지 못하는 글꼴 환경에서는 ™가 진짜 글리프가 아니라 T와 M을 위첨자로 올린 가짜가 되고, ®는 원을 겹친 합성이 된다는 뜻입니다. 2020년 이후로는 기본값이 TS1로 바뀌어 평소에는 볼 일이 없지만, TS1 글리프가 없는 서체를 지정하면 이 옛 구현이 얼굴을 내밉니다. 또한 명령 뒤의 공백은 제어 단어가 먹어 버리므로, 낱말 중간에서는 \textregistered{}처럼 빈 중괄호를 붙이거나 \ 를 넣습니다.
| 명령 | 기호 | 의미 | 비고 |
|---|---|---|---|
\textcopyright | © | 저작권 | \copyright는 수식 모드에서도 쓰이는 양용판 |
\textregistered | ® | 등록 상표 | TS1에 닿지 못하면 \textcircled 합성이 됨 |
\texttrademark | ™ | 상표 | 기본 대체는 가짜인 \textsuperscript{TM} |
\textservicemark | ℠ | 서비스 마크 | 상품이 아닌 용역에 대한 표시. 주로 미국 |
\texteuro | € | 유로 | 자형을 통일하려면 아래 eurosym의 \euro |
\textcent | ¢ | 센트 | \textsterling는 £, \textyen은 ¥ |
\textperthousand | ‰ | 퍼밀(천분율) | 만분율 ‱는 \textpertenthousand |
\textdegree | ° | 도(각도 / 온도) | 수치에 붙일 때는 siunitx의 \ang / \qty가 확실 |
\textcelsius | ℃ | 섭씨도 | ℃ 합자. Computer Modern에는 수록되어 있음 |
\textnumero | № | 번호 기호 | 러시아어・프랑스어의 “제 n 호” |
\textmusicalnote | ♪ | 8분음표 | 본문용. 악보 조판은 다른 이야기 |
\textbrokenbar | ¦ | 끊어진 세로줄 | \textbardbl은 이중 세로줄 ‖. 둘 다 수식의 세로줄과는 별개 |
\textestimated | ℮ | 추정 기호 | EU 포장 표시의 e 마크 |
\textinterrobang | ‽ | 인터러뱅 | ?! 합자. cmr에는 있으나 많은 서양 서체에는 없음 |
\textcircled{a} | ⓐ | 원 안의 글자 | 합성. Computer Modern에서는 원을 겹쳐 만듦 |
§ 와 ¶ 와 † — \S \P \dag는 수식 모드에서도 동작한다
이 넷은 기호 가운데 드물게 모드를 스스로 판정하는 명령입니다. latex.ltx의 정의를 그대로 읽을 수 있습니다. \DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}, \DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}. 그래서 법령의 조 번호 \S 3을 본문에 써도, 각주 기호로 수식 안에 x^\dag를 써도 둘 다 통합니다. \dag(†)와 \ddag(‡)도 같은 구조이며 수식에서는 \dagger・\ddagger로 바뀝니다. \S는 “절 기호”이지 “장”이 아닙니다. 법률 인용이나 표준 문서에서 조항을 가리키는 표준 기호이고, 둘을 겹친 \S\S는 여러 조를 나타내는 관용입니다.
| 명령 | 기호 | 텍스트 / 수식 | 비고 |
|---|---|---|---|
\S | § | 둘 다 | 절 기호. \textsection은 텍스트 전용 동의어 |
\P | ¶ | 둘 다 | 단락 기호(필크로). \textparagraph도 같음 |
\dag | † | 둘 다 | 단검표. 수식에서는 \dagger로 바뀜 |
\ddag | ‡ | 둘 다 | 이중 단검표. 수식에서는 \ddagger |
\copyright | © | 둘 다 | 수식에서는 \nfss@text로 텍스트로 되돌려 조판 |
\pounds | £ | 둘 다 | 수식에서는 \mathsterling(수식 이탤릭의 £) |
Symbol \textohm not provided by font family cmr in TS1 encoding. 읽는 법
이 경고는 “그 기호가 본문 서체에 없어서 다른 서체에서 빌려 조판했다”는 보고입니다. TS1에는 128개 남짓의 자리가 있지만, 그것을 모두 채운 서양 서체는 극히 일부입니다. 그래서 LaTeX은 각 서체가 구현한 범위를 \DeclareEncodingSubset으로 번호 붙여 관리합니다. latex.ltx의 실제 값을 보면 Computer Modern(cmr)은 0번, 곧 전부 있음, Latin Modern(lmr)은 1, Helvetica(phv)와 Courier(pcr)는 5(주석에 blank・interrobang・ohm이 두부 글자라고 적혀 있습니다), 그리고 알 수 없는 서체는 9, 곧 최소한입니다. 요청한 기호가 그 범위를 벗어나면 대체 서체로 바꿔 조판하고 이 경고를 냅니다.
여기서야 비로소 textcomp가 할 일이 생깁니다. 기본값에서 이 보고는 경고조차 아니고, 로그에만 남는 \@latex@info입니다. \usepackage[warn]{textcomp}를 붙이면 진짜 경고로 격상되고, [error]면 오류, [quiet]면 완전히 침묵합니다. 서체를 바꾼 원고를 교정할 때는 먼저 [warn]을 붙여 한 번 돌리면, 어떤 기호가 다른 서체로 조판되고 있는지 한눈에 보입니다. 참고로 \textbackslash・\textbar는 TS1이 아니라 기본값이 OMS(수식 기호 글꼴)이며, T1을 불러와야 비로소 본문 서체의 글자가 됩니다. \textasciitilde는 한술 더 떠서, 기본 구현이 “빈 글자 위에 물결표를 올리는” 합성입니다.
% textcomp defines no symbols any more — it only sets the reporting policy
\usepackage[warn]{textcomp}
% options: full / almostfull / euro / safe / error / warn / info / quiet / force
%
% Package textcomp Warning: Symbol \textohm not provided by
% (textcomp) font family cmr in TS1 encoding.
% (textcomp) Default family used instead on input line 5.유로 기호만은 전용 패키지가 지금도 현역입니다. \usepackage{eurosym}을 불러오면 \euro를 쓸 수 있고, official・gen 같은 옵션으로 유럽위원회의 공식 디자인에 가까운 자형을 고를 수 있습니다. 다만 TeX Live 2024에서 eurosym의 \euro가 든 PDF에서 글자를 뽑으면 e 한 글자로 추출됩니다(\texteuro라면 €가 그대로 돌아옵니다). 보기에는 좋아도 복사와 검색을 통과해야 하는 문서라면 \texteuro가 실용적입니다.
트럼프 무늬 ♠ ♥ ♦ ♣ 와 △ □ ◇ 내기
무늬는 표준 LaTeX의 수식 기호입니다. 패키지가 필요 없습니다. fontmath.ltx에 \DeclareMathSymbol{\clubsuit}{\mathord}{symbols}{"7C}부터 \spadesuit까지 넷이 나란히 있어서, 수식 모드에서 $\clubsuit$ $\diamondsuit$ $\heartsuit$ $\spadesuit$라고 쓰기만 하면 됩니다. \triangle(△)도 같은 자리의 주민입니다. 다만 Computer Modern의 무늬는 클로버와 스페이드가 검게 칠해지고 하트와 다이아가 속 빈 비대칭 조합(♣ ♢ ♡ ♠)이라, 채워진 하트나 다이아는 표준으로는 낼 수 없습니다. 텍스트 모드에서 넷을 고르게 갖추고 싶다면 다음 절 pifont의 \ding{168}~\ding{171}이 답입니다.
사각형과 마름모는 어느 패키지에 들어 있는지 가장 헷갈리는 대목입니다. TeX Live 2024의 소스를 보면 답이 분명합니다. \Box(□)와 \Diamond(◇)는 latexsym의 lasy 글꼴에서 오고(latexsym.sty에 \DeclareMathSymbol\Box{\mathord}{lasy}{"32}), amssymb에는 없습니다. amssymb가 가진 것은 \square・\lozenge와 그 채운 형태 \blacksquare・\blacklozenge(AMSa 글꼴)입니다. 요약하면 \Box는 latexsym, \square는 amssymb입니다. 체크 표시 \checkmark와 몰타 십자 \maltese는 amsfonts의 정의이며, amssymb를 불러오면 함께 옵니다.
| 명령 | 기호 | 패키지 | 비고 |
|---|---|---|---|
\clubsuit \spadesuit | ♣ ♠ | 표준(불필요) | 검게 칠해짐. 수식 모드에서 사용 |
\heartsuit \diamondsuit | ♡ ♢ | 표준(불필요) | 속 빈 형태. 채운 형태는 표준으로 낼 수 없음 |
\triangle | △ | 표준(불필요) | \triangleq(≜) 등과는 다른 명령 |
\Box \Diamond | □ ◇ | latexsym | 양상 논리의 필연・가능. amssymb가 아님 |
\square \lozenge | □ ◊ | amssymb | 채운 형태는 \blacksquare・\blacklozenge |
\checkmark \maltese | ✓ ✠ | amssymb | 실체는 amsfonts의 정의. 수식 모드에서 사용 |
여기서도 PDF에 남는 것에 주의해야 합니다. latexsym이 쓰는 lasy 글꼴에는 Unicode 대응표가 없어서, TeX Live 2024에서 $\Box \Diamond \mho \Join$을 조판한 PDF에서 글자를 뽑으면 2 3 0 1이라는 숫자열이 돌아옵니다. 독자가 본문을 복사해 검색할 가능성이 있는 문서라면, 뜻이 허락하는 한 amssymb의 \square・\lozenge를 고르는 편이 안전합니다. 또한 latexsym은 AMS 글꼴이 이미 준비되어 있으면 첫머리에서 \endinput하고 아무 일도 하지 않도록 쓰여 있다는 점을 알아 두면, 패키지 불러오는 순서로 고민하지 않아도 됩니다.
\usepackage{amssymb} % \square \lozenge \blacksquare \checkmark
\usepackage{latexsym} % \Box \Diamond \mho \Join
\usepackage{pifont} % \ding{168}--\ding{171}: solid suits in TEXT mode
% ...
Math: $\clubsuit\, \diamondsuit\, \heartsuit\, \spadesuit\, \triangle$
Text: \ding{168}\ding{169}\ding{170}\ding{171}pifont의 \ding{번호} — 실제로 컴파일해 확인한 번호표
체크 표시, 가위, 별, 가리키는 손 같은 그림 기호는 Zapf Dingbats 글꼴에 모여 있고, \usepackage{pifont} 뒤에 \ding{NN}처럼 번호로 부릅니다. 번호는 외울 것이 아니라 찾아볼 것이지만, 인터넷에 도는 대응표들이 서로 어긋나므로 TeX Live 2024에서 32~126과 161~254를 전부 조판해 pdftotext로 확인했습니다. 자주 쓰이는 것을 꼽으면 \ding{51}이 ✓(가는 체크), \ding{52}가 ✔(굵은 체크), \ding{53}이 ✕, \ding{55}가 ✗(투표용 엑스), \ding{56}이 ✘(굵은 엑스)입니다. 별 ★는 \ding{72}이고, \ding{43}은 ☞(오른쪽을 가리키는 손), \ding{164}는 ❤(채워진 하트)입니다.
| 형식 | 나오는 것 | 번호대 | 비고 |
|---|---|---|---|
\ding{51} \ding{52} | ✓ ✔ | 51–56 | 가는 체크와 굵은 체크. 53–56은 ✕ ✖ ✗ ✘ |
\ding{43} | ☞ | 42–43 | 42는 왼쪽을 가리키는 ☛ |
\ding{72} | ★ | 65–107 | 별과 꽃의 큰 구간. ★는 72 |
\ding{168} | ♣ | 168–171 | ♣ ♦ ♥ ♠ 순서. 텍스트 모드의 채운 무늬 |
\ding{164} | ❤ | 161–167 | 채워진 하트. 165–167은 ❥ ❦ ❧ |
\ding{172} | ① | 172–211 | 172–181이 ①–⑩, 182–191이 ❶–❿ |
\ding{213} | → | 212–254 | 화살표 구간. 214는 ↔, 215는 ↕ |
\dingline{56} | 그 기호를 늘어놓은 장식선 | — | \dingfill{NN}은 기호로 채우는 \hfill |
dinglist | 머리 기호가 dingbat인 목록 | — | dingautolist는 항목마다 번호를 하나씩 올림 |
\Pisymbol{psy}{NN} | Symbol 글꼴의 글리프 | — | ZapfDingbats 이외의 Pi 글꼴을 부르는 범용 명령 |
\usepackage{pifont}
% ...
\ding{51}\ pass \qquad \ding{55}\ fail \qquad \ding{72}\ starred
\dingline{56} % a rule made of that symbol
\begin{dingautolist}{172} % numbers step: (1) (2) (3) ...
\item first step
\item second step
\end{dingautolist}fontawesome5의 아이콘 — \faGithub와 \faIcon{github}
브랜드 로고나 톱니바퀴・봉투・전화 같은 UI 아이콘을 본문에 넣으려면 \usepackage{fontawesome5}입니다. 호출 방식은 둘로, 아이콘 이름을 camel case로 바꾸고 앞에 fa를 붙인 전용 명령(\faGithub, \faEnvelope, \faAddressBook)이나, 공식 이름을 중괄호로 넘기는 범용 명령 \faIcon{github}입니다. 스타일은 solid(기본 채움)・regular(윤곽선)・brands(로고) 세 가지이고, \faIcon[regular]{heart}처럼 선택 인수로 고릅니다(브랜드 로고는 자동으로 brands 취급). 엔진 의존이 한 가지 있습니다. pdfLaTeX에서도 무료 세트(Font Awesome 5 Free)는 쓸 수 있지만, 전체 아이콘과 모든 스타일, 그리고 유료 Pro 세트에는 XeLaTeX나 LuaLaTeX가 필요합니다.
\usepackage{fontawesome5}
% ...
Source: \faGithub\ github.com/example \quad \faEnvelope\ mail@example
\faIcon{rocket} \quad \faIcon[regular]{heart} % outlined style
\faCog \quad \faCheck \quad \faPython일본어 원문자와 이체자 — otf의 \ajMaru와 \UTF
일본어 조판에서는 원문자 ①②③, 사각형 안의 숫자, 로마 숫자 Ⅰ Ⅱ Ⅲ, 그리고 인명에 나타나는 이체자(﨑, 髙, 𠮷)를 내야 할 때가 있습니다. 이를 담당하는 것이 otf(japanese-otf) 패키지로, \usepackage{otf}를 불러오면 Adobe-Japan1 글리프를 부르는 명령군을 쓸 수 있습니다. 원형・사각형 숫자는 숫자를 인수로 넘기기만 하면 됩니다. \ajMaru{3}가 ③, \ajKaku{3}가 사각형, \ajKuroMaru{3}가 검은 바탕에 흰 숫자, \ajRoman{3}가 Ⅲ, \ajroman{3}가 ⅲ, \ajKakko{3}가 (3)입니다. 전용 명령이 없는 글리프는 코드 포인트로 직접 부르는 \UTF{XXXX}(4~5자리 16진수)나 Adobe-Japan1의 CID를 지정하는 \CID{번호}로 꺼냅니다.
주의할 것은 엔진입니다. otf는 pLaTeX / upLaTeX 전용이며 DVI를 거쳐 dvipdfmx로 PDF를 만드는 경로를 전제로 합니다. pdfLaTeX에서는 동작하지 않습니다. LuaLaTeX에서는 luatexja-otf, XeLaTeX에서는 zxotf가 같은 역할을 합니다. 패키지 자체에도 deluxe(다중 굵기), expert(세로쓰기・가로쓰기에서 자형을 바꿈), jis2004(JIS2004 자형) 같은 옵션이 있습니다. 또한 원문자만 필요하다면 엔진을 가리지 않는 다른 방법이 앞 절에 있습니다. pifont의 \ding{172}~\ding{181}이 ①~⑩을 내므로 pdfLaTeX 문서에서도 쓸 수 있습니다.
% pLaTeX / upLaTeX only; produce the PDF with dvipdfmx
\documentclass{ujarticle}
\usepackage[deluxe]{otf}
\begin{document}
\ajMaru{1}\ajMaru{2}\ajMaru{3} \quad \ajKakko{1} \quad \ajRoman{3}
\UTF{FA11} % a variant kanji, called by code point
\CID{13706} % or by Adobe-Japan1 CID
\end{document}정리하면 분담은 이렇습니다. 서양식 기호(© ® ™ € § ¶ ‰ ° ℃)는 표준 LaTeX입니다. 2020년 이후 textcomp는 대체 보고를 받고 싶을 때만 필요합니다. 트럼프 무늬와 △도 표준이고, □ ◇는 latexsym, \square 계열은 amssymb입니다. 그림 기호는 pifont의 \ding을 번호로, UI와 브랜드 아이콘은 fontawesome5, 일본어 원문자와 이체자는 otf의 \ajMaru・\UTF가 담당합니다. 헷갈리기 쉬운 것은 엔진 하나뿐입니다. textcomp(곧 커널)와 pifont는 어디서나 동작하고, fontawesome5의 전체 기능은 Unicode 엔진에서, otf는 pLaTeX / upLaTeX에 한정됩니다.