닥북 모음집용 루아 확장팩 0.91

고친 과정
고침 1.02005-08-09gryu
최초 작성
고침 1.12005-10-09gryu
runlua및 xslt 수정 사항 추가, 포매팅 추가

차례

1. 소개
2. 이전 버전(0.90)과의 차이
3. 사용권 정보
4. 설치
5. 구성
5.1. bin 디렉터리:
5.2. conf 디렉터리
5.3. software/luascripts 디렉터리
6. 스크립트 추가 설명
6.1. 편리한 루아 스크립트 실행 방법
6.2. foreach
6.3. xslt
6.4. wgetdbwiki
7. 직접 루아 스크립트 만들기

1. 소개

닥북 한국의 Win32용 닥북 모음집용 루아 확장팩(이하 "루아팩")은 Win32용 닥북 모음집에 스크립팅 언어 루아(Lua) 실행 환경과 몇 가지 편리한 루아 스크립트 들을 추가합니다. 이 루아팩의 주된 목적은, dbkshell.bat으로 띄우는 Windows 명령행 환경의 부족한 셸 스크립팅 기능을 보충하는 것입니다.

2. 이전 버전(0.90)과의 차이

  • runlua로 xslt 스크립트를 실행할 때 params.lua를 찾지 못하던 버그를 수정

  • xslt 스크립트 실행 시stylesheet 디렉터리에 있는 표준 XSLT 스타일시트를 좀 더 편하게 지정하는 기능을 추가

3. 사용권 정보

각 파일의 사용권은 특별한 언급이 없는 한 해당 패키지의 사용권을 따릅니다.

4. 설치

먼저 닥북 한국 Win32용 모음집(이하 모음집) 2005-07RC1 버전(또는 그 이후 버전)이 설치되어 있어야 합니다.

  1. 모음집의 docbook 디렉터리에 압축 파일을 풉니다. (압축 파일에는 docbook의 하위 디렉터리들이 들어 있으므로, docbook 디렉터리를 기준으로 해서 파일들을 풀어 넣어야 합니다.)

  2. configure.bat을 실행해서 dbkshell.bat을 갱신합니다.

5. 구성

5.1. bin 디렉터리:

  • lua50.exe, lua50.dll, luac50.exe - Lua 핵심 파일들. Lua 이진 파일 배포판 다운로드의 lua5_0r2_Win32_bin.tar.gz에서 추출

  • lfs.dll - LuaFileSystem 확장 모듈. Lua FileSystem 다운로드의 luafilesystem-1.1-win32.zip에서 추출

  • compat-5.1.lua - 확장 호환성 모듈. Compat-5.1 다운로드의 compat-5.1r4.zip에서 추출

  • runlua.bat - 루아 스크립트의 편리한 실행을 위한 일괄 파일. 닥북 한국이 제작했으며 GPL을 따릅니다.

  • lua.bat - lua50.exe를 실행합니다. 닥북 한국이 제작했으며 GPL을 따릅니다. 루아 버전이 변해서 실행파일 이름이 바뀌어도 그냥 lua만 실행하면 되도록 하기 위한 간단한 일괄 파일입니다

5.2. conf 디렉터리

  • makebat.xsl - configure.bat 실행 시 dbkshell.bat에 루아 관련 설정이 추가되도록 바뀌었습니다.

5.3. software/luascripts 디렉터리

아래의 스크립트 추가 설명에서 이야기하는 몇 가지 루아 스크립트들이 들어 있습니다. 이 스크립트들은 모두 닥북 한국이 제작했으며 GPL을 따릅니다.

6. 스크립트 추가 설명

6.1. 편리한 루아 스크립트 실행 방법

software/luascripts에 있는 스크립트들은 bin/runlua.bat를 이용해서 편하게 실행할 수 있습니다.

runlua.bat 사용법: runlua 스크립트이름 [옵션들]

스크립트 이름에 .lua를 붙이면 안 됩니다.

"스크립트이름"이 가리키는 것이 lua 파일이 아니라 software/luascripts/의 하위 디렉터리 이름인 경우 runlua는 그 하위 디렉터리에 있는 같은 이름의 lua 파일을 실행합니다. 예를 들어 runlua xslt 는 software/luascripts/xslt/xslt.lua를 실행합니다. 여러 개의 파일들로 된 루아 응용 프로그램인 경우 이런 식으로 하위 디렉터리를 만들면 software/luascripts/를 깔끔하게 유지하는 데 도움이 됩니다.

