robitex” post=75242Ciao.
Ho creato un registro dimensionale sul quale eseguo delle operazioni di somma e divisione.
Alla fine ho quindi un valore numerico puro e mi occorre l’espansione dei token del numero per passarlo ad un comando di pgfplots, per ottenere un dimensionamento automatico di un ‘pannello’ all’interno dell’area di un grafico.
L’espansione dovrà poi andare all’interno di un istruzione TikZ tipo \draw (axis cs:44, \y)…Il odice che ho scritto è il seguente:
`\newdimen\ypanel
\ypanel = 8cm
\advance\ypanel by -38pt% margini sup+inf (in realtà i 38pt sono l'altezza di un box variabile)
\divide\ypanel by 228 % 80mm/0.35pt circa% elimino i pt dall'espansione di \the\yanel con un comando
% con argomenti delimitati
\def\ptcut#1pt{#1}
\def\yp{\expandafter\ptcut\expandafter{\the\ypanel}}`L’errore che ottengo è invece:
Runaway argument?
{0.81413pt}
! Paragraph ended before \ptcut was complete.
\par
So che sto facendo un errore banale, perdonatemi se vi chiedo aiuto…
R.
Il problema è che [tt]\the\ypanel[/tt] produce token di categoria 12, mentre nella tua definizione [tt]pt[/tt] sono di categoria 11:
`\begingroup\lccode`!=`p \lccode`?=`t
\lowercase{\endgroup\def\ptcut#1!?{#1}}`
Funziona perché [tt]\lowercase[/tt] non cambia i codici di categoria.
Metodo alternativo (un po’ di pubblicità non guasta :))
`\usepackage{regexpatch}
\def\ptcut#1pt{#1}
\xpatchparametertext{\ptcut}{pt}{\cO p \cO t}{}{}`
Metodo molto più semplice: usare `\strip@pt`: con
`\strip@pt\ypanel`
ottieni proprio il numero (richiede alcuni passi di espansione, quindi bisognerebbe sapere un po’ di più sull’uso che devi farne).
Ciao
Enrico