서양 문자 작성

일반 라틴 스크립트 텍스트를 입력하면 TeX이 이를 놀랍도록 세심하게 설정합니다. fiff을 합자, AV과 같은 커른 쌍으로 자동으로 융합하고 전체 단락을 스캔하여 줄 바꿈 및 하이픈 넣기를 선택하고 가장자리를 정렬합니다. 이 페이지에서는 합자, 커닝, 하이픈을 사용한 줄 바꿈, microtype 등 그 뒤에 있는 네 가지 메커니즘을 통해 작성자가 알아야 할 사항과 개입하려는 드문 경우를 안내합니다. 이 모든 것은 서양 텍스트에 관한 것입니다. 일본어에는 자체 조판 모델이 있습니다.

합자

합자는 여러 개의 인접한 문자를 하나의 문자 모양으로 융합합니다. f의 우측상단 돌출부가 뒤따르는 i의 점이나 l의 어센더와 충돌하기 때문에 금속활자 시절부터 f-합자가 사용되어 왔다. TeX은 이를 자동으로 형성합니다. 기본적으로 생성되는 5개 문자는 ff, fi, fl, ffiffl입니다. office 또는 fluffier만 입력하면 관련 문자가 하나의 문자로 대체됩니다.

동일한 기계가 구두점 합자도 만듭니다. 하이픈 --en 대시(-, 숫자 범위 등의 경우)가 되고, 세 개의 연속된 --- em 대시(—, 괄호 안의 구분)가 됩니다. 두 개의 백틱 ` 과 두 개의 아포스트로피 ''`가 적절한 열기 및 닫기 큰따옴표로 바뀝니다. 이러한 변환은 Western 글꼴 측정항목에 있습니다. 특별한 명령은 필요하지 않습니다.

그러나 합자가 형태소 경계(단어가 부분적으로 만들어진 이음새)에 걸쳐 있으면 가독성이 손상될 수 있습니다. 전형적인 예는 shelfful(shelf + ful)입니다. ff을 융합하면 shelfful 사이의 조인이 숨겨집니다. Knuth는 *The TeXbook*에서 바로 이 단어를 인용하고 shelf\/ful으로 설정해야 한다고 말합니다. halflife, offhand, wolffish은 같은 종류입니다. 일본어에는 그런 문제가 없지만, 서양 텍스트를 진지하게 설정할 때 알아야 할 함정입니다.

원치 않는 합자를 끊는 전통적인 방법에는 세 가지가 있습니다. f\/f은 두 fs 사이에 기울임꼴 교정 \/(문자 돌출부 크기의 작은 공간)을 삽입합니다(Knuth가 사용한 것입니다). f{}f빈 그룹 {}을 삽입합니다. f\kern0pt f0폭 커른'을 삽입합니다. 세 가지 모두 합자를 제거하지만 고전적인 문제에 유의하세요. 단어 안에 이러한 구분선을 넣으면 해당 단어에 대한 하이픈 사용이 꺼질 수 있습니다. 짧은 단어의 경우 실질적인 피해는 무시할 수 있습니다.

latex
shelf\/ful      % italic correction — Knuth's example
shelf{}ful      % empty group
shelf\kern0pt ful  % zero-width kern

LuaLaTeX을 사용하는 경우 selnolig 패키지가 더 좋은 솔루션입니다. 영어 형태를 패턴으로 전달하고 shelfful 또는 wolffish와 같은 단어에서 원치 않는 합자를 자동으로 억제합니다. 텍스트에 마크업 없이 하이픈을 그대로 유지합니다. 반대로 *모든* 합자를 끄려면 microtype(아래)을 사용하여 한 곳에서 글꼴별로 합자를 비활성화할 수 있습니다.

커닝

