From - Tue Jul  1 01:57:27 2003
Return-Path: <laurent@math.toronto.edu>
Received: from coxeter.math.toronto.edu (coxeter.math.toronto.edu [128.100.68.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h5UNvLko040908
          for <metafont@ens.fr>; Tue, 1 Jul 2003 01:57:22 +0200 (CEST)
Received: (from laurent@localhost)
	by coxeter.math.toronto.edu (8.11.6p2/8.11.0/UTMath 1.0) id h5UNvFa245154;
	Mon, 30 Jun 2003 19:57:15 -0400
Date: Mon, 30 Jun 2003 19:57:15 -0400
From: Larry Siebenmann <laurent@math.toronto.edu>
Message-Id: <200306302357.h5UNvFa245154@coxeter.math.toronto.edu>
To: hobby@plan9.bell-labs.com, laurent@math.toronto.edu, metafont@ens.fr
Subject: re: elementary puzzle




Hi all,


     Concerning my:

 >> prologues:=2; %% Generate standard eps
 >> beginfig(0)
 >>   draw (100,0)--(70,70)--(0,0); 
 >>   draw (0,0)--(100,0)--(100,100)--(0,100)--cycle;
 > endfig;

Martin Buchmann wrote:

 > i can't see it [the strange result], honestly.

This honest reply soon made me realized that,
to see the weirdness, you need to apply a ***defective*** 
PS processor.  My defective PS processor is 
Adobe Acrobat Distiller version 3.01 both Macintosh and Win.

It is almost unbelievable that, at version as high as three,
Adobe's Distiller will fumble on a PS file as simple as:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -1 -1 101 101 
1 setlinecap 1 setlinejoin 

newpath 100 0 moveto
70 70 lineto
0 0 lineto stroke

newpath 0 0 moveto
100 0 lineto
100 100 lineto
0 100 lineto
closepath stroke

showpage
%%EOF

Non-Distiller programs have so far all compiled
as naive expectation demands.  I have tried:
 -- a PS printer with Adobe ROMs
 -- ps2pdf (CMacTeX) with Acrobat Reader 4 (Mac)
 -- GS + GSview (CMacTeX)

If you have other / newer Distiller versions tell me/us
how they perform on the EPS file above.

Cheers

Laurent S.

PS.  Here is what Distiller 3.01 (Mac) makes from 
the MP snippet quoted up top:

BEGIN --------- cut here --------- CUT HERE
begin 777 puzzle.zip
M4$L#!`H`!``&``.DWB[P,]GH@@(``#\$```2`!(`8WEC;&5?<'5Z>FQE+C`N
M<&1F!2<.`%I025101$8@0T%23P$`3IX''@/^'@,^!AX&""X(!@4#!%4'!0@.
M!@X&'@8(!@4'%@<X!A<%#A4'7@4.!BX$!Q4#%0<%!PX%!A07!00#!0XF!^[_
M____3P<O!]\7_[\0$0(+`R0#&P8$"P0#BUP%_/P(`!(6%P;W]_=WF8UF4A!K
M^N!G!@L:(OB/.GCW3>'"_+2T/PSHS,4=]K7Z/S7UCSMWEK@?];[$O[Y`WOK"
MO)O>B_)BWWI?PJO&WU?^P\3:^HJC\(7WU[LR'_?;ZR,\C[JB5>VHAKO:T>,_
M<]EIE9RA^AQ)(S=5:F>_ZM"L7_P?1H[9B;6][/-XD[L>]W6M(EQ@[0@LX:-#
MGS>,M.1+>YK/ER2N7CUQQ"7NO(SF*2W9_`[R#Y-R)U3VS)7HU[E_F#(7\^?U
MNG]8"SWMI.Q<V85I?L/ZE)W+<@M&R0T$B]"?\DI+?I0\0D.21@K_AF@KP[(R
M#!M+4?O&DCOS?ETRW\/Z&:=LKG+&1^8%>O(T;]_')^)FXMEC!<]C'O\PX$)Y
M?%6NJ^,X3];PWRA>":=<6`*;8E[UTK[>@6'Q($L;9)B\["4_%8U*YHE2<!P%
M7)*UW/F\F@QN&<W`!_?V;Z=_![<_N&T[YVKNY6SEY%Y&2B4WA5OV:Q;&7<CG
M2>^GN]DO3;G7F&(Y3U@JA7E/8UCV7;;L&0EG+XUI9'`'",?D3NG?U_KW"M+7
MZ7;[W5=ZIK2W,K6L9U-R5PW;IFCMMDQAOV?B;8IZ+8]Y,*#Q-D7=ML?<&=C+
MSBT%/'\]S[5"R,/@3V=[VL_!$9Q[H'-I>D3.+&N^:EIK6=;;ZU0ZY650[K1;
M[7*E,RCWN]UU[;1ZYZ0*@URNQ[WD-IWG=K?],S,C1TCZ4$L!`A0#"@`$``8`
M`Z3>+O`SV>B"`@``/P0``!(`$@```````````*2!`````&-Y8VQE7W!U>GIL
M92XP+G!D9@4G#@!:4$E44$1&($-!4D\!`%!+!08``````0`!`%(```#$`@``
"```P
`
end
END ----------- cut here

From - Tue Jul  1 22:22:39 2003
Return-Path: <pragma@wxs.nl>
Received: from mail.solcon.nl (mail.solcon.nl [212.45.33.11])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h61KMcko067377
          for <metafont@ens.fr>; Tue, 1 Jul 2003 22:22:38 +0200 (CEST)
Received: from server-1.pragma-net.nl (wc-58016.solcon.nl [212.45.58.16])
	by mail.solcon.nl (8.12.9/SQL-8.12.9-10/8.12.5) with ESMTP id h61KMTtV032415;
	Tue, 1 Jul 2003 22:22:29 +0200
Received: from laptop-3.wxs.nl (server-1.pragma-net.nl [10.100.1.1])
	by server-1.pragma-net.nl (8.12.3/8.12.2) with ESMTP id h61KMM0i001546;
	Tue, 1 Jul 2003 22:22:34 +0200
Message-Id: <5.2.0.9.1.20030701202921.02bdb488@localhost>
X-Sender: hagen-mail@localhost
X-Mailer: QUALCOMM Windows Eudora Version 5.2.0.9
Date: Tue, 01 Jul 2003 20:40:16 +0200
To: Larry Siebenmann <laurent@math.toronto.edu>
From: Hans Hagen <pragma@wxs.nl>
Subject: Re: [metafont] re: elementary puzzle
Cc: metafont@ens.fr
In-Reply-To: <200306302357.h5UNvFa245154@coxeter.math.toronto.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format=flowed
X-RAVMilter-Version: 8.4.1(snapshot 20020919) (mail.solcon.nl)

Hi Larry

(i'm not sure if this mail ends up on the metafont list, so forward if needed)

Martin Buchmann wrote:

>  > i can't see it [the strange result], honestly.

i tried your examples and did not see something special either

>This honest reply soon made me realized that,
>to see the weirdness, you need to apply a ***defective***
>PS processor.  My defective PS processor is
>Adobe Acrobat Distiller version 3.01 both Macintosh and Win.
>
>It is almost unbelievable that, at version as high as three,
>Adobe's Distiller will fumble on a PS file as simple as:

a real weird distiller error btw and rather fundamental

>%!PS-Adobe-3.0 EPSF-3.0
>%%BoundingBox: -1 -1 101 101
>1 setlinecap 1 setlinejoin
>
>newpath 100 0 moveto
>70 70 lineto
>0 0 lineto stroke
>
>newpath 0 0 moveto
>100 0 lineto
>100 100 lineto
>0 100 lineto
>closepath stroke
>
>showpage
>%%EOF

101 1 m
71 71 l
1 1 l
101 1 l
101 101 l
1 101 l
s

seems that the first stroke gets lost (or second newpath)

also, watch the displacement to the first quadrant (one way to get rid of 
funny rounding errors in (auto clipped) forms and rounding errors in 
viewing; this kind of bbox mess up and interference is something that made 
me introduce some hacks in mps -> pdf conversion

Hans
-------------------------------------------------------------------------
                                   Hans Hagen | PRAGMA ADE | pragma@wxs.nl
                       Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
  tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------
                        information: http://www.pragma-ade.com/roadmap.pdf
                     documentation: http://www.pragma-ade.com/showcase.pdf
-------------------------------------------------------------------------


From - Wed Jul  2 05:15:35 2003
Return-Path: <laurent@math.toronto.edu>
Received: from coxeter.math.toronto.edu (coxeter.math.toronto.edu [128.100.68.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h623FTko028519
          for <metafont@ens.fr>; Wed, 2 Jul 2003 05:15:30 +0200 (CEST)
Received: (from laurent@localhost)
	by coxeter.math.toronto.edu (8.11.6p2/8.11.0/UTMath 1.0) id h623FOW215638;
	Tue, 1 Jul 2003 23:15:24 -0400
Date: Tue, 1 Jul 2003 23:15:24 -0400
From: Larry Siebenmann <laurent@math.toronto.edu>
Message-Id: <200307020315.h623FOW215638@coxeter.math.toronto.edu>
To: hobby@plan9.bell-labs.com, laurent@math.toronto.edu, metafont@ens.fr,
   pragma@wxs.nl

re: elementary puzzle


Hi Hans,

Yes 'my' Distiller bug could be exhibited on page 2 of any 
MP or PS beginner's manual, so I guess it counts as 
hazardous to the health of just about everyone.

But for now, the most important thing
is to learn exactly:- WHICH DISTILLER VERSIONS
AND WHICH DISTILLER PLATFORMS ARE AFFECTED?

What can you add on that front?

Cheers,

Laurent S.

PS.  Let me try to describe the bug in rough terms:- 
Under some circumstances still not at all clearly 
elucidated, the PS command 'closepath', as 
interpreted by Distiller, draws a line from 
the current point, not to the initial point 
of the current path as it should, but to the 
initial point of some path declared earlier 
on.  In a word Distiller is being 'nostalgic'.




From - Wed Jul 16 14:54:09 2003
Return-Path: <B.Jackowski@GUST.org.pl>
Received: from bop.eps.gda.pl (bop.eps.gda.pl [195.117.84.84])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6GCs4ko037890
          for <metafont@ens.fr>; Wed, 16 Jul 2003 14:54:05 +0200 (CEST)
Received: from localhost (bop@localhost)
	by bop.eps.gda.pl (8.11.6/8.11.6) with ESMTP id h6GCs3L01640;
	Wed, 16 Jul 2003 14:54:04 +0200
X-Authentication-Warning: bop.eps.gda.pl: bop owned process doing -bs
Date: Wed, 16 Jul 2003 14:54:03 +0200 (CEST)
From: Boguslaw Jackowski <B.Jackowski@GUST.org.pl>
X-X-Sender: bop@bop.eps.gda.pl
To: The Discussion List of METAFONT/METAPOST <metafont@ens.fr>
cc: StaW <staw@staw.eps.gda.pl>, Jacek Kmiecik <jk@uci.agh.edu.pl>
Subject: another puzzle (see attached little PDF)
Message-ID: <Pine.LNX.4.44.0307161449200.1600-101000@bop.eps.gda.pl>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811773-808500366-1058360043=:1600"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1463811773-808500366-1058360043=:1600
Content-Type: TEXT/PLAIN; charset=US-ASCII


Recently, Larry presented a nice puzzle for adherents of Adobe Distiller.
Now, a puzzle for adherents of TeX, dvips and METAPOST.

The following trivial TeX script 

%%%
\input epsf % it is sort of standard, isn't it?
\def\SET#1 {\vbox{\hrule \hbox{\epsfysize100mm\epsfbox{oddrules.#1}}}\enspace}
\noindent \SET 100 \SET 101 \SET 102
\end
%%%

yields somewhat suprising results (narrow rectangles are too low) for
three EPSes generated by an equally trivial METAPOST program, say,
oddrules.mp:

%%%
beginfig(100); fill unitsquare xscaled 1 yscaled 300 withcolor red; endfig;
beginfig(101); fill unitsquare xscaled 10 yscaled 300 withcolor green; endfig;
beginfig(102); fill unitsquare xscaled 100 yscaled 300 withcolor blue; endfig;
end.
%%%

Since the resulting PDF is pretty small, I take therefore the liberty to 
attach it to the letter.

Of course, the arithmetic of the epsf package is to be blamed, the
more so as we insisted on both Toms (Rokicki and Kacvinski) to improve it.
Actually, my colleagues and I use an improved version...

Cheers -- Jacko

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Bogus\l{}aw Jackowski: B.Jackowski@GUST.ORG.PL
----------------------------------------------------------------
 Hofstadter's Law: It always takes longer than you expect, even
                   when you take into account Hofstadter's Law.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



---1463811773-808500366-1058360043=:1600
Content-Type: APPLICATION/pdf; name="oddrules.pdf"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0307161454030.1600@bop.eps.gda.pl>
Content-Description: 
Content-Disposition: attachment; filename="oddrules.pdf"

JVBERi0xLjIKJcfsj6IKOCAwIG9iago8PC9MZW5ndGggOSAwIFIvRmlsdGVy
IC9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF1SMU4EMQzs8wqXUBDsxHGSFomG
DrQdolrBCWm3uLv/Szi5eG9ZpUhmYntmJJ8BPQG2M+55dWf3/CFwujqCX5cD
QpaaoPqEXAqwxxhChMu3+3G3nsupl3ER9Ayrgmpg6SBlBbFCe4u0j9DfOfWi
+aaStg7cVeGue9OYVRtBZXMd7tgnTvzfHQINd7n6IHR3WHLcE8tGpIJdy7Bk
7j4MZynD8Rg5iGUjrMOwTTx4sAQ1sCVgr9chQItwaVXRJ+F7ACqSlbkHMELl
uMkZVjul2TGsWqHL28hBLBthHYZt4sGDBTgD9f2xa17hZdINItKVqRIkwmSL
QhBRh5DWJk8lw7S6zwd6fNLtSzWU/DW9udcJ3l07f4usg9RlbmRzdHJlYW0K
ZW5kb2JqCjkgMCBvYmoKMjgyCmVuZG9iago3IDAgb2JqCjw8L1R5cGUvUGFn
ZS9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCi9Sb3RhdGUgMC9QYXJlbnQgMyAw
IFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvVGV4dF0KL0V4dEdTdGF0
ZSAxMiAwIFIKL0ZvbnQgMTMgMCBSCj4+Ci9Db250ZW50cyA4IDAgUgo+Pgpl
bmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0tpZHMgWwo3IDAgUgpd
IC9Db3VudCAxCj4+CmVuZG9iagoxIDAgb2JqCjw8L1R5cGUgL0NhdGFsb2cg
L1BhZ2VzIDMgMCBSCj4+CmVuZG9iago2IDAgb2JqCjw8L1R5cGUvRXh0R1N0
YXRlL05hbWUvUjYvVFIvSWRlbnRpdHkvQkcgNCAwIFIvVUNSIDUgMCBSPj4K
ZW5kb2JqCjEyIDAgb2JqCjw8L1I2CjYgMCBSPj4KZW5kb2JqCjEzIDAgb2Jq
Cjw8L1IxMQoxMSAwIFI+PgplbmRvYmoKNSAwIG9iago8PC9GaWx0ZXIvRmxh
dGVEZWNvZGUKL0Z1bmN0aW9uVHlwZSAwCi9Eb21haW5bMAoxXQovUmFuZ2Vb
LTEKMV0KL0JpdHNQZXJTYW1wbGUgOAovU2l6ZVsyNTZdL0xlbmd0aCAxMj4+
c3RyZWFtCnica2gY2QAARMCAAQplbmRzdHJlYW0KZW5kb2JqCjQgMCBvYmoK
PDwvRmlsdGVyL0ZsYXRlRGVjb2RlCi9GdW5jdGlvblR5cGUgMAovRG9tYWlu
WzAKMV0KL1JhbmdlWzAKMV0KL0JpdHNQZXJTYW1wbGUgOAovU2l6ZVsyNTZd
L0xlbmd0aCAxMj4+c3RyZWFtCnicY2AY2QAAAQAAAQplbmRzdHJlYW0KZW5k
b2JqCjE0IDAgb2JqCjw8L1N1YnR5cGUvVHlwZTFDL0ZpbHRlci9GbGF0ZURl
Y29kZS9MZW5ndGggMTUgMCBSPj5zdHJlYW0KeJxjZGBhYmBkZOQKcnUEAm23
RBBP7oc04w8Zph+yzN3dP8x/6rGu+94q9N1A8Lsu/3ctAQZmRkY37yjn/ILK
osz0jBIFDWdNBUNLS3MFx9zUoszkxDwF38SSjNTcxBIgJ0chOD85M7WkUk/B
MSdHIQiko1ghKLU4tagsNcXZN8jQwDk/t6C0JLVIwTc/JbUoj4GBgdGQgUGI
gYmRkT3gP6NvaADfj47uVT82rNo+n/F7wVXm77t+iogu7u4tkfP1Nu7O7ubI
YZ/ffax7/1KOP7PY0zvqDeWyc9jW9T3q3gyEj7rXdXCsymY37Ji2QZ6vdOFP
+4W/l835njeN7XfSdPZVXBe45bhYzOfzcC6cwsNzYT4PLwMDAJmUZBoKZW5k
c3RyZWFtCmVuZG9iagoxNSAwIG9iagoyODQKZW5kb2JqCjExIDAgb2JqCjw8
L0Jhc2VGb250L1JFQUFBQStGYS9Gb250RGVzY3JpcHRvciAxMCAwIFIvVHlw
ZS9Gb250L05hbWUvUjExCi9GaXJzdENoYXIgMC9MYXN0Q2hhciA0OS9XaWR0
aHNbCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwCjAgNTAwXQovRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL1N1
YnR5cGUvVHlwZTE+PgplbmRvYmoKMTAgMCBvYmoKPDwvVHlwZS9Gb250RGVz
Y3JpcHRvci9Gb250TmFtZS9SRUFBQUErRmEvRm9udEJCb3hbMCAwIDQxOSA2
NjZdL0ZsYWdzIDQKL0FzY2VudCA2NjYKL0NhcEhlaWdodCA2NjYKL0Rlc2Nl
bnQgMAovSXRhbGljQW5nbGUgMAovU3RlbVYgNjIKL01pc3NpbmdXaWR0aCAz
MzMKL0NoYXJTZXQoL29uZSkvRm9udEZpbGUzIDE0IDAgUj4+CmVuZG9iagoy
IDAgb2JqCjw8L1Byb2R1Y2VyKEFGUEwgR2hvc3RzY3JpcHQgOC4wKQovQ3Jl
YXRpb25EYXRlKEQ6MjAwMzA3MTYxMzQ0MjYpCi9Nb2REYXRlKEQ6MjAwMzA3
MTYxMzQ0MjYpCi9DcmVhdG9yKGR2aXBzXChrXCkgNS45MGEgQ29weXJpZ2h0
IDIwMDIgUmFkaWNhbCBFeWUgU29mdHdhcmUpCi9UaXRsZShvZGRydWxlcy5k
dmkpPj5lbmRvYmoKeHJlZgowIDE2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw
MDAwMDYwNSAwMDAwMCBuIAowMDAwMDAxOTM0IDAwMDAwIG4gCjAwMDAwMDA1
NDYgMDAwMDAgbiAKMDAwMDAwMDkzNyAwMDAwMCBuIAowMDAwMDAwNzg5IDAw
MDAwIG4gCjAwMDAwMDA2NTMgMDAwMDAgbiAKMDAwMDAwMDM4NiAwMDAwMCBu
IAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAzNjcgMDAwMDAgbiAKMDAw
MDAwMTczMSAwMDAwMCBuIAowMDAwMDAxNDc0IDAwMDAwIG4gCjAwMDAwMDA3
MjcgMDAwMDAgbiAKMDAwMDAwMDc1NyAwMDAwMCBuIAowMDAwMDAxMDg0IDAw
MDAwIG4gCjAwMDAwMDE0NTQgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAx
NiAvUm9vdCAxIDAgUiAvSW5mbyAyIDAgUgo+PgpzdGFydHhyZWYKMjEyNwol
JUVPRgo=

---1463811773-808500366-1058360043=:1600--

From - Thu Jul 17 11:03:15 2003
Return-Path: <laurent@math.toronto.edu>
Received: from coxeter.math.toronto.edu (coxeter.math.toronto.edu [128.100.68.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6H93Cko020136
          for <metafont@ens.fr>; Thu, 17 Jul 2003 11:03:12 +0200 (CEST)
Received: (from laurent@localhost)
	by coxeter.math.toronto.edu (8.11.6p2/8.11.0/UTMath 1.0) id h6H937T107884;
	Thu, 17 Jul 2003 05:03:07 -0400
Date: Thu, 17 Jul 2003 05:03:07 -0400
From: Larry Siebenmann <laurent@math.toronto.edu>
Message-Id: <200307170903.h6H937T107884@coxeter.math.toronto.edu>
To: B.Jackowski@GUST.org.pl, metafont@ens.fr, rokicki@cs.stanford.edu
Subject: re: another puzzle



Hi Jacko,

The specials generated by the *vertical* "\epsfysize 100mm" command
etc.  of Rokicki's  epsf.tex in your example generate
these DVI specials with real width specification 'rwi' that are
*integral*:

\special{PSfile=oddrules.100 llx=0 lly=0 urx=1 ury=300 rwi=9}
\special{PSfile=oddrules.101 llx=0 lly=0 urx=10 ury=300 rwi=94}
\special{PSfile=oddrules.102 llx=0 lly=0 urx=100 ury=300 rwi=944}

What we really want is precise *height* specifications:

\special{PSfile=oddrules.100 llx=0 lly=0 urx=1 ury=300 rhi=283.467}
\special{PSfile=oddrules.101 llx=0 lly=0 urx=10 ury=300 rhi=283.467}
\special{PSfile=oddrules.102 llx=0 lly=0 urx=100 ury=300 rhi=283.467}

Here 283.467bp = 100mm and rhi means "real height" whereas
'rwi' means real width.

So the bug seems to be a silly oversight and easy to fix.

On principle, it seems advisable to:

1) put in the special command the bigger of the two dimensions rhi,
rwi, thus commanding uniform scaling using the one that
offers geater precision.

2) specify the real dimension (rwi or rhi) in a precise decimal form.

Rokicki went to great lengths to avoid floating point multiplications
and divisions -- presumably to assure that the dvi output genarated
by epsf.tex will forever and everywhere give the same result.  
Hopefully his tricky integer arithmetic is not part of the
problem!?

On the other hand,  fixing this bug naively would cause zillions of TeX
typescripts to compile differently (say with different page breaks),
which is the sort of thing I believe Rokicki labored with integer
arithmetic to avoid!

What to do? Perhaps create a new command such as \HiEPSFPrecision to
activate the bugfix and incidentally the use of '%%HiResBoundingBox'
comments when present. That would avoid damaging the published
e-literature.

This would be a good occasion to document in dvips.tex the 
relevant \special syntax.

Cheers,

Laurent S.


From - Thu Jul 24 13:44:28 2003
Return-Path: <blancdecoeur@wanadoo.fr>
Received: from mwinf0203.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.29])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6OBiQko067148
          for <metafont@ens.fr>; Thu, 24 Jul 2003 13:44:26 +0200 (CEST)
Received: from wwinf0202 (wwinf0202 [172.22.133.29])
	by mwinf0203.wanadoo.fr (SMTP Server) with ESMTP id 3B1F8100013F
	for <metafont@ens.fr>; Thu, 24 Jul 2003 13:44:26 +0200 (CEST)
Message-ID: <12774826.1059047066229.JavaMail.www@wwinf0202>
From: Abderrazak MOUMENI <blancdecoeur@wanadoo.fr>
Reply-To: blancdecoeur@wanadoo.fr
To: metafont@ens.fr
Subject: comprendre la signification de exitif quand il est utiliser en
 dehors d'une boucle for , for sufixes et forever
Mime-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_41593_20803829.1059047066227"
Date: Thu, 24 Jul 2003 13:44:26 +0200 (CEST)

------=_Part_41593_20803829.1059047066227
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

j'=E9tudie actuellement m=E9tafont , et j'aimerais comprendre les diff=E9re=
nte
r=F4les que peut jouer la primitive exitif

en lisant les manuels sur metafont et metapost , j'ai pu comprendre que
exitif < bolean expression> est une primitive qui a pour but de sortir de la
boucle forever d=E8s que < bolean expression> poss=E8de la valeur true

or exitif est aussi pr=E9sent dans la macro hide ( text t ) =3D exitif nume=
ric
begingroup t endgroup , et pourtant il n'y a pas la pr=E9sence de forever,
donc j'aimerais savoir quel autre r=F4le peut jouer la primitive exitif (
notammant pour la macro hide ) afin de comprendre toute les subtilit=E9

merci de votre attention et bonne journ=E9e =E0 tous
A M
------=_Part_41593_20803829.1059047066227
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

j'=E9tudie actuellement m=E9tafont , et j'aimerais comprendre les diff=E9re=
nte<BR>r=F4les que peut jouer la primitive exitif<BR><BR>en lisant les manu=
els sur metafont et metapost , j'ai pu comprendre que<BR>exitif &lt; bolean=
 expression&gt; est une primitive qui a pour but de sortir de la<BR>boucle =
forever d=E8s que &lt; bolean expression&gt; poss=E8de la valeur true<BR><B=
R>or exitif est aussi pr=E9sent dans la macro hide ( text t ) =3D exitif nu=
meric<BR>begingroup t endgroup , et pourtant il n'y a pas la pr=E9sence de =
forever,<BR>donc j'aimerais savoir quel autre r=F4le peut jouer la primitiv=
e exitif (<BR>notammant pour la macro hide ) afin de comprendre toute les s=
ubtilit=E9<BR><BR>merci de votre attention et bonne journ=E9e =E0 tous<BR>A=
 M
------=_Part_41593_20803829.1059047066227--


From - Thu Jul 24 13:44:39 2003
Return-Path: <blancdecoeur@wanadoo.fr>
Received: from mwinf0203.wanadoo.fr (smtp7.wanadoo.fr [193.252.22.29])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6OBiQko067149
          for <metafont@ens.fr>; Thu, 24 Jul 2003 13:44:26 +0200 (CEST)
Received: from wwinf0202 (wwinf0202 [172.22.133.29])
	by mwinf0203.wanadoo.fr (SMTP Server) with ESMTP id 8265510001EE
	for <metafont@ens.fr>; Thu, 24 Jul 2003 13:44:26 +0200 (CEST)
Message-ID: <19082628.1059047066522.JavaMail.www@wwinf0202>
From: Abderrazak MOUMENI <blancdecoeur@wanadoo.fr>
Reply-To: blancdecoeur@wanadoo.fr
To: metafont@ens.fr
Subject: comprendre la signification de exitif quand il est utiliser en
 dehors d'une boucle for , for sufixes et forever
Mime-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_41594_25256300.1059047066519"
Date: Thu, 24 Jul 2003 13:44:26 +0200 (CEST)

------=_Part_41594_25256300.1059047066519
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

j'=E9tudie actuellement m=E9tafont , et j'aimerais comprendre les diff=E9re=
nte
r=F4les que peut jouer la primitive exitif

en lisant les manuels sur metafont et metapost , j'ai pu comprendre que
exitif < bolean expression> est une primitive qui a pour but de sortir de la
boucle forever d=E8s que < bolean expression> poss=E8de la valeur true

or exitif est aussi pr=E9sent dans la macro hide ( text t ) =3D exitif nume=
ric
begingroup t endgroup , et pourtant il n'y a pas la pr=E9sence de forever,
donc j'aimerais savoir quel autre r=F4le peut jouer la primitive exitif (
notammant pour la macro hide ) afin de comprendre toute les subtilit=E9

merci de votre attention et bonne journ=E9e =E0 tous
A M
------=_Part_41594_25256300.1059047066519
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

j'=E9tudie actuellement m=E9tafont , et j'aimerais comprendre les diff=E9re=
nte<BR>r=F4les que peut jouer la primitive exitif<BR><BR>en lisant les manu=
els sur metafont et metapost , j'ai pu comprendre que<BR>exitif &lt; bolean=
 expression&gt; est une primitive qui a pour but de sortir de la<BR>boucle =
forever d=E8s que &lt; bolean expression&gt; poss=E8de la valeur true<BR><B=
R>or exitif est aussi pr=E9sent dans la macro hide ( text t ) =3D exitif nu=
meric<BR>begingroup t endgroup , et pourtant il n'y a pas la pr=E9sence de =
forever,<BR>donc j'aimerais savoir quel autre r=F4le peut jouer la primitiv=
e exitif (<BR>notammant pour la macro hide ) afin de comprendre toute les s=
ubtilit=E9<BR><BR>merci de votre attention et bonne journ=E9e =E0 tous<BR>A=
 M
------=_Part_41594_25256300.1059047066519--


From - Fri Jul 25 12:03:35 2003
Return-Path: <christophe.grandsire@free.fr>
Received: from klftfs02.tn.tudelft.nl (klftfs02.tn.tudelft.nl [130.161.204.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6PA3Uko066852
          for <metafont@ens.fr>; Fri, 25 Jul 2003 12:03:30 +0200 (CEST)
Received: from klftpc53.free.fr (klftdh02.tn.tudelft.nl [130.161.206.3])
	by klftfs02.tn.tudelft.nl (8.12.8/8.12.8) with ESMTP id h6PA3UJR021785
	for <metafont@ens.fr>; Fri, 25 Jul 2003 12:03:30 +0200
Message-Id: <5.2.1.1.0.20030725113739.00a95cc0@imap.free.fr>
X-Sender: christophe.grandsire@imap.free.fr (Unverified)
X-Mailer: QUALCOMM Windows Eudora Version 5.2.1
Date: Fri, 25 Jul 2003 12:03:29 +0200
To: metafont@ens.fr
From: Christophe Grandsire <christophe.grandsire@free.fr>
Subject: Re: [metafont] comprendre la signification de exitif quand il
  est utiliser en dehors d'une boucle for , for sufixes et forever
In-Reply-To: <12774826.1059047066229.JavaMail.www@wwinf0202>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nef.ens.fr id h6PA3Uko066852

En réponse à Abderrazak MOUMENI :


>or exitif est aussi présent dans la macro hide ( text t ) = exitif numeric
>begingroup t endgroup , et pourtant il n'y a pas la présence de forever,
>donc j'aimerais savoir quel autre rôle peut jouer la primitive exitif (
>notammant pour la macro hide ) afin de comprendre toute les subtilité

Salut !

Je suis moi aussi en train d'étudier METAFONT (et le résultat de mes études 
est disponible à http://metafont.tutorial.free.fr). En effet, je suis en 
train d'écrire un tutoriel online pour METAFONT :) . Il est loin d'être 
terminé, mais j'engage quand même tout le monde à aller le voir :)) .

Pour ta question, le truc de la macro "hide" ne réside pas dans le sens de 
"exitif". Le *seul* sens de "exitif" est bien de sortir d'une boucle si une 
condition est réalisée. Pourquoi est-il utilisé dans ce cas alors ? 
Regardons de plus près la définition de "hide" :

def hide(text t) = exitif numeric begingroup t; endgroup; enddef;

La partie "exitif numeric" signifie donc : "sortir de la boucle la plus 
intérieure lorsque ce qui se trouve après est de type "numeric". Ce qui se 
trouve après est "begingroup, ce qui signifie que METAFONT doit d'abord 
évaluer ce qui se trouve dans le groupe "begingroup ... endgroup;". Le truc 
ici est ce que contient ce groupe : "t;". Or, dans un groupe, la dernière 
instruction ne doit *pas* être suivie de ";" (parce que le groupe est 
l'équivalent d'une seule instruction, le ";" la terminant doit être mis 
*après* "enddef"). Or ici le groupe contient "t;". Qu'est-ce que ça veut 
bien dire ? Simple : la dernière instruction du groupe est <vide>!!! Dans 
un groupe , "t;" signifie "t; <instruction vide>". Cela signifie que dans 
le groupe, METAFONT évalue d'abord les instructions contenues dans t, puis 
l'instruction vide ! Et comme cette instruction est la dernière du groupe, 
le résultat du groupe est l'expression <vide> (un résultat parfaitement 
valide pour METAFONT), *quel que soit t* !!! Ce qui veut dire que le 
résultat de "hide" est *toujours* :

exitif numeric <vide>; !!!

Or <vide> n'est pas une expression de type "numeric", le résultat de 
"numeric <vide>" est "false", et cet "exitif" est donc *toujours ignoré* 
par METAFONT. Donc qu'il soit à l'intérieur d'une boucle ou pas n'a pas 
d'importance, puisque par construction cet "exitif" ne servira *jamais* ! 
Son seul rôle est d'être ignoré par METAFONT, ce qui fait que ce qui est 
contenu dans t a été évalué, mais caché de l'extérieur.

C'est un truc très spécial, mais assez intéressant à comprendre, car il 
vous donne une bonne idée de la façon dont METAFONT travaille :))) .

S'il y a quelque chose que tu n'as pas compris, n'hésite pas à répondre ! :)

Christophe Grandsire.

http://rainbow.conlang.free.fr

You need a straight mind to invent a twisted conlang. 



From - Sun Jul 27 09:01:15 2003
Return-Path: <laurent@math.toronto.edu>
Received: from coxeter.math.toronto.edu (coxeter.math.toronto.edu [128.100.68.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6R71Cko047032
          for <metafont@ens.fr>; Sun, 27 Jul 2003 09:01:12 +0200 (CEST)
Received: (from laurent@localhost)
	by coxeter.math.toronto.edu (8.11.6p2/8.11.0/UTMath 1.0) id h6R719u160166;
	Sun, 27 Jul 2003 03:01:09 -0400
Date: Sun, 27 Jul 2003 03:01:09 -0400
From: Larry Siebenmann <laurent@math.toronto.edu>
Message-Id: <200307270701.h6R719u160166@coxeter.math.toronto.edu>
To: laurent@math.toronto.edu, metafont@ens.fr
Subject: hide



     Chers artistes,

     Le but de hide(t), o`u t est une s'erie de commandes, 
est de d' ex'ecuter  t  d'une mani`ere qui est acceptable 
`a peu pr`es n'importe o`u -- par exemple `a l'int'erieur 
m^eme d'une expression num'erique.

     Quant `a l'ex'eg`ese (par Christophe ou page 262) de:

def hide(text t) 
     = exitif numeric begingroup t; endgroup; enddef;

on se demande surtout si on peut faire plus clair et plus
simple. Or, Knuth  (qui n'est pas toujours sadique;-) est
d'accord (18.13 page 167) pour:

def gobble primary g = enddef; 
  %% gobble avale son argument et ne laisse *aucune* trace 
  %% au niveau syntactique (comme \gobble dans le TeXbook)
  %% m^eme pas une expression vide!

def hide(text t) = gobble begingroup t; endgroup enddef;
  %% Voir commentaires de Knuth en App A, page 250
  %% qui surtout supposent une lecture rapproch'ee
  %% du chapitre 17 qui explique que
  %% "begingroup ... ;<expression> endgroup" 
  %% ressemble fortement `a une fonction qui retourne
  %% <expression> 'eventuellement vide.
  %% Attention,  t  a le droit de changer l'environement 
  %% (les variables etc.) !

     Metafont comporte un syntaxe plus subtile que TeX;
c'est un calvaire pour le d'ebutant.  J'encourage
Christophe `a en faciliter l'apprentissage !  
Personnellement je trouve encore la gestion 
des variables difficile ... 

Amicalement,

Laurent S.

English summary: "hide(t)" will execute a sequence of 
commands t in a manner that is acceptable almost anywhere 
-- say in the middle of an expression. To understand 
'hide' in the simplest known way, I suggest you read 
Chapitre 17; 18.13 page 167; App A page 250; page 252 
--- in that  order.




From - Mon Jul 28 11:01:50 2003
Return-Path: <christophe.grandsire@free.fr>
Received: from klftfs02.tn.tudelft.nl (klftfs02.tn.tudelft.nl [130.161.204.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6S91kko062956
          for <metafont@ens.fr>; Mon, 28 Jul 2003 11:01:47 +0200 (CEST)
Received: from klftpc53.free.fr (klftdh02.tn.tudelft.nl [130.161.206.3])
	by klftfs02.tn.tudelft.nl (8.12.8/8.12.8) with ESMTP id h6S91jJR011239
	for <metafont@ens.fr>; Mon, 28 Jul 2003 11:01:46 +0200
Message-Id: <5.2.1.1.0.20030728105957.00a96920@imap.free.fr>
X-Sender: christophe.grandsire@imap.free.fr (Unverified)
X-Mailer: QUALCOMM Windows Eudora Version 5.2.1
Date: Mon, 28 Jul 2003 11:01:43 +0200
To: metafont@ens.fr
From: Christophe Grandsire <christophe.grandsire@free.fr> (by way of Christophe Grandsire <christophe.grandsire@free.fr>)
Subject: Re: [metafont] hide
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nef.ens.fr id h6S91kko062956

Je viens de me rendre compte que j'ai envoyé ce mail à Larry uniquement 
alors que je voulais l'envoyer à la liste de diffusion :((( . Désolé Larry :( .

En réponse à Larry Siebenmann :


>def hide(text t)
>      = exitif numeric begingroup t; endgroup; enddef;
>
>on se demande surtout si on peut faire plus clair et plus
>simple. Or, Knuth  (qui n'est pas toujours sadique;-) est
>d'accord (18.13 page 167) pour:
>
>def gobble primary g = enddef;
>   %% gobble avale son argument et ne laisse *aucune* trace
>   %% au niveau syntactique (comme \gobble dans le TeXbook)
>   %% m^eme pas une expression vide!
>
>def hide(text t) = gobble begingroup t; endgroup enddef;
>   %% Voir commentaires de Knuth en App A, page 250
>   %% qui surtout supposent une lecture rapproch'ee
>   %% du chapitre 17 qui explique que
>   %% "begingroup ... ;<expression> endgroup"
>   %% ressemble fortement `a une fonction qui retourne
>   %% <expression> 'eventuellement vide.
>   %% Attention,  t  a le droit de changer l'environement
>   %% (les variables etc.) !

En effet, mais il précise aussi que cette syntaxe est légèrement moins 
efficace la définition originale de "hide" utilisant "exitif". A mon avis, 
c'est parce que "gobble" est une macro de plain.mf et non une primitive de 
METAFONT. Cela veut dire que METAFONT doit d'abord la remplacer par la 
série d'instruction qu'elle définit, puis les évaluer. Cette opération 
prend plus de temps que l'exécution d'une primitive. Comme de plus "gobble" 
est remplacé par rien du tout, cette opération de remplacement est 
complètement inutile et donc ne fait que perdre du temps et de la mémoire 
(pas un problème de nos jours, mais il faut se rappeler que METAFONT est 
apparu au temps où 64Ko de RAM était un luxe réservé aux plus riches, et où 
le temps passé sur un ordinateur était chronométré au plus précis car cher 
:) ). Il y a toujours une raison pour la syntaxe parfois mystérieuse de 
certaines macros de METAFONT :) .

>      Metafont comporte un syntaxe plus subtile que TeX;

Je ne suis pas sûr. Pour écrire le tutoriel disponible à 
http://metafont.tutorial.free.fr, je n'ai à ma disposition que le 
METAFONTbook de Knuth et les sources disponibles dans la distribution 
MiKTeX. Or je m'en sors sans problème, alors que 6 mois auparavant j'était 
un débutant complet. Or j'ai essayé la même chose avec TeX lui-même 
(j'écris des packages et des classes pour LaTeX, donc apprendre TeX est 
primordial) et je suis encore incapable de comprendre autre chose que les 
commandes simples. METAFONT a beaucoup de points communs avec des langages 
de programmation que j'ai déjà étudié, tandis que TeX est quelque chose de 
complètement original, et à part LaTeX, je n'ai aucun point de comparaison 
pour m'aider à comprendre comment il marche (je n'ai toujours pas compris, 
par exemple, comment fonctionne \expandafter :((( ).

Je trouve la syntaxe de METAFONT plus simple que celle de TeX. Mais TeX est 
d'un tel niveau que ça ne veut pas dire que METAFONT est simple dans 
l'absolu ! :)

>c'est un calvaire pour le d'ebutant.

Je suis d'accord. Mais je pense que c'est plus dû au manque de matériel 
didactique qu'à la complexité inhérente de METAFONT. C'est pourquoi 
j'essaie de résoudre ce problème en fournissant ce matériel didactique qui 
manque (après plus de 20 ans que le langage existe, il était temps de 
corriger cette erreur ! :) ).

>   J'encourage
>Christophe `a en faciliter l'apprentissage !

Merci ! :)

>Personnellement je trouve encore la gestion
>des variables difficile ...

Vraiment ? Je n'ai pas de problème avec ça. Que trouves-tu difficile dans 
la gestion des variables ? (ce sera le sujet principal de la leçon 3 de mon 
tutoriel. Mais j'en suis encore à écrire la leçon 2 :)) )

Salut à tous ! :)

Christophe Grandsire.

http://rainbow.conlang.free.fr

You need a straight mind to invent a twisted conlang.  



From - Tue Jul 29 07:09:55 2003
Return-Path: <laurent@math.toronto.edu>
Received: from coxeter.math.toronto.edu (coxeter.math.toronto.edu [128.100.68.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6T59oko040148
          for <metafont@ens.fr>; Tue, 29 Jul 2003 07:09:51 +0200 (CEST)
Received: (from laurent@localhost)
	by coxeter.math.toronto.edu (8.11.6p2/8.11.0/UTMath 1.0) id h6T59oX74910;
	Tue, 29 Jul 2003 01:09:50 -0400
Date: Tue, 29 Jul 2003 01:09:50 -0400
From: Larry Siebenmann <laurent@math.toronto.edu>
Message-Id: <200307290509.h6T59oX74910@coxeter.math.toronto.edu>
To: laurent@math.toronto.edu, metafont@ens.fr
Subject: les variables 



Cher Christophe 

 > j'essaie de r'esoudre ce probl`eme en fournissant ce mat'eriel 
 > didactique qui manque (apr`es plus de 20 ans que le langage 
 > existe, il 'etait temps de corriger cette erreur ! 

Oui, c'est effectivement curieux, car  il y a des douzaines de
livres didactiques sur TeX. Mais pe c'est seulement
avec l'arriv'ee du graphisme vectoriel de metapost que 
les centaines de milliers d'auteurs qui affectionnent TeX
ont de solides raisons d'aborder ce langage.

 >> je trouve encore la gestion des variables difficile ... 

 > Que trouves-tu difficile dans la gestion des variables ?

Difficult'e syntactique.  D'abord il faut comprendre la
"tokenisation" `a fond (Chap. 6), laquelle est aussi subtile
que dans TeX. Par contre, dans TeX, la tokenisation d'un nom de
variable d'emarre avec l'"escape" \   et continue par un max de
"lettres" -- ce qui fait intervenir une toute-petite fraction
de l'engrenage de "tokenisation".  Il est vrai que dans
metafont (comme dans TeX) un token peut ^etre le nom d'un
variable -- quitte `a ^etre un "tag" c'est `a dire '^etre ni un
token r'eserv'e par metafont lui-m^eme ni un "token
num'erique". 

Mais un nom de variable de metafont peut aussi ^etre une suite
convenable de tokens. Knuth agresse imm'ediatement le lecteur
d'ebutant avec du Backus-Naur pour sp'ecifier quelles suites:

 <variable> ---> <tag><suffix>
 <suffix> ---> <empty> | <suffix><subscript> | <suffix><tag>
 <subscript> ---> <number> | [ <numeric expression> ]

Du pseudo-code pas tr`es parlant pour le d'ebutant
non-programmeur  !  Je serais tent'e d'essayer plut^ot une
sp'ecification simplifi'ee des suites finies de tokens qui
d'esignent un variable:- Le premier token est un tag, et les
autres sont soit "tags" soit "tokens num'eriques". Mais il
faudrait, pour que cela tienne debout, utiliser la notion (voir
TeXbook) de "syst`eme digestif" de metafont qui va au
pr'ealable convertir <number> ou <numeric expression> en "token
num'erique".

J'ai trouv'e que le manuel de metapost (Hobby) clarifie
souvent le metafont book, malgr'e le fait qu'il est encore 
plus succinct.

Et l'utilit'e de tout cela ?? Entre autres, la r'ealisation des
notions classiques d'"array" et "data structure", d'ailleurs
dynamiques et r'ecursives.

 > METAFONT a beaucoup de points communs avec des langages
 > de programmation que j'ai d'ej`a 'etudi'e

Maple ?  Fermat ?  Un peu de linguistique 
historique et comparative stp!

Cordialement,

Laurent Siebenmann

English summary: Maybe a view if metafont's digestive system
would let us understand the general variable designation to be
merely a finite sequence of metafont tokens, the first a tag,
and the rest either tag or numeric token.


From - Tue Jul 29 09:45:04 2003
Return-Path: <a.delmotte@largevision.com>
Received: from smtp-out.tiscali.be (spoolo2.tiscali.be [62.235.13.211])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6T7j2ko060177
          for <metafont@ens.fr>; Tue, 29 Jul 2003 09:45:02 +0200 (CEST)
Received: from [62.235.116.136] (helo=adelmotte.largevision.com)
	by smtp-out.tiscali.be with esmtp (Tiscali) 
	id 19hPAL-0008AV-00
	for <metafont@ens.fr>; Tue, 29 Jul 2003 09:45:01 +0200
Message-Id: <5.0.2.1.2.20030729093831.00a0b950@pop3.pro.tiscali.be>
X-Sender: tpm17153@pop3.pro.tiscali.be
X-Mailer: QUALCOMM Windows Eudora Version 5.0.2
Date: Tue, 29 Jul 2003 09:43:45 +0200
To: liste metafont <metafont@ens.fr>
From: Alain Delmotte <a.delmotte@largevision.com>
Subject: Re: [metafont] hide
In-Reply-To: <5.2.1.1.0.20030728105957.00a96920@imap.free.fr>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nef.ens.fr id h6T7j2ko060177

Bonjour,

A 11:01 28/07/2003 +0200, vous avez écrit :

>Je ne suis pas sûr. Pour écrire le tutoriel disponible à 
>http://metafont.tutorial.free.fr, je n'ai à ma disposition que le 
>METAFONTbook de Knuth et les sources disponibles dans la distribution MiKTeX.

Du point de vue manuels et formations n'oublier pas
l'excellent livre de Bernard Desgraupes:
METAFONT Guide pratique. Vuibert 1999.

Alain Delmotte


avenue du Marathon, 6
B 1348 Louvain-la-Neuve
Belgique
tél./fax 00 (32) 10 45 44 44
tél. privé 00 (32) 10 45 11 92



From - Tue Jul 29 13:45:42 2003
Return-Path: <christophe.grandsire@free.fr>
Received: from klftfs02.tn.tudelft.nl (klftfs02.tn.tudelft.nl [130.161.204.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6TBjbko099956
          for <metafont@ens.fr>; Tue, 29 Jul 2003 13:45:37 +0200 (CEST)
Received: from klftpc53.free.fr (klftdh02.tn.tudelft.nl [130.161.206.3])
	by klftfs02.tn.tudelft.nl (8.12.8/8.12.8) with ESMTP id h6TBjbJR031036
	for <metafont@ens.fr>; Tue, 29 Jul 2003 13:45:37 +0200
Message-Id: <5.2.1.1.0.20030729132152.00aa51b0@imap.free.fr>
X-Sender: christophe.grandsire@imap.free.fr (Unverified)
X-Mailer: QUALCOMM Windows Eudora Version 5.2.1
Date: Tue, 29 Jul 2003 13:45:36 +0200
To: metafont@ens.fr
From: Christophe Grandsire <christophe.grandsire@free.fr>
Subject: Re: [metafont] les variables 
In-Reply-To: <200307290509.h6T59oX74910@coxeter.math.toronto.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nef.ens.fr id h6TBjbko099956

En réponse à Larry Siebenmann :


>Oui, c'est effectivement curieux, car  il y a des douzaines de
>livres didactiques sur TeX.

Beaucoup plus de gens ont besoin d'un outil de mise en page plutôt que d'un 
programme de créations de polices de caractères. Il est donc logique que 
METAFONT soit resté dans l'ombre de son "grand frère".

>  Mais pe c'est seulement
>avec l'arriv'ee du graphisme vectoriel de metapost que
>les centaines de milliers d'auteurs qui affectionnent TeX
>ont de solides raisons d'aborder ce langage.

Personellement, METAPOST me laisse froid. Je ne suis pas très intéressé par 
le graphisme. METAFONT m'intéresse uniquement parce que je veux créer mes 
propres fontes. Donc c'est bien l'usage originel de METAFONT qui 
m'intéresse, pas sa descendance :) .


>Et l'utilit'e de tout cela ?? Entre autres, la r'ealisation des
>notions classiques d'"array" et "data structure", d'ailleurs
>dynamiques et r'ecursives.

J'ai trouvé que pour le débutant, la simple comparaison avec le langage des 
mathématiques permettait d'expliquer parfaitement la syntaxe des variables 
de METAFONT. Elle est simplement la même que celle des variables qu'on 
trouve en maths :) (jusqu'à la possibilité d'utiliser l'apostrophe à la fin 
d'une variable :) ). C'est évidemment une simplification des choses, mais 
c'est une simplification de grande valeur éducative (et elle ne peut 
provoquer d'erreurs de syntaxe).

Je ne pense pas aborder la notion de "système digestif" dans mon tutoriel. 
Ca n'a aucun intérêt pour les débutants.


>Maple ?  Fermat ?  Un peu de linguistique
>historique et comparative stp!

Hé hé... En effet, le fait que METAFONT résolve les équations lui-même (et 
que = ne soit pas une opération d'assignation) le rend semblable à Maple 
(qui a aussi une syntaxe de variables semblable). Mais pour beaucoup de 
choses, je trouve que METAFONT tient beaucoup à PASCAL, que j'ai étudié à 
l'ESPCI, du moins les grandes lignes de sa structure. Ceci est peu étonnant 
vu que le source de METAFONT est écrit en PASCAL :) . La principale 
différence, bien entendu, est l'aspect descriptif de METAFONT qui prime, 
contrairement à PASCAL qui est impératif.

Christophe Grandsire.

http://rainbow.conlang.free.fr

You need a straight mind to invent a twisted conlang. 



From - Tue Jul 29 14:01:31 2003
Return-Path: <christophe.grandsire@free.fr>
Received: from klftfs02.tn.tudelft.nl (klftfs02.tn.tudelft.nl [130.161.204.3])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6TC1Sko002451
          for <metafont@ens.fr>; Tue, 29 Jul 2003 14:01:28 +0200 (CEST)
Received: from klftpc53.free.fr (klftdh02.tn.tudelft.nl [130.161.206.3])
	by klftfs02.tn.tudelft.nl (8.12.8/8.12.8) with ESMTP id h6TC1RJR031413
	for <metafont@ens.fr>; Tue, 29 Jul 2003 14:01:27 +0200
Message-Id: <5.2.1.1.0.20030729134556.00a943a0@imap.free.fr>
X-Sender: christophe.grandsire@imap.free.fr (Unverified)
X-Mailer: QUALCOMM Windows Eudora Version 5.2.1
Date: Tue, 29 Jul 2003 14:01:27 +0200
To: liste metafont <metafont@ens.fr>
From: Christophe Grandsire <christophe.grandsire@free.fr>
Subject: Re: [metafont] hide
In-Reply-To: <5.0.2.1.2.20030729093831.00a0b950@pop3.pro.tiscali.be>
References: <5.2.1.1.0.20030728105957.00a96920@imap.free.fr>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"; format=flowed
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by nef.ens.fr id h6TC1Sko002451

En réponse à Alain Delmotte :


>Du point de vue manuels et formations n'oublier pas
>l'excellent livre de Bernard Desgraupes:
>METAFONT Guide pratique. Vuibert 1999.

Il est sur ma liste de bouquins à acheter en priorité :) . Malheureusement, 
j'habite aux Pays-Bas et trouver un livre français sur METAFONT est mission 
impossible ici :((( . Et je ne peux (ni ne veux) pas commander par Internet 
(j'ai pas de carte de crédit et je n'ai pas l'intention d'en prendre une). 
Et commander par les moyens normaux coûte trop cher en frais de port.

Mais je serai en France dans une semaine, donc je vais regarder si je peux 
le trouver (et s'il est pas trop cher :( . Je suis sans emploi en ce moment 
:( ). Ca m'aiderait énormément avec le tutoriel (le METAFONTbook est une 
mine d'infos, mais il n'est en effet pas facile d'accès).

De toute façon, ce livre n'existe qu'en français, ce qui limite énormément 
le nombre de gens qu'il peut atteindre, et donc ne sera jamais *le* livre 
qui a rendu METAFONT accessible à tous :) . C'est pour ça que j'écris mon 
tutoriel en anglais, parce que la plupart des gens dont je sais qu'il le 
liront (les participants de ma liste de diffusion 
(La)TeX/METAFONT-for-Conlangers: 
http://groups.yahoo.com/group/latex-for-conlangers/ (qui malgré son nom 
discute en majorité de METAFONT et non de (La)TeX, et est ouvert à tous, 
pas seulement aux créateurs de langues :) ) n'ont qu'une seule langue en 
commun, et c'est l'anglais. Je prévois de faire une version française, mais 
pas avant que la version anglaise soit terminée.

C'est quand même marrant que les deux seules personnes dans le monde qui 
aient décidé d'écrire quelque chose pour rendre METAFONT plus accessible 
(Bernard Desgraupes et votre serviteur :) ) soient toutes deux françaises 
:)) . Je me demande si l'intérêt pour la typographie (et en particulier la 
typographie électronique) est une activité spécialement particulièrement 
française... C'est vrai en tout case que la majorité des pages sur la 
typographie sur Internet sont en français...

Christophe Grandsire.

http://rainbow.conlang.free.fr

You need a straight mind to invent a twisted conlang. 



From - Wed Jul 30 10:31:01 2003
Return-Path: <danielrodriguez@worldonline.es>
Received: from aitana.cpd.ua.es (aitana.cpd.ua.es [193.145.233.5])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6U8Uuko077415
          for <metafont@ens.fr>; Wed, 30 Jul 2003 10:30:56 +0200 (CEST)
Received: from aitana.cpd.ua.es (aitana.cpd.ua.es [193.145.233.5])
	by aitana.cpd.ua.es (8.9.3p2/8.9.3) with ESMTP id KAA75740
	for <metafont@ens.fr>; Wed, 30 Jul 2003 10:30:55 +0200
Received: from worldonline.es ([172.17.228.88])
	by aitana.cpd.ua.es (8.9.3p2/8.9.3) with ESMTP id KAA80640
	for <metafont@ens.fr>; Wed, 30 Jul 2003 10:30:54 +0200
Message-ID: <3F278240.CFE09058@worldonline.es>
Date: Wed, 30 Jul 2003 10:30:56 +0200
From: Daniel =?iso-8859-1?Q?Rodr=EDguez?= <danielrodriguez@worldonline.es>
X-Mailer: Mozilla 4.5 [es] (Win98; I)
X-Accept-Language: es
MIME-Version: 1.0
To: metafont@ens.fr
Subject: unsuscribe metafont
References: <5.0.2.1.2.20030729093831.00a0b950@pop3.pro.tiscali.be>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit




From - Thu Jul 31 07:48:00 2003
Return-Path: <rachnagrover@hotmail.com>
Received: from hotmail.com (bay1-f41.bay1.hotmail.com [65.54.245.41])
          by nef.ens.fr (8.12.9/1.01.28121999) with ESMTP id h6V5ltko066782
          for <metafont@ens.fr>; Thu, 31 Jul 2003 07:47:55 +0200 (CEST)
Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC;
	 Wed, 30 Jul 2003 22:47:54 -0700
Received: from 168.167.53.61 by by1fd.bay1.hotmail.msn.com with HTTP;
	Thu, 31 Jul 2003 05:47:53 GMT
X-Originating-IP: [168.167.53.61]
X-Originating-Email: [rachnagrover@hotmail.com]
From: "Rachna Grover" <rachnagrover@hotmail.com>
To: metafont@ens.fr
Subject: [metafont] unsuscribe metafont
Date: Thu, 31 Jul 2003 05:47:53 +0000
Mime-Version: 1.0
Content-Type: text/html
Message-ID: <BAY1-F41bJMoNwX1mes00009f8f@hotmail.com>
X-OriginalArrivalTime: 31 Jul 2003 05:47:54.0235 (UTC) FILETIME=[4957FCB0:01C35727]

<html><div style='background-color:'><DIV>
<P><BR>&nbsp;</P></DIV></div><br clear=all><hr>Protect your PC - <a href="http://g.msn.com/8HMYEN/2755??PS=">Click here</a> for McAfee.com VirusScan Online </html>

