Discussione:
metaoperazioni in latex
(troppo vecchio per rispondere)
Josh
2006-10-28 10:58:39 UTC
Permalink
E' possibile effettuare operazioni di moltiplicazione e divisione sui
reali in latex? Mi spiego meglio: vorrei ad esempio poter scrivere:

\definecolor{MyYellow}{rgb}{240*0.0034,240*0.0034,185*0.0034}

o ancora, posto \convert=0.0034, poter scrivere:

\definecolor{MyYellow}{rgb}{240*\convert,240*\convert,185*\convert}.

Come potrei fare?
Grazie, Josh.
F. Lopez
2006-10-28 12:49:00 UTC
Permalink
Post by Josh
E' possibile effettuare operazioni di moltiplicazione e divisione sui
\definecolor{MyYellow}{rgb}{240*0.0034,240*0.0034,185*0.0034}
o ancora,
[cut]

LaTeX è una 'tipografia' digitale a 360 gradi, per quanto sia senza
confronto per editare "beautiful documents, specially with mathematical
notation" non è per questo un programma di computazione matematica che possa
elaborare anche elementari operazioni aritmetiche come quelle che
menzioni... ciao.

F. Lopez

p.s. devo dire che IMHO poni dei quesiti un po' strani...
mallin shetland
2006-10-28 13:20:20 UTC
Permalink
Post by Josh
E' possibile effettuare operazioni di moltiplicazione e
divisione sui reali in latex?...
TeX è un linguaggio di programmazione Turing
completo; in teoria dovresti essere in grado
di calcolare qualsiasi cosa sia calcolabile,
tipo il primo miliardo di cifre della costante
di Eulero-Mascheroni.

Più banalmente prova:

\advance\nome by valore

\multiply\nome by valore

\divide\nome by valore
vanvera
2006-10-28 13:25:52 UTC
Permalink
Post by Josh
E' possibile effettuare operazioni di moltiplicazione e divisione sui
Contrariamente a cio' che ha affermato frettolosamente F.Lopez,
il TeX e' di fatto un linguaggio di programmazione.
Quindi in teoria puoi fare tutto, ma non e' detto che in pratica sia facile.

Prova a guardare la documentazione del package calc, che fa qualcosa
di simile a quello che chiedi, credo.

http://www.ctan.org/tex-archive/help/Catalogue/entries/calc.html

ciao,
g.
F. Lopez
2006-10-29 00:48:19 UTC
Permalink
"vanvera" <***@CUTgmail.com> scriveva:

[...]
Post by vanvera
il TeX e' di fatto un linguaggio di programmazione.
Quindi in teoria puoi fare tutto... [...]
IMHO non credo che questa sia un'affermazione vera per definizione, non
trovo il senso delle logiche che ragionano circolarmente attorno a argomenti
o affermazioni del tipo << *in teoria* questo è possibile >>, per quello che
un utente 'quadratico medio' di LaTeX possa badare, è proprio fare *editing*
di documenti quello che interessa maggiormente, che i documenti prodotti
siano stampabili su carta, visibili su uno schermo, convertibili in altri
formati ecc. è un'altra storia; ma da li a dire che LaTeX è un pass-partout
per ogni circostanza o contingenza di programmazione mi sembra un po'
spocchioso. Cmq, se già ci sono algoritmi di calcolo logico e numerico
capaci di fare ogni cosa a che giova usare LaTeX in tal senso? ciao.

F. Lopez
vanvera
2006-10-29 05:42:46 UTC
Permalink
Post by F. Lopez
Cmq, se già ci sono algoritmi di calcolo logico e numerico
capaci di fare ogni cosa a che giova usare LaTeX in tal senso? ciao.
Mi sembra strano che una persona che abbia usato il LaTeX o
il TeX per qualche tempo possa esprimersi nel modo che fai tu.

Nessuno ci tiene a risolvere equazioni differenziali in LaTeX,
ma il fatto di poter fare piccole operazioni all'interno del documento
e' comodissimo.
Considera ad esempio il pacchetto calc e i tantissimi pacchetti
che lo utilizzano.
Tieni presente che molti pacchetti, per fare quello che fanno,
di fatto usano il TeX per fare dei calcoli.
Per esempio guardati il pacchetto per colonne multiple.
Come pensi che riesca ad equilibrare l'ultima pagina, se non
facendo dei calcoli ?
E non solo calcoli, ma anche if-then-else e costrutti iterativi,
etc.etc.
Anche l'utente medio puo' usare direttamente alcune di questi costrutti:
io per esempio avevo scritto il mio curriculum in modo
che cambiando un flag all'inizio, le pubblicazioni venissero
numerate in modo consecutivo o sepatamente per tipologia,
e in base ad un altro flag producevo un curriculum corto o lungo.
Tanto per farti un esempio di come sia comodo poter usare
un costrutto if-then-else e dei contatori all'interno di un documento.

