Newsgroup: it.comp.software.tex
Titolo: File separati per formule e testo

Salve a tutti.
Stiamo riscrivendo dei libri per corsi universitari. Per problemi 
"organizzativi" vorremmo separare i file dei capitoli in due, uno 
contenente le sole formule, ed uno contenente il solo testo.
Vorrei sapere se è possibile (in modo semplice) richiamare la generica 
formula da dentro il file delle formule per inserirla dove voglio io nel 
file del testo (tipo un \input{...} ma questo inserirebbe tutto il file 
mentre io voglio inserire una sola formula, richiamandala tramite un tag 
mnemonico).
Grazie in anticipo.
-- 
Una volta che avete conosciuto il volo, camminerete sulla Terra guardando 
il cielo, perché là siete stati e là desiderate tornare (Leonardo da Vinci)

 Grazie in anticipo.
Mi sembra un'organizzazione bislacca, comunque io farei cosě:
Nel file formule.tex definisci ciascun tag mnemonico con \newcommand
\newcommand{\tagmnemo}{formula}
Nel file testo.tex richiami le definizioni (una sola volta) con un 
\input{formule.tex} nel preambolo o subito dopo \begin{document}  o 
comunque subito prima del primo utilizzo di \tagmnemo

mnemonico).
E' possibile, in modo relativamente semplice, se il file delle formule
definisce una macro per ogni formula (tipo \formula1, \formula2, ecc.; o
\formula_del_tale) che verrà poi richiamata nel file di testo. Salvi i
limiti di TeX per memoria e numero di macro, naturalmente.
Con appena un po' più di lavoro, si dovrebbe potere anche fare in modo che
il file delle formule si limiti a definire le suddette macro se richiamato
all'interno del file di testo, e produca invece un documento con le sole
formule se compilato da solo.
Può darsi però che esistano dei sistemi ancora più semplici e/o comodi. Per
esempio, si potrebbe dare un'occhiata ai pacchetti per il merge fra
template e dati. O si potrebbe costruire un preprocessore ad hoc. Molto
dipende anche dal carattere dei "problemi organizzativi".
Ciao.

 Molto dipende anche dal carattere dei "problemi organizzativi".
Su questo ho risposto a Giuseppe Toscano.


 comunque subito prima del primo utilizzo di \tagmnemo
Grazie. Funziona alla perfezione.


 Grazie in anticipo.
Problema, a mio parere, insolubile in modo pratico.
Puoi provare a dare un input selettivo, nel senso che
puoi definire gli opportuni comandi in modo che
\useformula{aaa}
faccia \input{formule} e scelga solo la prima riga
dal file formule.tex così formato (per esempio):
\formula{aaa}a=a\endformula
\formula{bbb}b=b\endformula
Costo in tempo: elevatissimo, perché devi leggere
l'intero file a ogni formula.
Oppure il file formule.tex può essere letto
una volta per tutte; se il formato è lo stesso
di prima, puoi definire
\def\formula#1#2\endformula{\expandafter\def\csname#1\endcsname{#2}}
\def\useformula#1{\csname #1\endcsname}
\input{formule}
ma così corri il rischio di esaurire la memoria di TeX.
Piuttosto, puoi fare in un altro modo. Il file contiene
il testo e le formule, ti apri uno stream di output 
e ci scrivi ogni formula che vuoi.
\newwrite\form
\immediate\openout\form=formule.tex
\newcommand{\formula}[1]{\immediate\write\form{#1}#1}
e le formule da trascrivere saranno del tipo
$\formula{a=a}$.
Questa soluzione non è testata. Ci sono ovvi problemi
di espansione e di protezione di comandi.
Ciao
Enrico

Per macro intendi \newcommand come mi ha suggerito Giuseppe Toscano?
Nella forma più elementare, sì. Meglio, forse, definire un nuovo comando o
ambiente che definisce un nuovo comando, come proposto da Enrico Gregorio.
Questo ti darebbe la flessibilità necessaria per ottenere risultati diversi
secondo come si usa il file di formule, e probabilmente anche un maggiore
ordine logico. Il limite (anche per il semplice uso di \newcommand) è la
memoria di TeX.
Se no, potresti inventarti un metaLaTeX, in cui scrivere il documento, e un
preprocessore (comunque scritto) che, da questo e dal database delle
formule (comunque strutturato), genera il documento LaTeX da compilare.
Ciao.

una sorta di "bibliografia" delle formule.
Avevo pensato anche all'ennesima applicazione impropria di BibTeX, ma mi sa
che non sia sufficientemente flessibile per ottenere una cosa simile.
Ciao.


Hm. "temo" che lo sia, invece. Ovviamente studiarsi il linguaggio per 
creare il .bst appropriato ... be', è tutta un'altra cosa ;)
-- 
Giuseppe "Oblomov" Bilotta
Can't you see
It all makes perfect sense
Expressed in dollar and cents
Pounds shillings and pence
                  (Roger Waters)

 scrive:
::: Stiamo riscrivendo dei libri per corsi universitari. Per problemi
::: "organizzativi" vorremmo separare i file dei capitoli in due, uno
::: contenente le sole formule, ed uno contenente il solo testo.
::: Vorrei sapere se è possibile (in modo semplice) richiamare la generica
::: formula da dentro il file delle formule per inserirla dove voglio io nel
::: file del testo (tipo un \input{...} ma questo inserirebbe tutto il file
::: mentre io voglio inserire una sola formula, richiamandala tramite un tag
::: mnemonico).
:: Problema, a mio parere, insolubile in modo pratico.
::
:: Puoi provare a dare un input selettivo, nel senso che
:: puoi definire gli opportuni comandi in modo che
8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Potresti anche scrivere un piccolo, ma veramente piccolo
script che, in shell, cerca i riferimenti che hai piazzato tu
nel file di testo e ci inserisce le formule prese dall'altro
file di formule, in modo da ottenere un unico file .tex.
Con testo e formule. Poi ovviamente puoi tenere i due
files separati e all'occorrenza modificarli per poi unirli
lanciando lo script.
-- 
*Emanuele*
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*
  Gruppo Utilizzatori Italiani di TeX
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*
  TUG Italiano - 
www.GuIT.sssup.it
*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*