번역 일기

번역 작업 자체에 관한 기록을 남기는 것도 나쁘지 않겠다는 생각이 들어, 번역물과 함께 올릴까 합니다. 오늘은 첫 날이라 작업 환경 설정에 관한 내용이 많을 것 같네요. 그래도 첫 장은 초벌 번역을 마치고 올렸습니다.

작업 환경 꾸미기

토요일 오전은 도서관에서 보내고, 오후에 작업을 시작해보려고 책상에 앉았습니다. 시작하는 날이니 이것저것 준비해야 할 것들이 많습니다. 먼저 작업 환경부터 꾸며봅시다. 당장 사용할 것들만 나열해봅니다.

  • Mac Book Air
  • Git
  • MacTeX
  • Pandoc
  • Sublime Text

Git

주 작업 환경은 맥북 에어입니다. 철자법 검사용으로 VMWare Fusion 에서 실행되는 워드를 사용합니다만, 문서 작업 자체는 OS X 에서만 진행합니다. 일단 git 저장소를 만드는 일로 시작합니다. 다음 작업은 원본을 받아다가 저장소에 넣는 것입니다. 다운로드 해서 벤더 소스 브랜치를 만들고 밀어 넣습니다. 개정판을 만들 때 약간의 도움을 얻을 수 있지 않을까 기대하면서. 원본을 살펴보니 그림들 빼면 달랑 하나의 LaTeX로 만들어져 있군요. book.tex 라는 파일입니다.

MacTeX

LaTeX 은 주로 학교에 남아있는 동안 꽤 열심히 썼습니다만, 최근에는 쓸 일이 없었고, 당연히 노트북에도 설치되어있지 않습니다. 아직도 버리지 않고 책장에 꼽아둔 책들을 써먹을 수 있을지도 모르겠네요. MacTex–2013 배포판을 다운로드 받아 설치합니다. 2.3G 나 되는군요. 웬만한 패키지들은 다 들어있기를 기대합니다. Makefile 이 보여서 make 해보면 이런 메시지가 나옵니다.

Couldn't find input index file book nor book.idx.
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 ...]

아직 완전히 사라지지 않은 makeindex 의 기억은 일단, latex book 으로 어떻게든 보내서 book.idx 파일이 만들어지게 하면 해결된다고 합니다. 도중 에러가 나도 엔터키를 꾹 누르고 기다리면 끝까지 갑니다. 엉터리지만 book.idx 은 만들어집니다. 다시 make 하면 이젠 진짜 에러가 등장합니다.

