Buongiorno a tutti.
Mi presento, sono Paolo. E’ un po’ di tempo che vi seguo nel fantastico mondo di LaTeX e finora grazie anche ai vostri messaggi sono sempre riuscito a cavarmela. Ora però sono bloccato! Il problema è il seguente: dovendo lavorare su più file che contengono variabili che si ripetono vorrei scrivere in un file un elenco di tali variabili nella forma Variabile=Valore. Poi vorrei che in fase di lettura LaTeX mi definisse un comando \Variabile da poter usare in tutti i miei file. Navigando in rete ho trovato del codice che sembra fare quello che vorrei, ma non riesco a compilare (uso MiKTeX 2.8 e pdflatex). Il codice è il seguente:
\newcommand*\Var[1]{%
\ifcsname Var/#1\endcsname
\@nameuse{Var/#1}%
\else
\ClassError{…}{Variable `#1′ undefined}{…}%
\fi
}
\def\Var@ParseLine#1=#2\@nil{%
\@namedef{Var/#1}{#2}%
}
\newread\Var@InputStream
\edef\Restore@Endlinechar{\endlinechar=\the\endlinechar\relax}
\endlinechar\m@ne
\openin\Var@InputStream=Variables.tex
\loop\unless\ifeof\Var@InputStream
\read\Var@InputStream to \Var@Line
\expandafter\Var@ParseLine\Var@Line\@nil
\repeat
\closein\Var@InputStream
\Restore@EndlinecharGrazie a tutti in anticipo.
Paolo
Non sono abbastanza esperto di TeX per capire cosa non funziona del codice ma mi sembra che esista una soluzione più semplice:
`\documentclass{article}
\usepackage[utf8]{inputenc}% cambia se sei sotto Windows o Mac
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\newcommand{\addvar}[2]{% #1 name, #2 value
\expandafter\def\csname varmacro#1\endcsname{#2}
}
\newcommand{\var}[1]{%
\csname varmacro#1\endcsname
}
\addvar{Pi}{3.14}
\addvar{e}{2.71}
\addvar{newyear}{2010}
\begin{document}
Valore di \( \pi=\var{Pi} \), mentre il valore di \(e\), il numero di Nepero è \var{e}.
I comandi funzionano sia in modalità matematica sia testo.
Auguri di Buon anno \var{newyear}!!
\end{document}`
Ecco come funziona: il comando \addvar{nome_variabile}{valore} crea una macro chiamata \varmacronome_variabile che viene espansa in valore.
Quindi basta richiamare la variabile con il secondo comando \var{nome_variabile}.
Se vuoi puoi inserire le definizioni di \addvar in un file a parte ed inserirli nel sorgente con \input{vardef_file}.
Ciao.