Latex文档的分离编译

5
当编译latex文档时,编译器会产生许多“object”文件。这会使我工作的目录混乱不堪,并且会使像SVN这样的版本控制系统难以使用。当我处理C++代码时,我有单独的目录用于代码和对象,我可以在源目录上运行make,但.o文件会放在build目录中。
有没有适当的方法来执行这种分离式编译Latex文档?是否可以通过使用Makefile或通过向latex编译器传递选项来完成?
谢谢
4个回答

4

您可以使用:

pdflatex --output-directory=tmp file.tex

所有文件都将存储在名为tmp的文件夹中(包括pdf文档)。

由于这不是最佳解决方案,我制作了自己的工具pydflatex,通过存储辅助文件(使用上面的技巧),编译LaTeX源代码,并将pdf文档返回到当前目录,因此编译后,您的目录中只有file.texfile.pdf。这与版本控制非常兼容。


LaTeX 命令也有 --output-directory 选项,谢谢。 - tonicebrian
1
准确地说,pdflatexlatex都是指向主命令pdftex的符号链接,因此它们具有相同的选项。 顺便说一句,我认为现在很少有人对使用latex命令(而不是pdflatex)感兴趣了,因为PDF已经完全取代了DVI。 - Olivier Verdier

2

我对LaTeX没有太多帮助(最后一次认真使用它是20年前),但是对于Subversion,您应该阅读有关svn:ignore属性的内容-它使得忽略不想版本控制的文件变得容易(如目标文件、字节码文件(Python经常将其放在与源代码相同的目录中)、一些文本编辑器使用的备份文件等)。


Subversion不是最重要的问题。您可以使用svn:ignore,但必须在每个文档上指定该属性,这不是最佳选择。困扰我的另一个问题是,由于具有相同名称但具有不同扩展名的所有文件,您无法使用shell自动完成,或者只需在Latex出现问题时删除“object”文件。 - tonicebrian

0

Latex会在主文档所在的目录中生成临时文件。如果您希望将内容放置在不同的位置,请尝试使用以下类似的主文件。

\documentclass{article}
\input{src/maindocument.tex}

使用这种方法,您可以维护如下的目录结构。
/
    main.tex
    /src
         maindocument.tex

0

除了上述方法,还有两个选项。

  1. 使用Lyx:它会处理单独的文件。我认为它会将Latex文件复制到自己的私有目录中并在其上运行latex。无论如何,在当前目录中都不会创建任何内容。
  2. 使用makefile或其中一个特殊的Latex make程序,并让您的常规目标运行make clean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接