Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

AutoTexPrev

Ce script permet d'obtenir des aperçus automatiques d'un document LaTeX au fur et à mesure qu'il est composé.

Par défaut, il compile le document avec la commande latex, et génère donc un fichier dvi. Ce fichier est affiché avec xdvi.

Il est bien entendu possible d'utiliser d'autres programmes, pour par exemple générer un fichier pdf à la place. Pour cela, voir la partie Configuration.

Téléchargement

Utilisation

autoTexPrev.sh document.tex

Configuration

Les variables en début de script permettent de choisir d'autres alternatives que celles par défaut.

Bonus avec vim

Les utilisateurs de vim seront ravis d'apprendre qu'il est possible d'automatiquement enregistrer le document en cours, et ainsi permettre la compilation régulière de celui-ci.

Pour ce faire, ajoutez ces lignes dans votre fichier ~/.vimrc :

" Pour la sauvegarde automatique
au BufRead,BufNewFile *.tex let b:start_time=localtime()
au CursorHold *.tex call UpdateFile()
au CursorHoldI *.tex call UpdateFile()
au BufWritePre *.tex let b:start_time=localtime()

" only write if needed and update the start time after the save
function! UpdateFile()
    if ((localtime() - b:start_time) >= 1 )
    update
    let b:start_time=localtime()
    echo "Only " . (localtime() - b:start_time) . " seconds have elapsed so far."
  endif
endfunction

Exemple d'utilisation

J'utilise ce script, qui lance un dmenu me demandant le nom du nouveau document. Il crée un dossier dans lequel il se déplace, et où il copie un Makefile tout prêt. Ensuite, il ouvre un nouveau fichier LaTeX avec le script AutoTexPrev.sh :

lanceur :

#!/bin/sh
# création d'un nouveau fichier Tex
. ~/.dmenurc

# Le prompt, ce que dmenu vous "dit"
P="Document:"
OPTION="-fn $FN -nb $NB -nf $NF -sb $SB -sf $SF -i -p $P "

FILE=$(echo "" | dmenu $OPTION)
if [ "$FILE" != "" ]; then
    FILENAME=$(basename "$FILE")
    mkdir -p "$FILENAME" && cd "$FILENAME"
    EXT="${FILENAME##*.}"
    cp ~/.vim/templates/latex.mk Makefile
    if [ "$EXT" != "tex" ]; then
        exec ~/.Scripts/autoTexPrev.sh "${FILENAME%.*"}.tex"
    else
        exec ~/.Scripts/autoTexPrev.sh "$FILE"
    fi
fi

exit 0

Makefile pour LaTeX

#PDFLATEX=pdflatex -interaction nonstopmode -no-file-line-error
PDFLATEX=rubber -f --pdf -s
BIBTEX=bibtex

TEXTSRC=$(wildcard *.tex)
PDFS=$(TEXTSRC:%.tex=%.pdf)

all: $(PDFS)
    @echo $(PDFS)

%.pdf: %.tex $(DEPENDS)
    #$(PDFLATEX) $(@:%.pdf=%.tex)
    rubber -f --pdf -s $<
    rubber-info --check $<

clean:
    @echo -n 'Cleaning latex build files...'
    rubber --clean
    @echo ' [done]'

.PHONY: all clean cleanall

cleanall: clean
    rm -f $(PDFS)
    rm -rf *.aux *.bbl *.blg *.log *.pdf *.toc *.snm *.out *.nav

Voir aussi

http://vim.wikia.com/wiki/Compiling_LaTeX_from_Vim