요약
이 강의에서는 문서의 언어를 선언하고 문서의 글꼴을 고르는 법을 배운다. babel로 언어를 선언하면 무엇이 바뀌는지(하이픈 넣기, 자동으로 붙는 이름, 날짜, 따옴표)를 설명하고, 언어를 바꾸는 세 가지 방법인 \selectlanguage, \foreignlanguage, otherlanguage 환경을 구별한다. 이를 다성조 고대 그리스어와 라틴어를 인용하는 한국어 글에 적용하여 각각 한 대목씩 예로 든다. 이어서 fontspec을 소개한다. 문서의 세 글꼴 가족, 언어마다 글꼴을 지정하는 \babelfont, 학술 문서에서 가장 쓸모 있는 OpenType 기능(옛 숫자, 작은 대문자, 합자)이며, 한글 글꼴과 라틴 글꼴의 역할 분담도 함께 설명한다. 경고 「Missing character」를 읽고 albatross로 글꼴을 찾아서 글꼴이 문서의 모든 문자를 담고 있는지 확인하는 법을 배우고, 문서를 Overleaf에서도 컴파일해야 할 때 TeX Live의 글꼴을 우선해야 하는 이유를 설명한다. 끝으로 오른쪽에서 왼쪽으로 쓰는 문자, 한중일 문자의 조판 패키지, polyglossia를 간단히 언급한다.
학습 목표
- babel로 문서의 주 언어와 보조 언어를 선언하고, 각 언어가 조판 결과에서 무엇을 정하는지 설명한다.
- 바꿔야 할 것에 따라
\foreignlanguage,otherlanguage,\selectlanguage가운데 하나를 고르고, 그 결과로 나오는 날짜, 이름, 따옴표를 예측한다. - 다성조 고대 그리스어와 라틴어 대목을 올바른 하이픈 넣기와 알맞은 글꼴로 조판한다.
- fontspec과 babel로 글꼴을 지정하고, 옛 숫자, 작은 대문자, 합자를 켠다.
- 고른 글꼴이 문서가 쓰는 모든 문자와 모양을 담고 있는지 확인하고, 그렇지 않음을 알리는 경고를 해석한다.
- 문서를 어디서 컴파일해야 하는지에 따라 TeX Live의 글꼴과 시스템 글꼴 가운데 하나를 고른다.
언어와 함께 바뀌는 것
앞의 강의들에서 한국어 문서는 늘 \usepackage[hangul]{kotex}와 \setmainhangulfont{Noto Serif CJK KR}를 불러왔지만, 그것이 무엇을 하는지는 따로 살피지 않았다. 이 강의에서는 여기에 babel을 더한다. 언어는 글자의 목록에 그치지 않는다. 줄 끝에서 낱말을 나누는 고유한 규칙, 문서 각 부분의 이름, 날짜를 적는 방식, 그리고 고유한 따옴표가 있다. babel 패키지는 이런 관례를 언어별로 모아 두며, 언어를 선언한다는 것은 그 관례를 적용해 달라고 babel에 요청하는 것이다. 한글 자체의 조판 규칙(줄바꿈, 문장 부호 처리, 한글과 라틴 문자 사이의 간격)은 kotex가 맡는다. 구체적으로 언어가 정하는 것은 다음과 같다.
- 하이픈 넣기: 엔진이 낱말을 나눌 수 있는 자리를 어떤 패턴으로 찾는가.
- LaTeX가 스스로 써 넣는 이름: 차례의 제목, 표와 그림의 이름 따위.
\today가 찍는 날짜: 컴파일한 날의 날짜.- 어떤 언어가 자판 입력을 위해 정해 둔 줄임 입력: 예컨대 스페인어가 따옴표를 위해 정해 둔 것. 한국어에는 이런 줄임 입력이 없으며, 한국어 따옴표를 입력하는 법은 이 절에서 뒤에 다룬다.
세 문단은 같은 명령을 쓴다. 바뀌는 것은 그 명령을 읽는 언어뿐이다. \tablename, \figurename, \contentsname은 표, 그림, 차례의 이름이다.
\documentclass{article}\usepackage[latin, english]{babel}\babelprovide[import,main]{korean}\usepackage[hangul]{kotex}\setmainhangulfont{Noto Serif CJK KR}\begin{document}날짜: \today. 이름: \tablename, \figurename, \contentsname.\begin{otherlanguage}{english}Date: \today. Captions: \tablename, \figurename, \contentsname.\end{otherlanguage}\begin{otherlanguage}{latin}Dies: \today. Tituli: \tablename, \figurename, \contentsname.\end{otherlanguage}\end{document}한국어의 날짜와 이름은 babel의 한국어(korean)가 정한다. kotex의 hangul 옵션도 이름을 한국어로 바꾸지만, 그것만으로는 babel이 다른 언어를 불러올 때 영어 이름으로 되돌아가므로, babel을 쓰는 문서에서는 한국어를 babel의 주 언어로 선언한다. 라틴어는 날과 해를 로마 숫자로 적는다.
하이픈 넣기
하이픈 넣기는 언어가 가져오는 효과 가운데 가장 눈에 띄지 않으면서 가장 중요하다. 한국어 낱말은 하이픈으로 나누지 않으며, 줄바꿈은 kotex의 규칙을 따른다. 그러나 한국어 글에는 라틴 문자 낱말이 자주 섞이고, 라틴 문자를 쓰는 각 언어는 저마다의 전통에 따라 낱말을 나눈다. 영어는 흔히 낱말의 짜임을 존중하고(stand-ing), 라틴어는 그 패턴이 따르는 전통에 따라 자음이 뒤따르는 s를 다음 줄로 넘긴다. 다른 언어의 대목에 표시를 하지 않으면 엔진은 현재 언어의 패턴으로 그것을 나누며, 그렇게 제안된 자리는 그 언어에서 틀릴 수 있다.
명령 \showhyphens는 받은 낱말에서 엔진이 허용하는 나눔 자리를 로그에 적고, 문서에는 아무것도 찍지 않는다. 어디서 어떤 패턴이 작동하는지 확인하는 데 쓴다.
다음 소스는 영어 낱말 둘과 라틴어 낱말 둘의 나눔 자리를, 먼저 주 언어인 한국어의 패턴으로, 다음에 각 낱말의 언어의 패턴으로 구한다. 문서에 한글이 없으므로 여기서는 kotex가 필요 없다.
\documentclass{article}\usepackage{fontspec}\usepackage[latin, english]{babel}\babelprovide[import,main]{korean}\begin{document}\showhyphens{understanding knowledge}\foreignlanguage{english}{\showhyphens{understanding knowledge}}\showhyphens{nostrum conscientia}\foreignlanguage{latin}{\showhyphens{nostrum conscientia}}\end{document}로그는 각 줄마다 먼저 상자에 관한 경고(해롭지 않다. \showhyphens는 낱말을 살피려고 아주 넓은 줄에 조판한다)를 내고, 이어서 나눔 자리가 표시된 낱말을 낸다.
Underfull \hbox (badness 10000) in paragraph at lines 6--6[] \TU/lmr/m/n/10 un-der-stand-ing knowl-edgeUnderfull \hbox (badness 10000) in paragraph at lines 7--7[] \TU/lmr/m/n/10 un-der-stand-ing knowl-edgeUnderfull \hbox (badness 10000) in paragraph at lines 8--8[] \TU/lmr/m/n/10 nos-trum con-sci-en-tiaUnderfull \hbox (badness 10000) in paragraph at lines 9--9[] \TU/lmr/m/n/10 no-strum con-scien-tiababel의 한국어에는 고유한 하이픈 패턴이 없어서 라틴 문자 낱말에는 영어 패턴을 쓰며, 로그에도 그런 정보 「Hyphen rules for 'korean' set to \l@english」가 나온다. 그래서 6행과 7행은 똑같다. 라틴어는 다르다. 8행은 영어식으로 con-sci-en-tia로 나누고, 9행은 라틴어 전통대로 no-strum con-scien-tia로 나눈다. 한국어 글에 인용하는 라틴어, 프랑스어, 독일어 대목에는 표시가 필요하다.
한국어의 따옴표
한국어 가로쓰기에서는 인용의 첫 단계에 큰따옴표 “”를, 그 안에 작은따옴표 ‘’를 쓴다. babel의 한국어는 따옴표를 위한 줄임 입력을 정하지 않으며, 단계에 따라 따옴표를 바꾸지도 않는다. 어느 것을 쓸지는 글쓴이가 정한다. LuaLaTeX에서는 다음 예처럼 자판에서 바로 입력할 수 있다.
첫째 줄의 \inhibitglue는 문단, 공백, 기호를 다룬 수업에서 보았듯이 닫는 따옴표와 조사 사이에 kotex가 넣는 간격을 막는다. 둘째 줄은 언어와 상관없는 LaTeX의 고전적인 방법을 보여 준다. 역따옴표 두 개가 영어 따옴표를 열고 아포스트로피 두 개가 닫는다. 하나씩 쓰면 작은따옴표가 된다.
그러나 줄임 입력과 우연의 일치는 구별해야 한다. fontspec이 라틴 글꼴을 불러올 때 기본으로 켜는 TeX 합자 기능(뒤에서 다룬다)은 이어진 두 개의 <를 어느 언어에서든 꺾쇠 따옴표 «로 바꾼다. 스페인어와 프랑스어 문서가 쓰는 것이 이 따옴표이지만, 한국어 따옴표는 직접 입력해야 한다. 인용은 각주, 인용, 시에 관한 강의에서 더 자세히 다룬다.
콘텐츠를 불러오는 중…