LaTeX Error: File `hevea.sty' not found.

.sty 는 LaTeX 의 스타일 파일인데, hevea 는 처음 들어보는 패키지네요. 검색해보니 HTML 출력과 관계된 꽤 덩치 있는 패키지입니다. 왠지 오늘 건드리기 시작하면 설정만 하다가 끝날 것 같아 hevea.sty 파일만 찾아서 같은 폴더에 넣습니다. 이제는 끝까지 가지만 여전히 에러메시지가 보이네요.

evince thinkpython.pdf
make: evince: No such file or directory

evince 는 리눅스용 문서보기 프로그램이니, 간단히 Makefile을 주석 처리합니다. 이제 thinkpython.pdf 파일이 만들어지는 것 까지는 확인되었습니다. 내용을 대충 살펴보니 제가 알고 있는 버전이 맞는 것 같습니다. 최소한 크게 다르지는 않을 것 같습니다. 당장 TeX를 사용하여 출력물을 만들 것은 아닙니다. 그러려면 TeX의 한글지원부터 찾아봐야 하는데 나중으로 미뤄둡니다.

Pandoc

앞에서 HEVEA 를 재빨리 포기해버렸으니 블로그에 올릴 다른 방법을 마련해야 합니다. 선택한 방법은 만병통치약 Pandoc 입니다.

pandoc -s tex/book.tex --mathjax -o tex/book.html

이렇게 하면 간단히 html 로 변환됩니다. MathJax 옵션은 혹시나 하고 넣어둡니다. 첫 장을 번역하고 보니 잘 했다는 생각이 드네요.

자 이제 작전이 대충 나왔습니다. book.tex 파일을 직접 편집하여 한글로 번역한 후에, pandoc 으로 HTML 로 바꿔서, 블로그에 잘라 넣습니다. book.tex 파일을 편집하는 방법만 정하면 끝날 듯 합니다. 맥에서 제가 사용하는 편집기는 여러 가지 있습니다만, 오늘 고려해볼 만한 것은 세가지 입니다.

Sublime Text

일단 책을 번역하기로 한 이상 Scrivener 를 고려하지 않을 수 없습니다. 자료정리와 글쓰기를 한 곳에서 처리할 수 있도록 합니다만, 지금 처럼 자료조사 거의 필요 없고 파일도 달랑 하나로 통합되어 있는 이상 큰 쓸모는 없다는 판단이 듭니다.

그 다음으로는 iA Writer 를 생각해 볼 수 있습니다. 사실 요즘 블로그에 올리는 대부분의 글들은 iA Writer 로 시작합니다. 문서를 iCloud 에 넣어두고 맥북 에어와 아이패드에서 번갈아 가며 쓰다가, 최종 버전을 Marked 로 처리하여 포스트합니다. Scrivener 와 마찬가지로 집중 모드를 제공하는데, 이제 이 기능 없는 편집기는 쳐다보지도 않습니다. 하지만 iA Writer 는 Markdown 포맷으로 글쓰기 할 때는 좋지만, 책 한 권 통째로 들어있는 TeX 파일을 편집하는 데는 그리 장점이 없습니다. 그래서 마지막 선택지만 남습니다.

Sublime Text 는 주로 코딩 할 때 사용하는 편집기 입니다. 파이썬으로 어떤 제품을 만들어낼 수 있는지 궁금하신 분께서는 이 편집기를 사용해보세요. 아이패드로 작업할 때는 사용할 수 없다는 것 말고는 딱히 단점을 찾을 수 없습니다.

토요일에만 집중적으로 작업하는 이상 아이패드와 번갈아 가며 작업할 필요도 그리 없습니다. 가끔 아이와 도서관에 가서 하루 종일 있어야 하는 경우는 아이패드의 Textastic이 쓸만합니다. 만약을 위해 실험해봤는데 화면 낭비하지 않고 깔끔하게 잘 동작합니다.

방향이 잡혔으니 간단히 Sublime Text 로 프로젝트를 구성합니다. 먼저 프로젝트 파일입니다. thinkpython.sublime-project 라는 파일로 저장합니다.

{
    "folders":
    [
        {
            "path": ".",
            "folder_exclude_patterns": [
                ],
            "file_exclude_patterns": [
                "tex/book.aux",
                "tex/book.dvi",
                "tex/book.idx",
                "tex/book.ilg",
                "tex/book.ind",
                "tex/book.log",
                "tex/book.out",
                "tex/book.toc",
                "tex/hevea.sty",
                "*.pdf",
                "*.png",
                "thinkpython.sublime-workspace"
                ]
        }
    ],
    "settings":
    {
        "tab_size": 4,
        "translate_tabs_to_spaces": true,
        "default_encoding": "UTF-8"
    },
    "build_systems":
    [
        {
            "name": "Build",
            "cmd": ["./build.sh"],
            "working_dir": "$project_path"
        }
    ]
}

이 프로젝트 파일은 Sublime Text 의 Tools > Build System > Build 메뉴를 추가합니다. 선택하고 나면 Build 키를 누를 때마다 pandoc 이 실행됩니다. pandoc 을 실행하는 스크립트는 build.sh 인데 내용은 이렇습니다.

#!/bin/sh
pandoc -s tex/book.tex --mathjax -o tex/book.html

이제 커밋하면 작업 준비는 끝났습니다. 번역합시다.

번역

책 제목 정하기

이미 정해서 공개했지만 제목부터 짚고 넘어가야 할 것 같습니다. “컴퓨터 과학자처럼 생각하기” 라는 부제를 볼 때 “Think Python” 이라는 제목은 “Think in Python” 이라는 뜻으로 사용했을 가능성이 있어 보입니다. 그런데 Bruce Eckel 의 유명한 책 “Thinking in Java” 가 있습니다. 같은 시리즈로 “Thinking in C++” 도 있을 뿐만 아니라 잘 찾아보면 “Thinking in Python” 도 있습니다. 왠지 “Think in Python” 로 해석하면 이 시리즈와 제목이 겹칠 위험이 있어 보입니다. 그래서 막 나가기로 했습니다. 얼마 전에 작고한 이언 뱅크스의 작품중에 “Consider Phlebas” 라는 책이 있습니다. 국내에는 “플레바스를 생각하라” 라는 제목으로 나와있습니다. T.S. 앨리엇의 “황무지”라는 시에 나오는 구절이기도 한데, 저는 뜻을 떠나서 이 구절의 울림이 좋습니다. 그래서 욕먹을 생각하고 “파이썬을 생각하라” 로 정했습니다.

첫 장 제목 정하기

첫 장의 제목도 만만치 않습니다. 원래 제목은 “The Way of the Program” 인데, 내용은 프로그래밍 언어에 관계없이 프로그램과 프로그램을 작성하는 과정이 갖는 일반적인 속성과 프로그래밍을 학습하는 과정이 갖는 목표에 대해 서술하고 있습니다. 딱 마음에 드는 구절이 나오지 않는데, 제목만 붙잡고 있을 수 없어 일단 "프로그램의 길”로 타협했습니다. 계속 보다 보면 정이 들지도 모르겠으나, 책 제목과는 달리 딱 마음에 들지는 않습니다.

문화의 차이

제목에 고민한 것과는 달리 본문은 거의 한 줄 한 줄 기계적으로 번역했습니다. 하다 보니 어투가 바뀌기도 하고, 심하게 어색하고 장황한 표현들이 나오기도 하지만, 의미만 정확하다고 생각되면 그냥 넘겼습니다. 다 끝나고 교정 할 때 고민하지요. 하지만 단지 문장의 문제가 아닌 부분도 나옵니다. cummings 라는 시인에 관한 내용은, cummings 라는 시인이 대문자를 쓰지 않는다는 사실을 모르면 곤란하고, “The penny dropped” 라는 숙어 또는 은유를 사용한 예시는 한국인에게 그리 설득력이 없습니다. 뭔가 다른 표현으로 바꾸면 좋겠지만, 여기 기록해두고 나중에 고민하기로 합니다.

예제도 번역해야 하는가?

한가지 생각해볼 문제는 본문에 등장하는 파이썬 예제들에 포함된 영어 텍스트들을 한글로 옮길 것인가 하는 문제입니다. 당장은 영문 그대로 두었습니다. 이유는 이렇습니다. 첫째로 이 책의 독자는 대학교 신입생부터 좀 빠른 고등학생이나 심하게 빠른 중학생 정도로 보고 있습니다. 예제에 포함된 영어 텍스트가 당황스러울 독자는 없을 것으로 보입니다. 둘째로 첫 장에 나오는 텍스트는 “Hello, World!” 입니다. 번역을 안 하는 것이 더 좋을 만큼 유명한 구절입니다. 셋째로, 한글로 문자열을 바꿀 경우 인코딩을 지정해야 합니다. 이 부분의 설명 없이 그냥 번역된 예제를 입력하고 실행하려고 하면 대부분 에러메시지를 만나게 됩니다. 한글 인코딩과 같이 기초적이지만 영어책에서 잘 다루지 않는 주제들은 별도의 포스트를 올리는 것이 좋을 듯 합니다.

포스팅

번역을 끝내고 포스트를 올리려고 보니 두 가지 문제가 남아있습니다. 첫째는 그림입니다. xfig 이라는 도구로 그려서 pdf 파일을 만들었는데, 블로그에 올리려면 png 파일이 필요합니다. 그림 안에 포함된 글자들도 한글로 바꿔야 하는 것 아닌가 하는 생각도 듭니다만, 나중으로 미루고 pdfpng 로 변환하여 수작업으로 HTML 을 수정했습니다. 둘째는 “Exercise” 가 pandoc 에 의해 HTML 로 옮겨지지 않는 것입니다. 본문은 나오지만 “Exercise 1.1.” 과 같이 머리글이 만들어지지를 않습니다. 이 역시 일단은 수작업으로 넣습니다. 뭔가 방법을 찾아야만 할 듯.

비록 로그인을 해야 하지만, 이제 사이트에서 댓글도 붙이실 수 있습니다. 번역 오류를 신고하시거나 개선점을 건의하실 분들은 언제나 환영입니다. 일주일 후에 다시 찾아오겠습니다.