길이와 공백

LaTeX 에 “여기에 2cm 띄워라”, “여기에 한 줄분 여백을 더하라”라고 지시하려면 길이(length) 를 씁니다. 이 페이지에서는 먼저 길이의 단위 와 정확한 환산을 확인하고, 이어서 늘어나고 줄어드는 러버 길이, 실제로 공백을 출력하는 \hspace / \vspace 등의 명령, 마지막으로 길이를 변수처럼 정의해 재사용하는 방법까지 차례로 살펴봅니다.

길이 단위

길이는 숫자 + 단위 로 씁니다(12pt, 2.5cm, -3mm 처럼 소수와 음수도 가능). 단위는 크게 두 종류입니다. 글꼴과 관계없이 고정된 절대 단위(pt, mm, in 등)와, 현재 쓰는 글꼴 크기에 연동되는 글꼴 상대 단위(em, ex)입니다. 본문의 여백이 “글꼴이 커지면 자연스럽게 넓어지길” 바랄 때 후자가 유용합니다.

중심이 되는 단위는 pt(TeX point)입니다. TeX 에서는 1 inch = 72.27pt 로 정의되어 있으며, 이것이 모든 환산의 기준입니다. 헷갈리기 쉬운 것은 bp(big point)로, PostScript/PDF 가 쓰는 “1 inch = 72bp”의 포인트입니다. ptbp 는 약 0.4% 차이가 있으므로, bp 기준 도구와 그림 크기를 주고받을 때 혼동하지 않도록 주의합니다.

단위정체 / 환산비고
ptTeX 포인트. 1in = 72.27pt모든 길이의 기준
bp빅 포인트. 1in = 72bpPostScript/PDF 포인트
mm밀리미터. 1mm ≈ 2.845pt미터법
cm센티미터. 1cm = 10mm미터법
in인치. 1in = 72.27pt야드파운드법
pc파이카. 1pc = 12pt서문 조판의 전통 단위
sp스케일드 포인트. 1pt = 65536spTeX 의 최소 단위(내부용)
em현재 글자 크기 ≒ 대문자 M 의 폭글꼴 상대; 가로 방향
ex현재 글꼴의 x-height(소문자 x 높이)글꼴 상대; 세로 방향
dd디도 포인트. 1dd ≈ 1.07pt유럽 전통; cc = 12dd

sp(scaled point)는 TeX 가 내부에서 길이를 나타내는 최소 단위 로, 1pt = 65536sp 입니다. 직접 쓸 일은 거의 없지만, TeX 가 다룰 수 있는 가장 세밀한 정밀도가 여기에 있습니다. 유럽 활판 전통에서 온 dd(디도 포인트)와 cc(시세로, cc = 12dd)도 쓸 수 있지만 현대 문서에서는 거의 등장하지 않습니다.

글꼴 상대 단위 em 은 대략 현재 글자 크기(전통적으로 대문자 M 의 폭)에 해당하며, 들여쓰기나 가로 방향 공백에 적합합니다. ex 는 소문자 x 의 높이(x-height)로, 세로 방향 미세 조정에 씁니다. 10pt 글꼴이라면 1em ≈ 10pt 입니다. 수식 모드에는 em 의 1/18에 해당하는 전용 단위 mu(math unit)가 있으며, \quad 같은 수식 공백은 이 단위로 정의됩니다.

러버 길이(늘고 줄어드는 길이)

12pt 처럼 고정된 길이를 리지드 길이(rigid length) 라고 합니다. 이에 비해 상황에 따라 늘어나고 줄어드는 길이가 러버 길이(rubber length) 입니다. plus 로 늘어날 여지를, minus 로 줄어들 여지를 줍니다. 예를 들어 1cm plus 2mm minus 1mm 은 “평소에는 1cm, 필요하면 1.2cm 까지 늘고 0.9cm 까지 줄어든다”는 뜻입니다. LaTeX 는 행과 쪽의 폭을 맞출 때 이 여유를 사용해 자연스럽게 조정합니다.

latex
% 通常 1cm、最大 1.2cm まで伸び、最小 0.9cm まで縮む縦アキ
\vspace{1cm plus 2mm minus 1mm}

