KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
- TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
자유글 parallel pages, parallel columns, and progress
2019.05.30 20:57
선사시대... 에 있었던 일입니다. 영한대역본을 조판하는 문제를 당시 Progress님을 비롯한 다른 분들과 고민한 적이 있습니다.
그 결과로서 영어로 된 pdf와 한국어로 된 pdf를 따로 만든 다음 한 페이지씩 끼워넣너 최종본을 만드는 방법이 제시되기도 했었습니다. 지금이야 pdfjam 한 방이면 간단하지만 그 당시에는 이런저런 궁리를 했던 것으로 기억합니다.
주말인데 비도 오고... 그 때 생각도 나고 해서 2019년 지금은 이런 일이 과연 간단한가 테스트해보았더랬습니다. 그 결과를 여기에 적어두려 합니다.
세상 좋아진 것이, 그 때와 비교하면 우리에게 Noto 폰트라는 게 있습니다. 폰트 관련한 문제는 일단 해결된 셈이죠.
그리고 paracol이라는 꽤 좋은 패키지가 있어서 parallel column 등을 구현하는 것도 어렵지 않을 것 같았습니다. 그런데 제가 원하는 것은 이를테면 원문은 별도의 파일로 존재하고 번역본도 별도의 파일로 존재하는데 그 양이 상당할 경우에, 이것을 "문단별로 parallel"하게 하고 싶은 것이었습니다. 소스를 수정하여 한 문단씩 따다 붙여 하나의 파일로 만드는 것은 도저히 놀이삼아 할 만한 일은 아닌 듯하여요.
그래서 원본 소스의 각 문단에 tag를 붙여서 처리하기로 하였습니다. 이제 "플레인 텍스트 파일이 있고 각 문단은 두 개 이상의 빈 줄로 구분되어 있습니다. 이 파일의 각 문단의 시작 부분과 끝 부분에 일정한 tag(이를테면 문단번호)를 간단히 붙여 보시오"라는 문제를 풀어야 합니다.
각 문단이 시작할 때와 끝날 때 태그를 붙였습니다. (첨부파일 참조)
저는 이 일을 (개인적인 취향이지만) 우주 최강의 텍스트 프로세싱 유틸리티라고 생각하는 gawk로 다음과 같이 했습니다.(사용한 gawk 명령은 금지어 때문에 보일 수가 없네요. 첨부파일 안의 sh 스크립트를 보세요.)
첨부파일의 ginga-1-j.txt가 원본 원어 파일이고 ginga-1-k.txt가 한글 번역본입니다. 여기에 위의 명령을 적용한 것이 ginga-1-jj.txt와 ginga-1-kk.txt입니다. 다른 좋은 방법이 얼마든지 있겠지요. 제안해주시기를 부탁합니다. 다양한 방법을 보았으면 좋겠어요.
참고로, Mac OS에 기본으로 들어 있는 awk는 BSD버전이라서 POSIX 옵션을 주어야 하기 때문에 저렇게 명령을 주면 뜻대로 되지 않습니다. 반드시 GNU awk을 써야 하고 Linux에서는 그냥 awk으로 되겠지만 Mac에서는 homebrew로 gawk를 설치해야 할 겁니다.
여기까지 하고 나면 나머지는 자연스럽게 진행되었습니다. 첨부 파일에는 두 개의 샘플이 들어 있는데, partexttest.tex은 한 페이지를 두 컬럼으로 나누고 대역 배치를 한 것이고 parpagetest.tex은 왼쪽 페이지와 오른쪽 페이지를 대역본으로 배치하여 조판한 것입니다. 다음 그림은 페이지별 parallel 조판의 결과를 보여줍니다.
번역의 품질은 책임지지 않습니다. 제가 한 것도 아니고... 그냥 여기저기 긇어온 것이기 때문입니다. 그러나 원본 텍스트는 신뢰할 만할 거라고 봅니다. 그리고 이 샘플의 일본어 조판은 xetexko의 japanese를 이용한 것으로서 일본어 조판의 요구사항을 모두 완벽하게 따르고 있는지 알지 못합니다.
번역본에서 주인공 이름이 "자네리"라고 되어 있는데 사실 이 이름은 아마도 Zanelli일 것이고 영어 번역본에서도 그렇게 하고 있습니다. 그래서 우리말 번역본에서는 대개 "자넬리"라고 하고 있는 것으로 압니다.
실용적으로 활용해야 한다면 조금 더 세심하게 신경써야 할 점이 있을 것으로 보입니다. 그러나 대체적으로다가 제가 원하던 결과를 얻었다고 생각하고 있습니다.
ps. 이 샘플을 Progress 님께 보여드리고 싶어서 이 글을 썼습니다.
댓글 8
-
yihoze
2019.05.31 09:20
-
noname
2019.05.31 10:16
$ tlmgr install ksruby (KTUG PrRepo)
or
$ tlmgr update ksruby
-
yihoze
2019.05.31 10:33
제가 아직 TL2019로 올리지 못했습니다. 나중에 해보겠습니다.
-
noname
2019.05.31 10:41
이거 하나 때문에 업그레이드는 너무 낭비겠지요... 그냥 요거 하나 받아서 TEXMFHOME에 설치해두시죠. (나중에 2019로 올리고 나면 꼭 지워야 합니다만...)
cd `kpsewhich -var-value=TEXMFHOME`
curl -O http://ftp.ktug.org/KTUG/texlive/tlnet/archive/ksruby.tar.xz
tar xvf ksruby.tar.xz이걸로 되지 싶고요. 필요하다면 ksruby.doc.tar.xz도 받아서 풀면 설명문서가 나옵니다.
-
Progress
2019.06.01 17:49
(아, 실컷 쓰고 본문이 날아가버렸어요, 다시 복기)
헐, 추억 돋네요.
예전에 만들어주신 이 솔루션, 감사했습니다.
비록 실제 사용하지는 못하고 현업을 떠나오게 되었지만 이 솔루션으로 마음이 든든했습니다.최근 lshort-ko 번역하신 것 홍보도 할 겸 lshort-english와 lshort-korean 문서를 지그재그로 합쳐보았습니다. (여기서는 49쪽까지만 합쳐봤음)
- 쪽번호 없이 lshort와 lshort-ko의 pdf를 만들어 놓고 (lshort 문서의 경우 글자크기도 10포인트로 조정하고, lshort-ko처럼 백면이 생기지 않도록 openany 옵션을 주었습니다)
- 영문 원문은 펼침면 왼쪽(짝수쪽), 한글 번역본은 펼침면 오른쪽(홀수쪽)에.
- 두 문서가 공평하게 비교되도록 타이틀 페이지 하나 만들고, 그리고 적당히 면주를 달아주면...
- 마치 원래부터 하나의 문서였던 듯 컴파일!
선사시대에 만들어졌던 오리지널 솔루션은 지금도 막강한 컴파일 속도를 자랑합니다. 그만큼 간명하고 탁월한 솔루션이었던 것이었음을...
존경과 경의를 표합니다.% for quick compile, use pdflatex!
\documentclass[a4paper,twoside]{oblivoir}\usepackage{fapapersize}
\usefapapersize{*,*,1in,*,1in,*}\usepackage{pdfpages}
% 유물 시작
\makeatletter
\def\for#1#2#3{\@ifnextchar[{\@for@{#1}{#2}{#3}}{\@for@{#1}{#2}{#3}[1]}}
\long\def\@for@#1#2#3[#4]#5{\setcounter{#1}{#3}\addtocounter{#1}{1}%
\edef\for@loopend{\arabic{#1}}%
\setcounter{#1}{#2}%
\loop
\ifnum \expandafter\the\csname c@#1\endcsname < \for@loopend\relax
#5\addtocounter{#1}{#4}\repeat}
\newcounter{repeatcnt}
\makeatother
% 유물 끝\makepagestyle{zigzag}
\makeevenhead{zigzag}{\textbf{\thepage}}{}{이것은 lshort-english 문서}
\makeodd head{zigzag}{이것은 lshort-korean 문서}{}{\textbf{\thepage}} % d head가 금지어다. 별게 다 금지어다.
\makeevenfoot{zigzag}{}{지그재그로}{}
\makeoddfoot{zigzag}{}{합쳐 봅시다!}{}
\pagestyle{zigzag}\begin{document}
\title{두 pdf 문서를 지그재그로 합치기}
\author{noname}
\date{선사시대(prehistoric PDF Manipulation)}\aliaspagestyle{title}{empty}
\setlength{\droptitle}{5\onelineskip}
\maketitle\for{repeatcnt}{1}{49}{%
\includepdfmerge[pagecommand={\thispagestyle{zigzag}}]{lshort.pdf,\therepeatcnt,lshort-ko.pdf,\therepeatcnt}
}
\end{document}- zigzag_pdf-1.jpg [File Size:109.0KB/Download:217]
- zigzag_pdf-2.jpg [File Size:179.5KB/Download:220]
- zigzag_pdf-5.jpg [File Size:396.9KB/Download:219]
- zigzag_pdf-6.jpg [File Size:466.8KB/Download:218]
- zigzag_pdf-7.jpg [File Size:560.9KB/Download:218]
- zigzag_compile_two_documents_test.tex [File Size:1.2KB/Download:280]
-
DohyunKim
2019.06.05 21:48
루아텍으로 한 번 해봤습니다.
-
noname
2019.06.06 07:45
멋지네요. 재밌는 샘플을 보여주셔서 고맙습니다.
-
noname
2024.09.28 09:02
printnthpar (2024)를 이용하여 해봤습니다(첨부파일, xelatex).
컴파일에 성공하지 못했습니다.
Package keyvalue Error: Unknown option 'rubywidth' for package ksruby.
저는 앞서 올리신 것을 저장해 두었는데요. ksruby를 업데이트하셨나요?