kern은 인접한 특정 문자 쌍 사이의 간격을 조정합니다. 간격이 균일해 보이도록 닫거나 열 수 있습니다. 기본 예제는 AV, To, WaLT과 같은 쌍으로, 도움 없이는 문자의 기울어짐과 측면 베어링 때문에 간격이 없어 보입니다. TeX 이 작업도 자동으로 수행됩니다. 각 Western 글꼴은 글꼴 측정항목(pdfLaTeX 세계의 .tfm 파일 또는 OpenType 서체의 글꼴 내부 테이블)에 커닝 쌍 테이블("이 쌍을 너무 많이 닫고 저것을 엽니다")을 제공하며 TeX은 이를 읽어 간격을 설정합니다.

핵심 포인트: 합자와 커닝은 모두 소스에서 보이지 않으며 글꼴 메트릭에서 자동으로 적용됩니다. 일반적으로 이에 대해 전혀 생각할 필요가 없습니다. 손으로 간격을 조금이라도 조정하려는 경우에만 \kern과 명시적인 길이를 사용하여 작은 공백(또는 조이려면 음수 공백)을 추가합니다. 그리고 전체 단어를 균등하게 추적하거나 문자 간격을 두기 위해 \kern을 흩뜨리지 말고 microtype\textls(아래)을 사용하면 하이픈 연결이 계속 작동합니다.

단어 사이의 간격, 정렬 및 하이픈 넣기

TeX의 설정이 특히 아름다운 이유는 전체 단락을 한 번에 확인하여 줄 바꿈을 선택한다는 것입니다. 많은 워드 프로세서가 한 번에 한 줄씩 수정하는 경우 TeX은 Knuth-Plass 알고리즘을 사용하여 중단점의 전체 조합을 평가하고 단어 사이 공간이 단락 전체에서 늘어나거나 줄어드는 정도를 최소화하는 구분을 선택합니다. 이 과정에서 단어 간 접착제를 늘리거나 줄임하여 선이 동일한 너비에 도달하도록 정렬이 이루어집니다.

줄을 잘 묶기 위해 TeX는 언어별 하이픈 패턴을 사용하여 음절 경계에서 단어에 자동으로 하이픈을 넣습니다. 중요한 사실은 패턴은 언어에 따라 다릅니다. 독일어나 프랑스어를 영어 규칙으로 어기면 잘못된 결과가 발생한다는 것입니다. 따라서 올바른 패턴을 로드하는 babel(또는 LuaLaTeX/XeLaTeX의 경우 polyglossia)을 사용하여 문서의 언어를 선언합니다. 이는 장식이 아닌 텍스트를 올바르게 설정하기 위한 전제 조건입니다.

자동 하이픈 넣기는 효율적이지만 고유 명사와 기술 용어를 잘못 판단할 수 있습니다. 구제책은 세 가지 수준으로 제공됩니다. (1) 특정 단어를 항상 선택한 지점에서만 끊게 하려면 \hyphenation{...}의 서문에 해당 단어를 나열하고 허용되는 지점을 -(공백으로 구분된 단어)로 표시합니다. (2) 일회성 중단점의 경우 \-(임의 하이픈)을 단어 안에 넣습니다. 그러나 \-을 추가하면 단어는 그곳에서만 끊어질 수 있습니다. (3) 단어를 전혀 나누지 않으려면 \mbox{...}으로 묶습니다.

latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}  % load English hyphenation patterns
\hyphenation{FORTRAN manu-script data-base}  % global exceptions
\begin{document}
We rewrote the man\-u\-script in \mbox{FORTRAN} overnight.
\end{document}

두 개의 선언을 사용하여 단락이 얼마나 촘촘하게 압축되는지 조정할 수 있습니다. \sloppy는 줄이 여백을 초과하는 것을 방지하기 위해 더 넓은 단어 간 공백을 허용하는 반면(상자 가득 참), \fussy(기본값)은 더 많은 초과 실행을 감수하면서 간격을 엄격하게 유지합니다("Overfull \hbox" 경고). 한 단락만 느슨하게 하려면 sloppypar 환경으로 래핑하세요. 그러나 \sloppy은 줄이 간격이 남는 경향이 있으므로 단어를 다시 작업하거나 단일 \-을 추가하면 일반적으로 더 아름다운 결과를 얻을 수 있습니다.

