make diff 하면 LaTeX 소스 파일에서 차등 PDF가 만들어지는 샘플

4681 단어 LaTeXMakefile

소개



사독이 있는 논문지에 논문을 투고하면, 사독 코멘트가 돌아온다. 대부분의 경우 한 번에 통과하지 않고 검토 코멘트에 따라 수정해야 할 것입니다. 이때, 전회 투고한 판과의 차분을 명시한 PDF를 첨부하라고 하는 일이 있다. Word의 차등 표시 등을 상정하고 있는 것이겠지만, LaTeX를 사용하고 있으면, 차분 PDF를 만드는 것이 조금 귀찮게 한다. 그래서 make diff 로 차분 PDF를 만드는 makefile을 만들어 운용하고 있다. 이 makefile, 누군가의 참고가 될지도 모르기 때문에 조금 소개해 본다.

샘플 파일을 아래에 둡니다.

정책



차분 추출에는 latexdiff를 사용한다.
$ latexdiff before.tex after.tex > diff.tex

그리고, 차분 표시용의 LaTeX 파일이 작성되므로, 그것을 컴파일하면 된다.

차등을 작성하는 원래의 판이지만, Git나 Subversion의 태그로 관리하는 방법도 있다고 생각되지만, 우선 디렉토리로 관리해 버리기로 한다. 논문을 투고할 때 submit이라는 디렉토리를 파고, 거기에 투고시의 소스 파일을 던져 넣자.

나중에 차이가 필요하면, 현재 디렉토리와 그 아래의 submit 디렉토리에 있는 소스 파일로부터 차이를 만드는 것으로 하자. 디렉토리 구성은 이런 느낌 (그림이나 참고문헌 파일은 생략되어 있다).
.
├── makefile
├── sample.tex
└── submit
    └── sample.tex

Makefile



우선 makefile은 이런 느낌이 된다.
TARGET=sample
SRC=$(TARGET).tex
DVI=$(SRC:.tex=.dvi)
PDF=$(SRC:.tex=.pdf)
EPS=$(shell ls *.eps)
TEX=platex
DVIPDF=dvipdfmx
DIFFDIR=submit 

.SUFFIXES: .tex .dvi .pdf

all:$(PDF) 
    open $(PDF)

$(DVI): $(SRC) $(EPS)

$(PDF): $(DVI) 

.dvi.pdf:
    $(DVIPDF) $<

.tex.dvi: 
    $(TEX) $<
    $(TEX) $<

diff: diff.pdf
    open $<

diff.pdf: diff.tex

diff.tex: $(SRC)
    latexdiff $(DIFFDIR)/$(SRC) $(SRC) > diff.tex

clean:
    rm -f $(DVI) *.aux *.log *.toc *.pbm *.bmc $(PDF) diff.pdf

세세한 설명은 불필요할까 생각하지만, TARGET 에 LaTeX 소스 파일명, DIFFDIR 에 차등 표시의 기점이 되는 판이 놓여 있는 디렉토리를 지정하면 그대로 사용할 수 있다고 생각한다. bibtex를 사용하는 경우 .tex에서 .pdf를 만드는 규칙에 해당 처리를 추가해야합니다.

이 makefile을 사용하여 단순히 make 그러면 현재 디렉토리의 최신 버전이 컴파일되고 PDF가 표시됩니다. make diff 그러면, DIFFDIR 로 지정한 디렉토리 이하의 소스 파일과 현재의 소스 파일의 차분을 diff.tex 에 토하고 나서, 그것을 컴파일해 diff.pdf 를 작성해, 표시한다.
diff.pdf 는 예를 들면 다음과 같습니다.



이전 버전과 비교하여 삭제 된 부분이 빨간색으로, 추가 된 부분이 파란색으로 표시됩니다.

요약



makefile을 사용하여 차등 PDF를 작성하는 샘플을 만들어 보았다. 보통은 make 로 컴파일하고, 가끔 make diff 그러면 스스로도 어떻게 수정했는지 알 수 있다. 나는 LaTeX 컴파일에 make를 사용하고 있기 때문에, 차등 표시도 makefile로 할 수 있으면 편리하다고 생각해 짜넣었지만, 보통의 사람은 TeXShop라든지 그러한 것을 사용하고 있습니까?

여기에서는 단순히 디렉토리로 했지만, 아마 문서는 어떠한 VCS로 관리되고 있을 테니까, 태그를 사용하는 것이 스마트한 생각이 든다. 아무리 Subversion이라면 태그도 디렉토리도 비슷한 것이지만・・・

아무래도 좋지만, LaTeX의 매크로라든지 쓰고 있으면 여러가지 힘들기 때문에, LaTeX의 대체 시스템, 예를 들면 SATySFi 같은 것이 발전할 것을 기대.

좋은 웹페이지 즐겨찾기