Razionalizzare la produzione di una rivista: ArsTEXnica Razionalizzare la produzione di una rivista: ArsTEXnica Massimiliano Dominici Gruppo utilizzatori Italiani di TEX 18 ottobre 2014 Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 1 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica ArsKit arstexnica.cls arstexnica.bst name.tex name-package.tex name-command.tex name-article.tex articolo 1 abstract PDF articolo 1 PDF per la stampa bibliografia PDF articolo 2 PDF per il web articolo 2 articolo N PDF articolo N Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 2 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Requisiti Portabilità Efficienza Gestione dei conflitti Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 3 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Portabilità Attuale Futura • Linguaggio: Bash • Linguaggio: Lua (texlua) • Linux: sì • Linux: sì • Mac OS X: probabilmente sì • Mac OS X: sì • Windows: no (forse con Cygwin) • Windows: sì Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 4 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Efficienza Attualmente Uno script bash esegue ogni volta in sequenza tutte le operazioni, dalla creazione dell’immagine per il codice a barre, alla scrittura delle voci bibliografiche Possibile soluzione Gestire tutto con make (lake) e latexmk Soluzione adottata Usare latexmk per la compilazione LATEX e gestire separatamente le operazioni accessorie Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 5 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Composizione della rivista (vecchio metodo) \documentclass{arstexnica} % ... % Preambolo generale % ... \input{dir1/article1-package} \input{dir2/article2-package} ... \input{dirN/articleN-package} \input{dir1/article1-command} \input{dir2/article2-command} ... \input{dirN/articleN-command} \begin{document} \include{dir1/article1-article} \include{dir2/article2-article} ... \include{dirN/articleN-article} \end{document} Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 Possibili conflitti in fase di compilazione • Caricamento di pacchetti incompatibili • Definizione multipla di comandi con \newcommand • Definizione multipla di comandi con \def • Ambiguità dei percorsi dei file inclusi 6 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Composizione della rivista (nuovo metodo) Soluzione: includere i PDF, non il codice TEX. \documentclass{arstexnica} % ... % Preambolo generale % ... \usepackage{pdfpages,pax} \begin{document} \IncludeArticle{dir1/article1} \IncludeArticle{dir2/article2} ... \IncludeArticle{dirN/articleN} \end{document} Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 Problemi • Numeri di pagina • Testatine • Collegamenti ipertestuali 7 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Cosa fa \IncludeArticle \newcommand\IncludeArticle[1]{% % ... codice ... \immediate\write18{% cd \AT@subdirectory/\AT@article@path && latexmk -pdf -pdflatex=’pdflatex -shell-escape ’\%O’ \string\\PassOptionsToClass{#1}{arstexnica} \string\\input{’\%S’}’ \AT@article@name && pdfannotextractor \AT@[email protected] }% % ... codice ... \includepdf[pages=-,pagecommand={}]{\AT@subdirectory/#2.pdf} % ... codice ... } Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 8 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Metadati do metadata = { articles = { ... ["Condizionali"]={ ["startpage"]=6, ["authors"]={ [[Claudio Beccari]], }, ["title"]=[[I comandi condizionali]], ["abstracts"]={ ["italian"]=[[I comandi condizionali ... che li definiscono.]], ["english"]=[[Conditional commands ... in the proper way.]], }, ["endpage"]=13, ["path"]="articoli/ComandiCondizionali/", }, ... ["lastpage"] = 48, ["month"] = "Aprile", ["year"] = "2014", ["number"] = "17", ["issn-print"] = "1828-2350", ["issn-online"] = "1828-2369", ["mode"] = "online", } return metadata end Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 9 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Possibili svantaggi del nuovo metodo Nessuna garanzia di coerenza interna Nessuna possibilità di avere riferimenti incrociati tra articoli diversi ... ? Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 10 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Promemoria per il futuro • Aggiungere funzioni agli script • Preparare il pacchetto per il rilascio su CTAN • Integrazione con un DVCS Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 11 / 12 Razionalizzare la produzione di una rivista: ArsTEXnica Dove trovare il codice https://github.com/mlgdominici/ArsKit-temp Massimiliano Dominici | Gruppo utilizzatori Italiani di TEX | guItmeeting2014 12 / 12
© Copyright 2024 ExpyDoc