단 구성(multicol/twocolumn)

본문을 2단 이상으로 나누어 조판하는 “단 조판”에는 크게 두 가지 도구가 있습니다. 하나는 *문서 전체* 를 2단으로 만드는 클래스 옵션 twocolumn(그리고 전환 명령 \twocolumn / \onecolumn)이고, 다른 하나는 페이지 중간에서도 시작할 수 있고 임의의 단 수를 다룰 수 있는 multicol 패키지의 multicols 환경입니다. 둘은 비슷해 보이지만 단 수, 단 높이 맞춤, 그림표(플로트) 처리 방식이 각각 다릅니다. 이 페이지에서는 언제 무엇을 써야 하는지도 함께 봅니다.

두 가지 접근

결론부터 말하면, 문서 전체를 2단으로 만들고 싶다면(학회 논문 같은 체재) 표준 클래스의 twocolumn 옵션이 간편합니다. 반면 특정 부분만 단 조판 하고 싶거나, 3단 이상 이 필요하거나, 단 높이를 맞추고 싶다면 multicol 패키지가 더 적합합니다. 다음 표가 대략적인 비교입니다.

관점twocolumn(클래스)multicol 패키지
段数2단만2〜10단 임의
範囲문서 전체(또는 쪽 단위)환경으로 감싼 범위만. 페이지 중간도 가능
最終ページの段の高さ맞추지 않음(마지막 오른쪽 단이 짧아지기 쉬움)자동으로 맞춤(balanced)
切り替え時の改ページ\twocolumn / \onecolumn 은 쪽 나눔을 강제불필요(같은 쪽 안에서 전환)
フロート(図表)단을 가로지르는 전폭 플로트 figure* 사용 가능일반 플로트 불가(아래 설명)

문서 전체를 2단으로 — twocolumn

가장 간단한 방법은 문서 클래스에 twocolumn 옵션을 넘기는 것입니다. 이것만으로 본문 전체가 2단 조판이 됩니다(기본값은 onecolumn, 즉 1단). 많은 학회 클래스는 내부적으로 이 옵션을 전제로 만들어져 있습니다.

latex
\documentclass[twocolumn]{article}

문서 중간에서 단 수를 바꾸고 싶을 때는 본문에서 \twocolumn\onecolumn 을 호출합니다. \twocolumn 은 2단으로, \onecolumn 은 1단으로 전환합니다. 다만 중요한 제약이 두 가지 있습니다. 첫째, 두 명령 모두 새 페이지를 시작합니다(강제 쪽 나눔이 들어갑니다). 페이지 중간에서는 전환되지 않습니다. 둘째, \twocolumn 이 만드는 것은 항상 2단뿐 이며, 3단 이상은 만들 수 없습니다.

\twocolumn 에는 선택 인수가 있습니다. \twocolumn[⟨1단 전면 텍스트⟩] 라고 쓰면, 그 내용이 2단 조판이 시작되기 전에 1단(전폭) 으로 조판됩니다. 논문 첫머리에서 제목과 저자, 초록만 페이지 폭 전체로 두고 그 아래부터 본문을 2단으로 하는 정석적인 체재를 만들 수 있습니다.

document.tex
\documentclass[twocolumn]{article}
\begin{document}
\twocolumn[%
  \begin{center}
    {\LARGE 論文タイトル}\\[4pt]
    著者名 \quad 所属
  \end{center}
  \vspace{1em}
]
本文はここから 2 段組みで組まれます。……
\end{document}

두 단 사이의 간격은 길이 \columnsep, 단과 단 사이에 그리는 선의 두께는 \columnseprule 로 정해집니다. \columnseprule 의 기본값은 0pt(선 없음)입니다. 선을 보이고 싶다면 양수 값을 설정합니다. 마지막 페이지에서 twocolumn좌우 단의 높이를 맞추지 않으므로, 오른쪽 단만 크게 짧아질 수 있습니다(맞추고 싶다면 아래의 multicol 이 유효합니다).

latex
\setlength{\columnsep}{20pt}      % 段間を広げる
\setlength{\columnseprule}{0.4pt} % 段間に細い罫線を引く

2단 조판에서의 전폭 그림표

twocolumn 의 큰 장점은 두 단을 가로질러 페이지 폭 전체로 넓어지는 그림표 를 둘 수 있다는 것입니다. figuretable 대신 별표 붙은 figure* / table* 환경을 쓰면 그 그림표는 양쪽 단을 가로지르는 전폭 플로트가 됩니다. 다만 배치에는 제약이 있어, 전폭 플로트는 페이지 위쪽 에 놓입니다(아래쪽으로는 가지 않습니다).

document.tex
\documentclass[twocolumn]{article}
\usepackage{graphicx}
\begin{document}
% 1 段ぶんの幅の図(通常のフロート)
\begin{figure}
  \centering
  \includegraphics[width=\columnwidth]{plot}
  \caption{片段に収まる図}
\end{figure}

% 両段にまたがる全幅の図
\begin{figure*}
  \centering
  \includegraphics[width=\textwidth]{wide-plot}
  \caption{ページ全幅の図}
\end{figure*}
\end{document}

여기서 기억할 길이는 \columnwidth\textwidth 의 차이입니다. \columnwidth한 단의 폭, \textwidth판면 전체(양쪽 단 + 단간)의 폭 을 뜻합니다. 한 단에 넣을 그림은 width=\columnwidth, 전폭 그림은 width=\textwidth 를 기준으로 하면 넘침을 막을 수 있습니다.

임의 단 수와 균형 조정 — multicol 패키지

