Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

LaTeX와 LyX 완벽 활용 가이드: 문서 작성 수준을 한 단계 끌어올리는 11가지 실용 팁

이 문장을 열 번 연속으로 빠르게 말해보라고 하면 감히 따라 해 보시겠습니까? 어쨌든 오늘은 문서를 어떻게 작성하고, 스타일링하고, 서식을 지정하고, 준비하고, 발표해야 하는지 다루는 또 하나의 '초고수' 튜토리얼을 함께 살펴보려 합니다. 오피스 스위트나 워드 프로세서로 대충 일을 처리하고 싶은 유혹이 들 수 있지만, 부디 그러지 마시기 바랍니다. 약간의 결심과 도전만 한다면, 훨씬 뛰어난 대안들의 세계가 여러분을 기다리고 있습니다.

물론 오피스 스위트 진영에서는 "LaTeX는 너무 어렵고 과학 논문에나 쓸모 있다"고 말하곤 합니다. 아하! 사실 절반은 맞는 말입니다. LaTeX에는 원하는 기능이 많지만, 그것들이 한눈에 드러나지 않는 경우가 많으니까요. 이 글에서는 워드 사용자가 처음 LaTeX를 접할 때 마주치는 흔한 장애물들과, 이를 빠르고 고통 없이 해결하는 방법을 소개하겠습니다.

LyX 준비하기

LaTeX는 문서 작성의 진정한 방법입니다. 명령줄에서 직접 사용할 수도 있고, 프런트엔드를 이용할 수도 있습니다. 대부분의 사람에게는 후자가 권장됩니다. 대표적인 도구로는 LyX와 Kile 등이 있습니다. 특히 LyX는 크로스 플랫폼이라 Windows와 Linux 모두에서 실행됩니다. 이 글에서는 LyX를 워드 프로세서처럼 사용하는 방식으로 진행하겠습니다.

참고: 모든 예제는 필자의 취향에 기반한 것이므로, 여기 소개된 트릭을 적용하기 전에 반드시 원리를 먼저 이해하시기 바랍니다. 자, 이제 본격적으로 시작해 보겠습니다.

기본 사항

LyX 문서에 LaTeX 코드를 삽입하려면 Ctrl + L을 사용하면 됩니다. 문서 전체에 영향을 주는 영구적인 설정은 문서 프리앰블(preamble)에 삽입합니다. 프리앰블은 머리글, 바닥글, 북마크, 색상 등 주요 설정을 선언하는 일종의 템플릿 섹션입니다.

이제 자주 쓰이는 트릭들, 혹은 짜증 나는 문제들을 하나씩 살펴보겠습니다. 일반적인 사용자가 LaTeX를 사용하면서 예상대로 동작하지 않아 마주하게 되는 상황들을 다룹니다. 순서는 특별히 정하지 않았습니다.

팁 1: 글머리 기호와 번호를 왼쪽 페이지 여백에 맞추기

기본적으로 목록 항목들은 탭 하나만큼 들여쓰기가 됩니다. 이게 거슬린다면 걱정하지 마세요. 해결책은 매우 간단합니다. 문서에서 첫 번째 itemize 또는 enumerate 목록이 나오기 전에 짧은 코드 조각을 추가하거나, 프리앰블에 선언하면 됩니다. 글머리 기호와 번호 각각에 대한 설정입니다.

\setitemize[0]{leftmargin=XXpt,itemindent=XXpt,labelwidth=XXpt}

\setenumerate[0]{leftmargin=XXpt,itemindent=XXpt,labelwidth=XXpt}

정확한 여백 값은 여러분의 필요와 스타일, 그리고 폰트에 따라 달라집니다. 요령은 알겠죠? 다양한 값을 시험해 보며 최종 결과를 확인하세요. 필자의 경우 아래 이미지와 같이 다음과 같이 설정했습니다.

\setitemize[0]{leftmargin=15pt,itemindent=0pt,labelwidth=10pt}

또한 enumitem 패키지가 필요하므로, 프리앰블에 다음과 같이 선언합니다.

\usepackage{enumitem}

이 패키지가 설치되어 있지 않다면 먼저 설치해야 합니다. LaTeX 소프트웨어가 자동으로 설치하게 두거나, 누락된 패키지를 직접 내려받아 올바른 경로에 압축을 풀 수도 있습니다. 개인적으로는 굳이 수동으로 할 필요가 없다고 생각합니다. 어려운 일은 소프트웨어에게 맡기세요. 예를 들어 Windows에서는 MiKTeX가 자동으로 처리해 줍니다.

팁 2: 보기 좋은 각주 만들기

각주를 깔끔하게 정렬하고 싶다면 다음 코드를 사용하세요. 아래 예제는 필자가 가장 잘 작동한다고 생각하는 값들을 담고 있습니다. 여러분의 미적 감각에 맞게 조절해 보시기 바랍니다.

