编写一个Makefile来编译.tex到.pdf

时间:2014-12-18 01:43:52

标签: makefile latex

shell脚本的简单过程可能是这样的:

  1 #!/bin/sh
  2 
  3 latex --verbose manual.tex
  4 dvips manual.dvi
  5 ps2pdf manual.ps
  6 rm manual.{aux,log,ps,dvi}

从.tex转换为pdf有3个步骤:

.tex -> .dvi -> .ps -> .pdf

使用Makefile我试过的是什么?

  1 FILENAME = manual
  2 $(FILENAME).pdf: $(FILENAME).ps
  3     ps2pdf $(FILENAME).ps
  4
  5 $(FILENAME).ps: $(FILENAME).dvi
  6     dvips $(FILENAME).dvi
  7
  8 $(FILENAME).dvi: $(FILENAME).tex
  9     latex --verbose $(FILENAME).tex

当我第一次运行Makefile我将获得这些文件时,此make无法成功

manual.aux ,manual.dvi, manual.log

并且错误消息是

...
l.36    \includegraphics[width=4in]{a.eps} // this error from latex
...
make: *** [manual.dvi] Error 1 // this error from Makefile
...

如果我再次运行它,我将获得.ps.pdf

请注意,只有一个Makefile可以正常运行的案例是我必须先修复latex的错误,然后再运行make。通过这种方式我可以得到.pdf没有任何错误。

Makefile的进一步请求我还希望清除其余文件.tex.pdf的所有文件,但尚未实施。

请帮我改进我的代码。

1 个答案:

答案 0 :(得分:1)

从我所看到的情况来看,latex有一个良性错误。为了处理这种情况,GNU Make在配方行前面使用-前缀:

    -latex --verbose $(FILENAME).tex

现在原始错误将被忽略,并且整个过程应该有效。