- Questo topic ha 30 risposte, 8 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 6 mesi fa da
Marco87.
-
CreatoreTopic
-
26 Luglio 2012 alle 10:29 #76425
-
CreatoreTopic
-
AutoreRisposte
-
-
26 Luglio 2012 alle 11:27 #76426::
Come scrive Paulo Cereda all’inizio del manuale d’uso di Arara, Arara è uno strumento di automazione per TeX. E rispetto ad altri strumenti ha il vantaggio di essere molto flessibile.
L’utilizzo base che se ne può fare è quello di scrivere nel preambolo queste “directives”
`% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass…` per compilare il proprio documento secondo la sequenza indicata. (prima di tutto però serve configurare il proprio editor in modo che questo possa vedere Arara come strumento di compilazione, Paulo riporta le istruzioni per TeXworks, altri lo hanno configurato per Vim e WinEdt, io ci sto provando con TexShop).
Ogni “directive” deve essere legata a una “regola”, cioè un file che contiene delle istruzioni che Arara legge ed esegue. Quindi esiste una regola per pdflatex, una per latex, una per xelatex…
Il manuale spiega come scrivere delle regole personalizzate (io ne ho scritta una per songidx, il programma che serve per generare gli indici dei canzonieri creati col pacchetto “songs”).
Riassumendo Arara è uno strumento che permette di gestire facilmente sequenze di compilazione complicate.Francesco
-
26 Luglio 2012 alle 13:47 #76427::
Correggetemi se sbaglio: nel sorgente .tex bisogna scrivere l’elenco dei comandi da eseguire per compilare il documento, come nell’esempio di franen, e arara eseguirà tutti quei comandi nell’ordine riportato. Eventualmente è possibile “personalizzare” l’esecuzione dei vari comandi (per esempio [tt]pdflatex[/tt]), per esempio aggiungendo varie opzioni attivabili a scelta scrivendolo esplicitamente nel sorgente, creando un file (nell’esempio [tt]pdflatex.yaml[/tt]) che contenga le istruzioni del caso. È corretto?
-
26 Luglio 2012 alle 14:07 #76428::
esattamente!
La regola standard di pdflatex permette già di suo di scegliere diverse opzioni, sono ben descritte nella guida all’uso. Se fra queste non ci fosse quella che ti interessa puoi crearti una nuova regola (mypdflatex.yaml) e utilizzare quella.Un altro esperimento che ho fatto ieri: se volessi compilare un documento che utilizza il pacchetto frontespizio di Enrico potrei creare un file frontespizio.yaml come segue`!config
# frontespizio rule for arara
# author: Francesco Endrici
identifier: frontespizio
name: frontespizio
command: 'pdflatex @{file}-frn.tex'
arguments: []`
e scrivere all’inizio del documento`% arara: pdflatex
% arara: frontespizio
% arara: pdflatex
`Fran
-
26 Luglio 2012 alle 14:16 #76429::
Quindi vengono eseguiti tutti i comandi riportati nel sorgente? Non c’è alcun modo di dire al programma (da linea di comando, per esempio) di eseguirne solo alcuni? Compilando il codice sorgente del manuale con arara vengono sempre eseguiti per quattro volte pdflatex e una volta biber (anche se in realtà ci fosse effettivo bisogno di eseguire una sola volta pdflatex), in più vengono cancellati sempre tutti i file ausiliari?
-
26 Luglio 2012 alle 14:28 #76430::
Beh, se invece che fare tutta la compilazione vuoi fare solo un passaggio, ad esempio con pdflatex, puoi scrivere (nel mio esempio precedente):
`% arara: pdflatex
% !arara: frontespizio
% !arara: pdflatex`Cioè il punto esclamativo inibisce il funzionamento di un comando. Non se se questo ti basta come risposta. Dubito che da riga di comando si possa scegliere quale delle n “directive” usare.Ho scritto il file engine per TeXshop, se servisse a qualcuno:
`#!/bin/tcshset path= ($path /Applications/arara)
arara –verbose –log “$1″`
Se avete migliorie da apportare, ben volentieri! 🙂Fran
-
26 Luglio 2012 alle 14:56 #76431::
franen” post=75595Beh, se invece che fare tutta la compilazione vuoi fare solo un passaggio, ad esempio con pdflatex, puoi scrivere (nel mio esempio precedente):
`% arara: pdflatex
% !arara: frontespizio
% !arara: pdflatex`Cioè il punto esclamativo inibisce il funzionamento di un comando. Non se se questo ti basta come risposta. Dubito che da riga di comando si possa scegliere quale delle n “directive” usare.Ma bisogna modificare ogni volta il file sorgente per cambiare i comandi da eseguire. No, non mi piace. Apprezzo alcune idee di questo programma (come quella di avere dei file di “configurazione” per le varie direttive), ma all’atto pratico lo trovo poco comodo: ritengo l’esecuzione di tutti i comandi ogni volta una grave pecca, non un pregio, visto che deve semplificare la compilazione di un documento, non allungarne i tempi (ho un computer vecchio, la differenza fra una sola esecuzione di pdflatex e quattro, su documenti corposi, si sente eccome :-P).
Al momento la soluzione migliore (ma non perfetta) che ho trovato per compilare documenti “complicati” è l’accoppiata make + latexmk: mi scrivo le regole da eseguire dentro il mio bel Makefile e nella regola per compilare effettivamente il documento uso latexmk (che esegue i comandi latex & co., biber/bibtex, makeindex il numero di volte strettamente necessario). Perché non solo latexmk? Perché nel mio caso spesso ho bisogno di eseguire altre operazioni non strettamente legate a latex prima di arrivare a compilare effettivamente un documento, make mi sembra la soluzione più adatta per queste necessità, soprattutto visto il suo principio di funzionamento.
In un Makefile si possono mettere anche regole per compilare il documento con un motore diverso (per esempio, latex e pdflatex), scegliendo quale eseguire da linea di comando. Con arara questo mi sembra di capire che sia impossibile da fare a meno di modificare ogni volta alcune righe del documento, ma nella mia testa il sorgente non dovrebbe essere modificato per queste cose. È vero che una situazione come questa non è detto che si presenti molto spesso, però secondo me evidenzia alcuni limiti di arara.
Ho specificato che make + latexmk non è la soluzione perfetta perché bisogna riscriversi un Makefile per ogni documento, la fatica si riduce drasticamente riciclando Makefile scritti in precedenza e facendo dei piccoli adattamenti al caso specifico (e spesso le modifiche si riducono a poche righe).
-
26 Luglio 2012 alle 17:41 #76432::
franen” post=75582Come scrive Paulo Cereda all’inizio del manuale d’uso di Arara, Arara è uno strumento di automazione per TeX. E rispetto ad altri strumenti ha il vantaggio di essere molto flessibile.
L’utilizzo base che se ne può fare è quello di scrivere nel preambolo queste “directives”
`% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass…` per compilare il proprio documento secondo la sequenza indicata. (prima di tutto però serve configurare il proprio editor in modo che questo possa vedere Arara come strumento di compilazione, Paulo riporta le istruzioni per TeXworks, altri lo hanno configurato per Vim e WinEdt, io ci sto provando con TexShop).
Ogni “directive” deve essere legata a una “regola”, cioè un file che contiene delle istruzioni che Arara legge ed esegue. Quindi esiste una regola per pdflatex, una per latex, una per xelatex…
Il manuale spiega come scrivere delle regole personalizzate (io ne ho scritta una per songidx, il programma che serve per generare gli indici dei canzonieri creati col pacchetto “songs”).
Riassumendo Arara è uno strumento che permette di gestire facilmente sequenze di compilazione complicate.Francesco
Come ogni programma di questo tipo ha lo svantaggio di doversi appoggiare a file di configurazione che non sono troppo intuitivi. Ma forse più intuitivi di un Makefile. Ognuno ha le sue preferenze.
Obiezione: per non eseguire un compito, bisogna commentarlo nel sorgente. Giusto; ma a differenza di un Makefile, le direttive stanno in cima al file principale, in un posto facilmente accessibile.
Obiezione: latexmk fa tutto da sé. Fino a un certo punto. Per il frontespizio occorre crearsi un file latexmkrc che contenga
`add_cus_dep( “tex”, “pdf”, 0, “frn2pdf” );
sub frn2pdf { return system( “latexmk -pdf $_[0]” ); }`
A qualcuno può sembrare facile, a me no. Quando uno si è scritto un “frontespizio.yaml”, che non mi pare complicato (grazie, franen), ha a disposizione la direttiva che si scrive semplicemente
`% arara: frontespizio`
Che si vuole di più? 🙂
@franen: Sento Paulo e gli domando se ha idee migliori su frontespizio.yaml; per esempio, un modo per dirgli di compilare con latex+dvips o con xelatex a richiesta. Hai obiezioni se gli passo il tuo file .yaml?Ciao
Enrico
-
26 Luglio 2012 alle 18:01 #76433::
So che la mia domanda non c’entra moltissimo con Arara, ma non capisco una cosa.
Così come il pacchetto imakeidx lancia makeindex in maniera del tutto trasparente
per l’utente, perché non si può modificare biblatex per lanciare biber in automatico,
oppure il comando bibliography per lanciare automaticamente bibtex?Ciao ciao.
Fra
-
26 Luglio 2012 alle 19:26 #76434::
egreg9″ post=75602 @franen: Sento Paulo e gli domando se ha idee migliori su frontespizio.yaml; per esempio, un modo per dirgli di compilare con latex+dvips o con xelatex a richiesta. Hai obiezioni se gli passo il tuo file .yaml?
Ciao
EnricoNessun problema! Mandagli pure il file.
Se il problema fosse solo decidere se usare pdflatex o xelatex si risolverebbe in fretta:`!config
# frontespizio rule for arara
# author: Francesco Endrici
identifier: frontespizio
name: frontespizio
command: '@{engine} @{file}-frn.tex'
arguments:
– identifier: engine
flag: '@{value}'`basterebbe poi scrivere`% arara: frontespizio: { engine: xelatex}` oppure `% arara: frontespizio: { engine: pdflatex}`e tutto funzionerebbe. Ma per il doppio passaggio latex e dvips non saprei, aspettiamo Paulo!Francesco
-
26 Luglio 2012 alle 19:29 #76435::
Elrond” post=75596Ma bisogna modificare ogni volta il file sorgente per cambiare i comandi da eseguire…
Ho dimenticato di scriverlo nel messaggio precedente: non si è certo vincolati a compilare sempre con arara. Quando apporto piccole modifiche al mio file posso scegliere di compilare solo con pdflatex e poi, alla fine, quando vorrò mettere a posto anche gli indici, la bibliografia, … userò arara con la sequenza di comandi che ho impostato.
Riconosco i limiti del sistema, ma per me è molto comodo!Fran
-
26 Luglio 2012 alle 20:03 #76436::
francesco.biccari” post=75605So che la mia domanda non c’entra moltissimo con Arara, ma non capisco una cosa.
Così come il pacchetto imakeidx lancia makeindex in maniera del tutto trasparente
per l’utente, perché non si può modificare biblatex per lanciare biber in automatico,
oppure il comando bibliography per lanciare automaticamente bibtex?Ciao ciao.
FraAi tempi in cui avevo proposto a un nostro meeting l’idea di compilare l’indice analitico, avevo pensato anche alla bibliografia, e in effetti dopo la presentazione del mio articoletto embrionale, ci sono state alcue domande in merito; poi quel lavoretto “seminal” come direbbero gli americani, ha stimolato Enrico e ne è nato imakeidx.
Onestamente non mi ricordo più perché avevo concluso che con la bibliografia c’erano delle limitazioni, ma che in linea di principio si poteva fare anche per la bibliografia; io non l’ho mai fatto, e Enrico,a quanto pare, ha lasciato cadere la cosa.; probabilmente lui conosce meglio di me perché ha/abbiamo abbandonato il progetto della bibliografia.
Chissà…
Onestamente però, uso pdflatex o xelatex in pratica ogni giorno; e voi partecipanti a questo filone di discussione, probabilmente fate altrettanto. Non ho mai apprezzato questo genere di automatismi; per l’indice analitico passi, per un pacchettino che faccia compilare la bibliografia, onestamente ne sento meno il bisogno; via via che scrivo un documento aggiungo voci al database; perché dovrei eseguire sempre ad ogni compilazione del documento la trafila delle quattro compilazioni, talvolta cinque? Ne basta una, e la bibliografia si compone alla fine della settimana. Uno dei motivi per i quali ho abbandonato Kile su Ubuntu è stato proprio perché cliccando il pulsante pdflatex eseguiva tutta la trafile delle quattro compilazioni; a suo tempo non ero stato capace di disabilitare questa funzionalità. Insomma Arara fa sicuramente quello che deve fare, ma fa cose che io non apprezzo in modo particolare.
Dal numero di messaggi che questo argomento ha suscitato in poche ore, direi che sono proprio la pecora nera del gruppo, nel senso che non mi viene nemmeno la curiosità di provarlo; anzi, ne sconsiglierei l’uso durante la lavorazione di un documento complesso. Scusatemi, sono proprio quello che nel coro canta un’altra canzone.
-
26 Luglio 2012 alle 20:16 #76437::
OldClaudio” post=75610[…]ne sconsiglierei l’uso durante la lavorazione di un documento complesso. Scusatemi, sono proprio quello che nel coro canta un’altra canzone.
Su questo sono d’accordo con te, almeno per quanto riguarda ciò che scrivevo sopra: è assurdo compilare tutte le volte con 4-5 passaggi, ma nel mio menu a tendina di TeXworks o TeXshop o anche da terminale posso scegliere fra pdflatex (o xelatex) e arara a seconda di ciò che mi serve fare: se voglio vedere una piccola modifica a un grafico, a una parte di testo, oppure se voglio avere la formattazione finale del mio documento.
Fran
-
26 Luglio 2012 alle 20:52 #76438::
franen” post=75608
@franen: Sento Paulo e gli domando se ha idee migliori su frontespizio.yaml; per esempio, un modo per dirgli di compilare con latex+dvips o con xelatex a richiesta. Hai obiezioni se gli passo il tuo file .yaml?
Ciao
EnricoNessun problema! Mandagli pure il file.
Se il problema fosse solo decidere se usare pdflatex o xelatex si risolverebbe in fretta:`!config
# frontespizio rule for arara
# author: Francesco Endrici
identifier: frontespizio
name: frontespizio
command: '@{engine} @{file}-frn.tex'
arguments:
– identifier: engine
flag: '@{value}'`basterebbe poi scrivere`% arara: frontespizio: { engine: xelatex}` oppure `% arara: frontespizio: { engine: pdflatex}`e tutto funzionerebbe. Ma per il doppio passaggio latex e dvips non saprei, aspettiamo Paulo!Francesco
`!config
identifier: frontespizio
name: Frontespizio
command: '@{ engine == “” ? “pdflatex” : engine } @{ action == “” ? “” : “–interaction=” + action } @{draft} @{shell} @{synctex} @{expandoptions} @{file}-frn.tex'
arguments:
– identifier: engine
flag: '@{value}'
– identifier: action
flag: '@{value}'
– identifier: shell
flag: '@{value.toLowerCase() == “yes” || value.toLowerCase() == “true” || value.toLowerCase() == “on” ? “–shell-escape” : “–no-shell-escape” }'
– identifier: draft
flag: '@{value.toLowerCase() == “yes” || value.toLowerCase() == “true” || value.toLowerCase() == “on” ? “–draftmode” : “” }'
– identifier: expandoptions
flag: '@{value}'`
Si può chiamare con una sintassi come
`% arara: frontespizio
% arara: frontespizio: { engine: xelatex }
% arara: frontespizio: { engine: xelatex }`
Nel primo caso si usa pdflatex, che è il più comune. Ho lasciato altre possibilità per variabili meno importanti, ma che potrebbero essere utili.Versione più compatta:
`!config
identifier: frontespizio
name: Frontespizio
command: '@{ engine == “” ? “pdflatex” : engine } @{ action == “” ? “” : “–interaction=” + action } @{expandoptions} @{file}-frn.tex'
arguments:
– identifier: engine
flag: '@{value}'
– identifier: action
flag: '@{value}'
– identifier: expandoptions
flag: '@{value}'`
Eventuali altre opzioni vanno aggiunge con [tt]expandoptions: …[/tt]Ciao
Enrico
-
27 Luglio 2012 alle 4:18 #76439::
Insomma, questa cosa dal nome che ricorda un po’ i Fichi d’India (arararara! ricordate? 🙂 ) evita di premere i vari pulsanti nelle sequenze di compilazione che richiedono passaggi obbligati come gli indici analitici o la bibliografia o il frontespizio (con il pacchetto di Enrico).In fondo lo fa già il tanto deprecato TeXnicle, che ha un pannellino a scomparsa nel quale puoi scegliere il motore, se lanciare o meno bibtex e quante compilazioni vuoi fare. Naturalmente se lanci bibtex poi ti ricompila due volte con pdflatex, come va fatto.
Il mio modestissimo parere è che sia l’editor a dover fare queste cose, con un solo pulsante (questa mia visione semplicistica è per una volta in linea con le idee di Lorenzo). Quando il tormentone degli editor troverà pace, quelli identificati come davvero validi dovrebbero avere i pulsanti per le righe magiche, i tab e questa cosa delle compilazioni multiple. Trovo un po’ farraginoso scrivere ulteriori righe per automatizzare una sequenza di compilazione.
Ma, come al solito, faccio osservazioni e non propongo nulla 🙂
Ciao
Tommaso
-
27 Luglio 2012 alle 5:18 #76440::
franen” post=75609
Ma bisogna modificare ogni volta il file sorgente per cambiare i comandi da eseguire…
Ho dimenticato di scriverlo nel messaggio precedente: non si è certo vincolati a compilare sempre con arara. Quando apporto piccole modifiche al mio file posso scegliere di compilare solo con pdflatex e poi, alla fine, quando vorrò mettere a posto anche gli indici, la bibliografia, … userò arara con la sequenza di comandi che ho impostato.
Riconosco i limiti del sistema, ma per me è molto comodo!Fran
Questo è ovvio, neanche io uso sempre make o latexmk, per compilazioni semplici semplici uso solo pdflatex 😉
egreg9″ post=75602Come ogni programma di questo tipo ha lo svantaggio di doversi appoggiare a file di configurazione che non sono troppo intuitivi. Ma forse più intuitivi di un Makefile.
La sintassi delle regole di un Makefile non mi sembra granché complicata:
`obiettivo: prerequisiti
comandi…..`egreg9″ post=75602Ognuno ha le sue preferenze.
Sono d’accordo, infatti non intendo andare oltre su questo punto 😉
egreg9″ post=75602Obiezione: per non eseguire un compito, bisogna commentarlo nel sorgente. Giusto; ma a differenza di un Makefile, le direttive stanno in cima al file principale, in un posto facilmente accessibile.
Però non ho capito questa obiezione: un Makefile non deve essere proprio modificato, ce l’hai scritto e va sempre bene
egreg9″ post=75602Obiezione: latexmk fa tutto da sé. Fino a un certo punto. Per il frontespizio occorre crearsi un file latexmkrc che contenga
`add_cus_dep( “tex”, “pdf”, 0, “frn2pdf” );
sub frn2pdf { return system( “latexmk -pdf $_[0]” ); }`
A qualcuno può sembrare facile, a me no. Quando uno si è scritto un “frontespizio.yaml”, che non mi pare complicato (grazie, franen), ha a disposizione la direttiva che si scrive semplicemente
`% arara: frontespizio`
Che si vuole di più? 🙂Non mi dispiace molto che latexmk faccia quasi tutto da sé, è il suo compito 😀 Comunque neanche a me piace molto la sintassi del file di configurazione di latexmk mentre quella di arara mi sembra molto più chiara (e questo sarebbe un altro punto a favore di arara nella mia classifica), infatti per compilare il frontespizio ho escogitato un workaround non pulitissimo ma che mi permette di non creare il file di configurazione di latexmk 😀 Ecco il mio workaround: ho messo l’ambiente [tt]frontespizio[/tt] in un file esterno al sorgente principale, ho scritto una regola (che ha fra i prerequisiti il suddetto file esterno) per compilare solo il [tt]main-frn.pdf[/tt] e poi questo file è fra i prerequisiti di [tt]main.pdf[/tt]. L’utilità di questo macchinoso sistema è che il frontespizio viene effettivamente ricompilato solo se è stato modificato l’ambiente [tt]frontespizio[/tt] 🙂 Come al solito, lo svantaggio è che per ogni documento bisogna riscrivere tutto quanto (una soluzione alla arara non mi dispiacerebbe affatto, proprio per questo motivo: ti scrivi una volta le direttive e poi usi sempre quelle), svantaggio compensato dal riciclo dei Makefile
-
27 Luglio 2012 alle 5:28 #76441::
illinguista1972″ post=75614Insomma, questa cosa dal nome che ricorda un po’ i Fichi d’India (arararara! ricordate? 🙂 ) evita di premere i vari pulsanti nelle sequenze di compilazione che richiedono passaggi obbligati come gli indici analitici o la bibliografia o il frontespizio (con il pacchetto di Enrico).
In fondo lo fa già il tanto deprecato TeXnicle, che ha un pannellino a scomparsa nel quale puoi scegliere il motore, se lanciare o meno bibtex e quante compilazioni vuoi fare. Naturalmente se lanci bibtex poi ti ricompila due volte con pdflatex, come va fatto.
Il mio modestissimo parere è che sia l’editor a dover fare queste cose, con un solo pulsante (questa mia visione semplicistica è per una volta in linea con le idee di Lorenzo). Quando il tormentone degli editor troverà pace, quelli identificati come davvero validi dovrebbero avere i pulsanti per le righe magiche, i tab e questa cosa delle compilazioni multiple. Trovo un po’ farraginoso scrivere ulteriori righe per automatizzare una sequenza di compilazione.
Ma, come al solito, faccio osservazioni e non propongo nulla 🙂
Dov’è la differenza fra aprire un pannello e scegliere alcune opzioni rispetto ad aggiungere due o tre righe in testa al documento? Che, fra l’altro, ti ricordano anche a distanza di mesi quali passi devi eseguire per arrivare al documento finale, anche se cambi editor o trasporti il file su un altro sistema.
Se latexmk desse la possibilità di specificare nel documento principale ciò che ora va nel file latexmkrc forse ci sarebbero ancora meno problemi. Ma così non è e ci si deve ricordare di tenere questo file con gli altri.
Ecco un’altra idea: una direttiva finale che sposti tutti i file prodotti, eccetto i sorgenti e il PDF in una sottocartella; ci aggiungiamo una direttiva iniziale che tiri fuori il contenuto della sottocartella. Che ne dici? Niente più combattimenti con l’opzione [tt]–output-dir[/tt].
Ciao
Enrico
-
27 Luglio 2012 alle 5:53 #76442::
OK, se tra le opzioni di Typeset di TeXshop c’è una voce in più che si chiama arara e fa tutte quelle belle cose, va benissimo per chi lo vuole usare. Io continuo a pensare che non serva a niente, anche se sembra ben fatto e utile.
Ripeto, ognuno ha le sue esperienze e le sue abitudini consolidate, e io che ho i miei anni di attività con LaTeX ho tutti i difetti delle persone anziane che diventano estremamente tradizionalisti e non abbandonano le loro abitudini. Lo confesso.
Ma onestamente non ricompilo mai per l’indice analitico, perché uso sempre imakeidx nei miei documenti che sono dotati di indice analitico.
Eseguo bibtex (o biber) solo quando è veramente necessario, e quindi abbastanza raramente rispetto alle volte in cui eseguo il programma di compilazione pdflatex o xelatex; se mettessi su le righe per arara e i file di configurarzione per arara consumerei molto più tempo che:
(1) clicco sulla frecciolina accanto alla finestrella di Typeset, per scegliere bibtex;
(2) clicco su Typeset;
(3) se ci sono errori torno si Bibdesk per esaminare il database bibliografico e riprendo da (2);
(4) altrimenti riclclicco sulla finestrella e scelgo LaTeX (che con Texshop vuol dire pdflatex) o su XeLaTeX e poi sul bottone Typeset una sola volta;
(5) se dopo questa compilazione non ottengo messaggi del tipo Labels may have changed, oppure Undefined references, ho terminato;
(6) altrimenti riprendo da (5) o vado a vedere quali references non siano definite e procedo con le correzioni necessarie.Tenuto conto dei possibili errori nelle varie compilazioni, erroriche andrebbero comunque corretti, ritengo che questa procedura sia più efficiente che non usare il deprecato TeXnicle (che funziona abbastanza male, e conserva l’unico pregio di avere le due finestre, sorgente e pdf, belle grandi assieme a pieno schermo, il che non è un pregio da poco; però sto meditando di disinstallarlo e di non pensarci più) o Kile, o latexmk, o arara, o quant’altro che possa automatizzare l’intera procedura.
-
27 Luglio 2012 alle 7:42 #76443::
OldClaudio” post=75610
So che la mia domanda non c’entra moltissimo con Arara, ma non capisco una cosa.
Così come il pacchetto imakeidx lancia makeindex in maniera del tutto trasparente
per l’utente, perché non si può modificare biblatex per lanciare biber in automatico,
oppure il comando bibliography per lanciare automaticamente bibtex?Ciao ciao.
FraAi tempi in cui avevo proposto a un nostro meeting l’idea di compilare l’indice analitico, avevo pensato anche alla bibliografia, e in effetti dopo la presentazione del mio articoletto embrionale, ci sono state alcue domande in merito; poi quel lavoretto “seminal” come direbbero gli americani, ha stimolato Enrico e ne è nato imakeidx.
Onestamente non mi ricordo più perché avevo concluso che con la bibliografia c’erano delle limitazioni, ma che in linea di principio si poteva fare anche per la bibliografia; io non l’ho mai fatto, e Enrico,a quanto pare, ha lasciato cadere la cosa.; probabilmente lui conosce meglio di me perché ha/abbiamo abbandonato il progetto della bibliografia.
Chissà…
Onestamente però, uso pdflatex o xelatex in pratica ogni giorno; e voi partecipanti a questo filone di discussione, probabilmente fate altrettanto. Non ho mai apprezzato questo genere di automatismi; per l’indice analitico passi, per un pacchettino che faccia compilare la bibliografia, onestamente ne sento meno il bisogno; via via che scrivo un documento aggiungo voci al database; perché dovrei eseguire sempre ad ogni compilazione del documento la trafila delle quattro compilazioni, talvolta cinque? Ne basta una, e la bibliografia si compone alla fine della settimana. Uno dei motivi per i quali ho abbandonato Kile su Ubuntu è stato proprio perché cliccando il pulsante pdflatex eseguiva tutta la trafile delle quattro compilazioni; a suo tempo non ero stato capace di disabilitare questa funzionalità. Insomma Arara fa sicuramente quello che deve fare, ma fa cose che io non apprezzo in modo particolare.
Dal numero di messaggi che questo argomento ha suscitato in poche ore, direi che sono proprio la pecora nera del gruppo, nel senso che non mi viene nemmeno la curiosità di provarlo; anzi, ne sconsiglierei l’uso durante la lavorazione di un documento complesso. Scusatemi, sono proprio quello che nel coro canta un’altra canzone.Ciao Claudio,
in effetti anche a me darebbe fastidio aspettare ogni volta la fine di due o tre compilazioni successive!
Però sarebbe comodo che biblatex lanciasse in automatico biber o bibtex ogni volta che si compila,
o che il comando bibliography lanciasse bibtex. Questo passo in più sarebbe quasi istantaneo.
In questo modo l’utente deve solo sapere, come già dovrebbe, che con LaTeX bisogna compilare
più di una volta per vedere tutti i riferimenti a posto.Ciao ciao.
Fra
-
27 Luglio 2012 alle 11:53 #76444::
francesco.biccari” post=75623Ciao Claudio,
in effetti anche a me darebbe fastidio aspettare ogni volta la fine di due o tre compilazioni successive!
Però sarebbe comodo che biblatex lanciasse in automatico biber o bibtex ogni volta che si compila,
o che il comando bibliography lanciasse bibtex. Questo passo in più sarebbe quasi istantaneo.
In questo modo l’utente deve solo sapere, come già dovrebbe, che con LaTeX bisogna compilare
più di una volta per vedere tutti i riferimenti a posto.Ciao ciao.
FraBibTeX o Biber devono leggere il file .aux che viene chiuso quando non si può più aggiungere nulla al documento. Per l’indice analitico è diverso: infatti imakeidx chiude il file .idx prima di procedere alla chiamata di MakeIndex. Il problema con memoir era appunto che quella classe scrive le annotazioni per gli indici nel file .aux.
Ciao
Enrico
-
27 Luglio 2012 alle 15:57 #76445::
Ciao Claudio,
in effetti anche a me darebbe fastidio aspettare ogni volta la fine di due o tre compilazioni successive!
Però sarebbe comodo che biblatex lanciasse in automatico biber o bibtex ogni volta che si compila,
o che il comando bibliography lanciasse bibtex. Questo passo in più sarebbe quasi istantaneo.
In questo modo l’utente deve solo sapere, come già dovrebbe, che con LaTeX bisogna compilare
più di una volta per vedere tutti i riferimenti a posto.Ciao ciao.
FraIn effetti ci sto pensando a fare un comando \bibliography che faccia più o meno quello che fa makeindex con gli indici analitici.
Ciao
Claudio
-
27 Luglio 2012 alle 18:22 #76446::
OldClaudio” post=75637In effetti ci sto pensando a fare un comando \bibliography che faccia più o meno quello che fa makeindex con gli indici analitici.
Vedo ostacoli insormontabili: per far girare BibTeX o Biber devi chiudere il file .aux: impossibile. La cosa possibile sarebbe di far andare BibTeX sul file .aux relativo alla compilazione precedente, prima che venga aperto quello nuovo (succede a \begin{document}). Ma sei sempre “indietro di un giro”.
Ciao
Enrico
-
27 Luglio 2012 alle 18:43 #76447::
Correggetemi se sbaglio. A questo punto forse l’unica soluzione è modificare
pdfTeX/XeTeX/LuaTeX in modo che possano essere istruiti,
non solo, come ora, ad eseguire comandi nel momento che vengono chiamati
dal codice TeX, ma anche dopo la fine della compilazione.Per esempio definendo uno speciale comando come
`\pdfTeX@RunAfterCompilation{comando}`
Tutti i comandi verrebbero accodati in ordine di apparizione ed eseguiti alla fine della compilazione in ordine FIFO.Ovviamente tutto questo credo vada oltre la semplice programmazione TeX.
Ciao ciao.
Fra
-
27 Luglio 2012 alle 20:51 #76448::
Un primo abbozzo potrebbero essere queste poche righe aggiunte poco prima di \begin{document}
`\AtBeginDocument{%
\renewcommand\bibliography[1]{\if@filesw\immediate\write\@auxout{\string\bibdata{#1}}\fi\immediate\closeout\@auxout\immediate\write18{bibtex #1}\@input@{\jobname.bbl}}
}`Per un semplice file senza parti incluse, dovrebbe funzionare; a me è riuscito con un file scritto con la classe octavo e compilato con pdflatex. Veramente ho fatto tutto molto in fretta e non ho verificato ogni dettaglio, ma insomma la bibliografia è uscita anche nelle compilazioni successive alla prima, cioè dopo aver introdotto qualche correzione al testo. Si mi rendo conto che il file \@auxout viene chiuso probabilmente troppo presto per la registrazione completa di tutto quello che serve, ma avendo la bibliografia alla fine del documento non sembrano esserci inconvenienti.
Tutto preso con le molle, perché bisgnerebbe che facessi un’analisi dettagliata di ciò che il programma esegue passo passo; ma almeno c’è un primo risultato — magari da cestinare, ma c’è.
-
27 Luglio 2012 alle 21:20 #76449::
OldClaudio” post=75642Un primo abbozzo potrebbero essere queste poche righe aggiunte poco prima di \begin{document}
`\AtBeginDocument{%
\renewcommand\bibliography[1]{\if@filesw\immediate\write\@auxout{\string\bibdata{#1}}\fi\immediate\closeout\@auxout\immediate\write18{bibtex #1}\@input@{\jobname.bbl}}
}`Per un semplice file senza parti incluse, dovrebbe funzionare; a me è riuscito con un file scritto con la classe octavo e compilato con pdflatex. Veramente ho fatto tutto molto in fretta e non ho verificato ogni dettaglio, ma insomma la bibliografia è uscita anche nelle compilazioni successive alla prima, cioè dopo aver introdotto qualche correzione al testo. Si mi rendo conto che il file \@auxout viene chiuso probabilmente troppo presto per la registrazione completa di tutto quello che serve, ma avendo la bibliografia alla fine del documento non sembrano esserci inconvenienti.
Tutto preso con le molle, perché bisgnerebbe che facessi un’analisi dettagliata di ciò che il programma esegue passo passo; ma almeno c’è un primo risultato — magari da cestinare, ma c’è.
No, non può funzionare in generale. Non sarebbe più possibile scrivere sul file .aux dopo \bibliography; quindi per esempio un riferimento incrociato nella bibliografia non apparirebbe mai. Alcuni pacchetti e classi (per esempio memoir) tengono conto dell’ultima pagina: impossibile se il file .aux è già chiuso. Eccetera.
Naturalmente così non potrebbe funzionare nemmeno tocbibind. E neanche imakeidx, se vuoi che l’indice analitico vada nell’indice generale. 🙂
Oberdiek ha scritto il pacchetto atveryend, la cui documentazione è istruttiva al riguardo. E lo usa.
Ciao
Enrico
-
28 Luglio 2012 alle 5:13 #76450::
Sì, 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.Ciao
Claudio
-
28 Luglio 2012 alle 6:42 #76451::
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
-
28 Luglio 2012 alle 13:01 #76452
-
16 Febbraio 2013 alle 10:34 #76453::
Ho fatto l’aggiornamento di TeX Live su Windows: se scrivo [tt]texdoc arara[/tt] si apre la documentazione, ma di arara nessuna notizia. Eppure dalla documentazione leggoIf you have a recent TEX Live distribution, good news: arara is already available in your system!
Su Debian, invece, arara è installato.
Ciao,
Orlando
-
17 Febbraio 2013 alle 13:15 #76454::
Ciao Orlando,grazie mille della risposta! Quella frase in effetti ha fatto credere anche a me che non dovessi preoccuparmi dell’installazione. Ma grazie alla tua indicazione ho capito che non era così. Ora, dopo averlo installato, se lo eseguo da prompt dei comandi ottengo questo messaggio:
Uh-oh, I could not find the ‘pfdlatex’ rule in the search path.
Could you take a look if the rule name is correct and if the rule
is accessible through the search path?Nel file principale ho usato le seguenti direttive per arara:
`% arara: pfdlatex
% arara: frontespizio
% arara: makeglossaries
% arara: nomencl
% arara: biber
% arara: pdflatex
% arara: pdflatex
%
\documentclass[a4paper,11pt,extrafontsizes,twoside,openright]{memoir}[…]`
Non capisco più che cosa devo fare. 🙁Grazie e ciao,
Marco.
-
17 Febbraio 2013 alle 13:20 #76455
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.