\usepackage[hang,splitrule]{footmisc}
\addtolength{\footskip}{0.5cm}
\setlength{\footnotemargin}{0.3cm}
\setlength{\footnotesep}{0.4cm}

팁 3: 긴 제목 나누기

섹션이나 서브섹션 제목이 끝없이 길어져 목차가 지저분해 보이는 경우가 있습니다. 해결책은 의도한 지점에 줄바꿈 기호를 삽입하는 것, 이보다 단순하지 않습니다.

그 결과물입니다.

팁 4: 이미지 너비 조절

여러 개의 이미지를 코드에 삽입해야 한다면, 모든 그래픽이 동일하게 보이도록 크기를 조정하고 싶을 것입니다. 그런데 이미지들의 너비, 높이, 종횡비가 제각각이라면 복잡한 계산이 필요합니다. 다행히 LyX에서는 이미지 너비를 열(column) 너비와 페이지 너비의 백분율로 설정할 수 있어 작업이 훨씬 간단해집니다.

예를 들어 열 너비의 100%로 설정할 때의 코드는 다음과 같습니다.

\begin{figure}[H]
\caption{image title}
\includegraphics[width=1\columnwidth]{image-file-path}
\end{figure}

물론 캡션은 선택 사항입니다.

팁 5: 표 셀 여백과 간격 조정

LaTeX의 기본 셀 여백이 좀 빈약하고 투박하다고 느낀다면, 그건 착각이 아닙니다. 해결책은 표를 확장하여 항목 주변에 더 많은 공간을 확보하는 것입니다. 그러면 덜 붐비고 읽기 편해집니다. 예를 들어 셀 간격을 두 배로 늘리려면:

\renewcommand{\arraystretch}{2}

그 결과물입니다.

팁 6: 비표준 페이지 만들기

특정 페이지 하나만 기본 스타일에서 벗어나게 하고 싶다면 어떻게 할까요? 특별한 서식, 추가 들여쓰기, 새로운 색상 등이 필요하다면 thispagestyle 명령을 사용하면 됩니다. 예를 들어 해당 페이지에서 스타일을 완전히 제거하려면:

\thispagestyle{empty}

이 기능은 머리글, 바닥글, 페이지 번호를 넣고 싶지 않은 표지 페이지에서 특히 유용합니다. 반대로 아래 명령은 프리앰블에서 정의한 대로 해당 페이지에 머리글(heading)을 배치합니다.

\thispagestyle{headings}

팁 7: 멋진 캡션 만들기

각주에서 했던 것처럼 캡션에 굵은 라벨과 깔끔한 줄바꿈을 적용하고 싶으신가요? 물론이죠. 기본 figure float 캡션은 다소 밋밋하지만, 약간의 코드만으로 손쉽게 개선할 수 있습니다.

\usepackage{caption}
\captionsetup{labelfont=bf,format=plain,indention=0cm,
justification=raggedright,singlelinecheck=false}

이 코드는 프리앰블에 넣습니다.

이 설정들을 사용하려면 caption 패키지가 필요합니다.

팁 8: 구문 강조와 함께 프로그래밍 코드 삽입하기

이번에는 진짜 하드코어한 팁인데, 분명 마음에 드실 겁니다. 프로그래밍 코드처럼 보이는 텍스트 블록을 일일이 만드는 대신, listings 패키지를 사용하면 탁월한 결과를 즉시 얻을 수 있습니다.

listings는 다양한 언어에 대한 구문 강조, 텍스트 줄바꿈, 줄 번호 매기기 등 멋진 기능을 제공합니다. 모든 세부 사항을 설명할 수는 없지만, 실제 사례를 하나 소개합니다.

\lstset{tabsize=2,breaklines=true,numbers=left,basicstyle=
footnotesize,xleftmargin=30pt}
\lstinputlisting[language=C]{null-pointer.c}

null-pointer.c라는 파일을 C 언어로 인식해서 불러오는 코드입니다. 기본 탭 크기는 두 칸이고, 긴 코드는 줄바꿈됩니다. 줄 번호는 왼쪽에, 페이지 여백에서 30포인트 떨어진 위치에, 각주 크기로 표시됩니다. 간단하죠?

그 최종 결과물입니다.

팁 9: 워터마크

투명한 이미지 로고나 세련된 워터마크는 어떨까요? 문제없습니다. 이것도 쉽고 멋지게 처리할 수 있습니다. 먼저 watermark 패키지를 사용하겠다고 프리앰블에 선언합니다.

\usepackage{watermark}

다음으로 워터마크를 원하는 위치에 배치합니다. \put 명령을 사용하면 이미지의 정확한 위치를 지정할 수 있습니다. 최상의 효과를 위해서는 저대비의 투명한 이미지를 사용해야 합니다. 예를 들면:

\thiswatermark{\centering \put(0,-660){\includegraphics[width=
\textwidth]{tux.png}} }

