- Questo topic ha 14 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 7 anni, 11 mesi fa da
robitex.
-
CreatoreTopic
-
31 Agosto 2018 alle 6:03 #113793::
Ciao a TuttiDovrei realizzare un documento il cui contenuto varia a seconda di alcuni “casi” ad esempio:
Articolo X.
– opzione 1
bla bla bla
– opzione 2
123 123 123
– opzione 3
…………Articolo Y.
– opzione 1
asd asd asd
– opzione 2
qwe qwe qweMi piacerebbe poter definire in un unico file le diverse opzioni per tutti gli articoli. Sapete come potrei scrivere un documento del genere ?
-
CreatoreTopic
-
AutoreRisposte
-
-
31 Agosto 2018 alle 7:59 #113794::
Benvenuto nel forum, e superbenvenuto con una domanda precisa e difficile da rispondere.
I comandi nativi di TeX prevedono diversi confronti (anche booleani) fra oggetti diversi;\ifnum confronta due numeri anche contenuti in registri numerici
\ifdim confronta due dimensioni, sia rigide, sia elastiche esplicite o conservate in registri di tipo dimen o di tipo skip
\if confronta due token per vedere se hanno lo stesso codice; buono per confrontare due caratteri
\ifcat confronta due token per vedere se hanno lo stesso codice di categoria
\ifcase esegue uno dei casi successivi individuati da un numero, generalmente una macro o il contenuto di un contatore
\ifodd verifica se un numero è dispari
\ifeof serve per verificare se un file è arrivato alla fine, ma viene usato anche per verificare se un file esiste.Forse ne ho dimenticato qualcuno, ma nella guida tematica Il LaTeX Reference Manuala comentato dovrebbero esserci tutti.
Il guaio di questi costrutti è che possono dare origine a codici fragili, generatori di errori talvolta difficili da verificare.
Per avere dei comandi robusti è opportuno servirsi di pacchetti che gestiscono i condizionali in modo robusto, anche catene di condizionali.
Il primo che mi viene in mente è etoolbox; bisogna leggerne la documentazione, di solito chiara e ben scritta (in inglese); Senon ricordo male c’è anche un comando condizionale per esaminare una lista.
Il secondo metodo che mi viene in mente è il pacchetto xkvaley; permette di definire delle macro (e anche di gestire classi .cls e moduli di estensione .sty) con la sintassi chiave=valore; ovviamente se definisci una macro che riconosce la chiave Opzione che accetta i valori opzione-1, opzione-2, opzione-3, fa quel che deve fare in corrispondenza di questi valori, ma se sbagli a scrivere una chiave o esegue una procedura di default, o segnala un errore. Manco a dir chissà, la lettura della documentazione è essenziale, perché la logica delle chiavi=valori è completamante diversa da quella di TeX e di LaTeX2e.
Nel linguaggio LaTeX3 (L3) sono definite altre “funzioni” per esaminare liste di stringhe o di valori numerici
Non saprei che cosa consigliarti; forse visto che scrivi il tuo primo messaggio, il che no implica che tu sia un neofita di LaTeX, ma non si sa mai, sarebbe meglio che ti rivolgessi a etoolbox. Tuttavia dipende molto da quello che vuoi fare.
-
31 Agosto 2018 alle 8:20 #113795::
FJM” post=114123Ciao a Tutti
Dovrei realizzare un documento il cui contenuto varia a seconda di alcuni “casi” ad esempio:
Articolo X.
– opzione 1
bla bla bla
– opzione 2
123 123 123
– opzione 3
…………Articolo Y.
– opzione 1
asd asd asd
– opzione 2
qwe qwe qweMi piacerebbe poter definire in un unico file le diverse opzioni per tutti gli articoli. Sapete come potrei scrivere un documento del genere ?
Ciao.
L’idea è quella di ottenere diversi documenti dal solito sorgente per ridurre la ridondanza.
Le versioni non devono essere troppo diverse, ovviamente.Ho fatto qualche volta una cosa del genere con \newif\
e gruppi \if … \else … \fi
Una tecnica molto semplice. Quel che è complicato è poi gestire le alternative nel sorgente in modo affidabile.
Serve quindi sperimentare in concreto per il progetto che hai per le mani.A quanto detto da OldClaudio, aggiungo che con LuaTeX si può usare codice Lua per gestire più agevolmente cosa il documento deve contenere.
Sono d’accordo quindi con la valutazione che il problema è interessante, e potrebbe essere un ottimo spunto per un lavoro per ArsTeXnica perciò spero che tu prenda la proposta in considerazione.
R.
-
31 Agosto 2018 alle 11:07 #113796
-
31 Agosto 2018 alle 13:30 #113797
-
1 Settembre 2018 alle 19:46 #113798
-
5 Settembre 2018 alle 5:05 #113799::
Buongiorno a Tutti
Ho risolto il mio problema utilizzando il pacchetto etoolbox ed in particolare \ifnumcomp. Sicuramente non è la soluzione più efficiente però sto raggiungendo il mio obiettivo (è la prima e unica soluzione che mi avete proposto e che ho provato).Diciamo che sto facendo così:
1) nel file di “controllo” definisco delle variabili con valori 1 o 0 a seconda che la domanda ad essa associata sia vera o falsa, ad esempio
% 4 – L’appalto prevede delle prestazioni in economia ?
\newcommand\RD{0} %2) nel documento
\ifnumcomp{\RD}{=}{0}{% SENZA PRESTAZIONI IN ECONOMIA
TESTO NEL CASO DI RISPOSTA FALSA
}{ % CON PRESTAZIONI IN ECONOMIA
TESTO NEL CASO DI RISPOSTA VERA
}Sto riuscendo a strutturare il documento in modo tale da poterlo gestire con questi costrutti logici elementari, per il momento pare che funziona.
Grazie a tutti per l’interessamento, se avrò modo vedrò di approfondire l’argomento.
-
5 Settembre 2018 alle 5:24 #113800::
Con la tua soluzione puoi anche rendere interattiva la compilazione del documento; basta usare i comandi \typeout e \typein del nucleo di LaTeX; li trovi descritti nella guidina tematica Il LaTeX Reference Manual commentato, scaricabile dalla sezione Documentazione di questo Forum. Con \typeout poni ladomanda che hai indicato come commento; con \typein leggi direttamente la risposta da tastiera conservandola in \RD.Non dico che questa interattività sia più pratica della modifica diretta del file sorgente; è chiaro che l’interattività rallenta un poco i tempi di compilazione perché richiede i tempi umani che non sono così rapidi come i tempi della CPU. Dipende dal documento che stai preparando e che conti di riutilizzare spesso in circostanze che richiedono impostazioni diverse.
-
5 Settembre 2018 alle 6:22 #113801::
Ciao.
Hai bisogno della tecnologia del templating.
/wp-content/uploads/joomla-images/ArsTeXnica/AT020/AutoCode.pdfQuesto metodo può essere usato anche dall’interno del sorgente .tex.
L’ideale è realizzare una gerarchia di template.
Il documento .tex può anche svolgere il ruolo di livello principale.Recentemente ho riutilizzato queste tecniche proprio dall’interno del .tex usando Lua.
Un saluto.
R.
-
25 Settembre 2018 alle 20:09 #113802
-
26 Settembre 2018 alle 4:19 #113803::
FJM” post=114358Bellissimo articolo !
Mi tocca studiarlo per bene, grazie
Ciao.
Considera che l’articolo contiene il necessario per lavorare con i template, per esempio fino all’ereditarietà tra template, ma la tecnica è presentata dall’esterno del sistema TeX.
Recentemente ho sperimentato il templating dall’interno del sorgente, una tecnica più comoda di creare contenuti, grazie a Lua, il linguaggio disponibile in LuaTeX.Potrebbe essere un ottimo argomento da sviluppare in un articolo per Ars. Il numero 26 è già chiuso ormai ma per aprile…
Happy LuaTeXing!
R.
-
27 Settembre 2018 alle 8:48 #113804::
robitex” post=114360
Bellissimo articolo !
Mi tocca studiarlo per bene, grazie
Ciao.
Considera che l’articolo contiene il necessario per lavorare con i template, per esempio fino all’ereditarietà tra template, ma la tecnica è presentata dall’esterno del sistema TeX.
Recentemente ho sperimentato il templating dall’interno del sorgente, una tecnica più comoda di creare contenuti, grazie a Lua, il linguaggio disponibile in LuaTeX.Potrebbe essere un ottimo argomento da sviluppare in un articolo per Ars. Il numero 26 è già chiuso ormai ma per aprile…
Happy LuaTeXing!
R.Vorrei capire cosa intendi con <
> mi spiego con un esempio
Servono 20-30 esercizi sulla somma, prodotto etc di numeri complessi. Questi esercizi andranno a far parte di un eserciziario pluri argomenti.
Con lua Tex è possibile:
1) generare coppie di numeri casuali
2) generare il codice Latex da inserire tramite un input in un altro documento?
ciao
claudio
-
27 Settembre 2018 alle 9:13 #113805::
claudio” post=114367
[quote=”FJM” post=114358]Bellissimo articolo !
Mi tocca studiarlo per bene, grazie
Ciao.
Considera che l’articolo contiene il necessario per lavorare con i template, per esempio fino all’ereditarietà tra template, ma la tecnica è presentata dall’esterno del sistema TeX.
Recentemente ho sperimentato il templating dall’interno del sorgente, una tecnica più comoda di creare contenuti, grazie a Lua, il linguaggio disponibile in LuaTeX.Potrebbe essere un ottimo argomento da sviluppare in un articolo per Ars. Il numero 26 è già chiuso ormai ma per aprile…
Happy LuaTeXing!
R.Vorrei capire cosa intendi con <
> mi spiego con un esempio
Servono 20-30 esercizi sulla somma, prodotto etc di numeri complessi. Questi esercizi andranno a far parte di un eserciziario pluri argomenti.
Con lua Tex è possibile:
1) generare coppie di numeri casuali
2) generare il codice Latex da inserire tramite un input in un altro documento?
ciao
claudio[/quote]
Certo.
Risposta affermativa su tutti e due i quesiti.
Per il punto 1, so che Lua genera numeri pseudo-casuali e non proprio casuali.
Naturalmente è sempre possibile sfruttare librerie esterne se proprio sono necessari i numeri casuali.
Per il punto 2, non solo è possibile generare codice LaTeX da inserire in un file esterno, ma, già che ci siamo, è possibile generare il codice LaTeX e inserirlo nello stesso sorgente.Con Lua infatti, l’utente ha accesso a praticamente tutte le possibilità.
Per esempio, anche quella di accedere a un servizio apposito di rete via TCP per rifornirsi di numeri casuali.R.
-
27 Settembre 2018 alle 10:17 #113806
-
27 Settembre 2018 alle 10:56 #113807::
claudio” post=114371da studiare allora
una bigliografia sitografia?
claudioCosa imparare dipende da te.
Se vuoi costruirti il codice allora un minimo di conoscenza di Lua è d’obbligo ovviamente.
Ho iniziato una guida tematica “Guida a Lua per utenti LuaTeX” ma non l’ho ancora resa pubblica.Molti argomenti li trovi sviluppati anche in articoli su ArsTeXnica e sono scaricabili dall’apposita sezione del sito GuIT.
Happy LuaTeX!
Alla prossima.
R.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.