Qui non stiamo discutendo di cosa puo' fare l'utente medio,
ma di quello che si puo' fare col TeX e quindi col LaTeX,
in caso di bisogno. E forse ti sfugge la differenza con altri
programmi per la scrittura:
in TeX tu di fatto "programmi" il documento usando un linguaggio
di programmazione. Che questo ti sia trasparente e che l'utente
medio lo possa ignorare, grazie al gran numero di "macro" gia'
disponibili e' un fatto. Ma dietro le quinte uno (bravo) ha
a disposizione tutta la potenza espressiva di un linguaggio per
fare col LaTex cose che nessuno ha ancora fatto.
ciao,
g.
mallin shetland
2006-10-29 07:01:46 UTC
Permalink
Post by F. Lopez
IMHO non credo che questa sia un'affermazione vera per
definizione,
... non trovo il senso delle logiche che
ragionano circolarmente attorno a argomenti o affermazioni
del tipo << *in teoria* questo è possibile >>, ...
Invece io non riesco a concepire chi dice delle
cose non vere (come dire che TeX è incapace di
eseguire le operazioni matematiche elementari)
e poi si arrampica sugli specchi aggrappandosi
ad argomenti speciosi quando si dimostra il suo
torto.
Belinde
2006-10-29 09:12:50 UTC
Permalink
Cmq, se già ci sono algoritmi di calcolo logico e numerico capaci di fare
ogni cosa a che giova usare LaTeX in tal senso?
Ehi, ma guarda che si sta parlando di calcoli elementari, non di calcolo
differenziale alle derivate parziali! Nella fattispece di un metodo di
calcolo per i valori di colore... che mi sembra *estremamente* comodo
(primo esempio che mi viene in mente) per creare una serie di documenti
identici ma virati a differenti colori o qualsiasi altra cosa. E questo non
è un problema tipografico?

Poi è abbastanza ovvio che non creo un documento LaTeX *solo* per calcolare
il totale della spesa che ho fatto a mia nonna... ma in effetti per un
professionista crearsi un pacchetto che con pochi comandi calcoli e stampi
una fattura (esempio idiota!) potrebbe essere comodo!

Qual è la summa di tutto il discorso? Che se qualche cosa sembra stupido a
te non è detto sia stupido *in* *assoluto*! Pensa che molti miei amici
trovano stupido il mio utilizzare LaTeX piuttosto che roba tipo
QuarkXPress... credi abbiano ragione? Solo perchè non conoscono le mie
necessità non hanno certo il diritto di dire che faccio una cosa stupida...

Chiudo con un classico della cultura usenet: "il tutto, ovviamente, IMHO!"

Franco
--
Tanto più estendo l'isola della mia conoscenza,
quanto più scopro aumentare la linea costiera della mia ignoranza.
F. Lopez
2006-10-29 11:09:23 UTC
Permalink
ciao, grazie delle risposte al thread, stiamo a ribadire lo stesso concetto
di fondo sulle capacità *quasi* illimitate di TeX, è stato il vocabolo
'calcolo' il generatore di apparente contraddizione, dal lat. calculus
(sassi) perché gli antichi usavano pietruzze al posto di cifre, sono
d'accordo che nei pacchetti menzionati ci sono computi di sassi piccoli o
anche medi, ma da li alle equazioni differenziali o ai megaliti ce ne
vole... va be, grazie vanvera scrivi con convinzione ciò che dici; anche
Belinde sembri entusiasta con l'invenzione di L. Lamport e D. Knuth; grazie
anche a mister Shetland, il tuo post odora di flame, non farlo. Complimentos
e auguros al newsgroup :)

F. Lopez
Josh
2006-10-29 11:49:58 UTC
Permalink
Post by vanvera
Post by Josh
E' possibile effettuare operazioni di moltiplicazione e divisione sui
Contrariamente a cio' che ha affermato frettolosamente F.Lopez,
il TeX e' di fatto un linguaggio di programmazione.
Quindi in teoria puoi fare tutto, ma non e' detto che in pratica sia facile.
Capisco che sia un linguaggio di programmazione, magari anche turing
completo, ma ciò non significa che possa fare qualsiasi cosa. Ad
esempio una macchina di turing non può scrivere su di un monitor,
semplicemente perché il monitor non ce l'ha. Voglio dire
che quello che chiedo probabilmente necessita di un precompilatore
e se così fosse sarebbe impossibile da risolvere con una sola
passata di compilazione di tex.

Comunque, più semplicemente, il problema che devo risolver è questo.
In Windows le coordinate rgb dei colori vengono fornite appartenenti
ad intervalli [0,255]. In Latex, vengono fornite appartenenti a [0,1].

Quello che mi serve è allora poter scrivere:

\definecolor{MyYellow}{rgb}{\convert{240},\convert{240},\convert{185}}

con convert(x) = x/255.

Qualcuno sa se è possibile farlo?
Post by vanvera
Prova a guardare la documentazione del package calc, che fa qualcosa
di simile a quello che chiedi, credo.
L'unica cosa più simile che ho trovato è il pacchetto fltpoint, ma il
problema è che i risultati si rendono utili solo al tempo di esecuzione
(dvi) e non al tempo di compilazione.

Ciao, Josh.
vanvera
2006-10-29 14:37:16 UTC
Permalink
Post by Josh
Comunque, più semplicemente, il problema che devo risolver è questo.
In Windows le coordinate rgb dei colori vengono fornite appartenenti
ad intervalli [0,255]. In Latex, vengono fornite appartenenti a [0,1].
\definecolor{MyYellow}{rgb}{\convert{240},\convert{240},\convert{185}}
con convert(x) = x/255.
Qualcuno sa se è possibile farlo?
Se e' solo questo che devi fare, allora non ti servono operazioni.
Pensa gia' a tutto il pacchetto xcolor che permette di usare
molti diversi modelli di colore, in particolare ha anche
un modello RGB con parametri tra 0 e 255 come vuoi tu.
http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=xcolor

ciao,
g.

Loading...