\'e라고 치면 é, \"o라고 치면 ö가 나옵니다. LaTeX의 accent 명령——어큐트, 움라우트, 물결표, 하체크——은 이름이 단 한 글자이고, 그 한 글자가 문장 부호 자체입니다. LaTeX에서 이렇게 이름 붙은 것은 이것뿐입니다. é를 바로 입력할 수 없는 자판밖에 없던 시절의 설계이고, 그 아래에는 커누스가 plain TeX에 써 넣은 \accent 프리미티브가 있습니다. 이 페이지는 각 명령이 실제로 무엇을 내는지 찾아보는 목록입니다. 텍스트용 accent 명령 16개, accent가 아닌 글자(\ss, \ae, \oe, \aa, \l), 점 없는 \i와 \j, 그리고 수식용 \hat, \bar, \vec, \dot를 다룹니다. 표로는 보이지 않는 이야기도 함께 다룹니다. fontenc에서 T1을 고르느냐에 따라 조판할 수 있는 기호뿐 아니라 accent가 붙은 단어를 하이픈으로 나눌 수 있는지까지 달라집니다. 이를 주장이 아니라 실측으로 보입니다.
16개의 accent 명령과 각각이 내는 글자
텍스트 모드의 accent는 16종이며, 모두 한 글자를 인수로 받는 명령입니다. \'o처럼 바로 이어 써도, \'{o}처럼 중괄호로 감싸도 같은 글자가 나옵니다. 글자 위에 올라가는 11개(어큐트, 그레이브, 서컴플렉스, 트레마, 물결표, 매크론, 윗점, 브레베, 하체크, 이중 어큐트, 링)는 커누스의 plain TeX에 그대로 들어 있고 \accent 프리미티브로 조판됩니다. 아래에 붙는 \c(세디유), \d(아랫점), \b(아랫줄), 두 글자에 걸치는 \t(타이), 그리고 \k(오고네크)만 계통이 다릅니다.
| 명령 | 나오는 글자 | 이름 | 비고 |
|---|---|---|---|
\'o | ó | 어큐트 | OT1・T1 모두 가능 |
\`o | ò | 그레이브 | 백슬래시 뒤에 백틱 |
\^o | ô | 서컴플렉스 | 프랑스어의 â ê î ô û |
\"o | ö | 움라우트 / 트레마 | 독일어 ä ö ü, 프랑스어 ë ï |
\~n | ñ | 물결표 | 스페인어 ñ, 포르투갈어 ã õ |
\=o | ō | 매크론(장음 부호) | 로마자 표기와 사전의 장모음 |
\.o | ȯ | 윗점 | 폴란드어 ż, 리투아니아어 |
\u o | ŏ | 브레베(단음 부호) | 루마니아어 ă, 운율 표기 |
\v c | č | 하체크(카론) | 체코어 č š ž |
\H o | ő | 이중 어큐트 | 헝가리어 ő ű, 이른바 “헝가리 움라우트” |
\r o | o̊ | 링(윗동그라미) | \r a는 å. \aa와 같은 글자 |
\c c | ç | 세디유(아래) | 프랑스어 ç, 튀르키예어 ç ş |
\d o | ọ | 아랫점 | 겹쳐 찍어 만들며 글꼴의 한 글자가 아님 |
\b o | o̲ | 아랫줄(바) | 역시 겹쳐 찍음. 전사 표기에 사용 |
\t oo | o͡o | 두 글자에 걸치는 타이 | TS1/OML에서 가져오는 유일한 accent. 두 글자를 받음 |
\k a | ą | 오고네크(아래 꼬리) | T1에서만 사용 가능. 폴란드어 ą ę |
% braces are optional for a single letter, required for a command
r\'esum\'e, na\"ive, se\~nor, G\"odel, \c{c}a va, \H{o}r\'an
% two-letter argument: the tie accent
t\t{oo}kCommand \k unavailable in encoding OT1. 이 나온다면
이 오류는 요청한 accent가 지금 적용된 글자 인코딩에 없다는 뜻입니다. pdfLaTeX의 기본값은 1980년대의 OT1 인코딩이고, \k(오고네크)는 거기에 없습니다. 해결책은 한 줄, 전처리부에 \usepackage[T1]{fontenc}을 넣는 것입니다. OT1에서 같은 오류를 내는 명령은 더 있습니다. TeX Live 2024에서 실제로 시험하면 \dj・\DJ(크로아티아어 đ), \th・\TH(아이슬란드어 þ), \dh・\DH(ð), \ng・\NG(ŋ)가 모두 똑같은 문구로 멈춥니다.
\documentclass{article}
\usepackage[T1]{fontenc} % without this, \k \dj \th \dh \ng all error
\begin{document}
Polish: j\k{e}zyk. \quad Croatian: \dj\ \quad Icelandic: \th\ \dh
\end{document}다만 진짜 대가는 오류가 나는 기호가 아니라 오류가 나지 않는 기호 쪽에 있습니다. OT1에는 é라는 한 글자가 없으므로 LaTeX은 \accent로 “어큐트를 e 위에 올린다”는 합성을 만듭니다. 그런데 TeX에게 \accent는 합자와 커닝의 연쇄가 끊기는 경계입니다. 실측하면 OT1에서 AV는 13.8889pt, \'AV(Á 다음 V)는 15.00003pt입니다. A와 V 사이의 1.11113pt 커닝이 통째로 사라진 것입니다. T1에서는 Á가 한 글자 글리프이므로 AV와 \'AV 모두 13.8855pt로 같습니다.
하이픈 넣기에서는 차이가 더 뚜렷합니다. \showhyphens{universit\'e r\'esum\'e}를 돌리면 OT1에서는 uni-ver-sité résumé가 나오고, résumé에는 분할점이 하나도 생기지 않습니다. 같은 입력을 T1로 컴파일하면 uni-ver-sité ré-sumé가 됩니다. accent가 많은 문서——프랑스어, 폴란드어, 체코어, 또는 인명에만 accent가 붙는 영어 논문——에서 행 끝이 보기 흉하게 벌어진다면 원인은 대개 여기에 있습니다. 뒤집어 말하면 pdfLaTeX으로 서양 문자를 조판한다면 \usepackage[T1]{fontenc}은 장식이 아니라 필수입니다.
점 없는 \i・\j가 실제로 필요한 것은 16개 중 7개뿐
결론부터 말하면 \"{\i}라고 쓸 일은 거의 없습니다. ot1enc.def와 t1enc.def를 보면 어큐트・그레이브・서컴플렉스・트레마・윗점의 다섯 accent에 대해서는 LaTeX이 인수의 i를 점 없는 i로 알아서 바꿔 주는 선언(\DeclareTextComposite / \DeclareTextCompositeCommand)이 들어 있습니다. 실제로 TeX Live 2024에서 조판하면 \"i와 \"{\i}가 모두 폭 3.33252pt의 똑같은 ï가 됩니다. 직접 \i를 써야 하는 것은 나머지 일곱, 곧 \~, \=, \u, \v, \H, \r, \k입니다.
% the dot is removed automatically for these five
na\"ive \quad \'idem \quad \`ile \quad \^ile \quad \.i
% here you must ask for the dotless letter yourself
\v{\i} \quad \u{\i} \quad \={\i} \quad \~{\i} \quad \H{\j}\i와 \j는 accent의 일부가 아니라 그 자체로 하나의 글자입니다. OT1에서는 16번・17번, T1에서는 25번・26번 자리에 있으며, \i만 쓰면 ı(점 없는 i)가 나옵니다. 튀르키예어처럼 점 없는 i가 독립된 글자인 언어에서는 이것이 장식이 아니라 철자의 일부입니다. 수식 모드에서 같은 일을 하려면 이름도 다르고 모드도 다른 \imath・\jmath를 씁니다.
\ss \ae \oe \o \aa \l — accent이 아니라 “글자”
이 무리는 인수를 받지 않습니다. ß, æ, ø, ł은 accent가 붙은 모음이 아니라 각 언어에서 독립된 한 글자이기 때문입니다. 대문자는 이름의 첫 글자를 대문자로 바꾸면 됩니다(\AE, \OE, \O, \AA, \L). 다만 \SS만은 예외로, TeX Live 2024에서 OT1이든 T1이든 ß의 대문자가 아니라 “SS” 두 글자가 나옵니다(latex.ltx의 기본값이 그대로 \DeclareTextCommandDefault{\SS}{SS}입니다). 독일어 대문자 에스체트 ẞ가 필요하다면 그 글자를 가진 글꼴을 Unicode 엔진에서 쓰는 편이 확실합니다.
| 명령 | 나오는 글자 | 언어 | 비고 |
|---|---|---|---|
\ss | ß | 독일어 | \SS는 ẞ가 아니라 SS 두 글자 |
\ae | æ | 덴마크어, 고대 영어 | 대문자는 \AE |
\oe | œ | 프랑스어 | cœur, sœur. 대문자는 \OE |
\o | ø | 덴마크어, 노르웨이어 | 대문자는 \O. 수식의 \emptyset과는 다름 |
\aa | å | 스웨덴어, 노르웨이어 | \r a와 같은 글자. 대문자는 \AA |
\l | ł | 폴란드어 | OT1에서는 그려서 만듦. T1에서야 진짜 한 글자 |
\dj | đ | 크로아티아어, 베트남어 | T1 필요. 대문자는 \DJ |
\th | þ | 아이슬란드어 | T1 필요. \dh는 ð, \ng는 ŋ |
\ij | ij | 네덜란드어 | ij 합자. 대문자는 \IJ |
\l의 처리는 이 장에서 유일하게 PDF 내부에까지 영향을 주는 차이입니다. OT1의 \l은 진짜 ł가 아니라 l 위에 짧은 사선을 겹쳐 그린 합성이라, TeX Live 2024로 조판한 PDF를 pdftotext에 넣으면 그냥 l로 추출됩니다. T1에서는 170번에 진짜 ł가 있으므로 검색도 복사도 제대로 됩니다. 같은 일이 아래쪽 accent인 \d・\b에도 일어나서 \d o(ọ)는 o.로 빠져나옵니다. 본문이라면 보기에 맞으면 되지만, 서지 데이터나 검색 대상이 되는 낱말에서는 문제가 됩니다.
본문에 \hat{x}를 쓰면 ! Missing $ inserted. — 수식 accent는 별개
텍스트용과 수식용 accent는 이름도 구현도 완전히 별개이며, 경계를 넘으면 양쪽 방향 모두 오류가 납니다. 게다가 문구가 달라서 원인을 가리는 데 쓸 수 있습니다. 본문에 \hat{x}라고 쓰면 ! Missing $ inserted.가, 반대로 수식 안에 $\'e$라고 쓰면 ! Please use \mathaccent for accents in math mode. 가 나옵니다(둘 다 TeX Live 2024에서 확인). 앞의 것은 TeX이 친절하게 수식 모드를 열려다 실패한 것이고, 뒤의 것은 “그 accent는 텍스트용이다”라고 콕 집어 알려 주는 것입니다.
| 명령 | 모양 | 전형적 용도 | 비고 |
|---|---|---|---|
\hat{x} | 산 모양 | 추정량, 단위벡터 | 폭에 맞춰 늘어나는 것은 \widehat |
\tilde{x} | 물결 | 근삿값, 변환된 양 | 늘어나는 것은 \widetilde |
\bar{x} | 짧은 가로줄 | 표본 평균, 복소켤레 | 식 전체에 걸치려면 \overline |
\vec{v} | 작은 오른쪽 화살표 | 벡터량 | \vec{AB}는 늘어나지 않음. \overrightarrow를 사용 |
\dot{x} | 점 하나 | 1차 시간 미분 | 뉴턴 이래 역학의 표기 |
\ddot{x} | 점 두 개 | 2차 시간 미분 | 가속도 |
\dddot{x} | 점 세 개 | 3차 시간 미분 | amsmath 필요. \ddddot는 점 네 개 |
\acute{x} | 어큐트 | 언어학, 드물게 수식 | 텍스트의 \'와 같은 모양 |
\grave{x} | 그레이브 | 언어학, 드물게 수식 | 텍스트의 그레이브와 같은 모양 |
\check{x} | v 모양(하체크) | 기하와 대수의 표지 | Čech 코호몰로지의 Č 등 |
\breve{x} | 그릇 모양(브레베) | 기하와 대수의 표지 | \check과 짝지어 쓰는 일이 많음 |
\mathring{x} | 작은 원 | 기하 기호, 내부(개핵) | \r의 수식판에 해당 |
\usepackage{amsmath} % \dddot, \ddddot
\[
\dot{x}, \quad \ddot{x}, \quad \bar{x}, \quad \hat{p},
\quad \tilde{a}, \quad \vec{v}, \quad \check{s}, \quad \mathring{r},
\quad \hat{\imath}, \quad \vec{\jmath}
\]실무상 주의할 점이 둘 있습니다. 첫째, accent는 깔끔하게 쌓이지 않습니다. \hat{\vec{x}}처럼 두 겹을 올리면 위쪽 표지가 떠 보이거나 중심에서 어긋나기 쉽습니다. 점만 늘리고 싶다면 \ddot / \dddot / \ddddot를 쓰고, 정말로 겹쳐야 한다면 다음 페이지의 \overset으로 명시적으로 조립하는 편이 안전합니다. 둘째, amsmath의 \dddot는 위첨자 안에서 줄어들지 않습니다. 실측하면 $x^{\ddot a}$가 10.55292pt인 데 비해 $x^{\dddot a}$는 16.21565pt로, 점 세 개가 본문 크기 그대로 올라가 있습니다. 이 증상을 만나면 mathdots 패키지를 불러오면 해결됩니다.
\'e로 칠 것인가, é를 직접 칠 것인가
T1을 불러왔다면 어느 쪽으로 써도 출력은 같습니다. 실측에서도 \'e, \'{e}, 직접 입력한 é 세 가지가 모두 폭 4.44336pt로 같은 한 글자 글리프가 됩니다. 게다가 LaTeX은 2018년부터 UTF-8 입력을 기본으로 삼으므로 inputenc 지정도 필요 없습니다. 읽기 좋은 원고를 원한다면 직접 입력이 유리합니다. 그럼에도 명령 표기가 남는 곳은 대체로 셋입니다. ASCII를 요구하는 투고 규정, .bib 파일의 인명, 그리고 tabbing 환경입니다. tabbing 안에서는 \'가 “탭 위치로 이동” 명령에 쓰이므로 accent에는 전용 형태인 \a'를 씁니다(앞에 \a를 붙일 뿐입니다).
% inside tabbing, \' means "go to a tab stop" — use \a' for the accent
\begin{tabbing}
caf\a'e \= au lait \\
th\a'e \> vert
\end{tabbing}- pdfLaTeX으로 서양 문자를 조판한다면
\usepackage[T1]{fontenc}을 반드시 넣습니다. 하이픈 넣기・커닝・PDF 검색성이 한꺼번에 해결됩니다 - 본문은 직접 입력하고,
.bib은 투고처 규정에 맞춥니다. 한 프로젝트 안에서 두 표기를 섞지 않습니다 \i를 써야 하는 것은\~\=\u\v\H\r\k일곱뿐입니다. 나머지 다섯은 LaTeX이 알아서 처리합니다\SS는 ẞ가 아니라 SS입니다. 대문자 에스체트가 필요하면 Unicode 엔진과 그 글자를 가진 글꼴로 옮깁니다\hat은 수식,\^은 텍스트입니다. 오류 문구(! Missing $ inserted.인지! Please use \mathaccent …인지)로 어느 쪽에 있는지 알 수 있습니다