LuaL A T E X 개발현황과 LuaT E X-ko 김도현 동국대학교 한국텍학회 2011 학술대회 2011. 2. 12.
오늘알아볼내용 퀴즈하나 LuaL A T E X 이란 LuaL A T E X 의특징 LuaT E X-ko 의개발 매뉴얼을읽자
뭘로컴파일하까요? 1 \documentclass[a4paper]{article} 2 \usepackage{fontspec} 3 \usepackage{lipsum} 4 \setmainfont[mapping=tex-text]{tex Gyre Pagella} 5 \setsansfont[mapping=tex-text]{tex Gyre Heros} 6 \begin{document} 7 \lipsum 8 \end{document} Answer : xelatex & lualatex
LuaL A T E X 으로컴파일하면 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
엔진의진화 Lua Omega Aleph T E X ε-t E X pdft E X LuaT E X X T E X E
LuaL A T E X = LuaT E X + L A T E X + Engine Macro (ε-)t E X pdft E X X T E X E LuaT E X Plain tex pdftex xetex luatex L A T E X latex pdflatex xelatex lualatex
LuaL A T E X = LuaT E X + L A T E X + fontspec LuaL A T E X fontspec fontspec L A T E X X T E X E LuaT E X T E X Live 2009 T E X Live 2010
fontspec 을포팅한 LuaL A T E X 을사용하면 시스템글꼴을포함하여오픈타입 트루타입글꼴들을손쉽게쓸수있다오픈타입레이아웃속성들을손쉽게적용할수있다 X T E X 을위해작성된기존텍파일을그대로또는최소한의수정만거쳐 E lualatex으로컴파일할수있다 LuaT E X 엔진이제공하는고급기능들을쓸수있다.
LuaT E X 엔진의고급기능 pdft E X을계승했으므로글자늘이기 (expansion) 내밀기 (protrusion) 따위의마이크로타입기능을적용할수있다 pgf/tikz는물론이고 METAPOST 코드도텍소스에직접넣을수있다 Lua 프로그래밍을통해엔진내부의여러기능들을제어할수있다
Expansion, Protrusion 사용례 X T E X with hanging punctuation E LuaT E X with Expansion & Protrusion
METAPOST 사용례 1 \begin{mplibcode} 2 beginfig(0); 3 h=2in; w=2.7in; 4 path p[], q[], pp; 5 for i=2 upto 4: ii:=i**2; 6 p[i] = (w/ii,h){1,-ii}...(w/i,h/i)...(w,h/ii){ii,-1}; 7 endfor 8 q0.5 = (0,0)--(w,0.5h); 9 q1.5 = (0,0)--(w/1.5,h); 10 pp = buildcycle(q0.5, p2, q1.5, p4); 11 fill pp withcolor.7white; 12 z0=center pp; 13 picture lab; lab=thelabel(btex $f>0$ etex, z0); 14 unfill bbox lab; draw lab; 15 draw q0.5; draw p2; draw q1.5; draw p4; 16 dotlabel.top(btex $P$ etex, p2 intersectionpoint q0.5); 17 dotlabel.rt(btex $Q$ etex, p2 intersectionpoint q1.5); 18 dotlabel.lft(btex $R$ etex, p4 intersectionpoint q1.5); 19 dotlabel.bot(btex $S$ etex, p4 intersectionpoint q0.5); 20 endfig; 21 \end{mplibcode} R S Q f > 0 P
Lua 프로그래밍으로구현한기능하나 : colorjamo 1 local function do_color_jamo (head) 2 for curr in traverse_id(glyph, head) do 3 local cjm = has_attribute(curr, colorjamoattr) 4 local uni = has_attribute(curr, unicodeattr) 5 if cjm and uni >= 0x1100 and uni <= 0x11FF then 6 local colorstart = nodecopy(pdfliteral) 7 local colorstop = nodecopy(pdfliteral) 8 colorstop.data = "0 g" 9 if uni < 0x1160 then 10 colorstart.data = "1 0 0 rg" 11 elseif uni < 0x11A8 then 12 colorstart.data = "0 1 0 rg" 13 else 14 colorstart.data = "0 0 1 rg" 15 end 16 head = insert_before(head, curr, colorstart) 17 insert_after (head, curr, colorstop) 18 end 19 end 20 return head 21 end 어져내일이야그릴줄을모로 ᄃᆞ 냐이시라 ᄒᆞ 더면가랴마 ᄂᆞᆫ 제구 ᄐᆞ 여보 ᄂᆡ 고그리 ᄂᆞᆫ 情은나도몰라 ᄒᆞ 노라
Transparent Font Color 한국텍학회 1 \newfontfamily\red [Color=FF000088]{NanumGothic} 2 \newfontfamily\green [Color=00FF0088]{NanumGothic} 3 \newfontfamily\blue [Color=0000FF88]{NanumGothic} 4 \newfontfamily\yellow [Color=FFFF0088]{NanumGothic} 5 \newfontfamily\magenta [Color=FF00FF, Opacity=0.5]{NanumGothic}
LuaL A T E X 의단점 느리다 ( 특히 CJK 글꼴처리 ) 40 쪽분량한글문서하나를컴파일하는데 ( 초 ) Mac Linux X T E X 3.244 1.898 E LuaT E X 16.036 14.434 LuaT E X (expansion & protrusion) 19.343 17.040 개발단계이므로버그가가끔씩발견된다 매우복잡한오픈타입 feature 는아직지원못한다 아직은 PSTricks 코드를텍소스에직접쓸수없다 매크로라이터는텍뿐만아니라 Lua 프로그래밍도알아야한다
LuaT E X-ko 개발 : 글꼴명령 fontspec 도입에따른글꼴명령정비 \setmainhangulfont \setsanshangulfont \setmonohangulfont \newhangulfontfamily \addhangulfontfeature \hangulfontspec \setmainhanjafont \setsanshanjafont \setmonohanjafont \newhanjafontfamily \addhanjafontfeature \hanjafontspec 영문글꼴에글자가없을때한글글꼴에서, 한글글꼴에도글자가없을때 한자글꼴에서글자를찾는다
LuaT E X-ko 개발 : 글꼴옵션 fontspec 도입에따른글꼴옵션정비 InterHangul = <number> InterLatinCJK = <number> PunctRaise = <number> CharRaise = <number> Protrusion [ = <string> ] Expansion [ = <string> ] 옵션값의 <number> 단위는 em 이고 <string> 기본값은 default
X T E X 의한계를극복한예 E [InterHangul=0.5] 설정한경우 1 글자색을넣어본다.\\ 2 \alert{ 글자색 } 을넣어본다. 글자색을넣어본다. 글자색을넣어본다. 3 그룹바깥그룹안그룹바깥 \\ 4 그룹바깥 { 그룹안 } 그룹바깥 그룹바깥그룹안그룹바깥 그룹바깥그룹안그룹바깥 5 안녕하세요.\\ 6 안녕 \relax 하세요. 안녕하세요. 안녕하세요.
LuaT E X-ko 개발 : 그밖의주요기능 일본어 중국어조판드러냄표루비세로쓰기 ulem 패키지의여러명령 君子は和して同ぜず 君子 くんしは和 く君君ん子子しはは和 和わし して てど同 同うぜ ぜず ず わどうして同ぜず 君子は和 し て 同 ぜ ず 君子は和して同ぜず
Manuals 기초 texdoc fontspec texdoc luatexko 심화 texdoc lualatex texdoc luaotfload texdoc luatexbase 고급 texdoc luatex