如何在 Vim LaTeX Suite 中动态更改输出文件名

如何在 Vim LaTeX Suite 中动态更改输出文件名

说说吧,我的.tex 文件是这样组织的~/Projects/proj_name/articles.tex

使用 LaTeX Suite 编译后,我希望输出的 PDF 文件为 而不是proj_name.pdfarticles.pdf由于我在 中有多个项目,因此~/Projects/我希望在 中进行系统配置.vimrc

这是我当前的解决方案

let g:Tex_CompileRule_pdf='pdflatex -interaction=nonstopmode -jobname=%:p:h:t $*'

.aux这种方法并不令人满意,因为和的名称.bbl也更改为 ,proj_name而 Vim-LaTeX 仍在寻找articles.aux

我的问题是,还有其他方法可以做到这一点吗?

答案1

我知道这是一个老问题,但我遇到了与 OP 相同的问题并且必须解决它。

给其他用户的提示:OP 的“当前解决方案”效果不佳,因为 latex-suite 检查与 tex 文件同名的 aux 和 bbl 文件,以查看是否需要运行 bibtex 或重新编译 pdf;它找不到它们,因为使用的命令也根据作业名称命名这些文件。因此它永远不会运行多个编译来获取 bib。

也就是说,我没有找到简单的解决方案,因此这里有一个我用作新编译规则的 shell 脚本(例如名为 tex2pdf):

#!/bin/bash

# Get the passed file name
fullName=$1

# Cut of the extension
filename="${fullName%.*}"

# Get the name of the current dir
dirName="${PWD##*/}"

# The usual command
pdflatex -interaction=nonstopmode ${fullName}

# Rename the pdf
if [ -e ${fileName}.pdf ]
  then
    mv ${filename}.pdf ${dirName}.pdf
fi

然后使用它作为编译规则:

let g:Tex_CompileRule_pdf='tex2pdf $*'

答案2

你可以使用这个命令:

:!pdflatex articles.tex && mv articles.pdf proj_name.pdf

但您必须针对每种情况手动更改命令。

相关内容