From 58c4ce1681c0ba0f511802729b1409b92a864617 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 14 Mar 2020 21:01:21 +0000 Subject: kotex-oblivoir (14mar20) git-svn-id: svn://tug.org/texlive/trunk@54302 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/latex/kotex-oblivoir/ChangeLog | 14 + Master/texmf-dist/doc/latex/kotex-oblivoir/README | 91 +- .../kotex-oblivoir/doc/oblivoir-simpledoc.pdf | Bin 223149 -> 0 bytes .../kotex-oblivoir/doc/oblivoir-simpledoc.tex | 1591 ------------------- .../doc/latex/kotex-oblivoir/doc/oblivoir-test.tex | 1326 ---------------- .../latex/kotex-oblivoir/oblivoir-simpledoc.pdf | Bin 0 -> 230610 bytes .../latex/kotex-oblivoir/oblivoir-simpledoc.tex | 1677 ++++++++++++++++++++ .../doc/latex/kotex-oblivoir/oblivoir-test.tex | 1339 ++++++++++++++++ 8 files changed, 3041 insertions(+), 2997 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.pdf delete mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.tex delete mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-test.tex create mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf create mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex create mode 100644 Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex (limited to 'Master/texmf-dist/doc') diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/ChangeLog b/Master/texmf-dist/doc/latex/kotex-oblivoir/ChangeLog index ab21d7db9d0..c969d9c9d62 100644 --- a/Master/texmf-dist/doc/latex/kotex-oblivoir/ChangeLog +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/ChangeLog @@ -1,3 +1,17 @@ +2020-02-09 Kangsoo Kim + + Version 2.2 + + * Full integration of oblivoir.cls and xoblivoir.cls. + * Bug fixes. + * oblivoir.cls: version 2.2 + * oblivoir-utf.cls: version 0.8.2 + * oblivoir-xl.cls: version 0.8.4 + * memhangul-x.sty: version 11.11 + * xetex-var.sty: version 0.14 + * xob-font.sty: version 0.8 + * xob-lwarp.sty: new file + 2017-02-03 Kihwang Lee Version 2.1.8 diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/README b/Master/texmf-dist/doc/latex/kotex-oblivoir/README index 0193ea7739e..a91b290d9e9 100644 --- a/Master/texmf-dist/doc/latex/kotex-oblivoir/README +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/README @@ -1,16 +1,15 @@ -kotex-oblivoir -============== +kotex-oblivoir, v2.2 +==================== Introduction ------------ -This package contains the oblivoir class, a document class based on -the memoir class for typesetting Korean documents. kotex-oblivoir +This package contains the oblivoir class, a document class based on +the memoir class for typesetting Korean documents. kotex-oblivoir comes with two sub-packages memhangul-ucs and memhangul-x -that provide interfaces between the memoir class and the Korean typesetting -packages. +that provide interfaces between the memoir class and the Korean typesetting packages. -kotex-oblivoir belongs to the ko.TeX, a comprehensive Korean typesetting +kotex-oblivoir belongs to the ko.TeX, a comprehensive Korean typesetting system together with packages kotex-utf, kotex-plain, kotex-utils, cjk-ko, xetexko, and luatexko. @@ -20,47 +19,7 @@ Dependencies kotex-oblivoir depends on the following packages to function: * memoir: base class -* kotex-utf: Korean typesetting - -Files ------ - -### TeXinputs - - oblivoir-base.cls -> tex/latex/kotex-oblivoir/ - oblivoir-xlua.cls -> tex/latex/kotex-oblivoir/ - oblivoir.cls -> tex/latex/kotex-oblivoir/ - xoblivoir.cls -> tex/latex/kotex-oblivoir/ - memhangul-ucs/10_5.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/fapapersize.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/hfontsel.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/hfontspec.nanum -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memhangul-common.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memhangul-patch.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memhangul-ucs.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memucs-enumerate.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memucs-gremph.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memucs-interword.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/memucs-setspace.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/nanumfontsel.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/ob-koreanappendix.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/ob-nokoreanappendix.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-ucs/ob-toclof.sty -> tex/latex/kotex-oblvoir/memhangul-ucs/ - memhangul-x/memhangul-x.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/memucs-interword-x.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xetexko-var.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xob-amssymb.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xob-font.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xob-dotemph.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xob-hyper.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - memhangul-x/xob-paralist.sty -> tex/latex/kotex-oblivoir/memhangul-x/ - -### Documents - - README (this file) -> doc/latex/kotex-oblivoir/ - doc/oblivoir-simpledoc.pdf -> doc/latex/kotex-oblivoir/ - doc/oblivoir-simpledoc.tex -> doc/latex/kotex-oblivoir/ - doc/oblivoir-text.tex -> doc/latex/kotex-oblivoir/ +* ko.TeX: Korean typesetting Usage ----- @@ -71,38 +30,11 @@ Call `oblivoir.cls` with class options as follows: ### Class options -Oblivoir inherits many options from the memoir and underlying -Korean typesetting packages in addition to its own class options. -For a detailed description of the class options, please refer +Oblivoir inherits many options from the memoir and underlying +Korean typesetting packages in addition to its own class options. +For a detailed description of the class options, please refer to the included documentation (written in Korean). -### Specifying Korean fonts - -Specifying Korean fonts in oblivoir class depends on the Korean -typesetting packages being used when compiling a document. - -With kotex-utf package, you can use `\SetHangulFonts`, `\SetHanjaFonts`, -`\SetAdhocFonts`. - -You can use fontspec package style commands when typesetting Korean -using XeTeX-ko or LuaTeX-ko as follows: - - \setmainfont[]{} - \setsansfont[]{} - \setmonofont[]{} - \setmainhangulfont[]{FontName} - \setsanshangulfont[]{FontName} - \setmonohangulfont[]{FontName} - \setmainhanjafont[]{FontName} - \setsanshanjafont[]{FontName} - \setmonohanjafont[]{FontName} - -Oblivoir class also has its own commands for specifying Korean fonts. - - \setkormainfont[]()()() - \setkorsansfont[]()()() - \setkormonofont[]()()() - ### Sample document Please refer to the `oblivoir-test.tex` file provided by this package. @@ -110,7 +42,7 @@ Please refer to the `oblivoir-test.tex` file provided by this package. License ------- -kotex-oblivoir is licensed under the LaTeX Project Public +kotex-oblivoir is licensed under the LaTeX Project Public License (LPPL) version 1.3c or later. Contacts @@ -118,4 +50,3 @@ Contacts Please report any errors or suggestions to the package maintainer, Kihwang Lee . - diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.pdf b/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.pdf deleted file mode 100644 index 8863e70e992..00000000000 Binary files a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.tex b/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.tex deleted file mode 100644 index 562a9f01908..00000000000 --- a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-simpledoc.tex +++ /dev/null @@ -1,1591 +0,0 @@ -% !TEX Encoding = UTF-8 Unicode -%% oblivoir-simpledoc.tex -%% written by Nova De Hi, 2015/04/19 -%% public domain. -%% -%% part of oblivoir -%% -% arara: xelatex -% arara: xelatex -% arara: lmkclean -\documentclass[ - 12pt, - a4paper, - kosection, - footnote, - nobookmarks, - microtype, -]{oblivoir} - -\usepackage{fapapersize} -\usefapapersize{*,*,30mm,*,35mm,*} - -\usepackage{kotex-logo} - -\hypersetup{colorlinks,linkcolor=blue} - -%%% ifpxltex can be installed from KTUG Private Repository. not included in TeX Live -\usepackage{ifpxltex} - -\IfpxlTeXpxl*{p}{x,l} -{ - \def\myREF#1#2{\ref{#1}} - \def\myLabel#1#2{\label{#1}} - \def\myPageREF#1#2{\pageref{#1}} -} -{ - \def\myREF#1#2{\ref{#2}} - \def\myLabel#1#2{\label{#2}} - \def\myPageREF#1#2{\pageref{#2}} -} - -\def\cs#1{\texttt{\textbackslash #1}} -\def\util#1{\texttt{#1}} -\def\ct#1{\texttt{#1}} - -\ifx\oblivoirdblquote\undefined -\def\oblivoirdblquote#1{``#1''} -\fi - -\IfpxlTeX*{x,l} -{ - \defaultfontfeatures{Renderer=OpenType} - \setkomonofont(NanumBarunGothic-YetHangul.ttf)[Scale=0.9] - \setobmonofont(Menlo)[Scale=.9] - \setobmainfont(Minion Pro) - \setobsansfont(Myriad Pro) - \setkomainfont[KoPubBatang ](Light)(Bold) -} - -\newcommand\xobclass{x\-ob\-liv\-oir\oblivoirallowbreak} -\newcommand\obclass{ob\-liv\-oir\oblivoirallowbreak} -\def\xetexko{\XeTeX-\ko} -\def\luatexko{\LuaTeX-\ko} - -\pagestyle{ruled} - -\usepackage{tabu} - -\IfpxlTeX*{p,x} -{ - \usepackage[normalem]{ulem} -} - -\begin{document} - -\title{초간단 \obclass{} v2.1 사용법} - -\date{2015년 4월} - -\author{x-ob-liv-oir } - -\maketitle - -\begin{abstract} -\obclass{} 클래스 2.0 버전은 그 동안 별도의 브랜치로 개발되어 오던 -\xobclass와 \obclass를 통합하여 완전히 동일한 클래스가 되었다. -이 문서는 \obclass{} 즉 \xobclass를 -사용하는 방법을 간략히 기술한다. -\end{abstract} - -\tableofcontents* - -\clearpage - -\section{\obclass와 \xobclass{}} - -%\xobclass{}는 \obclass{}에서 파생된 클래스이다. -%\obclass{}가 \LaTeX, pdf\LaTeX 을 위한 것이라면, \xobclass{}는 Lua\LaTeX이나 \XeLaTeX 을 위한 것이다. -%이 글은 \XeLaTeX\oblivoirallowbreak 으로 \xobclass{}를 쓰려 하는 경우에 대해서만 기술한다. Lua\LaTeX{}에 -%대해서는 별도로 특기할 만한 것이 없기도 하려니와 아직 준비가 미흡하여, 차후로 미룬다.\footnote{% -% 준비가 미흡하다는 것은 \xobclass{}의 입장에서 하는 말이다. 현재도 \xobclass{}를 통한 -% Lua\LaTeX 은 훌륭하게 사용할 수 있다, 고 생각하고 있다.} - -\koTeX\ 2.0 (2013/09/30)의 등장\footnote{% - \texttt{texdoc kotex} 명령을 내리면 kotexdoc 문서를 읽을 수 있다.}% -으로 \koTeX\ 패키지군은 이전의 텍 엔진\footnote{% - 이른바 ``레거시 텍''이라 하는 \hologo{TeX}, \hologo{eTeX}, \hologo{pdfTeX}을 - 가리킨다.}% -과 새로운 엔진들, \hologo{pdfLaTeX}, \hologo{XeLaTeX}, -\hologo{LuaLaTeX}에 모두 일관성있게 대응하도록 변모하였다. -이러한 변화에 발맞추어, 레거시 텍 엔진을 위한 \obclass와 새로운 텍 엔진(주로 \hologo{XeLaTeX})을 위한 \xobclass로 -나누어져 있던 oblivoir 클래스도 체계를 정비하여 그 구별을 없애고 동작하는 엔진에 따라 동작 방식을 -자동으로 대응하도록 고쳐졌다. 그러므로, 현재 \obclass로 작성하는 문서는 -(사용자가 몇 가지 주의깊게 엔진별 동작을 지정하기만 하면) 모든 텍 엔진에서 에러 없이 컴파일되고 -유사한 결과를 얻을 수 있게 되었다.\footnote{% - 폰트 사용 방식의 차이로 인해 ``완전히 동일한'' 결과를 보증하지는 않는다.} - -그 동안 \obclass는 비교적 복잡한 길을 거쳐왔다. 대강 정리하면, -\begin{enumerate}[(1)]\tightlist -\item H\LaTeX\ (나중의 kotex-euc) 한글을 memoir에서 쓰기 위하여 개발된 memhangul. 이 스타일은 더이상 사용할 수 없다. -\item dhucs (현재의 kotex-utf) 유니코드 한글을 memoir에서 쓰기 위하여 개발된 memhangul-ucs -\item memhangul-ucs를 바탕으로 memoir 클래스를 통하여 문서를 만드는 fake-article -\item fake-article을 oblivoir로 개명 -\item \hologo{XeTeX}을 위한 xoblivoir -\item xoblivoir에 \hologo{LuaTeX} 지원의 추가 -\item xoblivoir와 oblivoir를 통합 -\end{enumerate} -이와 같이 발전하여 온 것이고, 이제 oblivoir와 xoblivoir는 완전히 동일한 클래스가 되었다. - -이 문서는 \obclass의 고유한 옵션과 폰트 설정 방식에 대해서만 설명한다. 실제로 \obclass를 -이용하여 문서를 작성할 때는 다음 세 층위의 명령이 모두 사용가능하다. -\begin{enumerate}[(1)]\tightlist -\item memoir 명령 -\item 한글 엔진(\koTeX, \XeTeX-\ko, \LuaTeX-\ko)의 명령 -\item oblivoir 명령 -\end{enumerate} - -이 각각의 명령에 대한 정보를 얻으려면, memoir 매뉴얼(\texttt{texdoc memman}), -한글 패키지 매뉴얼(예컨대, \texttt{texdoc kotex}, \texttt{texdoc xetexko})을 -읽어야 한다. -%이 문서에서는 위의 두 패키지 층위의 명령군에 대해 언급할 때, 여백에 \fbox{memoir}, \fbox{kotex}등을 -%표시하겠다. 그리고 엔진별로 고유한 옵션과 명령에 대해서는 해당 사항을 본문에서 밝힌다. - -위의 두 층위의 문서에서 설명하지 않는 \obclass에 대한 정보를 이 문서에서 얻을 수 있다. - -%%\xobclass{}는 김도현 교수의 xkospace 및 xetexko-josa 패키지를 바탕으로 하고 있다. -%\xobclass{}는 김도현 교수의 xetexko 패키지를 바탕으로 하고 있다. 이 패키지는 -%2008년 10월 12일에 처음 발표되었으며 그 이전에 시험되던 xkospace를 확장하고 다듬은 것이다. -%xetexko-space, xetexko-josa, xetexko-dotemph 및 xetexko-font가 포함되어 있는데 -%\xobclass{}는 이를 바탕으로 하면서 사용자 인터페이스를 조금 확장하고 -%\obclass{}와 호환되게 한 것이다. -%\xobclass{}의 쉬운 인터페이스를 통하여 현재 \TeX 에서의 한글 구현이 어느 단계까지 -%와 있는지를 일반 사용자도 경험하는 기회가 되기를 바란다. 한편 2010년 학술대회를 -%전후하여 \xetexko 는 한글 조판과 식자에 있어 ``거의 완전한 단계''에 이르렀다. -%\xobclass 에서 시도하던 많은 부분이 \xetexko\ 자체에 의해 구현되게 된 것도 많으며 -%실제로 출판 현장에서 이를 활용하는 데 부족함이 없을 정도가 되었다. 이제 \xobclass 는 -%memoir 클래스를 \xetexko 와 함께 쓰도록 하는 클래스라는 데 더 큰 의의가 있게 되었다. -%한글 \TeX\ 개발에 고군분투하시는 김도현 교수께 감사의 말씀을 드린다. -% -%\xetexko 의 이해 없이 \xobclass 를 사용하기 어렵다. 그러므로 반드시 -%\xetexko\ 매뉴얼을 읽어두는 것은 매우 중요하다. \xobclass 에서 -%\xetexko 명령은 원칙적으로 모두 사용할 수 있다. \xetexko\ 매뉴얼을 -%읽으려면, -%\begin{verbatim} -%$ texdoc xetexko -%\end{verbatim} -%를 실행한다. - -\section{oblivoir와 memhangul} - -memhangul은 memoir를 한글 문서 작성에 사용할 수 있게 하기 위하여 개발된 스타일 패키지이다. -원래 독립된 스타일로서 개발되고 유지되어 왔지만, 현재는 더이상 독립적인 스타일로 사용되지 않으며 -oblivoir의 핵심 기능을 정의한 서브스타일로서만 유지된다. -즉 oblivoir란 memhangul을 이용하는 한글 문서작성 클래스라고 할 수 있다. - -\section{한글 드라이버} - -\obclass는 현재 실행되는 텍 엔진의 종류에 따라 한글 식자를 위하여 다음과 같은 한글 패키지를 -부른다. 이 한글 패키지들을 (편의상) \obclass의 한글 드라이버라고 한다. - -\begin{center} -\begin{tabu}to.75\columnwidth{X|X|X} -\hline -oblivoir 옵션 & 텍 엔진 & 한글 식자 패키지 \\ \hline -no option & \hologo{pdfLaTeX} & \koTeX-utf \\ -no option & \hologo{XeLaTeX} & \XeTeX-\ko \\ -no option & \hologo{LuaLaTeX} & \LuaTeX-\ko \\ \hline -\end{tabu} -\end{center} - -\section{옵션들} - -\subsection{memoir 옵션} - -원칙적으로 oblivoir는 memoir의 모든 옵션을 동일한 의미로 다 받아들인다. 여기에 해당하는 것으로 -다음과 같은 것이 있다. -\begin{description} -\item[용지 크기] a6paper, a5paper, a4paper, a3paper, b6paper, b5paper, b4paper, b3paper, mcrownvopaper, mlargecrownvopaper, mdemyvopaper, msmallroyalvopaper, dbillpaper, statementpaper, executivepaper, letterpaper, oldpaper, legalpaper, ledgerpaper, broadsheetpaper, pottvopaper, foolscapvopaper, crownvopaper, postvopaper, largecrownvopaper, largepostvopaper, smalldemyvopaper, demyvopaper, mediumvopaper, smallroyalvopaper, royalvopaper, superroyalvopaper, imperialvopaper. -\item[본문 기본 글자 크기] 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, 20pt, 25pt, 30pt, 36pt, 48pt, 60pt, *pt, extrafontsizes -\item[프린팅 옵션] twoside, oneside, onecolumn, twocolumn, openright, openleft, openany, final, draft, -ms, showtrims -\item[기타 옵션] leqno, fleqn, openbib, article, oldfontcommands -\end{description} -이상의 옵션의 의미와 효과에 대해서는 memoir 매뉴얼을 읽어보라. - -\subsection{한글 드라이버의 옵션} - -한글 식자를 위하여 로드되는 패키지에는 고유한 옵션들이 있다. \obclass는 다음과 같은 옵션을 해당 -한글 드라이버에 넘겨준다. - -\begin{description} -\item [\koTeX-utf] hangul, \uline{hanja}, nojosa, \uline{nonfrench}, \uline{finemath}, \uline{strictcharcheck} -\item [\XeTeX-\ko] hangul, hanja, unfonts.\footnote{unfonts 옵션은 \obclass에서 조금 다르게 동작하므로 아래 해당 부분을 참고할 것.} -\item [\LuaTeX-\ko] hangul, hanja, unfonts -\item [cjk-\ko] hangul, hanja, nojosa, \uline{usedotemph}, \uline{usecjkt1font}. usecjkt1font 옵션은 uset1font로 입력해도 받아들인다. -\end{description} -이 가운데 [hangul] 옵션은 사실상 지정할 필요가 없다. hangul 옵션이 주어져도 예들 들어 절 숫자의 형식 같은 것은 \obclass\ 방식이 유지되기 때문이다. 그러므로 밑줄 그은 옵션만이 \obclass에서 의미가 있다고 할 것이다. - - -\subsection{\obclass의 옵션} - -\subsubsection{한글 드라이버를 지정하는 옵션} - -다음 두 옵션은 한글 드라이버를 강제로 지정하는 옵션이다. 이 옵션을 쓸 때는 오직 \hologo{pdfLaTeX}만을 -실행한다는 의미임을 기억해두자. -\begin{description} -\item [cjk] cjk-\ko 패키지로 한글을 표시한다. 이 패키지는 memhangul의 일부 기능과 충돌할 가능성이 -있으며 memhangul은 원칙적으로 cjk-\ko를 지원하지 않는다. 그러나 한글 표현만을 위해서라면 이 옵션으로 -문서를 작성할 수 있다. -\item [dhucs] \koTeX-utf로 한글을 표현한다. \hologo{pdfLaTeX}에서 디폴트이며 memhangul-ucs는 -이 패키지를 의도하고 작성된 것이다. -\end{description} - -따라서, 다음 옵션들은 해당하는 드라이버에서만 의미를 갖는다. -\begin{description} -\item [strictcharcheck] \koTeX-utf. 엄격한 문자 검사. -\item [finemath] \koTeX-utf. 한글 간격 미세 조정. -\item [nofinemath] \koTeX-utf. finemath 기능을 끔. -\item [usedotemph] cjk-\ko. \verb|\dotemph| 명령 사용 가능. -\item [uset1font] cjk-\ko. 라틴문자도 nanumtype1으로 찍음. -\item [interwordHWP] \koTeX-utf. 단어 간격을 조금 더 넓게 벌려준다. -\item [interworddefault] \koTeX-utf. 단어 간격을 적당히 벌려준다. -\end{description} - -\subsubsection{레거시 텍과 관련된 옵션} - -다음 옵션은 \hologo{pdfTeX} 엔진 또는 \hologo{eTeX} 엔진에서만 의미를 갖는다. 이 옵션이 주어지고 -새로운 텍 엔진이 운영될 때는 무시된다. -\begin{description} -\item [dvips] \obclass로 작성된 문서를 latex $\rightarrow$ dvips $\rightarrow$ ps2pdf 순으로 -컴파일하려 할 때, 즉 pstricks를 이용할 때 이 옵션을 주어야 한다. 이 옵션을 준 문서에 대하여 \hologo{pdfLaTeX}을 -실행하면 안 된다. -\item [romanfixed] 로마 글자의 크기와 위치를 미세조정하는 옵션으로서 untype1을 쓸 때 유용하다. 현재 상황에서는 의미가 크지 않음. -\end{description} - -\subsubsection{여러 가지 옵션} - -다음은 \obclass 의 고유한 옵션들이다. -\begin{description} -\item [chapter] \verb|\chapter| 명령을 제대로 쓸 수 있게 해준다. 이 옵션이 없으면 \obclass는 \verb|\section|부터 시작하는 문서라고 간주하고 식자하지만 \verb|\chapter|에서 에러를 내지는 않는다. -\item [kosection] \verb|\section|에 대하여 ``제''와 ``절''을 찍어주도록 하는 옵션이다. -\item [amsmath] amsmath.sty와 amssymb.sty를 미리 로드해주는 옵션이다. -\item [adjustmath] 한글 문서의 행간격이 벌어짐으로 인해서 display 수식의 전후에 너무 많은 공백이 생기는 것을 막아준다. -\item [arabicfront] \verb|\frontmatter| 부분의 페이지 숫자를 아라비아 숫자로 찍는다. 기본값은 로만 숫자. -\item [footnote] 각주 번호와 숫자를 한국식으로 식자한다. -\item [figtabcapt] 그림과 표에 \cnm{그림 1}과 같은 방식으로 캡션을 단다. -\item [gremph] 글꼴 대체 강조 방식을 쓴다. 이것이 기본값이다. -\item [itemph] 기울인 글꼴 강조 방식을 쓴다. -\item [nonfrench] nonfrenchspacing. -\item [hangulpagestyle] 본문의 페이지 스타일을 hangul 양식으로 한다. -\item [nokorean] 사실상 memoir와 거의 같은 상태가 되게 한다. 즉 pdf bookmark도 만들지 않으며 한글도 찍히지 않는다. -\item [pdfbookmark] nokorean 옵션을 주면서도 북마크는 만들도록 hyperref을 로드해주는 역할을 한다. nokorean 옵션이 주어지지 않을 때는 무의미함. -\item [10.5pt] 본문 활자 크기를 10.5pt로 한다. -\item [quotespacing] quote, quotation 환경의 줄간격을 `좁은 줄간격'으로 줄인다. -\item [nanum] 나눔명조/나눔고딕 트루타입 글꼴을 기본 글꼴로 사용하도록 설정한다. -\item [hcr] 함초롬 LVT 글꼴을 기본 글꼴로 사용하도록 설정한다. -\end{description} - -\bigskip - -다음 옵션들은 특별한 상황에서 의미를 가지는 것이다. -\begin{description} -\item [lyxhyper] LyX에서 문서를 작성할 때 LyX이 강제로 hyperref을 로드하는 기능과 \obclass의 hyperref 로드 기능이 충돌하는 것을 방지하기 위한 것이다. -\item [tocentry] chapter 옵션과 같이 쓰여서 toc, lof의 엔트리를 조정해준다. -\item [microtype] 이 옵션이 지정되면 \hologo{pdfTeX}과 \hologo{LuaTeX}에서 microtype 패키지를 불러온다. 다만 \hologo{XeTeX}에서는 문장부호 끌어내기를 위한 xetexko-hanging 스타일을 로드한다. -\item [subfigure] subfig 패키지 대신 subfigure 패키지를 쓰기 위해서 충돌이 있는 코드 하나를 수정해준다. -\item [manualfontspec] fontspec 패키지를 자동으로 로드하지 않고 사용자가 직접 설정하고자 할 때 -\item [fontspec] fontspec 패키지에 넘겨줄 옵션을 지정한다. -\item [xcolor] xcolor 패키지에 넘겨줄 옵션을 지정한다. -\item [hyperref] hyperref 패키지에 넘겨줄 옵션을 지정한다. -\item [moreverb] moreverb 패키지를 사용하려 할 때. 약간의 충돌을 해결해준다. -\item [preload] \verb|\documentclass|가 시작되기 전에 로드해야 할 패키지를 지정한다. -\item [preloadoption] preload할 때 함께 넘겨줄 옵션을 쓴다. -\item [faht, fawd] 특별히 pdf 사이즈를 조절할 필요가 있을 때 사용한다. 특히 flowfram 패키지를 위해서 필요하다. -\item [noreserveinserts] \hologo{eTeX}의 reserveinserts 확장 코드를 억제한다. 일반적으로 사용할 필요 없다. -\item [moreroom] \hologo{pdfTeX}에서 용량 부족으로 에러가 발생할 때 특별히 지정한다. -\end{description} - -\bigskip - -다음 옵션들은 현재 큰 의미를 지니지 않는 것들이다. 대부분 \koTeX 의 발전과 더불어 \obclass에서 특별히 지정할 필요가 없어졌다. -\begin{description} -\item [unfonts] 은 글꼴을 사용하게 한다. 레거시 텍에서는 untype1이고 새로운 텍 엔진에서는 은글꼴 트루타입이 기본 글꼴이 된다. -\item [nounfonts] 은 글꼴을 사용하지 않게 한다. 이것이 디폴트이다. -\item [latinquote] 따옴표를 라틴 글꼴에서 찍도록 강제하는 옵션이었다. 현재는 아무런 작용도 하지 않는다. -\item [oldhangul] 옛한글 식자를 위한 옵션이었다. 현재는 이 옵션이 없어도 옛한글을 잘 처리한다. -\item [nowinname] 은글꼴을 위해서 마련된 옵션이었으나 현재는 무의미하다. -\end{description} - - -%\section[\obclass{}와 비교]{\obclass{}\footnote{현재 documentclass 이름으로 oblivoir를 쓰든 xoblivoir를 쓰든 실행되는 엔진에 따라 기능이 설정된다. 그러나 여기서는 pdf\TeX\ 엔진에서 쓰던 legacy oblivoir를 가리키는 경우에 ``\obclass''라고 하였다.}와 비교} - -%%%다음 옵션은 disable되었다. 아무런 작용이 없는 것이므로 에러를 -%%%발생하지는 않지만 효과도 없다. -%%%\begin{description} -%%%\item [{[dvips]}] 당연히 더이상 쓸 일이 없으므로. -%%%\item [{[romanfixed]}] 폰트 관련된 옵션은 대부분 비활성화된다. -%%%\item [{[finemath]}, {[nofinemath]}] 이 옵션은 disable되었다. finemath에 관련된 사항은 \xetexko 에서 모두 구현하고 있다. -%%%%그러나 완전한 호환은 아직 되지 않는다. 대표적인 예가 괄호 뒤의 간격이다. -%%%\item [{[strictcharcheck]}] dhucs 특유의 옵션이었다. -%%%\end{description} -%%% -%%%다음 옵션이 새로 생겨났다.\footnote{% -%%% [latinquote] 옵션은 더이상 아무런 작용을 하지 않는다. -%%%} -%%%\begin{description} -%%%%\item [{[latinquote]}] 홑따옴표와 겹따옴표를 식자하는 폰트를 라틴 문자 폰트로 할 것인가 한글 폰트로 할 것인가를 결정하는 -%%%%것이다. 이 옵션이 주어지면 라틴 문자 폰트의 겹따옴표를 식자한다. -%%%\item[{[manualfontspec]}, {[fontspec]}] 이 옵션의 동작에 대해서는 \myREF{sec:fontspec}{sec:폰트스펙}\를 보라. 2011/09/15 이전 버전에서는 옵션 명칭이 [fontspec]이었으나 이 옵션은 다른 기능으로 쓰이게 되었다. -%%%\item[{[moreverb]}] 이 옵션의 동작에 대해서는 \myREF{sec:moreverb}{sec:모아버브}\를 보라. -%%%%\item[{[oldhangul]}] 이 옵션의 동작에 대해서는 \ref{sec:올드한글}\를 보라. -%%%\item[{[amsmath]}] 이 옵션의 동작에 대해서는 \myREF{sec:ams}{sec:에이엠에스}\를 보라. -%%%\item[{[nowinname]}] 이 옵션의 동작에 대해서는 \myREF{sec:nowinname}{sec:노윈네임}\를 보라. -%%%%\item[{[verthangul]}] 이 옵션의 동작에 대해서는 \ref{sec:세로쓰기}\를 보라. %%% not implemented -%%%\item [{[microtype]}] 이 옵션의 동작에 대해서는 \myREF{sec:microtype}{sec:마이크로타입}\를 보라. -%%%\end{description} -%%% -%%%다음 옵션은 그대로 있지만 동작이 달라졌다. -%%%\begin{description} -%%%\item [{[itemph]}] emph 또는 itshape에 한글을 기울여서 식자한다. -%%%\item [{[gremph]}] emph 또는 itshape에 한글을 바로 선 폰트로 식자한다. -%%%\end{description} -%%%%gremph와 itemph의 차이는 이제 italic인가 아닌가의 차이뿐이다. -%%% -%%%다음 옵션은 특별한 예외 처리를 위한 것이다. 일반적인 경우에는 쓰이지 않는다. -%%%\myREF{sec:flowfram}{sec:플로프렘}\를 보라. -%%%\begin{description} -%%%\item [{[faht]}, {[fawd]}] 문서 전체의 stockheight와 stockwidth를 미리 설정한다. -%%%\item[{[preload]}, {[preloadoption]}] 이 옵션의 동작에 대해서는 \myREF{sec:preload}{sec:프리로드}\를 보라. -%%%\end{description} -%%% -%%%레거시 ko.\TeX 의 폰트 설정 명령들은 전혀 동작하지 않고 에러를 토해낸다는 사실을 알아야 한다. 즉, \texttt{\textbackslash{}SetAdhocFonts}라든가 -%%%\texttt{\textbackslash{}SetHangulFonts} 같은 명령은 제거되어 있다. \XeLaTeX{}을 -%%%쓰는 목적이 주로 폰트 문제와 관련이 있으므로, 종래의 폰트 설정 방식은 모두 \XeLaTeX{} 방식으로 바꾸도록 해야 한다. -%%%%다음은 제거된, 더이상 사용할 수 없는 명령들이다. -%%%%\begin{verbatim} -%%%% \SetHangulFonts -%%%% \SetHanjaFonts -%%%% \SetAdhocFonts -%%%% \SetGremphFonts -%%%% \interhchar -%%%%\end{verbatim} -%%% -%%%그밖의 모든 \obclass{}의 기능을 \xobclass{}에서 쓸 수 있다. -%%%한글 문서 작성에 있어서 표준이 되고자 하는 \obclass{}를 -%%%\XeTeX 에서\explpunc.Lua\TeX 에서도.\ 편리하게 사용할 수 있게 되기를 바라 마지 않는다. - -\section{폰트 설정 방식에 대한 간단한 설명}\myLabel{sec:font}{sec:폰트} - -\subsection{\koTeX-utf 엔진} - -글꼴 선택 명령 \verb|\SetHangulFonts|, \verb|\SetHanjaFonts|, \verb|\SetAdhocFonts|와 더불어, -gremph 옵션이 주어졌을 때 \verb|\SetGremphFonts| 등을 사용한다. -이 명령의 의미와 용법에 대해서는 \koTeX\ 사용설명서를 참고하라. - -아무런 지정도 없을 경우 nanumtype1으로 식자하고, 이것은 \koTeX-utf의 디폴트 상황과 동일하다. -gremph는 \koTeX-utf에서 \verb|\usepackage{dhucs-gremph}|를 선언한 경우와 동일하게 -동작하므로 별도로 이 스타일을 얹을 필요는 없다. - -\subsection{\XeTeX-\ko, \LuaTeX-\ko} - -한글 드라이버들은 라틴 문자 폰트와 한글/한자 폰트를 분리하는 것을 기본으로 하고 있다. -% \footnote{% - % 한글과 라틴 문자을 분리하지 않으려 할 경우, fontspec 패키지의 - % \texttt{\textbackslash{}fontspec} 명령 등을 사용할 수 - % 있다. 그러나 폰트 테스트 등의 특별한 목적이 아니고 일반 - % 문서 작성 상황에서 이렇게 써야 할 이유가 별로 없을 것이다. -% % 예를 들어 라틴 문자자까지 바탕체를 쓰면: -% % {\setkormainfont{바탕}\fontspec{바탕}% -% % 한글 바탕체. The quick brown fox jumps over the lazy dog.} - % 또한, 한글 폰트와 한자 폰트를 분리할 수 있는데, 이에 대해서는 - % \ref{sec:디폴트}\를 참조하라. - % } -한글과 라틴 문자 글꼴을 분리하지 않으려 할 경우, -\xetexko\ 명령인 -\verb|\disablekoreanfonts|를 선언한다. -%\footnote{% -% \XeTeX{}ko 2008/11/10 이후 버전.} -%%\xetexko 를 따라서 \verb|\hangulmarks|와 같은 명령군이나 \verb|\xetexkofontregime| -%%명령을 활용하면 된다. 이에 대해서는 \xetexko\ 매뉴얼을 (반드시) 참조하라. -이렇게 하면 한글 글꼴은 -라틴 문자 글꼴을 따라가게 된다. 즉, \texttt{\textbackslash setmainfont} -등으로 선언된 글꼴이 한글과 라틴 문자에 동시에 식자된다.\footnote{% - 이외에도 한글-라틴 문자 글꼴의 분리에 따르는 여러 가지 옵션 정의에 관련된 - \xetexko, \luatexko\ 매크로가 있으므로 이에 대해서는 \xetexko, \luatexko\ 매뉴얼을 - 참고하라. -} - -\paragraph{라틴 문자} -라틴 문자 폰트는 fontspec 패키지의 방식을 따른다. -설정과 사용에 대해서는 fontspec 패키지 문서를 참고하라. -매우 방대하고 훌륭한 문서이다. - -\begin{boxedverbatim} -\setmainfont{} -\setsansfont{...} -\setmonofont{...} -\end{boxedverbatim} - -이 명령의 옵션으로 \verb|[Ligatures=TeX]|을 주면 \verb|``|, \verb|---|와 같은 -입력이 ``, ---와 같이 나타난다. 대부분의 텍 소스에는 이런 이른바 텍 리거쳐를 사용하는 것이 -일반적이므로 이 옵션을 지정하는 것이 좋다. 최신 버전의 fontspec은 이 옵션을 자동으로 붙여주며, -아래 설명할 \cs{setkomainfont} 등의 명령을 써도 역시 이 옵션은 자동으로 붙는다. -%\XeTeX 에서 \verb|[Mapping=tex-text]| 옵션을 -%써도 좋은데 이 옵션은 \LuaTeX 에서는 무의미하므로 양쪽에 통용되는 \verb|[Ligatures=TeX]|을 -%쓰도록 하자. 따라서 -만약 \ct{TeX Gyre Termes}를 라틴 문자 세리프 글꼴로 쓰려 한다면, -\begin{verbatim} -\setmainfont[Ligatures=TeX]{TeX Gyre Termes} -\end{verbatim} -와 같이 지정하면 된다. - -\paragraph{한글과 한자} -한글 폰트는 다음 명령을 사용하여 설정한다. 자세한 사항은 \xetexko, \luatexko\ 매뉴얼을 참고하라. -\begin{boxedverbatim} -\setmainhangulfont[Options]{FontName} -\setsanshangulfont[Options]{FontName} -\setmonohangulfont[Options]{FontName} -\setmainhanjafont[Options]{FontName} -\setsanshanjafont[Options]{FontName} -\setmonohanjafont[Options]{FontName} -\end{boxedverbatim} - -이밖에 특별한 명령으로 \luatexko에는 fallbackfont를 위한 명령이 있다. -\begin{boxedverbatim} -\setmainfallbackfont -\setsansfallbackfont -\setmonofallbackfont -\end{boxedverbatim} -\xetexko에는 이 명령이 없는 대신 \cs{newfontfamily}\cs{fallbackhanjafont}를 이용하여 -fallback 폰트를 정의할 수 있다. 이 기능은 한자(또는 한글/한자) 글꼴에서도 찾을 수 없는 한자를 -식자하기 위해서 사용된다. - -여기 언급하지 못한 다양한 명령들이 제공되므로 해당 매뉴얼을 반드시 읽어보기 바란다. -oblivoir에서도 \xetexko, \luatexko 의 폰트 설정 방식을 그대로 활용할 수 있다. - -%한글 폰트만을 이용해서 한글/라틴 문자에 모두 식자할 필요가 있을 -%수 있다. 이 경우 다음과 같이 하는 것이 한 가지 방법이다. -%\begin{boxedverbatim} -%\disablekoreanfonts -%\setmainfont{NanumMyeongjo} -%\end{boxedverbatim} -%또는, -%\begin{boxedverbatim} -%\setmainhangulfont{NanumMyeongjo} -%\hangulmarks -%\end{boxedverbatim} -%이렇게 하면 라틴 문자와 문장부호, 숫자를 나눔명조로 식자한다. -% -%더 세세한 지정을 위하여 -%그리고 alphas, nums, parens, quotes, colons, hyphens, puncts, cjksymbols가 식자될 폰트의 영역(latin, hangul, hanja, prevfont)을 정의하는 \verb|\xetexkofontregime| 명령도 쓸 수 있다. -%이에 대해서는 \xetexko\ 매뉴얼을 반드시 참조하라. - -\paragraph{임시 폰트 교체} -문장을 작성 중에 일시적으로 폰트를 교체하기 위한 명령으로 -\begin{boxedverbatim} -\adhochangulfont -\adhochanjafont -\end{boxedverbatim} -이 정의되어 있다. 이 명령들은 \verb|\setmainhangulfont| 명령과 같은 방법으로 사용한다. 또한, -\begin{boxedverbatim} -\hangulfontspec -\hanjafontspec -\end{boxedverbatim} -명령도 정의되어 있으며, \verb|\fontspec| 명령이 적용되지 않는 한글과 한자 영역에 효력을 발휘하므로 필요한 대로 쓸 수 있다. - -\subsection{\obclass의 폰트 설정 명령 (\protect\cs{setko...} 명령군)} - -\subsubsection{글꼴의 이름} -fontspec을 이용하여 글꼴을 지정하는 데 있어서 사용자가 곤란을 겪는 문제 중의 하나가 글꼴 이름을 -지정하는 것이다. 먼저 특정 폰트(여기서는 함초롬바탕LVT)의 글꼴 이름을 알아보기 위해 \util{otfinfo}를 -사용해보자. 글꼴에 대하여 \util{otfinfo -i}를 실행하면 다음과 같은 결과가 나온다. - -\begin{footnotesize} -\begin{verbatim} -$ otfinfo -i HANBatang-LVT.ttf -Family: HCR Batang LVT -Subfamily: Regular -Full name: HCR Batang LVT -PostScript name: HCRBatangLVT -Mac font menu name: HCR Batang LVT -Version: Version 1.940; KTS Build 20140401 -Unique ID: YoonDesign: HCR Batang LVT: KTS 20140401 -Description: The Korean TeX Society has added GSUB/GPOS/vhea/vmtx tables - chiefly for old hangul rendering. - Please contact http://www.ktug.org for these issues. -Designer URL: http://yoonfont.co.kr/ -Manufacturer: YoonDesign; The Korean TeX Society -Vendor URL: http://yoonfont.co.kr/ -Trademark: HCR Batang is a trademark of YoonDesign. -Copyright: Copyright (c) 2010-2013 Hancom INC(HNC). All rights reserved. -License URL: http://yoonfont.co.kr/ -License Description: YoonDesign Inc. -Vendor ID: YDI -\end{verbatim} -\end{footnotesize} -이 가운데, ``Full name''과 ``Postscript name''을 사용하면 된다.\footnote{% - 2014년 6월 현재, 대체로 \XeTeX 은 ``Full name''을 쓰면 거의 오류없이 동작하고 - \LuaTeX 은 Postscript name을 선호하는 듯하다. 이 사정은 \ct{luaotfload}나 - \XeTeX\ 엔진의 개선에 따라 달라질 수 있다.} -%일반적으로 Postscript name을 -%쓰는 쪽이 좋다. -여기서 ``Family''는 같은 글꼴 가족들이 똑같은 이름을 가진다. 예를 들어 함초롬바탕LVT Bold체는 -Family가 ``HCR Batang LVT''이고 Subfamily가 ``Bold''로 되어 있다. 이렇게 글꼴 자체가 글꼴 가족에 대한 정보를 가지고 있으면 Family만 지정해도 자동으로 Bold 글꼴을 글꼴가족에서 찾는다 (모든 한글 글꼴이 이렇지는 않다). - -예를 들면 -\oblivoirdblquote{맑은 고딕}은 맥락에 따라 \oblivoirdblquote{맑은 고딕 Bold}를 -글꼴 가족으로 인식한다. 맑은 고딕의 폰트 정보 중에서 이름(name)과 가족에 해당하는 부분을 보면, -\begin{verbatim} -$ otfinfo -i Malgun.ttf | grep -e "name" -e "amily" -Family: Malgun Gothic -Subfamily: Regular -Full name: Malgun Gothic -PostScript name: MalgunGothicRegular - -$ otfinfo -i Malgunbd.ttf | grep -e "name" -e "amily" -Family: Malgun Gothic -Subfamily: Bold -Full name: Malgun Gothic Bold -PostScript name: MalgunGothicBold -\end{verbatim} - -그러므로 -\begin{verbatim} -\setkosansfont(Malgun Gothic) -\end{verbatim} -이렇게만 지정해도 굵은 글꼴이 요구되는 곳에서는 \oblivoirdblquote{맑은 고딕 Bold}를 -식자해준다. -%이렇게 잘 만들어진 글꼴을 이용하는 경우, 간단히 하나의 인자로 -%글꼴을 지정해주는 것만으로 굵은 글꼴을 사용하게 할 수 있다. - -폰트 파일 이름 자체를 쓸 수도 있다. 다만 이 경우는 글꼴 가족을 지정하는 것이 아니므로 Bold나 Italic subfamily를 -자동으로 인식하지 못할 수 있다. 파일 이름으로 사용하려면 확장자를 붙여주면 된다. 예컨대 함초롬바탕 LVT라면 -\texttt{HANBatang-LVT.ttf}를 그대로 지정할 수 있다. 굳이 \texttt{[ExternalLocation]} 옵션을 주지 -않아도 확장자를 붙이는 것만으로 ExternalLocation과 동일한 결과를 얻는다. - -\subsubsection{간단한 폰트 지정} - -\XeTeX-\ko, \LuaTeX-\ko의 기본 한글/한자 폰트 지정 명령인 -\begin{verbatim} -\setmainhangulfont, \setsanshangulfont, \setmonohangulfont -\setmainhanjafont, \setsanshanjafont, \setmonohanjafont -\end{verbatim} -들이 있으나, -\xobclass 에서는 약간 다른 방법(더 편리한?)의 폰트 정의가 -가능하다. 이것은 다음 세 명령으로 이루어져 있다. -\begin{boxedverbatim} -\setkomainfont[]()()() -\setkosansfont[]()()() -\setkomonofont[]()()() -\end{boxedverbatim} - -이 세 명령을 사용할 때 주의할 점은 중괄호 \{ \}가 전혀 쓰이지 않는다는 것이다. -입력상 실수하기 쉬우므로 주의를 요한다. - -이러한 폰트 정의 방식은 xoblivoir 클래스의 원래 의도인 `되도록 간단하게 -필요한 것만' 사용하자는 데서 나온 것이다. -%그러므로 옛한글 설정이나 -%자간, 장평 등 복잡한 폰트 속성을 적용하려 한다면 당연히 \xetexko 의 (즉 fontspec의) -%설정 방식을 이용하는 것이 좋다. - -이후의 설명은 \verb|\setkomainfont|에 대해서만 한다. 다른 두 명령의 사용법은 동일하다. -\begin{boxedverbatim} -\setkomainfont(Font Name) -\end{boxedverbatim} -가장 기본적인 사용법은 위와 같다. 중괄호 \verb|{ }|가 아니라 괄호 \verb|( )|를 쓰고 있음에 주의하라. - -\paragraph{긴 명령} -이 명령의 완전한 형태는 다음과 같다. -\begin{boxedverbatim} -\setkomainfont[]% - (regular)% - (bold)% - (italic)% - [hangul-feature]% - []% - (hanja-regular)% - (hanja-bold)% - (hanja-italic)% - [hanja-feature] -\end{boxedverbatim} -모두 열 개의 옵션 인자가 올 수 있는데 그 가운데 적어도 하나의 괄호 옵션 인자는 반드시 있어야 한다. -그러므로 그것(첫번째 regular)은 ``옵션'' 인자가 아니라 그냥 인자이지만 하나만을 중괄호로 묶는 것이 오히려 코딩 -실수를 증가시킬 것으로 보아서 모두 괄호 인자를 사용하도록 했다. -괄호 옵션 인자를 하나만 준다면 그것은 한글 regular 글꼴 이름으로 받아들일 것이다. -나머지 아홉 개의 옵션 인자는 생략 가능하다. 각 옵션 인자가 생략가능하기 때문에 -괄호나 꺾쇠괄호 사이에 스페이스를 남기지 않도록 주의해야 한다. 예를 들어 \verb*|(fontname) [feature]|와 같이 -적으면 스페이스 때문에 옵션 인자의 파싱에 실패할 수 있다. - -기본적으로 폰트 이름은 \verb|( )| 안에 들어간다. 그리고 미리 오는 \verb|[ ]|는 이름의 공통 부분을 축약하기 위한 것이고 끝에 오는 \verb|[ ]|는 속성을 추가하기 위한 것이다. 이 규칙이 두 번 반복된다고 생각하면 되겠다. - -\paragraph{한글과 한자} -이 가운데 앞의 다섯 개는 한글, 뒤의 다섯 개는 한자관련 설정이다. 그런데 예컨대 -\begin{verbatim} -\setkomainfont(Fontname A)(Fontname B) -\end{verbatim} -이렇게 코딩해서 Fontname B가 한자 글꼴이 되게 하려 해도 -두 번째 괄호 옵션 인자는 한자 regular로 받아들이는 것이 아니라 -한글 bold 이름으로 인식할 것이다. -따라서 한글과 한자 사이에 다음과 같이 경계를 주면 -\begin{verbatim} -\setkomainfont(한글 글꼴)[](한자 글꼴) -\end{verbatim} -이제 의도대로 동작한다. 다음 보기는 한글을 함초롬바탕LVT, 한자를 맑은 고딕으로 선택하는 예가 된다. -\begin{verbatim} -\setkomainfont(HCR Batang LVT)[](Malgun Gothic) -\end{verbatim} - -한자 설정은 한글 설정 이후에 잇대어 쓰는 것으로 한글 설정 방식과 완전히 똑같다. -실제로 \verb|\setkomainfont(A)[](B)| 명령은 -\begin{verbatim} -\setmainhangulfont{A} -\setmainhanjafont{B} -\end{verbatim} -와 동일하기 때문에 굳이 한자 글꼴을 따로 지정하지 않아도 한자 자면을 가진 한글 글꼴을 설정하면 -한자가 잘 표시된다. -그러나 NanumMyeongjo와 같이 한자 자면이 없는 글꼴이라면 한자 글꼴을 별도로 선언해주어야 할 -것이다. - -한자 폰트 부분을 선언하면 \LuaTeX-\ko의 \verb|\hanjabyhanjafont|를 1로 만들어서 선언된 -한자 글꼴이 우선적으로 사용되도록 하는 효과가 있다. 만약 이를 원하지 않는다면 \verb|\hanjabyhanjafont 0|을 -직접 선언하도록 하라. - -\paragraph{regular, bold, italic, bolditalic} -글꼴 가족이 잘 설정된 폰트를 사용한다면 bold를 굳이 지정할 필요는 없다. -bold를 지정하지 않는 것은 이 인자를 주지 않는 것이다. \verb|()|와 같이 비운 인자를 주면 -bold 글꼴에 regular 글꼴이름을 사용하므로 오히려 bold 효과가 사라진다. -bold 글꼴을 아예 별도로 지정할 때는 글꼴 이름을 다 적어준다. 한편, 예컨대 -HCR Batang LVT에 대하여 HCR Batang LVT Bold가 볼드체 이름임을 이용하여 -\verb|\setkomainfont(HCR Batang LVT)(* Bold)|와 같이 지정하는 방법도 통한다. -함초롬바탕의 full name을 쓰지 않고 Postscript name을 쓴다면, -\begin{verbatim} -\setkomainfont(HCRBatangLVT)(*-Bold) -\end{verbatim} -와 같이 하면 될 것이다. - -한글은 이탤릭이 없지만 우사체를 쓰는 관행이 있다. oblivoir 클래스 옵션으로 \texttt{[itemph]}를 -설정하면 italic을 써야 할 곳에서 기울어진 서체를 쓸 수 있다. 반면 \texttt{[gremph]}로 하면 -바로 선 서체를 사용한다. \texttt{[gremph]}가 디폴트이며, 이 경우 이탤릭을 써야 할 곳에 다른 -폰트를 사용하게 할 수 있다. 예를 들면 -\begin{verbatim} -\setkomainfont(HCR Batang LVT)(* Bold)(NanumGothic) -\end{verbatim} -이렇게 하면 이탤릭을 쓸 자리에 나눔고딕이 사용된다. 만약 클래스 옵션 \texttt{[itemph]}가 -주어져 있다면 나눔고딕도 기울어진다. -이탤릭 글꼴을 아예 지정하지 않으면 regular에 지정된 글꼴을 그대로 쓴다. \texttt{[itemph]}라면 -이탤릭 글꼴을 지정하지 않아도 될 것이고 \texttt{[gremph]}라면 적당한 글꼴을 적어주면 될 것이다. - -bolditalic의 경우 볼드체 글꼴과 이탤릭 속성을 사용한다. 즉 \texttt{[gremph]}이면 bold와 -bolditalic이 동일할 것이고, \texttt{[itemph]}라면 bold 글꼴이 기울어진 모양으로 나온다. -bolditalic 폰트를 별도로 지정하려 한다면 아래에서 설명할 feature 추가 방식으로 다음과 같이 하여야 한다. -\begin{verbatim} -\setkomainfont(Regular)(Bold)(Italic)[BoldItalicFont={Fontname}] -\end{verbatim} - -\paragraph{base name을 사용하여 공통 부분 줄여쓰기} -KoPubBatang체 같은 경우, 글꼴 가족이 서로 다른 다음 세 폰트가 있다. -\begin{verbatim} -KoPubBatangLight.ttf KoPubBatangLight KoPubBatang Light -KoPubBatangMedium.ttf KoPubBatangMedium KoPubBatang Medium -KoPubBatangBold.ttf KoPubBatangBold KoPubBatang Bold -\end{verbatim} -이 글꼴은 앞부분 이름은 같지만 Regular/Bold에 대응하는 글꼴로 설정되어 있지 않다. -이러한 상황에서 앞의 같은 부분을 base name으로 지정하고 나머지 부분을 각각 써넣는 방식으로 -글꼴을 지정할 수 있다. -\begin{verbatim} -\setkomainfont[KoPubBatang](Light)(Bold) -\end{verbatim} -이것은 -\begin{verbatim} -\setkomainfont(KoPubBatangLight)(KoPubBatangBold) -\end{verbatim} -를 줄여쓴 것으로 이해하면 된다. 이탤릭 폰트는 지정하지 않은 보기인데, 원한다면 세번째 괄호 옵션에 -써넣을 수 있다. 단, 이 방법을 쓸 때는 별표(*)를 사용할 수 없다. 왜냐하면 별표를 사용하였을 때 -KoPubBatang*이라는 이름의 폰트를 찾으려 할 것이기 때문이다. - -예를 들어, 서울시체를 본문 글꼴로 하고 바탕 글꼴용 한자는 한양해서를 쓰고 싶다면(실제 해보면 그다지 어울리지 않지만) 어떻게 할 수 있을까? -\begin{verbatim} -\setkomainfont[SeoulHangang](L)(B)[](HYhaeseo) -\setkosansfont[SeoulNamsan](L)(B) -\end{verbatim} - -이 방식에서 주의할 것은 예컨대 이탤릭 글꼴로 완전히 이름이 다른 것을 쓰고자 한다면 -이런 식으로 할 수 없다는 점이다. - -\paragraph{feature의 추가} -네 번째 옵션 인자는 한글 폰트를 설정할 때 넘겨줄 feature를 지정한다. -\begin{verbatim} -\setkomainfont(HCRBatangLVT)[FakeStretch=0.95,InterHangul=-0.05em] -\end{verbatim} -이것은 장평을 95\%로 하고 자간을 5\% 줄이는 예이다. 여기에 쓸 수 있는 feature에 관해서는 -fontspec 설명서와 \xetexko, \luatexko\ 설명서를 참고하라. - -다섯번째 옵션 인자는 한자의 base name이다. 네번째 없이 다섯번째만 올 수 없으므로 이것을 -설정하려면 -\begin{verbatim} -\setkomainfont(HCRBatangLVT)[][KoPubBatang](Light) -\end{verbatim} -와 같이 적어도 네번째 옵션 인자를 (비우더라도) 지정해야 할 것이다. - -\paragraph{ExternalLocation} -폰트를 그 이름(full name 또는 Postscript name)으로 지정하지 않고 파일 이름으로 찾으려 할 때, -다음과 같은 방법이 있다. -먼저 옵션 인자로 \texttt{ExternalLocation}을 선언하는 방법이다. 이 때는 확장자를 지정하지 않아도 된다. -\begin{verbatim} -\setkomainfont(HANBatang-LVT)[ExternalLocation] -\end{verbatim} -파일 이름을 그대로 적어주는 방법이 있다. 이렇게 하면 \texttt{ExternalLocation}과 똑같이 동작한다. -\begin{verbatim} -\setkomainfont(HANBatang-LVT.ttf) -\end{verbatim} - -파일 이름으로 호출하는 경우 별표(*)를 이용하여 이름의 공통부분을 줄여쓰는 방법을 사용할 수 없다. -그리고 -하나의 글꼴군 세트에서 ``이름으로 찾기''와 ``파일이름으로 찾기''를 둘 다 사용할 수 없다. 즉 다음과 같이 하는 것은 오류이다. -\begin{verbatim} -\setkomainfont(HCRBatangLVT)(HANDotum-LVT.ttf) -\end{verbatim} -그러나 한글군/한자군에 대해서는 따로 사용해도 상관없다. 다음은 한글은 Postscript 이름으로, -한자는 파일 이름으로 찾게 설정한 경우이다. 오류없이 동작한다. 그렇지만 되도록 일관성있게 쓰는 것이 좋을 것이다. -\begin{verbatim} -\setkomainfont(HCRBatangLVT)(*-Bold)[](UNI_HSR.ttf) -\end{verbatim} -\XeTeX 에서만 되는 FakeBold를 한자에만 적용해보자면, -\begin{verbatim} -\setkomainfont(HCRBatangLVT)(*-Bold)[](UNI_HSR.ttf)[AutoFakeBold] -\end{verbatim} -이렇게 하면 되는데, FakeBold는 가급적 사용하지 않는 것이 좋겠다. - -\paragraph{\cs{setob...} 명령} - -라틴 문자 영역의 폰트를 설정하는 데는 \cs{setmainfont} 등이 그다지 불편하지 않기 때문에 -그냥 쓰면 된다. 그러나 \cs{setkomainfont}의 괄호 \ct{( )}를 이용한 폰트 지정 방식과 -유사하게 쓰려 하거나, base name을 이용한 축약 기능을 라틴 문자 정의에도 쓰고 싶다면 다음처럼 해도 상관없다. -\begin{boxedverbatim} -\setobmainfont[]()()()[features] -\end{boxedverbatim} -일반적으로는 거의 의미없는 명령이나 반은 재미로 마련해두었다. - -\subsection{기정의 폰트 세트} - -클래스 옵션으로 \texttt{[nanum]}을 지정하면 본문이 나눔명조와 나눔고딕으로 식자된다.\footnote{% - \LuaTeX-\ko는 아무 옵션이 없어도 nanumtype1으로 본문을 표시하지만 \XeTeX-\ko에서는 - 한글 부분이 비어 나온다. 이 옵션을 주면 \LuaTeX-\ko 에서도 nanumtype1이 아니라 트루타입을 쓰게 된다.} -나눔명조에 없는 한자는 나눔고딕에서 가져다가 찍는다. - -클래스 옵션 \texttt{[hcr]}은 함초롬 LVT 바탕, 함초롬 LVT 돋움 글꼴을 본문 글꼴로 사용하게 한다. -\texttt{[Script=Hangul]}을 지정하여 옛한글도 잘 처리하게 한다.\footnote{% - \cs{setkomainfont} 명령의 인자로 HCR 계열이 지정되면 이 옵션이 자동으로 추가된다. - 그밖의 폰트에서 옛한글을 처리하게 하려면(예를 들어 Malgun Gothic, UnBatang 등) - feature 추가 옵션으로 \texttt{[Script=Hangul]}을 지정할 수 있다.} - -클래스 옵션 \texttt{[unfonts]}는 은 바탕, 은 돋움, 은 타자, 은 그래픽을 이용하여 본문 글꼴을 식자하게 한다. -\texttt{[gremph]}일 때 바탕글꼴의 이탤릭이 은 그래픽으로 찍힌다. 또한 이 옵션은 \texttt{[Script=Hangul]}을 -자동으로 추가하여 옛한글을 은 바탕으로 잘 처리할 수 있게 하였다. 은 글꼴을 옵션으로 주지 않고 \cs{setkomainfont} 명령으로 주려면 다음과 같이 하는 것이 좋다. HCR 글꼴과 달리 자동으로 폰트 이름을 보고 \texttt{[Script=Hangul]}을 삽입하지 않으므로 feature 옵션에 지정한다. base name을 ``UnBatang''으로 하고 확장자를 잇대어 쓰도록 -다음처럼 정의할 수 있다. -\begin{verbatim} -\setkomainfont[UnBatang](.ttf)(Bold.ttf)[Script=Hangul] -\end{verbatim} -은 그래픽을 이탤릭 대용으로 쓰려 한다면, -\begin{verbatim} -\setkomainfont[Un](Batang.ttf)(BatangBold.ttf)% - (Graphic.ttf)[Script=Hangul] -\end{verbatim} -이름의 공통부분(base name)이 ``Un''밖에 없으니까 이렇게 할 수밖에 없다. 은 그래픽은 한자가 나오지 않는데 -필요하다면 한자 글꼴 지정을 잇대어 하면 된다. 실제로 해보자면, -\begin{verbatim} -\setkomainfont[Un](Batang.ttf)(BatangBold.ttf)(Graphic.ttf)% - [Script=Hangul][UnBatang](.ttf)(Bold.ttf)(.ttf) -\end{verbatim} -한자는 은 그래픽이 아니라 은 바탕에서 찾아서 찍게 한 것이다. - -\subsection{폰트 설정 명령 (\protect\cs{setkor...} 명령군)} - -이전 버전의 oblivoir에서는 다음 세 명령을 제공하였다. -이 명령군도 여전히 유지되고 있는데 그것은 이전에 작성된 문서와의 호환성을 위해서이다. -\begin{boxedverbatim} -\setkormainfont()(){} -\setkorsansfont()(){} -\setkormonofont()(){} -\end{boxedverbatim} -이 명령들도 한자 지정을 위하여 확장가능하다. -\begin{boxedverbatim} -\setkormainfont()(){}% - ()(){} -\end{boxedverbatim} - -괄호 옵션 인자와 중괄호 인자가 있다는 점과 bold, italic, regular의 순서가 -\cs{setkomainfont}와 다르다는 데 주의하라. -이전 버전에 비하여 확장된 기능은 feature를 줄 수 있다는 것이다. -\begin{boxedverbatim} -\setkormainfont(Bold)(Italic){Regular}[Feature] -\end{boxedverbatim} -이런 식으로 마지막 옵션 인자로 feature를 지정하면 유효하다. - -한글과 한자 사이에는 적어도 괄호 인자가 하나는 와야 구별된다. -\begin{verbatim} -\setkormainfont{HCR Batang LVT}(){HYhaeseo} -\end{verbatim} - -이 때문에, 예를 들어 다음과 같이 하는 것은 오류이다. -\begin{verbatim} -\setkormainfont{HCR Batang LVT}[]{HYhaeseo} -\end{verbatim} -한글 feature를 지정하고 한자도 지정하려면 다음과 같이 해야 한다. -\begin{verbatim} -\setkormainfont{HCR Batang LVT}[...](){HYhaeseo} -\end{verbatim} - -한편, \cs{setkormainfont} 다음 문자가 \texttt{[}이면 -\begin{boxedverbatim} -\setkormainfont[ ... ]{한글 폰트이름}[ ... ]{한자 폰트이름} -\end{boxedverbatim} -이것은 앞의 두 인자에 대하여 \cs{setmainhangulfont}를 실행하고 -뒤의 두 인자에 대하여 \cs{setmainhanjafont}를 실행하게 하는 것으로 -이전 버전과 같다. 이 명령은 반드시 \texttt{[}로 시작해야 하며 -한글과 한자의 경계는 [ ]로 이루어지므로 예컨대 -다음과 같은 코딩은 오류를 일으키지 않는다. -\begin{verbatim} -\setkormainfont[]{Hangul}[]{Hanja} -\end{verbatim} - -그리고 \cs{setkormainfont} 다음 문자가 \texttt{*}이면 -\texttt{ExternalLocation}으로 실행되는 것도 이전과 같다. -파일 이름을 직접 써넣는 것이 좋으므로 거의 필요없는 명령이 되었지만 -이전 버전과의 호환성을 위하여 이 기능을 유지시켜 두었다. -단, \cs{setkormainfont*()} 형식과는 쓸 수 없고 \cs{setkormainfont*[]} 형식으로만 -가능하게 기능이 제한되었다. 이 명령은 앞으로 사용하지 않기를 바란다. -\begin{boxedverbatim} -\setkormainfont*{한글 폰트 이름} -\end{boxedverbatim} - -이상에서 설명한 \cs{setkor...} 명령군 대신 새로 도입한 \cs{setko...} 명령군을 -사용하는 것을 권장한다. 사용법이 훨씬 간단해졌기 때문이다.\footnote{% - 내부적으로 \cs{setkormainfont} 명령들은 \cs{setmainhangulfont}와 \cs{setmainhanjafont}를 - 부르고, \cs{setkomainfont} 명령들은 \cs{setkormainfont}를 부른다.} - -%이후의 설명은 \verb|\setkormainfont|에 대해서만 한다. 다른 두 -%명령의 사용법은 동일하다. -% -%\begin{boxedverbatim} -%\setkormainfont{Font_Family_Name} -%\end{boxedverbatim} -% -%\begin{boxedverbatim} -%\setkormainfont[Options]{Font_Name} -%\end{boxedverbatim} -%만약 각괄호(\verb|[|)가 첫 인자로 나오면 이 명령의 사용법은 -%\verb|\setmainhangulfont|와 동일하다. 즉 fontspec 명령을 그대로 -%쓸 수 있다. -%\begin{boxedverbatim} -%\setkormainfont[Options]{Font_Name}[hnj_Options]{hnj_Font_Name} -%\end{boxedverbatim} -%다른 점은 위와 같이 한자 글꼴을 잇대어 정의할 수 있다는 것이다. -%이 때 반드시 한자 글꼴 추가 정의가 시작된다는 듯으로 각괄호 []를 -%써주어야 한다. 아무런 옵션을 지정하지 않더라도 이 부호는 있어야 -%한다. -% -%\subsubsection{폰트 가족의 지정} -% -%한글 폰트의 폰트 가족(font family)은 인위적으로 지정해주어야 할 때가 있다. -%여러 한글 폰트를 임의로 묶어서 하나의 폰트 가족처럼 다루는 경우이다. -% -%한글의 폰트 가족은 Regular/Bold/Italic -%으로 이루어진다고 가정하고 있다.% -%\footnote{원한다면 BoldItalic까지 포함할 수 있으나, \xobclass{}는 -% BoldItalic을 별도로 설정하는 것을 기본으로 -% 삼지 않았다. 지나치게 번거로울 뿐 아니라 BoldItalic에 -% 특별한 의미를 부여하기 힘들었기 때문이다. 반면, \xetexko 는 -% BoldItalic을 별도로 설정할 수 있게 하고 있으므로 혹시라도 -% 원한다면 이것은 사용자에게 맡겨져 있다. -%} -%폰트 가족을 지정하여 글꼴 설정을 할 때는 다음과 같이 한다. -%\begin{boxedverbatim} -%\setkormainfont()(){} -%\setkorsansfont()(){} -%\end{boxedverbatim} -%첫 두 인자를 둘러싼 괄호가 각괄호 []가 아니라 괄호 ()임에 주의하라.\footnote{% -% 이것은 2008/11/09 버전의 변경사항이다. 하위호환성을 제공하지 -% 않으므로 이전의 모든 소스를 수정해야 한다.} -%아무튼 괄호 ()로 둘러싸인 부분은 생략가능하다. 첫 괄호 인자만 있고 -%이탤릭 글꼴을 지정하지 않으면 기본 글꼴로 치환된다. -% -%한글 폰트와 별도의 한자 폰트를 설정할 필요가 있을 때는 다음과 같이 한다. -%\begin{boxedverbatim} -%\setkormainfont()(){}()(){} -%\setkorsansfont()(){}()(){} -%\end{boxedverbatim} -%한자를 한글과 별도의 폰트로 식자하도록 하는 것은 그 번거로움을 피할 수 없지만, -%한글 폰트 가운데 한자 영역이 거의 없거나 있더라도 부실한 것이 너무 많기 때문에 -%현재의 한글 폰트의 사정을 돌아볼 때 부득이하고 불가피하다. -% -%두 번째 선택 인자는 이탤릭체를 나타낸다. 이 인자를 지정하지 않으면 -%기본 글꼴로 치환된다. Regular 폰트를 이 자리에 쓰고 싶을 때가 있다. 이럴 경우 간단히 -%\begin{boxedverbatim} -%\setkormainfont(BOLD)(*){REGULAR} -%\end{boxedverbatim} -%와 같이 (*)로 줄여 쓸 수 있다. 즉, 아예 두번째 인자가 없으면 REGULAR 폰트로 치환되고, (*)로 지시되면 REGULAR 글꼴을 이탤릭으로 식자한다. -%만약 itemph 옵션이 지시되어 있다면 REGULAR의 FakeSlanted 글자가 -%식자되고, gremph 옵션이 지시되어 있다면 이 자리에 선언된 글꼴이 곧은 모양으로 찍힐 것이다. -%이 줄인 옵션은 두 번째 선택 인자, 즉 이탤릭 선언에만 동작하며, -%\verb|\setkormainfont|와 \verb|\setkorsansfont|에서 쓸 수 있다. -% -%\subsection{디폴트 치환}\myLabel{sec:default}{sec:디폴트} -% -%필요한 정보가 충분히 주어지지 않으면 폰트 설정은 기본값으로 -%치환된다. 아래 몇 가지 사용례를 보기로 하자. -% -%\begin{boxedverbatim} -%\setkormainfont{HCR Batang LVT} -%\end{boxedverbatim} -%위의 명령을 실행하면 Regular와 Bold, Italic이 지정한 폰트로 바뀐다. -%%여기 예시한 글꼴은 font family를 이루고 있지 않은 개별 글꼴이므로 -%%굵은 글꼴에도 같은 폰트가 식자된다. -%예시한 글꼴은 Bold 서체가 font family를 이루고 있으므로 굵은 글꼴을 자동으로 -%HCR Batang LVT Bold로 식자한다. 그러나 그렇지 않은 글꼴을 예를 들면, -%\begin{boxedverbatim} -%\setmainfont{YJ BELLA Medium} -%\end{boxedverbatim} -%과 같이 하는 경우 양재벨라체가 굵은 글꼴 자리에도 똑같은 글꼴로 식자하게 된다. -% -% -%\begin{boxedverbatim} -%\setkormainfont[BoldFont={NanumMyeongjo ExtraBold},% -% ItalicFont={NanumBarunGothic},% -% ItalicFeatures={FakeSlant={.17}}]{NanumMyeongjo} -%\end{boxedverbatim} -%위와 같이 fontspec 문법의 옵션을 지정할 수 있다. -% -%\begin{boxedverbatim} -%\setkormainfont(NanumMyeongjo ExtraBold){NanumMyeongjo} -%\end{boxedverbatim} -%이 명령은 Regular와 Bold만 지정된다. -% -%\begin{boxedverbatim} -%\setkormainfont(NanumMyeongjo ExtraBold)(*){NanumMyeongjo} -%\end{boxedverbatim} -%이 명령은 Italic에 NanumMyeonjo를 식자하게 한다. gremph에서는 -%upshape와 itshape가 똑같이 찍히게 되지만 itemph에서는 같은 -%글꼴이 기울어져 식자될 것이다. -% -%\begin{boxedverbatim} -%\setkormainfont(* ExtraBold)(Malgun Gothic){NanumMyeongjo} -%\end{boxedverbatim} -%이것은 Regular, Bold, Italic을 한 가족으로 묶는다. BoldItalic이 만약 필요해지면 Bold체와 -%동일하게 설정된다.\footnote{% -% BoldItalic은 위에서 설명한 (*) 줄인 옵션의 영향을 받지 않는다.} -%한편 (* ExtraBold)라는 표기는 NanumMyeongjo와 같은 이름이기 때문에 줄여 쓴 것이다. -% -%한자 글꼴을 별도로 설정해야 할 때가 있다. -%% \footnote{% -% % 이 기능은 2008/10/09 이후의 xkospace에 바탕을 둔 \xobclass{} 이후 버전에서 가능하다. -%% } -%한자 글꼴을 설정하기 위해서는 위의 명령을 확장하여 다음과 같이 지정한다. -% -%\begin{boxedverbatim} -%\setkormainfont(한글볼드)(한글이탤릭){한글레귤러}% -% (한자볼드)(한자이탤릭){한자레귤러} -%\end{boxedverbatim} -% -%\texttt{()}로 둘러싸인 부분은 모두 생략가능하지만, 이것이 한자 폰트를 설정하는 것이라는 -%점을 알리기 위해 한자 시작 부분에 ( 문자를 지정해야 한다. 즉, -%\begin{boxedverbatim} -%\setkormainfont(){NanumMyeongjo}(){HCR Batang LVT} -%\end{boxedverbatim} -%위와 같이 하면 한글 영역에 나눔명조, 한자 영역에 함초롬 LVT 바탕을 식자할 수 있다. -%이 때 볼드를 지정하지 않지만 최소한 \texttt{()}를 써주어야 한다는 점에 주의한다. -%한글 폰트 정의에서 괄호 ()를 사용했다면 한자 정의 확장에도 같은 괄호 ()를 -%써야 한다. 한글 폰트 정의에서 각괄호 []를 사용했다면 한자 정의 확장에도 -%같은 괄호 []를 써야 한다. -%%참고로, 일부 한글 기호문자는 한자 폰트로 식자된다. -% -%\begin{boxedverbatim} -%\setmonoscale{} -%\end{boxedverbatim} -% -%한글 mono 폰트를 기본값(은 타자)이 아닌 글꼴로 지정할 경우 scaling이 필요할 때가 있다. -%이를 위하여 위의 명령이 정의되어 있다. 이것은 한글 및 한자 mono 글꼴에만 -%영향을 미친다. 라틴 문자자는 fontspec 옵션으로 지정하면 될 것이다. -%% 이 문서의 경우 mono 한글 폰트를 맑은 고딕으로 -%% 하면서 scale 값을 0.9로 지정했다. -% -%문장 중간에서 한글 및 한자 폰트를 일부 바꾸어 써야 할 때가 있다. 이 경우에는 \xetexko 의 -%\verb|\hangulfontspec| 명령을 이용하면 매우 간편하게 이를 실현할 수 있다. - -\subsection{ExternalLocation에 관한 첨언} - -폰트를 호출하는 이름은 앞서 설명한 \util{otfinfo -i}를 사용하여 확인할 수 있는 -full name이나 Postscript name을 사용하는 것이 가장 좋다. 그러나 부득이한 경우 -파일 이름으로 사용하는 것도 가능하다. - -이 방식은 특히 폰트 정보가 이상한 한글 폰트를 사용할 때를 위해서도 -필요하다. -굳이 폰트 캐싱을 할 필요가 줄어들기도 하므로, 이 방식을 선호하는 경우도 있다. -% \xobclass{}에서는 -%\textquotedblleft 별표붙인 명령\textquotedblright 으로 지정한다. -%참고로 별표붙인 명령을 쓸 때는 fontspec 옵션을 지정하는 명령형식을 -%쓸 수 없다. 그 이유는 fontspec 명령 형식에서는 ExternalLocation -%옵션을 줄 수 있기 때문이다. -%\begin{boxedverbatim} -%\setkormainfont*(BOLD)(ITALIC){REGULAR} -%\end{boxedverbatim} - -\TeX\,Live를 포함하여 대부분의 \TeX{} 임플리멘테이션에서 시스템의 폰트 폴더를 kpathsearch로 -찾을 수 있으므로 예컨대 Windows 폰트 폴더의 폰트들도 이 방식으로 호출할 수 있다. -% 한편, 한겨레결체의 경우 폰트 -%이름을 라틴 문자으로 바꾸어두고 ExternalLocation으로 찾아야만 사용할 수 있다.% -%\footnote{즉, 폰트 이름 정보가 잘못되어 있는 글꼴이다.% -%} -휴먼명조와 같은 글꼴은 ExternalLocation 방식으로 \verb|HMKMM.TTF|를 -직접 지시하는 것이 가장 안전하다. - -%한글 폰트 이름은 폰트 자체의 특성에 따라서 매우 복잡한 양상을 보인다. -%이 글에서는 Windows에서 확인할 수 있는 이름을 기준으로 하고 있으나, -%플랫폼에 따라서는 이름으로 폰트를 호출하기 위해서 다른 방법을 사용해야 -%할 수도 있다. -%가장 안전한 방법은 ExternalLocation으로 폰트 파일의 이름을 부르는 것이다. -이 때 몇 가지 이슈가 있다. -\begin{enumerate}[(가)]\tightlist -\item Windows에서는 한글 폰트 파일 이름을 부를 수 없다. 모든 폰트 파일 이름은 -라틴 문자이어야만 한다. 그 이유는 한글 폰트 파일 이름이 윈도우즈 시스템 인코딩인 -CP949로 불려져야 하는데 우리가 작성하는 tex 원본 파일은 UTF-8 인코딩이므로 -한글 파일 이름을 호출하는 것이 윈도우즈에서 원천적으로 불가능하기 때문이다. - -\item 반면, 시스템 로케일이 utf-8인 매킨토시나 리눅스에서는 한글 폰트 파일 이름도 -ExternalLocation으로 호출할 수 있을 것이다. 리눅스에서는 모르겠으나 매킨토시에서는 -이것이 가능했다. - -\item texmf.cnf의 OSFONTDIR 변수를 수작업으로 수정해야 하는 경우가 있다. -이것은 폰트를 ``파일 이름으로'' 찾게 하기 위해 필요하다. -Windows의 \TeX\,Live라면 이것을 잘 설정하여 주므로 사용자가 신경쓸 것이 없으나 -경우에 따라 이 변수를 설정해야 할 필요가 있을 수 있다. 맥의 경우, -/usr/local/texlive/2015/texmf.cnf 파일을 열어서\footnote{/usr/local/texlive/2015/texmf/web2c/texmf.cnf를 -수정해서는 안된다.} 다음 내용을 자신의 환경에 맞게 써넣으면 될 것이다. -\begin{verbatim} -OSFONTDIR = {/Library/Fonts;~/Library/Fonts;/System/Library/Fonts;} -\end{verbatim} - -\item ExternalLocation으로 폰트를 호출한다는 것은 kpathsearch를 이용한다는 -것이다. 그러므로 texmf 트리 아래에 해당 폰트를 가져다두고 mktexlsr해도 그 -폰트에 접근할 수 있다. - -\end{enumerate} - -%폰트를 이름으로 호출하는 것은 폰트 자체에 정의된 이름과 파일이름이 다른 것이 너무 많아서 -%손쉽게 말하기가 어렵다. 대부분의 시스템에서(맥 제외) \verb|fc-list| 명령은 \XeTeX 으로 -%부를 수 있는 폰트 이름을 확인하게 해준다. 한편 \LuaTeX의 경우는 좀더 복잡하여 -%\XeTeX 에서 호출할 수 있는 것과 같을 때도 있고 다를 때도 있다. -%파일 이름으로 호출(즉 ExternalLocation)하는 것이 가장 편리할 때도 있다. - -%\subsection{파일 이름 문제: 조금 더}\myLabel{sec:nowinname}{sec:노윈네임} - -%폰트를 이름으로 호출하는 데 있어 결정적으로 중요한 것은 시스템 로케일이다. -%즉, 한글 로케일이면 한글 폰트 이름을 호출할 수 있지만 그렇지 않으면 -%폰트 이름을 한글로 부를 수 없다. -%\xobclass는 한글 로케일의 시스템\explpunc.한글 Windows, Mac OS X 한글 상위 등.\ 일 것을 기본값으로 하고 있다. -%또한 각 운영체제가 인식하는 파일 이름들이 조금씩 다르다. -%이것은 폰트 자체의 특성에 따르는 경우가 많으므로 -%폰트의 이름이나 특성을 사용자가 잘 이해하고 사용하는 도리밖에 없다. -% -%한글이 아닌 로케일의 시스템에서는 [nowinname] 옵션을 지정하고 -%폰트를 라틴 문자 이름으로 호출하면 대부분의 문제가 해결된다. -%\begin{boxedverbatim} -%\documentclass[nowinname]{xoblivoir} -%\setkormainfont(UnBatangBold){UnBatang} -%\end{boxedverbatim} -% -%예컨대 라틴 문자 상위의 매킨토시에서 다음과 같이 한글 폰트를 정의한 경우, -%\begin{verbatim} -%\setkormainfont(NanumMyeongjoOTF-Bold){NanumMyeongjoOTF-Regular} -%\end{verbatim} -%두 번째 선택인자가 없기 때문에 이탤릭 글꼴은 기본 글꼴인 은 바탕으로 -%치환된다. -%이 때, 운영체제가 한글 글꼴 이름 \oblivoirdblquote{은 바탕}을 -%인식하지 못할 수가 있다.\footnote{% -% 김영욱 교수께서 이 문제를 알려주셨다.} -% -%해결책은 앞서 설명한 ExternalLocation으로 폰트를 호출하든가, 아니면 -%이탤릭 옵션까지 모두 채워서 선언하든가 하면 물론 된다. 그러나 좀 -%번거로울 수도 있는 것이다. -%이런 경우에 대비하여 [nowinname] 옵션을 마련해 두었다. 은 글꼴의 -%호출명을 라틴 문자으로 하게 함으로써 한글 글꼴 이름을 인식 못하는 운영체제의 -%문제를 피해가게 하였다.\footnote{% -% 다행히, 은 글꼴은 한글 윈도우즈에서도 라틴 문자 이름으로 호출할 수도 -% 있다. 즉, 한글 윈도우즈에서는 라틴 문자 이름과 한글 이름을 모두 사용할 -% 수 있는 것이다. 그러나 모든 글꼴이 그렇지는 않다.} -%라틴 문자 상위의 매킨토시, 그리고 한글 로케일을 사용하지 않는 리눅스 -%등에서 이 옵션이 활용될 수 있을 것이다. -% -%이 옵션은 xetexko-xobfont, xetexko-var, memhangul-x 등에 부여할 수도 -%있으므로 Beamer 문서를 작성하기 위해 xetexko-var를 쓰는 경우에는 -%xetexko-var의 옵션으로 지시하면 된다. - -\subsection{이탤릭, 기울임} - -한글 글꼴에 이탤릭은 없다. 그러므로 강조를 위해 기울임으로 이탤릭을 대용하는 것은 그다지 권장하지 않는다. 예를 들어 -\begin{verbatim} -\setkomainfont(Malgun Gothic)(* Bold)(Gungsuh) -\end{verbatim} -으로 지정했을 때, 궁서체가 이탤릭에 해당하는 폰트로 설정된다. gremph가 디폴트이므로 궁서체는 곧은 모양으로 찍힌다. - -그러나 디자인 상의 효과를 위해서나 다른 이유에서 -이 서체를 기울이고 싶은 경우가 있을 것이다. -이 경우 \texttt{[itemph]} 클래스 옵션을 지정한다. -그 반대의 경우는 \texttt{[gremph]}이고 이것이 디폴트이다. 부분부분 기울이려 한다면 \cs{hangulfontspec}이나 -\cs{hanjafontspec}, 즉 \cs{adhochangulfont}를 이용하거나 \cs{addhangulfontfeature} 명령을 써서 조작할 수 있으므로 별도로 명령을 만들어두거나 하지 않았다. - -%\subsection{따옴표} -% -%2010년 초, \xetexko 의 급격한 발전과 더불어 \xobclass 가 시도하던 문장부호에 관한 사항은 사실상 -%\xetexko 를 따르는 것으로 충분해졌다. 문장부호를 식자할 때 라틴 문자 폰트의 것, 한글 폰트의 것을 -%자유롭게 선택할 수 있으며 간격 문제도 글꼴 선택의 옵션으로 가능하여졌다. -%\xetexko\ 매뉴얼을 잘 읽어보기 바란다. -% -%이 절은 더이상 의미가 없게 되어 내용을 삭제한다. - -% 따옴표는 한글 폰트의 것을 쓴다. 그러므로 큰따옴표를 입력할 때 \texttt{``}이 아니라 “으로 입력하는 것이 좋다.\footnote{% - % 윈도우즈 한글 입력기에서, ‘ㄴ’과 한자 키를 누르면 - % 이 부호를 입력할 수 있다.} -% 한글 폰트의 따옴표가 신통찮은 것이 너무 많아서, 라틴 문자 폰트의 것을 식자할 수 있도록 해두었다. -% 입력에서 한글 따옴표를 사용하였으나 식자는 라틴 문자 폰트의 것으로 하려 할 때 이 옵션을 쓰면 된다. -% 클래스 옵션 \texttt{{[}latinquote]}로 -% 지정한다. 아마 \texttt{\textbackslash{}textquotedblleft} 등도 되지 않으려나 한다. - -% 한편, \texttt{``}로 입력된 텍스트를 큰따옴표로 식자되게 하는 등, 전통적인 -% \TeX\ 입력 방식이 유지되게 하려면 라틴 문자 글꼴 지정 시에 -% \texttt{[Mapping=tex-text]} 옵션을 주면 된다. ``큰따옴표로 둘러싸인 텍스트''. -% 이 방식을 이용하면 (당연히) latinquote 옵션 여부와 상관없이 모든 따옴표가 라틴 문자 글꼴로 식자될 것이다. - -% \xobclass{}에는 \texttt{\textbackslash{}oblivoirquote}와 \texttt{\textbackslash{}oblivoirdblquote}라는 명령이 -% 정의되어 있다. \oblivoirdblquote{주어진 인자를 따옴표 안에 넣어주는 -% 명령}이다. 입력이 불편하여 일반적으로 이 명령을 쓸 일이 많으리라고 생각하지는 않지만 -% 한글 폰트 따옴표를 쓸 때, 폰트에 따라 따옴표의 간격이 맞지 않는 경우에 -% 이 명령에 별표를 붙이면 앞뒤의 간격을 조금 커닝해준다. 다만 latinquote 옵션이 -% 주어진 경우에는 아무런 효력이 없을 것이다. - -% 참고로, bnm, cnm 등의 \obclass{} \oblivoirquote{괄호 명령}에도 별표(*)를 붙여 앞뒤 간격을 -% 줄여줄 수 있다. |\ccnm{테스트}|, |\ccnm*{테스트}|. - -\section{그밖의 사항들} - -\subsection{판면 설정을 위한 fapapersize} - -memoir는 geometry 패키지와는 다른 방식의 자체 판면 설정 명령을 가지고 있다. -oblivoir에서도 기본적으로 memoir의 판면 설정 방식을 사용할 수 있다. -이와 더불어, \textsf{fapapersize}라는 패키지가 -oblivoir에서 제공된다. - -\begin{boxedverbatim} -\usepackage{fapapersize} -\usefapapersize{*,*,1in,*,1in,*} -\end{boxedverbatim} - -\cs{usefapapersize}는 여섯 개의 콤마로 연결된 인자를 취하는데, 첫번째, 두번째, 네번째, 여섯번째 인자를 별표(*)로 대용할 수 있다. 이 각각은 -\begin{itemize}\tightlist -\item paperwidth -\item paperheight -\item left margin -\item right margin -\item upper margin -\item lower margin -\end{itemize} -이다. 만약 \cs{setheadfoot}이라든가 marginnote 설정이 필요하다면 \cs{usefapapersize} 명령 앞에 둔다. -적어도 left margin과 upper margin은 반드시 주어야 한다는 점과, 콤마 사이에 공백이 없도록 해야 한다는 점에 주의하여야 한다. - -용지(stock)를 설정하려면 다음과 같이 한다. -\begin{boxedverbatim} -\usepackage[stock]{fapapersize} -\usefastocksize{210mm,297mm} -\usefapapersize{190mm,260mm,1in,*,1in,*} -\end{boxedverbatim} -\texttt{[showtrims]} 옵션이 주어져 있다면 crop 선이 함께 나타날 것이다. - -\subsection{enumerate} - -enumerate 패키지의 enumerate 아이템 항목 머리 설정은 -다음과 같이 한다. 엔진과 무관하게 동작한다. -\begin{boxedverbatim} -\begin{enumerate}[(㉠)] \tightlist -\item 첫째 항목 -\item 둘째 항목 -\end{enumerate} -\end{boxedverbatim} -\begin{enumerate}[(㉠)] \tightlist -\item 첫째 항목 -\item 둘째 항목 -\end{enumerate} -paralist에서 위와 같은 방식으로 항목 머리를 설정하려면 -xob-paralist를 로드한다.\footnote{% - 물론 paralist 자체는 그 이전에 부르거나 - xob-paralist가 스스로 부르도록 할 것이고 xob-paralist 뒤에 - paralist만 별도로 다시 부르면 안 된다. -} - -\subsection{graphicx, xcolor} - -\hologo{pdfLaTeX} 문서는 dvi 드라이버로 어떤 것이 실행될지 모르기 때문에 graphicx 패키지의 -로딩에 주의를 기울여야 한다. 즉 -\marginpar{\fbox{pdftex}} -\begin{boxedverbatim} -\usepackage[]{graphicx} -\end{boxedverbatim} -과 같이 하는 것이 안전하다. 그러나 대부분의 경우 \verb||를 지정하지 않아도 된다. - -\marginpar{\fbox{xe(lua)tex}} -\XeTeX과 \LuaTeX 의 경우는 graphicx 패키지에 대한 명시적인 호출이 없어도 -png, jpg, pdf 그림을 잘 불러온다. 즉 \obclass가 알맞게 이 패키지를 호출하여준다. - % 이 패키지들을 명시적으로 -% 호출하고자 한다면 옵션 없이 로드하든가 \texttt{[xetex]} 옵션을 준다. -% default가 \texttt{[xetex]}이 되도록 설정되어 있어야 하는데, -% KC2008/\TeX{}Live에는 이것이 잘 되어 있다. -%pdf 그림을 불러오거나 색상 관련 명령을 쓰기 위해 -%color 또는 xcolor를 로드하려면, 옵션 설정을 graphicx와 똑같이 하면 된다. -%\begin{boxedverbatim} -%\usepackage{graphicx} -%\usepackage{xcolor} -%\end{boxedverbatim} - -\subsection{참조 인용, 자동 조사} - -자동 조사는 ko.\TeX 에서와 동일하다. -한글 label은 \XeTeX, \LuaTeX 에서 사용할 수 있다. -레거시 텍에서 label 자리에는 한글을 쓸 수 없다. \marginpar{\fbox{pdftex}} - -\medskip - -\noindent\hologo{pdfTeX}:\\ -\noindent\begin{minipage}{.45\textwidth} -\begin{verbatim} - “소절 \ref{sec:font}\를 보라.” -\end{verbatim} -\end{minipage}\hfill -\begin{minipage}{.45\textwidth} -\hfill “소절 \myREF{sec:font}{sec:폰트}\를 보라.” -\end{minipage} - -\noindent\hologo{XeTeX}, \hologo{LuaTeX}:\\ -\noindent\begin{minipage}{.45\textwidth} -\begin{verbatim} - “소절 \ref{sec:폰트}\를 보라.” -\end{verbatim} -\end{minipage}\hfill -\begin{minipage}{.45\textwidth} -\hfill “소절 \myREF{sec:font}{sec:폰트}\를 보라.” -\end{minipage} - -\subsection{방점} - -\koTeX 에서는 \texttt{\textbackslash dotemph} 명령의 방점\footnote{% - 가로쓰기에서는 \dotemph{점을 글자 위에 찍으므로} \circemph{傍점}이 아니라 - \circemph{上점}이 맞겠지만 관행적으로 방점이라 불러왔다. - 이 문장부호의 정확한 명칭은 “드러냄표”이다.}% -을 지원했다. \xetexko와 \luatexko에서도 이 명령을 사용할 수 있으며, -oblivoir에서 조금 확장했다. 기본인 -\texttt{\textbackslash dotemph} -외에 -\texttt{\textbackslash circemph} -\texttt{\textbackslash useremph} -두 개의 명령을 더 쓸 수 있다. - -\cs{dotemph}와 \cs{circemph}의 결과는 다음과 같다. - -\medskip - -\noindent\begin{minipage}{.45\textwidth} -\begin{verbatim} -\dotemph{우리나라} \circemph{대한민국} -\end{verbatim} -\end{minipage}\hfill -\begin{minipage}{.45\textwidth} -\dotemph{우리나라} \circemph{대한민국} -\end{minipage} - -\medskip - -\cs{useremph} 명령은 이전 버전과 사용법이 달라졌다. 2014년 6월 이전 oblivoir에서 -\cs{useremph}는 pdf\TeX 에서와 \XeTeX, \LuaTeX 에서 사용법이 서로 달랐고 -하나의 선택 인자와 두 개의 인자를 요구하는 등 사용법이 복잡했으나 이것이 모두 다음과 같이 -간단하게 바뀌었다. -\begin{boxedverbatim} -\useremph[][]{text} -\end{boxedverbatim} -한 번 raise 값과 char를 주고난 후에는 그 설정이 보존된다. 즉 \cs{useremph}를 -인자 없이 쓰면 이전에 설정된 것을 따라가고, 이전에 설정된 것이 없으면 \cs{useremph}와 -\cs{circemph}가 동일하다. - -\begin{verbatim} -\useremph{드러냄표} -\useremph[.3ex][\tiny★]{드러냄표} -다시한번 \useremph{드러냄표} -이번에는 \useremph[][\tiny+]{드러냄표} -높이조절 \useremph[0ex]{드러냄표} -\end{verbatim} - -이 코드의 결과는 다음과 같다:\\ -\useremph{드러냄표} -\useremph[.3ex][\tiny★]{드러냄표} 다시한번 \useremph{드러냄표} -이번에는 \useremph[][\tiny+]{드러냄표} -높이조절 \useremph[0ex]{드러냄표} - -\medskip - -편의를 위하여 \cs{useremphstarwhite}({\useremphstarwhite})와 \cs{useremphstarblack}({\useremphstarblack}) -명령을 준비해두었다. 이것은 현재 식자하는 폰트에 해당 글자가 있으면 잘 나타난다. - -\medskip - -\noindent\begin{minipage}{.7\textwidth} -\begin{verbatim} -\useremph[.5ex][\useremphstarwhite]{드러냄표} -\end{verbatim} -\end{minipage}\hfill -\begin{minipage}{.28\textwidth} -\useremph[.5ex][\useremphstarwhite]{드러냄표} -\end{minipage} - -%\marginpar{\fbox{xe(lua)tex}} -%\xobclass에서 기원한 새로운 텍 엔진을 위한 \obclass 에서 -%마지막의 \texttt{\textbackslash useremph} 명령은 -%\useremph{˚}{하나의 선택 인자와 두 개의 인자}를 요구한다. 즉, -%\begin{verbatim} -%\useremph[]{}{text} -%\end{verbatim} -%height는 방점으로 사용할 문자가 올라갈 길이이고 dotchar는 -%방점 문자이다. text는 방점을 찍을 텍스트. -%단, 이 \verb|\useremph| 명령은 \xetexko 에서 제공되는 같은 이름의 -%명령과도 그 사용법이 다르고 레거시 텍을 위한 \obclass에서의 사용법과도 다르므로 주의를 요한다. - -\subsection{chapter styles} -최근의 memoir는 상당히 많은 chapter style을 정의하고 있다. oblivoir의 chapter style -정의 방식은 기본적으로 memoir와 동일하지만 다음 몇 가지가 다르다. - -\begin{itemize}\tightlist -\item \cs{printchaptername} 명령이 무의미하다. -\item \cs{prechapternum} 명령과 \cs{postchapternum} 명령이 추가되었다. -\item \cs{hchaptertitlehead}라는 명령이 사용된다. 이것은 특히 running heading과 관련이 있다. -\end{itemize} - -KTUG 사설 저장소를 통하여 설치할 수 있는\footnote{% - 사설 저장소를 등록할 수 없는 상황이라면 직접 다운로드하라. - \url{http://ftp.ktug.org/KTUG/texlive/tlnet/archive/} -} -ob-chapstyles라는 패키지에는 몇 가지 memoir -chapter 스타일을 oblivoir화해둔 것이 있다. 이 자체를 그대로 써도 좋고 이를 자신만의 스타일을 -만드는 데 참고하여도 좋을 것이다. - -\subsection{한글 pagestyle} - -oblivoir가 추가적으로 제공하는 페이지 스타일로 \texttt{hangul}이 있다. -\begin{boxedverbatim} -\pagestyle{hangul} -\end{boxedverbatim} - -\section{샘플 문서} - -이 작은 안내서에 더하여 간단한 \obclass\ 샘플 문서를 하나 제공한다. -이 문서에서 여러 가지 memoir와 \obclass 의 기능을 살펴볼 수 있을 것이다. -oblivoir-test.tex을 컴파일해보고 소스를 검토해보시기 바란다. - -%\subsection{fontspec 옵션과 수학 글꼴}\myLabel{sec:fontspec}{sec:폰트스펙} -% -%fontspec 패키지와 이를 확장한 mathspec 패키지를 이용하여 -%수학 글꼴 일부를 바꾸고자 하거나 mathpazo와 같은 수학 글꼴 세트를 -%적용하고자 할 경우가 있다. 이 때는 다음 두 가지 조치를 해야 한다. -% -%\begin{enumerate}[(1)] -%\item 클래스 옵션으로 [manualfontspec]을 선언한다.\footnote{% -% 2011/09/15 이전 버전에서는 [fontspec]이라는 이름이었다.} -%이 선언으로 -%사용자는 fontspec을 자신의 책임 하에 로드할 수 있다. 심지어 -%xltxtra나 mathspec과 같이 fontspec을 부르는 패키지를 별도로 -%로드할 수 있다. -%\item 윗항의 fontspec 패키지 로드 후에 xetexko-xobfont 패키지를 -%부른다. 이 설정 이후에야 \textbackslash setkormainfont 와 같은 -%명령을 쓸 수 있게 될 것이다. -%\end{enumerate} -%이것은 mathfont를 조절하려면 fontspec의 옵션을 별도로 정의하여 -%상세한 설정을 해야 할 경우가 있기 때문이다. 예컨대 mathpazo를 -%수학 기본 글꼴로 쓰려 한다면 다음과 같이 하는 것이 가능하다. -%\begin{boxedverbatim} -%\documentclass[manualfontspec]{xoblivoir} -%\usepackage{mathpazo} -%\usepackage[math,quiet]{fontspec} -%\usepackage[math,quiet,MnSymbol]{mathspec} -%\setmathsfont{Asana-Math} -%\setmainfont[Ligatures=Common]{Palatino Linotype} -%\usepackage{xetexko-xobfont} -%\end{boxedverbatim} -%이 예보다 간단하게 할 수 있는 것도 많다. 이 예는 설명을 위하여 -%보인 것일 따름이다. -%위의 mathspec 대신 fontspec 패키지 문서에 나와 있듯이 \textbackslash setmathrm -%등의 명령으로 수학 폰트를 조절할 수 있다. -% -%2011/09/15 버전에서 이와 관련한 몇 가지 사항이 추가되었다. -%\begin{enumerate}[(a)] -%\item {[manualfontspec]} 옵션을 주었을 때는 위와 같은 방법으로 fontspec -%패키지를 수동 로드할 수 있다. -%\item {[fontspec=\{no-math\}]}와 같이 fontspec 패키지에 옵션을 미리 설정해줄 -%수 있다. no-math 옵션을 주면 fontspec 명령들이 수식에는 영향을 끼치지 않으므로 -%익숙한 CM-math 글꼴로 수식이 식자된다. -%\item {[preload=mathspec,preloadoption=\{math\}]}와 같이 preload할 패키지에 -%넘겨줄 옵션을 preloadoption으로 지정할 수 있다. -%\end{enumerate} - -%\subsection{옛한글과 세로쓰기}\myLabel{sec:oldhangul}{sec:올드한글} -% 옛한글 글꼴을 사용하려면 [oldhangul] 옵션을 주고 글꼴을 지정해야 한다. -% 세로쓰기는 사용가능하나, 아직 xoblivoir에서 조작하도록 하지는 않았다. -% \xetexko{} 매뉴얼에 옛한글 쓰기에 관한 간략한 소개가 있다. -%2010년 2월, \xetexko 의 옛한글 조판은 거의 완전한 수준에 이르렀다. -%입력을 표준에 맞는 소위 `첫가끝' 코드로 하면서도 사용자 영역(PUA)에 옛한글이 -%들어 있는 글꼴의 옛한글로 mapping이 가능해졌으며, GSUB 옛한글 글꼴(현재 -%알려진 것으로는 은 바탕과 Microsoft Office 2002 Plus Pack의 옛한글 글꼴밖에 없다)을 -%그대로 이용하여 옛한글 식자가 가능하다. -% -%이 역시 \xetexko 의 기능으로서 \xobclass는 더이상 할 일이 없어 이 절의 내용을 삭제한다. - -%\subsection{amssymb}\myLabel{sec:ams}{sec:에이엠에스} -%amssymb 패키지를 로드하려 시도하면 몇 가지 명령이 이미 정의되어 -%있다는 메시지가 나온다. 이 메시지를 줄이려면 amssymb 대신 -%xob-amssymb를 usepackage하도록 한다. -% -%한편, LyX에는 amsmath와 amssymb 패키지를 자동으로 로드하는 기능이 있다. -%이 때문에 사용자가 xob-amssymb를 로드하려 해도 그보다 이전에 amssymb가 -%LyX에 의해 로드되어 의도하는 결과를 얻지 못하는 경우가 있다. 이 때를 위하여 -%[amsmath] 옵션을 마련해두었다. 이 옵션이 활성화되면 amsmath와 xob-amssymb를 -%xoblivoir가 로드해준다. -% -%\subsection{flowfram}\myLabel{sec:flowfram}{sec:플로프렘} -%fapapersize 및 flowfram 패키지와 함께 쓸 때, 첫 페이지의 pdf 사이즈만이 -%fapapersize로 지정한 것을 따라가지 않는 문제점이 있다.\footnote{% -% 이주호 님이 알려주셨음.} -% -%\xobclass 는 memoir의 페이지 출력 루틴을 조금 수정하여 대부분의 경우 -%pdf 사이즈 충돌 문제가 해결되도록 해두었다. -%그러나 어떤 경우 pdf 파일의 첫 페이지와 이후 페이지의 사이즈가 불일치하는 -%문제가 여전히 발생할 가능성이 있어 다음 옵션을 없애지 않았다. -% -%[a4paper] 등 미리 정의된 페이지의 경우는 아무런 문제가 생기지 않는다. -%그러나 memoir 옵션으로 지정할 수 없는 사이즈, -%예컨대 190mm$\times$260mm pdf를 만들고 싶을 때는 어떻게 하는가? -%\xobclass 에게 페이지 사이즈를 강제로 알려주는 방법이 있다. -%\begin{boxedverbatim} -%\documentclass[,fawd=190mm,faht=260mm]{xoblivoir} -%\usepackage{fapapersize} -%\usefapapersize{190mm,260mm,30mm,*,40mm,*} -%\usepackage{flowfram} -%\end{boxedverbatim} -%이제 첫 페이지의 사이즈도 두번째 이후의 것과 같아졌을 것이다. -% -%\subsection{preload}\myLabel{sec:preload}{sec:프리로드} -%일부 패키지 중에는 이따금 memoir 클래스 자체보다 미리 로드되어야 하는 것이 있다. -%대표적인 예가 아랍어를 식자할 때 빼놓을 수 없는 bidi 패키지이다. -%이와 같이 memoir보다 먼저 로드해야 하는 패키지를 쓸 때 다음과 같이 한다. -%\begin{boxedverbatim} -%\documentclass[preload={bidi}]{xoblivoir} -%\end{boxedverbatim} -% -%preload할 패키지에 전해줄 옵션은 다음과 같이 설정한다. -%\begin{boxedverbatim} -%\documentclass[preload={mathspec},preloadoption={math}]{xoblivoir} -%\end{boxedverbatim} -% -%moreverb의 경우도 이렇게 하면 되므로 이제 의미가 없어진 옵션이 되었지만 종래 -%작성된 문서와의 호환을 위해서 없애지는 않았다. -% -%\subsection{moreverb}\myLabel{sec:moreverb}{sec:모아버브} -%이 옵션은 pstricks를 사용하기 위하여 pdfm\-tricks를 이용하려 할 때 -%필요하다. pdfm\-tricks는 moreverb, graphicx, (x)color 패키지가 미리 -%로드되어야 동작하는데, 이 중 graphicx와 xcolor는 문제가 없지만 -%oblivoir(memoir)에서 moreverb는 \textbackslash usepackage 로 -%로드하면 memoir의 일부 명령과 충돌한다. -%이 충돌을 해결해주는 옵션이며, 이 옵션을 준 후에 moreverb를 별도로 -%로드할 필요 없다. moreverb는 \myPageREF{sec:preload}{sec:프리로드}에서 설명하는 -%preload로 미리 로드하는 방법이 있으므로 사실상 obsolete인 옵션이다. -% -%\subsection{microtype}\myLabel{sec:microtype}{sec:마이크로타입} -%현재까지 \XeTeX 은 pdf\TeX과 Lua\TeX 의 microtype 기능을 엔진 수준에서 지원하지 않는다. -%그러나 \xetexko 는 xetexko-hanging이라는 기법을 이용하여 온점과 반점을 판면 밖으로 밀어냄으로써 -%margin kerning과 비슷한 효과를 줄 수 있게 하는 재미있는 기능을 제공한다. -%이 옵션은 이름은 microtype이지만 실은 xetexko-hanging을 활성화하는 역할을 한다. -%이 문서가 이 기능을 활성화하여 작성되었다. -% -%\subsection{hyperref, xcolor}\label{sec:hyperrefxcolor} -%LyX 을 쓴다거나 할 때 \XeTeX 을 위해서 hyperref의 [unicode] 옵션을 -%꺼주어야 할 때가 있다. 이를 위해서 hyperref 패키지에 미리 넘길 옵션을 지정할 수 있게 -%하였다. -%\begin{boxedverbatim} -%\documentclass[hyperref={unicode=false}]{xoblivoir} -%\end{boxedverbatim} -% -%필요에 의해 xcolor 패키지에 대해서도 비슷하게 할 수 있도록 해두었다. - -\section{첨언} -\xobclass{} 사용이 어느 정도로 쉬운가 하면, 나는 맨처음 이 문서를 -LyX에서 작성하여 export한 다음, 두 줄 정도를 지우고 폰트 -설정명령만을 써넣었다. 그래도 훌륭한 \XeLaTeX\ 문서가 만들어졌던 -것이다. - -이 글을 쓰기 시작할 때만 해도 \xetexko{}와 \xobclass{}는 -완성되어 있지 않았다. 그러나 지금은 일반적인 문서를 작성함에 있어서 -불편이 없을 정도가 되었다. - -\bigskip - -돌이켜보면, 한글을 \TeX\ 문서에 사용할 수 있다는 사실 자체가 -신기했던 그 때로부터 20여년이 흘렀다. 본격적인 한글\LaTeX\ 시스템들이 -나오기 시작했던 1990년대 중반으로부터 헤아려도 십수 년, -이 기간 동안 한글이라는 문자 체계를 식자하기 위해 지불해야 했던 -엄청난 노력과 자원을 생각하면 금석지감이 없지 않다. - -Lua\TeX 과 \XeTeX 이라는 유니코드 텍 엔진의 등장은, 이러한 모든 -노력들을 일시에 해결해버렸다. 이제 한글 문자의 식자는 더이상 -문제가 되지 않는다. -그러나 한글 문서다운 한글 문서, 한글 문서의 타이포그래피의 완성을 -위한 길은 아직도 요원하다. 단순히 “글자를 찍는” 문제가 해결되었다고 -해서 모든 일이 끝난 것은 아닌 것이다. 단지 더 생산적인 문제를 -더 잘 구현할 수 있는 바탕이 갖추어진 것일 뿐이라고 생각한다. - - -% \section{알려진 문제점} - -% 아래 문제점과 버그들은 다음 버전에서 해결하도록 노력할 것이다. - -% \begin{enumerate}[(가)] \tightlist -% % \item ExternalLocation 옵션을 활성화하는 설정과 그렇지 않은 설정을 함께 쓸 때 -% % ExternalLocation 명령이 순서상 먼저 나와야 한다. - -% \item 윈도우즈 폰트 네임과 다른 리눅스 및 매킨토시의 폰트 이름 호출이 -% 실패하는 경우가 있다. 다행히 은 글꼴의 경우는 문제없으나, 은 글꼴은 반드시 -% 최신 버전이어야 한다. 우분투 등의 리눅스에서 패키지로 설치해주는 기본 설치 -% 글꼴은 때로 문제를 일으킨다. 이것은 저자가 어찌해볼 수 있는 문제가 아니다. -% \end{enumerate} - -% 한글 기호 문자 일부는 한자 영역에 배정하였다. 한자가 없는 한글 글꼴을 -% 본문 기본 서체로 지정하는 경우를 위한 것이다. 그러나 이 문제는 아직 -% 확정된 것이 아니며 좀더 테스트를 거쳐서 결정할 일로 보인다. - -%%\section{이 문서의 폰트 사용 설정} -%% -%%이 문서의 폰트 사용 설정은 다음과 같다. -%%\begin{boxedverbatim} -%%\setmainfont[Mapping=tex-text]{Bradley Hand ITC} -%%\setmonofont[Scale=.85]{Consolas} -%%\setkormainfont(문화 궁서 Std L){문화 궁서 흐림 Std L}(){네이버사전} -%%\setkormonofont{은 필기} -%%\setmonoscale{0.9} -%%\end{boxedverbatim} - -%%%\section{버전 인포}\myLabel{sec:versioninfo}{sec:버전인포} -%%% -%%%\begin{enumerate}\tightlist -%%%\item 이 초간단 매뉴얼은 xoblivoir 2011/09/15 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2010/02/10 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/12/03 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/11/24 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/11/09 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/23 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/22 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/12 버전에 일치한다. -%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/11 버전에 일치한다. -%%%\end{enumerate} -%%% -%%%%%% 한자 테스트 -%%%이 매뉴얼은 Notepad++로 編輯하였다. 다 좋은데 Notepad++의 -%%%KCmenu plug\-in에 xelatex 實行 命令 短縮키가 없어서 不便했다. -%%%그러던 것이 최근 새로운 단축키가 생김으로써 훨씬 편하게 작업할 -%%%수 있게 되었다. -%%% -%%%%이 글을 더 줄인 \bnm*{極超簡單 매뉴얼}을 究想中이다. - -\end{document} diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-test.tex b/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-test.tex deleted file mode 100644 index cdefcb06bbb..00000000000 --- a/Master/texmf-dist/doc/latex/kotex-oblivoir/doc/oblivoir-test.tex +++ /dev/null @@ -1,1326 +0,0 @@ -%!TEX encoding = UTF-8 Unicode -% arara: xelatex -% arara: komkindex -% arara: xelatex -%% -%% 이 파일은 oblivoir 패키지 문서의 일부로서, oblivoir 클래스의 여러 기능을 -%% 테스트하기 위한 목적으로 제공합니다. 일부 기능은 테스트 목적으로 과장되어 있습니다. -%% pdflatex, xelatex, lualatex으로 컴파일할 수 있습니다. (결과의 완전한 동일성은 -%% 보장하지 못합니다.) -%% -%% 2015/04/22. memoir url 수정 -%% 2014/06/15. 부분 수정. -%% 2013/09/28. xoblivoir ver2 버전으로 포팅. -%% 2010/03/17. xoblivoir 버전으로 포팅 -%% -%% oblivoir 2.0.1 테스트 파일 -%% Written by 도은이아빠. -%% public domain. -%% - -\documentclass[demo,chapter,openany,amsmath,gremph,adjustmath]{oblivoir} -%%% amsmath 옵션은 amsmath, amssymb 패키지를 로드해준다.. - -%% display overfullrule -%\setlength\overfullrule{5pt} - -%% 페이지 레이아웃. fapapersize를 이용한다.. -\usepackage{fapapersize} -\usefapapersize{220mm,276mm,20mm,80mm,30mm,35mm} - -% 폰트 설정 -\ifPDFTeX - \usepackage{mathpazo} -\else\ifLuaOrXeTeX - \setmainfont{TeX Gyre Pagella} - \setsansfont[Scale=.95]{TeX Gyre Heros} -%% \setkomain/sansfont : see oblivoir-simpledoc. - \setkomainfont[HCRBatangLVT]()(-Bold)() - \setkosansfont[NanumGothic]()[](HCRDotumLVT) -%% 수학 폰트 -% \usepackage{unicode-math} -% \setmathfont{Asana-Math.otf} -\fi\fi - -\ifLuaTeX -\def\interHANGUL{InterHangul} -\else\ifXeTeX -\def\interHANGUL{interhchar} -\fi\fi - -%% logos -\usepackage{kotex-logo} -%% index for \koTeX -%\let\ORIGkoTeX \koTeX -%\def\koTeX{\ORIGkoTeX\index{ko.TeX}} - -%%% marginfix -%\usepackage{marginfix} - -%% 좌우 마진의 marginpar 위치가 혼선을 보인다면 -%% 다음을 선언한다. -\strictpagecheck - -\usepackage{cite} - -\ifPDFTeX -\usepackage{graphicx} -\fi -\usepackage[dvipsnames]{xcolor} -%% pdf 정보 -\hypersetup{% - bookmarks=true,% - plainpages=false,% - colorlinks=true,% - pdfauthor={Karnes Kim},% - pdfcreator={Karnes Kim} -} - -\nonfrenchspacing -%% nonfrench를 설정하는 경우에는 \xspaceskip도 정해주자. -%% 여기서는 눈에 띄도록 이 길이를 넉넉하게 잡았음. -%% 일반적으로 .6 내지 .7 정도를 권장함. -\xspaceskip=.8em plus .1em minus .1em - -%% 이 아래 명령들은 본문에서 바꿀 수 있다. -%% 행간설정. 두번째 인자는 fn/float에 적용되는 행간. -\SetHangulspace{1.5}{1.1} -%% quotespacing을 설정함. \noadjustqutespacing이 default. \adjustquotespacing -%\adjustquotespacing -%% float/fn의 좁은 행간 설정을 disable. \adjustfloatfnspacing -\noadjustfloatfnspacing - -%% snugshade 환경에 칠할 배경색. -\definecolor{shadecolor}{gray}{0.85} - -%%% from memman.tex. modified. -%% 본문에서 한 번 사용하기 위해 설정한 chapter -%% style 예제. 이 예제는 memman에 있다. -%% 한글판을 위하여 조금 수정함. -\makeatletter -\newlength{\numberheight} -\newlength{\barlength} -\makechapterstyle{veelo}{% - \setlength{\beforechapskip}{40pt} - \setlength{\midchapskip}{25pt} - \setlength{\afterchapskip}{40pt} - \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright} - \renewcommand{\chapnumfont}{\normalfont\HUGE} - \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright} - \renewcommand{\printchaptername}{}% - \renewcommand{\prechapternum}{% <= 이 명령을 정의. - \chapnamefont\MakeUppercase{chapter}} - \renewcommand{\postchapternum}{}% <= 이 명령을 정의. 여기서는 비움. - \renewcommand{\chapternamenum}{} - \setlength{\numberheight}{18mm} - \setlength{\barlength}{\paperwidth} - \addtolength{\barlength}{-\textwidth} - \addtolength{\barlength}{-\spinemargin} - \renewcommand{\printchapternum}{% - \makebox[0pt][l]{% - \hspace{.8em}% - \resizebox{!}{\numberheight}{\chapnumfont \thechapter}% - \hspace{.8em}% - \rule{\barlength}{\numberheight} - } - } - \makeoddfoot{plain}{}{}{\thepage} -} - -\makechapterstyle{mycompanion}{% - \chapterstyle{default} - \renewcommand*{\chapnamefont}{\normalfont\LARGE\scshape} - \renewcommand*{\printchaptername}{\raggedleft\chapnamefont \@chapapp} - \renewcommand*{\prechapternum}{\raggedleft\chapnamefont \pre@chapter} - \renewcommand*{\chapnumfont}{\normalfont\Huge} - \setlength{\chapindent}{\marginparsep} - \renewcommand*{\printchaptertitle}[1]{% - \begin{adjustwidth}{}{-\chapindent} - \raggedleft \chaptitlefont ##1\par\nobreak - \end{adjustwidth}}} - -\makeatother - -%%% User's commands -%% 사용자 명령들. 인덱스 관련 명령. -\newcommand\dispcmd[1]{% - \texttt{\textbackslash #1}% - \index{명령!\textbackslash #1}% - \index{#1@\textbackslash #1}% -} - -\newcommand\cls[1]{% - \texttt{#1}\ 클래스% - \index{클래스!#1}% - \index{#1~클래스}% -} - -\newcommand\pkg[1]{% - \texttt{#1}\ 패키지% - \index{패키지!#1}% - \index{#1~패키지}% -} - -\newcommand\thisclass{% - \texttt{memoir}\ 클래스% - \index{클래스!memoir}% - \index{memoir~클래스}% -} - -\newcommand\env[1]{% - \textsf{#1} 환경% - \index{환경!#1}% - \index{#1~환경}% -} - -\newcommand\wi[2][\empty]{% - \ifx#1\empty - \index{#2}#2% - \else - \index{#1!#2}#2% - \fi -} - -%% showcommand/showenv 명령. -%% 만약 command/env 보여주기를 끄려면 -%% \showcommandfalse를 선언한다. -\makeatletter -\newif\if@showcommand\@showcommandtrue -\newcommand\showcommandtrue{\@showcommandtrue} -\newcommand\showcommandfalse{\@showcommandfalse} - -\strictpagechecktrue - -\newcommand\showcommand[1]{% - \if@showcommand - \checkoddpage\ifoddpage - \marginpar{\small\texttt{\textbackslash #1}}% - \else - \marginpar{\hfill\small\texttt{\textbackslash #1}}% - \fi - \fi -} - -\newcommand\showenv[1]{% - \if@showcommand - \checkoddpage\ifoddpage - \marginpar{\small\textit{#1}(env.)}% - \else - \marginpar{\hfill\small\textit{#1}(env.)}% - \fi - \fi -} -\makeatother - -%% MakeShortVerb -\MakeShortVerb{\|} -% \DeleteShortVerb{\|} - -%% 인덱스의 hyperpage 처리를 위해서 -\newcommand\bfhypidx[1]{% - \textbf{\hyperpage{#1}}% -} - -%% replace \bigskip -\newcommand\alineskip{% - \vspace{\onelineskip}% -} - -%% showindexmark -%% 여백을 충분히 확보하고 다음 행을 -%% 활성화해볼 것. -%\showindexmarktrue - -%% index를 만든다. -\makeindex - -%% newlist -%% 새로운 리스트를 만드는 것이 정말 너무나 간단하다. -\newcommand\queryfont{\raggedleft\sffamily\small} -\newcommand\listofqueriesname{Queries~목록} -\newlistof{listofqueries}{loq}{\listofqueriesname} -\newlistentry{query}{loq}{0} -\newcommand{\query}[2][\empty]{% - \refstepcounter{query} - \par\noindent\fbox{Q?}~\begingroup\queryfont #2\endgroup% - \addcontentsline{loq}{query}{\protect\numberline{\thequery}#2}\par - \ifx#1\empty\else\index{Query!#1}\fi -} - -%% title page -\newcommand\MakeTitle{% - \begin{titlingpage} - \setcounter{page}{-1}% - \begin{adjustwidth*}{0mm}{-55mm} - \newlength\tmplen\setlength\tmplen{\textwidth}\addtolength\tmplen{60mm} - \fbox{% - \begin{minipage}{\tmplen} - \vspace*{90mm} - \begin{center} - \LARGE\bfseries\thetitle \\ \vskip\onelineskip - \normalfont\normalsize\theauthor - \end{center} - \vspace*{100mm} - \end{minipage}} - \end{adjustwidth*} - \end{titlingpage} -} - -%% 각주. footmisc는 memoir와 함께 쓸 수 있다. -%% 참고. [bottom] footnote를 위해서라면 -%% 다음과 같이 할 것을 권장함. raggedbottom에서 동작함. -%\renewcommand*{\footnoterule}{\kern-3pt\vfill -% \hrule width 0.4\columnwidth \kern 2.6pt} -%% 각주를 floats 아래 두는 memoir 명령. -\feetbelowfloat - -%% 밑줄. -\ifLuaTeX\else -\usepackage[normalem]{ulem} -\fi - -%% 사소한 설정 -\def\util#1{\texttt{#1}\index{Utility!#1}} - -%%% -%\headnamereftrue - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%% 이제 문서를 시작. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{document} - -\title{memoir에서 한글을 쓰자!} -\author{도은이아빠} -\date{\today} - -%% 아래 \MakeTitle 명령은 이 문서의 preamble에 -%% 정의되어 있다. 표지 디자인은 이 정의를 참고하여 -%% 수정하여 볼 것. -\MakeTitle -\cleardoublepage - -\frontmatter -% ToC, etc -%% 차례 페이지들. 여기서는 demo chapter style과 -%% Ruled 페이지 스타일을 적용한다. -\chapterstyle{demo} - -\tableofcontents -%\clearpage -\listoffigures -%\clearpage -\listoftables -%% listofqueries는 \newlistof로 만든 -%% local \listofx임. -%\clearpage -\listofqueries - -\mainmatter - -%% hangul 페이지 스타일을 테스트하기 -%% 위하여 제1편 앞에 한 챕터를 둠. 다만 chapter의 첫 면은 -%% chapter 페이지 스타일을 따른다. -\pagestyle{hangul} - -\chapterstyle{default} - -\chapter{xoblivoir} - -이 문서는 xoblivoir의 몇 가지 기능을 시험하기 위한 목적으로 -작성되었다. 이 문서의 원본은 memhangul을 개발하던 당시 -테스트용으로 사용된 바, 가장 먼저 만들어진 oblivoir 문서이다. - -해당 문단의 여백에 사용되고 있는 명령이 나와 있으므로 참고할 수 있을 -것이다. 실제로 xoblivoir 사용설명서를 작성하기 어려운 것이 -기본적인 것은 모두 memoir에 바탕을 두고 있는 데다가 -한글화하면서 변화한 점도 많아서 이것을 모두 모으면 너무나 방대한 -내용이 된다는 점이다. - -이 문서의 원본을 잘 연구하면 그럭저럭 oblivoir가 어떻게 동작하는지 -짐작할 수 있게 되기를 희망한다. - -이 문서는 다음 순서로 컴파일할 수 있다. |$ENGINE|은 \util{pdflatex}, \util{xelatex}, \util{lualatex} 가운데 하나이고 -|$JOBNAME|은 파일 이름(\texttt{xobtesttest})이다. -한편, 색인을 만드는 유틸리티 |$MAKEINDEXENGINE|은 \util{pdflatex} 상황에서는 -\util{komkindex}이고 그밖의 경우에는 \util{kotexindy}이다. - -\begin{verbatim} - # $ENGINE $JOBNAME - # $ENGINE $JOBNAME - # $MAKEINDEXENGINE $JOBNAME.idx - # $ENGINE $JOBNAME -\end{verbatim} - - - -\chapter{default 페이지 스타일} - -\section{맹동야를 보내는 글} -\epigraph{한유 글, \cnm{送孟東野序}}{김학주 옮김} - -대개 만물은 평정을 얻지 못하면 소리를 내게 된다. -초목은 소리가 없으나 바람이 흔들면 소리를 내게 되며, 물은 소리가 없으나 바람이 -움직이면 소리를 내게 된다. 물이 뛰어오르는 것은 바위같은 곳에 부칮쳤기 -때문이다. 물이 세차게 끓어오르는 것은 한 곳에서 물결을 막기 때문이다. -물이 펄펄 끓어오르는 것은 불로 태우기 때문이다. 쇠나 돌은 소리가 없으나 -치면 소리를 낸다. 사람이 말하는 데 있어서도 이와 같으니, -부득이한 일이 있은 후에야 말을 하게 된다. 노래를 하는 것은 생각이 -있기 때문이며, 우는 것은 회포가 있기 때문이다. - -음악이라는 것은 가슴속이 막혀 답답할 때 밖으로 새어나오는 것이며 -소리를 잘 내는 것을 선택하여 이것을 빌려서 소리를 내게 된다. -쇠\cntrdot 돌\cntrdot 실\cntrdot 대\cntrdot 박\cntrdot 흙\cntrdot -가죽\cntrdot 나무 등 여덟 가지 악기를 만드는 데 쓰이는 자료들은 만물 -가운데 소리를 잘 내는 것들이다. - -자연의 계절에 있어서도 역시 그러하니 소리를 잘 내는 것을 선택하여 그것을 -빌려서 소리를 내게 된다. 그러므로 새를 빌려 봄의 소리를 내고, 우뢰를 -빌려 여름의 소리를 내고, 벌레를 빌어 가을의 소리를 내며, -바람을 빌어 겨울의 소리를 낸다. 사계절이 서로 바뀌어 나타나는 현상은 -반드시 그 평정을 얻지 못했기 때문일 것이다. - -이는 사람에게 있어서도 마찬가지이다. 사람의 소리 가운데 정묘한 것이 언어이며 -문장의 표현은 언어 가운데서도 더욱 정묘한 것이다. 그 중에서도 더욱 소리를 -잘 내는 것을 선택하여 이것을 빌려서 소리를 내게 된다. - -당요\cntrdot 우순 시대에는 고요와 우가 소리를 잘 내는 사람들이어서 -그들을 빌려 소리를 냈다. 기는 문사로써 소리를 내지는 못했으나 -스스로 소를 빌려서 소리를 냈다. 하나라 때에는 오자가 노래를 불러 소리를 -냈다. 이윤은 은나라에서 소리를 냈고 주공은 주나라에서 소리를 냈다. - -무릇 \snm{시}\cntrdot \snm{서} 등 육예에 실린 것들은 모두 소리를 -잘 낸 것들이다. 주나라가 쇠퇴해지자 공자의 무리들이 소리를 냈는데 -그 소리를 크게 멀리 들렸다. 옛 서적에 ``하늘이 장차 선생을 목탁으로 -삼으려 하는구나!''\,라고 하였는데도 믿지 못하겠는가! - -주나라 말엽에 이르러서는 장주가 황당한 문사로써 초나라에서 -소리를 냈다. 초나라를 큰나라였는데 망할 무렵이 되어 굴원이 소리를 냈다. -장손진\cntrdot 맹가\cntrdot 순경은 도로써 소리를 낸 자들이고, -양주\cntrdot 묵적\cntrdot 관이오\cntrdot 안영\cntrdot 노담\cntrdot 신불해\cntrdot -한비\cntrdot 신도\cntrdot 전연\cntrdot 추연\cntrdot 시교\cntrdot 손무\cntrdot -장의\cntrdot 소진의 무리들은 모두 술법으로써 소리를 냈다. - -진나라가 융성하자 이사가 소리를 냈으며 한나라 때에는 사마천\cntrdot 사마상여\cntrdot -양응이 가장 소리를 잘 낸 자들이다. - -그 후 위\cntrdot 진 시대에는 소리를 내는 자들이 옛날 사람들에 미치지 못했지만 -또한 아직 끊이지는 않았었다. 그 가운데 괜찮은 것들도 그 소리는 맑지만 -경박하고 그 음절은 빠르고 급하며 그 문사는 음란하고 슬프며 -그 뜻은 느슨하고도 방자하며 그 표현은 난잡하고 문채가 없었으니 -하늘이 그 덕을 추하게 여겨 돌보지 않은 때문이었는가? 무엇 때문에 -소리를 잘 내는 자들로 하여금 소리를 내게 하지 않았는가! - -당(唐)나라가 천하를 장악하고나서는 진자앙\cntrdot 소원명\cntrdot 원결\cntrdot -이백\cntrdot 두보\cntrdot 이관 등이 모두 자신의 잘하는 것으로써 소리를 내었다. - -현재 살아 있으면서 아랫자리에 있는 사람으로 동야 맹교가 비로소 시로써 -소리를 내었다. 그는 위\cntrdot 진 시대 사람들보다 훨씬 뛰어나며 -게을리하지 않으면 옛사람들의 수준에 미칠 수 있겠고 -그밖의 작품들은 한나라의 문풍에 젖어 있다. 나에게서 배운 자들로서 -이고와 장적이 가장 뛰어나다. 이 세 사람의 소리는 진실로 훌륭하다. - -그런데 하늘이 장차 그들의 소리를 온화하게 하여 국가의 성대함을 소리내게 -할 것인지 아니면 장차 그들 자신을 가난하고 굶주리게 하고 -그들의 마음을 근심스럽게 하여 그 불행을 스스로 소리내게 할 것인지 모르겠다. -이 세 사람의 운명은 하늘에 달려 있는 것이니 윗자리에 있다고 해서 어찌 -기뻐하겠으며 아랫자리에 있다고 해서 어찌 슬퍼하겠는가. - -동야가 강남에 근무하러 떠나면서 즐거워하지 않는 것 같아서 내가 그의 -운명이 하늘에 달려 있다고 말하며 이를 풀어주려고 하는 것이다. - -%% 본문시작. -%% 본문은 companion chapter style로 식자할 것인데, -%% default를 한 번 부른 이유는 앞서 사용한 demo의 -%% 글꼴 설정에 영향을 받기 때문이다. - -\part{xoblivoir 테스트} - -\chapterstyle{mycompanion} -\pagestyle{companion} - -%% 제목은 두 줄로 식자하되, heading과 toc에는 개행 없이. -% \chapter[memoir 클래스에서 한글을 쓰자][memoir 클래스에서...]{memoir -% 클래스에서\\ 한글을 쓰자} % -> [toc][heading]{title} -% \chapter[memoir 클래스에서 한글을 쓰자]{memoir 클래스에서\\ 한글을 -% 쓰자} % -> [toc,heading]{title} %% 이 부분이 memoir와 다르다. -% \chapter{memoir 클래스에서 한글을 쓰자} % {toc,heading,title} -% \chapter[memoir 클래스에서 한글을 쓰자][memoir 클래스에서 -% 한글...]{memoir 클래스에서\\ 한글을 쓰자} -% \chapter[memoir 클래스에서 한글...]{memoir 클래스에서\\ 한글을 쓰자} -% 주의: titleref에 \\ 문자가 들어가면 안된다. titleref에서 사용하는 -% 것은 두번째 옵션인자이므로, 다음과 같이 두번째 옵션 인자를 밝혀줄 -% 것. -\chapter[memoir 클래스에서 한글...][memoir 클래스에서 한글을 쓰자]{% - memoir 클래스에서\\ 한글을 쓰자} -\label{sec:firstchap} - -\chapterprecis{\noindent 이 장에서는 memoir 클래스에 대해 간략히 - 소개하고 한글화에 대하여 개관한다.} - -\showcommand{chapterprecis}\showcommand{chapterstyle}\showcommand{pagestyle} -\thisclass\는 Peter Wilson 씨가 작성한 \LaTeX\ 클래스이다. \LaTeX 이 제공하는 -표준 클래스\index{표준~클래스|bfhypidx}는 \cls{book}, \cls{report}, \cls{article}, \cls{letter} -등이 있지만, 어딘가 모르게 세세한 부분에서 부족한 점이 있어서 수많은 추가 패키지를 -사용해야 원하는 문서 모양을 구현할 수 있는 경우가 많았다. \thisclass\는 그 동안 개발된 -문서 조판의 세세한 부분을 하나의 클래스로 통합한 것으로, 사용자 입장에서는 -정말 획기적인 환상적인 클래스가 아닐 수 없다. 매우 많은 패키지들을 이 -클래스는 통합\cntrdot 내장하거나 그와 유사한 기능을 제공한다. -이 패키지의 결점은, 한번 사용하기 시작하면 다시는 book과 같은 -표준 클래스로 돌아가기 어렵다는 점이다. - -EUC-KR\index{한글!EUC-KR|bfhypidx} 한글을 \thisclass 에서 사용하도록 만들었던 것이 -\pkg{memhangul}였다. -이제 여기서 제공하는 클래스는 본질적으로 \pkg{memhangul}\과 동일하지만 -한글을 UTF-8 유니코드로 입력할 수 있게 만든 것이다. \wi[유니코드]{유니코드 한글}을 -처리하기 위해서 \pkg{dhucs}\를 채택하였다. -\query[유니코드]{유니코드 한글 처리} - -\alineskip - -\hangfrom{한글 }사용을 위해서 H\LaTeX 을 채택한 결과는 어느 정도 -괜찮은 결과를 가져왔다. 그러나 \pkg{dhucs}\를 이용하여 구현한 \pkg{memhangul-ucs}\는 -괜찮은 정도가 아니라 아주 훌륭한 결과를 얻게 되었다. - -\showcommand{hangpara}\showcommand{hangfrom}% -\hangpara{2.6em}{2}% -{\SetAdhocFonts{unpg}{ungt}\showcommand{SetAdhocFonts}% -유니코드 한글 입력이 가능하도록 하는 것은 \pkg{dhucs}에서였다. 이것은 -\LaTeX-ucs 패키지와 한글 자동조사 및 한글 문서서식을 합친 것인데, -핵심적인 한글 식자와 자동조사의 구현은 김도현 교수가 작성하였다. -필자는 사용자 인터페이스를 조금 추가하고 한글 문서서식을 보충하는 -정도로 미미한 기여를 하였다.} - -이 패키지의 장점은 대강 다음과 같다. -\tightlists\showcommand{tightlists} -\begin{itemize} - -\item 유니코드를 쓴다는 것 자체가 장점이다. EUC-KR 한글의 범위를 -넘어서서 맞춤법에는 어긋나지만 꼭 써야할 경우가 없지 않은 ``띡''과 같은 -완성형 밖 글자를 식자할 수 있다.\footnote{% - 중세 한글 문제는 코드와 폰트의 문제가 얽혀 있어서 - 여기에서는 다루지 않는다.} - -\item 절에 \wi{한글식 절카운터 모양}(section counter format), \dispcmd{pgana} 등을 -사용하는 것이 쉽다. - -\item \wi{자동조사} 기능이 구현되어 있다. - -\item 주요 pagestyle과 chapterstyle이 \wi{한글}과 호환되게 하였다. 이호재 님의 -말씀에 의하면, \thisclass 는 여러 가지 면에서 매우 편리하다고 한다. - -\item 인덱스 만들기가 구현되었다. - -\item \thisclass 의 여러 기능을 그대로 쓸 수 있다. - -\end{itemize} - -\section{이 문서의 컴파일 방법} - -다음과 같은 순서로 컴파일한다. - -\bvtopandtail\showcommand{bvtopandtail}\showenv{boxedverbatim} -\begin{boxedverbatim} -#> latex memucstest -#> latex memucstest -#> makeindex-dhucs -s dhucs memucstest -#> latex memucstest -\end{boxedverbatim} - -|makeindex(-dhucs)|에 앞서서 |latex|을 두 번 실행하는 이유는, -memoir 패키지의 인덱스 만들기의 특징 때문이다. 처음 한 번만 실행해서는 -|.idx| 파일이 만들어지지 않는다. - -\section{chapter 스타일} - -\showcommand{prechapternum}\showcommand{postchapternum} -사용자가 자신의 |chapterstyle|을 정의(定義)할 때는 반드시 -\dispcmd{prechapternum}과 \dispcmd{postchapternum}을 함께 정의해주도록 한다. -그림~\ref{fig:examchapstyle}\은 |hangnum| chapter style을 -정의하는 방법을 보여준다. -\begin{figure} -%% 웬만한 환경은 memoir에 다 있다.!!! -\begin{boxedverbatim} -\makechapterstyle{hangnum}{% - \renewcommand{\chapnumfont}{\chaptitlefont} - \settowidth{\chapindent}{\chapnumfont 999} -% \renewcommand{\printchaptername}{} % <= 쓰지 않음. - \renewcommand{\prechapternum}{} % <= 이 행을 정의 - \renewcommand{\chapternamenum}{} - \renewcommand{\postchapternum}{}% <= 이 행을 정의 - \renewcommand{\printchapternum}{% - \noindent\llap{\makebox[\chapindent][l]{\chapnumfont - \thechapter}}} - \renewcommand{\afterchapternum}{} -} -\end{boxedverbatim} -\caption{chapterstyle 정의 예제}\label{fig:examchapstyle} -\end{figure} - -장 스타일을 수정하는 구체적인 예는 |memman.tex|\cite{memman}에서 -가져온 |veelo| chapter style의 정의를 참조하라. 이 문서의 -소스 Preamble에 있다. 예제는 \Cref{sec:math} \titleref{sec:math}\을 보라. -%% disable \nameref -\textbf{\nameref{sec:appchap}}\를 보라. - -\textbf{\titleref{sec:appchap}}\를 보라. \pref{sec:appchap}\을, -\ref{sec:appchap}\을, \Cref{sec:appchap}\을 -\Sref{sec:appsec}\가, \ref{sec:appsec}\가, \titleref{sec:appsec}\가. -\titleref{sec:appsec}\을. -\showcommand{Cref}\showcommand{ref}\showcommand{pageref}\showcommand{titleref} -%% \Cref 명령으로 식자되는 결과를 주의깊게 보라. - -\section{시집}\label{sec:poembook} - -\wi{어머님}이 \wi{수술} 후에 거동이 불편해지신 후, 집에만 -계시는 것이 무척 \wi{무료}하신 듯하다. 예전에 내가 보던 -\wi{시집}을 꺼내 보고 계시다. \showcommand{titleref}\showcommand{Sref}% -\Sref{sec:poembook} \textit{\titleref{sec:poembook}}\는 -텍스트 입력의 예제이다. - -%% memoir는 poem 스타일을 자체 내장하고 있다. -%% plain poem title을 선언함. -\PlainPoemTitle\showcommand{PoemTitle}\showcommand{PlainPoemTitle} -\showenv{snugshade}\showcommand{poemtitle}\showenv{verse} -\begin{snugshade} -\renewcommand\poemtoc{subsection} -\settocdepth{subsection} -\poemtitle{신안리에서} -\settowidth{\versewidth}{\hbox{사람들은 굳이 한 마디 말 하려 하지 않는다.}} -\ifpdf\begin{verse}\else\begin{verse}[\versewidth]\fi - -실개천 너머 나 있는 샛길로\\ -택시가 들어오고 나가며 \\ -겨르로운 달빛에 감출 부끄러움도 없는\\ -사람들은 굳이 한 마디 말 하려 하지 않는다.\\! - -나는 톱밥 같은 달빛을 한 웅큼\\ -멀리 철길 쪽으로 뿌렸다.\\ -매달린 불빛보다\\ -아침이 먼저 깨어나는 광경을 보며.\\ -삶은 새의 낮은 날음새 같은 것,\\ -이대로 누워 잠들기\\ -두렵지 않은 작은 마을에\\ -더 작은 풀꽃 인사한다.\\ -잊혀짐 너머 안부 묻는다.\\ -\end{verse} -\end{snugshade} - -이 스타일은 \pkg{memucs-setspace}\를 이용한다. 이 패키지는\footnote{ - 이 스타일은 \pkg{setspace}\를 수정한 것이다. - \env{verse}, \env{quote}\와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 - 기능이 있다.} -verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 -기능이 있다. 이 부분에서 \dispcmd{adjustfloatfnspacing}을 불러보겠다. -\showcommand{adjustfloatfnspacing} -다음번 각주는 행간이 조금 달라져야 한다. -\adjustfloatfnspacing -float 안에 놓인 것과 같아지도록.\footnote{% -이 스타일은 \pkg{setspace}\를 수정한 것이다. -verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 -기능이 있다.} - -\showcommand{noadjustquotespacing}\showcommand{adjustquotespacing} -이 아래는 본문 중에서 \dispcmd{noadjustquotespacing}과 \dispcmd{adjustquotespacing}을 -불렀을 때 \env{quote} 안에서 행간이 어떻게 변하는지 보여준다. -기본값은 \dispcmd{noadjustquotespacing}이다. - -\begin{quote} -이 스타일은 \pkg{setspace}\를 수정한 것이다. -verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 -기능이 있다. 마치 float 안에 놓인 것과 같이. -\end{quote} - -여기서 \dispcmd{adjustquotespacing}을 호출함. - -\adjustquotespacing -\begin{quote} -이 스타일은 \pkg{setspace}\를 이용한다. 이 패키지는 -verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 -기능이 있다. 마치 float 안에 놓인 것과 같이. -\end{quote} - -verse류 환경의 행간은 quote를 따른다. 앞서 보인 시를 여기에서 -다시 식자해보자. -\begin{snugshade} -\renewcommand\poemtoc{subsection} -\settocdepth{subsection} -\PoemTitle{신안리에서} -\settowidth\versewidth{사람들은 굳이 한 마디 말 하려 하지 않는다.} -\ifpdf\begin{verse}\else\begin{verse}[\versewidth]\fi - -실개천 너머 나 있는 샛길로\\ -택시가 들어오고 나가며 \\ -겨르로운 달빛에 감출 부끄러움도 없는\\ -사람들은 굳이 한 마디 말 하려 하지 않는다.\\! - -나는 톱밥 같은 달빛을 한 웅큼\\ -멀리 철길 쪽으로 뿌렸다.\\ -매달린 불빛보다\\ -아침이 먼저 깨어나는 광경을 보며.\\ -삶은 새의 낮은 날음새 같은 것,\\ -이대로 누워 잠들기\\ -두렵지 않은 작은 마을에\\ -더 작은 풀꽃 인사한다.\\ -잊혀짐 너머 안부 묻는다.\\ -\end{verse} -\end{snugshade} - -여기서 다시 \dispcmd{noadjustquotespacing}을 선언함. - -\noadjustquotespacing -\begin{quote} -이 스타일은 \pkg{setspace}\를 이용한다. 이 패키지는 -verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 -기능이 있다. 마치 float 안에 놓인 것과 같이. -\end{quote} - -\section{강조} - -강조를 구현하는 데는 여러 가지 방법이 있다. 서구 문헌의 -경우 이탤릭체를 사용하는 것이 일반적이고, 예전의 독일 문헌에서는 -자간을 띄우는 강조 방법을 사용한 적도 있다고 한다. - -우리말 문헌은 일관되어 있지 않다. - -\subsection{방점 강조} - -예를 들면 \circemph{방점 강조} 방법을 사용하는 것이 가능하다. -\wi[강조]{방점 강조}는 \dotemph{한글 맞춤법}의 문장부호 조항에서 규정하고 있는 방법이기도 -하다.\showcommand{circemph}\showcommand{dotemph} -맨처음에 이 명령은 H\LaTeX\ 1.01에서 구현된 것이었는데, -그 후 -\useremph[.3ex][\tiny★]{발전을 거듭하여} -현재에 이르렀다. -\showcommand{useremph} - -\subsection{기울인 글꼴 또는 글꼴 대체} - -\ifPDFTeX \ungremph \fi -H\LaTeX{}에서는 {\itshape\wi[강조]{기울인 글꼴}}을 쓰는 방법을 오랫동안 사용해왔다. -그러나 실제로 출판되는 서적에서는 \wi[강조]{글꼴 대체} 방법을 사용하는 -경우가 많다. - -\ifPDFTeX \begingroup - \regremph - |gremph| 옵션은 다음과 같은 효과를 낸다. \emph{gremph 옵션}. - \ungremph - 이번에는 이것을 disable한다. \emph{gremph 옵션}. - - |\bfemtrue|와 |\bfemfalse|는 그래픽 글꼴 대신 - 은바탕 굵은 글꼴로 식자하게 한다. 또, |\SetGremphFonts| - 명령으로 직접 폰트를 지정할 수 있다.\showcommand{regremph} \showcommand{ungremph} - \showcommand{SetGremphFonts}\showcommand{bfemtrue, \textbackslash bfemfalse} - 다만 |\SetGremphFonts| 명령은 preamble에서만 쓸 수 있다. -\endgroup \else\ifLuaOrXeTeX \begingroup - \hologo{LuaLaTeX}이나 \hologo{XeLaTeX}을 쓰는 경우, - 강조 글꼴의 선택은 폰트 속성과 연계된다. 즉, \textit{Italic Font}로 - 지정된 글꼴이 강조 글꼴로 사용된다. - |[itemph]| 옵션은 이 부분의 글꼴을 기울어지게 만든다. -\endgroup \fi\fi - -\showcommand{MakeShortVerb} - -%% 한글 섹션 카운터 포맷을 가능하게 함. -\renewcommand\thesection{\pgana{section}} -\section{두번째 절} - -\epigraphtextposition{flushleftright} -\epigraph{% -나는 십대에 \wi{철학책}을 읽기 시작한 무렵부터 -거기에 언제나 이 `나(私)'가 빠져 있다고 느껴왔다.} -{\emph{탐구}\\ \textsf{\wi[인명]{카라타니 코진(柄谷行人)}}} - -\showcommand{pgana}\showcommand{epigraph} -\showcommand{epigraphtextposition} - -\wi{수학}에서는 어떤 공리계가 하나의 해석 모델에서는 참이지만 -다른 해석 모델에서는 거짓인 일이 있을 수 있다. -이것은 \wi{공리계}가 불충분한 경우이다. - -\renewcommand\thesection{\onum{section}} -\section{표} - -\showcommand{legend}\showcommand{onum} -\thisclass\는 다양한 표작성 환경을 제공한다. -\tref{tab:test}\과 \tref{tab:test2}\를 보라. -\showcommand{tref} - -%% tabular에는 legend를 붙일 수 있다. -\begin{table} -\caption{test table}\label{tab:test} -\centering -\begin{tabular}{cc} -\hline -두 줄 짜리 & 3 \\ -하단 제목 붙은 & 4 \\ -\hline -\end{tabular} -\legend{caption 아닌 소제목} -\end{table} - -\begin{table} -\caption{test table 2}\label{tab:test2} -\centering -\begin{tabular}{cc} -\hline \hline -두 줄 짜리 & 6 \\ \hline -하단 제목 안 붙은 & 5 \\ -\hline \hline -\end{tabular} -\end{table} - -(여기서 페이지를 나눈다. 페이지 나누기 명령으로는 -\dispcmd{cleartoverso}를 사용하겠다. 이것은 이 뒤에 새로 -시작하는 페이지가 짝수쪽(verso)이 되게 한다. \dispcmd{cleartorecto} -명령도 있다.) -\showcommand{cleartoverso}\cleartoverso - -\namesubappendixtrue -\begin{subappendices} -\addappheadtotoc -\section{자동조사 테스트} -\showcommand{namesubappendixtrue} -\showcommand{addappheadtotoc} -\showenv{subsppendices} - -간단한 \dispcmd{ref}-like 명령으로 \wi{자동조사}를 테스트한다. -\dispcmd{cite}도 잘 된다. - -\tref{tab:test}\와 \tref{tab:test2}\이 어떻게 보이나요? -그리고 \fref{fig:examchapstyle}\은 \pref{fig:examchapstyle}\로 -가면 볼 수 있어요. 페이지~\pref{fig:examchapstyle}\로 가보세요. -\showcommand{tref, \textbackslash fref}\showcommand{pref} - -위의 문장 입력: -\bvsides\showcommand{bvsides}\showenv{boxedverbatim} -\begin{boxedverbatim} -\tref{tab:test}\와 \tref{tab:test2}\이 어떻게 보이나요? -그리고 \fref{fig:examchapstyle}\은 -\pageref{fig:examchapstyle}\AltPageName\로 가면 볼 수 있어요. -페이지~\pageref{fig:examchapstyle}\로 가보세요. -\end{boxedverbatim} - -\section{그림 테스트} - -\newlength{\mylength} -\begin{figure} -\calccentering{\mylength} -\begin{adjustwidth*}{\mylength}{-\mylength} -\centering -\includegraphics[width=.6\textwidth]{doeun} -\caption{공부하는(?) 도은이}\label{doeunbike} -\end{adjustwidth*} -\end{figure} - -그림이 잘 들어가는지도 테스트해야 한다고 한다. \fref{doeunbike}\를 볼 것. -이 그림은 마진폭을 계산해서 편집영역의 중간이 아니라 페이지 전체의 -중간으로 가도록 \dispcmd{calccentering}을 이용했다.\showcommand{calccentering} -\showenv{adjustwidth*} -이 계산이 표준 \LaTeX\ 클래스에서 얼마나 귀찮은 것이었는지 상상할 수 -있겠는가? -\query{그림넣기} - -\begin{boxedverbatim} -\newlength{\mylength} -\begin{figure} -\calccentering{\mylength} -\begin{adjustwidth*}{\mylength}{-\mylength} -\centering -\includegraphics[width=.6\textwidth]{doeun} -\caption{공부하는(?) 도은이}\label{doeunbike} -\end{adjustwidth*} -\end{figure} -\end{boxedverbatim} - -\end{subappendices} - -%%% part 페이지를 깨끗하게... -\copypagestyle{part}{empty} - -%%%%%%%%%% Ruled를 사용하되 partmark를 정의함. -\copypagestyle{MyRuled}{Ruled} -\newlength{\MyRuledheadwidth} -\setlength{\MyRuledheadwidth}{\textwidth} -\addtolength{\MyRuledheadwidth}{\marginparsep} -\addtolength{\MyRuledheadwidth}{\marginparwidth} -\makerunningwidth{MyRuled}{\MyRuledheadwidth} -\makeheadrule{MyRuled}{\MyRuledheadwidth}{\normalrulethickness} -\makeheadposition{MyRuled}{flushright}{flushleft}{flushright}{flushleft} -\makeatletter -\makepsmarks{MyRuled}{% - \let\@mkboth\markboth - \def\partmark##1{\markboth{\hparttitlehead. ##1}{##1}} - \def\chaptermark##1{\markright{\hchaptertitlehead. ##1}} - \def\sectionmark##1{} -} -\def\partmark#1{\markboth{\hparttitlehead. #1}{#1}} -\makeatother - -%%% 제2장. 페이지 스타일과 챕터 스타일을 바꿈. -%%% 새로운 장에 새로운 스타일을 적용하려 할 때는, -%%% chapterstyle은 \chapter명령보다 먼저 부르고 \pagestyle은 -%%% \chapter보다 나중에 부르는 것이 좋다. - -\part{테스트는 즐거워} -\oblivoirchapterstyle{veelo} -\pagestyle{MyRuled} - -\chapter{수학질문상자}\label{sec:math} - -%% 절의 카운터를 \pnum으로. -\renewcommand\thesection{\pnum{section}} - -\showcommand{makepagestyle}\showcommand{copypagestyle} - -\section{자연로그의 밑} - -이 절은 \cite{Kentaro}\을 인용하였다. \env{singlespacing}\을 -사용하였다.\showenv{singlespacing} - -%\begin{singlespacing} -\[ -e^x =1+ \frac{x}{1!} + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots -\] -이라는 사실이 알려져 있다. 여기에서 $x=1$이라 하면, -\[ -e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!} +\cdots -\] -가 된다. - -우선 -\[ -\lim_{n\to\infty}\left(1+ \frac{1}{n}\right)^{n} = e -\] -에서 $1/n = h$라 두면, -\[ -\lim_{h\to 0}\left(1+h\right)^{\frac{1}{h}} = e -\] -라고 쓸 수 있다. $e$를 밑으로 하는 대수를 $\log$라고 표시하면, -\[ -\frac{\log(1+h)}{h} = \log(1+h)^{\frac{1}{h}} -\] -인데, 여기에서 $h \to \infty$이라면, -\[ -\lim_{h\to 0}\frac{\log(1+h)}{h} = \lim_{h\to 0}\log(1+h)^{\frac{1}{h}} =\log e. -\] - -따라서, -\[ -\log(1+h)=x, \quad\text{즉}\quad h=e^{x} -1 -\] -이다. 여기에서, -\[ -1=\lim_{h\to0}\frac{\log(1+h)}{h}=\lim_{x\to0}\frac{x}{e^x -1}. -\] - -따라서, -\[ -\lim_{x\to0}\frac{e^x -1}{x}=1 -\] -을 얻는다. 그런데 여기에서, -\[ -y=e^x -\] -의 도함수 $y'$를 구해본다. -\[ -y'=\lim_{h\to0}\frac{e^{x+h}-e^x}{h}=e^x \lim_{h\to0}\frac{e^h -1}{h}=e^x. -\] -따라서, -\[ -y=e^x \text{라면}, \qquad y'=e^x -\] -이다. - -또, $y=\log x$의 도함수를 구해본다. -\begin{displaymath} -\begin{split} -y' &= \lim_{h\to0}\frac{\log(x+h)-\log x}{h} \\ - &= \lim_{h\to0}\frac{1}{h}\log\left(1+ \frac{h}{x}\right) \\ - &= \frac{1}{x}\lim_{h\to0}\frac{x}{h}\log\left(1+\frac{h}{x}\right) \\ - &= \frac{1}{x}\lim_{\frac{h}{x}\to0}\log\left(1+\frac{h}{x}\right)^{\frac{x}{h}} \\ - &= \frac{1}{x}\log e \\ - &= \frac{1}{x}. -\end{split} -\end{displaymath} - -따라서, -\[ -y=\log x \text{라면}, \qquad y'=\frac{1}{x}. -\] - -%\end{singlespacing} - -이와 같이 간단한 공식으로 얻어진 것은 대수의 밑으로 $e$를 썼기 -때문이다. $e$ 이외의 밑을 사용하면, 공식은 보다 복잡하게 된다. -이런 의미에서 $e$를 밑으로 하는 대수를 \emph{자연로그}라고 부른다.\showcommand{emph} -이상으로부터 상상할 수 있듯이, 미적분학과 같은 이론을 전개할 때는 -$e$를 밑으로 하는 대수를 사용하고, 실제의 수치계산에서는 -$10$을 밑으로 하는 상용로그를 사용한다. - -\fancybreak{* * *} - -$0 \le t \le 1$에 있어서, $f(t)$는 연속인 도함수 $f'(t)$를 가지고,\showcommand{fancybreak} -$0 < f'(t) \le 1,\quad f(0)=0$이다. 이 때 다음 부등식이 성립함을 보여라. -\[ -\left[ \int_{0}^{1} f(t)dt \right ] ^2 \ge \int_{0}^{1} [f(t)]^3 dt -\] - -\vskip\onelineskip - -적분구간의 상한을 변수 $x$로 바꾸어본다. -\[ -\left[ \int_{0}^{x} f(t)dt \right]^2 \ge \int_0^x [f(t)]^3 dt -\] -이 식의 좌변에서 우변을 빼서 그것을 $F(x)$라고 두자. -\[ -F(x) = \left[ \int_{0}^{x} f(t)dt \right]^2 - \int_0^x [f(t)]^3 dt -\] -이 때 $F(0)=0$이다. - -$F(x)$를 $x$로 미분하면 -\begin{equation} -\begin{split} -F'(x) &= 2\left[ \int_{0}^{x} f(t)dt \right]f(x) - \{f(x)\}^3 \\ - &= f(x) \left[ 2\int_{0}^{2} f(t)dt - \{f(x)\}^2 \right] -\end{split} -\end{equation} - -문제의 의미에 의해 $0 0$이다. -\[ -G(x) = 2 \int_{0}^{x} f(t)dt - \{f(x)\}^2 \qquad (0 \le x \le 1) -\] -이라 놓으면 $G(0)=0$이고, -\begin{equation} -\begin{split} -G'(x) &= 2f(x) - 2f(x)f'(x) \\ - &= 2f(x) \{1-f'(x)\} \ge 0 -\end{split} -\end{equation} -이다. $0 \le x \le 1$인 모든 $x$에 관하여 $f'(x) \le 1$이므로 -$G'(x) \ge 0$. 따라서 $G(x) \ge 0$임을 말할 수 있다. 그러므로 -\uline{$F(x) \ge 0$이 성립한다.}\showcommand{uline (ulem package)} - -%% 부록 관련 명령 -%% \appendix 또는 appendices 환경 -%\appendix -%% 부록 면주에 \hparttitlehead, \hchaptertitlehead 를 표시하지 않는다. -\def\partmark#1{\markboth{#1}{#1}} -\def\chaptermark#1{\markright{#1}} -% - -\AppendixTitleToToc -\AttachAppendixTitleToSecnum - -%\begin{appendices} -\appendix -\appendixpage* - -\renewcommand\thechapter{\Roman{APPchapter}} -\renewcommand\thesubsection{\thesection.\arabic{APPsubsection}} -\setcounter{APPchapter}{0} - -\chapterstyle{appendixdefault} -\renewcommand*\prechapternum{\chapnamefont 부록\ \ 제} -\renewcommand*\postchapternum{\chapnamefont 장} -\renewcommand*\printchapternum{\chapnumfont\thechapter} -%% appendix에서는 chaptersyle을 appendixcompanion, -%% appendixdefault, appendixsection 등으로 지정할 것. -%% 사용자가 새로운 chapterstyle을 설정하려 할 때는 -%% appendixXXXX 환경을 새로 만들어야 한다. -%% appendix에서의 절 모양은 \thechapter.\arabic{section}으로 -%% 된다. 이것은 renewcommand할 수 있다. - -\pagestyle{hangul} - -\chapter{19세기 초중엽}\label{sec:appchap} - -\chapterprecis{\noindent 부록에서는 한자가 많은 문장과 상호참조가 많은 문장을 - 시험한다.} -\showcommand{chapterprecis} - -\showcommand{appendix}\showenv{appendices} -\ResetHangulspace{1.333}{1.2} -\showcommand{ResetHangulspace} -\paragraphfootnotes -\showcommand{paragraphfootnotes} - -\section{평안도 광산}\label{sec:appsec} -19세기에 들어와서도 1807년 \wi{평안도} \wi[위원]{渭原} 지방에서 -\wi{광산}이 개발되자 단시일내에 수많은 광산노동자가 집결하여 커다란 -광산촌을 형성하였는데 이 광산도 앞의 遂安광산과 동일한 형태로 -운영되었을 것은 틀림없다. 1811년 평안도 농민전쟁 당시 서울에 있던 -禹君則의 物主(資本主)가 수천 냥의 자금을 보내어 그것으로 雲山의 금광을 -운영하게끔 한 사실, 또한 앞서 본 대로 雲山 광산노동자 800명을 官軍으로 -강제적으로 끌어들이려 한 계획, \wi[김창시]{金昌始}가 -\wi[운산광산]{雲山광산}의 \wi[우욱]{禹郁}과 연계하에 그곳의 -광산노동자를 농민전쟁에 끌어들이는 조직 사업을 진행하였다고 하는 -사실은\footnote{\bnm{日省錄} 哲宗 9年 2月 3日條} 이 시기에 -雲山금광에서도 수많은 광산노동자가 집결하여 있었음을 確證하여 -준다. 또한 1858년 함경도 암행어사 洪承裕의 보고에 의하면 당시 -함경도에서는 金, 銀, 銅의 潛採가 광범하게 이루어져서 하나의 광산이 -開發되기만 하면 도처에서 金店軍이 몇천 명씩 몰려와서 鑛山村이 형성되고 -場市가 열려서 각종 日用品이 광범하게 매매되고 있고 광산의 坑의 깊이가 -千餘尺에 달하는 경우도 적지 않았다.\footnote{\bnm{關南平亂錄} 卷五 - 安州牧使 牒報條.} - -\section{술어 논리의 완전성 정리} - -이 절의 텍스트는 \cite{incompl}\ pp.\ 155ff.에서 취하였다. -\showcommand{cite} - -\subsection{먼저 기호의 설명을 잠깐\texorpdfstring{\ldots}{...}} - -술어논리의 형식화는 모든 대상과 논리법칙(공리)의 기호화로부터 -시작된다. ``태초에 기호가 있다''이다. - -\showcommand{texorpdfstring} -기본 기호는 \fref{fig:syms}의 여섯 종류이다. -\showcommand{fref} - -\begin{figure} -\centering -\begin{minipage}{.75\textwidth} -\begin{tabbing} -1111\=11111111111111111111\= \kill -(1) \> 대상기호(상수) \> $ c_{1}, c_{2}, c_{3}, c_{4}, \ldots $ \\ -(2) \> 함수기호 \> $ f_{1}, f_{2}, f_{3}, f_{4}, \ldots $ \\ -(3) \> 술어기호 \> $ P_{1}, P_{2}, P_{3}, P_{4}, \ldots $ \\ -(4) \> 자유변수 \> $ a_{1}, a_{2}, a_{3}, a_{4}, \ldots $ \\ -(5) \> 속박변수 \> $ x_{1}, x_{2}, x_{3}, x_{4}, \ldots $ \\ -(6) \> 논리기호 \> $ \land, \lor, \rightarrow, \lnot, \forall, \exists $ -\end{tabbing} -\end{minipage} -\caption{기본 기호}\label{fig:syms} -\end{figure} - -\showenv{tabbing}\showenv{minipage} - -이 중, `자유변수'란 불특정의 대상, `속박변수'란 논리기호 $\forall$과 -$\exists$의 어느 것인가와 함께 사용하는 변수를 나타낸다. $\forall$과 -$\exists$는 `속박기호' 또는 `양화기호'라 부르고 $\forall$을 -`전칭기호', $\exists$를 `존재기호'라고 말한다. - -이 $\forall$과 $\exists$를 포함하지 않는 논리 체계가 \bnm{프린키피아 - 마테마티카}에서 처음으로 체계화된 ``명제논리학''이다. 이쪽은 벌써 -1920년에 그 무모순성과 완전성이 당시 컬럼비아 대학의 학생에 지나지 -않았던 E.~L.~포스트에 의해서 증명되고 있다. - -논리기호는 초수학에 있어서는 추상적인 기호에 지나지 않는다. 그러나 -근원을 밝히면 그것들에는 원래 각각 고유한 의미가 있다. 즉 `$\lnot$'는 -``\ldots 이 아니다'', `$\lor$'는 ``또는'', `$\land$'는 ``동시에'', -`$\rightarrow$'는 ``이라면'', $\forall$은 ``모든'', $\exists$는 ``어떤 -\ldots 가 존재한다''는 의미이다. - -이 해석으로 말하면 대상이 유한집합의 경우는 술어논리도 명제논리로 -환원될 수 있다. $\forall$과 $\exists$는 무한집합을 대상으로 할 때 -비로소 의미를 갖는 논리기호이다. 수학은 본질적으로 무한집합을 대상으로 -하고 있기 때문에 술어논리는 수학의 논리로 되어 있는 것이다. - -그러나 지금은 이러한 유래를 제외하고 형식적 체계만을 문제삼고 있기 -때문에 당분간 기호의 의미는 잊어버려도 상관없다. 오히려 적극적으로 -잊어버려서 기호의 조작에만 전념하려고 하는 것이 초수학의 기본 -방침이다. - -\subsection{`항', `논리식'의 정의와 논리법칙} - -기호가 갖추어진 곳에서 추론의 대상이 되는 `항'을 \pref{fig:term}의 -\fref{fig:term}\과 같이 정의한다.\showcommand{pref} - -\begin{figure} -\centering -\begin{minipage}{.75\textwidth} -\begin{enumerate}[(1)]\tightlist\small\raggedright -\item \label{itemone} 대상 기호와 자유변수는 항이다. -\item \label{itemtwo} $f$가 $n$ 변수의 함수기호이고, $t_1 , t_2 , - \ldots, t_n$이 항이라면 $f(t_1 , t_2 , \ldots t_n )$은 항이다. -\item (\ref{itemone})\와 (\ref{itemtwo})\으로부터 얻어지는 것만이 항이다. -\end{enumerate} -\end{minipage} -\caption{`항'의 정의}\label{fig:term} -\end{figure} - -다음으로 이 항을 사용해서 `논리식'을 \fref{fig:logi}\과 같이 정의한다. - -\begin{figure} -\centering -\begin{minipage}{.85\textwidth} -\begin{enumerate}[(1)]\tightlist\small\raggedright -\item \label{st} $P$가 $n$ 변수의 술어기호이고, $t_1 , t_2 , \ldots , - t_n $이 항이라면 $P(t_1 , t_2 , \ldots , t_n )$은 논리식이다. 특히 - 이것을 \emph{원시논리식}이라 부른다. -\item \label{nd} $A, B$가 논리식일 때 $\lnot A, A \lor B, A \land B, A - \to B$도 논리식이다. -\item \label{rd} $A(a)$가 자유변수 $a$를 포함하는 논리식이고 $x$가 - $A(a)$ 속에 나타나지 않는 속박변수일 때 $\forall xA(x), \exists - xA(x)$는 논리식이다. -\item (\ref{st}), (\ref{nd}), (\ref{rd})에 의해서 얻어지는 것만이 - 논리식이다. -\end{enumerate} -\small -덧붙여 말하면, $\forall xA(x)$는 ``모든 $x$는 $A$를 충족시킨다'', -$\exists xA(x)$는 ``$A$를 충족시키는 $x$가 존재한다''라고 해석한다. -\end{minipage} -\caption{`논리식'의 정의}\label{fig:logi} -\end{figure} - -그러면 다음은 이들 논리식을 사용해서 추론을 행하기 위한 논리법칙의 -설정인데, 힐베르트-아카만의 공리계에서는 다음 \fref{fig:rules}\과 같이 -되어 있다. - -\begin{figure} -\centering -\begin{minipage}{.85\textwidth}\small -\noindent\textsf{공리}\\ -\begin{enumerate}[(1)]\tightlist -\item $A \to (B\to A)$ -\item $(A\to B)\to ((A\to (B\to C))\to (A\to C))$ -\item $A\to (B\to A\land B)$ -\item $A\land B\to A,\quad A\land B\to B$ -\item $A\to A\lor B,\quad B\to A\lor B$ -\item $(A\to C)\to ((B\to C)\to(A\lor B\to C))$ -\item $(A\to B)\to ((A\to \lnot B)\to \lnot A))$ -\item $\lnot\lnot A\to A$ -\item $A(t)\to \exists xA(x)$ ($t$는 항) -\item $\forall xA(x) \to A(t)$ ($t$는 항) -\end{enumerate} - -\bigskip - -\noindent\textsf{추론 규칙}\\ -\begin{enumerate}[1~~] -\item \label{rules:st} $\dfrac{A,\; A\to B}{B}$ -\item $\dfrac{A(a)\to C}{\exists xA(x)\to C}$ -\item $\dfrac{C\to A(a)}{C\to \forall xA(x)}$ -\end{enumerate} -다만, $A, B, C, \ldots, \forall xA(x), \ldots$ 등은 모두 논리식으로 -한다. -\end{minipage} -\caption{논리법칙 (힐베르트-아카만의 공리계를 따름)}\label{fig:rules} -\end{figure} - -`추론규칙'이 형성하는 ``도형''을 ``연역도'' 또는 ``증명도''라 부르고 -이 도형은 ``위의 기호열로부터 아래의 기호열을 추론한다''라고 -해석한다. 예컨대 추론규칙 \ref{rules:st}\는 ``$A$와 $A\to B$로부터 -$B$를 추론한다''라고 해석하는 것이다. - -\subsection{증명과 해석} - -이만큼 준비가 된 곳에서 `증명가능'의 개념을 다음과 같이 정의한다.\showcommand{tightlist} -\showenv{enumerate} -\begin{enumerate}[(1)]\tightlist -\item \label{ev:st} 공리는 증명가능하다. -\item \label{ev:nd} 증명가능한 논리식에 추론규칙을 적용해서 얻어지는 논리식은 - 증명가능하다. -\item (\ref{ev:st})\과 (\ref{ev:nd})에서 얻어진 논리식만이 - 증명가능하다. -\end{enumerate} - -논리식 $A$가 $B_1 , B_2 , \ldots , B_n $을 가정했을 때 증명할 수 -있다면, -\begin{displaymath} -B_1 , B_2 , \ldots , B_n \vdash A -\end{displaymath} -라고 쓴다.\showenv{displaymath} - -또한 $A$가 술어논리의 공리만을 사용해서 증명가능할 때는 -\begin{displaymath} -\vdash A -\end{displaymath} -라고 쓴다. - -\begin{snugshade} -실례를 두 가지 대비시켜서 보여주자. - -예컨대 논리식, -$$ -\forall x \exists y (y < x) -$$ -는 ``모든 $x$에 대해서 $y$가 존재하고 $y$는 $x$보다 작다''라고 해석할 -수 있다. 이 해석 아래에서는 실수의 영역이면 모델이 되나 자연수의 -영역에서는 모델이 되지 않는다. 자연수로 $x$를 $0$으로 잡으면 그것보다 -작은 자연수 $y$는 존재하지 않기 때문이다. - -대비적인 실례로서 논리식, -$$ -\exists x \forall y (x \le y) -$$ -를 취하자. 그 해석은 ``어떤 $x$가 존재하고 모든 $y$에 대해서 $y$는 -$x$와 같거나 $x$보다 크다''로 된다. 이것은 자연수가 모델이라면 -$0$이라는 최소수가 존재하기 때문에 진실이 되나 실수의 모델에서는 허위로 -되는 논리식이다. -\end{snugshade} -\showenv{snugshade} - -그래서 모든 해석에 대해서 진실이 되는 논리식을 `항진식' 또는 -`토톨로지'라 부르고 $A$가 토톨로지일 때 -\begin{displaymath} -\vDash A -\end{displaymath} -라고 쓰기로 한다. - -\chapter{이 문서에 관하여} - -이 문서는 \pkg{memhangul-ucs}를 처음 만들 때 테스트용으로 작성한 -것이다. - -\pkg{oblivoir}는 원래 \pkg{dhucs}를 백그라운드 드라이버로 하여 -구현된 것이었다. 그러다가 \hologo{XeTeX}ko, \hologo{LuaTeX}ko를 -백그라운드로 한 \pkg{xoblivoir}가 만들어졌다. -현재 버전의 \pkg{xoblivoir}는 이 둘을 합쳐서 어떤 엔진으로 컴파일해도 -거의 같은 결과를 얻게끔 되어 있다. -따라서, 이 문서는 \hologo{pdfLaTeX}, \hologo{XeLaTeX}, \hologo{LuaLaTeX} 어느 것으로도 컴파일된다. \showcommand{hologo} - -\section{kotexindy에 관하여} -찾아보기를 만들려면 |kotexindy|를 사용하라. 예를 들면 다음과 같다. -\begin{verbatim} -$ kotexindy memucstest.idx -\end{verbatim} -찾아보기를 찍는 명령은 |\printindex|이다. \showcommand{printindex} - -%\restorechapsec \showcommand{restorechapsec} -%% 만약 appendix가 문서의 가장 끝에 오는 것이 아니라면 -%% 이 명령을 appendix 이후에 실행해준다. -%% 아래와 같이 appendices 환경을 쓰는 경우에는 -%% 환경을 종료하기만 하면 된다. -%\end{appendices} - -%%% 본문의 끝. -\backmatter -\chapterstyle{demo} - -%% \bibintoc 하면 참고문헌이 목록에 나온다. -%% 기본값이므로 별도로 설정할 필요는 없다. -%\bibintoc -\renewcommand\prebibhook{% - \showcommand{bibintoc}% - 이 참고문헌 예제는 시험을 위해서 작성된 것으로 실제 문서의 - 내용과는 무관하다.% - \showcommand{prebibhook}} -\begin{thebibliography}{00} -\bibitem[카누쓰86]{Knuth} Donald Knuth. \textit{The - \TeX{}book}. Addison-Wesley. 1986. -\bibitem{memman} Peter Wilson. ``The Memoir Class for Configurable - Typesetting --- User Guide,'' On-line 문서. - \url{http://mirror.ctan.org/macros/latex/contrib/memoir/}. -\bibitem{incompl} 요시나가 요시마사, 임승원 (옮김), \bnm{불완전성 정리 - --- ``이성의 한계''의 발견}. 전파과학사. 1993. -\bibitem[수학질문상자]{Kentaro} 야노 겐타로(矢野健太郞), 전재복 - (옮김). \bnm{수학 질문 상자 --- 왜일까? 그것을 알고 - 싶다}. 전파과학사. 1991. (원저: 고단샤, 1973). -\end{thebibliography} - -\indexintoc -\renewcommand\preindexhook{% - 찾아보기는 테스트를 위해서 임의의 단어들로 선정되었다. - \bigskip} -\printindex - -%% memoir에서는 \listof... 명령을 아무데나 선언할 -%% 수 있다. 신기하다. -\clearpage -\showcommand{listof...} -\listofqueries - -\end{document} - diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf new file mode 100644 index 00000000000..7b1184120f0 Binary files /dev/null and b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf differ diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex new file mode 100644 index 00000000000..adcec4cc165 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex @@ -0,0 +1,1677 @@ +% !TEX Encoding = UTF-8 Unicode +%% oblivoir-simpledoc.tex +%% written by Nova De Hi, 2015/04/19 +%% public domain. +%% +%% part of oblivoir +%% +% arara: xelatex +% arara: xelatex +% arara: lmkclean +\documentclass[ + 12pt, + a4paper, + kosection, + footnote, + nobookmarks, + microtype, +% lwarp +]{oblivoir} + +\usepackage{fapapersize} +\usefapapersize{*,*,30mm,*,35mm,*} + +\usepackage{kotex-logo} + +\hypersetup{colorlinks,linkcolor=blue} + +%%% ifpxltex can be installed from KTUG Private Repository. not included in TeX Live +\usepackage{ifpxltex} + +\IfpxlTeXpxl*{p}{x,l} +{ + \def\myREF#1#2{\ref{#1}} + \def\myLabel#1#2{\label{#1}} + \def\myPageREF#1#2{\pageref{#1}} +} +{ + \def\myREF#1#2{\ref{#2}} + \def\myLabel#1#2{\label{#2}} + \def\myPageREF#1#2{\pageref{#2}} +} + +\def\cs#1{\texttt{\textbackslash #1}} +\def\util#1{\texttt{#1}} +\def\ct#1{\texttt{#1}} + +\ifx\oblivoirdblquote\undefined +\def\oblivoirdblquote#1{``#1''} +\fi + +\IfpxlTeX*{x,l} +{ + \defaultfontfeatures{Renderer=OpenType} + \setkomonofont(NanumBarunGothic-YetHangul.ttf)[Scale=0.9] + \setobmonofont(Menlo)[Scale=.9] + \setobmainfont(Minion Pro) + \setobsansfont(Myriad Pro) + \setkomainfont[KoPubWorldBatang ](Light)(Bold) +} + +\newcommand\xobclass{x\-ob\-liv\-oir\oblivoirallowbreak} +\newcommand\obclass{ob\-liv\-oir\oblivoirallowbreak} +\def\xetexko{\XeTeX-\ko} +\def\luatexko{\LuaTeX-\ko} + +\pagestyle{ruled} + +%%%\usepackage{tabu} +%%%%%%% tabu-fix 2020/02 +%%%\RequirePackage{etoolbox} +%%%\makeatletter +%%%\patchcmd +%%% \tabu@startpboxmeasure +%%% {\bgroup\begin{varwidth}}% +%%% {\bgroup +%%% \iftabu@spread\color@begingroup\fi\begin{varwidth}}% +%%% {}{} +%%%\def\@tabarray{\m@th\def\tabu@currentgrouptype{\currentgrouptype}\@ifnextchar[\@array{\@array[c]}} +\usepackage{tabularx} +% +%%%% \pdfelapsedtime bug 2019-12-15 +%\patchcmd +% \tabu@message@etime +% {\the\pdfelapsedtime}% +% {\pdfelapsedtime}% +% {}{} +%% +%% +%\makeatother + +\IfpxlTeX*{p,x} +{ + \usepackage[normalem]{ulem} +} + +\begin{document} + +\title{초간단 \obclass{} v2.2 사용법} + +\date{2020년 2월} + +\author{x-ob-liv-oir } + +\maketitle + +\begin{abstract} +\obclass{} 클래스 2.0 버전은 그 동안 별도의 브랜치로 개발되어 오던 +\xobclass와 \obclass를 통합하여 완전히 동일한 클래스가 되었다. +이 문서는 \obclass{} 즉 \xobclass를 +사용하는 방법을 간략히 기술한다. +\end{abstract} + +\tableofcontents* + +\clearpage + +\section{\obclass와 \xobclass{}} + +%\xobclass{}는 \obclass{}에서 파생된 클래스이다. +%\obclass{}가 \LaTeX, pdf\LaTeX 을 위한 것이라면, \xobclass{}는 Lua\LaTeX이나 \XeLaTeX 을 위한 것이다. +%이 글은 \XeLaTeX\oblivoirallowbreak 으로 \xobclass{}를 쓰려 하는 경우에 대해서만 기술한다. Lua\LaTeX{}에 +%대해서는 별도로 특기할 만한 것이 없기도 하려니와 아직 준비가 미흡하여, 차후로 미룬다.\footnote{% +% 준비가 미흡하다는 것은 \xobclass{}의 입장에서 하는 말이다. 현재도 \xobclass{}를 통한 +% Lua\LaTeX 은 훌륭하게 사용할 수 있다, 고 생각하고 있다.} + +\koTeX\ 2.0 (2013/09/30)의 등장\footnote{% + \texttt{texdoc kotex} 명령을 내리면 kotexdoc 문서를 읽을 수 있다.}% +으로 \koTeX\ 패키지군은 이전의 텍 엔진\footnote{% + 이른바 ``레거시 텍''이라 하는 \hologo{TeX}, \hologo{eTeX}, \hologo{pdfTeX}을 + 가리킨다.}% +과 새로운 엔진들, \hologo{pdfLaTeX}, \hologo{XeLaTeX}, +\hologo{LuaLaTeX}에 모두 일관성있게 대응하도록 변모하였다. +이러한 변화에 발맞추어, 레거시 텍 엔진을 위한 \obclass와 새로운 텍 엔진(주로 \hologo{XeLaTeX})을 위한 \xobclass로 +나누어져 있던 oblivoir 클래스도 체계를 정비하여 그 구별을 없애고 동작하는 엔진에 따라 동작 방식을 +자동으로 대응하도록 고쳐졌다. 그러므로, 현재 \obclass로 작성하는 문서는 +(사용자가 몇 가지 주의깊게 엔진별 동작을 지정하기만 하면) 모든 텍 엔진에서 에러 없이 컴파일되고 +유사한 결과를 얻을 수 있게 되었다.\footnote{% + 폰트 사용 방식의 차이로 인해 ``완전히 동일한'' 결과를 보증하지는 않는다.} + +그 동안 \obclass는 비교적 복잡한 길을 거쳐왔다. 대강 정리하면, +\begin{enumerate}[(1)]\tightlist +\item H\LaTeX\ (나중의 kotex-euc) 한글을 memoir에서 쓰기 위하여 개발된 memhangul. 이 스타일은 더이상 사용할 수 없다. +\item dhucs (현재의 kotex-utf) 유니코드 한글을 memoir에서 쓰기 위하여 개발된 memhangul-ucs +\item memhangul-ucs를 바탕으로 memoir 클래스를 통하여 문서를 만드는 fake-article +\item fake-article을 oblivoir로 개명 +\item \hologo{XeTeX}을 위한 xoblivoir +\item xoblivoir에 \hologo{LuaTeX} 지원의 추가 +\item xoblivoir와 oblivoir를 통합 +\end{enumerate} +이와 같이 발전하여 온 것이고, 이제 oblivoir와 xoblivoir는 완전히 동일한 클래스가 되었다. + +이 문서는 \obclass의 고유한 옵션과 폰트 설정 방식에 대해서만 설명한다. 실제로 \obclass를 +이용하여 문서를 작성할 때는 다음 세 층위의 명령이 모두 사용가능하다. +\begin{enumerate}[(1)]\tightlist +\item memoir 명령 +\item 한글 엔진(\koTeX, \XeTeX-\ko, \LuaTeX-\ko)의 명령 +\item oblivoir 명령 +\end{enumerate} + +이 각각의 명령에 대한 정보를 얻으려면, memoir 매뉴얼(\texttt{texdoc memman}), +한글 패키지 매뉴얼(예컨대, \texttt{texdoc kotex}, \texttt{texdoc xetexko})을 +읽어야 한다. +%이 문서에서는 위의 두 패키지 층위의 명령군에 대해 언급할 때, 여백에 \fbox{memoir}, \fbox{kotex}등을 +%표시하겠다. 그리고 엔진별로 고유한 옵션과 명령에 대해서는 해당 사항을 본문에서 밝힌다. + +위의 두 층위의 문서에서 설명하지 않는 \obclass에 대한 정보를 이 문서에서 얻을 수 있다. + +%%\xobclass{}는 김도현 교수의 xkospace 및 xetexko-josa 패키지를 바탕으로 하고 있다. +%\xobclass{}는 김도현 교수의 xetexko 패키지를 바탕으로 하고 있다. 이 패키지는 +%2008년 10월 12일에 처음 발표되었으며 그 이전에 시험되던 xkospace를 확장하고 다듬은 것이다. +%xetexko-space, xetexko-josa, xetexko-dotemph 및 xetexko-font가 포함되어 있는데 +%\xobclass{}는 이를 바탕으로 하면서 사용자 인터페이스를 조금 확장하고 +%\obclass{}와 호환되게 한 것이다. +%\xobclass{}의 쉬운 인터페이스를 통하여 현재 \TeX 에서의 한글 구현이 어느 단계까지 +%와 있는지를 일반 사용자도 경험하는 기회가 되기를 바란다. 한편 2010년 학술대회를 +%전후하여 \xetexko 는 한글 조판과 식자에 있어 ``거의 완전한 단계''에 이르렀다. +%\xobclass 에서 시도하던 많은 부분이 \xetexko\ 자체에 의해 구현되게 된 것도 많으며 +%실제로 출판 현장에서 이를 활용하는 데 부족함이 없을 정도가 되었다. 이제 \xobclass 는 +%memoir 클래스를 \xetexko 와 함께 쓰도록 하는 클래스라는 데 더 큰 의의가 있게 되었다. +%한글 \TeX\ 개발에 고군분투하시는 김도현 교수께 감사의 말씀을 드린다. +% +%\xetexko 의 이해 없이 \xobclass 를 사용하기 어렵다. 그러므로 반드시 +%\xetexko\ 매뉴얼을 읽어두는 것은 매우 중요하다. \xobclass 에서 +%\xetexko 명령은 원칙적으로 모두 사용할 수 있다. \xetexko\ 매뉴얼을 +%읽으려면, +%\begin{verbatim} +%$ texdoc xetexko +%\end{verbatim} +%를 실행한다. + +\section{oblivoir와 memhangul} + +memhangul은 memoir를 한글 문서 작성에 사용할 수 있게 하기 위하여 개발된 스타일 패키지이다. +원래 독립된 스타일로서 개발되고 유지되어 왔지만, 현재는 더이상 독립적인 스타일로 사용되지 않으며 +oblivoir의 핵심 기능을 정의한 서브스타일로서만 유지된다. +즉 oblivoir란 memhangul을 이용하는 한글 문서작성 클래스라고 할 수 있다. + +\section{한글 드라이버} + +\obclass는 현재 실행되는 텍 엔진의 종류에 따라 한글 식자를 위하여 다음과 같은 한글 패키지를 +부른다. 이 한글 패키지들을 (편의상) \obclass의 한글 드라이버라고 한다. + +\begin{center} +%\begin{tabu}to.75\columnwidth{X|X|X} +\begin{tabularx}{.75\columnwidth}{X|X|X} +\hline +oblivoir 옵션 & 텍 엔진 & 한글 식자 패키지 \\ \hline +no option & \hologo{pdfLaTeX} & \koTeX-utf \\ +no option & \hologo{XeLaTeX} & \XeTeX-\ko \\ +no option & \hologo{LuaLaTeX} & \LuaTeX-\ko \\ \hline +%\end{tabu} +\end{tabularx} +\end{center} + +2020년 이후, 이 가운데 \hologo{pdfLaTeX} 지원 브랜치는 더이상 개발을 진행하지 않고 +이전 버전과의 호환성만을 유지한다. + +\section{옵션들} + +\subsection{memoir 옵션} + +원칙적으로 oblivoir는 memoir의 모든 옵션을 동일한 의미로 다 받아들인다. 여기에 해당하는 것으로 +다음과 같은 것이 있다. +\begin{description} +\item[용지 크기] a6paper, a5paper, a4paper, a3paper, b6paper, b5paper, b4paper, b3paper, mcrownvopaper, mlargecrownvopaper, mdemyvopaper, msmallroyalvopaper, dbillpaper, statementpaper, executivepaper, letterpaper, oldpaper, legalpaper, ledgerpaper, broadsheetpaper, pottvopaper, foolscapvopaper, crownvopaper, postvopaper, largecrownvopaper, largepostvopaper, smalldemyvopaper, demyvopaper, mediumvopaper, smallroyalvopaper, royalvopaper, superroyalvopaper, imperialvopaper. +\item[본문 기본 글자 크기] 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, 20pt, 25pt, 30pt, 36pt, 48pt, 60pt, *pt, extrafontsizes +\item[프린팅 옵션] twoside, oneside, onecolumn, twocolumn, openright, openleft, openany, final, draft, +ms, showtrims +\item[기타 옵션] leqno, fleqn, openbib, article, oldfontcommands +\end{description} +이상의 옵션의 의미와 효과에 대해서는 memoir 매뉴얼을 읽어보라. + +\subsection{한글 드라이버의 옵션} + +한글 식자를 위하여 로드되는 패키지에는 고유한 옵션들이 있다. \obclass는 다음과 같은 옵션을 해당 +한글 드라이버에 넘겨준다. + +\begin{description} +\item [\koTeX-utf] hangul, \uline{hanja}, nojosa, \uline{nonfrench}, \uline{finemath}, \uline{strictcharcheck} +\item [\XeTeX-\ko] hangul, hanja, %unfonts.\footnote{unfonts 옵션은 \obclass에서 조금 다르게 동작하므로 아래 해당 부분을 참고할 것.} +\item [\LuaTeX-\ko] hangul, hanja, unfonts +\item [cjk-\ko] hangul, hanja, nojosa, \uline{usedotemph}, \uline{usecjkt1font}. usecjkt1font 옵션은 uset1font로 입력해도 받아들인다. +\end{description} +이 가운데 [hangul] 옵션은 사실상 지정할 필요가 없다. hangul 옵션이 주어져도 예들 들어 절 숫자의 형식 같은 것은 \obclass\ 방식이 유지되기 때문이다. 그러므로 밑줄 그은 옵션만이 \obclass에서 의미가 있다고 할 것이다. + + +\subsection{\obclass의 옵션} + +\subsubsection{한글 드라이버를 지정하는 옵션} + +다음 두 옵션은 한글 드라이버를 강제로 지정하는 옵션이다. 이 옵션을 쓸 때는 오직 \hologo{pdfLaTeX}만을 +실행한다는 의미임을 기억해두자. +\begin{description} +\item [cjk] cjk-\ko 패키지로 한글을 표시한다. 이 패키지는 memhangul의 일부 기능과 충돌할 가능성이 +있으며 memhangul은 원칙적으로 cjk-\ko를 지원하지 않는다. 그러나 한글 표현만을 위해서라면 이 옵션으로 +문서를 작성할 수 있다. +\item [dhucs] \koTeX-utf로 한글을 표현한다. \hologo{pdfLaTeX}에서 디폴트이며 memhangul-ucs는 +이 패키지를 의도하고 작성된 것이다. +\item [polyglossia] 이 옵션이 주어지면 \koTeX 을 로드하지 않는다. 그 대신 \textsf{polyglossia}를 로드하고 이에 의존한 한글 식자를 준비한다. +\end{description} + +다음 옵션들은 해당하는 드라이버에서만 의미를 갖는다. +\begin{description} +\item [strictcharcheck] \koTeX-utf. 엄격한 문자 검사. +\item [finemath] \koTeX-utf. 한글 간격 미세 조정. +\item [nofinemath] \koTeX-utf. finemath 기능을 끔. +\item [usedotemph] cjk-\ko. \verb|\dotemph| 명령 사용 가능. +\item [uset1font] cjk-\ko. 라틴문자도 nanumtype1으로 찍음. +\item [interwordHWP] \koTeX-utf. 단어 간격을 조금 더 넓게 벌려준다. +\item [interworddefault] \koTeX-utf. 단어 간격을 적당히 벌려준다. +\end{description} + +\subsubsection{레거시 텍과 관련된 옵션} + +다음 옵션은 \hologo{pdfTeX} 엔진 또는 \hologo{eTeX} 엔진에서만 의미를 갖는다. 이 옵션이 주어지고 +새로운 텍 엔진이 운영될 때는 무시된다. +\begin{description} +\item [dvips] \obclass로 작성된 문서를 latex $\rightarrow$ dvips $\rightarrow$ ps2pdf 순으로 +컴파일하려 할 때, 즉 pstricks를 이용할 때 이 옵션을 주어야 한다. 이 옵션을 준 문서에 대하여 \hologo{pdfLaTeX}을 +실행하면 안 된다. +\item [romanfixed] 로마 글자의 크기와 위치를 미세조정하는 옵션으로서 untype1을 쓸 때 유용하다. 현재 상황에서는 의미가 크지 않음. +\end{description} + +\subsubsection{여러 가지 옵션} + +다음은 \obclass 의 고유한 옵션들이다. +\begin{description} +\item [chapter] \verb|\chapter| 명령을 제대로 쓸 수 있게 해준다. 이 옵션이 없으면 \obclass는 \verb|\section|부터 시작하는 문서라고 간주하고 식자하지만 \verb|\chapter|에서 에러를 내지는 않는다. +\item [kosection] \verb|\section|에 대하여 ``제''와 ``절''을 찍어주도록 하는 옵션이다. +\item [amsmath] amsmath.sty와 amssymb.sty를 미리 로드해주는 옵션이다. +%\item [adjustmath] 한글 문서의 행간격이 벌어짐으로 인해서 display 수식의 전후에 너무 많은 공백이 생기는 것을 막아준다. +\item [mathdisp] v2.2 버전에서 디스플레이 수식과 본문의 간격을 oblivoir 식으로 재설정하는 것이 디폴트가 되었다. 이전에는 \verb|adjustmath| 옵션을 부여해야 동작하던 기능이 디폴트가 된 것이다. 이 기능을 배제하고 수식과 본문의 간격을 memoir와 amsmath가 설정하는 그대로 두려면 이 옵션을 부여한다. +\item [arabicfront] \verb|\frontmatter| 부분의 페이지 숫자를 아라비아 숫자로 찍는다. 기본값은 로만 숫자. +\item [footnote] 각주 번호와 숫자를 한국식으로 식자한다. +\item [figtabcapt] 그림과 표에 \cnm{그림 1}과 같은 방식으로 캡션을 단다. +\item [gremph] 글꼴 대체 강조 방식을 쓴다. 이것이 기본값이다. +\item [itemph] 기울인 글꼴 강조 방식을 쓴다. +\item [nonfrench] nonfrenchspacing. +\item [hangulpagestyle] 본문의 페이지 스타일을 hangul 양식으로 한다. +\item [nokorean] 사실상 memoir와 거의 같은 상태가 되게 한다. 즉 pdf bookmark도 만들지 않으며 한글도 찍히지 않는다. +\item [pdfbookmark] nokorean 옵션을 주면서도 북마크는 만들도록 hyperref을 로드해주는 역할을 한다. nokorean 옵션이 주어지지 않을 때는 무의미함. +\item [10.5pt] 본문 활자 크기를 10.5pt로 한다. +\item [quotespacing] quote, quotation 환경의 줄간격을 `좁은 줄간격'으로 줄인다. +\item [nanum] 나눔명조/나눔고딕 트루타입 글꼴을 기본 글꼴로 사용하도록 설정한다. +\item [hcr] 함초롬 LVT 글꼴을 기본 글꼴로 사용하도록 설정한다. +\item [lwarp] \textsf{lwarp}를 이용하여 HTML을 제작하는 데 필요한 설정을 활성화하는 옵션이다. +\end{description} + +\bigskip + +다음 옵션들은 특별한 상황에서 의미를 가지는 것이다. +\begin{description} +\item [lyxhyper] LyX에서 문서를 작성할 때 LyX이 강제로 hyperref을 로드하는 기능과 \obclass의 hyperref 로드 기능이 충돌하는 것을 방지하기 위한 것이다. +\item [tocentry] chapter 옵션과 같이 쓰여서 toc, lof의 엔트리를 조정해준다. +\item [microtype] 이 옵션이 지정되면 \hologo{pdfTeX}과 \hologo{LuaTeX}에서 microtype 패키지를 불러온다. 다만 \hologo{XeTeX}에서는 문장부호 끌어내기를 위한 xetexko-hanging 스타일을 로드한다. +\item [subfigure] subfig 패키지 대신 subfigure 패키지를 쓰기 위해서 충돌이 있는 코드 하나를 수정해준다. +\item [manualfontspec] fontspec 패키지를 자동으로 로드하지 않고 사용자가 직접 설정하고자 할 때 +\item [fontspec] fontspec 패키지에 넘겨줄 옵션을 지정한다. +\item [xcolor] xcolor 패키지에 넘겨줄 옵션을 지정한다. +\item [hyperref] hyperref 패키지에 넘겨줄 옵션을 지정한다. +\item [moreverb] moreverb 패키지를 사용하려 할 때. 약간의 충돌을 해결해준다. +\item [preload] \verb|\documentclass|가 시작되기 전에 로드해야 할 패키지를 지정한다. +\item [preloadoption] preload할 때 함께 넘겨줄 옵션을 쓴다. +\item [faht, fawd] 특별히 pdf 사이즈를 조절할 필요가 있을 때 사용한다. 특히 flowfram 패키지를 위해서 필요하다. +\item [noreserveinserts] \hologo{eTeX}의 reserveinserts 확장 코드를 억제한다. 일반적으로 사용할 필요 없다. +\item [moreroom] \hologo{pdfTeX}에서 용량 부족으로 에러가 발생할 때 특별히 지정한다. +\end{description} + +\bigskip + +다음 옵션들은 현재 큰 의미를 지니지 않는 것들이다. 대부분 \koTeX 의 발전과 더불어 \obclass에서 특별히 지정할 필요가 없어졌다. +\begin{description} +%\item [unfonts] 은 글꼴을 사용하게 한다. 레거시 텍에서는 untype1이고 새로운 텍 엔진에서는 은글꼴 트루타입이 기본 글꼴이 된다. +%\item [nounfonts] 은 글꼴을 사용하지 않게 한다. 이것이 디폴트이다. +\item [latinquote] 따옴표를 라틴 글꼴에서 찍도록 강제하는 옵션이었다. 현재는 아무런 작용도 하지 않는다. +\item [oldhangul] 옛한글 식자를 위한 옵션이었다. 현재는 이 옵션이 없어도 옛한글을 잘 처리한다. +\item [nowinname] 은글꼴을 위해서 마련된 옵션이었으나 현재는 무의미하다. +\end{description} + + +%\section[\obclass{}와 비교]{\obclass{}\footnote{현재 documentclass 이름으로 oblivoir를 쓰든 xoblivoir를 쓰든 실행되는 엔진에 따라 기능이 설정된다. 그러나 여기서는 pdf\TeX\ 엔진에서 쓰던 legacy oblivoir를 가리키는 경우에 ``\obclass''라고 하였다.}와 비교} + +%%%다음 옵션은 disable되었다. 아무런 작용이 없는 것이므로 에러를 +%%%발생하지는 않지만 효과도 없다. +%%%\begin{description} +%%%\item [{[dvips]}] 당연히 더이상 쓸 일이 없으므로. +%%%\item [{[romanfixed]}] 폰트 관련된 옵션은 대부분 비활성화된다. +%%%\item [{[finemath]}, {[nofinemath]}] 이 옵션은 disable되었다. finemath에 관련된 사항은 \xetexko 에서 모두 구현하고 있다. +%%%%그러나 완전한 호환은 아직 되지 않는다. 대표적인 예가 괄호 뒤의 간격이다. +%%%\item [{[strictcharcheck]}] dhucs 특유의 옵션이었다. +%%%\end{description} +%%% +%%%다음 옵션이 새로 생겨났다.\footnote{% +%%% [latinquote] 옵션은 더이상 아무런 작용을 하지 않는다. +%%%} +%%%\begin{description} +%%%%\item [{[latinquote]}] 홑따옴표와 겹따옴표를 식자하는 폰트를 라틴 문자 폰트로 할 것인가 한글 폰트로 할 것인가를 결정하는 +%%%%것이다. 이 옵션이 주어지면 라틴 문자 폰트의 겹따옴표를 식자한다. +%%%\item[{[manualfontspec]}, {[fontspec]}] 이 옵션의 동작에 대해서는 \myREF{sec:fontspec}{sec:폰트스펙}\를 보라. 2011/09/15 이전 버전에서는 옵션 명칭이 [fontspec]이었으나 이 옵션은 다른 기능으로 쓰이게 되었다. +%%%\item[{[moreverb]}] 이 옵션의 동작에 대해서는 \myREF{sec:moreverb}{sec:모아버브}\를 보라. +%%%%\item[{[oldhangul]}] 이 옵션의 동작에 대해서는 \ref{sec:올드한글}\를 보라. +%%%\item[{[amsmath]}] 이 옵션의 동작에 대해서는 \myREF{sec:ams}{sec:에이엠에스}\를 보라. +%%%\item[{[nowinname]}] 이 옵션의 동작에 대해서는 \myREF{sec:nowinname}{sec:노윈네임}\를 보라. +%%%%\item[{[verthangul]}] 이 옵션의 동작에 대해서는 \ref{sec:세로쓰기}\를 보라. %%% not implemented +%%%\item [{[microtype]}] 이 옵션의 동작에 대해서는 \myREF{sec:microtype}{sec:마이크로타입}\를 보라. +%%%\end{description} +%%% +%%%다음 옵션은 그대로 있지만 동작이 달라졌다. +%%%\begin{description} +%%%\item [{[itemph]}] emph 또는 itshape에 한글을 기울여서 식자한다. +%%%\item [{[gremph]}] emph 또는 itshape에 한글을 바로 선 폰트로 식자한다. +%%%\end{description} +%%%%gremph와 itemph의 차이는 이제 italic인가 아닌가의 차이뿐이다. +%%% +%%%다음 옵션은 특별한 예외 처리를 위한 것이다. 일반적인 경우에는 쓰이지 않는다. +%%%\myREF{sec:flowfram}{sec:플로프렘}\를 보라. +%%%\begin{description} +%%%\item [{[faht]}, {[fawd]}] 문서 전체의 stockheight와 stockwidth를 미리 설정한다. +%%%\item[{[preload]}, {[preloadoption]}] 이 옵션의 동작에 대해서는 \myREF{sec:preload}{sec:프리로드}\를 보라. +%%%\end{description} +%%% +%%%레거시 ko.\TeX 의 폰트 설정 명령들은 전혀 동작하지 않고 에러를 토해낸다는 사실을 알아야 한다. 즉, \texttt{\textbackslash{}SetAdhocFonts}라든가 +%%%\texttt{\textbackslash{}SetHangulFonts} 같은 명령은 제거되어 있다. \XeLaTeX{}을 +%%%쓰는 목적이 주로 폰트 문제와 관련이 있으므로, 종래의 폰트 설정 방식은 모두 \XeLaTeX{} 방식으로 바꾸도록 해야 한다. +%%%%다음은 제거된, 더이상 사용할 수 없는 명령들이다. +%%%%\begin{verbatim} +%%%% \SetHangulFonts +%%%% \SetHanjaFonts +%%%% \SetAdhocFonts +%%%% \SetGremphFonts +%%%% \interhchar +%%%%\end{verbatim} +%%% +%%%그밖의 모든 \obclass{}의 기능을 \xobclass{}에서 쓸 수 있다. +%%%한글 문서 작성에 있어서 표준이 되고자 하는 \obclass{}를 +%%%\XeTeX 에서\explpunc.Lua\TeX 에서도.\ 편리하게 사용할 수 있게 되기를 바라 마지 않는다. + +\section{폰트 설정 방식에 대한 간단한 설명}\myLabel{sec:font}{sec:폰트} + +\subsection{\koTeX-utf 엔진} + +글꼴 선택 명령 \verb|\SetHangulFonts|, \verb|\SetHanjaFonts|, \verb|\SetAdhocFonts|와 더불어, +gremph 옵션이 주어졌을 때 \verb|\SetGremphFonts| 등을 사용한다. +이 명령의 의미와 용법에 대해서는 \koTeX\ 사용설명서를 참고하라. + +아무런 지정도 없을 경우 nanumtype1으로 식자하고, 이것은 \koTeX-utf의 디폴트 상황과 동일하다. +gremph는 \koTeX-utf에서 \verb|\usepackage{dhucs-gremph}|를 선언한 경우와 동일하게 +동작하므로 별도로 이 스타일을 얹을 필요는 없다. + +\subsection{\XeTeX-\ko, \LuaTeX-\ko} + +한글 드라이버들은 라틴 문자 폰트와 별도로 한글/한자 폰트를 지정할 수 있게 하고 있다. +%분리하는 것을 기본으로 하고 있다. +% \footnote{% + % 한글과 라틴 문자을 분리하지 않으려 할 경우, fontspec 패키지의 + % \texttt{\textbackslash{}fontspec} 명령 등을 사용할 수 + % 있다. 그러나 폰트 테스트 등의 특별한 목적이 아니고 일반 + % 문서 작성 상황에서 이렇게 써야 할 이유가 별로 없을 것이다. +% % 예를 들어 라틴 문자자까지 바탕체를 쓰면: +% % {\setkormainfont{바탕}\fontspec{바탕}% +% % 한글 바탕체. The quick brown fox jumps over the lazy dog.} + % 또한, 한글 폰트와 한자 폰트를 분리할 수 있는데, 이에 대해서는 + % \ref{sec:디폴트}\를 참조하라. + % } +한글과 라틴 문자 글꼴을 분리하지 않으려 할 경우, +\xetexko\ 명령인 +\verb|\disablekoreanfonts|를 선언한다. +%\footnote{% +% \XeTeX{}ko 2008/11/10 이후 버전.} +%%\xetexko 를 따라서 \verb|\hangulmarks|와 같은 명령군이나 \verb|\xetexkofontregime| +%%명령을 활용하면 된다. 이에 대해서는 \xetexko\ 매뉴얼을 (반드시) 참조하라. +이렇게 하면 한글 글꼴은 +라틴 문자 글꼴을 따라가게 된다. 즉, \texttt{\textbackslash setmainfont} +등으로 선언된 글꼴이 한글과 라틴 문자에 동시에 식자된다.\footnote{% + 이외에도 한글-라틴 문자 글꼴의 분리에 따르는 여러 가지 옵션 정의에 관련된 + \xetexko, \luatexko\ 매크로가 있으므로 이에 대해서는 \xetexko, \luatexko\ 매뉴얼을 + 참고하라. +} + +\paragraph{라틴 문자} +라틴 문자 폰트는 fontspec 패키지의 방식을 따른다. +설정과 사용에 대해서는 fontspec 패키지 문서를 참고하라. +매우 방대하고 훌륭한 문서이다. + +\begin{boxedverbatim} +\setmainfont{} +\setsansfont{...} +\setmonofont{...} +\end{boxedverbatim} + +이 명령의 옵션으로 \verb|[Ligatures=TeX]|을 주면 \verb|``|, \verb|---|와 같은 +입력이 ``, ---와 같이 나타난다. 대부분의 텍 소스에는 이런 이른바 텍 리거쳐를 사용하는 것이 +일반적이므로 이 옵션을 지정하는 것이 좋은데, 최신 버전의 fontspec은 이 옵션을 자동으로 붙여주며, +아래 설명할 \cs{setkomainfont} 등의 명령을 써도 역시 이 옵션은 자동으로 붙기 때문에 별다른 고려를 하지 않아도 좋다. +%\XeTeX 에서 \verb|[Mapping=tex-text]| 옵션을 +%써도 좋은데 이 옵션은 \LuaTeX 에서는 무의미하므로 양쪽에 통용되는 \verb|[Ligatures=TeX]|을 +%쓰도록 하자. 따라서 +만약 \ct{TeX Gyre Termes}를 라틴 문자 세리프 글꼴로 쓰려 한다면, +\begin{verbatim} +\setmainfont{TeX Gyre Termes} +\end{verbatim} +으로 충분하다. + +\paragraph{한글과 한자} +한글 폰트는 다음 명령을 사용하여 설정한다. 자세한 사항은 \xetexko, \luatexko\ 매뉴얼을 참고하라. +\begin{boxedverbatim} +\setmainhangulfont[Options]{FontName} +\setsanshangulfont[Options]{FontName} +\setmonohangulfont[Options]{FontName} +\setmainhanjafont[Options]{FontName} +\setsanshanjafont[Options]{FontName} +\setmonohanjafont[Options]{FontName} +\end{boxedverbatim} + +이밖에 특별한 명령으로 \luatexko에는 fallbackfont를 위한 명령이 있다. +\begin{boxedverbatim} +\setmainfallbackfont +\setsansfallbackfont +\setmonofallbackfont +\end{boxedverbatim} +\xetexko에는 이 명령이 없는 대신 \cs{newfontfamily}\cs{fallbackhanjafont}를 이용하여 +fallback 폰트를 정의할 수 있다. 이 기능은 한자(또는 한글/한자) 글꼴에서도 찾을 수 없는 한자를 +식자하기 위해서 사용된다. + +여기 언급하지 못한 다양한 명령들이 제공되므로 해당 매뉴얼을 반드시 읽어보기 바란다. +oblivoir에서도 \xetexko, \luatexko 의 폰트 설정 방식을 그대로 활용할 수 있다. + +%한글 폰트만을 이용해서 한글/라틴 문자에 모두 식자할 필요가 있을 +%수 있다. 이 경우 다음과 같이 하는 것이 한 가지 방법이다. +%\begin{boxedverbatim} +%\disablekoreanfonts +%\setmainfont{NanumMyeongjo} +%\end{boxedverbatim} +%또는, +%\begin{boxedverbatim} +%\setmainhangulfont{NanumMyeongjo} +%\hangulmarks +%\end{boxedverbatim} +%이렇게 하면 라틴 문자와 문장부호, 숫자를 나눔명조로 식자한다. +% +%더 세세한 지정을 위하여 +%그리고 alphas, nums, parens, quotes, colons, hyphens, puncts, cjksymbols가 식자될 폰트의 영역(latin, hangul, hanja, prevfont)을 정의하는 \verb|\xetexkofontregime| 명령도 쓸 수 있다. +%이에 대해서는 \xetexko\ 매뉴얼을 반드시 참조하라. + +\paragraph{임시 폰트 교체} +문장을 작성 중에 일시적으로 폰트를 교체하기 위한 명령으로 +\begin{boxedverbatim} +\adhochangulfont +\adhochanjafont +\end{boxedverbatim} +이 정의되어 있다. 이 명령들은 \verb|\setmainhangulfont| 명령과 같은 방법으로 사용한다. 또한, +\begin{boxedverbatim} +\hangulfontspec +\hanjafontspec +\end{boxedverbatim} +명령도 정의되어 있으며, \verb|\fontspec| 명령이 적용되지 않는 한글과 한자 영역에 효력을 발휘하므로 필요한 대로 쓸 수 있다. + +\subsection{\obclass의 폰트 설정 명령 (\protect\cs{setko...} 명령군)} + +\subsubsection{글꼴의 이름} +fontspec을 이용하여 글꼴을 지정하는 데 있어서 사용자가 곤란을 겪는 문제 중의 하나가 글꼴 이름을 +지정하는 것이다. 먼저 특정 폰트(여기서는 함초롬바탕LVT)의 글꼴 이름을 알아보기 위해 \util{otfinfo}를 +사용해보자. 글꼴에 대하여 \util{otfinfo -i}를 실행하면 다음과 같은 결과가 나온다. + +\begin{footnotesize} +\begin{verbatim} +$ otfinfo -i HANBatang-LVT.ttf +Family: HCR Batang LVT +Subfamily: Regular +Full name: HCR Batang LVT +PostScript name: HCRBatangLVT +Mac font menu name: HCR Batang LVT +Version: Version 1.940; KTS Build 20140401 +Unique ID: YoonDesign: HCR Batang LVT: KTS 20140401 +Description: The Korean TeX Society has added GSUB/GPOS/vhea/vmtx tables + chiefly for old hangul rendering. + Please contact http://www.ktug.org for these issues. +Designer URL: http://yoonfont.co.kr/ +Manufacturer: YoonDesign; The Korean TeX Society +Vendor URL: http://yoonfont.co.kr/ +Trademark: HCR Batang is a trademark of YoonDesign. +Copyright: Copyright (c) 2010-2013 Hancom INC(HNC). All rights reserved. +License URL: http://yoonfont.co.kr/ +License Description: YoonDesign Inc. +Vendor ID: YDI +\end{verbatim} +\end{footnotesize} +이 가운데, ``Full name''과 ``Postscript name''을 사용하면 된다.\footnote{% + 2014년 6월 현재, 대체로 \XeTeX 은 ``Full name''을 쓰면 거의 오류없이 동작하고 + \LuaTeX 은 Postscript name을 선호하는 듯하다. 이 사정은 \ct{luaotfload}나 + \XeTeX\ 엔진의 개선에 따라 달라질 수 있다.} +%일반적으로 Postscript name을 +%쓰는 쪽이 좋다. +여기서 ``Family''는 같은 글꼴 가족들이 똑같은 이름을 가진다. 예를 들어 함초롬바탕LVT Bold체는 +Family가 ``HCR Batang LVT''이고 Subfamily가 ``Bold''로 되어 있다. 이렇게 글꼴 자체가 글꼴 가족에 대한 정보를 가지고 있으면 Family만 지정해도 자동으로 Bold 글꼴을 글꼴가족에서 찾는다 (모든 한글 글꼴이 이렇지는 않다). + +예를 들면 +\oblivoirdblquote{맑은 고딕}은 맥락에 따라 \oblivoirdblquote{맑은 고딕 Bold}를 +글꼴 가족으로 인식한다. 맑은 고딕의 폰트 정보 중에서 이름(name)과 가족에 해당하는 부분을 보면, +\begin{verbatim} +$ otfinfo -i Malgun.ttf | grep -e "name" -e "amily" +Family: Malgun Gothic +Subfamily: Regular +Full name: Malgun Gothic +PostScript name: MalgunGothicRegular + +$ otfinfo -i Malgunbd.ttf | grep -e "name" -e "amily" +Family: Malgun Gothic +Subfamily: Bold +Full name: Malgun Gothic Bold +PostScript name: MalgunGothicBold +\end{verbatim} + +그러므로 +\begin{verbatim} +\setkosansfont(Malgun Gothic) +\end{verbatim} +이렇게만 지정해도 굵은 글꼴이 요구되는 곳에서는 \oblivoirdblquote{맑은 고딕 Bold}를 +식자해준다. +%이렇게 잘 만들어진 글꼴을 이용하는 경우, 간단히 하나의 인자로 +%글꼴을 지정해주는 것만으로 굵은 글꼴을 사용하게 할 수 있다. + +폰트 파일 이름 자체를 쓸 수도 있다. 다만 이 경우는 글꼴 가족을 지정하는 것이 아니므로 Bold나 Italic subfamily를 +자동으로 인식하지 못할 수 있다. 파일 이름으로 사용하려면 확장자를 붙여주면 된다. 예컨대 함초롬바탕 LVT라면 +\texttt{HANBatang-LVT.ttf}를 그대로 지정할 수 있다. 굳이 \texttt{[ExternalLocation]} 옵션을 주지 +않아도 확장자를 붙이는 것만으로 ExternalLocation과 동일한 결과를 얻는다. + +\subsubsection{간단한 폰트 지정} + +\XeTeX-\ko, \LuaTeX-\ko의 기본 한글/한자 폰트 지정 명령인 +\begin{verbatim} +\setmainhangulfont, \setsanshangulfont, \setmonohangulfont +\setmainhanjafont, \setsanshanjafont, \setmonohanjafont +\end{verbatim} +들이 있으나, +\xobclass 에서는 약간 다른 방법(더 편리한?)의 폰트 정의가 +가능하다. 이것은 다음 세 명령으로 이루어져 있다. +\begin{boxedverbatim} +\setkomainfont[]()()() +\setkosansfont[]()()() +\setkomonofont[]()()() +\end{boxedverbatim} + +이 세 명령을 사용할 때 주의할 점은 중괄호 \{ \}가 전혀 쓰이지 않는다는 것이다. +입력상 실수하기 쉬우므로 주의를 요한다. + +이러한 폰트 정의 방식은 xoblivoir 클래스의 원래 의도인 `되도록 간단하게 +필요한 것만' 사용하자는 데서 나온 것이다. +%그러므로 옛한글 설정이나 +%자간, 장평 등 복잡한 폰트 속성을 적용하려 한다면 당연히 \xetexko 의 (즉 fontspec의) +%설정 방식을 이용하는 것이 좋다. + +이후의 설명은 \verb|\setkomainfont|에 대해서만 한다. 다른 두 명령의 사용법은 동일하다. +\begin{boxedverbatim} +\setkomainfont(Font Name) +\end{boxedverbatim} +가장 기본적인 사용법은 위와 같다. 중괄호 \verb|{ }|가 아니라 괄호 \verb|( )|를 쓰고 있음에 주의하라. + +\paragraph{긴 명령} +이 명령의 완전한 형태는 다음과 같다. +\begin{boxedverbatim} +\setkomainfont[]% + (regular)% + (bold)% + (italic)% + [hangul-feature]% + []% + (hanja-regular)% + (hanja-bold)% + (hanja-italic)% + [hanja-feature] +\end{boxedverbatim} +모두 열 개의 옵션 인자가 올 수 있는데 그 가운데 적어도 하나의 괄호 옵션 인자는 반드시 있어야 한다. +그러므로 그것(첫번째 regular)은 ``옵션'' 인자가 아니라 그냥 인자이지만 하나만을 중괄호로 묶는 것이 오히려 코딩 +실수를 증가시킬 것으로 보아서 모두 괄호 인자를 사용하도록 했다. +괄호 옵션 인자를 하나만 준다면 그것은 한글 regular 글꼴 이름으로 받아들일 것이다. +나머지 아홉 개의 옵션 인자는 생략 가능하다. 각 옵션 인자가 생략가능하기 때문에 +괄호나 꺾쇠괄호 사이에 스페이스를 남기지 않도록 주의해야 한다. 예를 들어 \verb*|(fontname) [feature]|와 같이 +적으면 스페이스 때문에 옵션 인자의 파싱에 실패할 수 있다. + +기본적으로 폰트 이름은 \verb|( )| 안에 들어간다. 그리고 미리 오는 \verb|[ ]|는 이름의 공통 부분을 축약하기 위한 것이고 끝에 오는 \verb|[ ]|는 속성을 추가하기 위한 것이다. 이 규칙이 두 번 반복된다고 생각하면 되겠다. + +\paragraph{한글과 한자} +이 가운데 앞의 다섯 개는 한글, 뒤의 다섯 개는 한자관련 설정이다. 그런데 예컨대 +\begin{verbatim} +\setkomainfont(Fontname A)(Fontname B) +\end{verbatim} +이렇게 코딩해서 Fontname B가 한자 글꼴이 되게 하려 해도 +두 번째 괄호 옵션 인자는 한자 regular로 받아들이는 것이 아니라 +한글 bold 이름으로 인식할 것이다. +따라서 한글과 한자 사이에 다음과 같이 경계를 주면 +\begin{verbatim} +\setkomainfont(한글 글꼴)[](한자 글꼴) +\end{verbatim} +이제 의도대로 동작한다. 다음 보기는 한글을 함초롬바탕LVT, 한자를 맑은 고딕으로 선택하는 예가 된다. +\begin{verbatim} +\setkomainfont(HCR Batang LVT)[](Malgun Gothic) +\end{verbatim} + +한자 설정은 한글 설정 이후에 잇대어 쓰는 것으로 한글 설정 방식과 완전히 똑같다. +실제로 \verb|\setkomainfont(A)[](B)| 명령은 +\begin{verbatim} +\setmainhangulfont{A} +\setmainhanjafont{B} +\end{verbatim} +와 동일하기 때문에 굳이 한자 글꼴을 따로 지정하지 않아도 한자 자면을 가진 한글 글꼴을 설정하면 +한자가 잘 표시된다. +그러나 NanumMyeongjo와 같이 한자 자면이 없는 글꼴이라면 한자 글꼴을 별도로 선언해주어야 할 +것이다. + +한자 폰트 부분을 선언하면 \LuaTeX-\ko의 \verb|\hanjabyhanjafont|를 1로 만들어서 선언된 +한자 글꼴이 우선적으로 사용되도록 하는 효과가 있다. 만약 이를 원하지 않는다면 \verb|\hanjabyhanjafont 0|을 +직접 선언하도록 하라. + +\paragraph{regular, bold, italic, bolditalic} +글꼴 가족이 잘 설정된 폰트를 사용한다면 bold를 굳이 지정할 필요는 없다. +bold를 지정하지 않는 것은 이 인자를 주지 않는 것이다. \verb|()|와 같이 비운 인자를 주면 +bold 글꼴에 regular 글꼴이름을 사용하므로 오히려 bold 효과가 사라진다. +bold 글꼴을 아예 별도로 지정할 때는 글꼴 이름을 다 적어준다. 한편, 예컨대 +HCR Batang LVT에 대하여 HCR Batang LVT Bold가 볼드체 이름임을 이용하여 +\verb|\setkomainfont(HCR Batang LVT)(* Bold)|와 같이 지정하는 방법도 통한다. +함초롬바탕의 full name을 쓰지 않고 Postscript name을 쓴다면, +\begin{verbatim} +\setkomainfont(HCRBatangLVT)(*-Bold) +\end{verbatim} +와 같이 하면 될 것이다. + +한글은 이탤릭이 없지만 우사체를 쓰는 관행이 있다. oblivoir 클래스 옵션으로 \texttt{[itemph]}를 +설정하면 italic을 써야 할 곳에서 기울어진 서체를 쓸 수 있다. 반면 \texttt{[gremph]}로 하면 +바로 선 서체를 사용한다. \texttt{[gremph]}가 디폴트이며, 이 경우 이탤릭을 써야 할 곳에 다른 +폰트를 사용하게 할 수 있다. 예를 들면 +\begin{verbatim} +\setkomainfont(HCR Batang LVT)(* Bold)(NanumGothic) +\end{verbatim} +이렇게 하면 이탤릭을 쓸 자리에 나눔고딕이 사용된다. 만약 클래스 옵션 \texttt{[itemph]}가 +주어져 있다면 나눔고딕도 기울어진다. +이탤릭 글꼴을 아예 지정하지 않으면 regular에 지정된 글꼴을 그대로 쓴다. \texttt{[itemph]}라면 +이탤릭 글꼴을 지정하지 않아도 될 것이고 \texttt{[gremph]}라면 적당한 글꼴을 적어주면 될 것이다. + +bolditalic의 경우 볼드체 글꼴과 이탤릭 속성을 사용한다. 즉 \texttt{[gremph]}이면 bold와 +bolditalic이 동일할 것이고, \texttt{[itemph]}라면 bold 글꼴이 기울어진 모양으로 나온다. +bolditalic 폰트를 별도로 지정하려 한다면 아래에서 설명할 feature 추가 방식으로 다음과 같이 하여야 한다. +\begin{verbatim} +\setkomainfont(Regular)(Bold)(Italic)[BoldItalicFont={Fontname}] +\end{verbatim} + +\paragraph{base name을 사용하여 공통 부분 줄여쓰기} +KoPubWorldBatang체 같은 경우, 글꼴 가족이 서로 다른 다음 세 폰트가 있다. +\begin{verbatim} +KoPubWorldBatangLight.ttf KoPubWorldBatangLight KoPubWorldBatang Light +KoPubWorldBatangMedium.ttf KoPubWorldBatangMedium KoPubWorldBatang Medium +KoPubWorldBatangBold.ttf KoPubWorldBatangBold KoPubWorldBatang Bold +\end{verbatim} +이 글꼴은 앞부분 이름은 같지만 Regular/Bold에 대응하는 글꼴로 설정되어 있지 않다. +이러한 상황에서 앞의 같은 부분을 base name으로 지정하고 나머지 부분을 각각 써넣는 방식으로 +글꼴을 지정할 수 있다. +\begin{verbatim} +\setkomainfont[KoPubWorldBatang](Light)(Bold) +\end{verbatim} +이것은 +\begin{verbatim} +\setkomainfont(KoPubWorldBatangLight)(KoPubWorldBatangBold) +\end{verbatim} +를 줄여쓴 것으로 이해하면 된다. 이탤릭 폰트는 지정하지 않은 보기인데, 원한다면 세번째 괄호 옵션에 +써넣을 수 있다. 단, 이 방법을 쓸 때는 별표(*)를 사용할 수 없다. 왜냐하면 별표를 사용하였을 때 +KoPubWorldBatang*이라는 이름의 폰트를 찾으려 할 것이기 때문이다. + +예를 들어, 서울시체를 본문 글꼴로 하고 바탕 글꼴용 한자는 한양해서를 쓰고 싶다면(실제 해보면 그다지 어울리지 않지만) 어떻게 할 수 있을까? +\begin{verbatim} +\setkomainfont[SeoulHangang](L)(B)[](HYhaeseo) +\setkosansfont[SeoulNamsan](L)(B) +\end{verbatim} + +이 방식에서 주의할 것은 예컨대 이탤릭 글꼴로 완전히 이름이 다른 것을 쓰고자 한다면 +이런 식으로 할 수 없다는 점이다. + +\paragraph{feature의 추가} +네 번째 옵션 인자는 한글 폰트를 설정할 때 넘겨줄 feature를 지정한다. +\begin{verbatim} +\setkomainfont(HCRBatangLVT)[FakeStretch=0.95,InterHangul=-0.05em] +\end{verbatim} +이것은 장평을 95\%로 하고 자간을 5\% 줄이는 예이다. 여기에 쓸 수 있는 feature에 관해서는 +fontspec 설명서와 \xetexko, \luatexko\ 설명서를 참고하라. + +옛한글을 식자하려면 (지원되는 폰트에 대하여) 다음과 같이 feature 옵션을 추가하여야 할 수 있다. +\begin{verbatim} +\setkomainfont(Noto Serif CJK KR)[Script=Hangul,Renderer=OpenType] +\end{verbatim} + +다섯번째 옵션 인자는 한자의 base name이다. 네번째 없이 다섯번째만 올 수 없으므로 이것을 +설정하려면 +\begin{verbatim} +\setkomainfont(HCRBatangLVT)[][KoPubBatang](Light) +\end{verbatim} +와 같이 적어도 네번째 옵션 인자를 (비우더라도) 지정해야 할 것이다. + +\paragraph{파일 이름으로 찾기} +폰트를 그 이름(full name 또는 Postscript name)으로 지정하지 않고 파일 이름으로 찾으려 할 때, +다음과 같은 방법이 있다. + +먼저 옵션 인자로 \texttt{ExternalLocation}을 선언하는 방법이다. 이 때는 확장자를 지정하지 않아도 된다. 현재 \textsf{fontspec}은 이 방법을 지원하기는 하지만 권장하지는 않는다. +\begin{verbatim} +\setkomainfont(HANBatang-LVT)[ExternalLocation] +\end{verbatim} +파일 이름을 그대로 적어주는 방법이 있다. 즉 확장자를 붙여서 파일 이름 자체를 지정하는 방법이다. 이것이 권장하는 방법이 되었다. +\begin{verbatim} +\setkomainfont(HANBatang-LVT.ttf) +\end{verbatim} + +파일 이름으로 호출하는 경우 별표(*)를 이용하여 이름의 공통부분을 줄여쓰는 방법을 사용할 수 없다. +그리고 +하나의 글꼴군 세트에서 ``이름으로 찾기''와 ``파일이름으로 찾기''를 둘 다 사용할 수 없다. 즉 다음과 같이 하는 것은 오류이다. +\begin{verbatim} +\setkomainfont(HCRBatangLVT)(HANDotum-LVT.ttf) +\end{verbatim} +그러나 한글군/한자군에 대해서는 따로 사용해도 상관없다. 다음은 한글은 Postscript 이름으로, +한자는 파일 이름으로 찾게 설정한 경우이다. 오류없이 동작한다. 그렇지만 되도록 일관성있게 쓰는 것이 좋을 것이다. +\begin{verbatim} +\setkomainfont(HCRBatangLVT)(*-Bold)[](UNI_HSR.ttf) +\end{verbatim} +\XeTeX 에서만 되는 FakeBold를 한자에만 적용해보자면, +\begin{verbatim} +\setkomainfont(HCRBatangLVT)(*-Bold)[](UNI_HSR.ttf)[AutoFakeBold] +\end{verbatim} +이렇게 하면 되는데, FakeBold는 가급적 사용하지 않는 것이 좋겠다. + +\paragraph{\cs{setob...} 명령} + +라틴 문자 영역의 폰트를 설정하는 데는 \cs{setmainfont} 등이 그다지 불편하지 않기 때문에 +그냥 쓰면 된다. 그러나 \cs{setkomainfont}의 괄호 \ct{( )}를 이용한 폰트 지정 방식과 +유사하게 쓰려 하거나, base name을 이용한 축약 기능을 라틴 문자 정의에도 쓰고 싶다면 다음처럼 해도 상관없다. +\begin{boxedverbatim} +\setobmainfont[]()()()[features] +\end{boxedverbatim} +일반적으로는 거의 의미없는 명령이나 반은 재미로 마련해두었다. + +\subsection{기정의 폰트 세트} + +클래스 옵션으로 \texttt{[nanum]}을 지정하면 본문이 나눔명조와 나눔고딕으로 식자된다.\footnote{% +\XeTeX 이나 \LuaTeX 에서는 은 바탕을 기본 글꼴로 하고 있다. \hologo{pdfTeX}을 위한 +kotex-utf의 경우는 여전히 nanumtype1이다.} +%\footnote{% +% \LuaTeX-\ko는 아무 옵션이 없어도 nanumtype1으로 본문을 표시하지만 \XeTeX-\ko에서는 +% 한글 부분이 비어 나온다. 이 옵션을 주면 \LuaTeX-\ko 에서도 nanumtype1이 아니라 트루타입을 쓰게 된다.} +%나눔명조에 없는 한자는 나눔고딕에서 가져다가 찍는다. + +클래스 옵션 \texttt{[hcr]}은 함초롬 LVT 바탕, 함초롬 LVT 돋움 글꼴을 본문 글꼴로 사용하게 한다. +\texttt{[Script=Hangul]}을 지정하여 옛한글도 잘 처리하게 한다.\footnote{% + \cs{setkomainfont} 명령의 인자로 HCR 계열이 지정되면 이 옵션이 자동으로 추가된다. + 그밖의 폰트에서 옛한글을 처리하게 하려면(예를 들어 Malgun Gothic, UnBatang 등) + feature 추가 옵션으로 \texttt{[Script=Hangul]}을 지정할 수 있다.} + +%클래스 옵션 \texttt{[unfonts]}는 은 바탕, 은 돋움, 은 타자, 은 그래픽을 이용하여 본문 글꼴을 식자하게 한다. +%\texttt{[gremph]}일 때 바탕글꼴의 이탤릭이 은 그래픽으로 찍힌다. 또한 이 옵션은 \texttt{[Script=Hangul]}을 +%자동으로 추가하여 옛한글을 은 바탕으로 잘 처리할 수 있게 하였다. 은 글꼴을 옵션으로 주지 않고 \cs{setkomainfont} 명령으로 주려면 다음과 같이 하는 것이 좋다. HCR 글꼴과 달리 자동으로 폰트 이름을 보고 \texttt{[Script=Hangul]}을 삽입하지 않으므로 feature 옵션에 지정한다. base name을 ``UnBatang''으로 하고 확장자를 잇대어 쓰도록 +%다음처럼 정의할 수 있다. +%\begin{verbatim} +%\setkomainfont[UnBatang](.ttf)(Bold.ttf)[Script=Hangul] +%\end{verbatim} +%은 그래픽을 이탤릭 대용으로 쓰려 한다면, +%\begin{verbatim} +%\setkomainfont[Un](Batang.ttf)(BatangBold.ttf)% +% (Graphic.ttf)[Script=Hangul] +%\end{verbatim} +%이름의 공통부분(base name)이 ``Un''밖에 없으니까 이렇게 할 수밖에 없다. 은 그래픽은 한자가 나오지 않는데 +%필요하다면 한자 글꼴 지정을 잇대어 하면 된다. 실제로 해보자면, +%\begin{verbatim} +%\setkomainfont[Un](Batang.ttf)(BatangBold.ttf)(Graphic.ttf)% +% [Script=Hangul][UnBatang](.ttf)(Bold.ttf)(.ttf) +%\end{verbatim} +%한자는 은 그래픽이 아니라 은 바탕에서 찾아서 찍게 한 것이다. + +\subsection{폰트 설정 명령 (\protect\cs{setkor...} 명령군)} + +이전 버전의 oblivoir에서는 다음 세 명령을 제공하였다. +이 명령군도 여전히 유지되고 있는데 그것은 이전에 작성된 문서와의 호환성을 위해서이다. +이 명령군에 대해서는 더 설명하지 않는다. + +\begin{boxedverbatim} +\setkormainfont()(){} +\setkorsansfont()(){} +\setkormonofont()(){} +\end{boxedverbatim} +%이 명령들도 한자 지정을 위하여 확장가능하다. +%\begin{boxedverbatim} +%\setkormainfont()(){}% +% ()(){} +%\end{boxedverbatim} +% +%괄호 옵션 인자와 중괄호 인자가 있다는 점과 bold, italic, regular의 순서가 +%\cs{setkomainfont}와 다르다는 데 주의하라. +%이전 버전에 비하여 확장된 기능은 feature를 줄 수 있다는 것이다. +%\begin{boxedverbatim} +%\setkormainfont(Bold)(Italic){Regular}[Feature] +%\end{boxedverbatim} +%이런 식으로 마지막 옵션 인자로 feature를 지정하면 유효하다. +% +%한글과 한자 사이에는 적어도 괄호 인자가 하나는 와야 구별된다. +%\begin{verbatim} +%\setkormainfont{HCR Batang LVT}(){HYhaeseo} +%\end{verbatim} +% +%이 때문에, 예를 들어 다음과 같이 하는 것은 오류이다. +%\begin{verbatim} +%\setkormainfont{HCR Batang LVT}[]{HYhaeseo} +%\end{verbatim} +%한글 feature를 지정하고 한자도 지정하려면 다음과 같이 해야 한다. +%\begin{verbatim} +%\setkormainfont{HCR Batang LVT}[...](){HYhaeseo} +%\end{verbatim} +% +%한편, \cs{setkormainfont} 다음 문자가 \texttt{[}이면 +%\begin{boxedverbatim} +%\setkormainfont[ ... ]{한글 폰트이름}[ ... ]{한자 폰트이름} +%\end{boxedverbatim} +%이것은 앞의 두 인자에 대하여 \cs{setmainhangulfont}를 실행하고 +%뒤의 두 인자에 대하여 \cs{setmainhanjafont}를 실행하게 하는 것으로 +%이전 버전과 같다. 이 명령은 반드시 \texttt{[}로 시작해야 하며 +%한글과 한자의 경계는 [ ]로 이루어지므로 예컨대 +%다음과 같은 코딩은 오류를 일으키지 않는다. +%\begin{verbatim} +%\setkormainfont[]{Hangul}[]{Hanja} +%\end{verbatim} +% +%그리고 \cs{setkormainfont} 다음 문자가 \texttt{*}이면 +%\texttt{ExternalLocation}으로 실행되는 것도 이전과 같다. +%파일 이름을 직접 써넣는 것이 좋으므로 거의 필요없는 명령이 되었지만 +%이전 버전과의 호환성을 위하여 이 기능을 유지시켜 두었다. +%단, \cs{setkormainfont*()} 형식과는 쓸 수 없고 \cs{setkormainfont*[]} 형식으로만 +%가능하게 기능이 제한되었다. 이 명령은 앞으로 사용하지 않기를 바란다. +%\begin{boxedverbatim} +%\setkormainfont*{한글 폰트 이름} +%\end{boxedverbatim} +% +%이상에서 설명한 \cs{setkor...} 명령군 대신 새로 도입한 \cs{setko...} 명령군을 +%사용하는 것을 권장한다. 사용법이 훨씬 간단해졌기 때문이다.\footnote{% +% 내부적으로 \cs{setkormainfont} 명령들은 \cs{setmainhangulfont}와 \cs{setmainhanjafont}를 +% 부르고, \cs{setkomainfont} 명령들은 \cs{setkormainfont}를 부른다.} +% +%이후의 설명은 \verb|\setkormainfont|에 대해서만 한다. 다른 두 +%명령의 사용법은 동일하다. +% +%\begin{boxedverbatim} +%\setkormainfont{Font_Family_Name} +%\end{boxedverbatim} +% +%\begin{boxedverbatim} +%\setkormainfont[Options]{Font_Name} +%\end{boxedverbatim} +%만약 각괄호(\verb|[|)가 첫 인자로 나오면 이 명령의 사용법은 +%\verb|\setmainhangulfont|와 동일하다. 즉 fontspec 명령을 그대로 +%쓸 수 있다. +%\begin{boxedverbatim} +%\setkormainfont[Options]{Font_Name}[hnj_Options]{hnj_Font_Name} +%\end{boxedverbatim} +%다른 점은 위와 같이 한자 글꼴을 잇대어 정의할 수 있다는 것이다. +%이 때 반드시 한자 글꼴 추가 정의가 시작된다는 듯으로 각괄호 []를 +%써주어야 한다. 아무런 옵션을 지정하지 않더라도 이 부호는 있어야 +%한다. +% +%\subsubsection{폰트 가족의 지정} +% +%한글 폰트의 폰트 가족(font family)은 인위적으로 지정해주어야 할 때가 있다. +%여러 한글 폰트를 임의로 묶어서 하나의 폰트 가족처럼 다루는 경우이다. +% +%한글의 폰트 가족은 Regular/Bold/Italic +%으로 이루어진다고 가정하고 있다.% +%\footnote{원한다면 BoldItalic까지 포함할 수 있으나, \xobclass{}는 +% BoldItalic을 별도로 설정하는 것을 기본으로 +% 삼지 않았다. 지나치게 번거로울 뿐 아니라 BoldItalic에 +% 특별한 의미를 부여하기 힘들었기 때문이다. 반면, \xetexko 는 +% BoldItalic을 별도로 설정할 수 있게 하고 있으므로 혹시라도 +% 원한다면 이것은 사용자에게 맡겨져 있다. +%} +%폰트 가족을 지정하여 글꼴 설정을 할 때는 다음과 같이 한다. +%\begin{boxedverbatim} +%\setkormainfont()(){} +%\setkorsansfont()(){} +%\end{boxedverbatim} +%첫 두 인자를 둘러싼 괄호가 각괄호 []가 아니라 괄호 ()임에 주의하라.\footnote{% +% 이것은 2008/11/09 버전의 변경사항이다. 하위호환성을 제공하지 +% 않으므로 이전의 모든 소스를 수정해야 한다.} +%아무튼 괄호 ()로 둘러싸인 부분은 생략가능하다. 첫 괄호 인자만 있고 +%이탤릭 글꼴을 지정하지 않으면 기본 글꼴로 치환된다. +% +%한글 폰트와 별도의 한자 폰트를 설정할 필요가 있을 때는 다음과 같이 한다. +%\begin{boxedverbatim} +%\setkormainfont()(){}()(){} +%\setkorsansfont()(){}()(){} +%\end{boxedverbatim} +%한자를 한글과 별도의 폰트로 식자하도록 하는 것은 그 번거로움을 피할 수 없지만, +%한글 폰트 가운데 한자 영역이 거의 없거나 있더라도 부실한 것이 너무 많기 때문에 +%현재의 한글 폰트의 사정을 돌아볼 때 부득이하고 불가피하다. +% +%두 번째 선택 인자는 이탤릭체를 나타낸다. 이 인자를 지정하지 않으면 +%기본 글꼴로 치환된다. Regular 폰트를 이 자리에 쓰고 싶을 때가 있다. 이럴 경우 간단히 +%\begin{boxedverbatim} +%\setkormainfont(BOLD)(*){REGULAR} +%\end{boxedverbatim} +%와 같이 (*)로 줄여 쓸 수 있다. 즉, 아예 두번째 인자가 없으면 REGULAR 폰트로 치환되고, (*)로 지시되면 REGULAR 글꼴을 이탤릭으로 식자한다. +%만약 itemph 옵션이 지시되어 있다면 REGULAR의 FakeSlanted 글자가 +%식자되고, gremph 옵션이 지시되어 있다면 이 자리에 선언된 글꼴이 곧은 모양으로 찍힐 것이다. +%이 줄인 옵션은 두 번째 선택 인자, 즉 이탤릭 선언에만 동작하며, +%\verb|\setkormainfont|와 \verb|\setkorsansfont|에서 쓸 수 있다. +% +%\subsection{디폴트 치환}\myLabel{sec:default}{sec:디폴트} +% +%필요한 정보가 충분히 주어지지 않으면 폰트 설정은 기본값으로 +%치환된다. 아래 몇 가지 사용례를 보기로 하자. +% +%\begin{boxedverbatim} +%\setkormainfont{HCR Batang LVT} +%\end{boxedverbatim} +%위의 명령을 실행하면 Regular와 Bold, Italic이 지정한 폰트로 바뀐다. +%%여기 예시한 글꼴은 font family를 이루고 있지 않은 개별 글꼴이므로 +%%굵은 글꼴에도 같은 폰트가 식자된다. +%예시한 글꼴은 Bold 서체가 font family를 이루고 있으므로 굵은 글꼴을 자동으로 +%HCR Batang LVT Bold로 식자한다. 그러나 그렇지 않은 글꼴을 예를 들면, +%\begin{boxedverbatim} +%\setmainfont{YJ BELLA Medium} +%\end{boxedverbatim} +%과 같이 하는 경우 양재벨라체가 굵은 글꼴 자리에도 똑같은 글꼴로 식자하게 된다. +% +% +%\begin{boxedverbatim} +%\setkormainfont[BoldFont={NanumMyeongjo ExtraBold},% +% ItalicFont={NanumBarunGothic},% +% ItalicFeatures={FakeSlant={.17}}]{NanumMyeongjo} +%\end{boxedverbatim} +%위와 같이 fontspec 문법의 옵션을 지정할 수 있다. +% +%\begin{boxedverbatim} +%\setkormainfont(NanumMyeongjo ExtraBold){NanumMyeongjo} +%\end{boxedverbatim} +%이 명령은 Regular와 Bold만 지정된다. +% +%\begin{boxedverbatim} +%\setkormainfont(NanumMyeongjo ExtraBold)(*){NanumMyeongjo} +%\end{boxedverbatim} +%이 명령은 Italic에 NanumMyeonjo를 식자하게 한다. gremph에서는 +%upshape와 itshape가 똑같이 찍히게 되지만 itemph에서는 같은 +%글꼴이 기울어져 식자될 것이다. +% +%\begin{boxedverbatim} +%\setkormainfont(* ExtraBold)(Malgun Gothic){NanumMyeongjo} +%\end{boxedverbatim} +%이것은 Regular, Bold, Italic을 한 가족으로 묶는다. BoldItalic이 만약 필요해지면 Bold체와 +%동일하게 설정된다.\footnote{% +% BoldItalic은 위에서 설명한 (*) 줄인 옵션의 영향을 받지 않는다.} +%한편 (* ExtraBold)라는 표기는 NanumMyeongjo와 같은 이름이기 때문에 줄여 쓴 것이다. +% +%한자 글꼴을 별도로 설정해야 할 때가 있다. +%% \footnote{% +% % 이 기능은 2008/10/09 이후의 xkospace에 바탕을 둔 \xobclass{} 이후 버전에서 가능하다. +%% } +%한자 글꼴을 설정하기 위해서는 위의 명령을 확장하여 다음과 같이 지정한다. +% +%\begin{boxedverbatim} +%\setkormainfont(한글볼드)(한글이탤릭){한글레귤러}% +% (한자볼드)(한자이탤릭){한자레귤러} +%\end{boxedverbatim} +% +%\texttt{()}로 둘러싸인 부분은 모두 생략가능하지만, 이것이 한자 폰트를 설정하는 것이라는 +%점을 알리기 위해 한자 시작 부분에 ( 문자를 지정해야 한다. 즉, +%\begin{boxedverbatim} +%\setkormainfont(){NanumMyeongjo}(){HCR Batang LVT} +%\end{boxedverbatim} +%위와 같이 하면 한글 영역에 나눔명조, 한자 영역에 함초롬 LVT 바탕을 식자할 수 있다. +%이 때 볼드를 지정하지 않지만 최소한 \texttt{()}를 써주어야 한다는 점에 주의한다. +%한글 폰트 정의에서 괄호 ()를 사용했다면 한자 정의 확장에도 같은 괄호 ()를 +%써야 한다. 한글 폰트 정의에서 각괄호 []를 사용했다면 한자 정의 확장에도 +%같은 괄호 []를 써야 한다. +%%참고로, 일부 한글 기호문자는 한자 폰트로 식자된다. +% +%\begin{boxedverbatim} +%\setmonoscale{} +%\end{boxedverbatim} +% +%한글 mono 폰트를 기본값(은 타자)이 아닌 글꼴로 지정할 경우 scaling이 필요할 때가 있다. +%이를 위하여 위의 명령이 정의되어 있다. 이것은 한글 및 한자 mono 글꼴에만 +%영향을 미친다. 라틴 문자자는 fontspec 옵션으로 지정하면 될 것이다. +%% 이 문서의 경우 mono 한글 폰트를 맑은 고딕으로 +%% 하면서 scale 값을 0.9로 지정했다. +% +%문장 중간에서 한글 및 한자 폰트를 일부 바꾸어 써야 할 때가 있다. 이 경우에는 \xetexko 의 +%\verb|\hangulfontspec| 명령을 이용하면 매우 간편하게 이를 실현할 수 있다. + +\subsection{파일 이름으로 찾기에 관한 첨언} + +폰트를 호출하는 이름은 앞서 설명한 \util{otfinfo -i}를 사용하여 확인할 수 있는 +full name이나 Postscript name을 사용하는 것이 가장 좋다. 그러나 부득이한 경우 +파일 이름으로 사용하는 것도 가능하다. + +이 방식은 특히 폰트 정보가 이상한 한글 폰트를 사용할 때를 위해서도 +필요하다. +굳이 폰트 캐싱을 할 필요가 줄어들기도 하므로, 이 방식을 선호하는 경우도 있다. +% \xobclass{}에서는 +%\textquotedblleft 별표붙인 명령\textquotedblright 으로 지정한다. +%참고로 별표붙인 명령을 쓸 때는 fontspec 옵션을 지정하는 명령형식을 +%쓸 수 없다. 그 이유는 fontspec 명령 형식에서는 ExternalLocation +%옵션을 줄 수 있기 때문이다. +%\begin{boxedverbatim} +%\setkormainfont*(BOLD)(ITALIC){REGULAR} +%\end{boxedverbatim} + +\TeX\,Live를 포함하여 대부분의 \TeX{} 임플리멘테이션에서 시스템의 폰트 폴더를 kpathsearch로 +찾을 수 있으므로 예컨대 Windows 폰트 폴더의 폰트들도 이 방식으로 호출할 수 있다. +% 한편, 한겨레결체의 경우 폰트 +%이름을 라틴 문자으로 바꾸어두고 ExternalLocation으로 찾아야만 사용할 수 있다.% +%\footnote{즉, 폰트 이름 정보가 잘못되어 있는 글꼴이다.% +%} +휴먼명조와 같은 글꼴은 ExternalLocation 방식으로 \verb|HMKMM.TTF|를 +직접 지시하는 것이 가장 안전하다. + +%한글 폰트 이름은 폰트 자체의 특성에 따라서 매우 복잡한 양상을 보인다. +%이 글에서는 Windows에서 확인할 수 있는 이름을 기준으로 하고 있으나, +%플랫폼에 따라서는 이름으로 폰트를 호출하기 위해서 다른 방법을 사용해야 +%할 수도 있다. +%가장 안전한 방법은 ExternalLocation으로 폰트 파일의 이름을 부르는 것이다. +이 때 몇 가지 이슈가 있다. +\begin{enumerate}[(가)]\tightlist +\item Windows에서는 한글 폰트 파일 이름을 부를 수 없다. 모든 폰트 파일 이름은 +라틴 문자이어야만 한다. 그 이유는 한글 폰트 파일 이름이 윈도우즈 시스템 인코딩인 +CP949로 불려져야 하는데 우리가 작성하는 tex 원본 파일은 UTF-8 인코딩이므로 +한글 파일 이름을 호출하는 것이 윈도우즈에서 원천적으로 불가능하기 때문이다. + +\item 반면, 시스템 로케일이 utf-8인 매킨토시나 리눅스에서는 한글 폰트 파일 이름도 +ExternalLocation으로 호출할 수 있을 것이다. 리눅스에서는 모르겠으나 매킨토시에서는 +이것이 가능했다. + +\item texmf.cnf의 OSFONTDIR 변수를 수작업으로 수정해야 하는 경우가 있다. +이것은 폰트를 ``파일 이름으로'' 찾게 하기 위해 필요하다. +%Windows의 \TeX\,Live라면 이것을 잘 설정하여 주므로 사용자가 신경쓸 것이 없으나 +%경우에 따라 이 변수를 설정해야 할 필요가 있을 수 있다. 맥의 경우, +%/usr/local/texlive/2015/texmf.cnf 파일을 열어서\footnote{/usr/local/texlive/2015/texmf/web2c/texmf.cnf를 +%수정해서는 안된다.} +%다음 내용을 자신의 환경에 맞게 써넣으면 될 것이다. +%\begin{verbatim} +%OSFONTDIR = {/Library/Fonts;~/Library/Fonts;/System/Library/Fonts;} +%\end{verbatim} + +\item 파일 이름으로 폰트를 호출한다는 것은 kpathsearch를 이용한다는 +것이다. 그러므로 texmf 트리 아래에 해당 폰트를 가져다두고 mktexlsr해도 그 +폰트에 접근할 수 있다. + +\end{enumerate} + +%폰트를 이름으로 호출하는 것은 폰트 자체에 정의된 이름과 파일이름이 다른 것이 너무 많아서 +%손쉽게 말하기가 어렵다. 대부분의 시스템에서(맥 제외) \verb|fc-list| 명령은 \XeTeX 으로 +%부를 수 있는 폰트 이름을 확인하게 해준다. 한편 \LuaTeX의 경우는 좀더 복잡하여 +%\XeTeX 에서 호출할 수 있는 것과 같을 때도 있고 다를 때도 있다. +%파일 이름으로 호출(즉 ExternalLocation)하는 것이 가장 편리할 때도 있다. + +%\subsection{파일 이름 문제: 조금 더}\myLabel{sec:nowinname}{sec:노윈네임} + +%폰트를 이름으로 호출하는 데 있어 결정적으로 중요한 것은 시스템 로케일이다. +%즉, 한글 로케일이면 한글 폰트 이름을 호출할 수 있지만 그렇지 않으면 +%폰트 이름을 한글로 부를 수 없다. +%\xobclass는 한글 로케일의 시스템\explpunc.한글 Windows, Mac OS X 한글 상위 등.\ 일 것을 기본값으로 하고 있다. +%또한 각 운영체제가 인식하는 파일 이름들이 조금씩 다르다. +%이것은 폰트 자체의 특성에 따르는 경우가 많으므로 +%폰트의 이름이나 특성을 사용자가 잘 이해하고 사용하는 도리밖에 없다. +% +%한글이 아닌 로케일의 시스템에서는 [nowinname] 옵션을 지정하고 +%폰트를 라틴 문자 이름으로 호출하면 대부분의 문제가 해결된다. +%\begin{boxedverbatim} +%\documentclass[nowinname]{xoblivoir} +%\setkormainfont(UnBatangBold){UnBatang} +%\end{boxedverbatim} +% +%예컨대 라틴 문자 상위의 매킨토시에서 다음과 같이 한글 폰트를 정의한 경우, +%\begin{verbatim} +%\setkormainfont(NanumMyeongjoOTF-Bold){NanumMyeongjoOTF-Regular} +%\end{verbatim} +%두 번째 선택인자가 없기 때문에 이탤릭 글꼴은 기본 글꼴인 은 바탕으로 +%치환된다. +%이 때, 운영체제가 한글 글꼴 이름 \oblivoirdblquote{은 바탕}을 +%인식하지 못할 수가 있다.\footnote{% +% 김영욱 교수께서 이 문제를 알려주셨다.} +% +%해결책은 앞서 설명한 ExternalLocation으로 폰트를 호출하든가, 아니면 +%이탤릭 옵션까지 모두 채워서 선언하든가 하면 물론 된다. 그러나 좀 +%번거로울 수도 있는 것이다. +%이런 경우에 대비하여 [nowinname] 옵션을 마련해 두었다. 은 글꼴의 +%호출명을 라틴 문자으로 하게 함으로써 한글 글꼴 이름을 인식 못하는 운영체제의 +%문제를 피해가게 하였다.\footnote{% +% 다행히, 은 글꼴은 한글 윈도우즈에서도 라틴 문자 이름으로 호출할 수도 +% 있다. 즉, 한글 윈도우즈에서는 라틴 문자 이름과 한글 이름을 모두 사용할 +% 수 있는 것이다. 그러나 모든 글꼴이 그렇지는 않다.} +%라틴 문자 상위의 매킨토시, 그리고 한글 로케일을 사용하지 않는 리눅스 +%등에서 이 옵션이 활용될 수 있을 것이다. +% +%이 옵션은 xetexko-xobfont, xetexko-var, memhangul-x 등에 부여할 수도 +%있으므로 Beamer 문서를 작성하기 위해 xetexko-var를 쓰는 경우에는 +%xetexko-var의 옵션으로 지시하면 된다. + +\subsection{이탤릭, 기울임} + +한글 글꼴에 이탤릭은 없다. 그러므로 강조를 위해 기울임으로 이탤릭을 대용하는 것은 그다지 권장하지 않는다. 예를 들어 +\begin{verbatim} +\setkomainfont(Malgun Gothic)(* Bold)(Gungsuh) +\end{verbatim} +으로 지정했을 때, 궁서체가 이탤릭에 해당하는 폰트로 설정된다. gremph가 디폴트이므로 궁서체는 곧은 모양으로 찍힌다. + +그러나 디자인 상의 효과를 위해서나 다른 이유에서 +이 서체를 기울이고 싶은 경우가 있을 것이다. +이 경우 \texttt{[itemph]} 클래스 옵션을 지정한다. +그 반대의 경우는 \texttt{[gremph]}이고 이것이 디폴트이다. 부분부분 기울이려 한다면 \cs{hangulfontspec}이나 +\cs{hanjafontspec}, 즉 \cs{adhochangulfont}를 이용하거나 \cs{addhangulfontfeature} 명령을 써서 조작할 수 있으므로 별도로 명령을 만들어두거나 하지 않았다. + +%\subsection{따옴표} +% +%2010년 초, \xetexko 의 급격한 발전과 더불어 \xobclass 가 시도하던 문장부호에 관한 사항은 사실상 +%\xetexko 를 따르는 것으로 충분해졌다. 문장부호를 식자할 때 라틴 문자 폰트의 것, 한글 폰트의 것을 +%자유롭게 선택할 수 있으며 간격 문제도 글꼴 선택의 옵션으로 가능하여졌다. +%\xetexko\ 매뉴얼을 잘 읽어보기 바란다. +% +%이 절은 더이상 의미가 없게 되어 내용을 삭제한다. + +% 따옴표는 한글 폰트의 것을 쓴다. 그러므로 큰따옴표를 입력할 때 \texttt{``}이 아니라 “으로 입력하는 것이 좋다.\footnote{% + % 윈도우즈 한글 입력기에서, ‘ㄴ’과 한자 키를 누르면 + % 이 부호를 입력할 수 있다.} +% 한글 폰트의 따옴표가 신통찮은 것이 너무 많아서, 라틴 문자 폰트의 것을 식자할 수 있도록 해두었다. +% 입력에서 한글 따옴표를 사용하였으나 식자는 라틴 문자 폰트의 것으로 하려 할 때 이 옵션을 쓰면 된다. +% 클래스 옵션 \texttt{{[}latinquote]}로 +% 지정한다. 아마 \texttt{\textbackslash{}textquotedblleft} 등도 되지 않으려나 한다. + +% 한편, \texttt{``}로 입력된 텍스트를 큰따옴표로 식자되게 하는 등, 전통적인 +% \TeX\ 입력 방식이 유지되게 하려면 라틴 문자 글꼴 지정 시에 +% \texttt{[Mapping=tex-text]} 옵션을 주면 된다. ``큰따옴표로 둘러싸인 텍스트''. +% 이 방식을 이용하면 (당연히) latinquote 옵션 여부와 상관없이 모든 따옴표가 라틴 문자 글꼴로 식자될 것이다. + +% \xobclass{}에는 \texttt{\textbackslash{}oblivoirquote}와 \texttt{\textbackslash{}oblivoirdblquote}라는 명령이 +% 정의되어 있다. \oblivoirdblquote{주어진 인자를 따옴표 안에 넣어주는 +% 명령}이다. 입력이 불편하여 일반적으로 이 명령을 쓸 일이 많으리라고 생각하지는 않지만 +% 한글 폰트 따옴표를 쓸 때, 폰트에 따라 따옴표의 간격이 맞지 않는 경우에 +% 이 명령에 별표를 붙이면 앞뒤의 간격을 조금 커닝해준다. 다만 latinquote 옵션이 +% 주어진 경우에는 아무런 효력이 없을 것이다. + +% 참고로, bnm, cnm 등의 \obclass{} \oblivoirquote{괄호 명령}에도 별표(*)를 붙여 앞뒤 간격을 +% 줄여줄 수 있다. |\ccnm{테스트}|, |\ccnm*{테스트}|. + +\section{그밖의 사항들} + +\subsection{판면 설정을 위한 fapapersize} + +memoir는 geometry 패키지와는 다른 방식의 자체 판면 설정 명령을 가지고 있다. +oblivoir에서도 기본적으로 memoir의 판면 설정 방식을 사용할 수 있다. +이와 더불어, \textsf{fapapersize}라는 패키지가 +oblivoir에서 제공된다. + +\begin{boxedverbatim} +\usepackage{fapapersize} +\usefapapersize{*,*,1in,*,1in,*} +\end{boxedverbatim} + +\cs{usefapapersize}는 여섯 개의 콤마로 연결된 인자를 취하는데, 첫번째, 두번째, 네번째, 여섯번째 인자를 별표(*)로 대용할 수 있다. 이 각각은 +\begin{itemize}\tightlist +\item paperwidth +\item paperheight +\item left margin +\item right margin +\item upper margin +\item lower margin +\end{itemize} +이다. 만약 \cs{setheadfoot}이라든가 marginnote 설정이 필요하다면 \cs{usefapapersize} 명령 앞에 둔다. +적어도 left margin과 upper margin은 반드시 주어야 한다는 점과, 콤마 사이에 공백이 없도록 해야 한다는 점에 주의하여야 한다. + +용지(stock)를 설정하려면 다음과 같이 한다. +\begin{boxedverbatim} +\usepackage[stock]{fapapersize} +\usefastocksize{210mm,297mm} +\usefapapersize{190mm,260mm,1in,*,1in,*} +\end{boxedverbatim} +\texttt{[showtrims]} 옵션이 주어져 있다면 crop 선이 함께 나타날 것이다. + +\textsf{fapapersize}에 기정의 용지 설정이 몇 가지 있다. +\begin{description} \tightlist +\item [mum] 국판. (148mm$\times$210mm). 여백 25mm. +\item [newmum] 신국판. (154mm$\times$225mm). 여백 25mm. +\item [1in] \hologo{plainTeX}에서처럼 1in 오프셋을 설정한 판면. 여백 1in. +\item [dbl4x6] 4$\times$6 배판. (190mm$\times$260mm). 여백 30mm. +\end{description} + +\subsection{enumerate} + +enumerate 패키지의 enumerate 아이템 항목 머리 설정은 +다음과 같이 한다. 엔진과 무관하게 동작한다. +\begin{boxedverbatim} +\begin{enumerate}[(㉠)] \tightlist +\item 첫째 항목 +\item 둘째 항목 +\end{enumerate} +\end{boxedverbatim} +\begin{enumerate}[(㉠)] \tightlist +\item 첫째 항목 +\item 둘째 항목 +\end{enumerate} +paralist에서 위와 같은 방식으로 항목 머리를 설정하려면 +xob-paralist를 로드한다.\footnote{% + 물론 paralist 자체는 그 이전에 부르거나 + xob-paralist가 스스로 부르도록 할 것이고 xob-paralist 뒤에 + paralist만 별도로 다시 부르면 안 된다. +} + +\subsection{graphicx, xcolor} + +\hologo{pdfLaTeX} 문서는 dvi 드라이버로 어떤 것이 실행될지 모르기 때문에 graphicx 패키지의 +로딩에 주의를 기울여야 한다. 즉 +\marginpar{\fbox{pdftex}} +\begin{boxedverbatim} +\usepackage[]{graphicx} +\end{boxedverbatim} +과 같이 하는 것이 안전하다. 그러나 대부분의 경우 \verb||를 지정하지 않아도 된다. + +\marginpar{\fbox{xe(lua)tex}} +\XeTeX과 \LuaTeX 의 경우는 graphicx 패키지에 대한 명시적인 호출이 없어도 +png, jpg, pdf 그림을 잘 불러온다. %즉 \obclass가 알맞게 이 패키지를 호출하여준다. + % 이 패키지들을 명시적으로 +% 호출하고자 한다면 옵션 없이 로드하든가 \texttt{[xetex]} 옵션을 준다. +% default가 \texttt{[xetex]}이 되도록 설정되어 있어야 하는데, +% KC2008/\TeX{}Live에는 이것이 잘 되어 있다. +%pdf 그림을 불러오거나 색상 관련 명령을 쓰기 위해 +%color 또는 xcolor를 로드하려면, 옵션 설정을 graphicx와 똑같이 하면 된다. +%\begin{boxedverbatim} +%\usepackage{graphicx} +%\usepackage{xcolor} +%\end{boxedverbatim} + +\subsection{참조 인용, 자동 조사} + +자동 조사는 ko.\TeX 에서와 동일하다. +한글 label은 \XeTeX, \LuaTeX 에서 사용할 수 있다. +레거시 텍에서 label 자리에는 한글을 쓸 수 없다. \marginpar{\fbox{pdftex}} + +\medskip + +\noindent\hologo{pdfTeX}:\\ +\noindent\begin{minipage}{.45\textwidth} +\begin{verbatim} + “소절 \ref{sec:font}\를 보라.” +\end{verbatim} +\end{minipage}\hfill +\begin{minipage}{.45\textwidth} +\hfill “소절 \myREF{sec:font}{sec:폰트}\를 보라.” +\end{minipage} + +\noindent\hologo{XeTeX}, \hologo{LuaTeX}:\\ +\noindent\begin{minipage}{.45\textwidth} +\begin{verbatim} + “소절 \ref{sec:폰트}\를 보라.” +\end{verbatim} +\end{minipage}\hfill +\begin{minipage}{.45\textwidth} +\hfill “소절 \myREF{sec:font}{sec:폰트}\를 보라.” +\end{minipage} + +\subsection{문장부호} + +이 패키지가 제공하는 문장부호는 다음과 같은 것이 있다. + +\begin{itemize} +\item \verb|\bnm|, \verb|\snm|, \verb|\cnm|, \verb|\ccnm|. 각각 \bnm{제목}, \snm{제목}, \cnm{제목}, \ccnm{제목}과 같이 식자된다. +\item \verb|\obldots|. \verb|\obellipsis|. 각각 \obldots, \obellipsis와 같이 식자된다. 한글 패키지 \koTeX 이 로드되면 \verb|\ldots|의 모양이 \ldots와 같이 바뀌기 때문에 영문서의 \verb|\ldots|는 \verb|\obldots|로 식자할 \obldots 수 있다. \verb|\obellipsis|는 행이 나뉘어지지 않는 여섯 개의 점으로 이루어진 말출임표이다. +\item \verb|\cntrdot|, \verb|\cntrdots|. 각각 \cntrdot, \cntrdots로 식자한다. +\item \verb|\expldash|, \verb|\explpunc|. 이것은 설명을 위하여 삽입하는 괘선\expldash 을 표현하기 위한 매크로이다. \verb|\explpunc|의 사용법이 조금 특별하므로 주의하라. \verb*|\explpunc.some text.\ | \explpunc.some text.\ 와 같이 입력한다. 이 사용법이 복잡하다면 \verb|\expldash|를 두 번 쓰는 방법이 있다. +\end{itemize} + + +\subsection{방점} + +\koTeX 에서는 \texttt{\textbackslash dotemph} 명령의 방점\footnote{% + 가로쓰기에서는 \dotemph{점을 글자 위에 찍으므로} \circemph{傍점}이 아니라 + \circemph{上점}이 맞겠지만 관행적으로 방점이라 불러왔다. + 이 문장부호의 정확한 명칭은 “드러냄표”이다.}% +을 지원했다. \xetexko와 \luatexko에서도 이 명령을 사용할 수 있으며, +oblivoir에서 조금 확장했다. 기본인 +\texttt{\textbackslash dotemph} +외에 +\texttt{\textbackslash circemph} +\texttt{\textbackslash useremph} +두 개의 명령을 더 쓸 수 있다. + +\cs{dotemph}와 \cs{circemph}의 결과는 다음과 같다. + +\medskip + +\noindent\begin{minipage}{.45\textwidth} +\begin{verbatim} +\dotemph{우리나라} \circemph{대한민국} +\end{verbatim} +\end{minipage}\hfill +\begin{minipage}{.45\textwidth} +\dotemph{우리나라} \circemph{대한민국} +\end{minipage} + +\medskip + +\cs{useremph} 명령은 이전 버전과 사용법이 달라졌다. 2014년 6월 이전 oblivoir에서 +\cs{useremph}는 pdf\TeX 에서와 \XeTeX, \LuaTeX 에서 사용법이 서로 달랐고 +하나의 선택 인자와 두 개의 인자를 요구하는 등 사용법이 복잡했으나 이것이 모두 다음과 같이 +간단하게 바뀌었다. +\begin{boxedverbatim} +\useremph[][]{text} +\end{boxedverbatim} +한 번 raise 값과 char를 주고난 후에는 그 설정이 보존된다. 즉 \cs{useremph}를 +인자 없이 쓰면 이전에 설정된 것을 따라가고, 이전에 설정된 것이 없으면 \cs{useremph}와 +\cs{circemph}가 동일하다. + +\begin{verbatim} +\useremph{드러냄표} +\useremph[.3ex][\tiny★]{드러냄표} +다시한번 \useremph{드러냄표} +이번에는 \useremph[][\tiny+]{드러냄표} +높이조절 \useremph[0ex]{드러냄표} +\end{verbatim} + +이 코드의 결과는 다음과 같다:\\ +\useremph{드러냄표} +\useremph[.3ex][\tiny★]{드러냄표} 다시한번 \useremph{드러냄표} +이번에는 \useremph[][\tiny+]{드러냄표} +높이조절 \useremph[0ex]{드러냄표} + +\medskip + +편의를 위하여 \cs{useremphstarwhite}({\useremphstarwhite})와 \cs{useremphstarblack}({\useremphstarblack}) +명령을 준비해두었다. 이것은 현재 식자하는 폰트에 해당 글자가 있으면 잘 나타난다. + +\medskip + +\noindent\begin{minipage}{.7\textwidth} +\begin{verbatim} +\useremph[.5ex][\useremphstarwhite]{드러냄표} +\end{verbatim} +\end{minipage}\hfill +\begin{minipage}{.28\textwidth} +\useremph[.5ex][\useremphstarwhite]{드러냄표} +\end{minipage} + +%\marginpar{\fbox{xe(lua)tex}} +%\xobclass에서 기원한 새로운 텍 엔진을 위한 \obclass 에서 +%마지막의 \texttt{\textbackslash useremph} 명령은 +%\useremph{˚}{하나의 선택 인자와 두 개의 인자}를 요구한다. 즉, +%\begin{verbatim} +%\useremph[]{}{text} +%\end{verbatim} +%height는 방점으로 사용할 문자가 올라갈 길이이고 dotchar는 +%방점 문자이다. text는 방점을 찍을 텍스트. +%단, 이 \verb|\useremph| 명령은 \xetexko 에서 제공되는 같은 이름의 +%명령과도 그 사용법이 다르고 레거시 텍을 위한 \obclass에서의 사용법과도 다르므로 주의를 요한다. + +\subsection{chapter styles} +최근의 memoir는 상당히 많은 chapter style을 정의하고 있다. oblivoir의 chapter style +정의 방식은 기본적으로 memoir와 동일하지만 다음 몇 가지가 다르다. + +\begin{itemize}\tightlist +\item \cs{printchaptername} 명령이 무의미하다. +\item \cs{prechapternum} 명령과 \cs{postchapternum} 명령이 추가되었다. +\item \cs{hchaptertitlehead}라는 명령이 사용된다. 이것은 특히 running heading과 관련이 있다. +\end{itemize} + +KTUG 사설 저장소를 통하여 설치할 수 있는\footnote{% + 사설 저장소를 등록할 수 없는 상황이라면 직접 다운로드하라. + \url{http://ftp.ktug.org/KTUG/texlive/tlnet/archive/} +} +ob-chapstyles라는 패키지에는 몇 가지 memoir +chapter 스타일을 oblivoir화해둔 것이 있다. 이 자체를 그대로 써도 좋고 이를 자신만의 스타일을 +만드는 데 참고하여도 좋을 것이다. + +\subsection{한글 pagestyle} + +oblivoir가 추가적으로 제공하는 페이지 스타일로 \texttt{hangul}이 있다. +\begin{boxedverbatim} +\pagestyle{hangul} +\end{boxedverbatim} + +\section{HTML 제작} + +\textsf{lwarp}를 이용하여 HTML을 제작하려면 문서에 \textsf{lwarp} +옵션을 주고 작성한다. 그 후, +\begin{verbatim} +lwarpmk html .tex +\end{verbatim} +명령을 실행한다. MathJax 수식을 위해서는 +\begin{verbatim} +\documentclass[lwarp,lwarpoption={mathjax}]{oblivoir} +\end{verbatim} +와 같이 옵션을 줄 수 있다. + +모든 문서가 원하는 모양대로 HTML로 만들어지지 않을 것이다. 특히 +사용자화하여 복잡한 환경이나 명령을 만들어 쓴 경우에는 의도하지 않은 +결과가 나올 수도 있음에 주의하라. 이 클래스의 \verb|lwarp| 옵션은 +단지 \verb|lwarpmk| 명령을 부르기 위한 준비를 도와주는 것뿐이다. + +\section{샘플 문서} + +이 작은 안내서에 더하여 간단한 \obclass\ 샘플 문서를 하나 제공한다. +이 문서에서 여러 가지 memoir와 \obclass 의 기능을 살펴볼 수 있을 것이다. +oblivoir-test.tex을 컴파일해보고 소스를 검토해보시기 바란다. + +%\subsection{fontspec 옵션과 수학 글꼴}\myLabel{sec:fontspec}{sec:폰트스펙} +% +%fontspec 패키지와 이를 확장한 mathspec 패키지를 이용하여 +%수학 글꼴 일부를 바꾸고자 하거나 mathpazo와 같은 수학 글꼴 세트를 +%적용하고자 할 경우가 있다. 이 때는 다음 두 가지 조치를 해야 한다. +% +%\begin{enumerate}[(1)] +%\item 클래스 옵션으로 [manualfontspec]을 선언한다.\footnote{% +% 2011/09/15 이전 버전에서는 [fontspec]이라는 이름이었다.} +%이 선언으로 +%사용자는 fontspec을 자신의 책임 하에 로드할 수 있다. 심지어 +%xltxtra나 mathspec과 같이 fontspec을 부르는 패키지를 별도로 +%로드할 수 있다. +%\item 윗항의 fontspec 패키지 로드 후에 xetexko-xobfont 패키지를 +%부른다. 이 설정 이후에야 \textbackslash setkormainfont 와 같은 +%명령을 쓸 수 있게 될 것이다. +%\end{enumerate} +%이것은 mathfont를 조절하려면 fontspec의 옵션을 별도로 정의하여 +%상세한 설정을 해야 할 경우가 있기 때문이다. 예컨대 mathpazo를 +%수학 기본 글꼴로 쓰려 한다면 다음과 같이 하는 것이 가능하다. +%\begin{boxedverbatim} +%\documentclass[manualfontspec]{xoblivoir} +%\usepackage{mathpazo} +%\usepackage[math,quiet]{fontspec} +%\usepackage[math,quiet,MnSymbol]{mathspec} +%\setmathsfont{Asana-Math} +%\setmainfont[Ligatures=Common]{Palatino Linotype} +%\usepackage{xetexko-xobfont} +%\end{boxedverbatim} +%이 예보다 간단하게 할 수 있는 것도 많다. 이 예는 설명을 위하여 +%보인 것일 따름이다. +%위의 mathspec 대신 fontspec 패키지 문서에 나와 있듯이 \textbackslash setmathrm +%등의 명령으로 수학 폰트를 조절할 수 있다. +% +%2011/09/15 버전에서 이와 관련한 몇 가지 사항이 추가되었다. +%\begin{enumerate}[(a)] +%\item {[manualfontspec]} 옵션을 주었을 때는 위와 같은 방법으로 fontspec +%패키지를 수동 로드할 수 있다. +%\item {[fontspec=\{no-math\}]}와 같이 fontspec 패키지에 옵션을 미리 설정해줄 +%수 있다. no-math 옵션을 주면 fontspec 명령들이 수식에는 영향을 끼치지 않으므로 +%익숙한 CM-math 글꼴로 수식이 식자된다. +%\item {[preload=mathspec,preloadoption=\{math\}]}와 같이 preload할 패키지에 +%넘겨줄 옵션을 preloadoption으로 지정할 수 있다. +%\end{enumerate} + +%\subsection{옛한글과 세로쓰기}\myLabel{sec:oldhangul}{sec:올드한글} +% 옛한글 글꼴을 사용하려면 [oldhangul] 옵션을 주고 글꼴을 지정해야 한다. +% 세로쓰기는 사용가능하나, 아직 xoblivoir에서 조작하도록 하지는 않았다. +% \xetexko{} 매뉴얼에 옛한글 쓰기에 관한 간략한 소개가 있다. +%2010년 2월, \xetexko 의 옛한글 조판은 거의 완전한 수준에 이르렀다. +%입력을 표준에 맞는 소위 `첫가끝' 코드로 하면서도 사용자 영역(PUA)에 옛한글이 +%들어 있는 글꼴의 옛한글로 mapping이 가능해졌으며, GSUB 옛한글 글꼴(현재 +%알려진 것으로는 은 바탕과 Microsoft Office 2002 Plus Pack의 옛한글 글꼴밖에 없다)을 +%그대로 이용하여 옛한글 식자가 가능하다. +% +%이 역시 \xetexko 의 기능으로서 \xobclass는 더이상 할 일이 없어 이 절의 내용을 삭제한다. + +%\subsection{amssymb}\myLabel{sec:ams}{sec:에이엠에스} +%amssymb 패키지를 로드하려 시도하면 몇 가지 명령이 이미 정의되어 +%있다는 메시지가 나온다. 이 메시지를 줄이려면 amssymb 대신 +%xob-amssymb를 usepackage하도록 한다. +% +%한편, LyX에는 amsmath와 amssymb 패키지를 자동으로 로드하는 기능이 있다. +%이 때문에 사용자가 xob-amssymb를 로드하려 해도 그보다 이전에 amssymb가 +%LyX에 의해 로드되어 의도하는 결과를 얻지 못하는 경우가 있다. 이 때를 위하여 +%[amsmath] 옵션을 마련해두었다. 이 옵션이 활성화되면 amsmath와 xob-amssymb를 +%xoblivoir가 로드해준다. +% +%\subsection{flowfram}\myLabel{sec:flowfram}{sec:플로프렘} +%fapapersize 및 flowfram 패키지와 함께 쓸 때, 첫 페이지의 pdf 사이즈만이 +%fapapersize로 지정한 것을 따라가지 않는 문제점이 있다.\footnote{% +% 이주호 님이 알려주셨음.} +% +%\xobclass 는 memoir의 페이지 출력 루틴을 조금 수정하여 대부분의 경우 +%pdf 사이즈 충돌 문제가 해결되도록 해두었다. +%그러나 어떤 경우 pdf 파일의 첫 페이지와 이후 페이지의 사이즈가 불일치하는 +%문제가 여전히 발생할 가능성이 있어 다음 옵션을 없애지 않았다. +% +%[a4paper] 등 미리 정의된 페이지의 경우는 아무런 문제가 생기지 않는다. +%그러나 memoir 옵션으로 지정할 수 없는 사이즈, +%예컨대 190mm$\times$260mm pdf를 만들고 싶을 때는 어떻게 하는가? +%\xobclass 에게 페이지 사이즈를 강제로 알려주는 방법이 있다. +%\begin{boxedverbatim} +%\documentclass[,fawd=190mm,faht=260mm]{xoblivoir} +%\usepackage{fapapersize} +%\usefapapersize{190mm,260mm,30mm,*,40mm,*} +%\usepackage{flowfram} +%\end{boxedverbatim} +%이제 첫 페이지의 사이즈도 두번째 이후의 것과 같아졌을 것이다. +% +%\subsection{preload}\myLabel{sec:preload}{sec:프리로드} +%일부 패키지 중에는 이따금 memoir 클래스 자체보다 미리 로드되어야 하는 것이 있다. +%대표적인 예가 아랍어를 식자할 때 빼놓을 수 없는 bidi 패키지이다. +%이와 같이 memoir보다 먼저 로드해야 하는 패키지를 쓸 때 다음과 같이 한다. +%\begin{boxedverbatim} +%\documentclass[preload={bidi}]{xoblivoir} +%\end{boxedverbatim} +% +%preload할 패키지에 전해줄 옵션은 다음과 같이 설정한다. +%\begin{boxedverbatim} +%\documentclass[preload={mathspec},preloadoption={math}]{xoblivoir} +%\end{boxedverbatim} +% +%moreverb의 경우도 이렇게 하면 되므로 이제 의미가 없어진 옵션이 되었지만 종래 +%작성된 문서와의 호환을 위해서 없애지는 않았다. +% +%\subsection{moreverb}\myLabel{sec:moreverb}{sec:모아버브} +%이 옵션은 pstricks를 사용하기 위하여 pdfm\-tricks를 이용하려 할 때 +%필요하다. pdfm\-tricks는 moreverb, graphicx, (x)color 패키지가 미리 +%로드되어야 동작하는데, 이 중 graphicx와 xcolor는 문제가 없지만 +%oblivoir(memoir)에서 moreverb는 \textbackslash usepackage 로 +%로드하면 memoir의 일부 명령과 충돌한다. +%이 충돌을 해결해주는 옵션이며, 이 옵션을 준 후에 moreverb를 별도로 +%로드할 필요 없다. moreverb는 \myPageREF{sec:preload}{sec:프리로드}에서 설명하는 +%preload로 미리 로드하는 방법이 있으므로 사실상 obsolete인 옵션이다. +% +%\subsection{microtype}\myLabel{sec:microtype}{sec:마이크로타입} +%현재까지 \XeTeX 은 pdf\TeX과 Lua\TeX 의 microtype 기능을 엔진 수준에서 지원하지 않는다. +%그러나 \xetexko 는 xetexko-hanging이라는 기법을 이용하여 온점과 반점을 판면 밖으로 밀어냄으로써 +%margin kerning과 비슷한 효과를 줄 수 있게 하는 재미있는 기능을 제공한다. +%이 옵션은 이름은 microtype이지만 실은 xetexko-hanging을 활성화하는 역할을 한다. +%이 문서가 이 기능을 활성화하여 작성되었다. +% +%\subsection{hyperref, xcolor}\label{sec:hyperrefxcolor} +%LyX 을 쓴다거나 할 때 \XeTeX 을 위해서 hyperref의 [unicode] 옵션을 +%꺼주어야 할 때가 있다. 이를 위해서 hyperref 패키지에 미리 넘길 옵션을 지정할 수 있게 +%하였다. +%\begin{boxedverbatim} +%\documentclass[hyperref={unicode=false}]{xoblivoir} +%\end{boxedverbatim} +% +%필요에 의해 xcolor 패키지에 대해서도 비슷하게 할 수 있도록 해두었다. + +\section{첨언} +\xobclass{} 사용이 어느 정도로 쉬운가 하면, 나는 맨처음 이 문서를 +LyX에서 작성하여 export한 다음, 두 줄 정도를 지우고 폰트 +설정명령만을 써넣었다. 그래도 훌륭한 \XeLaTeX\ 문서가 만들어졌던 +것이다. + +이 글을 쓰기 시작할 때만 해도 \xetexko{}와 \xobclass{}는 +완성되어 있지 않았다. 그러나 지금은 일반적인 문서를 작성함에 있어서 +불편이 없을 정도가 되었다. + +\bigskip + +돌이켜보면, 한글을 \TeX\ 문서에 사용할 수 있다는 사실 자체가 +신기했던 그 때로부터 20여년이 흘렀다. 본격적인 한글\LaTeX\ 시스템들이 +나오기 시작했던 1990년대 중반으로부터 헤아려도 십수 년, +이 기간 동안 한글이라는 문자 체계를 식자하기 위해 지불해야 했던 +엄청난 노력과 자원을 생각하면 금석지감이 없지 않다. + +Lua\TeX 과 \XeTeX 이라는 유니코드 텍 엔진의 등장은, 이러한 모든 +노력들을 일시에 해결해버렸다. 이제 한글 문자의 식자는 더이상 +문제가 되지 않는다. +그러나 한글 문서다운 한글 문서, 한글 문서의 타이포그래피의 완성을 +위한 길은 아직도 요원하다. 단순히 “글자를 찍는” 문제가 해결되었다고 +해서 모든 일이 끝난 것은 아닌 것이다. 단지 더 생산적인 문제를 +더 잘 구현할 수 있는 바탕이 갖추어진 것일 뿐이라고 생각한다. + + +\section{변경 이력} + +2020년의 2.2 버전은 그 동안 알려진 몇 가지 버그를 수정하고 약간의 기능을 +추가하는 데 그쳤다. + +% \section{알려진 문제점} + +% 아래 문제점과 버그들은 다음 버전에서 해결하도록 노력할 것이다. + +% \begin{enumerate}[(가)] \tightlist +% % \item ExternalLocation 옵션을 활성화하는 설정과 그렇지 않은 설정을 함께 쓸 때 +% % ExternalLocation 명령이 순서상 먼저 나와야 한다. + +% \item 윈도우즈 폰트 네임과 다른 리눅스 및 매킨토시의 폰트 이름 호출이 +% 실패하는 경우가 있다. 다행히 은 글꼴의 경우는 문제없으나, 은 글꼴은 반드시 +% 최신 버전이어야 한다. 우분투 등의 리눅스에서 패키지로 설치해주는 기본 설치 +% 글꼴은 때로 문제를 일으킨다. 이것은 저자가 어찌해볼 수 있는 문제가 아니다. +% \end{enumerate} + +% 한글 기호 문자 일부는 한자 영역에 배정하였다. 한자가 없는 한글 글꼴을 +% 본문 기본 서체로 지정하는 경우를 위한 것이다. 그러나 이 문제는 아직 +% 확정된 것이 아니며 좀더 테스트를 거쳐서 결정할 일로 보인다. + +%%\section{이 문서의 폰트 사용 설정} +%% +%%이 문서의 폰트 사용 설정은 다음과 같다. +%%\begin{boxedverbatim} +%%\setmainfont[Mapping=tex-text]{Bradley Hand ITC} +%%\setmonofont[Scale=.85]{Consolas} +%%\setkormainfont(문화 궁서 Std L){문화 궁서 흐림 Std L}(){네이버사전} +%%\setkormonofont{은 필기} +%%\setmonoscale{0.9} +%%\end{boxedverbatim} + +%%%\section{버전 인포}\myLabel{sec:versioninfo}{sec:버전인포} +%%% +%%%\begin{enumerate}\tightlist +%%%\item 이 초간단 매뉴얼은 xoblivoir 2011/09/15 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2010/02/10 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/12/03 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/11/24 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/11/09 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/23 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/22 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/12 버전에 일치한다. +%%%\item 이 초간단 매뉴얼은 xoblivoir 2008/10/11 버전에 일치한다. +%%%\end{enumerate} +%%% +%%%%%% 한자 테스트 +%%%이 매뉴얼은 Notepad++로 編輯하였다. 다 좋은데 Notepad++의 +%%%KCmenu plug\-in에 xelatex 實行 命令 短縮키가 없어서 不便했다. +%%%그러던 것이 최근 새로운 단축키가 생김으로써 훨씬 편하게 작업할 +%%%수 있게 되었다. +%%% +%%%%이 글을 더 줄인 \bnm*{極超簡單 매뉴얼}을 究想中이다. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex new file mode 100644 index 00000000000..58952054f1c --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex @@ -0,0 +1,1339 @@ +%!TEX encoding = UTF-8 Unicode +% arara: xelatex +% arara: texindy: { language: Korean, codepage: utf8 } +% arara: xelatex +%% +%% 이 파일은 oblivoir 패키지 문서의 일부로서, oblivoir 클래스의 여러 기능을 +%% 테스트하기 위한 목적으로 제공합니다. 일부 기능은 테스트 목적으로 과장되어 있습니다. +%% pdflatex, xelatex, lualatex으로 컴파일할 수 있습니다. (결과의 완전한 동일성은 +%% 보장하지 못합니다.) +%% +%% 2020/02/05. +%% 2015/04/22. memoir url 수정 +%% 2014/06/15. 부분 수정. +%% 2013/09/28. xoblivoir ver2 버전으로 포팅. +%% 2010/03/17. xoblivoir 버전으로 포팅 +%% +%% oblivoir 2.0.1 테스트 파일 +%% Written by 도은이아빠. +%% public domain. +%% + +\documentclass[demo,chapter,openany,amsmath,gremph,lwarp]{oblivoir} +%%% amsmath 옵션은 amsmath, amssymb 패키지를 로드해준다.. + +%% display overfullrule +%\setlength\overfullrule{5pt} + +%% 페이지 레이아웃. fapapersize를 이용한다.. +\usepackage{fapapersize} +\usefapapersize{220mm,276mm,20mm,80mm,30mm,35mm} + +% 폰트 설정 +\ifPDFTeX + \usepackage{mathpazo} +\else\ifLuaOrXeTeX + \setmainfont{TeX Gyre Pagella} + \setsansfont[Scale=.95]{TeX Gyre Heros} +%% \setkomain/sansfont : see oblivoir-simpledoc. + \setkomainfont(HCRBatangLVT)(*-Bold)(UnGraphic) + \setkosansfont[NanumGothic]()[](HCRDotumLVT) +%% 수학 폰트 +% \usepackage{unicode-math} +% \setmathfont{Asana-Math.otf} +\fi\fi + +\ifLuaTeX +\def\interHANGUL{InterHangul} +\else\ifXeTeX +\def\interHANGUL{interhchar} +\fi\fi + +%% logos +\usepackage{kotex-logo} +%% index for \koTeX +%\let\ORIGkoTeX \koTeX +%\def\koTeX{\ORIGkoTeX\index{ko.TeX}} + +%%% marginfix +%\usepackage{marginfix} + +%% 좌우 마진의 marginpar 위치가 혼선을 보인다면 +%% 다음을 선언한다. +\strictpagecheck + +\usepackage{cite} + +%\ifPDFTeX +\usepackage{graphicx} +%\fi +%% pdf 정보 +\makeatletter +\if@lwarp +\usepackage{xcolor} +\def\epigraph#1#2{#1\quad #2} +\else +\usepackage[dvipsnames]{xcolor} +\hypersetup{% + bookmarks=true,% + plainpages=false,% + colorlinks=true,% + pdfauthor={Karnes Kim},% + pdfcreator={Karnes Kim} +} +\fi +\makeatother + +\nonfrenchspacing +%% nonfrench를 설정하는 경우에는 \xspaceskip도 정해주자. +%% 여기서는 눈에 띄도록 이 길이를 넉넉하게 잡았음. +%% 일반적으로 .6 내지 .7 정도를 권장함. +\xspaceskip=.8em plus .1em minus .1em + +%% 이 아래 명령들은 본문에서 바꿀 수 있다. +%% 행간설정. 두번째 인자는 fn/float에 적용되는 행간. +\SetHangulspace{1.5}{1.1} +%% quotespacing을 설정함. \noadjustqutespacing이 default. \adjustquotespacing +%\adjustquotespacing +%% float/fn의 좁은 행간 설정을 disable. \adjustfloatfnspacing +\noadjustfloatfnspacing + +%% snugshade 환경에 칠할 배경색. +\definecolor{shadecolor}{gray}{0.85} + +%%% from memman.tex. modified. +%% 본문에서 한 번 사용하기 위해 설정한 chapter +%% style 예제. 이 예제는 memman에 있다. +%% 한글판을 위하여 조금 수정함. +\makeatletter +\newlength{\numberheight} +\newlength{\barlength} +\makechapterstyle{veelo}{% + \setlength{\beforechapskip}{40pt} + \setlength{\midchapskip}{25pt} + \setlength{\afterchapskip}{40pt} + \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright} + \renewcommand{\chapnumfont}{\normalfont\HUGE} + \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright} + \renewcommand{\printchaptername}{}% + \renewcommand{\prechapternum}{% <= 이 명령을 정의. + \chapnamefont\MakeUppercase{chapter}} + \renewcommand{\postchapternum}{}% <= 이 명령을 정의. 여기서는 비움. + \renewcommand{\chapternamenum}{} + \setlength{\numberheight}{18mm} + \setlength{\barlength}{\paperwidth} + \addtolength{\barlength}{-\textwidth} + \addtolength{\barlength}{-\spinemargin} + \renewcommand{\printchapternum}{% + \makebox[0pt][l]{% + \hspace{.8em}% + \resizebox{!}{\numberheight}{\chapnumfont \thechapter}% + \hspace{.8em}% + \rule{\barlength}{\numberheight} + } + } + \makeoddfoot{plain}{}{}{\thepage} +} + +\makechapterstyle{mycompanion}{% + \chapterstyle{default} + \renewcommand*{\chapnamefont}{\normalfont\LARGE\scshape} + \renewcommand*{\printchaptername}{\raggedleft\chapnamefont \@chapapp} + \renewcommand*{\prechapternum}{\raggedleft\chapnamefont \pre@chapter} + \renewcommand*{\chapnumfont}{\normalfont\Huge} + \setlength{\chapindent}{\marginparsep} + \renewcommand*{\printchaptertitle}[1]{% + \begin{adjustwidth}{}{-\chapindent} + \raggedleft \chaptitlefont ##1\par\nobreak + \end{adjustwidth}}} + +\makeatother + +%%% User's commands +%% 사용자 명령들. 인덱스 관련 명령. +\newcommand\dispcmd[1]{% + \texttt{\textbackslash #1}% + \index{명령!\textbackslash #1}% + \index{#1@\textbackslash #1}% +} + +\newcommand\cls[1]{% + \texttt{#1}\ 클래스% + \index{클래스!#1}% + \index{#1~클래스}% +} + +\newcommand\pkg[1]{% + \texttt{#1}\ 패키지% + \index{패키지!#1}% + \index{#1~패키지}% +} + +\newcommand\thisclass{% + \texttt{memoir}\ 클래스% + \index{클래스!memoir}% + \index{memoir~클래스}% +} + +\newcommand\env[1]{% + \textsf{#1} 환경% + \index{환경!#1}% + \index{#1~환경}% +} + +\newcommand\wi[2][\empty]{% + \ifx#1\empty + \index{#2}#2% + \else + \index{#1!#2}#2% + \fi +} + +%% showcommand/showenv 명령. +%% 만약 command/env 보여주기를 끄려면 +%% \showcommandfalse를 선언한다. +\makeatletter +\newif\if@showcommand\@showcommandtrue +\newcommand\showcommandtrue{\@showcommandtrue} +\newcommand\showcommandfalse{\@showcommandfalse} + +\strictpagechecktrue + +\newcommand\showcommand[1]{% + \if@showcommand + \checkoddpage\ifoddpage + \marginpar{\small\texttt{\textbackslash #1}}% + \else + \marginpar{\hfill\small\texttt{\textbackslash #1}}% + \fi + \fi +} + +\newcommand\showenv[1]{% + \if@showcommand + \checkoddpage\ifoddpage + \marginpar{\small\textit{#1}(env.)}% + \else + \marginpar{\hfill\small\textit{#1}(env.)}% + \fi + \fi +} +\makeatother + +%% MakeShortVerb +\MakeShortVerb{\|} +% \DeleteShortVerb{\|} + +%% 인덱스의 hyperpage 처리를 위해서 +\newcommand\bfhypidx[1]{% + \textbf{\hyperpage{#1}}% +} + +%% replace \bigskip +\newcommand\alineskip{% + \vspace{\onelineskip}% +} + +%% showindexmark +%% 여백을 충분히 확보하고 다음 행을 +%% 활성화해볼 것. +%\showindexmarktrue + +%% index를 만든다. +\makeindex + +%% newlist +%% 새로운 리스트를 만드는 것이 정말 너무나 간단하다. +\newcommand\queryfont{\raggedleft\sffamily\small} +\newcommand\listofqueriesname{Queries~목록} +\newlistof{listofqueries}{loq}{\listofqueriesname} +\newlistentry{query}{loq}{0} +\newcommand{\query}[2][\empty]{% + \refstepcounter{query} + \par\noindent\fbox{Q?}~\begingroup\queryfont #2\endgroup% + \addcontentsline{loq}{query}{\protect\numberline{\thequery}#2}\par + \ifx#1\empty\else\index{Query!#1}\fi +} + +%% title page +\newcommand\MakeTitle{% + \begin{titlingpage} + \setcounter{page}{-1}% + \begin{adjustwidth*}{0mm}{-55mm} + \newlength\tmplen\setlength\tmplen{\textwidth}\addtolength\tmplen{60mm} + \fbox{% + \begin{minipage}{\tmplen} + \vspace*{90mm} + \begin{center} + \LARGE\bfseries\thetitle \\ \vskip\onelineskip + \normalfont\normalsize\theauthor + \end{center} + \vspace*{100mm} + \end{minipage}} + \end{adjustwidth*} + \end{titlingpage} +} + +%% 각주. footmisc는 memoir와 함께 쓸 수 있다. +%% 참고. [bottom] footnote를 위해서라면 +%% 다음과 같이 할 것을 권장함. raggedbottom에서 동작함. +%\renewcommand*{\footnoterule}{\kern-3pt\vfill +% \hrule width 0.4\columnwidth \kern 2.6pt} +%% 각주를 floats 아래 두는 memoir 명령. +\feetbelowfloat + +%% 밑줄. +\ifLuaTeX\else +\usepackage[normalem]{ulem} +\fi + +%% 사소한 설정 +\def\util#1{\texttt{#1}\index{Utility!#1}} + +%%% +%\headnamereftrue + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%% 이제 문서를 시작. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\title{memoir에서 한글을 쓰자!} +\author{도은이아빠} +\date{\today} + +%% 아래 \MakeTitle 명령은 이 문서의 preamble에 +%% 정의되어 있다. 표지 디자인은 이 정의를 참고하여 +%% 수정하여 볼 것. +\MakeTitle +\cleardoublepage + +\frontmatter +% ToC, etc +%% 차례 페이지들. 여기서는 demo chapter style과 +%% Ruled 페이지 스타일을 적용한다. +\chapterstyle{demo} + +\tableofcontents +%\clearpage +\listoffigures +%\clearpage +\listoftables +%% listofqueries는 \newlistof로 만든 +%% local \listofx임. +%\clearpage +\listofqueries + +\mainmatter + +%% hangul 페이지 스타일을 테스트하기 +%% 위하여 제1편 앞에 한 챕터를 둠. 다만 chapter의 첫 면은 +%% chapter 페이지 스타일을 따른다. +\pagestyle{hangul} + +\chapterstyle{default} + +\chapter{xoblivoir} + +이 문서는 xoblivoir의 몇 가지 기능을 시험하기 위한 목적으로 +작성되었다. 이 문서의 원본은 memhangul을 개발하던 당시 +테스트용으로 사용된 바, 가장 먼저 만들어진 oblivoir 문서이다. + +현재는 |oblivoir|와 |xoblivoir|가 사실상 동일하다. 그러므로 이 글에서 +|xoblivoir|라 한 것은 모두 |oblivoir|로 바꾸어도 된다. + +해당 문단의 여백에 사용되고 있는 명령이 나와 있으므로 참고할 수 있을 +것이다. 실제로 xoblivoir 사용설명서를 작성하기 어려운 것이 +기본적인 것은 모두 memoir에 바탕을 두고 있는 데다가 +한글화하면서 변화한 점도 많아서 이것을 모두 모으면 너무나 방대한 +내용이 된다는 점이다. + +이 문서의 원본을 잘 연구하면 그럭저럭 oblivoir가 어떻게 동작하는지 +짐작할 수 있게 되기를 희망한다. + +이 문서는 다음 순서로 컴파일할 수 있다. |$ENGINE|은 \util{pdflatex}, \util{xelatex}, \util{lualatex} 가운데 하나이고 +|$JOBNAME|은 파일 이름(\texttt{xobtesttest})이다. +한편, 색인을 만드는 유틸리티 |$MAKEINDEXENGINE|은 \util{pdflatex} 상황에서는 +\util{komkindex}이고 그밖의 경우에는 \util{texindy}이다. + +\begin{verbatim} + # $ENGINE $JOBNAME + # $ENGINE $JOBNAME + # $MAKEINDEXENGINE $JOBNAME.idx + # $ENGINE $JOBNAME +\end{verbatim} + + + +\chapter{default 페이지 스타일} + +\section{맹동야를 보내는 글} +\epigraph{한유 글, \cnm{送孟東野序}}{김학주 옮김} + +대개 만물은 평정을 얻지 못하면 소리를 내게 된다. +초목은 소리가 없으나 바람이 흔들면 소리를 내게 되며, 물은 소리가 없으나 바람이 +움직이면 소리를 내게 된다. 물이 뛰어오르는 것은 바위같은 곳에 부칮쳤기 +때문이다. 물이 세차게 끓어오르는 것은 한 곳에서 물결을 막기 때문이다. +물이 펄펄 끓어오르는 것은 불로 태우기 때문이다. 쇠나 돌은 소리가 없으나 +치면 소리를 낸다. 사람이 말하는 데 있어서도 이와 같으니, +부득이한 일이 있은 후에야 말을 하게 된다. 노래를 하는 것은 생각이 +있기 때문이며, 우는 것은 회포가 있기 때문이다. + +음악이라는 것은 가슴속이 막혀 답답할 때 밖으로 새어나오는 것이며 +소리를 잘 내는 것을 선택하여 이것을 빌려서 소리를 내게 된다. +쇠\cntrdot 돌\cntrdot 실\cntrdot 대\cntrdot 박\cntrdot 흙\cntrdot +가죽\cntrdot 나무 등 여덟 가지 악기를 만드는 데 쓰이는 자료들은 만물 +가운데 소리를 잘 내는 것들이다. + +자연의 계절에 있어서도 역시 그러하니 소리를 잘 내는 것을 선택하여 그것을 +빌려서 소리를 내게 된다. 그러므로 새를 빌려 봄의 소리를 내고, 우뢰를 +빌려 여름의 소리를 내고, 벌레를 빌어 가을의 소리를 내며, +바람을 빌어 겨울의 소리를 낸다. 사계절이 서로 바뀌어 나타나는 현상은 +반드시 그 평정을 얻지 못했기 때문일 것이다. + +이는 사람에게 있어서도 마찬가지이다. 사람의 소리 가운데 정묘한 것이 언어이며 +문장의 표현은 언어 가운데서도 더욱 정묘한 것이다. 그 중에서도 더욱 소리를 +잘 내는 것을 선택하여 이것을 빌려서 소리를 내게 된다. + +당요\cntrdot 우순 시대에는 고요와 우가 소리를 잘 내는 사람들이어서 +그들을 빌려 소리를 냈다. 기는 문사로써 소리를 내지는 못했으나 +스스로 소를 빌려서 소리를 냈다. 하나라 때에는 오자가 노래를 불러 소리를 +냈다. 이윤은 은나라에서 소리를 냈고 주공은 주나라에서 소리를 냈다. + +무릇 \snm{시}\cntrdot \snm{서} 등 육예에 실린 것들은 모두 소리를 +잘 낸 것들이다. 주나라가 쇠퇴해지자 공자의 무리들이 소리를 냈는데 +그 소리를 크게 멀리 들렸다. 옛 서적에 ``하늘이 장차 선생을 목탁으로 +삼으려 하는구나!''\,라고 하였는데도 믿지 못하겠는가! + +주나라 말엽에 이르러서는 장주가 황당한 문사로써 초나라에서 +소리를 냈다. 초나라를 큰나라였는데 망할 무렵이 되어 굴원이 소리를 냈다. +장손진\cntrdot 맹가\cntrdot 순경은 도로써 소리를 낸 자들이고, +양주\cntrdot 묵적\cntrdot 관이오\cntrdot 안영\cntrdot 노담\cntrdot 신불해\cntrdot +한비\cntrdot 신도\cntrdot 전연\cntrdot 추연\cntrdot 시교\cntrdot 손무\cntrdot +장의\cntrdot 소진의 무리들은 모두 술법으로써 소리를 냈다. + +진나라가 융성하자 이사가 소리를 냈으며 한나라 때에는 사마천\cntrdot 사마상여\cntrdot +양응이 가장 소리를 잘 낸 자들이다. + +그 후 위\cntrdot 진 시대에는 소리를 내는 자들이 옛날 사람들에 미치지 못했지만 +또한 아직 끊이지는 않았었다. 그 가운데 괜찮은 것들도 그 소리는 맑지만 +경박하고 그 음절은 빠르고 급하며 그 문사는 음란하고 슬프며 +그 뜻은 느슨하고도 방자하며 그 표현은 난잡하고 문채가 없었으니 +하늘이 그 덕을 추하게 여겨 돌보지 않은 때문이었는가? 무엇 때문에 +소리를 잘 내는 자들로 하여금 소리를 내게 하지 않았는가! + +당(唐)나라가 천하를 장악하고나서는 진자앙\cntrdot 소원명\cntrdot 원결\cntrdot +이백\cntrdot 두보\cntrdot 이관 등이 모두 자신의 잘하는 것으로써 소리를 내었다. + +현재 살아 있으면서 아랫자리에 있는 사람으로 동야 맹교가 비로소 시로써 +소리를 내었다. 그는 위\cntrdot 진 시대 사람들보다 훨씬 뛰어나며 +게을리하지 않으면 옛사람들의 수준에 미칠 수 있겠고 +그밖의 작품들은 한나라의 문풍에 젖어 있다. 나에게서 배운 자들로서 +이고와 장적이 가장 뛰어나다. 이 세 사람의 소리는 진실로 훌륭하다. + +그런데 하늘이 장차 그들의 소리를 온화하게 하여 국가의 성대함을 소리내게 +할 것인지 아니면 장차 그들 자신을 가난하고 굶주리게 하고 +그들의 마음을 근심스럽게 하여 그 불행을 스스로 소리내게 할 것인지 모르겠다. +이 세 사람의 운명은 하늘에 달려 있는 것이니 윗자리에 있다고 해서 어찌 +기뻐하겠으며 아랫자리에 있다고 해서 어찌 슬퍼하겠는가. + +동야가 강남에 근무하러 떠나면서 즐거워하지 않는 것 같아서 내가 그의 +운명이 하늘에 달려 있다고 말하며 이를 풀어주려고 하는 것이다. + +%% 본문시작. +%% 본문은 companion chapter style로 식자할 것인데, +%% default를 한 번 부른 이유는 앞서 사용한 demo의 +%% 글꼴 설정에 영향을 받기 때문이다. + +\part{xoblivoir 테스트} + +\chapterstyle{mycompanion} +\pagestyle{companion} + +%% 제목은 두 줄로 식자하되, heading과 toc에는 개행 없이. +% \chapter[memoir 클래스에서 한글을 쓰자][memoir 클래스에서...]{memoir +% 클래스에서\\ 한글을 쓰자} % -> [toc][heading]{title} +% \chapter[memoir 클래스에서 한글을 쓰자]{memoir 클래스에서\\ 한글을 +% 쓰자} % -> [toc,heading]{title} %% 이 부분이 memoir와 다르다. +% \chapter{memoir 클래스에서 한글을 쓰자} % {toc,heading,title} +% \chapter[memoir 클래스에서 한글을 쓰자][memoir 클래스에서 +% 한글...]{memoir 클래스에서\\ 한글을 쓰자} +% \chapter[memoir 클래스에서 한글...]{memoir 클래스에서\\ 한글을 쓰자} +% 주의: titleref에 \\ 문자가 들어가면 안된다. titleref에서 사용하는 +% 것은 두번째 옵션인자이므로, 다음과 같이 두번째 옵션 인자를 밝혀줄 +% 것. +\chapter[memoir 클래스에서 한글...][memoir 클래스에서 한글을 쓰자]{% + memoir 클래스에서\\ 한글을 쓰자} +\label{sec:firstchap} + +\chapterprecis{\noindent 이 장에서는 memoir 클래스에 대해 간략히 + 소개하고 한글화에 대하여 개관한다.} + +\showcommand{chapterprecis}\showcommand{chapterstyle}\showcommand{pagestyle} +\thisclass\는 Peter Wilson 씨가 작성한 \LaTeX\ 클래스이다. \LaTeX 이 제공하는 +표준 클래스\index{표준~클래스|bfhypidx}는 \cls{book}, \cls{report}, \cls{article}, \cls{letter} +등이 있지만, 어딘가 모르게 세세한 부분에서 부족한 점이 있어서 수많은 추가 패키지를 +사용해야 원하는 문서 모양을 구현할 수 있는 경우가 많았다. \thisclass\는 그 동안 개발된 +문서 조판의 세세한 부분을 하나의 클래스로 통합한 것으로, 사용자 입장에서는 +정말 획기적인 환상적인 클래스가 아닐 수 없다. 매우 많은 패키지들을 이 +클래스는 통합\cntrdot 내장하거나 그와 유사한 기능을 제공한다. +이 패키지의 결점은, 한번 사용하기 시작하면 다시는 book과 같은 +표준 클래스로 돌아가기 어렵다는 점이다. + +EUC-KR\index{한글!EUC-KR|bfhypidx} 한글을 \thisclass 에서 사용하도록 만들었던 것이 +\pkg{memhangul}였다. +이제 여기서 제공하는 클래스는 본질적으로 \pkg{memhangul}\과 동일하지만 +한글을 UTF-8 유니코드로 입력할 수 있게 만든 것이다. \wi[유니코드]{유니코드 한글}을 +처리하기 위해서 \pkg{dhucs}\를 채택하였다. +\query[유니코드]{유니코드 한글 처리} + +\alineskip + +\hangfrom{한글 }사용을 위해서 H\LaTeX 을 채택한 결과는 어느 정도 +괜찮은 결과를 가져왔다. 그러나 \pkg{dhucs}\를 이용하여 구현한 \pkg{memhangul-ucs}\는 +괜찮은 정도가 아니라 아주 훌륭한 결과를 얻게 되었다. + +\showcommand{hangpara}\showcommand{hangfrom}% +\hangpara{2.6em}{2}% +{\SetAdhocFonts{unpg}{ungt}\showcommand{SetAdhocFonts}% +유니코드 한글 입력이 가능하도록 하는 것은 \pkg{dhucs}에서였다. 이것은 +\LaTeX-ucs 패키지와 한글 자동조사 및 한글 문서서식을 합친 것인데, +핵심적인 한글 식자와 자동조사의 구현은 김도현 교수가 작성하였다. +필자는 사용자 인터페이스를 조금 추가하고 한글 문서서식을 보충하는 +정도로 미미한 기여를 하였다.} + +이 패키지의 장점은 대강 다음과 같다. +\tightlists\showcommand{tightlists} +\begin{itemize} + +\item 유니코드를 쓴다는 것 자체가 장점이다. EUC-KR 한글의 범위를 +넘어서서 맞춤법에는 어긋나지만 꼭 써야할 경우가 없지 않은 ``띡''과 같은 +완성형 밖 글자를 식자할 수 있다.\footnote{% + 중세 한글 문제는 코드와 폰트의 문제가 얽혀 있어서 + 여기에서는 다루지 않는다.} + +\item 절에 \wi{한글식 절카운터 모양}(section counter format), \dispcmd{pgana} 등을 +사용하는 것이 쉽다. + +\item \wi{자동조사} 기능이 구현되어 있다. + +\item 주요 pagestyle과 chapterstyle이 \wi{한글}과 호환되게 하였다. 이호재 님의 +말씀에 의하면, \thisclass 는 여러 가지 면에서 매우 편리하다고 한다. + +\item 인덱스 만들기가 구현되었다. + +\item \thisclass 의 여러 기능을 그대로 쓸 수 있다. + +\end{itemize} + +\section{이 문서의 컴파일 방법} + +다음과 같은 순서로 컴파일한다. + +\bvtopandtail\showcommand{bvtopandtail}\showenv{boxedverbatim} +\begin{boxedverbatim} +#> latex memucstest +#> latex memucstest +#> makeindex-dhucs -s dhucs memucstest +#> latex memucstest +\end{boxedverbatim} + +|makeindex(-dhucs)|에 앞서서 |latex|을 두 번 실행하는 이유는, +memoir 패키지의 인덱스 만들기의 특징 때문이다. 처음 한 번만 실행해서는 +|.idx| 파일이 만들어지지 않는다. + +\section{chapter 스타일} + +\showcommand{prechapternum}\showcommand{postchapternum} +사용자가 자신의 |chapterstyle|을 정의(定義)할 때는 반드시 +\dispcmd{prechapternum}과 \dispcmd{postchapternum}을 함께 정의해주도록 한다. +그림~\ref{fig:examchapstyle}\은 |hangnum| chapter style을 +정의하는 방법을 보여준다. +\begin{figure} +%% 웬만한 환경은 memoir에 다 있다.!!! +\begin{boxedverbatim} +\makechapterstyle{hangnum}{% + \renewcommand{\chapnumfont}{\chaptitlefont} + \settowidth{\chapindent}{\chapnumfont 999} +% \renewcommand{\printchaptername}{} % <= 쓰지 않음. + \renewcommand{\prechapternum}{} % <= 이 행을 정의 + \renewcommand{\chapternamenum}{} + \renewcommand{\postchapternum}{}% <= 이 행을 정의 + \renewcommand{\printchapternum}{% + \noindent\llap{\makebox[\chapindent][l]{\chapnumfont + \thechapter}}} + \renewcommand{\afterchapternum}{} +} +\end{boxedverbatim} +\caption{chapterstyle 정의 예제}\label{fig:examchapstyle} +\end{figure} + +장 스타일을 수정하는 구체적인 예는 |memman.tex|\cite{memman}에서 +가져온 |veelo| chapter style의 정의를 참조하라. 이 문서의 +소스 Preamble에 있다. 예제는 \Cref{sec:math} \titleref{sec:math}\을 보라. +%% disable \nameref +\textbf{\nameref{sec:appchap}}\를 보라. + +\textbf{\titleref{sec:appchap}}\를 보라. \pref{sec:appchap}\을, +\ref{sec:appchap}\을, \Cref{sec:appchap}\을 +\Sref{sec:appsec}\가, \ref{sec:appsec}\가, \titleref{sec:appsec}\가. +\titleref{sec:appsec}\을. +\showcommand{Cref}\showcommand{ref}\showcommand{pageref}\showcommand{titleref} +%% \Cref 명령으로 식자되는 결과를 주의깊게 보라. + +\section{시집}\label{sec:poembook} + +\wi{어머님}이 \wi{수술} 후에 거동이 불편해지신 후, 집에만 +계시는 것이 무척 \wi{무료}하신 듯하다. 예전에 내가 보던 +\wi{시집}을 꺼내 보고 계시다. \showcommand{titleref}\showcommand{Sref}% +\Sref{sec:poembook} \textit{\titleref{sec:poembook}}\는 +텍스트 입력의 예제이다. + +%% memoir는 poem 스타일을 자체 내장하고 있다. +%% plain poem title을 선언함. +\PlainPoemTitle\showcommand{PoemTitle}\showcommand{PlainPoemTitle} +\showenv{snugshade}\showcommand{poemtitle}\showenv{verse} +\begin{snugshade} +\renewcommand\poemtoc{subsection} +\settocdepth{subsection} +\poemtitle{신안리에서} +\settowidth{\versewidth}{\hbox{사람들은 굳이 한 마디 말 하려 하지 않는다.}} +\ifpdf\begin{verse}\else\begin{verse}[\versewidth]\fi + +실개천 너머 나 있는 샛길로\\ +택시가 들어오고 나가며 \\ +겨르로운 달빛에 감출 부끄러움도 없는\\ +사람들은 굳이 한 마디 말 하려 하지 않는다.\\! + +나는 톱밥 같은 달빛을 한 웅큼\\ +멀리 철길 쪽으로 뿌렸다.\\ +매달린 불빛보다\\ +아침이 먼저 깨어나는 광경을 보며.\\ +삶은 새의 낮은 날음새 같은 것,\\ +이대로 누워 잠들기\\ +두렵지 않은 작은 마을에\\ +더 작은 풀꽃 인사한다.\\ +잊혀짐 너머 안부 묻는다.\\ +\end{verse} +\end{snugshade} + +이 스타일은 \pkg{memucs-setspace}\를 이용한다. 이 패키지는\footnote{ + 이 스타일은 \pkg{setspace}\를 수정한 것이다. + \env{verse}, \env{quote}\와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 + 기능이 있다.} +verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 +기능이 있다. 이 부분에서 \dispcmd{adjustfloatfnspacing}을 불러보겠다. +\showcommand{adjustfloatfnspacing}% +다음번 각주는 행간이 조금 달라져야 한다. +\adjustfloatfnspacing +float 안에 놓인 것과 같아지도록.\footnote{% +이 스타일은 \pkg{setspace}\를 수정한 것이다. +verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 +기능이 있다.} + +\showcommand{noadjustquotespacing}\showcommand{adjustquotespacing} +이 아래는 본문 중에서 \dispcmd{noadjustquotespacing}과 \dispcmd{adjustquotespacing}을 +불렀을 때 \env{quote} 안에서 행간이 어떻게 변하는지 보여준다. +기본값은 \dispcmd{noadjustquotespacing}이다. + +\begin{quote} +이 스타일은 \pkg{setspace}\를 수정한 것이다. +verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 +기능이 있다. 마치 float 안에 놓인 것과 같이. +\end{quote} + +여기서 \dispcmd{adjustquotespacing}을 호출함. + +\adjustquotespacing +\begin{quote} +이 스타일은 \pkg{setspace}\를 이용한다. 이 패키지는 +verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 +기능이 있다. 마치 float 안에 놓인 것과 같이. +\end{quote} + +verse류 환경의 행간은 quote를 따른다. 앞서 보인 시를 여기에서 +다시 식자해보자. +\begin{snugshade} +\renewcommand\poemtoc{subsection} +\settocdepth{subsection} +\PoemTitle{신안리에서} +\settowidth\versewidth{사람들은 굳이 한 마디 말 하려 하지 않는다.} +\ifpdf\begin{verse}\else\begin{verse}[\versewidth]\fi + +실개천 너머 나 있는 샛길로\\ +택시가 들어오고 나가며 \\ +겨르로운 달빛에 감출 부끄러움도 없는\\ +사람들은 굳이 한 마디 말 하려 하지 않는다.\\! + +나는 톱밥 같은 달빛을 한 웅큼\\ +멀리 철길 쪽으로 뿌렸다.\\ +매달린 불빛보다\\ +아침이 먼저 깨어나는 광경을 보며.\\ +삶은 새의 낮은 날음새 같은 것,\\ +이대로 누워 잠들기\\ +두렵지 않은 작은 마을에\\ +더 작은 풀꽃 인사한다.\\ +잊혀짐 너머 안부 묻는다.\\ +\end{verse} +\end{snugshade} + +여기서 다시 \dispcmd{noadjustquotespacing}을 선언함. + +\noadjustquotespacing +\begin{quote} +이 스타일은 \pkg{setspace}\를 이용한다. 이 패키지는 +verse, quote와 같은 환경을 조금 바꾸어서 행간을 약간 줄여주는 +기능이 있다. 마치 float 안에 놓인 것과 같이. +\end{quote} + +\section{강조} + +강조를 구현하는 데는 여러 가지 방법이 있다. 서구 문헌의 +경우 이탤릭체를 사용하는 것이 일반적이고, 예전의 독일 문헌에서는 +자간을 띄우는 강조 방법을 사용한 적도 있다고 한다. + +우리말 문헌은 일관되어 있지 않다. + +\subsection{방점 강조} + +예를 들면 \circemph{방점 강조} 방법을 사용하는 것이 가능하다. +\wi[강조]{방점 강조}는 \dotemph{한글 맞춤법}의 문장부호 조항에서 규정하고 있는 방법이기도 +하다.\showcommand{circemph}\showcommand{dotemph} +맨처음에 이 명령은 H\LaTeX\ 1.01에서 구현된 것이었는데, +그 후 +\useremph[.3ex][\tiny★]{발전을 거듭하여} +현재에 이르렀다. +\showcommand{useremph} + +\subsection{기울인 글꼴 또는 글꼴 대체} + +\ifPDFTeX \ungremph \fi +H\LaTeX{}에서는 {\itshape\wi[강조]{기울인 글꼴}}을 쓰는 방법을 오랫동안 사용해왔다. +그러나 실제로 출판되는 서적에서는 \wi[강조]{글꼴 대체} 방법을 사용하는 +경우가 많다. + +\ifPDFTeX \begingroup + \regremph + |gremph| 옵션은 다음과 같은 효과를 낸다. \emph{gremph 옵션}. + \ungremph + 이번에는 이것을 disable한다. \emph{gremph 옵션}. + + |\bfemtrue|와 |\bfemfalse|는 그래픽 글꼴 대신 + 은바탕 굵은 글꼴로 식자하게 한다. 또, |\SetGremphFonts| + 명령으로 직접 폰트를 지정할 수 있다.\showcommand{regremph} \showcommand{ungremph} + \showcommand{SetGremphFonts}\showcommand{bfemtrue, \textbackslash bfemfalse} + 다만 |\SetGremphFonts| 명령은 preamble에서만 쓸 수 있다. +\endgroup \else\ifLuaOrXeTeX \begingroup + \hologo{LuaLaTeX}이나 \hologo{XeLaTeX}을 쓰는 경우, + 강조 글꼴의 선택은 폰트 속성과 연계된다. 즉, \textit{Italic Font}로 + 지정된 글꼴이 강조 글꼴로 사용된다. + |[itemph]| 옵션은 이 부분의 글꼴을 기울어지게 만든다. +\endgroup \fi\fi + +\showcommand{MakeShortVerb} + +%% 한글 섹션 카운터 포맷을 가능하게 함. +\renewcommand\thesection{\pgana{section}} +\section{두번째 절} + +\epigraphtextposition{flushleftright} +\epigraph{% +나는 십대에 \wi{철학책}을 읽기 시작한 무렵부터 +거기에 언제나 이 `나(私)'가 빠져 있다고 느껴왔다.} +{\emph{탐구}\\ \textsf{\wi[인명]{카라타니 코진(柄谷行人)}}} + +\showcommand{pgana}\showcommand{epigraph} +\showcommand{epigraphtextposition} + +\wi{수학}에서는 어떤 공리계가 하나의 해석 모델에서는 참이지만 +다른 해석 모델에서는 거짓인 일이 있을 수 있다. +이것은 \wi{공리계}가 불충분한 경우이다. + +\renewcommand\thesection{\onum{section}} +\section{표} + +\showcommand{legend}\showcommand{onum} +\thisclass\는 다양한 표작성 환경을 제공한다. +\tref{tab:test}\과 \tref{tab:test2}\를 보라. +\showcommand{tref} + +%% tabular에는 legend를 붙일 수 있다. +\begin{table} +\caption{test table}\label{tab:test} +\centering +\begin{tabular}{cc} +\hline +두 줄 짜리 & 3 \\ +하단 제목 붙은 & 4 \\ +\hline +\end{tabular} +\legend{caption 아닌 소제목} +\end{table} + +\begin{table} +\caption{test table 2}\label{tab:test2} +\centering +\begin{tabular}{cc} +\hline \hline +두 줄 짜리 & 6 \\ \hline +하단 제목 안 붙은 & 5 \\ +\hline \hline +\end{tabular} +\end{table} + +(여기서 페이지를 나눈다. 페이지 나누기 명령으로는 +\dispcmd{cleartoverso}를 사용하겠다. 이것은 이 뒤에 새로 +시작하는 페이지가 짝수쪽(verso)이 되게 한다. \dispcmd{cleartorecto} +명령도 있다.) +\showcommand{cleartoverso}\cleartoverso + +\namesubappendixtrue +\begin{subappendices} +\addappheadtotoc +\section{자동조사 테스트} +\showcommand{namesubappendixtrue} +\showcommand{addappheadtotoc} +\showenv{subsppendices} + +간단한 \dispcmd{ref}-like 명령으로 \wi{자동조사}를 테스트한다. +\dispcmd{cite}도 잘 된다. + +\tref{tab:test}\와 \tref{tab:test2}\이 어떻게 보이나요? +그리고 \fref{fig:examchapstyle}\은 \pref{fig:examchapstyle}\로 +가면 볼 수 있어요. 페이지~\pref{fig:examchapstyle}\로 가보세요. +\showcommand{tref, \textbackslash fref}\showcommand{pref} + +위의 문장 입력: +\bvsides\showcommand{bvsides}\showenv{boxedverbatim} +\begin{boxedverbatim} +\tref{tab:test}\와 \tref{tab:test2}\이 어떻게 보이나요? +그리고 \fref{fig:examchapstyle}\은 +\pageref{fig:examchapstyle}\AltPageName\로 가면 볼 수 있어요. +페이지~\pageref{fig:examchapstyle}\로 가보세요. +\end{boxedverbatim} + +\section{그림 테스트} + +\newlength{\mylength} +\begin{figure} +\calccentering{\mylength} +\begin{adjustwidth*}{\mylength}{-\mylength} +\centering +\includegraphics[width=.6\textwidth]{doeun} +\caption{공부하는(?) 도은이}\label{doeunbike} +\end{adjustwidth*} +\end{figure} + +그림이 잘 들어가는지도 테스트해야 한다고 한다. \fref{doeunbike}\를 볼 것. +이 그림은 마진폭을 계산해서 편집영역의 중간이 아니라 페이지 전체의 +중간으로 가도록 \dispcmd{calccentering}을 이용했다.\showcommand{calccentering} +\showenv{adjustwidth*} +이 계산이 표준 \LaTeX\ 클래스에서 얼마나 귀찮은 것이었는지 상상할 수 +있겠는가? +\query{그림넣기} + +\begin{boxedverbatim} +\newlength{\mylength} +\begin{figure} +\calccentering{\mylength} +\begin{adjustwidth*}{\mylength}{-\mylength} +\centering +\includegraphics[width=.6\textwidth]{doeun} +\caption{공부하는(?) 도은이}\label{doeunbike} +\end{adjustwidth*} +\end{figure} +\end{boxedverbatim} + +\end{subappendices} + +%%% part 페이지를 깨끗하게... +\copypagestyle{part}{empty} + +%%%%%%%%%% Ruled를 사용하되 partmark를 정의함. +\copypagestyle{MyRuled}{Ruled} +\newlength{\MyRuledheadwidth} +\setlength{\MyRuledheadwidth}{\textwidth} +\addtolength{\MyRuledheadwidth}{\marginparsep} +\addtolength{\MyRuledheadwidth}{\marginparwidth} +\makerunningwidth{MyRuled}{\MyRuledheadwidth} +\makeheadrule{MyRuled}{\MyRuledheadwidth}{\normalrulethickness} +\makeheadposition{MyRuled}{flushright}{flushleft}{flushright}{flushleft} +\makeatletter +\makepsmarks{MyRuled}{% + \let\@mkboth\markboth + \def\partmark##1{\markboth{\hparttitlehead. ##1}{##1}} + \def\chaptermark##1{\markright{\hchaptertitlehead. ##1}} + \def\sectionmark##1{} +} +\def\partmark#1{\markboth{\hparttitlehead. #1}{#1}} +\makeatother + +%%% 제2장. 페이지 스타일과 챕터 스타일을 바꿈. +%%% 새로운 장에 새로운 스타일을 적용하려 할 때는, +%%% chapterstyle은 \chapter명령보다 먼저 부르고 \pagestyle은 +%%% \chapter보다 나중에 부르는 것이 좋다. + +\part{테스트는 즐거워} +\oblivoirchapterstyle{veelo} +\pagestyle{MyRuled} + +\chapter{수학질문상자}\label{sec:math} + +%% 절의 카운터를 \pnum으로. +\renewcommand\thesection{\pnum{section}} + +\showcommand{makepagestyle}\showcommand{copypagestyle} + +\section{자연로그의 밑} + +이 절은 \cite{Kentaro}\을 인용하였다. \env{singlespacing}\을 +사용하였다.\showenv{singlespacing} + +%\begin{singlespacing} +\[ +e^x =1+ \frac{x}{1!} + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots +\] +이라는 사실이 알려져 있다. 여기에서 $x=1$이라 하면, +\[ +e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!} +\cdots +\] +가 된다. + +우선 +\[ +\lim_{n\to\infty}\left(1+ \frac{1}{n}\right)^{n} = e +\] +에서 $1/n = h$라 두면, +\[ +\lim_{h\to 0}\left(1+h\right)^{\frac{1}{h}} = e +\] +라고 쓸 수 있다. $e$를 밑으로 하는 대수를 $\log$라고 표시하면, +\[ +\frac{\log(1+h)}{h} = \log(1+h)^{\frac{1}{h}} +\] +인데, 여기에서 $h \to \infty$이라면, +\[ +\lim_{h\to 0}\frac{\log(1+h)}{h} = \lim_{h\to 0}\log(1+h)^{\frac{1}{h}} =\log e. +\] + +따라서, +\[ +\log(1+h)=x, \quad\text{즉}\quad h=e^{x} -1 +\] +이다. 여기에서, +\[ +1=\lim_{h\to0}\frac{\log(1+h)}{h}=\lim_{x\to0}\frac{x}{e^x -1}. +\] + +따라서, +\[ +\lim_{x\to0}\frac{e^x -1}{x}=1 +\] +을 얻는다. 그런데 여기에서, +\[ +y=e^x +\] +의 도함수 $y'$를 구해본다. +\[ +y'=\lim_{h\to0}\frac{e^{x+h}-e^x}{h}=e^x \lim_{h\to0}\frac{e^h -1}{h}=e^x. +\] +따라서, +\[ +y=e^x \text{라면}, \qquad y'=e^x +\] +이다. + +또, $y=\log x$의 도함수를 구해본다. +%\begin{displaymath} +%\[ +\begin{align*} +y' &= \lim_{h\to0}\frac{\log(x+h)-\log x}{h} \\ + &= \lim_{h\to0}\frac{1}{h}\log\left(1+ \frac{h}{x}\right) \\ + &= \frac{1}{x}\lim_{h\to0}\frac{x}{h}\log\left(1+\frac{h}{x}\right) \\ + &= \frac{1}{x}\lim_{\frac{h}{x}\to0}\log\left(1+\frac{h}{x}\right)^{\frac{x}{h}} \\ + &= \frac{1}{x}\log e \\ + &= \frac{1}{x}. +\end{align*} +%\] +%\end{displaymath} + +따라서, +\[ +y=\log x \text{라면}, \qquad y'=\frac{1}{x}. +\] + +%\end{singlespacing} + +이와 같이 간단한 공식으로 얻어진 것은 대수의 밑으로 $e$를 썼기 +때문이다. $e$ 이외의 밑을 사용하면, 공식은 보다 복잡하게 된다. +이런 의미에서 $e$를 밑으로 하는 대수를 \emph{자연로그}라고 부른다.\showcommand{emph} +이상으로부터 상상할 수 있듯이, 미적분학과 같은 이론을 전개할 때는 +$e$를 밑으로 하는 대수를 사용하고, 실제의 수치계산에서는 +$10$을 밑으로 하는 상용로그를 사용한다. + +\fancybreak{* * *} + +$0 \le t \le 1$에 있어서, $f(t)$는 연속인 도함수 $f'(t)$를 가지고,\showcommand{fancybreak} +$0 < f'(t) \le 1,\quad f(0)=0$이다. 이 때 다음 부등식이 성립함을 보여라. +\[ +\left[ \int_{0}^{1} f(t)dt \right ] ^2 \ge \int_{0}^{1} [f(t)]^3 dt +\] + +\vskip\onelineskip + +적분구간의 상한을 변수 $x$로 바꾸어본다. +\[ +\left[ \int_{0}^{x} f(t)dt \right]^2 \ge \int_0^x [f(t)]^3 dt +\] +이 식의 좌변에서 우변을 빼서 그것을 $F(x)$라고 두자. +\[ +F(x) = \left[ \int_{0}^{x} f(t)dt \right]^2 - \int_0^x [f(t)]^3 dt +\] +이 때 $F(0)=0$이다. + +$F(x)$를 $x$로 미분하면 +\begin{equation} +\begin{split} +F'(x) &= 2\left[ \int_{0}^{x} f(t)dt \right]f(x) - \{f(x)\}^3 \\ + &= f(x) \left[ 2\int_{0}^{2} f(t)dt - \{f(x)\}^2 \right] +\end{split} +\end{equation} + +문제의 의미에 의해 $0 0$이다. +\[ +G(x) = 2 \int_{0}^{x} f(t)dt - \{f(x)\}^2 \qquad (0 \le x \le 1) +\] +이라 놓으면 $G(0)=0$이고, +\begin{equation} +\begin{split} +G'(x) &= 2f(x) - 2f(x)f'(x) \\ + &= 2f(x) \{1-f'(x)\} \ge 0 +\end{split} +\end{equation} +이다. $0 \le x \le 1$인 모든 $x$에 관하여 $f'(x) \le 1$이므로 +$G'(x) \ge 0$. 따라서 $G(x) \ge 0$임을 말할 수 있다. 그러므로 +\uline{$F(x) \ge 0$이 성립한다.}\showcommand{uline (ulem package)} + +%% 부록 관련 명령 +%% \appendix 또는 appendices 환경 +%\appendix +%% 부록 면주에 \hparttitlehead, \hchaptertitlehead 를 표시하지 않는다. +\def\partmark#1{\markboth{#1}{#1}} +\def\chaptermark#1{\markright{#1}} +% + +\AppendixTitleToToc +\AttachAppendixTitleToSecnum + +%\begin{appendices} +\appendix +\appendixpage* + +\renewcommand\thechapter{\Roman{APPchapter}} +\renewcommand\thesubsection{\thesection.\arabic{APPsubsection}} +\setcounter{APPchapter}{0} + +\chapterstyle{appendixdefault} +\renewcommand*\prechapternum{\chapnamefont 부록\ \ 제} +\renewcommand*\postchapternum{\chapnamefont 장} +\renewcommand*\printchapternum{\chapnumfont\thechapter} +%% appendix에서는 chaptersyle을 appendixcompanion, +%% appendixdefault, appendixsection 등으로 지정할 것. +%% 사용자가 새로운 chapterstyle을 설정하려 할 때는 +%% appendixXXXX 환경을 새로 만들어야 한다. +%% appendix에서의 절 모양은 \thechapter.\arabic{section}으로 +%% 된다. 이것은 renewcommand할 수 있다. + +\pagestyle{hangul} + +\chapter{19세기 초중엽}\label{sec:appchap} + +\chapterprecis{\noindent 부록에서는 한자가 많은 문장과 상호참조가 많은 문장을 + 시험한다.} +\showcommand{chapterprecis} + +\showcommand{appendix}\showenv{appendices} +\ResetHangulspace{1.333}{1.2} +\showcommand{ResetHangulspace} +\paragraphfootnotes +\showcommand{paragraphfootnotes} + +\section{평안도 광산}\label{sec:appsec} +19세기에 들어와서도 1807년 \wi{평안도} \wi[위원]{渭原} 지방에서 +\wi{광산}이 개발되자 단시일내에 수많은 광산노동자가 집결하여 커다란 +광산촌을 형성하였는데 이 광산도 앞의 遂安광산과 동일한 형태로 +운영되었을 것은 틀림없다. 1811년 평안도 농민전쟁 당시 서울에 있던 +禹君則의 物主(資本主)가 수천 냥의 자금을 보내어 그것으로 雲山의 금광을 +운영하게끔 한 사실, 또한 앞서 본 대로 雲山 광산노동자 800명을 官軍으로 +강제적으로 끌어들이려 한 계획, \wi[김창시]{金昌始}가 +\wi[운산광산]{雲山광산}의 \wi[우욱]{禹郁}과 연계하에 그곳의 +광산노동자를 농민전쟁에 끌어들이는 조직 사업을 진행하였다고 하는 +사실은\footnote{\bnm{日省錄} 哲宗 9年 2月 3日條} 이 시기에 +雲山금광에서도 수많은 광산노동자가 집결하여 있었음을 確證하여 +준다. 또한 1858년 함경도 암행어사 洪承裕의 보고에 의하면 당시 +함경도에서는 金, 銀, 銅의 潛採가 광범하게 이루어져서 하나의 광산이 +開發되기만 하면 도처에서 金店軍이 몇천 명씩 몰려와서 鑛山村이 형성되고 +場市가 열려서 각종 日用品이 광범하게 매매되고 있고 광산의 坑의 깊이가 +千餘尺에 달하는 경우도 적지 않았다.\footnote{\bnm{關南平亂錄} 卷五 + 安州牧使 牒報條.} + +\section{술어 논리의 완전성 정리} + +이 절의 텍스트는 \cite{incompl}\ pp.\ 155ff.에서 취하였다. +\showcommand{cite} + +\subsection{먼저 기호의 설명을 잠깐\texorpdfstring{\ldots}{...}} + +술어논리의 형식화는 모든 대상과 논리법칙(공리)의 기호화로부터 +시작된다. ``태초에 기호가 있다''이다. + +\showcommand{texorpdfstring} +기본 기호는 \fref{fig:syms}의 여섯 종류이다. +\showcommand{fref} + +\begin{figure} +\centering +\begin{minipage}{.75\textwidth} +%\begin{tabbing} +%1111\=11111111111111111111\= \kill \\ +%(1) \> 대상기호(상수) \> $ c_{1}, c_{2}, c_{3}, c_{4}, \ldots $ \\ +%(2) \> 함수기호 \> $ f_{1}, f_{2}, f_{3}, f_{4}, \ldots $ \\ +%(3) \> 술어기호 \> $ P_{1}, P_{2}, P_{3}, P_{4}, \ldots $ \\ +%(4) \> 자유변수 \> $ a_{1}, a_{2}, a_{3}, a_{4}, \ldots $ \\ +%(5) \> 속박변수 \> $ x_{1}, x_{2}, x_{3}, x_{4}, \ldots $ \\ +%(6) \> 논리기호 \> $ \land, \lor, \rightarrow, \lnot, \forall, \exists $ +%\end{tabbing} +\end{minipage} +\caption{기본 기호}\label{fig:syms} +\end{figure} + +\showenv{tabbing}\showenv{minipage} + +이 중, `자유변수'란 불특정의 대상, `속박변수'란 논리기호 $\forall$과 +$\exists$의 어느 것인가와 함께 사용하는 변수를 나타낸다. $\forall$과 +$\exists$는 `속박기호' 또는 `양화기호'라 부르고 $\forall$을 +`전칭기호', $\exists$를 `존재기호'라고 말한다. + +이 $\forall$과 $\exists$를 포함하지 않는 논리 체계가 \bnm{프린키피아 + 마테마티카}에서 처음으로 체계화된 ``명제논리학''이다. 이쪽은 벌써 +1920년에 그 무모순성과 완전성이 당시 컬럼비아 대학의 학생에 지나지 +않았던 E.~L.~포스트에 의해서 증명되고 있다. + +논리기호는 초수학에 있어서는 추상적인 기호에 지나지 않는다. 그러나 +근원을 밝히면 그것들에는 원래 각각 고유한 의미가 있다. 즉 `$\lnot$'는 +``\ldots 이 아니다'', `$\lor$'는 ``또는'', `$\land$'는 ``동시에'', +`$\rightarrow$'는 ``이라면'', $\forall$은 ``모든'', $\exists$는 ``어떤 +\ldots 가 존재한다''는 의미이다. + +이 해석으로 말하면 대상이 유한집합의 경우는 술어논리도 명제논리로 +환원될 수 있다. $\forall$과 $\exists$는 무한집합을 대상으로 할 때 +비로소 의미를 갖는 논리기호이다. 수학은 본질적으로 무한집합을 대상으로 +하고 있기 때문에 술어논리는 수학의 논리로 되어 있는 것이다. + +그러나 지금은 이러한 유래를 제외하고 형식적 체계만을 문제삼고 있기 +때문에 당분간 기호의 의미는 잊어버려도 상관없다. 오히려 적극적으로 +잊어버려서 기호의 조작에만 전념하려고 하는 것이 초수학의 기본 +방침이다. + +\subsection{`항', `논리식'의 정의와 논리법칙} + +기호가 갖추어진 곳에서 추론의 대상이 되는 `항'을 \pref{fig:term}의 +\fref{fig:term}\과 같이 정의한다.\showcommand{pref} + +\begin{figure} +\centering +\begin{minipage}{.75\textwidth} +\begin{enumerate}[(1)]\tightlist\small\raggedright +\item \label{itemone} 대상 기호와 자유변수는 항이다. +\item \label{itemtwo} $f$가 $n$ 변수의 함수기호이고, $t_1 , t_2 , + \ldots, t_n$이 항이라면 $f(t_1 , t_2 , \ldots t_n )$은 항이다. +\item (\ref{itemone})\와 (\ref{itemtwo})\으로부터 얻어지는 것만이 항이다. +\end{enumerate} +\end{minipage} +\caption{`항'의 정의}\label{fig:term} +\end{figure} + +다음으로 이 항을 사용해서 `논리식'을 \fref{fig:logi}\과 같이 정의한다. + +\begin{figure} +\centering +\begin{minipage}{.85\textwidth} +\begin{enumerate}[(1)]\tightlist\small\raggedright +\item \label{st} $P$가 $n$ 변수의 술어기호이고, $t_1 , t_2 , \ldots , + t_n $이 항이라면 $P(t_1 , t_2 , \ldots , t_n )$은 논리식이다. 특히 + 이것을 \emph{원시논리식}이라 부른다. +\item \label{nd} $A, B$가 논리식일 때 $\lnot A, A \lor B, A \land B, A + \to B$도 논리식이다. +\item \label{rd} $A(a)$가 자유변수 $a$를 포함하는 논리식이고 $x$가 + $A(a)$ 속에 나타나지 않는 속박변수일 때 $\forall xA(x), \exists + xA(x)$는 논리식이다. +\item (\ref{st}), (\ref{nd}), (\ref{rd})에 의해서 얻어지는 것만이 + 논리식이다. +\end{enumerate} +\small +덧붙여 말하면, $\forall xA(x)$는 ``모든 $x$는 $A$를 충족시킨다'', +$\exists xA(x)$는 ``$A$를 충족시키는 $x$가 존재한다''라고 해석한다. +\end{minipage} +\caption{`논리식'의 정의}\label{fig:logi} +\end{figure} + +그러면 다음은 이들 논리식을 사용해서 추론을 행하기 위한 논리법칙의 +설정인데, 힐베르트-아카만의 공리계에서는 다음 \fref{fig:rules}\과 같이 +되어 있다. + +\begin{figure} +\centering +\begin{minipage}{.85\textwidth}\small +\noindent\textsf{공리}\\ +\begin{enumerate}[(1)]\tightlist +\item $A \to (B\to A)$ +\item $(A\to B)\to ((A\to (B\to C))\to (A\to C))$ +\item $A\to (B\to A\land B)$ +\item $A\land B\to A,\quad A\land B\to B$ +\item $A\to A\lor B,\quad B\to A\lor B$ +\item $(A\to C)\to ((B\to C)\to(A\lor B\to C))$ +\item $(A\to B)\to ((A\to \lnot B)\to \lnot A))$ +\item $\lnot\lnot A\to A$ +\item $A(t)\to \exists xA(x)$ ($t$는 항) +\item $\forall xA(x) \to A(t)$ ($t$는 항) +\end{enumerate} + +\bigskip + +\noindent\textsf{추론 규칙}\\ +\begin{enumerate}[1~~] +\item \label{rules:st} $\dfrac{A,\; A\to B}{B}$ +\item $\dfrac{A(a)\to C}{\exists xA(x)\to C}$ +\item $\dfrac{C\to A(a)}{C\to \forall xA(x)}$ +\end{enumerate} +다만, $A, B, C, \ldots, \forall xA(x), \ldots$ 등은 모두 논리식으로 +한다. +\end{minipage} +\caption{논리법칙 (힐베르트-아카만의 공리계를 따름)}\label{fig:rules} +\end{figure} + +`추론규칙'이 형성하는 ``도형''을 ``연역도'' 또는 ``증명도''라 부르고 +이 도형은 ``위의 기호열로부터 아래의 기호열을 추론한다''라고 +해석한다. 예컨대 추론규칙 \ref{rules:st}\는 ``$A$와 $A\to B$로부터 +$B$를 추론한다''라고 해석하는 것이다. + +\subsection{증명과 해석} + +이만큼 준비가 된 곳에서 `증명가능'의 개념을 다음과 같이 정의한다.\showcommand{tightlist} +\showenv{enumerate} +\begin{enumerate}[(1)]\tightlist +\item \label{ev:st} 공리는 증명가능하다. +\item \label{ev:nd} 증명가능한 논리식에 추론규칙을 적용해서 얻어지는 논리식은 + 증명가능하다. +\item (\ref{ev:st})\과 (\ref{ev:nd})에서 얻어진 논리식만이 + 증명가능하다. +\end{enumerate} + +논리식 $A$가 $B_1 , B_2 , \ldots , B_n $을 가정했을 때 증명할 수 +있다면, +\begin{displaymath} +B_1 , B_2 , \ldots , B_n \vdash A +\end{displaymath} +라고 쓴다.\showenv{displaymath} + +또한 $A$가 술어논리의 공리만을 사용해서 증명가능할 때는 +\begin{displaymath} +\vdash A +\end{displaymath} +라고 쓴다. + +\begin{snugshade} +실례를 두 가지 대비시켜서 보여주자. + +예컨대 논리식, +$$ +\forall x \exists y (y < x) +$$ +는 ``모든 $x$에 대해서 $y$가 존재하고 $y$는 $x$보다 작다''라고 해석할 +수 있다. 이 해석 아래에서는 실수의 영역이면 모델이 되나 자연수의 +영역에서는 모델이 되지 않는다. 자연수로 $x$를 $0$으로 잡으면 그것보다 +작은 자연수 $y$는 존재하지 않기 때문이다. + +대비적인 실례로서 논리식, +$$ +\exists x \forall y (x \le y) +$$ +를 취하자. 그 해석은 ``어떤 $x$가 존재하고 모든 $y$에 대해서 $y$는 +$x$와 같거나 $x$보다 크다''로 된다. 이것은 자연수가 모델이라면 +$0$이라는 최소수가 존재하기 때문에 진실이 되나 실수의 모델에서는 허위로 +되는 논리식이다. +\end{snugshade} +\showenv{snugshade} + +그래서 모든 해석에 대해서 진실이 되는 논리식을 `항진식' 또는 +`토톨로지'라 부르고 $A$가 토톨로지일 때 +\begin{displaymath} +\vDash A +\end{displaymath} +라고 쓰기로 한다. + +\chapter{이 문서에 관하여} + +이 문서는 \pkg{memhangul-ucs}를 처음 만들 때 테스트용으로 작성한 +것이다. + +\pkg{oblivoir}는 원래 \pkg{dhucs}를 백그라운드 드라이버로 하여 +구현된 것이었다. 그러다가 \hologo{XeTeX}ko, \hologo{LuaTeX}ko를 +백그라운드로 한 \pkg{xoblivoir}가 만들어졌다. +현재 버전의 \pkg{xoblivoir}는 이 둘을 합쳐서 어떤 엔진으로 컴파일해도 +거의 같은 결과를 얻게끔 되어 있다. +따라서, 이 문서는 \hologo{pdfLaTeX}, \hologo{XeLaTeX}, \hologo{LuaLaTeX} 어느 것으로도 컴파일된다. \showcommand{hologo} + +\section{texindy에 관하여} +찾아보기를 만들려면 |texindy|를 사용하라. 예를 들면 다음과 같다. +\begin{verbatim} +$ texindy -L korean -C utf8 oblivor-test.idx +\end{verbatim} +찾아보기를 찍는 명령은 |\printindex|이다. \showcommand{printindex} + +%\restorechapsec \showcommand{restorechapsec} +%% 만약 appendix가 문서의 가장 끝에 오는 것이 아니라면 +%% 이 명령을 appendix 이후에 실행해준다. +%% 아래와 같이 appendices 환경을 쓰는 경우에는 +%% 환경을 종료하기만 하면 된다. +%\end{appendices} + +%%% 본문의 끝. +\backmatter +\chapterstyle{demo} + +%% \bibintoc 하면 참고문헌이 목록에 나온다. +%% 기본값이므로 별도로 설정할 필요는 없다. +%\bibintoc +\renewcommand\prebibhook{% + \showcommand{bibintoc}% + 이 참고문헌 예제는 시험을 위해서 작성된 것으로 실제 문서의 + 내용과는 무관하다.% + \showcommand{prebibhook}} +\begin{thebibliography}{00} +\bibitem[카누쓰86]{Knuth} Donald Knuth. \textit{The + \TeX{}book}. Addison-Wesley. 1986. +\bibitem{memman} Peter Wilson. ``The Memoir Class for Configurable + Typesetting --- User Guide,'' On-line 문서. + \url{http://mirror.ctan.org/macros/latex/contrib/memoir/}. +\bibitem{incompl} 요시나가 요시마사, 임승원 (옮김), \bnm{불완전성 정리 + --- ``이성의 한계''의 발견}. 전파과학사. 1993. +\bibitem[수학질문상자]{Kentaro} 야노 겐타로(矢野健太郞), 전재복 + (옮김). \bnm{수학 질문 상자 --- 왜일까? 그것을 알고 + 싶다}. 전파과학사. 1991. (원저: 고단샤, 1973). +\end{thebibliography} + +\indexintoc +\renewcommand\preindexhook{% + 찾아보기는 테스트를 위해서 임의의 단어들로 선정되었다. + \bigskip} +\printindex + +%% memoir에서는 \listof... 명령을 아무데나 선언할 +%% 수 있다. 신기하다. +\clearpage +\showcommand{listof...} +\listofqueries + +\end{document} + -- cgit v1.2.3