[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.