# How to dynamically change the output filename in Vim LaTeX Suite

Say, my .tex files are organized like this `~/Projects/proj_name/articles.tex`.

After compiling with LaTeX Suite, I want the output PDF file to be `proj_name.pdf` instead of `articles.pdf`. Since I have several projects in `~/Projects/` I want a systematic configuration in `.vimrc`.

Here is my current solution

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

This method is not satisfying since the name of `.aux` and `.bbl` are also changed to `proj_name` while Vim-LaTeX is still looking for `articles.aux`.

My question is, is there any other methods for doing this?

-
– Claudio Fiandrino Jan 17 '13 at 15:55

You may use this command :

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

but you have to change manually the command for each case.

-

I know this is an old question but I ran into the same problem as the OP and had to solve it.

As a note to other users: the OP's "current solution" does not work well because latex-suite checks the aux and bbl files with the same name as the tex file to see if it needs to run bibtex or recompile the pdf; it won't find them, since the command used also names these files according to the jobname. Hence it never runs multiple compilations to get the bib.

That said, I found no easy solution so here is a shell script I use as the new compile rule (e.g. named 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
``````

Then use this as the compile rule:

``````let g:Tex_CompileRule_pdf='tex2pdf \$*'
``````
-
Welcome to TeX.SX! Even if you're a Vim user. `:-D` – egreg May 13 '15 at 6:17