Re: Arara

#76451
Up
0
Down
::

OldClaudio” post=75645Sì, Enrico, sono tutte cose che sapevo e per questo il mio era solo un tentativo preliminare che richiedeva ulteriore studio. Infatti questa notte, nei periodi di veglia che mi capitano ogni notte, mi sono reso conto benissimo che quelle, e altre considerazioni, rendono quella mia piccola soluzione un giochetto che non ha validità generale.
Grazie comunque per avermelo ricordato.

Invece il seguente codice, che lascia la bibliografia indietro di un giro, ma non richiede altro che cliccare eventualmente una seconda volta il pulsante per eseguire la compilazione (o forse anche una terza alla conclusione della lavorazione del documento) sembra funzionare bene, ma appunto lascia la bibliografia indietro di un giro.
`\usepackage{etoolbox}
\AtBeginDocument{\renewcommand\bibliography[1]{\if@filesw\immediate\write\@auxout{\string\bibdata{#1}}\fi
\AfterEndDocument{\immediate\write18{bibtex #1}}\@input@{\jobname.bbl}}}`
Per fare una cosa seria, bisognerebbe inserire \AfterEndPreamble dentro la definizione idi \bibliography quale risulta alla fine del preambolo, dopo avere caricato tutti i pacchetti e predisporre la scelta di bibtex oppure biber prima di eseguire \write18; è chiaro che tutto ciò potrebbe stare in un pacchettino da immettere nel preambolo.

Comunque resta il problema che durante l’esecuzione di \end[document} si chiudono i file aux, poi li si riapre per aggiungere le ultime cose, poi li si chiude di nuovo; siccome le citazioni che vengono usate da bibtex e biber si trovano nei file aux, non ci sono santi, bisogna restare indietro di un giro.
Un’altra soluzione sarebbe quella di usare write18 per fare eseguire pdflatex di nuovo dopo aver eseguito bibtex/biber sottoposto a uno switch che eviti una ricorsione infinita. In questo modo la bibliografia sarebbe sincrona, ma secondo me non si guadagnerebbe nulla e si consumerebbe cpu time inutilmente, rispetto ad eseguire una ulteriore composizione (o due ulteriori composizioni) alla fine definitiva della lavorazione del documento.

Non puoi riaprire un file già chiuso e aggiungere in coda: quando viene eseguito `\openin\@auxout=\jobname.aux` il file viene azzerato.

Eventualmente puoi usare \write18 per aggiungere qualcosa con [tt]\write18{echo “…” >> \jobname.aux}[/tt]

Ciao
Enrico

Go to top