KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
A good memory does not equal pale ink.
FrontPage › SampleDocument/LuaTeX

오늘의 비틀즈 가사


아래의 코드를 luatex으로 실행하면, 실행할때마다 새로운 비틀즈 가사를 얻을 수 있습니다.

beatles.lua
local http = require("socket.http")
local archiveUrl = "http://www.beatleslyricsarchive.com/viewSong.php?songID="..math.random(1,439) 
local htmlBody = http.request(archiveUrl) 
local s, t, title, lyrics 

s, t, title = string.find(htmlBody, '<h1>(.-)%s*<i>.-</i></h1>') 
tex.print('{\\titlefont '..title..'}\\bigskip\\bigskip') 

s, t, lyrics = string.find(htmlBody, '<td width=\"25\">&nbsp;</td>%s*<td>%s*(.-)%s*</td>') 
lyrics = string.gsub(lyrics, '<br>', '\\par ') 
tex.print(lyrics)
beatles.tex
\magnification=\magstep1 
\input kotexplain 
\font\titlefont=cmbx10 at 18pt 
\nopagenumbers 

\directlua{ dofile(kpse.find_file("beatles.lua")) } 

\bye

발주서 만들기


발주서(견적서 또는 청구서)의 요소를 먼저 살펴 보자.
  1. 보내는 사람(곳)의 정보가 있다.
  2. 받는 사람(곳)의 정보가 있다.
  3. 보내는 날짜와 문서의 번호가 있다.
  4. 수량, 단가, 총액 등의 표시된 표가 있다.
  5. 직인 또는 서명이 있다.

워드 프로세서로 만든다면,
  1. 계산을 따로 해서 값을 넣어줘야 한다.
  2. 천 자리 띄어 쓰기나 소수점 표기를 국가 표준에 맞게 고쳐줘야 한다.

그렇다면 왜 엑셀을 쓰지 않고, 루어텍을 쓰는가?
  1. 발주서의 각 요소를 모듈로 만들 수 있다.
  2. PDF를 쉽게 만들 수 있다.
  3. 문서를 보기 좋게 만들 수 있다.
  4. 계산이 가능하고 금액 표시를 각 국가 표준에 맞게 할 수 있다. (이건 sistyle 패키지가 해 준다.)

\documentclass[a4paper,11pt]{memoir}
\input{po}

\ServiceProvider{%
SAMSONG\\
763-10 Bugok-dong Sangnok-gu\\
Ansan
}

\ProviderContact{James Bond}

\PurchaseOrderNumber{J9216A}
\PurchaseOrderDate{16th February 2009}

\SIstyle{Switzerland}

\begin{document}

\thispagestyle{empty}

\directlua0{
        array = {
                {"Desktop computer: DW-101X", 8, 1200},
                {"Laptop computer: LW-804K", 4, 2500}
        }
}
\PurchaseOrder
\end{document}

po.tex은 이렇다.
\usepackage{sistyle}

\newcommand{\paymentcurrency}{}
\newcommand{\PaymentCurrency}[1]{\renewcommand\paymentcurrency{#1}}
\PaymentCurrency{\EUR}


\AddToSIstyle{Europe}{
\SIgroupfourfalse
\SIthousandsep{\,}
\SIdecimalsign{,}
\PaymentCurrency{\EUR}
}

\AddToSIstyle{Switzerland}{
\SIgroupfourfalse
\SIthousandsep{'}
\SIdecimalsign{,}
\PaymentCurrency{CHF}
}

\AddToSIstyle{UK}{
\SIgroupfourfalse
\SIthousandsep{,}
\SIdecimalsign{.}
\PaymentCurrency{\pounds}
}

\AddToSIstyle{USA}{
\SIgroupfourfalse
\SIthousandsep{,}
\SIdecimalsign{.}
\PaymentCurrency{\$}
}

\setulmarginsandblock{3cm}{3cm}{*}
\setheadfoot{1.5cm}{1cm}
\setlrmarginsandblock{2.5cm}{2.5cm}{*}
\checkandfixthelayout
\makeoddhead{empty}{}{}{KTUG}

\newcommand{\purchaseordernumber}{}
\newcommand{\PurchaseOrderNumber}[1]{\renewcommand\purchaseordernumber{#1}}
\newcommand{\purchaseorderdate}{}
\newcommand{\PurchaseOrderDate}[1]{\renewcommand\purchaseorderdate{#1}}

\newcommand{\serviceprovider}{}
\newcommand{\ServiceProvider}[1]{\renewcommand\serviceprovider{#1}}
\newcommand{\providercontact}{}
\newcommand{\ProviderContact}[1]{\renewcommand\providercontact{\textbf{#1} }}

\newcommand{\servicepurchaser}{}
\newcommand{\ServicePurchaser}[1]{\renewcommand\servicepurchaser{#1}}
\newcommand{\purchasercontact}{}
\newcommand{\PurchaserContact}[1]{\renewcommand\purchasercontact{\textbf{#1} }}
\newcommand{\purchasersignature}{}
\newcommand{\PurchaserSignature}[1]{\renewcommand\purchasersignature{#1}}
\newcommand{\purchaserremark}{}
\newcommand{\PurchaserRemark}[1]{\renewcommand\purchaserremark{\textbf{Remark}:\\#1}}

\newcommand{\breakdownfont}{}

\newcommand{\tmpamount}{}

\ServicePurchaser{%
TOPFIELD Co., Ltd.\\
Topfield Bldg. 207 Geumgok-dong Bundang-gu Seongnam Korea 463-869\\
+82 31 778 0845
}
\PurchaserContact{Jimmy LEE}
\PurchaserSignature{JimmyLEE}

\newcommand{\PurchaseOrder}{
\sffamily\vspace*{2ex}

\serviceprovider

\providercontact

\vspace{2ex}
\centerline{\Huge\textsc{Purchase Order}}
\vspace{2ex}

Number \purchaseordernumber

Please execute the following order under the terms and conditions stated below.

\PurchaseOrderBreakdown

\vspace{4ex}
\purchaserremark

\purchaseorderdate
\vspace{2ex}

\servicepurchaser

\purchasercontact

\hspace*{1cm}\purchasersignature
}

\newcommand{\PurchaseOrderBreakdown}{
\breakdownfont
\begin{tabularx}{\textwidth}{|X|r|r|r|}
\hline
Description & Quantity & Unit Price & Amount \tabularnewline
\hline
%
\directlua0{
        CurRow = 1
        TotRow = 10
        i = 1
        total = 0
        while array[i] do
                array[i][4] = array[i][2] * array[i][3]
                total = total + array[i][4]
                str = array[i][1].."&"..array[i][2].."& \string\\num{"..array[i][3].."}\string\\,\string\\paymentcurrency & \string\\num{"..array[i][4].."}\string\\,\string\\paymentcurrency\string\\tabularnewline\string\\hline"
                tex.print(str)
                CurRow = CurRow + 1
                i=i+1
        end
        while CurRow <= TotRow do
                str = "& & & \string\\tabularnewline\string\\hline"
                tex.print(str)
                CurRow = CurRow + 1
        end
}
\multicolumn{3}{|r|}{\textsc{Total}} & \num{\directlua0{tex.print(total)}}\,\paymentcurrency\tabularnewline
\hline
\end{tabularx}
}

\setlength{\parindent}{0em}
\endinput


위 코드는 컴파일 가능하지만 완전히 이해하려면 약간의 설명을 덧붙여야 한다. 아이디어 차원에서 참고하시길 바란다. pdflualatex을 이용하였다.

po_sample_1.jpg

Contributor hoze

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-10-08 11:46:52
Processing time 0.0330 sec