Skip to content

Instantly share code, notes, and snippets.

@dlimpid
Last active January 19, 2024 05:58
Show Gist options
  • Save dlimpid/5454229 to your computer and use it in GitHub Desktop.
Save dlimpid/5454229 to your computer and use it in GitHub Desktop.
ko.TeX 없이 한글 LaTeX 문서 만들기
\documentclass[a4paper]{article}
% XeTeX 관련 =================================================================
% xltxtra Package가 fontspec을 부를 때 no-math 옵션을 주어 수식엔 영향을 주지 않게 함.
\PassOptionsToPackage{no-math}{fontspec}
\usepackage{xltxtra}
% Western과 CJK에 다른 글꼴을 사용하기 위한 패키지
\usepackage{xeCJK}
\xeCJKsetup{%
CJKspace=true,% % true이면 띄어쓰기 사용. 중국어, 일어는 필요 없을수도
% CJKmath=true,% % true면 math environment 안에서 CJK 글자 사용
CJKecglue={}% % Western과 CJK 사이의 공백 지정: {}로 간격을 없앰
}
% 일반 =======================================================================
\usepackage{amsmath, amsthm, amssymb, latexsym}
\usepackage{mathtools}
\usepackage[usenames, dvipsnames]{color} % color text, color names
% \usepackage{graphicx} % include figures
% \usepackage[all]{xy} % draw diagram
\usepackage{relsize} % for \smaller, \larger relative font size
% \usepackage{enumitem} % for indentation in lists
% \setenumerate{listparindent=\parindent}
% \usepackage{siunitx} % for SI units. \si, \SI, \SIrange, \num
% \usepackage{booktabs} % publication quality tables
% \usepackage{dcolumn} % alignment of numbers in table
\usepackage[margin=1in]{geometry}
\usepackage{fancyvrb}
\usepackage{setspace} % CJK가 주인 문서에서 줄간격이 너무 좁을 때
\onehalfspacing
% \setstretch{1.25} % custom spacing
% hyperref for hyperlinks and figure, table links,
\usepackage[hidelinks, colorlinks, citecolor=Fuchsia, urlcolor=blue,
linkcolor=Cerulean]{hyperref}
\hypersetup{
bookmarksnumbered=true % add section numbers to bookmarks
% colorlinks=true,
% citecolor=blue
}
% pdf bookmark를 위한 정의
\pdfstringdefDisableCommands{\def\XeTeX{XeTeX}\def\XeLaTeX{XeLaTeX}}
\usepackage[all]{hypcap} % and hypcap for fix link positions.
% These two packages must be call at the end.
% 글꼴 설정 ==================================================================
% Settings for fontspec (and xeCJK)
% Ligatures=TeX: TeX 스타일 따옴표, en, em dash를 처리하게 함
% note: 한겨레결체엔 en-, em dash가 없는 듯?
% AutoFakeBold=<factor>: 굵은 폰트가 없을 때
% \setmainfont[Ligatures=TeX]{Linux Libertine O}
\setCJKmainfont[Ligatures=TeX,BoldFont={* ExtraBold},AutoFakeSlant]{나눔명조}
% \setCJKmainfont[Ligatures=TeX,AutoFakeBold=1.5]{한겨레결체}
\setCJKsansfont[Ligatures=TeX,BoldFont={* ExtraBold},AutoFakeSlant]{나눔고딕}
\setmonofont{나눔고딕코딩}
% \setCJKmonofont[Ligatures=TeX]{나눔고딕코딩}
% \setmathrm[Ligatures=TeX,BoldFont={* ExtraBold},AutoFakeSlant]{나눔명조}
% \setmathsf[Ligatures=TeX,BoldFont={* ExtraBold},AutoFakeSlant]{나눔고딕}
% 일반 =======================================================================
% add the section number to the equation label
\numberwithin{equation}{section}
% macros =====================================================================
\newcommand{\homit}{\ensuremath{\cdots\cdots}}
% for debug ==================================================================
\usepackage{lipsum} % usage: \lipsum, \lipsum[1-3]
\usepackage{float} % "H" option for figures
\newcommand{\comment}[1]{\textcolor{OliveGreen}{\textsf{(COMMENT: #1)}}}
\newcommand{\fixme}[1]{\textcolor{Magenta}{\textsf{(FIXME: #1)}}}
% ============================================================================
\begin{document}
\title{ko.\TeX{} 없이 한글 \LaTeX{} 문서 만들기}
\author{이성원}
\maketitle
\section{들어가기}
이 문서는 \TeX{} Live 환경에서 ko.\TeX{}의 추가 설치 없이 기본 repository에 있는 패키지만을 이용하여 한글을 조판하는 방법에 대한 문서입니다.
ko.\TeX{}이라는 멋진 시스템을 만들어 주신 분들껜 정말 감사드리지만(저도 몇 년간 잘 사용했고), 왠진 모르겠지만 \TeX{} Live 기본 repository에는 몇 년이 지나도록 포함되지 않고, 배포는 \TeX{} Live에 얹어서 ko.\TeX{} Live라는 걸 만들어서 통째로 배포하거나, 따로 설치파일로 깔거나, \texttt{tlmgr}에 추가로 repository를 등록한 후 몇몇 설정을 거친 후 깔거나 하는 등 설치, 유지가 약간 번거로웠습니다.
그런데 가만 생각해 보니, \XeTeX{}으로 안될 이유가 없겠다 싶어서, 검색과 삽질 끝에 어느 정도 쓸만 한 결과를 얻었습니다. ko.\TeX{}에서 지원하는 \verb+\dotemph+ 커맨드(드러냄표) 등을 못 쓰는 건 조금 아쉽지만, 영어와 수식을 주로 쓰고 한글은 가끔만 쓰는 경우라면 충분할 것 같습니다.
게다가 \TeX{} Live만 깔면 추가 설치를 위한 삽질도 필요 없고, 다른 사람과 같이 작성하는 경우에도 `그나마' 좀 컴파일에 문제가 적을 것 같고, 요새 많이 나오고 있는 \href{http://www.writelatex.com/}{write\LaTeX} 같은 서비스에 적용하기도 낫기 때문에 (아직은 write\LaTeX{}에서도 \XeTeX{}은 지원하지 않지만, 그래도 ko.\TeX{}에 비해서는 가능성이 많다고 생각합니다.) 저는 앞으로 ko.\TeX{} 없이 이 설정대로 많이 쓸 것 같습니다.
(다른 분에게 파일을 보냈는데, 2010년에 나온 패키지가 없는 것까진 그렇다 쳐도, 5년 넘었으니 업데이트하라는 경고문구가 뜨면서 컴파일이 안될 때까지 쓰시는 건 좀\homit.
업데이트에 돈이 드는 것도 아니고 free software인데, 종종 업데이트를 합시다!)
단순히 문서 전체(모든 알파벳과 한글)에 같은 글꼴을 쓰려면 훨씬 간단하게 되지만, 개인적으로 한글 글꼴에 들어있는 영문 알파벳 글꼴이 별로 마음에 들지 않고, 저는 주로 수식이 포함되는 문서를 사용하기 때문에, 텍스트 모드와 수식 모드에서의 글꼴을 통일하지 않으면 모든 숫자를 수식 모드 안으로 넣어야 하는 불편한 점이 있기 때문에, 그에 필요한 몇 가지 설정을 추가하였습니다.
이 문서에 사용한 한글 글꼴은\ {\CJKfontspec{나눔명조} 나눔명조}, {\CJKfontspec{나눔고딕} 나눔고딕}, {\CJKfontspec{나눔고딕코딩} 나눔고딕코딩}입니다.
% 윗 줄에, CJKfontspec의 공백 처리에 버그가 있는 듯?
\section{설정 (참고로 섹션 제목에도 한글이 잘 됩니다.
책갈피에도 문제 없습니다!)}
대부분 코드에 주석으로 어느 정도 설명은 해 두었지만, 이왕 PDF로 만드는데 나중에 다시 볼 때를 위해 약간의 설명을 적어 두었습니다.
\subsection{\texttt{fontspec} 관련 설정}
\textbf{굵은 글꼴}을 사용하려면 \texttt{BoldFont} 옵션으로 굵은 글꼴을 지정하거나, \texttt{FakeBold}를 설정해야 합니다. (마찬가지로 기울인 글꼴을 쓰려면 slant 관련 옵션을 설정해야 합니다.)
\texttt{Ligatures=TeX}이나 \texttt{Mapping=tex-text} 옵션을 주면 ``\TeX{} `스타일' 따옴표''(\verb+`+, \verb+'+, \verb+``+, \verb+''+)와 dash---en dash(\verb+--+)나 em dash(\verb+---+)---를 쓸 수 있습니다.
수식을 쓰는 경우, \texttt{fontspec}에 \texttt{no-math} 옵션을 주고, \verb+\setmainfont+은 건드리지 않고(주 글꼴을 바꾸지 않고) \verb+\setCJKmainfont+로 CJK 글꼴만 바꾸면 텍스트 모드와 수식 모드에서의 숫자 글꼴이 동일해져서 숫자를 쓸 때 일일이 수식 모드로 바꾸지 않아도 됩니다.
(예: \verb+1$1$, 2$2$+ $\to$ 1$1$, 2$2$) 수식 안의 \verb+\text+ 커맨드 안에서도 한글이 잘 나옵니다.
\begin{align}
\sin^2 x + \cos^2 x &= 1,
\\
\lim_{x \to \infty} \frac{x}{(x+1)(x-1)} &= \text{얼마게?}
\end{align}
설정을 잘 하면 \verb+\mathrm+과 \verb+\mathsf+에서도 된다는 것 같은데 아직 정확한 설정을 못 찾았습니다.
수학 기호로 한글을 쓸 일은 웬만해선 없을테니 일단은 그냥 여기서 만족하기로 했습니다.
(추후 참고할만 한 항목: \texttt{mathspec}, \verb+\setmathrm+, \verb+\setmathsf+, \texttt{CJKmath})
\subsection{\texttt{xeCJK} 관련 설정}
영어와 한글을 같이 쓰면서, 서로 다른 글꼴을 적용하는 건 \texttt{xeCJK} 패키지를 써서 할 수 있습니다.
한글 문서에 적합하게 만드려면 몇 가지 옵션을 설정해야 합니다.
%
\begin{itemize}
\item \texttt{CJKspace=true}: 기본값(\texttt{false})을 사용하면, CJK 글자들은 띄어쓰기를 하지 않고 전부 붙여 버리므로 \texttt{true}를 주어야 합니다.
일어에는 띄어쓰기가 없으므로(아마 중국어도인 듯), 소스코드의 줄바꿈을 띄어쓰기로 인식하는 것을 막기 위해 있는 옵션인 듯 합니다.
\item \texttt{CJKecglue=\{\}}: CJK 글자와 CJK가 아닌 글자 사이에 공백을 얼마나 줄지 결정합니다.
한글 문서에는 별로 필요가 없으므로 (게다가 조사는 반드시 붙여서 써야 하므로) 띄우지 않게 합니다.
\end{itemize}
%
(이상하게 SumatraPDF에서는 별 문제가 없는데, Adobe Reader에서는 많이 확대하지 않으면 한글 렌더링이 꽝이네요.
혹시 아시는 분 있으면 제보(?) 부탁드립니다.)
\section{참고 자료}
\begin{itemize}
\item \texttt{xltxtra}: \url{http://ctan.org/pkg/xltxtra}
\item \texttt{fontspec}: \url{http://ctan.org/pkg/fontspec}
\item \texttt{xeCJK} (\texttt{CJK}의 \XeLaTeX{}용): \url{http://www.ctan.org/pkg/xecjk} (도움말이 중국어 뿐이라 고생했습니다.
영어로 된 건 없나요? ㅠㅠ)
\item \texttt{fancyvrb}의 \texttt{Verbatim} 안 글꼴 바꾸기: \url{http://tug.org/pipermail/xetex/2011-March/020245.html}
\end{itemize}
\section{이 파일의 소스코드}
제가 다른 용도로 쓰던 파일을 기반으로 바꾼 것이라 한글 사용과는 관련없는 다른 설정도 많이 들어있지만, 그냥 기록 겸 백업 겸 해서 지우지 않고 두었습니다.
\begin{singlespace}
{\CJKfontspec{나눔고딕코딩}
\VerbatimInput[%
frame=single,%
fontsize=\relsize{-2},%
fontfamily=나눔고딕코딩(0)% Workaround for set western font in Verbatim
]{./hangul_without_kotex.tex}
}
\end{singlespace}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment