[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: jadetex question
>>>>> "Bo" == Bo Berghout writes:
Bo> Добрый день! У меня очень конкретный вопрос: наблюдал ли кто-нибудь,
Bo> чтобы jadetex корректно менял не только размеры шрифта, но также
Bo> posture и weight?
Не скажу, не пользую jadetex. Саша?
Bo> Дело в том, что пытаясь добиться от jadetexа нормальной работы я
Bo> довольно внимательно прочитал его исходники и у меня возникло
Bo> впечатление, что он и не должен правильно работать.
Bo> Сразу оговорюсь: я очень плохо знаю ТеХ.
Я тоже.
Bo> Итак, в jadetexе очень часто встречается следующая конструкция:
Bo> \def\MyFirstMacro#1{ ... \MyOtherMacro{#1} ... }
Bo> При этом в качестве параметра передается последовательность определений
Bo> вида \def\Param1{Value1}...\def\ParamN{ValueN}.
Bo> При этом MyOtherMacro определен примерно так:
Bo> \def\MyOtherNacro#1{ ...
Bo> #1
Bo> ... }
Bo> Имеется в виду, что MyFirstMacro получит эту строку, и передаст _ее же_
Bo> MyOtherMacro, ведь правда?
Да.
Bo> Но на самом деле, как я понимаю "семантику" ТеХа, MyOtherMacro получит
Bo> уже не саму эту последовательность определений, а результат ее
Bo> макрорасширения, то есть последовательности \Param1...\ParamN будут
Bo> заменены на их значения.
Нет. \def отработает в момент его интерпретации, внутри
\MyOtherMacro.
Bo> А это явно не то, что имел в виду г-н Ратц.
Bo> Верно ли вышеизложенное?
Не-а. Предлагаю осмыслить вот такой пример:
\documentclass{article}
\begin{document}
\def\MyFirstMacro#1{%
This is first macro. Let's redefine \textbackslash{}theValue. If it
will be redefined, that means \textbackslash{}Param was NOT
substituted on call to \textbackslash{}MyFirstMacro, we have still
{\textbackslash{}def\textbackslash{}Param{\textbackslash{}theValue}}
here in our argument.
\def\theValue{This is new value from
\textbackslash{}MyFirstMacro. If you can read this, macro
expansion is done where its argument is evaluated (like it
should be ;-)}
\MyOtherMacro{#1}\\
this is still first macro\\
}
\def\MyOtherMacro#1{%
this is other macro\\
#1
\Param.
End of other macro.
}
\def\theValue{This is a value set from global level. If you can read
this, macro expansion is indeed done on global level}
Now let's test: \MyFirstMacro{\def\Param{\theValue}}.
\end{document}
Bo> И еще вопрос: у меня стоит версия jadetex 0.53 от 26 октября. Выходили
Bo> ли более поздние? Если да, то где они берутся?
No idea.
--
Best regards, -- Boris.