Re: Variabili dinamiche

#85550
Up
0
Down
::

Amedeo” post=84994Ciao a tutti,

ho bisogno di definire varibili dinamiche ovvero il cui nome dipende dal valore di altre variabili. Con un linguaggio di programmazione tradizionale, utilizzerei dei vettori posizionali
`
pos = 1
dim[ pos ] = 5
descr[ pos ] = “Compositore”
`
o associativi
`
dim[ “Giuseppe Verdi” ] = 5
descr[ “Giuseppe Verdi” ] = “Compositore”
`
o variabili dinamiche
`
pos = 1
eval dim$pos = 5 % pos1 = 5
eval descr$pos = “Compositore” % descr1 = “Compositore”
`
E con LaTeX?

a

I nomi delle macro in TeX sono usati come chiavi di un grande array associativo che contiene i valori delle macro stesse. In sostanza, puoi definire macro che si chiamano come vuoi tu (non ci sono i vincoli stringenti sui nomi di variabili tipici di altri linguaggi di programmazione).

`\documentclass{article}

\makeatletter
\newcommand\getValue[1]{\@nameuse{value@#1}}
\newcommand\setValue[1]{\@namedef{value@#1}}
\newcommand\getDim[1]{\@nameuse{dim@#1}}
\newcommand\setDim[1]{\@namedef{dim@#1}}
\newcommand\getDescr[1]{\@nameuse{descr@#1}}
\newcommand\setDescr[1]{\@namedef{descr@#1}}
\makeatother

\begin{document}

\def\pos{1}

\setDim{\pos}{5}
\setDescr{\pos}{Compositore}

\getDim{\pos}, \getDescr{\pos}

\setDim{Giuseppe Verdi}{5}
\setDescr{Giuseppe Verdi}{Compositore}

\getDim{Giuseppe Verdi}, \getDescr{Giuseppe Verdi}

\def\pos{1}

\setValue{dim\pos}{5}
\setValue{descr\pos}{Compositore}

\getValue{dim1}, \getValue{descr1}

\end{document}`

Ciao,
Antonio

Go to top