microtype으로 연마

마지막으로 서양식 조판을 눈에 띄게 들어 올리는 패키지는 microtype입니다. \usepackage{microtype} 한 줄은 기본적으로 pdfTeX가 제공하는 두 가지 미세한 인쇄 개선 기능을 활성화합니다. 하나는 문자 돌출(여백 커닝): 줄 끝 구두점과 oA과 같은 둥글거나 기울어진 문자가 오른쪽 여백을 지나도록 밀려 가장자리가 시각적으로 균일해 보입니다. 다른 하나는 글꼴 확장입니다. 각 행의 글리프가 아주 작은 양(%의 몇 분의 1)으로 늘어나거나 압축되어 단어 간 접착제 작업의 일부를 대신하고 보다 균일하고 긴밀하게 설정된 단락을 제공합니다.

그 외에도 패키지는 단어간 간격 조정, 추가 커닝, 하이픈 넣기 가능 글자 간격(\textls{...}) 및 합자 비활성화도 제공합니다. 사용할 수 있는 기능은 엔진에 따라 다릅니다. Protrusion은 pdfTeX, LuaTeX 및 XeTeX에서 작동합니다. 확장은 pdfTeX 및 LuaTeX에서만 (XeTeX 아님)에서만 작동합니다. 합자를 비활성화하면 pdfTeX 및 LuaTeX에서 작동합니다. 패키지는 기본적으로 엔진에서 안전하게 실행할 수 있는 것만 활성화하므로 옵션 없이 로드하는 것만으로도 시작하기에 충분합니다.

latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}  % protrusion + expansion, on by default
\begin{document}
Long justified paragraphs look noticeably more even with microtype:
fewer rivers of white space, tidier right margins, and \textls{LETTERSPACED}
small caps when you ask for them.
\end{document}

조정 사항은 미묘하여(한 눈에 명확하지는 않지만) 페이지 전체에서 공백의 강이 줄어들고, 줄 끝이 균일해지고, 하이픈이 줄어드는 것으로 나타납니다. 심각한 서양식 조판의 경우 microtype을 추가하는 것은 사실상 표준적인 조치입니다. 거의 필수에 가까운 품질 업그레이드입니다. 그리고 이러한 효과는 서양(라틴어) 텍스트에도 적용됩니다. 일본어에는 luatexja과 같은 도구를 통해 처리되는 돌출 및 확장과 구별되는 자체 조판 모델이 있습니다.

서양 텍스트 증명 패스 만들기

일본어 중심의 원고에서도 서양 제목, 참고문헌 항목, URL, 이름, 패키지 이름에 대한 전용 교정 패스가 있어 마무리가 더욱 안정적입니다. 해당 서양 텍스트 패스에서 합자를 억제해야 하는 고유명사, 하이픈을 넣을 수 있는 기술 용어, microtype 뒤에 남아 있는 전체 줄을 확인하세요. 단락 계획과 달리 이 작업은 텍스트가 거의 확정된 마지막 부분에 가장 효율적입니다.

  • 고유 이름: 로고나 개인 이름에서 fffi과 같은 합자를 억제해야 하는지 결정하고 필요한 경우에만 {} 또는 \kern0pt을 사용하여 로컬에서 분리해야 합니다.
  • 기술 용어: 반복되는 긴 단어의 경우 \hyphenation{...} 또는 \-을 추가하여 각 줄을 직접 패치하지 않도록 하세요.
  • 본질: \usepackage{microtype} 로딩 후 문단을 판단하세요. \sloppy으로 먼저 점프하면 간격이 느슨해지는 경우가 많습니다.
  • 일본어 조판: microtype이 아닌 엔진과 일본어 패키지 모델을 통해 조정합니다.