runlua.bat은 software/luascripts/run.lua 스크립트를 이용합니다.

software/luascripts/lfsutils.lua는 직접 실행할 수 있는 스크립트는 아니고, 아래의 스크립트들이 사용하는 파일 시스템관련 라이브러리입니다.

6.2. foreach

특정 디렉터리에 있는 특정한 형태의 파일들 전체에 동일한 명령을 수행하는 데 사용하는 유틸리티입니다.

사용법: runlua foreach [-n|--nosub] 파일_패턴 디렉터리 명령

  • -n, --nosub: 이 옵션을 지정하면 주어진 디렉터리의 하위 디렉터리들을 재귀적으로 처리하지 않습니다.(즉 주어진 디렉터리의 파일들만 처리합니다.)

  • 파일_패턴: 명령을 적용할 파일들의 패턴. 예를 들면 *.xml

  • 디렉터리: 명령을 적용할 파일들이 있는 디렉터리.

  • 명령: 패턴에 해당하는 파일에 적용할 명령. 다음과 같은 매크로들을 사용할 수 있습니다.

    • %i : 일련 번호. 첫 번째 파일은 1, 이후로 파일마다 1씩 증가.

    • %F : 파일 확장자를 포함한 파일 이름.

    • %f : 파일 이름만.

    • %e : 파일 확장자.

    • %p : 파일이 있는 경로만.

    • %P : 파일 경로, 파일 이름, 파일 확장자를 포함한 전체 경로이름

전체 경로 이름이 c:\docs\test.xml 이라 할 때 %F는 test.xml, %f는 test, %e는 xml, %p는 c:\docs, %P는 c:\docs\test.xml

예 1.

 runlua foreach *.xml c:\docs docbook2pdf %P %p\%f.pdf
	

6.3. xslt

파일에 담긴 매개변수들을 이용해서 xsltproc를 실행합니다.

사용법: runlua xslt [-c 설정파일] xsl_파일 xml_파일

설정파일은 다음 항목들이 한 줄에 하나씩 있는 텍스트 파일이어야 합니다.

 매개변수이름 = 값

	

예 2. 설정 파일의 예

#로 시작하는 줄은 주석
# 목차 관련
toc.section.depth=2
section.autolabel=1
# css
html.stylesheet.type = text/css
html.stylesheet = dbk.css
css.decoration = 0
	

xsl_파일 지정 시 파일 이름을 꺾음괄호로 감싸면 닥북 모음집 stylesheet 디렉터리가 자동으로 지정됩니다. 예를 들어 닥북 모음집이 c:\docbook 에 있다고 할 때, 다음을

 >runlua xslt c:\docbook\stylesheet\dbk-html-chunk.xsl my.xml
	

다음과 같이 짧게 실행할 수 있습니다.

 >runlua xslt {dbk-html-chunk} my.xml
	

위의 예에서 보듯이 확장자 .xsl도 생략할 수 있습니다.

6.4. wgetdbwiki

wget을 이용해서 위키 페이지의 XML 파일과 이미지 파일들을 가져옵니다. 이미지 파일들은 files 하위 디렉터리에 저장됩니다.

사용법: runlua wgetdbwiki 페이지이름 [위키_기준_URL]

[위키_기준_URL]은 페이지 이름을 제외한 위키 URL. 생략 시 http://docbook.or.kr/wiki/index.php/

예 3.

 runlua wgetdbwiki DocBookExample
	

참고

이 스크립트는 닥북 한국 위키 UsingWgetWithDbWiki에 나온 과정을 자동화한 것입니다.

7. 직접 루아 스크립트 만들기

루아 프로그래밍 방법과 활용에 대해서는 나중에 문서화하겠습니다. 일단,

  • 루아 자체에 대해서는 Lua 문서화를,

  • 셸 스크립팅에서 꼭 필요한 기능을 제공하는 LuaFileSystem에 대해서는 해당 매뉴얼

참고하세요. software/luascripts/lfsutils.lua, software/luascripts/foreach.lua도 좋은 참고가 될 것입니다.