- Questo topic ha 18 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 5 mesi fa da
capitalaslash.
-
CreatoreTopic
-
16 Marzo 2011 alle 8:28 #57092::
Ciao a tutti,vorrei creare un makefile molto semplice che mi permetta di compilare il mio documento tex. Sapete dove posso trovare un esempio?
Perché io ho trovato, per esempio, questo
`
dvi : tutorial.dvi
ps : tutorial.ps
pdf : tutorial.pdf
html : tutorial/tutorial.html
out : example
clean :
rm -rf *.dvi *.ps *.pdf *.log *.aux *.idx *~ part1.tex tutorial.tex \
*pk *.out _pdweave.tmp _pd_html.html tutorialtutorial.dvi : tutorial.tex part1.tex
tutorial.pdf : tutorial.tex part1.tex progdoc.pdf
progdoc.pdf : progdoc.eps
epstopdf progdoc.epspart1.tex : ClassDefs.h test.xml test.py version.el
example : example.cpp ClassDefs.h
g++ -o example example.cpptutorial/tutorial.html: tutorial.dvi
latex2html -html_version 4.0 -show_section_numbers -image_type gif \
-up_title “ProgDoc Home Page” -up_url “../progdoc.htm” \
-no_footnode -local_icons -numbered_footnotes tutorial.tex# We generate ps from pdf now in order to depend only on pdfLaTeX!
# %.ps : %.dvi
# dvips -D 600 -o $@ $< %.ps : %.pdf acroread -toPostScript -binary $< %.dvi : %.tex latex $< && latex $< %.pdf : %.tex rm -f $*.aux && pdflatex $< && pdflatex $< %.tex : %.pd pdweave $< ` ma non capisco bene le varie sezioni. Potreste spiegarmele? Grazie, Samuele -
CreatoreTopic
-
AutoreRisposte
-
-
16 Marzo 2011 alle 9:21 #57093::
Ciao a tutti,
vorrei creare un makefile molto semplice che mi permetta di compilare il mio documento tex. Sapete dove posso trovare un esempio?
Perché io ho trovato, per esempio, questo
`
dvi : tutorial.dvi
ps : tutorial.ps
pdf : tutorial.pdf
html : tutorial/tutorial.html
out : example
clean :
rm -rf *.dvi *.ps *.pdf *.log *.aux *.idx *~ part1.tex tutorial.tex \
*pk *.out _pdweave.tmp _pd_html.html tutorialtutorial.dvi : tutorial.tex part1.tex
tutorial.pdf : tutorial.tex part1.tex progdoc.pdf
progdoc.pdf : progdoc.eps
epstopdf progdoc.epspart1.tex : ClassDefs.h test.xml test.py version.el
example : example.cpp ClassDefs.h
g++ -o example example.cpptutorial/tutorial.html: tutorial.dvi
latex2html -html_version 4.0 -show_section_numbers -image_type gif \
-up_title “ProgDoc Home Page” -up_url “../progdoc.htm” \
-no_footnode -local_icons -numbered_footnotes tutorial.tex# We generate ps from pdf now in order to depend only on pdfLaTeX!
# %.ps : %.dvi
# dvips -D 600 -o $@ $< %.ps : %.pdf acroread -toPostScript -binary $< %.dvi : %.tex latex $< && latex $< %.pdf : %.tex rm -f $*.aux && pdflatex $< && pdflatex $< %.tex : %.pd pdweave $< ` ma non capisco bene le varie sezioni. Potreste spiegarmele? Grazie, SamuelePerché non usi Lua?
Crea uno script di questo tenore:`local function makepdf( fn )
print(“Start pdfLaTeX run…”)
os.execute(“pdflatex ” .. fn)
os.remove(fn..”.log”)
os.remove(fn..”.aux”)
print(“End”)
endmakepdf(arg[1])`
Il codice è più semplice ed impari un po’ di Lua in vista di LuaTeX…
Ciao
-
16 Marzo 2011 alle 10:29 #57094::
Grazie per i consigli.
Non ho capito una cosa: io creo un file che si chiami “Makefile” che contenga le 4 righe che mi hai scritto tu, poi con un semplice `make` tutto funziona?Inoltre, mi pare di capire che tu utilizzi pdflatex. Io, invece, compilo con
`latex nome_doc; bibtex nome_file_biblio; latex nome_doc; latex nome_doc; dvips nome_file.dvi; ps2pdf nome_file.ps; evince nome_file.pdf`Mi puoi aiutare con un makefile (in LUA) che faccia tutto questo?
Grazie,
Samuele
-
16 Marzo 2011 alle 10:42 #57095::
Grazie per i consigli.
Non ho capito una cosa: io creo un file che si chiami “Makefile” che contenga le 4 righe che mi hai scritto tu, poi con un semplice `make` tutto funziona?Inoltre, mi pare di capire che tu utilizzi pdflatex. Io, invece, compilo con
`latex nome_doc; bibtex nome_file_biblio; latex nome_doc; latex nome_doc; dvips nome_file.dvi; ps2pdf nome_file.ps; evince nome_file.pdf`Mi puoi aiutare con un makefile (in LUA) che faccia tutto questo?
Grazie,
Samuele
Il programma “make” è un attrezzo indispensabile sui sistemi Unix; il suo funzionamento è “semplice”, dal punto di vista della chiamata: se nella directory attuale c’è un file di nome “makefile” o “Makefile” (preferendo il primo, ma di solito si usa il secondo perché appare prima dando “ls”) lo prende come input. La sintassi dei Makefile è piuttosto contorta; se proprio vuoi fare tanto lavoro inutilmente ti consiglio di dare un’occhiata a latexmk (texdoc latexmk).
Perché dico “tanto lavoro inutilmente”? Perché di far andare bibtex ogni volta non c’è alcun bisogno, tanto meno di compilare tre volte con LaTeX. Non c’è nemmeno bisogno di lanciare evince, perché dovrebbe essere capace di vedere la modifica del file pdf sul disco e aggiornare.
Ciao
Enrico
-
16 Marzo 2011 alle 10:44 #57096
-
16 Marzo 2011 alle 11:22 #57097::
Ok,
seguo il tuo consiglio, Enrico.
Ma resta una domanda di fondo che non ho ben capito: se io faccio scrivo quelle 4 righe in LUA che mi hai postato, poi che faccio? Me le salvo in un file e poi? Come lo lancio??
Scusa, ma non ho capito nulla di questo passaggio.
Grazie ancora.
Samuele
Scusami, ma nella fretta di comporre il messaggio (senno Enrico mi avrebbe battuto), non ti ho detto come puoi lanciare uno script in Lua.
Modo classico
apri un terminale e digita il comando (makepdf.lua è il nome del file di testo contenente lo script):
`lua makepdf.lua`
naturalmente devi installare Lua e dare i permessi di esecuzione al file dello script.Se metti lo sha-bang puoi eseguire lo script semplicemente con un doppio click, e consiste nell’informare il sistema quale sia l’interprete da usare dando dopo i caratteri #! il path dell’eseguibile, nella prima riga del file .lua.
Tipicamente sarà:
`#!/usr/bin/lua`
o qualcosa del genere se il path di lua è diverso e per trovarlo basta dare il comando ‘which lua’ (shows the full path of (shell) commands).Di più. Se togli l’estensione lua al file (visto che sotto Linux il sistema trova per altra via cosa lanciare), metti lo script nella cartella ~/home/bin e lo avrai disponibile da qualsiasi dir ti trovi.
Ancora, puoi specializzare lo script controllando per esempio se è necessario compilare con una sequenza particolare.In definitiva, apri il terminale e digita (pippo è il nome del sorgente, makepdf è lo script Lua posto nella directory ~/home/bin):
`makepdf pippo`Specializzando lo script lo potrai rendere flessibile e più intelligente.
Bye
Ciao
-
16 Marzo 2011 alle 11:28 #57098::
Ottimo. Grazie mille.Adesso ci provo. Ma ti chiedo: una cosa del genere
`local function makepdf( fn )
print(“Start LaTeX run…”)
os.execute(“latex ” .. fn)
os.execute(“dvips ” .. fn)
os.execute(“ps2pdf ” .. fn)
os.remove(fn..”.log”)
os.remove(fn..”.aux”)
print(“End”)
endmakepdf(arg[1])`
può funzionare?
Grazie,
Samuele
-
16 Marzo 2011 alle 11:34 #57099::
Di più. Se togli l’estensione lua al file (visto che sotto Linux il sistema trova per altra via cosa lanciare), metti lo script nella cartella ~/home/bin e lo avrai disponibile da qualsiasi dir ti trovi.
Ancora, puoi specializzare lo script controllando per esempio se è necessario compilare con una sequenza particolare.Che cartella intendi?
/usr/bin?? Perché io non ho la ~/home/bin che citi tu.
Grazie ancora
-
16 Marzo 2011 alle 11:43 #57100::
Ottimo. Grazie mille.
Adesso ci provo. Ma ti chiedo: una cosa del genere
`local function makepdf( fn )
print(“Start LaTeX run…”)
os.execute(“latex ” .. fn)
os.execute(“dvips ” .. fn)
os.execute(“ps2pdf ” .. fn)
os.remove(fn..”.log”)
os.remove(fn..”.aux”)
print(“End”)
endmakepdf(arg[1])`
può funzionare?
Grazie,
SamueleCredo che ps2pdf voglia l’estensione del file quindi dovresti riscrivere la funzione come:
` os.execute(“ps2pdf ” .. fn .. “.ps”) `
ed eventualmente puoi togliere i comandi os.remove() che cancellano i file ausiliari perché li ho messi solo per far vedere che era possibile cancellare anche file.
Dovrebbe quindi funzionare.
Ciao
-
16 Marzo 2011 alle 11:47 #57101::
Di più. Se togli l’estensione lua al file (visto che sotto Linux il sistema trova per altra via cosa lanciare), metti lo script nella cartella ~/home/bin e lo avrai disponibile da qualsiasi dir ti trovi.
Ancora, puoi specializzare lo script controllando per esempio se è necessario compilare con una sequenza particolare.Che cartella intendi?
/usr/bin?? Perché io non ho la ~/home/bin che citi tu.
Grazie ancora
Se nella tua home directory non esiste la cartella bin creala (immagino che tu stia lavorando su Ubuntu no?).
Questi piccoli script possono essere molto utili in casi complicati e frequenti di compilazione. Io li utilizzo spesso con un semplice doppio click ma il funzionamento va leggermente cambiato e questo è un segreto che svelerò solo in un prossimo articolo su ArSTeXnica!!!
(prossimo inteso ricorsivamente…)
Ciao
-
16 Marzo 2011 alle 11:51 #57102::
`Questi piccoli script possono essere molto utili in casi complicati e frequenti di compilazione. Io li utilizzo spesso con un semplice doppio click ma il funzionamento va leggermente cambiato e questo è un segreto che svelerò solo in un prossimo articolo su ArSTeXnica!!!
(prossimo inteso ricorsivamente…) `Grande ;)..
Invece, domanda (ennesima!) per te.. Mi dà un errore alla riga 3..
Aiuto!
`samiam@penrose: ~/shared_sammy/tutorial_nuovag2 > lua makepdf.lua
Start LaTeX run…
lua: makepdf.lua:3: attempt to concatenate local 'fn' (a nil value)
stack traceback:
makepdf.lua:3: in function 'makepdf'
makepdf.lua:11: in main chunk
[C]: ?
[2]+ Done gedit makepdf.lua`Grazie ancora
-
16 Marzo 2011 alle 11:55 #57103
-
16 Marzo 2011 alle 12:10 #57104::
Che scemo!! Ho risolto!
Scusa. Dimenticato di indicargli l’argomento della funzione!!Grazie!
Occorre fare un controllo prima di lanciare la funzione, utile perché se dopo un po’ di tempo torni ad usare lo script è probabile che non ti ricordi più come funziona:
`local function makepdf( fn )
print(“Start LaTeX run…”)
os.execute(“latex ” .. fn)
os.execute(“dvips ” .. fn)
os.execute(“ps2pdf ” .. fn .. “.ps”)
print(“End”)
end— controllo se l'utente ha fornito l'argomento:
local filename = arg[1]
if not filename then
print(“Errore, attendevo il nome del sorgente come argomento.”)
return
endmakepdf( filename )
`Ciao
-
16 Marzo 2011 alle 14:57 #57105::
@samiam1000: se sei comunque interessato a leggere qualcosa sui Makefile puoi dare un’occhiata a http://elubuntu.altervista.org/LaTeX/Guide/make.pdfPerché dico “tanto lavoro inutilmente”? Perché di far andare bibtex ogni volta non c’è alcun bisogno, tanto meno di compilare tre volte con LaTeX. Non c’è nemmeno bisogno di lanciare evince, perché dovrebbe essere capace di vedere la modifica del file pdf sul disco e aggiornare.
Ciao
EnricoNon sono d’accordo che sia sempre tutto lavoro inutile. Intanto usando le variabili riesco sempre a riciclare i miei Makefile, cambio i valori di poche variabili e per il resto sono perfettamente riutizzabili, quindi il lavoro l’ho compiuto una volta e poi basta. Inoltre l’utilità dei Makefile entra in gioco soprattutto se non si vuole solo compilare il documento ma bisogna compiere delle altre operazioni precedentemente. Per esempio spesso ho bisogno di produrre dei grafici con gnuplot; in genere uso il terminale `epslatex’ quindi ottengo dei file EPS da convertire in PDF e anche questa operazione può essere automatizzata con il Makefile (anche se grazie a TeX Live 2010 mi risparmio questo passaggio). Inoltre ho delle regole per cancellare tutti i file temporanei prodotti nel caso in cui ciò sia necessario; ho una regola che mi crea un archivio compresso per distribuire tutta la cartella del codice sorgente del documento.
È vero che alcuni programmi permettono di compiere alcune di queste operazioni, ma i Makefile hanno il pregio di essere indipendenti dall’editor di testo usato e anche dal sistema operativo, GNU Make gira su tutti i sistemi Unix e anche Windows.
È anche vero che non è sempre necessario ricompilare tre volte un documento e la bibliografia ed è per questo che esiste texi2dvi (se solo funzionasse con il tuo pacchetto `frontespizio’ 👿 )
-
16 Marzo 2011 alle 15:46 #57106::
@samiam1000: se sei comunque interessato a leggere qualcosa sui Makefile puoi dare un’occhiata a http://elubuntu.altervista.org/LaTeX/Guide/make.pdf
Perché dico “tanto lavoro inutilmente”? Perché di far andare bibtex ogni volta non c’è alcun bisogno, tanto meno di compilare tre volte con LaTeX. Non c’è nemmeno bisogno di lanciare evince, perché dovrebbe essere capace di vedere la modifica del file pdf sul disco e aggiornare.
Ciao
EnricoNon sono d’accordo che sia sempre tutto lavoro inutile. Intanto usando le variabili riesco sempre a riciclare i miei Makefile, cambio i valori di poche variabili e per il resto sono perfettamente riutizzabili, quindi il lavoro l’ho compiuto una volta e poi basta. Inoltre l’utilità dei Makefile entra in gioco soprattutto se non si vuole solo compilare il documento ma bisogna compiere delle altre operazioni precedentemente. Per esempio spesso ho bisogno di produrre dei grafici con gnuplot; in genere uso il terminale `epslatex’ quindi ottengo dei file EPS da convertire in PDF e anche questa operazione può essere automatizzata con il Makefile (anche se grazie a TeX Live 2010 mi risparmio questo passaggio). Inoltre ho delle regole per cancellare tutti i file temporanei prodotti nel caso in cui ciò sia necessario; ho una regola che mi crea un archivio compresso per distribuire tutta la cartella del codice sorgente del documento.
È vero che alcuni programmi permettono di compiere alcune di queste operazioni, ma i Makefile hanno il pregio di essere indipendenti dall’editor di testo usato e anche dal sistema operativo, GNU Make gira su tutti i sistemi Unix e anche Windows.
È anche vero che non è sempre necessario ricompilare tre volte un documento e la bibliografia ed è per questo che esiste texi2dvi (se solo funzionasse con il tuo pacchetto `frontespizio’ 👿 )
Scusa Elrond, ma avevi già evidenziato sul forum la tua guida su Make?
Sarebbe addirittura straordinario poter fare un articolo sui modi di compilazione nel mondo TeX.
Possiamo prendercela abbastanza comoda, e scrivere, a contributo aperto, un articolo per ArS.
L’unione fa la forza!!
R.
-
16 Marzo 2011 alle 15:54 #57107::
@samiam1000: se sei comunque interessato a leggere qualcosa sui Makefile puoi dare un’occhiata a http://elubuntu.altervista.org/LaTeX/Guide/make.pdf
[quote]Perché dico “tanto lavoro inutilmente”? Perché di far andare bibtex ogni volta non c’è alcun bisogno, tanto meno di compilare tre volte con LaTeX. Non c’è nemmeno bisogno di lanciare evince, perché dovrebbe essere capace di vedere la modifica del file pdf sul disco e aggiornare.
Ciao
EnricoNon sono d’accordo che sia sempre tutto lavoro inutile. Intanto usando le variabili riesco sempre a riciclare i miei Makefile, cambio i valori di poche variabili e per il resto sono perfettamente riutizzabili, quindi il lavoro l’ho compiuto una volta e poi basta. Inoltre l’utilità dei Makefile entra in gioco soprattutto se non si vuole solo compilare il documento ma bisogna compiere delle altre operazioni precedentemente. Per esempio spesso ho bisogno di produrre dei grafici con gnuplot; in genere uso il terminale `epslatex’ quindi ottengo dei file EPS da convertire in PDF e anche questa operazione può essere automatizzata con il Makefile (anche se grazie a TeX Live 2010 mi risparmio questo passaggio). Inoltre ho delle regole per cancellare tutti i file temporanei prodotti nel caso in cui ciò sia necessario; ho una regola che mi crea un archivio compresso per distribuire tutta la cartella del codice sorgente del documento.
È vero che alcuni programmi permettono di compiere alcune di queste operazioni, ma i Makefile hanno il pregio di essere indipendenti dall’editor di testo usato e anche dal sistema operativo, GNU Make gira su tutti i sistemi Unix e anche Windows.
È anche vero che non è sempre necessario ricompilare tre volte un documento e la bibliografia ed è per questo che esiste texi2dvi (se solo funzionasse con il tuo pacchetto `frontespizio’ 👿 )
Scusa Elrond, ma avevi già evidenziato sul forum la tua guida su Make?
Sarebbe addirittura straordinario poter fare un articolo sui modi di compilazione nel mondo TeX.
Possiamo prendercela abbastanza comoda, e scrivere, a contributo aperto, un articolo per ArS.
L’unione fa la forza!!
R.[/quote]
Sì: http://www.guit.sssup.it/phpbb/viewtopic.php?t=6690
-
16 Marzo 2011 alle 16:31 #57108::
@samiam1000: se sei comunque interessato a leggere qualcosa sui Makefile puoi dare un’occhiata a http://elubuntu.altervista.org/LaTeX/Guide/make.pdf
Perché dico “tanto lavoro inutilmente”? Perché di far andare bibtex ogni volta non c’è alcun bisogno, tanto meno di compilare tre volte con LaTeX. Non c’è nemmeno bisogno di lanciare evince, perché dovrebbe essere capace di vedere la modifica del file pdf sul disco e aggiornare.
Ciao
EnricoNon sono d’accordo che sia sempre tutto lavoro inutile. Intanto usando le variabili riesco sempre a riciclare i miei Makefile, cambio i valori di poche variabili e per il resto sono perfettamente riutizzabili, quindi il lavoro l’ho compiuto una volta e poi basta. Inoltre l’utilità dei Makefile entra in gioco soprattutto se non si vuole solo compilare il documento ma bisogna compiere delle altre operazioni precedentemente. Per esempio spesso ho bisogno di produrre dei grafici con gnuplot; in genere uso il terminale `epslatex’ quindi ottengo dei file EPS da convertire in PDF e anche questa operazione può essere automatizzata con il Makefile (anche se grazie a TeX Live 2010 mi risparmio questo passaggio). Inoltre ho delle regole per cancellare tutti i file temporanei prodotti nel caso in cui ciò sia necessario; ho una regola che mi crea un archivio compresso per distribuire tutta la cartella del codice sorgente del documento.
È vero che alcuni programmi permettono di compiere alcune di queste operazioni, ma i Makefile hanno il pregio di essere indipendenti dall’editor di testo usato e anche dal sistema operativo, GNU Make gira su tutti i sistemi Unix e anche Windows.
È anche vero che non è sempre necessario ricompilare tre volte un documento e la bibliografia ed è per questo che esiste texi2dvi (se solo funzionasse con il tuo pacchetto `frontespizio’ 👿 )
Gnuplot ha anche il terminale pdf.
texi2dvi è un attrezzo piuttosto rigido, latexmk è molto più flessibile e sono quasi certo che gli si possa insegnare a compilare anche il frontespizio.
Ciao
Enrico
-
16 Marzo 2011 alle 16:48 #57109::
Gnuplot ha anche il terminale pdf.
Lo so ma preferisco `epslatex’ per documenti LaTeX, almeno finché non imparerò a usare tikz 🙂
texi2dvi è un attrezzo piuttosto rigido, latexmk è molto più flessibile e sono quasi certo che gli si possa insegnare a compilare anche il frontespizio.
Ciao
EnricoUltimamente mi sto rendendo conto della rigidità di texi2dvi (per esempio volevo provare a usare biber al posto di bibtex, ma temo che non sia possibile), però per quello che di cui ho bisogno al momento mi va più che bene. Tempo fa avevo dato un’occhiata a latexmk, ma devo ammettere che non l’ho studiato con particolare attenzione finora.
-
20 Marzo 2011 alle 12:09 #57110::
la potenza di make e’ l’analisi del tempo di modifica del file e l’esecuzione dei comandi “strettamente” necessari per l’aggiornamento del target finale secondo una precisa strategia ad albero di dipendenze.
sperare di riprodurlo con una qualsiasi linguaggio di scripting (che sia lua o bash) e’ una perdita di tempo.
certo che oggi esistono strumenti piu’ immediati (come gli editor LaTeX coi loro bottoni preconfigurati).
se avessi un po’ di tempo sistemerei quel makefile in modo da compilare solo cio’ che serve, ma scommetto che in rete troverai decine di esempi.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.