Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(5.0.2195.5329); Thu, 17 Jul 2003 14:51:03 +0200 Received: by mail.proteosys.com (8.12.9/8.12.2) with ESMTP id h6HCoqcH032054 for ; Thu, 17 Jul 2003 14:51:01 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.27]) by relay.uni-heidelberg.de (8.12.9/8.12.9) with ESMTP id h6HCh5mp016071; Thu, 17 Jul 2003 14:43:06 +0200 (MET DST) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C34C62.14719580" Received: from listserv (listserv.uni-heidelberg.de [129.206.100.27]) by listserv.uni-heidelberg.de (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id h6GM0AZT028243; Thu, 17 Jul 2003 14:41:26 +0200 Received: from LISTSERV.UNI-HEIDELBERG.DE by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8d) with spool id 1843 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 17 Jul 2003 14:41:26 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id h6HCfQM9002765 for ; Thu, 17 Jul 2003 14:41:26 +0200 Received: from abel.math.umu.se (abel.math.umu.se [130.239.20.139]) by relay.uni-heidelberg.de (8.12.9/8.12.9) with ESMTP id h6HCfpmp015834 for ; Thu, 17 Jul 2003 14:41:51 +0200 (MET DST) Received: from [130.239.20.144] (mac144.math.umu.se [130.239.20.144]) by abel.math.umu.se (8.12.3/8.12.3/Debian-6.4) with ESMTP id h6HCfmuf026256 for ; Thu, 17 Jul 2003 14:41:49 +0200 In-Reply-To: <16150.26432.179873.408825@pussy.npc.de> References: <20030710081528.A12401@diabolo.informatik.rwth-aachen.de> <78ADDA01-B2DC-11D7-8AE7-0050E4455404@atlis.com> <20030711081704.A14039@diabolo.informatik.rwth-aachen.de> <16146.60345.852158.31606@pussy.npc.de> Return-Path: X-OriginalArrivalTime: 17 Jul 2003 12:51:04.0685 (UTC) FILETIME=[1572B1D0:01C34C62] X-Sender: lars@abel.math.umu.se x-mime-autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id h6HCfQM9002766 X-Scanned-By: MIMEDefang 2.28 (www . roaringpenguin . com / mimedefang) X-Spam-Score: -23.1 () EMAIL_ATTRIBUTION,IN_REP_TO,REFERENCES,REPLY_WITH_QUOTES Content-class: urn:content-classes:message Subject: Re: XML, UTF-8 and TeX engines Date: Thu, 17 Jul 2003 13:41:59 +0100 Message-ID: A X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Re: XML, UTF-8 and TeX engines Thread-Index: AcNMYhWPIMacmA3RTaCU6KyVUD41Cg== From: =?iso-8859-1?Q?Lars_Hellstr=F6m?= To: Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 4684 This is a multi-part message in MIME format. ------_=_NextPart_001_01C34C62.14719580 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable At 11.07 +0200 2003-07-17, Joachim Schrod wrote: >XSLT is a write-only language when it comes to >implementing the "intermediate steps" above, that's no improvement to >TeX macro programming. It has poor semantics (like TeX, it's even >missing elementary boolean clauses), and its syntax is horrible to >read and thus maintenance is hard. TeX missing elementary boolean clauses? They're not there as primitives, but they are not hard to define as macros. In particular the part of docstrip that evaluates "guard expressions" provide an example of their implementation that is readily available in a nearby file system. Here = is another take on the matter. A "boolean expression" is something which in the mouth expands to 0 or = 1. The following take boolean expressions as arguments and may themselves = be used as boolean expressions. \def\boolean@not#1{\if#10\expandafter1\else\expandafter0\fi} \def\boolean@implies#1#2{\if#10\expandafter1\else#2\fi} \def\boolean@and#1#2{\ifnum #1#2>10 \expandafter1\else\expandafter0\fi} \def\boolean@or#1#2{\ifnum #1#2>\z@ \expandafter1\else\expandafter0\fi} (The \expandafter commands are not necessary, but they help a bit with cleaning things up.) The tricky part is of course that not everything one might want to test (such as the existence of a file) can be done entirely with TeX = primitives that expand in the mouth, but that is another matter. The TeX macro language as such is both powerful and elegant, even though it is also rather bizarre, but on the other hand one can say the same about lambda calculus. Contrary to the opinions commonly raised on this list the last two week, = I don't think the TeX macro language is the weakest part of TeX, even = though it could certainly do with some extensions for LaTeX (in areas such as command argument processing, keyval-style value assignments, and = calc-style arithmetic). It is not surprising however that it is the part that is giving the *ML people the most trouble, and that probably accounts for = most of the "bad press" it has been given. If you want to look at a part of = TeX that is _weak_, then consider alignments. Lars Hellstr=F6m ------_=_NextPart_001_01C34C62.14719580 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: XML, UTF-8 and TeX engines

At 11.07 +0200 2003-07-17, Joachim Schrod = wrote:
>XSLT is a write-only language when it comes = to
>implementing the "intermediate steps" = above, that's no improvement to
>TeX macro programming. It has poor semantics = (like TeX, it's even
>missing elementary boolean clauses), and its = syntax is horrible to
>read and thus maintenance is hard.

TeX missing elementary boolean clauses? They're not = there as primitives,
but they are not hard to define as macros. In = particular the part of
docstrip that evaluates "guard expressions" = provide an example of their
implementation that is readily available in a nearby = file system. Here is
another take on the matter.

A "boolean expression" is something which in = the mouth expands to 0 or 1.
The following take boolean expressions as arguments = and may themselves be
used as boolean expressions.

\def\boolean@not#1{\if#10\expandafter1\else\expandafter0\fi}
\def\boolean@implies#1#2{\if#10\expandafter1\else#2\fi}
\def\boolean@and#1#2{\ifnum #1#2>10 = \expandafter1\else\expandafter0\fi}
\def\boolean@or#1#2{\ifnum #1#2>\z@ = \expandafter1\else\expandafter0\fi}

(The \expandafter commands are not necessary, but they = help a bit with
cleaning things up.)

The tricky part is of course that not everything one = might want to test
(such as the existence of a file) can be done = entirely with TeX primitives
that expand in the mouth, but that is another matter. = The TeX macro
language as such is both powerful and elegant, even = though it is also
rather bizarre, but on the other hand one can say the = same about lambda
calculus.

Contrary to the opinions commonly raised on this list = the last two week, I
don't think the TeX macro language is the weakest = part of TeX, even though
it could certainly do with some extensions for LaTeX = (in areas such as
command argument processing, keyval-style value = assignments, and calc-style
arithmetic). It is not surprising however that it is = the part that is
giving the *ML people the most trouble, and that = probably accounts for most
of the "bad press" it has been given. If = you want to look at a part of TeX
that is _weak_, then consider alignments.

Lars Hellstr=F6m

------_=_NextPart_001_01C34C62.14719580--