KTUG 한국 텍 사용자 그룹

Menu

KTUG :: Q&A 마당

개인용 컴퓨터에서 해볼 수 있는 간단한 방법을 생각해봅니다. (제 생각에 좀더 큰 규모의 반복작업이라면 DB를 이용하는 것이 최선이라고 봅니다만.)

핵심은 일단 문서의 각 부분을 모두 잘라서 별개의 파일로 저장하는 겁니다. 그러면 abstract.tex, introduction.tex, methods.tex, results.tex, discussion.tex, references.tex, figure.tex legends.tex이라는 파일이 생겨나겠죠.

그 다음에 scientificreport-preamble.tex이라는 파일을 만듭니다. 여기에는 \documentclass부터 시작해서 \begin{document}까지 들어갈 거고요. 이 문서 양식에 필요한 설정들이 포함되겠죠.

다음과 같은 shell script를 작성합니다. (Windows에서는 비슷한 bat나 powershell script를 작성할 수 있을 겁니다만... 저라면 Windows Subsystem for Linux의 bash를 이용하는 쪽을 추천하겠습니다.)

#!/bin/sh

array_subs=($*)

for (( i=0; i< ${#array_subs[@]}; i++)); do
	echo "\\input{${array_subs[$i]}}"
done

echo "\\end{document}"

이걸 예컨대 myscript.sh이라고 저장한 다음에 명령행에서 다음과 같이 실행합니다. ($는 프롬프트 표시이고 역슬래시는 한 줄에 써야할 것을 나누어보인다는 의미입니다.)

$ sh ./myscript.sh scientificreport-preamble abstract introduction resutls discussion \
methods references figure >abcde.tex

그러면 생성된 abcde.tex은 다음과 같은 내용으로 되어 있을 겁니다.

\input{scientificreport-preamble}
\input{abstract}
\input{introduction}
\input{results}
\input{discussion}
\input{methods}
\input{references}
\input{figure}
\end{document}

이걸 그냥 컴파일하면 원하는 pdf를 얻을 겁니다. 그런데 소스를 어딘가에 보내야 한다면 이 상태로는 좀 그러니까 각 파일 내용을 하나의 파일로 담아야 합니다. 이것은 TeX Live에 포함되어 있는 latexpand라는 유틸리티를 이용합니다.

$ latexpand abcde.tex -o myarticle.tex

myarticle.tex을 열어 보십시오. 내용이 그대로 들어와 있을 겁니다. 다른 순서의 문서는 아까 한 myscript.sh의 첫째 인자를 다른 preamble로 해서 새로 만들면 됩니다.

KTUG 한국 텍 사용자 그룹