![如何在 Vim LaTeX Suite 中动态更改输出文件名](https://linux22.com/image/261517/%E5%A6%82%E4%BD%95%E5%9C%A8%20Vim%20LaTeX%20Suite%20%E4%B8%AD%E5%8A%A8%E6%80%81%E6%9B%B4%E6%94%B9%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D.png)
说说吧,我的.tex 文件是这样组织的~/Projects/proj_name/articles.tex
。
使用 LaTeX Suite 编译后,我希望输出的 PDF 文件为 而不是proj_name.pdf
。articles.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
但您必须针对每种情况手动更改命令。