hai ragione scusate
il \for non sono riuscito a usarlo … ma potrebbe essere perchè non ho mai usato i comandi tex 😆 in particolare,facendo come scrivi sopra io riesco a usare solo un argomento per volta, e non due, quindi non riesco a disegnare linee (o fare qls altra cosa che richieda 2 argomenti)con il latex invece ce l’ho fatta ma in maniera un po’ contorta:
`
\usepackage{ifthen}\newcounter{multicounter}
\newcommand{\multilinea}[3] {
\setcounter{multicounter}{#1}
\multilineainnerproc{#2}{#3}
}\newcommand{\multilineainnerproc}[2] {
LINEA (#1,#2)\\
\addtocounter{multicounter}{-1}
\ifthenelse{\value{multicounter}>1}
{\multilineainnerproc{#2}} %notare: richiamo con 1 argomento solo…
{}
}
`da richiamare con: \multilinea{num-punti}{p1}…{pn} (e ci devono essere almeno 2 punti…)
Sarebbe bello generare un warning se num-punti è < 2, ma non sono capace. Magari apro un'altro topic sull'argomento. P.S. forse segreto militare no.. ma cmq mi sento molto orgoglioso di questo pezzetto di codice ;)
Con la sintassi che vuoi è impossibile, LaTeX non saprebbe identificare l’ultimo argomento. Con quella che ti ho proposto sì:
`\makeatletter
\def\multilinea#1{%
\let\ml@end\@empty
\@for\next:=#1\do
{\ifx\ml@end\@empty
\edef\ml@end{\next}%
\else
\edef\ml@start{\ml@end}%
\edef\ml@end{\next}%
\message{\ml@start–\ml@end}%
\fi}}
\makeatother`
La riga con \message è quella che dovrai modificare per i tuoi scopi: il punto iniziale è disponibile con \ml@start, quello finale con \ml@end. Ho messo questa per mostrarti che il comando identifica correttamente i parametri: \multilinea{a,b,c,d} produce i messaggi “a–b”, “b–c” e “c–d”.
Si può anche studiare di inserire il messaggio di errore, ma meglio prima lavorare sui casi interessanti e lasciare alla fine di dettagli.
Ciao
Enrico