输出-dir与texlive和gvim

时间:2016-07-13 17:47:25

标签: vim latex latex-suite tex-live

我是gvim的usgin latex-suit。 我想使用output-dir选项。 我定义了:

let g:Tex_MultipleCompileFormats='pdf'
let g:Tex_CompileRule_pdf = 'pdflatex --output-directory=output --synctex=-1 -src-specials -interaction=nonstopmode $*'

问题在于,使用--output-directory选项,如果必要的话,latex-suit不会多次编译,只会编译一次。并且,如果引用更改,我必须手动编译它。

如何使用--output-directory配置latex-suit多个编译选项?

1 个答案:

答案 0 :(得分:2)

您有两个选择:使用makefile(我建议使用)或在g:Tex_CompileRule_pdf内多次运行命令。

使用Makefile

LaTeX文档,当它们变大时,可能很难管理:

  • 几个BibTeX参考文件,
  • {draft}模式下以不同方式编译的gnuplot图,
  • 和一般\input文件。

如果您尝试使用单个命令行管理它,很快就无法维护。使用Makefile可以在文件之间进行更好的依赖性检查,Vim也可以使用:make编译LaTeX文档(默认:makeprg,设置为make)。 Makefile的示例如下所示:

# Makefile for my LaTeX doc

LATEX  = pdflatex -output-directory=output -synctex=-1 -src-specials -interaction=nonstopmode
BIBTEX = bibtex
RM     = rm -f
BIB    = mybibs.bib
LTFS   = *.aux *.lof *.log *.lot *.fls *.out *.toc
DOCS   = *.dvi *.pdf
BIBS   = *.bbl *.blg
IDXS   = *.idx *.ilg *.ind *.ist
OTHER  = *.acn *.acr *.glg *.glo *.gls *.brf *.lol

all: document.pdf

%.pdf: %.tex %.bbl
    $(LATEX) $<
    $(LATEX) $<

.PRECIOUS: %.aux
%.aux: %.tex
    $(LATEX) $<

.PRECIOUS: %.bbl
%.bbl: %.aux $(BIB)
    $(BIBTEX) $<

.PHONY: clean
clean:
    $(RM) $(LTFS) $(DOCS) $(BIBS) $(IDXS) $(OTHER)

默认情况下,此Makefile运行pdflatex两次:一次构建节和页码,第二次进行正确的交叉引用。如果引用更改,.aux文件将被更改,pdflatex将运行三次。

如果您不使用BibTeX,则不需要有关%.bbl个文件的部分。

将几个命令放入g:Tex_CompileRule_pdf

我再次警告说,这很快就会变得无法维持。通过很长的命令行跟踪文件之间的依赖关系非常困难。

无论如何,你可以在Vim的外部命令中多次使用$*。实质上你可以这样做:

let g:Tex_CompileRule_pdf = 'pdflatex -output-directory=output '
  \. '-synctex=-1 -src-specials -interaction=nonstopmode $*; '
  \. 'pdflatex -output-directory=output '
  \. '-synctex=-1 -src-specials -interaction=nonstopmode $*'

当您按pdflatex时,它会运行<leader>ll两次(请注意分号)。

额外注意:我们确实有针对Vim特定问题的网站vi.SE部分。在那里获得与Vim相关的答案通常会更快。

相关问题