[XeTeX] Localised [Xe][La]TeX (was : Localized XeLaTeX (was : Greek XeLaTeX))
Keith J. Schultz
keithjschultz at web.de
Sat Oct 16 14:18:59 CEST 2010
Nice examples.
Am 15.10.2010 um 15:29 schrieb Philip Taylor (Webmaster, Ret'd):
>
> Keith, I don't see enough in your answer to enable me to understand
> how you propose to resolve what seem to me to be very serious
> problems of semantic ambiguity. Let me give a simple example,
> using a fictitious language (Mekon) that use the basic latin character set.
>
> Mekon defines the following translations :
>
> \efg = \def
> \emph = \centerline
> \foe = \end
> \joqvu = \input
>
>
> File-1 contains :
>
> %!Markup-language = Mekon
> \joqvu File-2
> \emph {Ifmmp xpsme !}
> \foe
>
> File-2 contains :
>
> %!Markup-language = Mekon
> \efg \emph #1{}
> \end
>
> When the processing engine encounters \emph at line 3 of File-1,
> should it translate \emph into \centerline, as required by the
> translation rules for Mekon, or should it leave it untranslated
> so that it can reference the definition of \emph that occurs
> at line 2 of File-2 ?
That one is simple it should translate, because it was defined.
Naturally, it is a bad idea to overload like this.
But, since it is overload one should translate.
If you wanted the "normal" emphasis then use:
%!Markup-language = Mekon
\joqvu File-2
%!Markup-language = normal
\emph {Ifmmp xpsme !}
%!Markup-language = Mekon
\foe
> And when that same processing engine is called upon to process
> File-2, should it translate \emph as \centerline, so that it
> is \centerline that is being defined, or should it leave it
> untranslated and therefore it is \emph that is being defined ?
O.K. This is somewhat complex.
The way I look at it.
1) Markup language in both cases is set to Mekon
2) When the parser finds \emph iot translate it to \centerline
\efg \emph #1{} becomes \def \centerline #1{}
3) All actions are to take place in the "normal" markup that is why it is translated
before being processed.
4) It would parse O.K. since it did not find a translation for \end
and thereby reverting to the "normal" \end
I agree that this seems complex, but is logical. and one has to be aware or in which
"language" one is.
Now, lets see what happens if File-2 look different.
File-2 contains :
\def \emph #1{}
\end
Here the result would be the same as, that \centerline is affected, since "Mekon" is still active.
Now, if File-2 look like
File-2 contains :
%!Markup-language = normal
\def \emph #1{}
\end
Then, we have the normal tex effect.
BUT, with File-1 containing :
%!Markup-language = Mekon
\joqvu File-2
\emph {Ifmmp xpsme !}
\foe
\emph stays \emph as the "language" is normal.
Furthermore, \foe will trigger a undefined command error, since "normal" is active, due to
the switch in File-2. But, such global scope is the way of TeX.
>
> In other words, can we, with 100% precision, define in which
> contexts strings should be translated and in which contexts they
> should not, bearing in mind the fundamental ability of TeX
> programs to change the meaning of virtually everything on
> the fly ?
Yes, but you have to know in what "language" mode you are in.
Like you mentioned this is a semantical problem and off the bat I can not
think of any way to catch a semantical error. I believe TeX can not do this.
regards
Keith.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/xetex/attachments/20101016/3766e0e4/attachment-0001.html>
More information about the XeTeX
mailing list