Frank Mittelbach 의 multicol 패키지는 twocolumn 의 불편함(2단 고정, 전체 문서 또는 쪽 단위, 마지막 단 높이가 맞지 않음)을 해소합니다. \usepackage{multicol} 로 불러오고, 단 조판할 범위를 multicols 환경으로 감싼 뒤 인수에 단 수를 넘기면 됩니다.

latex
\usepackage{multicol}
% ...本文中で
\begin{multicols}{3}
  ここに書いた本文が 3 段に分かれて組まれます。……
\end{multicols}

multicol 의 장점은 네 가지입니다. 첫째, 단 수를 2단부터 10단까지 자유롭게 고를 수 있습니다. 둘째, 환경이 끝날 때 각 단의 높이를 자동으로 맞춥니다(balancing). 셋째, 페이지 중간에서 단 조판을 시작할 수 있으며, twocolumn 처럼 쪽 나눔을 강제하지 않습니다. 넷째, multicols 환경은 중첩할 수 있습니다.

단 조판 앞에 모든 단을 가로지르는 전면 텍스트(제목이나 도입문)를 두고 싶을 때는 단 수 뒤에 선택 인수 [⟨전면 텍스트⟩] 를 씁니다. 이 부분만 단으로 나뉘지 않고 판면 전체 폭으로 조판됩니다.

latex
\begin{multicols}{3}[\section{用語集}]
  この見出しは 3 段の上に全幅で出ます。\par
  以降の本文が 3 段に分かれます。……
\end{multicols}

그 전면 텍스트 인수 뒤에는 또 하나의 선택 인수 [⟨길이⟩] 를 쓸 수 있습니다. 이는 “단 조판을 시작하는 데 필요한 페이지 아래쪽의 최소 빈 공간”을 나타내며, 기본값 \premulticols 를 임시로 덮어씁니다. 남은 공간이 이 값보다 작으면 단 조판은 새 페이지에서 시작됩니다. 긴 전면 텍스트 뒤 페이지 끝에서 어정쩡하게 단 조판이 시작되는 것을 막아 줍니다.

단 제어 — 단 나누기, 선, unbalanced

단의 끊김 위치를 직접 지정하고 싶다면 본문에서 \columnbreak 를 호출합니다. 그 위치에서 현재 단을 끝내고 나머지를 다음 단으로 보냅니다(버전 1.5u 에서 추가). 새 버전에서는 \columnbreak[⟨0–4⟩] 처럼 0(약함)부터 4(강제)까지 끊고 싶은 정도를 지정할 수 있고, 단을 중간에서 끊은 채 짧게 남기는 \newcolumn 도 사용할 수 있습니다.

단 사이의 폭과 선은 twocolumn 과 같은 \columnsep(단간)과 \columnseprule(선 두께, 기본 0pt)로 제어합니다. 선의 색은 \columnseprulecolor 에 색 지정을 넣어 바꿀 수 있습니다(기본은 본문색). 이 길이들은 multicols 환경에 들어가기 전에 설정해 둡니다.

latex
\setlength{\columnsep}{1.5em}     % 段間
\setlength{\columnseprule}{0.4pt} % 段間の罫線を表示
\begin{multicols}{2}
  左の段の本文。……
  \columnbreak               % ここで右の段へ送る
  右の段の本文。……
\end{multicols}

일반 multicols 는 마지막 페이지의 단 높이를 맞추지만, 때로는 맞추지 않기를 원할 수 있습니다(깨지기 쉬운 내용이나 여러 페이지에 걸쳐 순서대로 흘려 넣고 싶은 경우). 이때는 별표 붙은 multicols* 를 씁니다(버전 1.5q 에서 추가). multicols* 는 마지막 페이지의 단 높이를 맞추지 않고, 내용을 왼쪽부터 순서대로 채워 갑니다.

플로트(그림표)의 함정

multicol 을 쓸 때 가장 큰 주의점은 multicols 환경 안에서는 일반 플로트(figure / table 환경)도 \marginpar 도 사용할 수 없다는 것 입니다. multicol 문서에 따르면 이 환경 안에서는 LaTeX 의 플로트 기구가 일부 비활성화되어 있어, figure / table 을 두면 그림표가 사라지고 Floats and marginpars not allowed inside ‘multicols’ environment! 경고가 납니다. 사용할 수 있는 것은 단을 가로지르는 별표 붙은 플로트(figure* 등) 뿐이며, 그것도 페이지 전폭으로 취급되어 각 단 안이 아니라 페이지 아래쪽 에 배치됩니다.

여기서 두 접근이 갈립니다. 단 안에 그림표를 넣거나 각 단 안에 플로트를 배치하고 싶다면, 플로트를 제대로 처리하는 twocolumn(전폭 플로트는 figure*)이 맞습니다. 반대로 단 수의 자유도와 단 높이 맞춤을 우선하고, 그림은 전폭이면 충분하다면 multicol 을 씁니다. multicol 안에 꼭 작은 그림을 넣어야 한다면 플로트로 만들지 말고 \includegraphics 를 직접 두거나 wrapfig 같은 감싸기 패키지로 대체합니다.

또 하나, 단 조판은 단 폭이 좁아지므로 양쪽 정렬 본문에서는 공백이 부자연스럽게 벌어지기 쉽습니다. 신경 쓰인다면 단 안에서 왼쪽 정렬(오른쪽 라기드)로 하거나, 하이픈 넣기와 줄 나눔 조정을 함께 사용하면 깔끔하게 맞출 수 있습니다.