이 명령은 tux.png 파일을 기반으로 한 워터마크를 한 페이지에, 수직 오프셋 660pt, 텍스트 너비에 맞춰 가운데 정렬하여 배치하라는 의미입니다. 수직·수평 위치 조정이나 크기 조절은 자유롭게 실험해 볼 수 있습니다. 모든 페이지에 같은 워터마크를 적용할 수도 있습니다. 필자의 예제는 그렇게 아름답지는 않지만 개념을 잘 보여줍니다.

DVI와 PS 출력에는 draftcopy 패키지를, PDF 출력에는 pdfdraftcopy 패키지를 사용해 페이지에 대각선 DRAFT 문구를 넣을 수도 있습니다.

\usepackage{draftcopy}

팁 10: 수평 및 수직 공간 조절

원칙적으로 페이지 서식을 임의로 변경하지 않는 것이 좋습니다. LaTeX는 단락과 이미지를 페이지에 지능적으로 배치하여 최적의 배치와 가독성을 동시에 추구합니다. 줄 간격을 미세하게 조정하거나 텍스트 블록 전체를 이동시키기도 하죠.

그럼에도 불구하고 꼭 필요하다면 \vspace{}와 \hspace{} 명령으로 텍스트 흐름에 인위적인 간격을 만들 수 있습니다. 물론 항상 최종 출력물을 확인해 의도대로 보이는지 검증해야 합니다. 예를 들면:

\vspace{1cm}

수직 간격은 다단 레이아웃에서 각 단의 하단을 들쭉날쭉하게(ragged bottom) 유지하고 싶을 때 유용합니다. \raggedbottom과 clear page와 함께 사용하면, 이미지나 표로 흐름이 깨지는 상황에서도 요소들을 가장 컴팩트하게 정렬할 수 있습니다.

팁 11: 다단 기사 만들기

다단 이야기가 나왔으니 말인데, 두 단, 세 단 또는 그 이상의 단을 가진 기사도 아주 쉽게 만들 수 있습니다. multicol 패키지를 사용하면 됩니다. 프리앰블에 선언한 뒤, 본문 어디에서든 필요에 따라 단일 단과 다중 단을 전환할 수 있습니다.

\begin{multicols}{<number>}
content goes here as usual ...
\end{multicols}

단일 단과 다중 단을 자유롭게 오갈 수 있습니다. 예를 들어 이미지와 표는 페이지 전체에 걸치게 하고, 텍스트는 두 단으로 나누고 싶을 때 유용합니다. 단, 텍스트는 블록 내에서 왼쪽에서 오른쪽으로 흐르며, 아래쪽에 있는 다음 다중 단 섹션으로 이어지지 않는다는 점을 기억하세요.

모든 팁 중 최고의 팁: 소스 코드 들여다보기

LyX 코드도 결국 그냥 텍스트입니다. 몇 가지 특수 태그가 붙은 LaTeX일 뿐입니다. 언제든 파일을 텍스트 편집기로 열어 GUI로 수행한 특수 선언들을 확인할 수 있습니다. float 요소, 표, 그 외 멋진 서식 뒤에 무엇이 숨어 있는지 궁금하다면 소스를 살펴보세요. HTML 파일을 들여다보는 것과 거의 같습니다.

Linux에서의 예시입니다.

더 읽을 거리

또 하나 유용한 LaTeX 팁 리소스를 소개합니다.

LaTeX | Rob Oakes

결론

이상으로 마칩니다. 이 글은 일종의 '열핵급 기 geek 무기'이지만, 분명 유용하리라 생각합니다. 필자의 개인적인 경험이 여러분에게 꼭 맞지 않을 수 있습니다. 특히 LaTeX를 처음 접하는 분들이라면 더욱 그렇습니다. 하지만 이 글이 여러분의 호기심을 자극하고 직접 시도해 보게끔 이끌었다면 성공한 것입니다.

오늘 우리가 얻은 중요한 교훈은 이렇습니다. 첫째, LaTeX는 원하는 어떤 스타일로든 다듬을 수 있으며, 때로는 일반적인 오피스 스위트보다 더 큰 자유도와 우아함을 제공합니다. 둘째, LaTeX는 방대하고 풍부한 세계로, 거의 모든 용도에 맞는 패키지가 존재합니다. 적절한 패키지를 찾으면 코알라 새끼까지 복제할 수 있을지도 모릅니다. 텍스트 분야의 Linux 저장소라고 할 수 있죠. 셋째, LaTeX를 사용하다 생길 수 있는 흔한 문제들에 대한 간단하고 빠른 해답을 얻었습니다.

다루면 좋을 만한 유용한 사례가 더 있거나, 아직 풀리지 않은 질문이 있다면 언제든 메일을 보내 주세요. 이 글의 후속편이 나올지도 모릅니다.

즐거운 문서 작성 되시길!