늘어날 여지가 무한대 인 특별한 러버 길이가 \fill 입니다. 자연 길이는 0이지만 필요한 만큼 얼마든지 늘어나므로, “남은 공간을 모두 밀어 벌리는” 용도에 씁니다. 같은 줄이나 단에 여러 \fill 이 있으면 공간을 똑같이 나눕니다. 비율을 주고 싶다면 \stretch{n}(n 배의 \fill)을 사용해 \hspace{\stretch{2}}…\hspace{\stretch{1}} 처럼 2:1 로 배분할 수 있습니다.

가로 방향 공백

행 안에 가로 공백을 넣는 기본 명령은 \hspace{길이} 입니다. \hspace{2cm} 로 2cm 공백이 들어갑니다. 다만 행 머리나 행 끝에 온 \hspace줄바꿈 처리에서 버려집니다(행 끝에 불필요한 공백이 남지 않게 하기 위해). 가장자리에서도 공백을 남기고 싶다면 별표 붙은 \hspace*{길이} 를 씁니다.

\hfill\hspace{\fill} 의 줄임말로, 양쪽의 내용을 최대한 멀리 밀어냅니다. 한 단어는 왼쪽 끝에, 다른 하나는 오른쪽 끝에 두고 싶을 때의 정석입니다(이 역시 행 끝에서는 버려지므로 반드시 남기려면 \hspace*{\fill} 을 씁니다). 공백 대신 선으로 채우는 \hrulefill, 점으로 채우는 \dotfill 도 있으며, 목차 제목과 쪽 번호 사이 등에 사용합니다.

latex
Name:\hspace{2cm}Date:\par
\noindent 第1章 はじめに\dotfill 1\par
\noindent\hfill

작고 정해진 양의 공백에는 글꼴 크기 기준 명령이 편리합니다. \quad1em(= 18mu), \qquad 는 그 두 배인 2em 입니다. 아주 얇은 공백에는 \,(thin space, 3mu)를 씁니다. 이들은 글꼴에 연동되므로 글자 크기가 바뀌어도 보이는 균형이 유지됩니다.

세로 방향 공백

단락과 단락 사이 등 세로 공백을 넣는 명령은 \vspace{길이} 입니다. \hspace 와 마찬가지로 쪽 경계에 온 공백은 버려집니다(쪽 맨 위에 불필요한 공백이 생기지 않도록). 쪽 나눔 위치에서도 공백을 남기고 싶다면 \vspace*{길이} 를 씁니다. \vfill\vspace{\fill} 에 해당하며, 세로 방향으로 남은 공간을 최대한 밀어 벌립니다(한 줄짜리 페이지를 세로 가운데에 두는 등에서 유용합니다).

자주 쓰는 세로 여백에는 미리 준비된 세 단계 명령이 있습니다. \smallskip, \medskip, \bigskip 이며, 표준 클래스의 기본값은 각각 3pt plus 1pt minus 1pt, 6pt plus 2pt minus 2pt, 12pt plus 4pt minus 4pt 입니다. 모두 러버 길이이므로 쪽의 맞춤에 따라 조금 늘고 줄어듭니다. 고정값을 직접 쓰기보다 이들을 쓰는 편이 문서 전체의 모양을 맞추기 좋습니다.

길이를 정의해 사용하기

같은 길이를 문서 여러 곳에서 사용한다면 변수처럼 길이 레지스터 를 만들면 유지보수가 쉽습니다. \newlength{\mylen} 으로 새 길이 \mylen 을 준비하고, \setlength{\mylen}{2em} 으로 값을 대입하며, \addtolength{\mylen}{1pt} 으로 늘이거나 줄입니다. 값을 한 곳에서 고치면 참조하는 모든 곳에 반영됩니다.

\textwidth(본문 폭), \linewidth(현재 줄 폭), \baselineskip(줄간격) 같은 기존 길이 도 그대로 계산에 쓸 수 있습니다. 앞에 계수만 붙이면 0.8\textwidth(본문 폭의 80%)처럼 배율 지정이 됩니다. 더 복잡한 사칙연산이 필요하면 calc 패키지 를 불러와 + - * / 를 사용한 식을 쓸 수 있습니다.

document.tex
\usepackage{calc}
% ...
\newlength{\halfcol}
\setlength{\halfcol}{(\textwidth - 2em) / 2}
\noindent\hspace*{0.8\textwidth}右寄せの見出し

이처럼 기존 폭을 기준으로 상대적인 길이를 만들어 두면 용지 크기나 여백을 바꾸어도 비율이 무너지지 않습니다. 8cm 같은 고정값을 직접 쓰기보다 \textwidth 를 기준으로 한 식이 레이아웃 변경에 강한 문서를 만듭니다.