Re: [Risolto] Definizione variabili

#38430
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    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@Endlinechar

    Grazie 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.

    Go to top