diff options
author | Karl Berry <karl@freefriends.org> | 2013-11-09 00:55:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-11-09 00:55:18 +0000 |
commit | f4d3a4f47afd5a44932519e53c9660c90c3cd61c (patch) | |
tree | 0d27d4a429ce9b16bc95d09e09fce66c8018c394 /Master/texmf-dist/doc/latex/kotex-oblivoir | |
parent | d6aeafcbba09b7d46df19292790393b475facb8e (diff) |
kotex-oblivoir
git-svn-id: svn://tug.org/texlive/trunk@32105 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/kotex-oblivoir')
-rw-r--r-- | Master/texmf-dist/doc/latex/kotex-oblivoir/README | 122 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf | bin | 0 -> 180857 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex | 1113 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex | 1377 |
4 files changed, 2612 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/README b/Master/texmf-dist/doc/latex/kotex-oblivoir/README new file mode 100644 index 00000000000..83b00755a34 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/README @@ -0,0 +1,122 @@ +kotex-oblivoir +============== + +Introduction +------------ + +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. + +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. + +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/luatexko-xobfont.sty -> tex/latex/kotex-oblivoir/memhangul-x/ + 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/xetexko-xobfont.sty -> tex/latex/kotex-oblivoir/memhangul-x/ + memhangul-x/xob-amssymb.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/ + oblivoir-simpledoc.pdf -> doc/latex/kotex-oblivoir/ + oblivoir-simpledoc.tex -> doc/latex/kotex-oblivoir/ + oblivoir-text.tex -> doc/latex/kotex-oblivoir/ + +Usage +----- + +Call `oblivoir.cls` with class options as follows: + + \documentclass[<options>]{oblivoir} + +### 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 +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[<Options>]{<Font Name>} + \setsansfont[<Options>]{<Font Name>} + \setmonofont[<Options>]{<Font Name>} + \setmainhangulfont[<Options>]{FontName} + \setsanshangulfont[<Options>]{FontName} + \setmonohangulfont[<Options>]{FontName} + \setmainhanjafont[<Options>]{FontName} + \setsanshanjafont[<Options>]{FontName} + \setmonohanjafont[<Options>]{FontName} + +Oblivoir class also has its own commands for specifying Korean fonts. + + \setkormainfont(<Bold>)(<Italic>){<Regular>} + \setkorsansfont(<Bold>)(<Italic>){<Regular>} + \setkormonofont{<Mono>} + +### Sample document + +Please refer to the `oblivoir-test.tex` file provided by this package. + +License +------- + +kotex-oblivoir is licensed under the LaTeX Project Public +License (LPPL). + +Contacts +-------- + +Please report any errors or suggestions to the package maintainer, +Kihwang Lee <leekh at ktug org>. + diff --git a/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf Binary files differnew file mode 100644 index 00000000000..96a9a9ea606 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.pdf 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..3dc35ee9c2a --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-simpledoc.tex @@ -0,0 +1,1113 @@ +% !TEX Encoding = UTF-8 Unicode +%%% +%%% \xobclass{} 2008/10/23 +%%% --10/09 Windows에서 작성/테스트함. +%%% ---10/10 Ubuntu Hardy에서 테스트함. 나눔명조체 설치. +%%% +\documentclass[ + 12pt, + a4paper, + kosection, + footnote, + nobookmarks, + microtype, + hyperref=colorlinks, +% xcolor=x11names, +% fontspec=no-math, +]{xoblivoir} %% ,latinquote + +%\documentclass[12pt,a4paper,footnote,xcolor={svgnames}{oblivoir} + +\usepackage{fapapersize} +\usefapapersize{*,*,30mm,*,35mm,*} + +\usepackage{kotex-logo} + +\def\myREF#1#2{% + \ifPDFTeX \ref{#1}\else \ref{#2}\fi +} +\def\myLabel#1#2{% + \ifPDFTeX \label{#1}\else \label{#2}\fi +} +\def\myPageREF#1#2{% + \ifPDFTeX \pageref{#1}\else \pageref{#2}\fi +} + +\ifx\oblivoirdblquote\undefined +\def\oblivoirdblquote#1{``#1''} +\fi + +\ifPDFTeX +\ifx\XeTeX\undefined +\def\Xe{\hologo{Xe}} +\def\XeTeX{\hologo{XeTeX}} +\def\XeLaTeX{\hologo{XeLaTeX}} +\fi +\ifx\LuaTeX\undefined +\def\LuaTeX{\hologo{LuaTeX}} +\def\LuaLaTeX{\hologo{LuaLaTeX}} +\fi +\else +%%%%%% tested on Windows XP SP3 +\setkormonofont{은 필기} +\setmonoscale{0.9} +\defaultfontfeatures{Mapping=tex-text} +%%%%%% tested on Linux/Ubuntu +%\setmainfont[Mapping=tex-text]{Bradley Hand ITC} +%\setmonofont[Scale=.85]{Comic Sans MS} +%\setmainfont[Mapping=tex-text]{Monotype Corsiva} +\setmonofont[Scale=.85]{Monaco} +%\setkormainfont(문화 궁서 Std L){문화 궁서 흐림 Std L}(){네이버사전} +\setkormainfont(* Bold)(*){HCR Batang LVT} +%\setkorsansfont(문화 궁서 Std B)(문화 훈민 Std R){문화 고딕 Std R}(){한컴돋움} +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fi + +\newcommand\xobclass{x\-ob\-liv\-oir\oblivoirallowbreak} +\newcommand\obclass{ob\-liv\-oir\oblivoirallowbreak} +\def\xetexko{\XeTeX-\ko} + +\pagestyle{ruled} + +\usepackage{tabu} +\usepackage[normalem]{ulem} + +\begin{document} + +\title{초간단 \obclass{} v2.0 사용법} + +\date{2013년 10월} + +\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] 그림과 표에 <그림 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 환경의 줄간격을 `좁은 줄간격'으로 줄인다. +\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{폰트 설정 방식에 대한 간단한 설명}\label{sec:font} + +\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{} 매크로가 있으므로 이에 대해서는 \xetexko{} 매뉴얼을 + 참고하라. +} + +\paragraph{라틴 문자} +라틴 문자 폰트는 fontspec 패키지의 방식을 따른다. +설정과 사용에 대해서는 fontspec 패키지 문서를 참고하라. +매우 방대하고 훌륭한 문서이다. +\begin{boxedverbatim} +\setmainfont{<Font Name>} +\setsansfont{...} +\setmonofont{...} +\end{boxedverbatim} + +이 명령의 옵션으로 \verb|[Ligatures=TeX]|을 주면 \verb|``|, \verb|---|와 같은 +입력이 ``, ---와 같이 나타난다. 대부분의 텍 소스에는 이런 이른바 텍 리거쳐를 사용하는 것이 +일반적이므로 이 옵션을 지정하는 것이 좋다. \XeTeX 에서 \verb|[Mapping=tex-text]| 옵션을 +써도 좋은데 이 옵션은 \LuaTeX 에서는 무의미하므로 양쪽에 통용되는 \verb|[Ligatures=TeX]|을 +쓰도록 하자. 따라서 만약 TeX Gyre Termes를 라틴 문자 세리프 글꼴로 쓰려 한다면, +\begin{boxedverbatim} +\setmainfont[Ligatures=TeX]{TeX Gyre Termes} +\end{boxedverbatim} +와 같이 지정하면 된다. + +\paragraph{한글과 한자} +한글 폰트는 다음과 같이 설정한다. 자세한 사항은 +매뉴얼을 참고하라. +\begin{boxedverbatim} +\setmainhangulfont[Options]{FontName} +\setsanshangulfont[Options]{FontName} +\setmonohangulfont[Options]{FontName} +\setmainhanjafont[Options]{FontName} +\setsanshanjafont[Options]{FontName} +\setmonohanjafont[Options]{FontName} +\end{boxedverbatim} +\xobclass 에서도 이 방식의 폰트 정의를 할 수 있다. %이 문법은 +%fontspec 패키지를 따르는 것이다. + +한글 폰트만을 이용해서 한글/라틴 문자에 모두 식자할 필요가 있을 +수 있다. 이 경우 다음과 같이 하는 것이 한 가지 방법이다. +\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의 폰트 설정 명령} + +\subsubsection{간단한 폰트 지정} + +한편, 한글 글꼴을 선언하는 데 있어서 +\xobclass 에서는 약간 다른 방법(더 편리한?)의 폰트 정의가 +가능하다. 이것은 다음 세 명령으로 이루어져 있다. +\begin{boxedverbatim} +\setkormainfont(<Bold>)(<Italic>){<Regular>} +\setkorsansfont(<Bold>)(<Italic>){<Regular>} +\setkormonofont{<Mono>} +\end{boxedverbatim} + +이러한 폰트 정의 방식은 xoblivoir 클래스의 원래 의도인 `되도록 간단하게 +필요한 것만' 사용하자는 데서 나온 것이다. 그러므로 옛한글 설정이나 +자간, 장평 등 복잡한 폰트 속성을 적용하려 한다면 당연히 \xetexko 의 (즉 fontspec의) +설정 방식을 이용하는 것이 좋다. + +이후의 설명은 \verb|\setkormainfont|에 대해서만 한다. 다른 두 +명령의 사용법은 동일하다. + +\begin{boxedverbatim} +\setkormainfont{Font_Family_Name} +\end{boxedverbatim} +한글 글꼴 가운데 어떤 것은\explpunc.모든 한글 글꼴이 그렇지는 않다는 +데 주의하라.\ 글꼴 가족을 이루고 있는 것이 있다. 예를 들면 +\oblivoirdblquote{맑은 고딕}은 맥락에 따라 \oblivoirdblquote{맑은 고딕 Bold}를 +글꼴 가족으로 인식한다. 이런 경우 예를 들어 +\begin{verbatim} +\setsansfont{Malgun Gothic} +\end{verbatim} +이렇게만 지정해도 굵은 글꼴이 요구되는 곳에서는 \oblivoirdblquote{맑은 고딕 Bold}를 +식자해준다. +이렇게 잘 만들어진 글꼴을 이용하는 경우, 간단히 하나의 옵션으로 +글꼴을 지정해주는 것만으로 굵은 글꼴을 사용하게 할 수 있다. + +\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(<hgBd>)(<hgIt>){<Hangul>} +\setkorsansfont(<hgBd>)(<hgIt>){<Hangul>} +\end{boxedverbatim} +첫 두 인자를 둘러싼 괄호가 각괄호 []가 아니라 괄호 ()임에 주의하라.\footnote{% + 이것은 2008/11/09 버전의 변경사항이다. 하위호환성을 제공하지 + 않으므로 이전의 모든 소스를 수정해야 한다.} +아무튼 괄호 ()로 둘러싸인 부분은 생략가능하다. 첫 괄호 인자만 있고 +이탤릭 글꼴을 지정하지 않으면 기본 글꼴로 치환된다. + +한글 폰트와 별도의 한자 폰트를 설정할 필요가 있을 때는 다음과 같이 한다. +\begin{boxedverbatim} +\setkormainfont(<hgBd>)(<hgIt>){<Hangul>}(<hjBd>)(<hjIt>){<Hanja>} +\setkorsansfont(<hgBd>)(<hgIt>){<Hangul>}(<hjBd>)(<hjIt>){<Hanja>} +\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{<scale>} +\end{boxedverbatim} + +한글 mono 폰트를 기본값(은 타자)이 아닌 글꼴로 지정할 경우 scaling이 필요할 때가 있다. +이를 위하여 위의 명령이 정의되어 있다. 이것은 한글 및 한자 mono 글꼴에만 +영향을 미친다. 라틴 문자자는 fontspec 옵션으로 지정하면 될 것이다. +% 이 문서의 경우 mono 한글 폰트를 맑은 고딕으로 +% 하면서 scale 값을 0.9로 지정했다. + +문장 중간에서 한글 및 한자 폰트를 일부 바꾸어 써야 할 때가 있다. 이 경우에는 \xetexko 의 +\verb|\hangulfontspec| 명령을 이용하면 매우 간편하게 이를 실현할 수 있다. + +\subsection{ExternalLocation} + +ExternalLocation으로 폰트를 찾도록 하는 설정은 특히 폰트 정보가 이상한 한글 폰트를 사용할 때를 위해서도 +매우 중요하다. 굳이 폰트 캐싱을 할 필요가 줄어들기도 하므로, 이 방식을 선호하는 경우도 있다. \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의 +KC2008이나 TeXLive 자체가 이것을 잘 설정하여 주므로 사용자가 신경쓸 것이 없으나 +경우에 따라 이 변수를 설정해야 할 필요가 있을 수 있다. 맥의 경우, +/usr/local/texlive/2013/texmf.cnf 파일을 열어서\footnote{/usr/local/texlive/2013/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{boxedverbatim} +\setkormainfont(* Bold)(Gungsuh){Malgun Gothic} +\end{boxedverbatim} +으로 지정했을 때, 궁서체가 이탤릭에 해당하는 폰트로 설정된다. gremph가 디폴트이므로 궁서체는 곧은 모양으로 찍힌다. + +그러나 디자인 상의 효과를 위해서나 다른 이유에서 +이 서체를 기울이고 싶은 경우가 있을 것이다. +이 경우 \texttt{[itemph]} 클래스 옵션을 지정한다. +그 반대의 경우는 \texttt{[gremph]}이고 이것이 디폴트이다. 부분부분 기울이려 한다면 fontspec +명령을 써서 조작할 수 있으므로 별도로 명령을 만들어두거나 하지 않았다. + +%\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{enumerate} + +enumerate 패키지의 enumerate 아이템 항목 머리 설정은 +다음과 같이 한다. 엔진과 무관하게 동작한다. +\begin{boxedverbatim} +\begin{enumerate}[(㉠)] \tightlist +\item 첫째 항목 +\item 둘째 항목 +\end{enumerate} +\end{boxedverbatim} +\begin{enumerate}[(㉠)] \tightlist +\item 첫째 항목 +\item 둘째 항목 +\end{enumerate} +paralist에서 위와 같은 방식으로 항목 머리를 설정하려면 +레거시 텍을 위해서는 dhucs-paralist를, \XeTeX과 \LuaTeX을 위해서는 +xob-paralist를 로드한다.\footnote{% + 물론 paralist 자체는 그 이전에 부르거나 + xob-paralist(dhucs-paralist)가 스스로 부르도록 할 것이고 xob-paralist(dhucs-paralist) 뒤에 + paralist만 별도로 다시 부르면 안 된다. +} + +\subsection{graphicx, xcolor} + +\hologo{pdfLaTeX} 문서는 dvi 드라이버로 어떤 것이 실행될지 모르기 때문에 graphicx 패키지의 +로딩에 주의를 기울여야 한다. 즉 +\marginpar{\fbox{pdftex}} +\begin{boxedverbatim} +\usepackage[<driver>]{graphicx} +\end{boxedverbatim} +과 같이 하는 것이 안전하다. 그러나 대부분의 경우 \verb|<driver>|를 지정하지 않아도 된다. + +\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 “소절 \ref{sec:font}\를 보라.” +\end{minipage} + +\noindent\hologo{XeTeX}, \hologo{LuaTeX}:\\ +\noindent\begin{minipage}{.45\textwidth} +\begin{verbatim} + “소절 \ref{sec:폰트}\를 보라.” +\end{verbatim} +\end{minipage} + + +\subsection{방점} + +\koTeX 에서는 \texttt{\textbackslash dotemph} 명령의 방점\footnote{% + 가로쓰기에서는 \dotemph{점을 글자 위에 찍으므로} \circemph{傍점}이 아니라 + \circemph{上점}이 맞겠지만 관행적으로 방점이라 불러왔다. + 이 문장부호의 정확한 명칭은 “드러냄표”이다.}% +을 지원했다. \xetexko{}에서도 이 명령을 사용할 수 있게 되었고, +xoblivoir에서 조금 확장했다. 기본인 +\texttt{\textbackslash dotemph} +외에 +\texttt{\textbackslash circemph} +\texttt{\textbackslash useremph} +두 개의 명령을 더 쓸 수 있다. + +\marginpar{\fbox{xe(lua)tex}} +\xobclass에서 기원한 새로운 텍 엔진을 위한 \obclass 에서 +마지막의 \texttt{\textbackslash useremph} 명령은 +\useremph{˚}{하나의 선택 인자와 두 개의 인자}를 요구한다. 즉, +\begin{verbatim} +\useremph[<height>]{<dotchar>}{text} +\end{verbatim} +height는 방점으로 사용할 문자가 올라갈 길이이고 dotchar는 +방점 문자이다. text는 방점을 찍을 텍스트. +단, 이 \verb|\useremph| 명령은 \xetexko 에서 제공되는 같은 이름의 +명령과도 그 사용법이 다르고 레거시 텍을 위한 \obclass에서의 사용법과도 다르므로 주의를 요한다. + +\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[<other options>,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/oblivoir-test.tex b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex new file mode 100644 index 00000000000..c392205ca52 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kotex-oblivoir/oblivoir-test.tex @@ -0,0 +1,1377 @@ +% -*- UTF-8 : LaTeX -*- +%% +%% 2013/09/28. xoblivoir ver2 버전으로 포팅. +%% 2010/03/17. xoblivoir 버전으로 포팅 +%% +%% memhangul-ucs v1.44 테스트 파일 +%% Written by 도은이아빠. +%% + +\documentclass[demo,chapter,openany,amsmath,gremph,adjustmath]{xoblivoir} +%%% amsmath 옵션은 amsmath, amssymb 패키지를 로드해준다.. + +%\usepackage[logonly]{trace} %% for debugging. +\let\traceon\relax\let\traceoff\relax + +%%% display overfullrule +%\setlength\overfullrule{5pt} + +%% 페이지 레이아웃. fapapersize를 이용한다.. +\usepackage{fapapersize} +\usefapapersize{220mm,276mm,20mm,80mm,30mm,35mm} + +%% 폰트 설정 +\def\DefaultFont{HCR Batang LVT} +\ifPDFTeX + \usepackage{mathpazo} +\else\ifLuaOrXeTeX + \defaultfontfeatures{Mapping=tex-text,Ligatures=TeX} + \setmainfont{TeX Gyre Pagella} + \usepackage{unicode-math} + \setmathfont{Asana-Math.otf} + \setsansfont[Scale=.95]{TeX Gyre Heros} + \setkormainfont[ItalicFont=\DefaultFont,ItalicFeatures={FakeSlant=.167}]{\DefaultFont}[]{\DefaultFont} + \setkorsansfont[]{NanumGothic}[]{HCR Dotum LVT} +\fi\fi + +\ifLuaTeX +\def\interHANGUL{InterHangul} +\let\circemph=\dotemph +\else\ifXeTeX +\def\interHANGUL{interhchar} +\fi\fi + +%% logos +\usepackage{hologo} + +%%% 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 + +%% 문장 부호 관련 명령은 스타일에 포함시켰음. +%% \bnm, \snm, \cnm, \ccnm. + +%% index를 만든다. +%% makeindex를 실행할 때는 makeindex-dhucs.pl을 이용할 것. +%% #> perl makeindex-dhucs.pl -s dhhangulucs.ist <filename> +%% +\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와 함께 쓸 수 있다. +%\usepackage[bottom]{footmisc} +%% 그러나, 위의 예와 같이 [bottom] footnote를 위해서라면 +%% 다음과 같이 할 것을 권장함. raggedbottom에서 동작함. +\renewcommand*{\footnoterule}{\kern-3pt\vfill + \hrule width 0.4\columnwidth \kern 2.6pt} +%% 각주를 floats 아래. +\feetbelowfloat + +%% 밑줄. +\ifLuaTeX\else +\usepackage[normalem]{ulem} +\fi + +%% 사소한 설정 +\def\util#1{\texttt{#1}\index{Utility!#1}} + +%% \useremph compatibility +\ifPDFTeX + \let\ORIGuseremph=\useremph + \def\useremphchar{\tiny★} + \setlength\useremphraisedim{10pt} + \def\useremph#1{\ORIGuseremph{#1}} +\else\ifXeTeX + \let\ORIGuseremph=\useremph + \def\useremph#1{\ORIGuseremph[10pt]{\tiny★}{#1}} +\else\ifLuaTeX + \let\ORIGdotemph=\dotemph + \def\dotemph#1{% + \def\dotemphraise{0.4em} + \def\dotemphchar{˙} + \ORIGdotemph{#1}} + \def\circemph#1{% + \def\dotemphraise{0.4em} + \def\dotemphchar{˚} + \ORIGdotemph{#1}} + \def\useremph#1{% + \def\dotemphraise{10pt} + \def\dotemphchar{\tiny★} + \ORIGdotemph{#1}} +\fi\fi\fi + +%%% +%\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 클래스에서\\ 한글을 쓰자} +\traceon\label{sec:firstchap}\traceoff + +\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{memucsfninterwordhook}\showcommand{xspaceskip} +%%%만약 각주의 자간을 조절하고 싶으면 어떻게 할 것인가? +%%%이 때는 \dispcmd{memucsfninterwordhook}이라는 명령을 재정의해준다. +%%%이것을 간편하게 재정의하는 명령을 따로 제공하지 않는 이유는, +%%%이것을 재정의하는 것이 그다지 바람직하지 않기 때문이다. +%%%게다가 만약 이 명령에서 \dispcmd{xspaceskip} 등을 수정하면 +%%%본문에도 영향을 미치기 때문에, 본문 중에서는 +%%%되도록 사용하지 않는 것이 좋다. 여기서는 오직 예시만을 +%%%위하여 간단한 예를 들어두겠다. +%%%\let\ORIGmemucsfninterwordhook\memucsfninterwordhook +%%%\renewcommand\memucsfninterwordhook{% +%%% \ifLuaTeX +%%% \hangulfontspec[InterHangul=.5em]{\DefaultFont} +%%% \else\ifXeTeX +%%% \hangulfontspec[interhchar=.5em]{\DefaultFont} +%%% \else\ifPDFTeX +%%% \interhchar{.5em} +%%% \fi\fi\fi +%%% \spaceskip=.8em plus .133em minus .111em +%%%% \xspaceskip=1em plus .05em minus .05em +%%%}% +%%%이제 각주를 붙여보자.\footnote{% +%%%각주의 자간을 수정하려면 +%%%위와 같이 한다. 잘 되는가?} +%%% +%%%\let\memucsfninterwordhook=\ORIGmemucsfninterwordhook + +%\DefaultInterHchar + +\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{발전을 거듭하여} +현재에 이르렀다. +\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{수학질문상자}\traceon\label{sec:math}\traceoff + +%% 절의 카운터를 \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<x<1$에서 $f(x) > 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://www.ctan.org/tex-archive/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} + |