XeLaTeXHowTo

CategoryTeX

여기는 XeLaTeX을 사용하는 방법을 정리해 둔다. 이 내용은 시간이 지나면 바뀔 것이라고 생각되지만 현재의 방법을 정리한다. 아래의 preamble들은 KTUG에 올라와 있는 sample들에서 뽑은 것이다. XeLaTeX을 사용하는 가장 간단한 방법은 xbolivoir class를 사용하는 것이다. 명령은 article의 명령이 그대로 잘 듣는다.

다음 파일들을 참조한다.

ultrasimplexob.pdf


2009년도의 AMS Notices에 나온 XeTeX관련 글: tx090100052p.pdf

fontspec manual: fontspec.pdf

xetex manual: [http://cern.ch/XML/lgc2/xetexmain.pdf XeTeX Companion]


[http://media.river-valley.tv/conferences/bachotex2008/quicktime/0301-Jonathan_Kew.php Jonathan Kew의 XeLaTeX 소개 강연]

영어권에서 글꼴 정의한 예들: font_sugg.pdf

Coding 하는 법

Preamble

맨 위쪽에 다음과 같이 써 놓는다. (Mac OSX의 TeXShop 용)

{{{ %%!TEX encoding = UTF-8 Unicode %%!TEX TS-program = xelatex }}}

이런 명령을 주면 font ligature등을 LaTeX 같이 조판한다.

{{{ \defaultfontfeatures{Mapping=tex-text} }}}

Fonts

아래와 같이 전체적인 setup을 하고도 이 밖의 font를 사용해야 하는 경우 다음을 쓴다. 이미 xetexko 등은 fontspec, xltxtra 등을 불렀으므로 다음 예와 같이 xelatex의 fontspec 명령을 사용한다:

{{{ {\fontspec[Scale=2]{Courier} Your Inputs} }}}

글꼴의 모양을 변경하는 명령어는 다음과 같다:

The default set of modal commands offers

  • weights \mdseries and \bfseries,
  • shapes \upshape, \itshape, \scshape and \slshape,
  • families \rmfamily, \sffamily and \ttfamily.

장평 변경의 예

{{{

\documentclass{xoblivoir} \setmainhangulfont{HangyeoreGyeol}

\ifxetex %%% #1 should be parts per mille. \newenvironment{myhangulfontstretchtest}[1]% {\begin{setmainhangulfont}[FakeStretch=.#1]{HangyeoreGyeol}}% {\end{setmainhangulfont}} \else\ifluatex \newenvironment{myhangulfontstretchtest}[1]% {\begin{setmainhangulfont}{HangyeoreGyeol:fakeextend=#1}}% {\end{setmainhangulfont}} \fi\fi

\begin{document}

장평 100\% \\
장평은 어떻게 줄일 수 있는지요?

장평 90\% \\
\begin{myhangulfontstretchtest}{900}
장평은 어떻게 줄일 수 있는지요?
\end{myhangulfontstretchtest}

장평 80\% \\
\begin{myhangulfontstretchtest}{800}
장평은 어떻게 줄일 수 있는지요?
\end{myhangulfontstretchtest}

\end{document}

}}}

XeTeX의 경우, {{{ \defaultfontfeatures{FakeStretch=.5,Mapping=tex-text} \setkormainfont{HangyeoreGyeol} }}} 이렇게 또는 {{{ \setmainhangulfont[FakeStretch=.5]{HangyeoreGyeol} }}} 이렇게 할 수 있지 않을까 생각합니다. 앞의 것을 쓰면 일부 영문 글꼴의 경우 장평이 함께 줄 수 있습니다. 이것을 피하려면(즉 영문은 100%를 유지하려면) \setmainfont 명령을 \defaultfontfeatures 보다 앞에 두면 됩니다. xoblivoir의 setkormainfont 명령의 경우 장평에 대한 고려가 (아직) 없는데, setmainhangulfont와 동일한 방식으로 명령을 줄 수는 있습니다. – [Karnes] (DateTime(2009-09-18T01:27:07))

2008년 12월 초

  1. XeLaTeX 에서 한글과 함께 사용하는 방법은 다음과 같다
    • article 등에서 xetexko(-var)를 부르는 방법
    • xoblivoir를 사용하는 방법
    • Beamer에서 xetexko-var를 부르는 방법
  2. 모든 경우에 fontspec의 방법인 \newfontfamily\kormainfont 를 설정해 주면 된다.
  3. KC가 바라는 것은 모든 곳에서 \setkormainfont를 사용할 수 있게 하는 것이다. xetexko.sty 대신 xetexko-var.sty 를 부르면 된다.
  4. 어떤 글꼴은 이름에 문제가 있어서 \setkormainfont로 그냥 불러서는 잘 안된다. (Naver Dictionary on Mac OSX 등) 이런 경우에는 external location으로 filename을 불러주면 된다. \setkormainfont*(filename)(filename){filename}
  5. Mac에서는 한글 상위로 사용하면 현재 KC에서 설정해 준 명령으로 잘 되는 것 같다.
  6. Mac에서 영문 상위로 사용 가능하도록 xoblivoir, xetexko-var 등에서 사용할 수 있는 옵션으로 nowinname 을 새로 정의하였다.(오늘) 이것은 \setkormainfont*로 글꼴 이름을 영문으로 부를 때 생략된 부분을 은글꼴로 부르는 default가 한글 은글꼴 이름 대신 영문으로 부르도록 한 것이다. 따라서 Mac의 영문 상위일 경우의 오류가 없어진다고 생각된다.
  7. \ifplatform을 사용해서 mac과 win, linux를 구별하는 경우에는 컴파일 시에 -shell option이 필요하다. terminal에서 xelatex -shell foo 와 같은 식으로 컴파일한다. MacOSX의 TeXShop인 경우는 ~/Library/TeXShop/Engines/XeLaTeX.engine 을 edit하여 옵션을 추가하여 준다.

아마도 XeLaTeX이 상당히 좋은 반응을 보일 것이라고 생각된다.

xetexko와 xetexko-var

현재 xelatex으로 한글을 사용하는 방법에는 xoblivoir를 사용하는 방법과 xetexko, xetexko-var 등이 있다. xoblivoir는 자체로 memoir class를 부르므로 종류가 다른 것이며 실제로 xetexko-var를 내부적으로 사용하고 있다고 생각된다.(보았으나 가물가물) 한편 xetexko와 xetexko-var는 스타일 패키지이며 article등의 class 에서 kotex, hangul처럼 부르면 된다.

amsart에서 잘 사용되는지 한 번 확인할 일이다. (답) amsbook.cls 에서 아무 문제 없이 잘 컴파일된다.

이 두 가지는 무슨 차이가 있는가?

얼핏 사용 예 등에서는 마치 Beamer에서는 xetexko-var를 사용해야 하는 것 처럼 느껴지지만 아마도 어디서나 둘 다 사용 가능한 것 같다.(테스트 필요) 일견하여 xetexko는 xetexko-font.sty를 부르는데 이것은 fontspec의 명령을 사용한

{{| \def\setmainhangulfont{\newfontfamily\kormainfont}

}}

꼴의 명령어만 정의되어 있다. 한편 xetexko-var는 xetexko-xobfont.sty를 부르는데 이것에는

{{| \setkormainfont()(){}

}}

꼴의 명령어가 정의되어 있는 점만 다른 것이 아닌가 한다. 이점에 대하여는 확인이 필요하다.

xetexko-var에서 \setmainhangulfont 명령을 사용할 수 있는지는 잘 모르겠지만 사실 이것은 그냥 \newfontfamily\kormainfont라고 불러도 되므로 크게 문제되지 않는다고 보인다.

이것이 사실이라면 아마도 xetexko는 xetexko-var로 대치하면 되거나 아마도 흡수될수 있을지도 모른다.

amssymb.sty와 xob-amssymb.sty

xetexko-var.sty를 부를 때는 amssymb.sty package를 같이 부르면 이미 정의되어 있는 명령이 4개 있다고 에러가 뜬다. 이것이 보기 싫으면 xob-amssymb.xty를 부르면 되며, 이보다 더 편한 방법은 option으로 amsmath를 설정하는 것이다. 그러면 amsmath와 amssymb 패키지를 부르지 않아도 된다.

Article 에서 쓰는 방법

{{{ \documentclass{article}

%% xetexko는 fontspec, xunicode, xltxtra를 불러들이며 %% 한글과 영문 글꼴을 분리하고 한글 식자에 필요한 설정을 행한다. \usepackage{xetexko} %\usepackage{xetexko-var} 위 둘 가운데 하나를 쓴다.

%% 글꼴 선언. fontspec의 문법을 따른다. %% 영문 글꼴은 Minion Pro와 Myrid Pro가 괜찮아 보인다. \setmainfont[Mapping=tex-text]{Minion Pro} %\newfontfamily\kormainfont[BoldFont=서울남산체 M]{서울한강체 L} %\newfontfamily\korsansfont[BoldFont=서울남산체 B]{서울남산체 M} %%Mac에서는 다음과 같이 부른다. Windows에서는 위와 같이 불러도 된다.(?) \newfontfamily\kormainfont[BoldFont=SeoulNamsan M]{SeoulHangang L} \newfontfamily\korsansfont[BoldFont= SeoulNamsan B]{SeoulNamsan M}

\usepackage{hyperref}

%%% 수식 앞에서 한글과 붙은 경우의 finemath 조정 코드 \XeTeXinterchartoks 1 255 = {\latinfont\isnextmathon} \XeTeXinterchartoks 7 255 = {\latinfont\isnextmathon} \def\isnextmathon{\futurelet\nextis\discernnext} \def\discernnext{\ifx\nextis$\hangsmallskip\fi} %%%%%%%%%%%%%

%% pdf bookmark를 위한 정의 \pdfstringdefDisableCommands{\def\XeTeX{XeTeX}\def\XeLaTeX{XeLaTeX}}

\begin{document}

\end{document}

}}}

xoblivoir 에서 사용하는 방법

ifplatform 패키지를 불러서 \ifmacosx 를 쓰려면 xelatex을 -shell 옵션과 함께 돌려야 한다. 이렇게 하면 한 파일을 Mac, Linux, Windows에서 모두 쓸 수 있다.

{{{ \documentclass[12pt,itemph,nowinname,amsmath]{xoblivoir} % Mac에서 영문 상위인 경우 위의 nowinname 옵션을 준다. 그 밖의 경우는 빼자.

\usepackage[dbl4x6]{fapapersize} \usepackage{ifplatform} %\usepackage{amsmath,xob-amssymb} \usepackage{pxfonts}

\ifmacosx \setmainfont[BoldFont=Minion Pro-Bold]{Minion Pro} \setsansfont[BoldFont=Myriad Pro-Bold]{Myriad Pro} % \setmainfont[BoldFont=NanumMyeongjoOTF-Bold]{NanumMyeongjoOTF} % \setsansfont[BoldFont=NanumGothicOTF-Bold]{NanumGothicOTF} % \setkormainfont(NanumMyeongjoOTFBold){NanumMyeongjoOTF}(){Naver Dictionary} % \setkorsansfont(NanumGothicOTFBold)(NanumGothicOTF){NanumGothicOTF} % Mac의 영문상위일 경우 다음과 같이 설정 \setkormainfont*(NanumMyeongjoOTFBold){NanumMyeongjoOTF}%다음 가운데서 한자 글꼴 선택 (){naverdic}%네이버 사전체 %(){nBatang}%새바탕 %(){UNI_HSR}%한양해서 \setkorsansfont*(NanumGothicOTFBold)(NanumGothicOTF){NanumGothicOTF} \else\iflinux \setmainfont[BoldFont=NanumMyeongjo-Bold]{NanumMyeongjo} \setsansfont[BoldFont=NanumGothic-Bold]{NanumGothic} \setkormainfont(NanumMyeongjo-Bold){NanumMyeongjo}(){Naver Dictionary} \setkorsansfont(NanumGothic-Bold){NanumGothic} \else \setmainfont[BoldFont=나눔명조 Bold]{나눔명조} \setsansfont[BoldFont=나눔고딕 Bold]{나눔고딕} \setkormainfont(나눔명조 Bold){나눔명조}(){네이버사전} \setkorsansfont(나눔고딕 Bold){나눔고딕} \fi \fi

\begin{document}

\end{document}

}}}

Minion Pro의 숫자 글꼴

  • 문서의 글자 폰트는 그대로 두고 숫자만을 다른 폰트로 바꿀 수 있는 방법이 있는지요? 글자 폰트는 \usepackage{MinionPro}에 의해 이용할 때, MinionPro의 숫자 폰트가 너무 튀는 것 같아서요… 방법 알려주시면 감사하겠습니다.
    • “너무 튄다”고 하신 것이 혹시 올드스타일 숫자인 건 아닌가요? lf 또는 textlf 옵션을 MinionPro에 주면 좀 평범한 숫자로 찍힌다고 생각하는데요.

Beamer에서 사용하는 방법

아래를 복사하여 쓸 경우 Comment 줄이 줄바뀌어 나타난 곳을 주의할 것. {{{ \documentclass[10pt,compress,slidetop,% % hyperref={unicode},% xcolor={svgnames},% sub-package options %handout,% t]{beamer} % 이곳에서는 글씨체의 크기를 10 pt로 하였음, % t는 본문 내용이 슬라이드의 위(top)부터 시작

\mode<presentation> % 출력 양식을 프레젠테이션으로 { \usetheme{Frankfurt} % 템플릿은 프랑크푸르트로

% 템플릿 종류: Antibes, Bergen, Berkerley, Berlin, Boadilla, % Copenhagen, Darmstadt, Dresden, Frankfurt, Goettingen, % Hannover, Ilmenau, JuanLesPins, Luebeck, Madrid, Malmoe, % Marburg, Montpellier, PaloAlto, Pittsburgh, Rochester, % Singapore, Szeged, Warsaw % \usecolortheme[named=olive]{structure} % 색상 결정 \usefonttheme[onlymath]{serif} % 수학공식에서 사용하는 글씨체 % \useoutertheme{infolines} % or whatever

\setbeamercovered{transparent} % overlay 사용 % or whatever (possibly just delete it) }

%================== 필요한 패키지 설정 ============= \usepackage{verbatim} \usepackage{pdfpages} \usepackage{multimedia} \usepackage{animate} % \usepackage{bm}% bold math \usepackage{amsmath,amssymb,amscd} \usepackage{subeqnarray} \usepackage{mathptmx} % \usepackage{helvet} \usepackage{courier} \usepackage{relsize} % \usepackage{colortbl} \usepackage{wasysym} % \usepackage{tikz} \usetikzlibrary{arrows,shapes,calc,patterns} \tikzstyle{every picture}+=[remember picture] \usetikzlibrary{% decorations.pathreplacing,% decorations.pathmorphing% }

\usepackage[itemph]{xetexko-var} \setmainfont[Numbers=OldStyle,Mapping=tex-text,Ligatures=Rare]{Minion Pro} \setsansfont[Numbers=OldStyle,Mapping=tex-text]{Myriad Pro} %% xetexko-var style commands %\setkormainfont{NanumMyeongjoOTF} %\setkorsansfont{NanumGothicOTF} %\setkormainfont{나눔명조OTF} %\setkormainfont*(NanumMyeongjoOTFBold){NanumMyeongjoOTF} %\setkorsansfont*(NanumGothicOTFBold){NanumGothicOTF} %\setkormainfont(NanumGothicOTF-Bold){NanumGothicOTF-Regular} %\setkorsansfont(NanumMyeongjoOTF-Bold){NanumMyeongjoOTF-Regular} %\setkormainfont(NanumMyeongjoOTF Bold){NanumMyeongjoOTF} %\setkorsansfont(NanumGothicOTF Bold){NanumGothicOTF} %\setkormainfont(나눔명조OTF-Bold){나눔명조OTF-Regular} %\setkorsansfont(나눔고딕OTF-Bold){나눔고딕OTF-Regular} \newfontfamily\kormainfont[BoldFont= NanumGothicOTF Bold,% ItalicFont= NanumMyeongjoOTF Bold]{NanumMyeongjoOTF} \newfontfamily\korsansfont[BoldFont= NanumGothicOTF Bold]{NanumGothicOTF}

%================ 제목에 사용할 글씨체 설정 ============ \setbeamerfont{title}{shape=\itshape,family=\rmfamily} \setbeamerfont{frametitle}{family=\rmfamily} %\usepackage[T1]{fontenc}

\title % (optional, use only with long paper titles) {Beamer 프레젠테이션 활용} \subtitle{\LaTeX 기초강좌 (2008년 가을, 공주대학교)}

\author{홍길동 } % 저자(발표자)

\institute[] % (optional, but mostly needed) 소속기관 약자 표기 {자신의 소속 기관} % 표지에 나타나는 소속기관 full name \date[08-11-09]% (optional, should be abbreviation of conference name) {} % 날짜 지정: \today

\subject{Beamer}

\AtBeginSection[] {

\begin{frame}
\frametitle{차 례}
\tableofcontents[currentsection,hideallsubsections]
%\tableofcontents[currentsection,currentsubsections]
\end{frame}

}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{Introduction}

\begin{frame}
\frametitle{프레임 타이틀}

\end{frame}

\end{document}

}}}