LINUX.ORG.RU

Как раскрыть содержимое макроса во время присваивания?

 ,


0

2

Сижу, ломаю голову, как передать «хрупкую» команду (\protect'ы всякие не помогают) в параметр для \FPeval.

Т.е. если я делаю так:

\def\tmp{\protect\expandnext \popalldel{+}}
…
\FPeval{\result}{\tmp}
то, понятное дело, содержимое макроса \tmp будет раскрываться лишь при вызове \FPeval, что приведет к ошибке (команда \popalldel{+} выталкивает содержимое стека, разделяя записи знаком «+», чтобы можно было вычислить сумму чисел в стеке).

Если я пишу \edef{…}, получаю «Incomplete \iffalse».

Уже и Кнута перерыл, и в гугле меня забанили… Никак не могу найти, как же раскрыть содержимое \def'а и присвоить команде уже строку, не содержащую командных последовательностей!



Такой вариант:

\setbox0=\hbox{\popall{+}}
\FPeval{\result}{\unhbox\box0}
тоже не работает: получаю матюги на \unhbox.

И даже так (с использованием пакета etextools):

\setbox0=\hbox{\popall{+}}
\edef\AA{\expandnext\unhbox\box0}
\FPeval{\result}{\AA}
получаю матюги.

Как же раскрыть этот чертов список?

☆☆☆☆☆
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.