[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 455.   LaTeX: file esterni

LaTeX prevede alcuni comandi per l'inclusione di file esterni; inoltre, in questo capitolo si vuole dimostrare in che modo creare file con informazioni ottenute in fase di composizione, in modo da poterle rielaborare con altri programmi.

455.1   Importazione

Esistono due comandi molto simili per dire a LaTeX di incorporare un file esterno:

Comando Descrizione
\input{nome_file}
include il file nel punto in cui appare il comando (può essere usato anche nel preambolo);
\include{nome_file}
include il file nel punto in cui appare il comando, dopo un salto pagina (non può essere usato nel preambolo);
\includeonly{nome_file_1,nome_file_2,...nome_file_n}
usato nel preambolo, consente di selezionare quali file possono essere inclusi effettivamente con il comando \include.

Se i nomi dei file non contengono l'estensione, si intende che questa sia .tex; inoltre, come si può intuire dal nome, il comando \includeonly può interferire solo con le inclusioni attraverso \include.

455.2   Importazione letterale

Se si utilizza il pacchetto verbatim viene messo a disposizione un comando particolare per l'inserimento di file esterni da rappresentare nella composizione in modo letterale:

Comando Descrizione
\usepackage{verbatim}
include il pacchetto verbatim (nel preambolo);
\verbatiminput{nome_file}
include il file nel punto in cui appare, rappresentandolo tale e quale.

455.3   Creazione di file

Per creare un file si deve prima definire il flusso in uscita, attribuendogli un nome, quindi questo deve essere aperto, inserendovi dei dati, infine lo si chiude. Di solito si creano file con una radice uguale a quella del file contenente il sorgente, attraverso il comando \jobname:

Comando Descrizione
\newwrite\nome_flusso}
dichiara il nome del flusso da aprire in scrittura;
\immediate\openout\nome_flusso\jobname.estensione
crea il file con estensione .estensione e lo associa al flusso indicato;
\immediate\write\nome_flusso{testo}
aggiunge in coda al file una riga di testo, come indicato nell'argomento;
\immediate\closeout\nome_flusso
chiude il file corrispondente al flusso indicato;
\jobname
si espande nella stringa corrispondente alla radice del nome del file LaTeX sorgente.

L'esempio seguente mostra in che modo si potrebbe realizzare un indice generale elementare:

...
\chapter*{Indice generale}
\input{\jobname.indice}
...
\newwrite\miofile
\immediate\openout\miofile\jobname.indice
...
\chapter*{Introduzione}
\immediate\write\miofile{Introduzione {\arabic{page}}\par}
...
\chapter{Bla bla bla}
\immediate\write\miofile{Bla bla bla {\arabic{page}}\par}
...
\appendix
\chapter{Appendice}
\immediate\write\miofile{Appendice {\arabic{page}}\par}
...
\immediate\closeout\miofile

All'inizio dell'esempio si vede l'inclusione di un file con lo stesso nome del sorgente LaTeX ed estensione .indice. Come si può intendere, la prima volta questo file non esiste e l'inclusione non produce alcun risultato. Successivamente si crea questo file, quindi, all'inizio di ogni sezione principale si annota il titolo di questa e la pagina in cui si trova. Nella composizione successiva, il file viene incluso e successivamente rigenerato, probabilmente con numeri di pagina diversi, a causa dell'allungamento del documento; nella terza composizione si dovrebbe ottenere un risultato soddisfacente. Ecco come si potrebbe presentare il file generato in questo modo:

Introduzione {1}\par 
Bla bla bla {10}\par 
Appendice {25}\par 

Nell'esempio si deve osservare che \arabic{page} si è trasformato correttamente nel numero della pagina e \par è rimasto intatto. Nel caso si inserissero delle macro, si potrebbe ottenere un risultato indesiderabile. Per esempio, si potrebbe desiderare di separare il titolo dal numero della pagina con dei puntini di sospensione elastici:

\immediate\write\miofile{Introduzione\dotfill{\arabic{page}}\par}

Il file generato si presenterebbe così:

Introduzione\unhbox \voidb@x \cleaders \hbox to.44em{\hss .\hss }\hfill \
  \\kern \z@ {1}\par

In questi casi si può usare il comando \string per evitare che la barra obliqua inversa del comando \dotfill venga presa in considerazione:

\immediate\write\miofile{Introduzione\string\dotfill{\arabic{page}}\par}

Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome latex_file_esterni.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory