diff options
46 files changed, 2257 insertions, 237 deletions
diff --git a/context/config/texexec.rme b/context/config/texexec.rme index f38b4be7f..43f142f9d 100644 --- a/context/config/texexec.rme +++ b/context/config/texexec.rme @@ -120,7 +120,7 @@ for miktex set TeXVirginFlag to --initialize for miktex set TeXPassString to --alias=context --translate-file=natural.tcx for miktex set TeXBatchFlag to --interaction=batchmode for miktex set TeXNonStopFlag to --interaction=nonstopmode -for miktex set MpToTeXExecutable to mptotex +for miktex set MpToTeXExecutable to mpto for miktex set MpVirginFlag to --initialize for miktex set MpPassString to --alias=mpost --translate-file=natural.tcx for miktex set MpBatchFlag to --interaction=batchmode diff --git a/context/data/type-ghz.dat b/context/data/type-ghz.dat index 112a5a0cc..37ce5d6f9 100644 --- a/context/data/type-ghz.dat +++ b/context/data/type-ghz.dat @@ -52,7 +52,7 @@ # linotype optima-nova --en=? --ve=linotype --co=optima-nova --re ---en=? --ve=linotype --co=optima-nova --so=ghz/optima-nova --ma --in +--en=? --ve=linotype --co=optima-nova --so=linotype/optima-nova --ma --in # linotype orion diff --git a/fonts/enc/dvips/context/ec-sc.enc b/fonts/enc/dvips/context/ec-sc.enc new file mode 100644 index 000000000..77357c9f3 --- /dev/null +++ b/fonts/enc/dvips/context/ec-sc.enc @@ -0,0 +1,84 @@ +% This version is sc extended by Hans Hagen using PalatinoNova-Regular.afm. +% +% +% This is the EC encoding. +% +% These are the ligs and kerns in addition to those found in the +% AFM file. (The only ligs in the Times-Roman.afm file are the +% fi and fl ligatures.) +% +% LIGKERN space l =: lslash ; space L =: Lslash ; +% LIGKERN question quoteleft =: questiondown ; exclam quoteleft =: exclamdown ; +% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; +% LIGKERN quoteleft quoteleft =: quotedblleft ; +% LIGKERN quoteright quoteright =: quotedblright ; +% +% We blow away kerns to and from spaces (TeX doesn't have a +% space) and also remove any kerns from the numbers (although +% the only kern pair that mentions a number in Times-Roman.afm +% is one one.) +% +% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; +% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; +% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; +% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; +% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; +% LIGKERN nine {} * ; * {} nine ; +% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; +% LIGKERN greater greater =: guillemotright ; +% +/ECEncoding [ % now 256 chars follow +% 0x00 + /grave.sc /acute.sc /circumflex.sc /tilde.sc /dieresis.sc /hungarumlaut.sc /ring.sc /caron.sc + /breve.sc /macron.sc /dotaccent.sc /cedilla + /ogonek /quotesinglbase /guilsinglleft /guilsinglright +% 0x10 + /quotedblleft /quotedblright /quotedblbase /guillemotleft + /guillemotright /endash /emdash /cwm + /zeroinferior /dotlessi /dotlessj /ff /fi.sc /fl.sc /ffi /ffl +% 0x20 + /visualspace /exclam.sc /quotedbl /numbersign + /dollar.sc /percent.sc /ampersand.sc /quoteright + /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +% 0x30 + /zero.sc /one.sc /two.sc /three.sc /four.sc /five.sc /six.sc /seven.sc + /eight.sc /nine.sc /colon /semicolon /less /equal /greater /question.sc +% 0x40 + /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O +% 0x50 + /P /Q /R /S /T /U /V /W + /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a.sc /b.sc /c.sc /d.sc /e.sc /f.sc /g.sc /h.sc /i.sc /j.sc /k.sc /l.sc /m.sc /n.sc /o.sc +% 0x70 + /p.sc /q.sc /r.sc /s.sc /t.sc /u.sc /v.sc /w.sc + /x.sc /y.sc /z.sc /braceleft /bar /braceright /asciitilde /hyphen +% 0x80 + /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve + /Lacute /Lcaron /Lslash /Nacute /Ncaron /Ng /Ohungarumlaut /Racute +% 0x90 + /Rcaron /Sacute /Scaron /Scedilla + /Tcaron /Tcedilla /Uhungarumlaut /Uring + /Ydieresis /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dbar /section +% 0xA0 + /abreve.sc /aogonek.sc /cacute.sc /ccaron.sc /dcaron.sc /ecaron.sc /eogonek.sc /gbreve.sc + /lacute.sc /lcaron.sc /lslash.sc /nacute.sc /ncaron.sc /ng /ohungarumlaut.sc /racute.sc +% 0xB0 + /rcaron.sc /sacute.sc /scaron.sc /scedilla.sc + /tquoteright /tcedilla /uhungarumlaut.sc /uring.sc + /ldot.sc /zacute.sc /zcaron.sc /zdotaccent.sc /ij.sc /exclamdown.sc /questiondown.sc /sterling.sc +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE + /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /Germandbls +% 0xE0 + /agrave.sc /aacute.sc /acircumflex.sc /atilde.sc /adieresis.sc /aring.sc /ae.sc /ccedilla.sc + /egrave.sc /eacute.sc /ecircumflex.sc /edieresis.sc + /igrave.sc /iacute.sc /icircumflex.sc /idieresis.sc +% 0xF0 + /eth.sc /ntilde.sc /ograve.sc /oacute.sc /ocircumflex.sc /otilde.sc /odieresis.sc /oe.sc + /oslash.sc /ugrave.sc /uacute.sc /ucircumflex.sc /udieresis.sc /yacute.sc /thorn.sc /germandbls.sc +] def diff --git a/fonts/enc/dvips/context/texnansi-sc.enc b/fonts/enc/dvips/context/texnansi-sc.enc new file mode 100644 index 000000000..553a74d88 --- /dev/null +++ b/fonts/enc/dvips/context/texnansi-sc.enc @@ -0,0 +1,319 @@ +% This version is sc extended by Hans Hagen using PalatinoNova-Regular.afm. +% +% @psencodingfile{ +% author = "Y&Y, Inc.", +% version = "1.1", +% date = "1 December 1996", +% filename = "texnansi.enc", +% email = "help@YandY.com", +% address = "45 Walden Street // Concord, MA 01742, USA", +% codetable = "ISO/ASCII", +% checksum = "xx", +% docstring = "Encoding for fonts in Adobe Type 1 format for use with TeX." +% } +% +% The idea is to have all 228 characters normally included in Type 1 text +% fonts (plus a few more) available for typesetting. This is effectively +% the character set in Adobe Standard Encoding, ISO Latin 1, plus a few more. +% +% Character code assignments were made as follows: +% +% (1) The character layout largely matches `ASCII' in the 32 -- 126 range, +% except for `circumflex' in 94 and `tilde' in 126, to match `TeX text' +% (`asciicircumflex' and `asciitilde' appear in 158 and 142 instead). +% +% (2) The character layout matches `Windows ANSI' in almost all places, +% except for `quoteright' in 39 and `quoteleft' in 96 to match ASCII +% (`quotesingle' and `grave' appear in 129 and 18 instead). +% +% (3) The character layout matches `TeX typewriter' used by CM text fonts +% in most places (except for discordant positions such as hungarumlaut +% (instead of braceright), dotaccent (instead of underscore) etc. +% +% (4) Remaining characters are assigned arbitrarily to the `control character' +% range (0 -- 31), avoiding 0, 9, 10 and 13 in case we meet dumb software +% - similarly one should really avoid 127 and 128 if possible. +% In addition, the 8 open slots in Windows ANSI between 128 and 159 are used. +% +% (5) Y&Y Lucida Bright includes some extra ligatures and such; ff, ffi, ffl, +% and `dotlessj,' these are included 11 -- 15, and 17. +% +% (6) Hyphen appears both at 45 and 173 for compatibility with both ASCII +% and Windows ANSI. +% +% (7) It doesn't really matter where ligatures appear (both real, such as ffi, +% and pseudo such as ---) since these should not be accessed directly, only +% via ligature information in the TFM file. +% +% SAMPLE USAGE (in `psfonts.map' file for DVIPS): +% +% lbr LucidaBright "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <lbr.pfb +% +% This tells DVIPS that the font called `lbr' in TeX has PostScript +% FontName `LucidaBright.' It also asks DVIPS to expand the file `lbr.pfb' +% into PFA form, to include the attached `texnansi.enc' encoding vector, +% and to then actually reencode the font based on that encoding vector. +% +% Revised 1996 June 1 by adding second position for `fl' to avoid Acrobat bug. +% Revised 1996 June 1 by adding second position for `fraction' for same reason. +% Revised 1997 Oct 1 by adding cwm (used in boundary char TFM code) +% Revised 1998 Mar 1 by adding Unicode for Euro character +% +/TeXnANSIEncoding [ +/.notdef % 0 +/Euro.sc % /Uni20AC 1 +/.notdef % 2 +/.notdef % 3 +/fraction % 4 +/dotaccent.sc % 5 +/hungarumlaut.sc % 6 +/ogonek % 7 +/fl.sc % 8 +/.notdef % /fraction % 9 not used (see 4), backward compatability only +/cwm % 10 not used, except boundary char internally maybe +/ff % 11 +/fi.sc % 12 +/.notdef % /fl.sc % 13 not used (see 8), backward compatability only +/ffi % 14 +/ffl % 15 +/dotlessi % 16 +/dotlessj % 17 +/grave.sc % 18 +/acute.sc % 19 +/caron.sc % 20 +/breve.sc % 21 +/macron.sc % 22 +/ring.sc % 23 +/cedilla % 24 +/germandbls.sc % 25 +/ae.sc % 26 +/oe.sc % 27 +/oslash.sc % 28 +/AE % 29 +/OE % 30 +/Oslash % 31 +/space % 32 % /suppress in TeX text +/exclam.sc % 33 +/quotedbl % 34 % /quotedblright in TeX text +/numbersign % 35 +/dollar.sc % 36 +/percent.sc % 37 +/ampersand.sc % 38 +/quoteright % 39 % /quotesingle in ANSI +/parenleft % 40 +/parenright % 41 +/asterisk % 42 +/plus % 43 +/comma % 44 +/hyphen % 45 +/period % 46 +/slash % 47 +/zero.sc % 48 +/one.sc % 49 +/two.sc % 50 +/three.sc % 51 +/four.sc % 52 +/five.sc % 53 +/six.sc % 54 +/seven.sc % 55 +/eight.sc % 56 +/nine.sc % 57 +/colon % 58 +/semicolon % 59 +/less % 60 % /exclamdown.sc in Tex text +/equal % 61 +/greater % 62 % /questiondown.sc in TeX text +/question.sc % 63 +/at % 64 +/A % 65 +/B % 66 +/C % 67 +/D % 68 +/E % 69 +/F % 70 +/G % 71 +/H % 72 +/I % 73 +/J % 74 +/K % 75 +/L % 76 +/M % 77 +/N % 78 +/O % 79 +/P % 80 +/Q % 81 +/R % 82 +/S % 83 +/T % 84 +/U % 85 +/V % 86 +/W % 87 +/X % 88 +/Y % 89 +/Z % 90 +/bracketleft % 91 +/backslash % 92 % /quotedblleft in TeX text +/bracketright % 93 +/circumflex.sc % 94 % /asciicircum in ASCII +/underscore % 95 % /dotaccent.sc in TeX text +/quoteleft % 96 % /grave.sc accent in ANSI +/a.sc % 97 +/b.sc % 98 +/c.sc % 99 +/d.sc % 100 +/e.sc % 101 +/f.sc % 102 +/g.sc % 103 +/h.sc % 104 +/i.sc % 105 +/j.sc % 106 +/k.sc % 107 +/l.sc % 108 +/m.sc % 109 +/n.sc % 110 +/o.sc % 111 +/p.sc % 112 +/q.sc % 113 +/r.sc % 114 +/s.sc % 115 +/t.sc % 116 +/u.sc % 117 +/v.sc % 118 +/w.sc % 119 +/x.sc % 120 +/y.sc % 121 +/z.sc % 122 +/braceleft % 123 % /endash in TeX text +/bar % 124 % /emdash in TeX test +/braceright % 125 % /hungarumlaut.sc in TeX text +/tilde.sc % 126 % /asciitilde in ASCII +/dieresis.sc % 127 not used (see 168), use higher up instead +/Lslash % 128 this position is unfortunate, but now too late to fix +/quotesingle % 129 +/quotesinglbase % 130 +/florin.sc % 131 +/quotedblbase % 132 +/ellipsis % 133 +/dagger % 134 +/daggerdbl % 135 +/circumflex.sc % 136 +/perthousand.sc % 137 +/Scaron % 138 +/guilsinglleft % 139 +/OE % 140 +/Zcaron % 141 +/asciicircum % 142 +/minus % 143 +/lslash.sc % 144 +/quoteleft % 145 +/quoteright % 146 +/quotedblleft % 147 +/quotedblright % 148 +/bullet % 149 +/endash % 150 +/emdash % 151 +/tilde.sc % 152 +/trademark % 153 +/scaron.sc % 154 +/guilsinglright % 155 +/oe.sc % 156 +/zcaron.sc % 157 +/asciitilde % 158 +/Ydieresis % 159 +/nbspace % 160 % /space (no break space) +/exclamdown.sc % 161 +/cent.sc % 162 +/sterling.sc % 163 +/currency % 164 +/yen.sc % 165 +/brokenbar % 166 +/section % 167 +/dieresis.sc % 168 +/copyright % 169 +/ordfeminine.sc % 170 +/guillemotleft % 171 +/logicalnot % 172 +/sfthyphen % 173 % /hyphen (hanging hyphen) +/registered % 174 +/macron.sc % 175 +/degree % 176 +/plusminus % 177 +/twosuperior % 178 +/threesuperior % 179 +/acute.sc % 180 +/mu % 181 +/paragraph % 182 +/periodcentered % 183 +/cedilla % 184 +/onesuperior % 185 +/ordmasculine % 186 +/guillemotright % 187 +/onequarter % 188 +/onehalf % 189 +/threequarters % 190 +/questiondown.sc % 191 +/Agrave % 192 +/Aacute % 193 +/Acircumflex % 194 +/Atilde % 195 +/Adieresis % 196 +/Aring % 197 +/AE % 198 +/Ccedilla % 199 +/Egrave % 200 +/Eacute % 201 +/Ecircumflex % 202 +/Edieresis % 203 +/Igrave % 204 +/Iacute % 205 +/Icircumflex % 206 +/Idieresis % 207 +/Eth % 208 +/Ntilde % 209 +/Ograve % 210 +/Oacute % 211 +/Ocircumflex % 212 +/Otilde % 213 +/Odieresis % 214 +/multiply % 215 % OE in T1 +/Oslash % 216 +/Ugrave % 217 +/Uacute % 218 +/Ucircumflex % 219 +/Udieresis % 220 +/Yacute % 221 +/Thorn % 222 +/germandbls.sc % 223 +/agrave.sc % 224 +/aacute.sc % 225 +/acircumflex.sc % 226 +/atilde.sc % 227 +/adieresis.sc % 228 +/aring.sc % 229 +/ae.sc % 230 +/ccedilla.sc % 231 +/egrave.sc % 232 +/eacute.sc % 233 +/ecircumflex.sc % 234 +/edieresis.sc % 235 +/igrave.sc % 236 +/iacute.sc % 237 +/icircumflex.sc % 238 +/idieresis.sc % 239 +/eth.sc % 240 +/ntilde.sc % 241 +/ograve.sc % 242 +/oacute.sc % 243 +/ocircumflex.sc % 244 +/otilde.sc % 245 +/odieresis.sc % 246 +/divide % 247 % oe in T1 +/oslash.sc % 248 +/ugrave.sc % 249 +/uacute.sc % 250 +/ucircumflex.sc % 251 +/udieresis.sc % 252 +/yacute.sc % 253 +/thorn.sc % 254 +/ydieresis.sc % 255 % germandbls in T1 +] def diff --git a/scripts/context/lua/scite-ctx.lua b/scripts/context/lua/scite-ctx.lua index b9291fd00..3a19fb4d8 100644 --- a/scripts/context/lua/scite-ctx.lua +++ b/scripts/context/lua/scite-ctx.lua @@ -35,15 +35,15 @@ -- check=check_text -- -- ctx.spellcheck.language=auto --- ctx.spellcheck.wordsize=3 +-- ctx.spellcheck.wordsize=4 -- ctx.spellcheck.wordpath=ENV(CTXSPELLPATH) -- -- ctx.spellcheck.wordfile.all=spell-uk.txt,spell-nl.txt -- -- ctx.spellcheck.wordfile.uk=spell-uk.txt -- ctx.spellcheck.wordfile.nl=spell-nl.txt --- ctx.spellcheck.wordsize.uk=3 --- ctx.spellcheck.wordsize.nl=3 +-- ctx.spellcheck.wordsize.uk=4 +-- ctx.spellcheck.wordsize.nl=4 -- -- command.name.21.*=CTX Action List -- command.subsystem.21.*=3 @@ -487,7 +487,7 @@ local wordsize = props["ctx.spellcheck.wordsize"] local wordpath = props["ctx.spellcheck.wordpath"] if language == '' then language = 'uk' end -if wordsize == '' then wordsize = 3 else wordsize = tonumber(wordsize) end +if wordsize == '' then wordsize = 4 else wordsize = tonumber(wordsize) end local wordfile = "" local wordlist = {} diff --git a/scripts/context/perl/pdftrimwhite.pl b/scripts/context/perl/pdftrimwhite.pl new file mode 100644 index 000000000..e42a8fd49 --- /dev/null +++ b/scripts/context/perl/pdftrimwhite.pl @@ -0,0 +1,531 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q' + if 0; + +#D \module +#D [ file=pdftrimwhite.pl, +#D version=2000.07.13, +#D title=PDF postprocessing, +#D subtitle=cropping whitespace from pdf files, +#D author=Hans Hagen, +#D date=\currentdate, +#D copyright=PRAGMA ADE] + +#C This module is part of the \CONTEXT\ macro||package and is +#C therefore copyrighted by \PRAGMA. See readme.pdf for +#C details. + +#D This script can be used to crop margins that contain +#D useless information from a \PDF\ image. It does so by: +#D +#D \startitemize[packed,n] +#D \som cropping the image into an alternative file +#D \som determining the boundingbox of the alternative +#D \som cropping the image into a resulting file +#D \stoppacked +#D +#D In the process, some checks are carried out. Step~1 is +#D taken care of by \PDFTEX, step~2 by \GHOSTSCRIPT, using a +#D file generated by \PDFTOPS, and \PDFTEX\ is responsible +#D for step~3. +#D +#D \startuseMPgraphic{original} +#D numeric n ; n = 1cm ; +#D path p ; p := fullsquare xyscaled (8n,12n) ; +#D path q ; q := fullsquare xyscaled (2n,3n) shifted (n,n) ; +#D path r ; r := ((0,0)--(3n,0)) shifted (0, 5.5n) ; +#D path s ; s := ((0,0)--(3n,0)) shifted (0,-5.5n) ; +#D path t ; t := (-2n,-4n) ; +#D path u ; u := p enlarged -.75n ; +#D path v ; v := p enlarged (-1.75n,-2n) shifted (n,1.25n) ; +#D path w ; w := q enlarged .25n ; +#D fill p withcolor .7white ; +#D fill q withcolor .7green ; +#D draw r withpen pencircle scaled .25n withcolor .7green ; +#D draw s withpen pencircle scaled .25n withcolor .7green ; +#D draw t withpen pencircle scaled .50n withcolor .7green ; +#D draw u withpen pencircle scaled .10n withcolor white ; +#D draw v withpen pencircle scaled .10n withcolor .7red ; +#D draw w withpen pencircle scaled .10n ; +#D verbatimtex \tttf \setupframed[frame=off,align=left] etex ; +#D label (btex \framed{crap} etex, center r) ; +#D label (btex \framed{crap} etex, center s) ; +#D label (btex \framed{crap} etex, center t) ; +#D label (btex \framed{graphic} etex, center q) ; +#D label.urt(btex \framed{page} etex, llcorner p) ; +#D label.urt(btex \framed{crop} etex, llcorner u) ; +#D label.lft(btex \framed{leftcrop\\ +#D rightcrop\\ +#D topcrop\\ +#D bottomcrop} etex, .5[ulcorner v,llcorner v]) ; +#D label.bot(btex \framed{offset} etex, .5[llcorner w,lrcorner w]) ; +#D \stopuseMPgraphic +#D +#D \placefigure +#D [here][fig:cropcrap] +#D {Crops and offsets.} +#D {\useMPgraphic{original}} +#D +#D The \TEX\ part has two alternatives, one using \CONTEXT, and +#D another using plain \TEX. The \CONTEXT\ method is slower but +#D can be extended more easily. +#D +#D The script is executed as follows: +#D +#D \starttyping +#D cropcrap <original> [<result>] [<switches>] +#D \stoptyping +#D +#D The next call crops \type {test.pdf} to its natural +#D boundingbox. +#D +#D \starttyping +#D cropcrap test +#D \stoptyping +#D +#D If the file has some crap at the bottom, you can say: +#D +#D \starttyping +#D cropcrap test --bottomcrop=2cm +#D \stoptyping +#D +#D This clips 2cm from the bottom. You can clip on all sides +#D individually, in combination or at once, like in: +#D +#D \starttyping +#D cropcrap test --bottomcrop=2cm --crop=1cm +#D \stoptyping +#D +#D The final result is a tightly cropped image. In order to get +#D a 5mm margin around this image, you can say: +#D +#D \starttyping +#D cropcrap test --bottomcrop=2cm --offset=5mm +#D \stoptyping +#D +#D By default, the script intercepts logging messages and +#D writes them to a logfile with the same name as the +#D resulting image and the prefix \type {log}. If no name is +#D given, the name \type {cropcrap} is used for all resulting +#D files. +#D +#D By default, \CONTEXT\ is used. When installed properly, you +#D can also use plain \TEX, by adding a switch \type +#D {--plain}. Partial switched are accepted, so the next call +#D is valid: +#D +#D \starttyping +#D cropcrap test result --bot=2cm --off=5mm --plain +#D \stoptyping +#D +#D The current implementation uses an intermediate \POSTSCRIPT\ +#D file. This may change as \GHOSTSCRIPT\ gets more clever with +#D \PDF\ files. +#D +#D In \in {figure} [fig:cropcrap] the green rectangle is the +#D picture we want to keep. Around this picture, we want a +#D margin, represented by the black rectangle, and specified by +#D \type {--offset}. The white rectangle is the cropbox +#D defined by \type {--crop}. That way we get rid of header +#D and footerlines. The red rectangle results from an +#D additional \type {--leftcrop} and \type {-bottomcrop} and +#D takes care of some content, as represented by the green +#D dot. +#D +#D The \type {--verbose} switch can be used to disable the +#D interception of log messages. + +#D We load a few \PERL\ modules \unknown\ + +use Config ; +use Getopt::Long ; + +use strict ; + +#D \unknown\ and initialize them. + +Getopt::Long::Configure + ("auto_abbrev", + "ignore_case", + "pass_through") ; + +#D Before fetching the switches, we initialize the +#D variables. + +my $Crop = "0cm" ; + +my $LeftCrop = "0cm" ; +my $RightCrop = "0cm" ; +my $TopCrop = "0cm" ; +my $BottomCrop = "0cm" ; + +my $Offset = "0cm" ; + +my $GSbin = "" ; +my $Verbose = 0 ; +my $Help = 0 ; +my $UsePlain = 0 ; + +my $Page = 1 ; + +#D On \MSWINDOWS\ and \UNIX\ the following defaults, combined +#D with the check later, should work out okay. + +my $pdfps = "pdftops" ; +my $gs = "gs" ; + +my $thisisunix = $Config{'osname'} !~ /dos|mswin/i ; + +#D When no resulting file is given, we use \type {cropcrap} +#D as name (checked later). + +my $figurefile = "" ; +my $resultfile = "" ; + +my $programname = "cropcrap" ; + +#D Messages are temporarily saved and written to a log file +#D afterwards. + +my $results = "" ; +my $pipe = "" ; +my $result = "" ; + +#D Unfortunately we need this information, first since +#D \PDFTOPS\ does not honor the cropbox, and second because +#D the vertical coordinated are swapped. + +my $pwidth = 597 ; +my $pheight = 847 ; +my $hoffset = 0 ; +my $voffset = 0 ; + +#D A few more variables. + +my $width = my $height = my $llx = my $lly = my $urx = my $ury = 0 ; + +#D Here are the switches we accept. The \type {--gsbin} switch +#D is a bonus one, and the \type {--help} switch comes +#D naturally. + +&GetOptions + ( "leftcrop=s" => \$LeftCrop , + "rightcrop=s" => \$RightCrop , + "topcrop=s" => \$TopCrop , + "bottomcrop=s" => \$BottomCrop, + "crop=s" => \$Crop , + "offset=s" => \$Offset , + "verbose" => \$Verbose , + "gsbin=s" => \$GSbin , + "plain" => \$UsePlain , + "page=i" => \$Page , + "help" => \$Help ) ; + +#D If asked for, or if no file is given, we provide some +#D help information. + +sub PrintHelp + { print "This is CropCrap\n\n" . + "usage:\n\n" . + "cropcrap [switches] filename result\n\n" . + "switches:\n\n" . + "--crop=<dimen>\n" . + "--offset=<dimen>\n" . + "--leftcrop=<dimen>\n" . + "--rightcrop=<dimen>\n" . + "--topcrop=<dimen>\n" . + "--bottomcrop=<dimen>\n" . + "--gsbin=<string>\n" . + "--page=<number>\n" . + "--plain\n" . + "--verbose\n" } + +#D The preparations: + +sub GetItRight + { if ($Help) + { PrintHelp() ; exit } + $figurefile = $ARGV[0] ; $figurefile =~ s/\.pdf$//oi ; + $resultfile = $ARGV[1] ; $resultfile =~ s/\.pdf$//oi ; + if ($figurefile eq '') + { PrintHelp() ; exit } + unless ($thisisunix) + { $gs = "gswin32c" } + if ($GSbin ne '') + { $gs = $GSbin } + unless (-e "$figurefile.pdf") + { print "Something is terribly wrong: no file found\n" ; + exit } + if (($resultfile eq '')||($resultfile=~/(^\-|\.)/io)) + { $resultfile = $programname } +$pipe = "2>&1" ; + if ($thisisunix) + { $pipe = "2>&1" } } + +#D Something common. + +sub SavePageData + { return "% saving page data +\\immediate\\openout\\scratchwrite=$figurefile.tmp +\\immediate\\write\\scratchwrite + {\\HOffsetBP\\space\\VOffsetBP\\space + \\FigureWidthBP\\space\\FigureHeightBP} +\\immediate\\closeout\\scratchwrite\n" } + +sub MakePageConTeXt + { return "% the real work +\\definepapersize + [Crap] + [width=\\FigureWidth, + height=\\FigureHeight] +\\setuppapersize + [Crap][Crap] +\\setuplayout + [topspace=0cm,backspace=0pt, + height=middle,width=middle, + header=0pt,footer=0pt] +\\starttext + \\startstandardmakeup + \\clip + [voffset=\\VOffset, + hoffset=\\HOffset, + width=\\FigureWidth, + height=\\FigureHeight] + {\\externalfigure[$figurefile.pdf][page=$Page]\\hss} + \\stopstandardmakeup +\\stoptext\n" } + +sub MakePagePlainTeX + { return "% the real work +\\output{} +\\hoffset=-1in +\\voffset=\\hoffset +\\pdfpageheight=\\FigureHeight +\\pdfpagewidth=\\FigureWidth +\\vbox to \\pdfpageheight + {\\offinterlineskip + \\vskip-\\VOffset + \\hbox to \\pdfpagewidth{\\hskip-\\HOffset\\box0\\hss} + \\vss} +\\end\n" } + +sub CalculateClip + { return "% some calculations +\\dimen0=\\figurewidth +\\dimen2=\\figureheight +\\dimen4=$Crop +\\dimen6=$Crop +\\advance\\dimen4 by $LeftCrop +\\advance\\dimen6 by $TopCrop +\\advance\\dimen0 by -\\dimen4 +\\advance\\dimen0 by -$Crop +\\advance\\dimen0 by -$RightCrop +\\advance\\dimen2 by -\\dimen6 +\\advance\\dimen2 by -$Crop +\\advance\\dimen2 by -$BottomCrop +\\edef\\FigureWidth {\\the\\dimen0} +\\edef\\FigureHeight{\\the\\dimen2} +\\edef\\HOffset {\\the\\dimen4} +\\edef\\VOffset {\\the\\dimen6} +\\ScaledPointsToWholeBigPoints{\\number\\dimen0}\\FigureWidthBP +\\ScaledPointsToWholeBigPoints{\\number\\dimen2}\\FigureHeightBP +\\ScaledPointsToWholeBigPoints{\\number\\dimen4}\\HOffsetBP +\\ScaledPointsToWholeBigPoints{\\number\\dimen6}\\VOffsetBP\n" } + +sub RecalculateClip + { return "% some calculations +\\dimen0=${width}bp +\\dimen2=${height}bp +\\dimen4=${hoffset}bp +\\dimen6=${pheight}bp +\\advance\\dimen0 by $Offset +\\advance\\dimen0 by $Offset +\\advance\\dimen2 by $Offset +\\advance\\dimen2 by $Offset +\\advance\\dimen4 by ${llx}bp +\\advance\\dimen4 by -$Offset +\\advance\\dimen6 by -${lly}bp +\\advance\\dimen6 by $Offset +\\advance\\dimen6 by -\\dimen2 +\\advance\\dimen6 by $TopCrop +\\edef\\FigureWidth {\\the\\dimen0} +\\edef\\FigureHeight{\\the\\dimen2} +\\edef\\HOffset {\\the\\dimen4} +\\edef\\VOffset {\\the\\dimen6}\n" } + +#D The previous scripts could be more sparse, but for the +#D moment we prefer readability. Both scripts save some +#D information in temporary file. We choose between them with +#D the following sub routine. + +#D The first pass: + +sub PrepareConTeXt + { return "% interface=en +\\setupoutput[pdftex] +\\getfiguredimensions[$figurefile.pdf][page=$Page]\n" } + +sub PreparePlainTeX + { return "% plain tex alternative, needs recent supp-mis +\\input supp-mis +\\pdfoutput=1 +\\newdimen\\figurewidth +\\newdimen\\figureheight +\\setbox0=\\hbox + {\\immediate\\pdfximage page $Page {$figurefile.pdf}\\pdfrefximage\\pdflastximage} +\\figurewidth=\\wd0 +\\figureheight=\\ht0\n" } + +sub PrepareFirstPass + { open (TEX, ">$resultfile.tex") ; + if ($UsePlain) + { print TEX + PreparePlainTeX . + CalculateClip . + SavePageData . + MakePagePlainTeX } + else + { print TEX + PrepareConTeXt . + CalculateClip . + SavePageData . + MakePageConTeXt } + close TEX } + +#D The second pass looks much like the first one, but this +#D time we don't save information, use the natural +#D boundingbox, and provide the offset. + +sub SetupConTeXt + { return "% interface=en +\\setupoutput[pdftex]\n" } + +sub SetupPlainTeX + { return "% plain tex alternative +\\pdfoutput=1 +\\setbox0=\\hbox + {\\immediate\\pdfximage page $Page {$figurefile.pdf}\\pdfrefximage\\pdflastximage}\n" } + +sub PrepareSecondPass + { open (TEX, ">$resultfile.tex") ; + if ($UsePlain) + { print TEX + SetupPlainTeX . + RecalculateClip . + MakePagePlainTeX } + else + { print TEX + SetupConTeXt . + RecalculateClip . + MakePageConTeXt } + close TEX } + +#D The information we save in the first pass, is loaded here. + +sub FetchPaperSize + { open (TMP,"$figurefile.tmp") ; + while (<TMP>) + { chomp ; + if (/^(\d+) (\d+) (\d+) (\d+) *$/oi) + { $hoffset = $1 ; + $voffset = $2 ; + $pwidth = $3 ; + $pheight = $4 ; + last } } + close (TMP) } + +#D Here we try to find the natural boundingbox. We need to +#D pick up the page dimensions here. + +sub RunTeX + { if ($UsePlain) + { $result = + `pdftex -prog=pdftex -fmt=plain -int=batchmode $resultfile` } + else + { $result = + `texexec --batch --once --purge $resultfile` } +# print $result if $Verbose ; $results .= "$result\n" ; +# $result = `texutil --purge` ; + print $result if $Verbose ; $results .= "$result\n" } + +sub MakePSFile + { $result = + `$pdfps -paperw $pwidth -paperh $pheight $resultfile.pdf $resultfile.ps` ; + print $result if $Verbose ; $results .= "$result\n" } + +sub FindBoundingBox + { $result = +# `$gs -sDEVICE=bbox -dNOPAUSE -dBATCH $resultfile.ps $pipe` ; + `$gs -sDEVICE=bbox -dNOPAUSE -dBATCH $resultfile.pdf $pipe` ; + print $result if $Verbose ; $results .= "$result\n" } + +sub IdentifyCropBox + { RunTeX() ; + FetchPaperSize () ; +# MakePSFile() ; + FindBoundingBox() } + +#D Just to be sure, we check if there is some image data, so +#D that we can retry if something went wrong. Unfortunately we cannot +#D safely check on a high res boundingbox. + +my $digits = '([\-\d\.]+)' ; + +sub ValidatedCropBox + { if ($result =~ /BoundingBox:\s*$digits\s+$digits\s+$digits\s+$digits\s*/mois) + { $llx = $1 ; $lly = $2 ; $urx = $3 ; $ury = $4 } + else + { print "Something is terribly wrong: no boundingbox:\n$result\n" ; exit } + $width = abs($urx - $llx) ; + $height = abs($ury - $lly) ; + if ($width&&$height) + { return 1 } + else + { unless ($width) + { print "Something seems wrong: no width\n" ; + $LeftCrop = "0cm" ; $RightCrop = "0cm" ; $Crop = "0cm" } + unless ($height) + { print "Something seems wrong: no height\n" ; + $TopCrop = "0cm" ; $BottomCrop = "0cm" ; $Crop = "0cm" } + return 0 } } + +#D This is the main cropping routine. + +sub FixCropBox + { RunTeX() } + +#D For error tracing we save the log information in a file. + +sub SaveLogInfo + { open (LOG, ">$resultfile.log") ; + print LOG $results ; + close (LOG) } + +#D We remove all temporary files. + +sub CleanUp + { unless ($Verbose) + { unlink "$resultfile.tex" ; + unlink "$resultfile.tuo" ; + unlink "$resultfile.tui" ; + unlink "$resultfile.ps" ; + unlink "$figurefile.tmp" } } + +#D Here it all comes together. + +GetItRight() ; + +PrepareFirstPass() ; + +IdentifyCropBox () ; + +unless (ValidatedCropBox()) + { PrepareFirstPass() ; + IdentifyCropBox () } + +if (ValidatedCropBox()) + { PrepareSecondPass() ; + FixCropBox() } + +SaveLogInfo() ; + +CleanUp () ; diff --git a/scripts/context/perl/texexec.pl b/scripts/context/perl/texexec.pl index a020727df..e60a7745f 100644 --- a/scripts/context/perl/texexec.pl +++ b/scripts/context/perl/texexec.pl @@ -11,7 +11,7 @@ eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}' && eval 'exec perl -w - #D copyright={PRAGMA / Hans Hagen \& Ton Otten}] #C #C This module is part of the \CONTEXT\ macro||package and is -#C therefore copyrighted by \PRAGMA. See licen-en.pdf for +#C therefore copyrighted by \PRAGMA. See readme.pdf for #C details. # Thanks to Tobias Burnus for the german translations. @@ -2010,7 +2010,11 @@ sub checktexformatpath { if ($texformats eq '') { if ($UseEnginePath) { if ($dosish) { - $texformats = `kpsewhich --engine=$TeXExecutable --expand-var=\$TEXFORMATS` ; + if ( $TeXShell =~ /MikTeX/io ) { + $texformats = `kpsewhich --alias=$TeXExecutable --expand-var=\$TEXFORMATS` ; + } else { + $texformats = `kpsewhich --engine=$TeXExecutable --expand-var=\$TEXFORMATS` ; + } } else { $texformats = `kpsewhich --engine=$TeXExecutable --expand-var=\\\$TEXFORMATS` ; } @@ -2365,7 +2369,11 @@ sub LocatedFormatPath { # watch out $engine is lowercase in kpse # expanded paths print " assuming engine : $EnginePath\n"; if (($UseEnginePath)&&($EngineDone)) { - $FormatPath = `$kpsewhich --engine=$EnginePath --show-path=fmt` ; + if ( $TeXShell =~ /MikTeX/io ) { + $FormatPath = `$kpsewhich --alias=$EnginePath --show-path=fmt` ; + } else { + $FormatPath = `$kpsewhich --engine=$EnginePath --show-path=fmt` ; + } } else { $FormatPath = `$kpsewhich --show-path=fmt` ; } @@ -2377,7 +2385,11 @@ sub LocatedFormatPath { # watch out $engine is lowercase in kpse if ($FormatPath eq '') { if (($UseEnginePath)&&($EngineDone)) { if ($dosish) { - $FormatPath = `$kpsewhich --engine=$EnginePath --expand-path=\$TEXFORMATS` ; + if ( $TeXShell =~ /MikTeX/io ) { + $FormatPath = `$kpsewhich --alias=$EnginePath --expand-path=\$TEXFORMATS` ; + } else { + $FormatPath = `$kpsewhich --engine=$EnginePath --expand-path=\$TEXFORMATS` ; + } } else { $FormatPath = `$kpsewhich --engine=$EnginePath --expand-path=\\\$TEXFORMATS` ; } diff --git a/scripts/context/perl/texexec.rme b/scripts/context/perl/texexec.rme index f38b4be7f..43f142f9d 100644 --- a/scripts/context/perl/texexec.rme +++ b/scripts/context/perl/texexec.rme @@ -120,7 +120,7 @@ for miktex set TeXVirginFlag to --initialize for miktex set TeXPassString to --alias=context --translate-file=natural.tcx for miktex set TeXBatchFlag to --interaction=batchmode for miktex set TeXNonStopFlag to --interaction=nonstopmode -for miktex set MpToTeXExecutable to mptotex +for miktex set MpToTeXExecutable to mpto for miktex set MpVirginFlag to --initialize for miktex set MpPassString to --alias=mpost --translate-file=natural.tcx for miktex set MpBatchFlag to --interaction=batchmode diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb index a8a200b72..316cc6941 100644 --- a/scripts/context/ruby/base/tex.rb +++ b/scripts/context/ruby/base/tex.rb @@ -133,8 +133,8 @@ class TEX @@stringvars = [ 'modefile', 'result', 'suffix', 'response', 'path', 'filters', 'usemodules', 'environments', 'separation', 'setuppath', - 'arguments', 'input', 'output', 'randomseed', 'modes', 'filename', - 'modefile', 'ctxfile' + 'arguments', 'input', 'output', 'randomseed', 'modes', 'mode', 'filename', + 'ctxfile' ] @@standardvars = [ 'mainlanguage', 'bodyfont', 'language' @@ -939,8 +939,13 @@ class TEX end opt << "\\setuparranging[#{arrangement.flatten.join(',')}]\n" if arrangement.size > 0 end + # we handle both "--mode" and "--modes", else "--mode" is + # mapped onto "--modefile" if (str = getvariable('modes')) && ! str.empty? then - opt << "\\enablemode[#{modes}]\n" + opt << "\\enablemode[#{str}]\n" + end + if (str = getvariable('mode')) && ! str.empty? then + opt << "\\enablemode[#{str}]\n" end if (str = getvariable('arguments')) && ! str.empty? then opt << "\\setupenv[#{str}]\n" diff --git a/scripts/context/ruby/runtools.rb b/scripts/context/ruby/runtools.rb new file mode 100644 index 000000000..f554057f6 --- /dev/null +++ b/scripts/context/ruby/runtools.rb @@ -0,0 +1,493 @@ +require 'timeout' +require 'ftools' +require 'rbconfig' + +class File + + # we don't want a/b//c + # + # puts File.join('a','b','c') + # puts File.join('/a','b','c') + # puts File.join('a:','b','c') + # puts File.join('a/','/b/','c') + # puts File.join('/a','/b/','c') + # puts File.join('//a/','/b/','c') + + def File.join(*list) + path, prefix = [*list].flatten.join(File::SEPARATOR), '' + path.sub!(/^([\/]+)/) do + prefix = $1 + '' + end + path.gsub!(/([\\\/]+)/) do + File::SEPARATOR + end + prefix + path + end + +end + + +class Job + + $ownfile, $ownpath = '', '' + + def Job::set_own_path(file) + $ownfile, $ownpath = File.basename(file), File.expand_path(File.dirname(file)) + $: << $ownpath + end + + def Job::ownfile + $ownfile + end + + def Job::ownpath + $ownpath + end + +end + +class Job + + def initialize + @startuppath = Dir.getwd + @log = Array.new + @testmode = false + @ownpath = $ownpath + @paths = Array.new + end + + def exit(showlog=false) + Dir.chdir(@startuppath) + show_log if showlog + Kernel::exit + end + + def platform + case Config::CONFIG['host_os'] + when /mswin/ then :windows + else :unix + end + end + + def path(*components) + File.join([*components].flatten) + end + + def found(name) + FileTest.file?(path(name)) || FileTest.directory?(path(name)) + end + + def binary(name) + if platform == :windows then + name.sub(/\.[^\/]+$/o,'') + '.exe' + else + name + end + end + + def suffixed(name,suffix) + if name =~ /\.[^\/]+$/o then + name + else + name + '.' + suffix + end + end + + def expanded(*name) + File.expand_path(File.join(*name)) + end + + def argument(n,default=nil) + ARGV[n] || default + end + + def variable(name,default='') + ENV[name] || default + end + + def change_dir(*dir) + dir, old = expanded(path(*dir)), expanded(Dir.getwd) + unless old == dir then + begin + Dir.chdir(dir) + rescue + error("unable to change to path #{dir}") + else + if old == dir then + error("error in changing to path #{dir}") + else + message("changed to path #{dir}") + end + end + end + # return File.expand_path(Dir.getwd) + end + + def delete_dir(*dir) + begin + dir = path(*dir) + pattern = "#{dir}/**/*" + puts("analyzing dir #{pattern}") + files = Dir.glob(pattern).sort.reverse + files.each do |f| + begin + # FileTest.file?(f) fails on .whatever files + File.delete(f) + rescue + # probably directory + else + puts("deleting file #{f}") + end + end + files.each do |f| + begin + Dir.rmdir(f) + rescue + # strange + else + message("deleting path #{f}") + end + end + begin + Dir.rmdir(dir) + rescue + # strange + else + message("deleting parent #{dir}") + end + Dir.glob(pattern).sort.each do |f| + warning("unable to delete #{f}") + end + rescue + warning("unable to delete path #{File.expand_path(dir)} (#{$!})") + else + message("path #{File.expand_path(dir)} removed") + end + end + + + def create_dir(*dir) + begin + dir = path(*dir) + unless FileTest.directory?(dir) then + File.makedirs(dir) + else + return + end + rescue + error("unable to create path #{File.expand_path(dir)}") + else + message("path #{File.expand_path(dir)} created") + end + end + + def show_dir(delay=0) + _puts_("\n") + print Dir.getwd + ' ' + begin + timeout(delay) do + loop do + print '.' + sleep(1) + end + end + rescue TimeoutError + # ok + end + _puts_("\n\n") + end + + def copy_file(from,to='.',exclude=[]) + to, ex = path(to), [exclude].flatten + Dir.glob(path(from)).each do |file| + tofile = to.sub(/[\.\*]$/o) do File.basename(file) end + _do_copy_(file,tofile) unless ex.include?(File.extname(file)) + end + end + + def clone_file(from,to) + if from and to then + to = File.join(File.basename(from),to) if File.basename(to).empty? + _do_copy_(from,to) + end + end + + def copy_dir(from,to,pattern='*',exclude=[]) + pattern = '*' if ! pattern or pattern.empty? + if from and to and File.expand_path(from) != File.expand_path(to) then + ex = [exclude].flatten + Dir.glob("#{from}/**/#{pattern}").each do |file| + unless ex.include?(File.extname(file)) then + _do_copy_(file,File.join(to,file.sub(/^#{from}/, ''))) + end + end + end + end + + def _do_copy_(file,tofile) + if FileTest.file?(file) and File.expand_path(file) != File.expand_path(tofile) then + begin + create_dir(File.dirname(tofile)) + File.copy(file,tofile) + rescue + error("unable to copy #{file} to #{tofile}") + else + message("file #{file} copied to #{tofile}") + end + else + puts("file #{file} is not copied") + end + end + + def rename_file(from,to) + from, to = path(from), path(to) + begin + File.move(from,to) + rescue + error("unable to rename #{from} to #{to}") + else + message("#{from} renamed to #{to}") + end + end + + def delete_file(pattern) + Dir.glob(path(pattern)).each do |file| + _do_delete_(file) + end + end + + def delete_files(*files) + [*files].flatten.each do |file| + _do_delete_(file) + end + end + + def _do_delete_(file) + if FileTest.file?(file) then + begin + File.delete(file) + rescue + error("unable to delete file #{file}") + else + message("file #{file} deleted") + end + else + message("no file #{File.expand_path(file)}") + end + end + + def show_log(filename=nil) + if filename then + begin + if f = File.open(filename,'w') then + @log.each do |line| + f.puts(line) + end + f.close + end + message("log data written to #{filename}") + rescue + error("unable to write log to #{filename}") + end + else + @log.each do |line| + _puts_(line) + end + end + end + + def _puts_(str) + begin + STDOUT.puts( str) + rescue + STDERR.puts("error while writing '#{str}' to terminal") + end + end + + def puts(message) + @log << message + _puts_(message) + end + + def error(message) + puts("! #{message}") + exit + end + + def warning(message) + puts("- #{message}") + end + + def message(message) + puts("+ #{message}") + end + + def export_variable(variable,value) + value = path(value) if value.class == Array + ENV[variable] = value + message("environment variable #{variable} set to #{value}") + return value + end + + def execute_command(*command) + begin + command = [*command].flatten.join(' ') + message("running '#{command}'") + _puts_("\n") + ok = system(command) + _puts_("\n") + if true then # ok then + message("finished '#{command}'") + else + error("error in running #{command}") + end + rescue + error("unable to run #{command}") + end + end + + def pipe_command(*command) + begin + command = [*command].flatten.join(' ') + message("running '#{command}'") + result = `#{command}` + _puts_("\n") + _puts_(result) + _puts_("\n") + rescue + error("unable to run #{command}") + end + end + + def execute_script(script) + script = suffixed(script,'rb') + script = path(script_path,File.basename(script)) unless found(script) + if found(script) then + begin + message("loading script #{script}") + load(script) + rescue + error("error in loading script #{script} (#{$!})") + else + message("script #{script} finished") + end + else + warning("no script #{script}") + end + end + + def execute_binary(*command) + command = [*command].flatten.join(' ').split(' ') + command[0] = binary(command[0]) + execute_command(command) + end + + def extend_path(pth) + export_variable('PATH',"#{path(pth)}#{File::PATH_SEPARATOR}#{ENV['PATH']}") + end + + def startup_path + @startuppath + end + + def current_path + Dir.getwd + end + + def script_path + @ownpath + end + + def push_path(newpath) + newpath = File.expand_path(newpath) + @paths.push(newpath) + change_dir(newpath) + end + + def pop_path + change_dir(if @paths.length > 0 then @paths.pop else @startuppath end) + end + + # runner = Runner.new + # runner.texmfstart('newtexexec.rb','--help') + + def texmfstart(name,args,verbose=false) + command = ['texmfstart',"#{'--verbose' if verbose}",name,args].flatten.join(' ') + system(command) + end + +end + +class Job + + # copied from texmfstart and patched (message/error), different name + + def use_tree(tree) + unless tree.empty? then + begin + setuptex = File.join(tree,'setuptex.tmf') + if FileTest.file?(setuptex) then + message("tex tree : #{setuptex}") + ENV['TEXPATH'] = tree.sub(/\/+$/,'') # + '/' + ENV['TMP'] = ENV['TMP'] || ENV['TEMP'] || ENV['TMPDIR'] || ENV['HOME'] + case RUBY_PLATFORM + when /(mswin|bccwin|mingw|cygwin)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-mswin' + when /(linux)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-linux' + when /(darwin|rhapsody|nextstep)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-macosx' + # when /(netbsd|unix)/i then # todo + else # todo + end + ENV['TEXMFOS'] = "#{ENV['TEXPATH']}/#{ENV['TEXOS']}" + message("preset : TEXPATH => #{ENV['TEXPATH']}") + message("preset : TEXOS => #{ENV['TEXOS']}") + message("preset : TEXMFOS => #{ENV['TEXMFOS']}") + message("preset : TMP => #{ENV['TMP']}") + IO.readlines(File.join(tree,'setuptex.tmf')).each do |line| + case line + when /^[\#\%]/ then + # comment + when /^(.*?)\s+\=\s+(.*)\s*$/ then + k, v = $1, $2 + ENV[k] = v.gsub(/\%(.*?)\%/) do + ENV[$1] || '' + end + message("user set : #{k} => #{ENV[k]}") + end + end + else + error("no setup file '#{setuptex}'") + end + rescue + warning("error in setup: #{$!}") + end + end + end + +end + +Job::set_own_path($0) + +if Job::ownfile == 'runtools.rb' then + + begin + script = ARGV.shift + if script then + script += '.rb' if File.extname(script).empty? + fullname = File.expand_path(script) + fullname = File.join(Job::ownpath,script) unless FileTest.file?(fullname) + if FileTest.file?(fullname) then + puts("loading script #{fullname}") + Job::set_own_path(fullname) + load(fullname) + else + puts("unknown script #{fullname}") + end + else + puts("provide script name") + end + rescue + puts("fatal error: #{$!}") + end + +end diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index 8a33961ec..f973cd364 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -24,6 +24,10 @@ \writestatus{\m!systems}{beware: some patches loaded from cont-new.tex} +% just in case we load something from a file (pdfr-ec for instance) + +\prependtoks \restoreendofline \to \everybeforeshipout + % \tracefilestrue % % \unexpanded\def\readfile#1#2#3% diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index d82338fbe..4e468a414 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -31,7 +31,7 @@ %D 2004.8.30 the low level interface is english. Watch out and adapt %D your styles an modules. -\def\contextversion{2005.12.01} +\def\contextversion{2005.12.18} %D For those who want to use this: diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex index 61bd6e342..ff0252069 100644 --- a/tex/context/base/core-ntb.tex +++ b/tex/context/base/core-ntb.tex @@ -1105,7 +1105,7 @@ \afterTABLEsplitbox \@@tblsplitafter \fi - \pagina + \page \fi}} % ! ! ! ! TODO: naast \postprocessTABLEsplitbox ook evt \postprocessTABLEbox voor niet split diff --git a/tex/context/base/core-reg.tex b/tex/context/base/core-reg.tex index 0b70df889..8db6dbc7c 100644 --- a/tex/context/base/core-reg.tex +++ b/tex/context/base/core-reg.tex @@ -123,8 +123,13 @@ % \ifvmode\nobreak\fi % \GotoPar} +\long\def\doflushatpar#1% +% {\dogotopar{#1}} +% {\dogotopar{\dontleavehmode#1}} % this one can introduce empty lines + {\dogotopar{#1\ifvmode\nobreak\fi}} % while this one can mess up vertical space + \def\dodoregister[#1]#2#3% - {\dogotopar{\doprocesspageregister[#1]{#2}{#3}}} + {\doflushatpar{\doprocesspageregister[#1]{#2}{#3}}} \def\writetoregister[#1]% to be documented {\doregister{#1}} @@ -163,17 +168,42 @@ \def\currentregister{#1}% \dodoregister[#2]{}{#3}} % key altnum entry -\def\complexdoseeregister[#1]#2#3% +% \def\complexdoseeregister[#1]#2#3% +% {\begingroup +% \thisisnextinternal\s!ind +% \ifduplicate\getlastregisterentry{#2}\fi +% \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA +% \convertexpanded{\registerparameter\c!expansion }{#2}\asciiregisterentryB +% \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryC +% \doifsomething{\registerparameter\c!keyexpansion} +% {\ifx\asciiregisterentryA\empty +% \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA +% \fi}% +% \makesectionformat +% \expanded +% {\writeutility% +% {r s % +% {\currentregister} % +% {\nextinternalreference} % +% {\asciiregisterentryA} % +% {\asciiregisterentryB} % +% {\asciiregisterentryC} % +% {\sectionformat}}}% +% \endgroup +% \registerinfo{> see}{#2}% +% \GotoPar} + +\def\doprocessseeregister[#1]#2#3% {\begingroup \thisisnextinternal\s!ind \ifduplicate\getlastregisterentry{#2}\fi \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA \convertexpanded{\registerparameter\c!expansion }{#2}\asciiregisterentryB \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryC -\doifsomething{\registerparameter\c!keyexpansion} - {\ifx\asciiregisterentryA\empty - \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA - \fi}% + \doifsomething{\registerparameter\c!keyexpansion} + {\ifx\asciiregisterentryA\empty + \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA + \fi}% \makesectionformat \expanded {\writeutility% @@ -185,16 +215,18 @@ {\asciiregisterentryC} % {\sectionformat}}}% \endgroup - \registerinfo{> see}{#2}% - \GotoPar} + \registerinfo{> see}{#2}} + +\def\complexdoseeregister[#1]#2#3% + {\doflushatpar{\doprocessseeregister[#1]{#2}{#3}}} \def\doseeregister#1% {\def\currentregister{#1}% - \complexorsimpleempty\doseeregister} + \complexorsimpleempty\doseeregister} % = \dosingleempty\doseeregister -\def\dowritetoregister[#1]% % de twee-traps-aanroep is nodig - {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter - \doprocesspageregister{}} % mogelijk te maken +\def\dowritetoregister[#1]% % de twee-traps-aanroep is nodig + {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter + \doprocesspageregister} % mogelijk te maken \def\writetoregister {\dodoubleempty\dowritetoregister} @@ -742,11 +774,29 @@ \docommandoprolinrefB{#1}\nextlistreference\v!next \fi}} -\def\dodolinkedregister[#1][#2]#3% page auto link +% \def\dodolinkedregister[#1][#2]#3% page auto link +% {\bgroup +% \chardef\registerpagestatus\plusone +% \def\currentregister{#1}% +% \iflocation +% \ifautoregisterhack +% \def\next{\doprocessautoregister[#1][#2]}% +% \else +% \def\next{\doprocesslinkregister[#1][#2]}% +% \fi +% \else +% \def\next{\doprocesspageregister[#2]{}}% +% \fi +% \next{#3}% +% \egroup +% \ifvmode\nobreak\fi +% \GotoPar} + +\def\doprocesslinkedregister[#1][#2]#3% page auto link {\bgroup \chardef\registerpagestatus\plusone \def\currentregister{#1}% - \iflocation + \iflocation % \next is not needed \ifautoregisterhack \def\next{\doprocessautoregister[#1][#2]}% \else @@ -756,9 +806,10 @@ \def\next{\doprocesspageregister[#2]{}}% \fi \next{#3}% - \egroup - \ifvmode\nobreak\fi - \GotoPar} + \egroup} + +\def\dodolinkedregister[#1][#2]#3% page auto link + {\doflushatpar{\doprocesslinkedregister[#1][#2]{#3}}} \def\dolinkedregister#1% {\dodoubleempty\dodolinkedregister[#1]} diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex index 1825797c4..13be56e4d 100644 --- a/tex/context/base/core-rul.tex +++ b/tex/context/base/core-rul.tex @@ -3149,13 +3149,13 @@ \loop \ifdim\pagetotal=\zeropoint % empty page \scratchdimen\textheight - \chardef\backgroundsplit1 % split to max height + \chardef\backgroundsplit\plusone % split to max height \else \scratchdimen\pagegoal \setbox\scratchbox\vbox{\@@agbefore}% \advance\scratchdimen -\ht\scratchbox \advance\scratchdimen -\pagetotal - \chardef\backgroundsplit2 % split to partial height + \chardef\backgroundsplit\plustwo % split to partial height \fi \advance\scratchdimen -\@@agtopoffset \advance\scratchdimen -\@@agbottomoffset \relax @@ -3164,7 +3164,7 @@ \setbox2\vsplit0 to \scratchdimen \else \setbox2\box0 - \chardef\backgroundsplit0 % no split + \chardef\backgroundsplit\zerocount % no split \fi \setbox2\vbox \ifcase\backgroundsplit\or to \textheight \fi % max split {\vskip\@@agtopoffset diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex index f6181648e..369061027 100644 --- a/tex/context/base/core-spa.tex +++ b/tex/context/base/core-spa.tex @@ -1574,7 +1574,7 @@ \def\godown[#1]% {\relax \ifhmode\endgraf\fi - \ifvmode\nointerlineskip\vskip#1\relax} + \ifvmode\nointerlineskip\vskip#1\relax\fi} %D A couple of plain macros: @@ -4439,6 +4439,22 @@ \doglobal\appendtoks#2\to\everyfirstparagraphintro \doglobal\appendtoks#2\to\everynextparagraphintro]} +%D We can say: +%D +%D \starttyping +%D \setupparagraphintro[first][\index{Knuth}] +%D \stoptyping +%D +%D Maybe more convenient is: +%D +%D \starttyping +%D \flushatparagraph{\index{Zapf}} +%D \stoptyping + +\def\flushatparagraph#1% + {\global\chardef\everyparagraphintro\plusone + \global\appendtoks{#1}\to\everyfirstparagraphintro} + % \def\doinsertparagraphintro % {\ifcase\everyparagraphintro\relax % % no data diff --git a/tex/context/base/enco-chi.tex b/tex/context/base/enco-chi.tex index 5addd57e9..1aaf5b235 100644 --- a/tex/context/base/enco-chi.tex +++ b/tex/context/base/enco-chi.tex @@ -13,13 +13,123 @@ % actually this is also a filter -> enco-fcn.tex -%D This is an experimental definition. Since we are dealing -%D with unicode's, the registered values are not saved, so -%D actually we're dealing with an pseudo encoding. The digits -%D on the other hand are encoding specific. +%D This is an experimental definition. Since we are dealing +%D with unicode's, the registered values are not saved, so +%D actually we're dealing with an pseudo encoding. The digits +%D on the other hand are encoding specific. % chinese classes: left=1|right=2|center=3 - + +% untested, probably wrong + +\startencoding[c-uni] + +\defineuclass 1 32 24 +\defineuclass 1 32 28 +\defineuclass 1 48 20 +\defineuclass 1 48 8 +\defineuclass 1 48 10 +\defineuclass 1 48 12 +\defineuclass 1 48 14 +\defineuclass 1 48 22 +\defineuclass 1 48 16 +\defineuclass 1 255 8 +\defineuclass 1 255 59 +\defineuclass 1 255 64 +\defineuclass 1 255 91 + +\defineuclass 3 0 183 +\defineuclass 3 0 168 +\defineuclass 3 32 38 +\defineuclass 3 255 30 + +\defineuclass 2 48 1 +\defineuclass 2 48 2 +\defineuclass 2 32 20 +\defineuclass 2 255 94 +\defineuclass 2 32 25 +\defineuclass 2 32 29 +\defineuclass 2 48 21 +\defineuclass 2 48 9 +\defineuclass 2 48 11 +\defineuclass 2 48 13 +\defineuclass 2 48 15 +\defineuclass 2 48 23 +\defineuclass 2 48 17 +\defineuclass 2 34 55 +\defineuclass 2 0 176 +\defineuclass 2 32 50 +\defineuclass 2 32 51 +\defineuclass 2 255 1 +\defineuclass 2 255 2 +\defineuclass 2 255 7 +\defineuclass 2 255 9 +\defineuclass 2 255 12 +\defineuclass 2 255 14 +\defineuclass 2 255 26 +\defineuclass 2 255 27 +\defineuclass 2 255 31 +\defineuclass 2 255 61 +\defineuclass 2 255 93 + +\defineudigit 0 37 203 +\defineudigit 1 78 0 +\defineudigit 2 78 140 +\defineudigit 3 78 9 +\defineudigit 4 86 219 +\defineudigit 5 78 148 +\defineudigit 6 81 109 +\defineudigit 7 78 3 +\defineudigit 8 81 107 +\defineudigit 9 78 93 +\defineudigit 10 83 65 +\defineudigit 100 118 126 +\defineudigit 1000 83 67 +\defineudigit 10000 78 7 +\defineudigit 100000000 78 191 + +\defineudigit 0* 150 246 +\defineudigit 1* 88 249 +\defineudigit 2* 141 48 +\defineudigit 3* 83 193 +\defineudigit 4* 128 134 +\defineudigit 5* 79 13 +\defineudigit 6* 150 70 +\defineudigit 7* 103 210 +\defineudigit 8* 99 76 +\defineudigit 9* 115 150 +\defineudigit 10* 98 254 +\defineudigit 100* 79 112 +\defineudigit 1000* 78 223 +\defineudigit 10000* 132 44 +\defineudigit 100000000* 78 191 + +\defineudigit 20 94 255 +\defineudigit 21 78 0 +\defineudigit 22 78 140 +\defineudigit 23 78 9 +\defineudigit 24 86 219 +\defineudigit 25 78 148 +\defineudigit 26 81 109 +\defineudigit 27 78 3 +\defineudigit 28 81 107 +\defineudigit 29 78 93 + +\defineudigit 30 83 69 +\defineudigit 31 78 0 +\defineudigit 32 78 140 +\defineudigit 33 78 9 +\defineudigit 34 86 219 +\defineudigit 35 78 148 +\defineudigit 36 81 109 +\defineudigit 37 78 3 +\defineudigit 38 81 107 +\defineudigit 39 78 93 + +\stopencoding + +% \doif \currentregime {utf} \endinput + \startencoding[big5] \defineuclass 1 161 93 @@ -138,7 +248,7 @@ \defineudigit 27 164 67 \defineudigit 28 164 75 \defineudigit 29 164 69 - + \defineudigit 30 164 202 \defineudigit 31 164 64 \defineudigit 32 164 71 @@ -258,4 +368,4 @@ \stopencoding -\endinput +\endinput diff --git a/tex/context/base/font-chi.tex b/tex/context/base/font-chi.tex index 7a602d4ab..dd5c4211a 100644 --- a/tex/context/base/font-chi.tex +++ b/tex/context/base/font-chi.tex @@ -36,7 +36,6 @@ %M \def\WangLei{\purechinese{\uchar{205}{245}\uchar{192}{218}}} \useencoding[chi] -\loadmapfile[gbk] %D When \WangLei\ sent me a mail asking if \CONTEXT\ was able %D to support Chinese, I wasn't sure if the answer could be @@ -154,66 +153,6 @@ \horizontalchineseunicodeglyph \fi\fi} -% This is a previous, very encoding specific, attempt. The -% current implementation is more versatile. -% -% \starttypen -% \def\chineseleftglyph {\chardef\chineseSstatus=1 } -% \def\chineserightglyph {\chardef\chineseSstatus=2 } -% \def\chinesecenterglyph {\chardef\chineseSstatus=3 } -% -% \def\analyzechineseunicodeglyph% -% {% left -% \ifnum\unicodeposition=161174 \chineseleftglyph \else -% \ifnum\unicodeposition=161176 \chineseleftglyph \else -% \ifnum\unicodeposition=161178 \chineseleftglyph \else -% \ifnum\unicodeposition=161180 \chineseleftglyph \else -% \ifnum\unicodeposition=161182 \chineseleftglyph \else -% \ifnum\unicodeposition=161184 \chineseleftglyph \else -% \ifnum\unicodeposition=161186 \chineseleftglyph \else -% \ifnum\unicodeposition=161188 \chineseleftglyph \else -% \ifnum\unicodeposition=161190 \chineseleftglyph \else -% \ifnum\unicodeposition=163168 \chineseleftglyph \else -% \ifnum\unicodeposition=163219 \chineseleftglyph \else -% \ifnum\unicodeposition=163224 \chineseleftglyph \else -% \ifnum\unicodeposition=163251 \chineseleftglyph \else -% % right -% \ifnum\unicodeposition=161162 \chineserightglyph \else -% \ifnum\unicodeposition=161163 \chineserightglyph \else -% \ifnum\unicodeposition=161175 \chineserightglyph \else -% \ifnum\unicodeposition=161177 \chineserightglyph \else -% \ifnum\unicodeposition=161179 \chineserightglyph \else -% \ifnum\unicodeposition=161181 \chineserightglyph \else -% \ifnum\unicodeposition=161183 \chineserightglyph \else -% \ifnum\unicodeposition=161185 \chineserightglyph \else -% \ifnum\unicodeposition=161187 \chineserightglyph \else -% \ifnum\unicodeposition=161189 \chineserightglyph \else -% \ifnum\unicodeposition=161191 \chineserightglyph \else -% \ifnum\unicodeposition=161227 \chineserightglyph \else -% \ifnum\unicodeposition=161228 \chineserightglyph \else -% \ifnum\unicodeposition=161229 \chineserightglyph \else -% \ifnum\unicodeposition=163161 \chineserightglyph \else -% \ifnum\unicodeposition=163162 \chineserightglyph \else -% \ifnum\unicodeposition=163167 \chineserightglyph \else -% \ifnum\unicodeposition=163169 \chineserightglyph \else -% \ifnum\unicodeposition=163172 \chineserightglyph \else -% \ifnum\unicodeposition=163174 \chineserightglyph \else -% \ifnum\unicodeposition=163186 \chineserightglyph \else -% \ifnum\unicodeposition=163187 \chineserightglyph \else -% \ifnum\unicodeposition=163191 \chineserightglyph \else -% \ifnum\unicodeposition=163221 \chineserightglyph \else -% \ifnum\unicodeposition=163253 \chineserightglyph \else -% % center -% \ifnum\unicodeposition=161164 \chinesecenterglyph \else -% \ifnum\unicodeposition=161167 \chinesecenterglyph \else -% \ifnum\unicodeposition=161173 \chinesecenterglyph \else -% \ifnum\unicodeposition=163190 \chinesecenterglyph \else -% % unknown -% \chardef\chineseSstatus=0 -% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi -% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi} -% \stoptypen -% % chinese classes: left=1|right=2|center=3 \chardef\plusfour=4 @@ -918,12 +857,12 @@ %D \defineunicodefont %D [SimChi] %D [SimplifiedChinese] -%D [ \c!scale=\chineseunicodescale, -%D \c!height=\chineseunicodeheight, -%D \c!depth=\chineseunicodedepth, +%D [\c!scale=\chineseunicodescale, +%D \c!height=\chineseunicodeheight, +%D \c!depth=\chineseunicodedepth, %D \c!conversion=\chinesenumber, %D \c!commands=\setchineseencoding, % needed for digits -%D \c!command=\handlechineseunicodeglyph] +%D \c!command=\handlechineseunicodeglyph] %D \stoptyping %D %D However, the former definitions is more general. Next we @@ -943,6 +882,44 @@ \definefontsynonym [TraditionalChineseBoldSlanted] [b5heisl] [encoding=big5] \definefontsynonym [TraditionalChineseBoldItalic] [b5heisl] [encoding=big5] +% we need to move this to typescripts + +\doifelse \currentregime {utf} { + + \useunicodevector[chi] + + \definefontsynonym [SimplifiedChineseRegular] [ChineseRegular] + \definefontsynonym [SimplifiedChineseSlanted] [ChineseSlanted] + \definefontsynonym [SimplifiedChineseItalic] [ChineseItalic] + \definefontsynonym [SimplifiedChineseBold] [ChineseBold] + \definefontsynonym [SimplifiedChineseBoldSlanted] [ChineseBoldSlanted] + \definefontsynonym [SimplifiedChineseBoldItalic] [ChineseBoldItalic] + + \definefontsynonym [TraditionalChineseRegular] [ChineseRegular] + \definefontsynonym [TraditionalChineseSlanted] [ChineseSlanted] + \definefontsynonym [TraditionalChineseItalic] [ChineseItalic] + \definefontsynonym [TraditionalChineseBold] [ChineseBold] + \definefontsynonym [TraditionalChineseBoldSlanted][ChineseBoldSlanted] + \definefontsynonym [TraditionalChineseBoldItalic] [ChineseBoldItalic] + + \definefontsynonym [ChineseRegular] [uni-htsong-][encoding=c-uni] + \definefontsynonym [ChineseSlanted] [uni-htsong-][encoding=c-uni] + \definefontsynonym [ChineseItalic] [uni-htsong-][encoding=c-uni] + \definefontsynonym [ChineseBold] [uni-hthei-] [encoding=c-uni] + \definefontsynonym [ChineseBoldSlanted][uni-hthei-] [encoding=c-uni] + \definefontsynonym [ChineseBoldItalic] [uni-hthei-] [encoding=c-uni] + + \loadmapfile[uni-htsong.map] + \loadmapfile[uni-htfs.map] + \loadmapfile[uni-hthei.map] + \loadmapfile[uni-htkai.map] + +} { + + \loadmapfile[gbk] + +} + \defineunicodefont [SimChi] [SimplifiedChinese] [chinese] \defineunicodefont [TraChi] [TraditionalChinese] [chinese] diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index ae27c1b6f..873d51716 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -4710,15 +4710,16 @@ \scaledfont\currentfontscale\bodyfontsize \scaledfont\relativefontsize\scaledfont} -\def\variant[#1]% slow +\unexpanded\def\variant[#1]% slow {\dosetscaledfont \expanded{\definedfont [\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}} - at \scaledfont]}} + at \scaledfont]}% + \ignoreimplicitspaces} \beginXETEX \font - \def\variant[#1]% + \unexpanded\def\variant[#1]% {\dosetscaledfont \font\variantfont\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}} at \scaledfont diff --git a/tex/context/base/font-run.tex b/tex/context/base/font-run.tex index f6221745e..d657aa402 100644 --- a/tex/context/base/font-run.tex +++ b/tex/context/base/font-run.tex @@ -17,6 +17,9 @@ \unprotect +\gdef\@@onlyenglish#1% + {\blank{\tttf \type {#1} is only available in the english interface}\blank} + \gdef\dosetshowfonttitle#1% {\tabskip\zeropoint \parindent\zeropoint @@ -227,7 +230,7 @@ \gdef\showligatures[#1]% {\ifx\starttabulate\undefined - \blank{\tttf \type {\showligatures} is only available in thr english interface}\blank + \@@onlyenglish\showligatures \else \bgroup \setupcolors[\c!state=\v!local]% @@ -247,7 +250,7 @@ \gdef\doshowfontstrip[#1]% {\ifx\starttabulate\undefined - \blank{\tttf \type {\showfontstrip} is only available in thr english interface}\blank + \@@onlyenglish\showfontstrip \else \bgroup \def\dofontstripa##1##2% @@ -303,7 +306,7 @@ \gdef\showminimalbaseline {\ifx\starttabulate\undefined - \blank{\tttf \type {\showminimalbaseline} is only available in thr english interface}\blank + \@@onlyenglish\showminimalbaseline \else \starttabulate[||T|T|T|T|T|T|T|T|T|] \testminimalbaseline{\hbox to 1em{\hss\showstruts\strut\hss}}% diff --git a/tex/context/base/font-uni.tex b/tex/context/base/font-uni.tex index 09fcf22ea..942c61ae4 100644 --- a/tex/context/base/font-uni.tex +++ b/tex/context/base/font-uni.tex @@ -421,12 +421,12 @@ %D \starttyping %D \defineunicodefont %D [SimChi] [SimplifiedChinese] -%D [ \c!scale=0.85, -%D \c!height=1.25, -%D \c!depth=1.00, -%D \c!interlinespaceinterlinie=yes, +%D [\c!scale=0.85, +%D \c!height=1.25, +%D \c!depth=1.00, +%D \c!interlinespaceinterlinie=yes, %D \c!conversion=\chinesenumber, -%D \c!command=\handlechineseunicodeglyph] +%D \c!command=\handlechineseunicodeglyph] %D \stoptyping %D %D Together with: @@ -502,7 +502,8 @@ \def\unicodedepth {\getvalue{\??uc#1\c!depth}}% \def\unicodedigits {\getvalue{\??uc#1\c!conversion}}% \def\handleunicodeglyph {\getvalue{\??uc#1\c!command}}% - \enableregime[unicode]% the following \relax's are realy needed + \doifnot\currentregime{utf}{\enableregime[unicode]}% + % the following \relax's are realy needed \doifvalue{\??uc#1\c!interlinespace}\v!yes\setupinterlinespace\relax \getvalue{\??uc#1\c!commands}\relax} diff --git a/tex/context/base/lang-chi.tex b/tex/context/base/lang-chi.tex index b6c3ba20a..a9c36e80a 100644 --- a/tex/context/base/lang-chi.tex +++ b/tex/context/base/lang-chi.tex @@ -95,6 +95,53 @@ \def\cnencoding{\enableencoding[\chineseencoding]} % ugly and temporary +\startencoding[uni-c] + \definecommand cnleftsentence {\uchar{32}{20}\uchar{32}{20}} + \definecommand cnrightsentence {\uchar{32}{20}\uchar{32}{20}} + \definecommand cnleftsubsentence {\uchar{32}{20}\uchar{32}{20}} + \definecommand cnrightsubsentence {\uchar{32}{20}\uchar{32}{20}} + \definecommand cnupperleftsinglequote {\uchar{32}{24}} + \definecommand cnupperrightsinglequote {\uchar{32}{25}} + \definecommand cnupperleftdoublequote {\uchar{32}{28}} + \definecommand cnupperrightdoublequote {\uchar{32}{29}} + \definecommand cnupperleftsinglequote-v {\uchar{48}{12}} + \definecommand cnupperrightsinglequote-v {\uchar{48}{13}} + \definecommand cnupperleftdoublequote-v {\uchar{48}{14}} + \definecommand cnupperrightdoublequote-v {\uchar{48}{15}} + \definecommand cnencodedcontents {\uchar{118}{238}\uchar{95}{85}} + \definecommand cnencodedtables {\uchar{136}{104}\uchar{104}{60}} + \definecommand cnencodedfigures {\uchar{86}{254}\uchar{95}{98}} + \definecommand cnencodedindex {\uchar{125}{34}\uchar{95}{21}} + \definecommand cnencodedabbreviations {\uchar{127}{41}\uchar{117}{101}\uchar{139}{237}} + \definecommand cnencodedlogos {\uchar{95}{189}\uchar{141}{44}} + \definecommand cnencodedunits {\uchar{139}{161}\uchar{145}{207}\uchar{83}{85}\uchar{79}{77}} + \definecommand cnencodedtable {\uchar{136}{104}} + \definecommand cnencodedfigure {\uchar{86}{254}} + \definecommand cnencodedintro {\uchar{123}{44}} + \definecommand cnencodedpart {\uchar{144}{232}\uchar{82}{6}} + \definecommand cnencodedchapter {\uchar{122}{224}} + \definecommand cnencodedsection {\uchar{130}{130}} + \definecommand cnencodedjanuary {\uchar{78}{0}\uchar{103}{8}} + \definecommand cnencodedfebrary {\uchar{78}{140}\uchar{103}{8}} + \definecommand cnencodedmarch {\uchar{78}{9}\uchar{103}{8}} + \definecommand cnencodedapril {\uchar{86}{219}\uchar{103}{8}} + \definecommand cnencodedmay {\uchar{78}{148}\uchar{103}{8}} + \definecommand cnencodedjune {\uchar{81}{109}\uchar{103}{8}} + \definecommand cnencodedjuly {\uchar{78}{3}\uchar{103}{8}} + \definecommand cnencodedaugust {\uchar{81}{107}\uchar{103}{8}} + \definecommand cnencodedseptember {\uchar{78}{93}\uchar{103}{8}} + \definecommand cnencodedoctober {\uchar{83}{65}\uchar{103}{8}} + \definecommand cnencodednovember {\uchar{83}{65}\uchar{78}{0}\uchar{103}{8}} + \definecommand cnencodeddecember {\uchar{83}{65}\uchar{78}{140}\uchar{103}{8}} + \definecommand cnencodedsunday {\uchar{102}{31}\uchar{103}{31}\uchar{101}{229}} + \definecommand cnencodedmonday {\uchar{102}{31}\uchar{103}{31}\uchar{78}{0}} + \definecommand cnencodedtuesday {\uchar{102}{31}\uchar{103}{31}\uchar{78}{140}} + \definecommand cnencodedwednesday {\uchar{102}{31}\uchar{103}{31}\uchar{78}{9}} + \definecommand cnencodedthursday {\uchar{102}{31}\uchar{103}{31}\uchar{86}{219}} + \definecommand cnencodedfriday {\uchar{102}{31}\uchar{103}{31}\uchar{78}{148}} + \definecommand cnencodedsaturday {\uchar{102}{31}\uchar{103}{31}\uchar{81}{109}} +\stopencoding + \startencoding[gbk] \definecommand cnleftsentence {\uchar{161}{170}\uchar{161}{170}} \definecommand cnrightsentence {\uchar{161}{170}\uchar{161}{170}} diff --git a/tex/context/base/lang-ger.tex b/tex/context/base/lang-ger.tex index 919748c69..bda1e392c 100644 --- a/tex/context/base/lang-ger.tex +++ b/tex/context/base/lang-ger.tex @@ -406,12 +406,14 @@ \setuplabeltext [\s!af] [\v!graphic=Grafiek ] \setuplabeltext [\s!no] [\v!graphic=Grafikk ] -\setuplabeltext [\s!en] [\v!chapter=] +%D We don't set these here. One can do that in a style. + +\setuplabeltext [\s!en] [\v!chapter=] % Chapter \setuplabeltext [\s!nl] [\v!chapter=] -\setuplabeltext [\s!de] [\v!chapter=] +\setuplabeltext [\s!de] [\v!chapter=] % Kapitel \setuplabeltext [\s!da] [\v!chapter=] \setuplabeltext [\s!sv] [\v!chapter=] -\setuplabeltext [\s!af] [\v!chapter=] % [\v!chapter=hoofstuk] +\setuplabeltext [\s!af] [\v!chapter=] % Hoofstuk \setuplabeltext [\s!no] [\v!chapter=] \setuplabeltext [\s!en] [\v!section=] @@ -419,7 +421,7 @@ \setuplabeltext [\s!de] [\v!section=] \setuplabeltext [\s!da] [\v!section=] \setuplabeltext [\s!sv] [\v!section=] -\setuplabeltext [\s!af] [\v!section=] % [\v!section=paragraaf] +\setuplabeltext [\s!af] [\v!section=] % Paragraaf \setuplabeltext [\s!no] [\v!section=] \setuplabeltext [\s!en] [\v!subsection=] @@ -446,12 +448,12 @@ \setuplabeltext [\s!af] [\v!subsubsubsection=] \setuplabeltext [\s!no] [\v!subsubsubsection=] -\setuplabeltext [\s!en] [\v!appendix=] +\setuplabeltext [\s!en] [\v!appendix=] % Appendix \setuplabeltext [\s!nl] [\v!appendix=] -\setuplabeltext [\s!de] [\v!appendix=] -\setuplabeltext [\s!da] [\v!appendix=] % [\v!appendix=bilag] +\setuplabeltext [\s!de] [\v!appendix=] % Anhang +\setuplabeltext [\s!da] [\v!appendix=] % Bilag \setuplabeltext [\s!sv] [\v!appendix=] -\setuplabeltext [\s!af] [\v!appendix=] % [\v!appendix=bylae] +\setuplabeltext [\s!af] [\v!appendix=] % Bylae \setuplabeltext [\s!no] [\v!appendix=] \setuplabeltext [\s!en] [\v!part=Part ] diff --git a/tex/context/base/lang-sla.tex b/tex/context/base/lang-sla.tex index 428796e8a..ee990dab0 100644 --- a/tex/context/base/lang-sla.tex +++ b/tex/context/base/lang-sla.tex @@ -24,6 +24,7 @@ %D \NC Polish \NC Grzegorz Sapijaszko \NC \NR %D \NC Croatian \NC \Zcaron eljko Vrba \NC \NR %D \NC Slovenian \NC Mojca Miklavec \NC \NR +%D \NC Cz and Sk \NC Richard Gabriel \NC \NR %D \stoptabulate % Belarussian, Russian, Ukrainian, Bulgarian, Macedonian, @@ -258,14 +259,14 @@ \setupheadtext [\s!sl] [\v!figures=Slike] \setupheadtext [\s!pl] [\v!graphics=Grafika] -\setupheadtext [\s!cz] [\v!graphics=Grafika] % new -\setupheadtext [\s!sk] [\v!graphics=...] +\setupheadtext [\s!cz] [\v!graphics=Graf] +\setupheadtext [\s!sk] [\v!graphics=Graf] \setupheadtext [\s!hr] [\v!graphics=Slike] \setupheadtext [\s!sl] [\v!graphics=Slike] \setupheadtext [\s!pl] [\v!intermezzi=Intermezza] \setupheadtext [\s!cz] [\v!intermezzi=Intermezza] -\setupheadtext [\s!sk] [\v!intermezzi=...] +\setupheadtext [\s!sk] [\v!intermezzi=Intermezz\aacute] \setupheadtext [\s!hr] [\v!intermezzi=Intermezza] \setupheadtext [\s!sl] [\v!intermezzi=Intermezzi] @@ -276,20 +277,20 @@ \setupheadtext [\s!sl] [\v!index=Kazalo] \setupheadtext [\s!pl] [\v!abbreviations=Skr\oacute cenie] -\setupheadtext [\s!cz] [\v!abbreviations=Zkratky] % new -\setupheadtext [\s!sk] [\v!abbreviations=...] +\setupheadtext [\s!cz] [\v!abbreviations=Zkratky] +\setupheadtext [\s!sk] [\v!abbreviations=Skratky] \setupheadtext [\s!hr] [\v!abbreviations=Kratice] \setupheadtext [\s!sl] [\v!abbreviations=Kratice] \setupheadtext [\s!pl] [\v!logos=Znaki] -\setupheadtext [\s!cz] [\v!logos=Loga] % new -\setupheadtext [\s!sk] [\v!logos=...] +\setupheadtext [\s!cz] [\v!logos=Loga] +\setupheadtext [\s!sk] [\v!logos=Log\aacute] \setupheadtext [\s!hr] [\v!logos=Znakovi] \setupheadtext [\s!sl] [\v!logos=Logotipi] \setupheadtext [\s!pl] [\v!units=Jednostki] -\setupheadtext [\s!cz] [\v!units=Jednotky] % new -\setupheadtext [\s!sk] [\v!units=...] +\setupheadtext [\s!cz] [\v!units=Jednotky] +\setupheadtext [\s!sk] [\v!units=Jednotky] \setupheadtext [\s!hr] [\v!units=Jednostki] \setupheadtext [\s!sl] [\v!units=Enote] @@ -301,19 +302,19 @@ \setuplabeltext [\s!pl] [\v!figure=Ilustracja ] \setuplabeltext [\s!cz] [\v!figure=Obr\aacute zek ] -\setuplabeltext [\s!sk] [\v!figure=... ] +\setuplabeltext [\s!sk] [\v!figure=Obr\aacute zok ] \setuplabeltext [\s!hr] [\v!figure=Slika ] \setuplabeltext [\s!sl] [\v!figure=Slika ] \setuplabeltext [\s!pl] [\v!intermezzo=Intermezzo ] \setuplabeltext [\s!cz] [\v!intermezzo=Intermezzo ] -\setuplabeltext [\s!sk] [\v!intermezzo=... ] +\setuplabeltext [\s!sk] [\v!intermezzo=Intermezzo ] \setuplabeltext [\s!hr] [\v!intermezzo=Intermezzo ] \setuplabeltext [\s!sl] [\v!intermezzo=Intermezzo ] \setuplabeltext [\s!pl] [\v!graphic=Grafika ] -\setuplabeltext [\s!cz] [\v!graphic=... ] -\setuplabeltext [\s!sk] [\v!graphic=... ] +\setuplabeltext [\s!cz] [\v!graphic=Graf ] +\setuplabeltext [\s!sk] [\v!graphic=Graf ] \setuplabeltext [\s!hr] [\v!graphic=Slika ] \setuplabeltext [\s!sl] [\v!graphic=Slika ] @@ -324,32 +325,32 @@ \setuplabeltext [\s!sl] [\v!chapter=] % Poglavje \setuplabeltext [\s!pl] [\v!section=] % Podrozdzia\l -\setuplabeltext [\s!cz] [\v!section=] % Sekce % new -\setuplabeltext [\s!sk] [\v!section=] +\setuplabeltext [\s!cz] [\v!section=] % Sekce +\setuplabeltext [\s!sk] [\v!section=] % Sekcia \setuplabeltext [\s!hr] [\v!section=] % Podrozdzia\l \setuplabeltext [\s!sl] [\v!section=] \setuplabeltext [\s!pl] [\v!subsection=] -\setuplabeltext [\s!cz] [\v!subsection=] % Podsekce % new -\setuplabeltext [\s!sk] [\v!subsection=] +\setuplabeltext [\s!cz] [\v!subsection=] % Podsekce +\setuplabeltext [\s!sk] [\v!subsection=] % Podsekcia \setuplabeltext [\s!hr] [\v!subsection=] \setuplabeltext [\s!sl] [\v!subsection=] \setuplabeltext [\s!pl] [\v!subsubsection=] -\setuplabeltext [\s!cz] [\v!subsubsection=] % Podpodsekce % new -\setuplabeltext [\s!sk] [\v!subsubsection=] +\setuplabeltext [\s!cz] [\v!subsubsection=] % Podpodsekce +\setuplabeltext [\s!sk] [\v!subsubsection=] % Podpodsekcia \setuplabeltext [\s!hr] [\v!subsubsection=] \setuplabeltext [\s!sl] [\v!subsubsection=] \setuplabeltext [\s!pl] [\v!subsubsubsection=] -\setuplabeltext [\s!cz] [\v!subsubsubsection=] % Podpodpodsekce % new -\setuplabeltext [\s!sk] [\v!subsubsubsection=] +\setuplabeltext [\s!cz] [\v!subsubsubsection=] % Podpodpodsekce +\setuplabeltext [\s!sk] [\v!subsubsubsection=] % Podpodpodsekcia \setuplabeltext [\s!hr] [\v!subsubsubsection=] \setuplabeltext [\s!sl] [\v!subsubsubsection=] \setuplabeltext [\s!pl] [\v!appendix=] % Dodatek -\setuplabeltext [\s!cz] [\v!appendix=P\rcaron\iacute loha] % new -\setuplabeltext [\s!sk] [\v!appendix=] +\setuplabeltext [\s!cz] [\v!appendix=P\rcaron\iacute loha] +\setuplabeltext [\s!sk] [\v!appendix=Pr\iacute loha] \setuplabeltext [\s!hr] [\v!appendix=Dodatak ] \setuplabeltext [\s!sl] [\v!appendix=Dodatek ] @@ -360,14 +361,14 @@ \setuplabeltext [\s!sl] [\v!part=Del ] \setuplabeltext [\s!pl] [\v!line=wiersz ] -\setuplabeltext [\s!cz] [\v!line=\rcaron\aacute dek] % new -\setuplabeltext [\s!sk] [\v!line=... ] +\setuplabeltext [\s!cz] [\v!line=\rcaron\aacute dek] +\setuplabeltext [\s!sk] [\v!line=riadok ] \setuplabeltext [\s!hr] [\v!line=red ] \setuplabeltext [\s!sl] [\v!line=vrstica ] \setuplabeltext [\s!pl] [\v!lines=wiersze ] -\setuplabeltext [\s!cz] [\v!lines=\rcaron\aacute dky] % new -\setuplabeltext [\s!sk] [\v!lines=... ] +\setuplabeltext [\s!cz] [\v!lines=\rcaron\aacute dky] +\setuplabeltext [\s!sk] [\v!lines=riadky ] \setuplabeltext [\s!hr] [\v!lines=redovi ] \setuplabeltext [\s!sl] [\v!lines=vrstice ] @@ -492,7 +493,7 @@ \setuplabeltext [\s!sl] [\v!see=glej ] % new -\setuplabeltext [\s!cz] [\v!page=strna ] +\setuplabeltext [\s!cz] [\v!page=strana ] \setuplabeltext [\s!cz] [\v!atpage=na stran\ecaron\ ] \setuplabeltext [\s!cz] [\v!hencefore=viz v\yacute\scaron e ] \setuplabeltext [\s!cz] [\v!hereafter=viz n\iacute\zcaron e ] diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex index 799d441ad..0ccb60616 100644 --- a/tex/context/base/meta-ini.tex +++ b/tex/context/base/meta-ini.tex @@ -815,7 +815,10 @@ %D However, on a 1 Gig Pentium, the next alternative saves %D us 20 seconds run time for the 300 page \METAFUN\ manual: -\def\insertMPfile#1#2{\doinsertMPfile{#1}} +\let\insertMPfileARG\insertMPfile + +\def\insertMPfile#1#2% in context #2 is empty + {\doifelsenothing{#2}{\doinsertMPfile{#1}}{\insertMPfileARG{#1}{#2}}} \def\includeMPasEPS#1% {\bgroup diff --git a/tex/context/base/mult-com.tex b/tex/context/base/mult-com.tex index d5fe1f47a..842b3cafe 100644 --- a/tex/context/base/mult-com.tex +++ b/tex/context/base/mult-com.tex @@ -2049,9 +2049,12 @@ startcolumnmakeup: startkolomopmaak startcolumnmakeup stopcolumnmakeup stopcolumnmakeup stopcolumnmakeup stopcolumnmakeup - usetypescript: gebruiktypescript usetypescript - usetypescript usetypescript - usetypescript usetypescript + usetypescript: gebruiktypescript usetypescript + usetypescript usetypescript + usetypescript usetypescript +usetypescriptfile: gebruiktypescriptfile usetypescriptfile + usetypescriptfile usetypescriptfile + usetypescriptfile usetypescriptfile \stopcommands diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex index 7348bc3e9..53508c297 100644 --- a/tex/context/base/mult-con.tex +++ b/tex/context/base/mult-con.tex @@ -1597,6 +1597,9 @@ textlayer: tekstlaag textlayer width: breedte width breite sirka ampiezza latime + minwidth: minbreedte minwidth + minbreite minsirka + ampiezzamin latimeminima % TB TH outer: buiten outer aussen vnejsi esterno extern @@ -1738,6 +1741,9 @@ textlayer: tekstlaag textlayer height: hoogte height hoehe vyska altezza inaltime + minheight: minhoogte minheight + minhoehe minvyska + altezzamin inaltimeminima horizontal: horizontaal horizontal horizontal horizontalne orizzontale orizontal diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex index 97b0e3f14..33d19c605 100644 --- a/tex/context/base/page-flt.tex +++ b/tex/context/base/page-flt.tex @@ -866,7 +866,7 @@ \setbox0\vbox{\strut\blank[\@@bkspacebefore]\strut}% \setbox2\vbox{\strut\blank[\@@bkspaceafter ]\strut}% \ifdim\ht0>\ht2 - \blank[-\@@bkspaceafter,\@@bkspacebefore] + \blank[-\@@bkspaceafter,\@@bkspacebefore]% \fi \egroup} @@ -2100,7 +2100,7 @@ \let\floatrow\empty \edef\floatmethod{#2}}% \doifundefined{\string\floatmethod\floatmethod} - {\let\floatmethod\v!here}% + {\let\floatmethod\v!here}% \getvalue{\string\floatmethod\floatmethod}[#1]% \fi} diff --git a/tex/context/base/regi-uni.tex b/tex/context/base/regi-uni.tex index 2b749967f..4d694383a 100644 --- a/tex/context/base/regi-uni.tex +++ b/tex/context/base/regi-uni.tex @@ -2,17 +2,17 @@ %D [ file=enco-uni, %D version=1998.10.18, %D title=\CONTEXT\ Encoding Macros, -%D subtitle=Unicode, +%D subtitle=Unicode, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %C %C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. -%D This module activates all characters in the upper range -%D and sets them to the basic unicodehandler. +%D This module activates all characters in the upper range +%D and sets them to the basic unicodehandler. \startregime[unicode] @@ -20,4 +20,4 @@ \stopregime -\endinput +\endinput diff --git a/tex/context/base/s-chi-00.tex b/tex/context/base/s-chi-00.tex index 7438f4d5c..956f362b7 100644 --- a/tex/context/base/s-chi-00.tex +++ b/tex/context/base/s-chi-00.tex @@ -14,7 +14,7 @@ \mainlanguage[cn] -\setupbodyfont[chi] +\setupbodyfont[chi] % loads font-chi \unprotect @@ -50,4 +50,27 @@ \setuptyping[\c!tab=\v!no] +%D This module (and font support) adapts to the \UTF\ regime, but you +%D need to enable \UTF\ first! +%D +%D \starttyping +%D \enableregime[utf] \usemodule[chi-00] +%D +%D \starttext +%D +%D 兡也包因沘氓侷柵苗孫孫財 +%D 崧淫設弼琶跑愍窟榜蒸奭稽 +%D 霄瓢館縲擻鼕孃魔釁佉沎岠 +%D 狋垚柛胅娭涘罞偟惈牻荺傒 +%D 焱菏酡廅滘絺赩塴榗箂踃嬁 +%D 澕蓴醊獧螗餟燱螬駸礑鎞瀧 +%D 鄿瀯騬醹躕鱕 +%D +%D \blank +%D +%D Wang Lei is written as: 王磊 +%D +%D \stoptext +%D \stoptyping + \protect \endinput diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex index cd0c48150..b89ba295c 100644 --- a/tex/context/base/supp-fil.tex +++ b/tex/context/base/supp-fil.tex @@ -591,6 +591,8 @@ %D regards to active characters (german ", polish /, %D french : and ;). +%D We need to redo this: catcode sets and such + \def\startreadingfile% beter een every en \setnormalcatcodes {\doglobal\increment\readingfilelevel \setxvalue{\string\readingfilelevel::\readingfilelevel}% diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex index 5f0700deb..89c5f7ea8 100644 --- a/tex/context/base/supp-fun.tex +++ b/tex/context/base/supp-fun.tex @@ -135,8 +135,9 @@ {\convertargument #7\to\asciia \convertcommand \DroppedString\to\asciib \ExpandBothAfter\doifinstringelse\asciia\asciib - {\dontleavehmode - \ifhmode\hskip-\parindent\fi + {\noindenting + \dontleavehmode + %\ifhmode\hskip-\parindent\fi % sensitive for context mechanism \keeplinestogether{#6}% \setbox0\hbox{\definedfont[#2 at #3]#1{#7}\hskip#4}% \ifdim\dp0>\strutdp % one of those Q's , will be option diff --git a/tex/context/base/supp-mps.tex b/tex/context/base/supp-mps.tex index 23e6ccc89..97bd09a89 100644 --- a/tex/context/base/supp-mps.tex +++ b/tex/context/base/supp-mps.tex @@ -1640,7 +1640,7 @@ \def\getMPdrawing {\ifMPdrawingdone \expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic - \loadcurrentMPgraphic\empty + \loadcurrentMPgraphic{}% \deallocateMPslot\currentMPgraphic \placeMPgraphic \fi} diff --git a/tex/context/base/syst-new.tex b/tex/context/base/syst-new.tex index b46b319d7..6112b6f6f 100644 --- a/tex/context/base/syst-new.tex +++ b/tex/context/base/syst-new.tex @@ -857,11 +857,26 @@ \endETEX +\beginTEX + \def\uncompresslist[#1]% {\def\uncompressedlist{#1}} -\beginTEX - \endTEX +%D \macros +%D {ignoreimplicitspaces} +%D +%D \startbuffer +%D \def\whatever[#1]{\expanded{\definedfont[#1 at 12pt]}\ignorespaces} +%D {a\whatever[Serif]b a\whatever[Serif] b a\whatever[Serif]\space b} +%D \def\whatever[#1]{\expanded{\definedfont[#1 at 12pt]}\ignoreimplicitspaces} +%D {a\whatever[Serif]b a\whatever[Serif] b a\whatever[Serif]\space b} +%D \stopbuffer +%D +%D \typebuffer \getbuffer + +\def\ignoreimplicitspaces + {\doifnextcharelse\relax\relax\relax} + \protect \endinput diff --git a/tex/context/base/type-buy.tex b/tex/context/base/type-buy.tex index 53a178d6e..92b32e0a1 100644 --- a/tex/context/base/type-buy.tex +++ b/tex/context/base/type-buy.tex @@ -887,7 +887,6 @@ \stoptypescript - \stoptypescriptcollection \endinput diff --git a/tex/context/base/type-exa.tex b/tex/context/base/type-exa.tex index 71da7f0ad..c7c17585d 100644 --- a/tex/context/base/type-exa.tex +++ b/tex/context/base/type-exa.tex @@ -168,40 +168,7 @@ \stoptypescript -% \starttypescript [serif] [hanging] [pure,normal] -% -% \setupfontsynonym [Serif] [handling=\typescriptthree] -% \setupfontsynonym [SerifBold] [handling=\typescriptthree bold] -% \setupfontsynonym [SerifSlanted] [handling=\typescriptthree slanted] -% \setupfontsynonym [SerifItalic] [handling=\typescriptthree italic] -% \setupfontsynonym [SerifBoldSlanted] [handling=\typescriptthree boldslanted] -% \setupfontsynonym [SerifBoldItalic] [handling=\typescriptthree bolditalic] -% -% \stoptypescript -% -% \starttypescript [sans] [hanging] [pure,normal] -% -% \setupfontsynonym [Sans] [handling=\typescriptthree] -% \setupfontsynonym [SansBold] [handling=\typescriptthree bold] -% \setupfontsynonym [SansSlanted] [handling=\typescriptthree slanted] -% \setupfontsynonym [SansItalic] [handling=\typescriptthree italic] -% \setupfontsynonym [SansBoldSlanted] [handling=\typescriptthree boldslanted] -% \setupfontsynonym [SansBoldItalic] [handling=\typescriptthree bolditalic] -% -% \stoptypescript -% -% \starttypescript [mono] [hanging] [pure,normal] -% -% \setupfontsynonym [Mono] [handling=\typescriptthree] -% \setupfontsynonym [MonoBold] [handling=\typescriptthree bold] -% \setupfontsynonym [MonoSlanted] [handling=\typescriptthree slanted] -% \setupfontsynonym [MonoItalic] [handling=\typescriptthree italic] -% \setupfontsynonym [MonoBoldSlanted] [handling=\typescriptthree boldslanted] -% \setupfontsynonym [MonoBoldItalic] [handling=\typescriptthree bolditalic] -% -% \stoptypescript - -\starttypescript [serif,sans,mono] [handling,hanging,hz] [pure,normal,hz,quality] +\starttypescript [serif,sans,mono] [handling,hanging] [pure,normal] \setupfontsynonym [\typescriptprefix\typescriptone ] [handling=\typescriptthree] \setupfontsynonym [\typescriptprefix\typescriptone Bold] [handling=\typescriptthree bold] @@ -212,6 +179,18 @@ \stoptypescript +\starttypescript [serif,sans,mono] [handling,hz] [hz,quality,highquality] + + \setupfontsynonym [\typescriptprefix\typescriptone ] [handling=\typescriptthree] + \setupfontsynonym [\typescriptprefix\typescriptone Bold] [handling=\typescriptthree] + \setupfontsynonym [\typescriptprefix\typescriptone Slanted] [handling=\typescriptthree] + \setupfontsynonym [\typescriptprefix\typescriptone Italic] [handling=\typescriptthree] + \setupfontsynonym [\typescriptprefix\typescriptone BoldSlanted] [handling=\typescriptthree] + \setupfontsynonym [\typescriptprefix\typescriptone BoldItalic] [handling=\typescriptthree] + +\stoptypescript + + \starttypescript [serif,sans,mono] [handling] [noligs] \setupfontsynonym [\typescriptprefix\typescriptone ] [handling=\typescriptthree] diff --git a/tex/context/base/type-ghz.tex b/tex/context/base/type-ghz.tex index 23f71d583..318e6d596 100644 --- a/tex/context/base/type-ghz.tex +++ b/tex/context/base/type-ghz.tex @@ -1,8 +1,27 @@ -% run texfont from currentpath with the fonts on subpath fontsite/500 - -% texfont --en=texnansi --ve=linotype --co=optima type-ghz.dat -% texfont --en=texnansi --ve=linotype --co=optima-nova type-ghz.dat -% texfont --en=texnansi --ve=linotype --co=palatino type-ghz.dat +%D \module +%D [ file=type-ghz, +%D version=2005.06.07, +%D title=\CONTEXT\ Typescript Macros, +%D subtitle=Hermann Zapf's Fonts, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% \usetypescriptfile[type-ghz] +% +% \definetypeface[optima] [ss][sans] [optima-nova] [default] +% \definetypeface[palatino][rm][serif][palatino-nova][default] +% \definetypeface[aldus] [rm][serif][aldus-nova] [default] +% +% \starttext +% \setupbodyfont[optima] \input zapf \blank +% \setupbodyfont[palatino] \input zapf \blank +% \setupbodyfont[aldus] \input zapf \blank +% \stoptext \starttypescriptcollection[zapf collection] @@ -66,28 +85,131 @@ % optima nova +% see antykwa, we could define variants for light and osf + +\starttypescript[optima-nova][texnansi,ec] % will change to more narrow tt + \definetypeface[optima][ss][sans][optima-nova] [default][encoding=\typescripttwo] + \definetypeface[optima][rm][sans][optima-nova] [default][encoding=\typescripttwo] + \definetypeface[optima][tt][mono][latin-modern][default][encoding=\typescripttwo,rscale=1.125] + \definetypeface[optima][mm][mono][latin-modern][default][encoding=\typescripttwo,rscale=1.125] + \quittypescriptscanning +\stoptypescript + \starttypescript [sans] [optima-nova] [name] \definefontsynonym [Sans] [OptimaNovaLT-Regular] \definefontsynonym [SansItalic] [OptimaNovaLT-Italic] - \definefontsynonym [SansBold] [OptimaLT-Bold] - \definefontsynonym [SansBoldItalic] [OptimaLT-BoldItalic] - \definefontsynonym [SansSlanted] [SansItalic] - \definefontsynonym [SansBoldSlanted] [SansBoldItalic] - \definefontsynonym [SansCaps] [Sans] + \definefontsynonym [SansBold] [OptimaNovaLT-Bold] + \definefontsynonym [SansBoldItalic] [OptimaNovaLT-BoldItalic] + \definefontsynonym [SansSlanted] [OptimaNovaLT-Italic] + \definefontsynonym [SansBoldSlanted] [OptimaNovaLT-BoldItalic] + \definefontsynonym [SansCaps] [OptimaNovaLT-RegularSC] + + \definefontvariant [Serif][osf][OsF] + \definefontvariant [Serif][sc][Caps] + + \definefontsynonym [SansOsF] [OptimaNovaLT-RegularOsF] + \definefontsynonym [SansItalicOsF] [OptimaNovaLT-ItalicOsF] + \definefontsynonym [SansBoldOsF] [OptimaNovaLT-BoldOsF] + \definefontsynonym [SansBoldItalicOsF] [OptimaNovaLT-BoldItalicOsF] + \definefontsynonym [SansSlantedOsF] [OptimaNovaLT-ItalicOsF] + \definefontsynonym [SansBoldSlantedOsF] [OptimaNovaLT-BoldItalicOsF] + \definefontsynonym [SansCapsOsF] [OptimaNovaLT-RegularSC] + + \definefontsynonym [SansCaps] [OptimaNovaLT-RegularSC] + \definefontsynonym [SansItalicCaps] [OptimaNovaLT-ItalicSC ] + \definefontsynonym [SansBoldCaps] [OptimaNovaLT-BoldSC] + \definefontsynonym [SansBoldItalicCaps] [OptimaNovaLT-BoldItalicSC] + \definefontsynonym [SansSlantedCaps] [OptimaNovaLT-ItalicSC] + \definefontsynonym [SansBoldSlantedCaps] [OptimaNovaLT-BoldItalicSC] + \definefontsynonym [SansCapsCaps] [OptimaNovaLT-RegularSC] + +\stoptypescript + +\starttypescript [sans] [optima-nova-os] [name] + + \definefontsynonym [Sans] [OptimaNovaLT-RegularOsF] + \definefontsynonym [SansItalic] [OptimaNovaLT-ItalicOsF] + \definefontsynonym [SansBold] [OptimaNovaLT-BoldOsF] + \definefontsynonym [SansBoldItalic] [OptimaNovaLT-BoldItalicOsF] + \definefontsynonym [SansSlanted] [OptimaNovaLT-ItalicOsF] + \definefontsynonym [SansBoldSlanted] [OptimaNovaLT-BoldItalicOsF] + \definefontsynonym [SansCaps] [OptimaNovaLT-RegularSC] + +\stoptypescript + +\starttypescript [sans] [optima-nova-light] [name] % may change + + \definefontsynonym [Sans] [OptimaNovaLT-Light] + \definefontsynonym [SansItalic] [OptimaNovaLT-LightItalic] + \definefontsynonym [SansBold] [OptimaNovaLT-Medium] + \definefontsynonym [SansBoldItalic] [OptimaNovaLT-MediumItalic] + \definefontsynonym [SansSlanted] [OptimaNovaLT-LightItalic] + \definefontsynonym [SansBoldSlanted] [OptimaNovaLT-MediumItalic] + \definefontsynonym [SansCaps] [OptimaNovaLT-LightSC] + +\stoptypescript + +\starttypescript [sans] [optima-nova-medium] [name] % may change + + \definefontsynonym [Sans] [OptimaNovaLT-Medium] + \definefontsynonym [SansItalic] [OptimaNovaLT-MediumItalic] + \definefontsynonym [SansBold] [OptimaNovaLT-Heavy] + \definefontsynonym [SansBoldItalic] [OptimaNovaLT-HeavyItalic] + \definefontsynonym [SansSlanted] [OptimaNovaLT-MediumItalic] + \definefontsynonym [SansBoldSlanted] [OptimaNovaLT-HeavyItalic] + \definefontsynonym [SansCaps] [OptimaNovaLT-MediumSC] \stoptypescript -\starttypescript [sans] [optima-nova] [texnansi,ec,8r] +\starttypescript [sans] [optima-nova,optima-nova-light,optima-nova-medium,optima-nova-os] [texnansi,ec,8r] \loadmapfile[\typescriptthree-linotype-optima-nova.map] - \definefontsynonym [OptimaNovaLT-Regular] [\typescriptthree-lt55483] [encoding=\typescriptthree] - \definefontsynonym [OptimaNovaLT-Italic] [\typescriptthree-lt55486] [encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Light] [\typescriptthree-lt55476][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightSC] [\typescriptthree-lt55477][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightOsF] [\typescriptthree-lt55478][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightItalic] [\typescriptthree-lt55479][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightItalicSC] [\typescriptthree-lt55480][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightItalicOsF] [\typescriptthree-lt55481][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-LightCond] [\typescriptthree-lt55482][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Regular] [\typescriptthree-lt55483][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-RegularSC] [\typescriptthree-lt55484][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-RegularOsF] [\typescriptthree-lt55485][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Italic] [\typescriptthree-lt55486][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-ItalicSC] [\typescriptthree-lt55487][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-ItalicOsF] [\typescriptthree-lt55488][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Condensed] [\typescriptthree-lt55489][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Medium] [\typescriptthree-lt55490][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumSC] [\typescriptthree-lt55491][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumOsF] [\typescriptthree-lt55492][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumItalic] [\typescriptthree-lt55493][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumItalicSC] [\typescriptthree-lt55494][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumItalicOsF][\typescriptthree-lt55495][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-MediumCond] [\typescriptthree-lt55496][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-TitlingInitials][\typescriptthree-lt55497][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Demi] [\typescriptthree-lt55498][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiSC] [\typescriptthree-lt55499][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiOsF] [\typescriptthree-lt55500][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiItalic] [\typescriptthree-lt55501][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiItalicSC] [\typescriptthree-lt55502][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiItalicOsF] [\typescriptthree-lt55503][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-DemiCond] [\typescriptthree-lt55504][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Bold] [\typescriptthree-lt55505][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldSC] [\typescriptthree-lt55506][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldOsF] [\typescriptthree-lt55507][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldItalic] [\typescriptthree-lt55508][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldItalicSC] [\typescriptthree-lt55509][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldItalicOsF] [\typescriptthree-lt55510][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BoldCond] [\typescriptthree-lt55511][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Heavy] [\typescriptthree-lt55512][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-HeavyItalic] [\typescriptthree-lt55513][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-Black] [\typescriptthree-lt55514][encoding=\typescriptthree] + \definefontsynonym[OptimaNovaLT-BlackItalic] [\typescriptthree-lt55515][encoding=\typescriptthree] \stoptypescript -\starttypescript [map] [optima-nova] [texnansi,ec,8r] +\starttypescript [map] [optima-nova,optima-nova-light,optima-nova-medium,optima-nova-os] [texnansi,ec,8r] \loadmapfile[\typescriptthree-linotype-optima-nova.map] \stoptypescript @@ -99,11 +221,10 @@ \definefontsynonym [SerifItalic] [PalatinoLT-Italic] \definefontsynonym [SerifBold] [PalatinoLT-Bold] \definefontsynonym [SerifBoldItalic] [PalatinoLT-BoldItalic] - \definefontsynonym [SerifSlanted] [SerifItalic] \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic] - \definefontsynonym [SerifCaps] [Palatino-SC] + \definefontsynonym [SerifCaps] [PalatinoSC] \stoptypescript @@ -126,7 +247,7 @@ \definefontsynonym[Palatino-BoldOsF] [\typescriptthree-pobos] [encoding=\typescriptthree] \definefontsynonym[Palatino-ItalicOsF] [\typescriptthree-poios] [encoding=\typescriptthree] - \definefontsynonym[Palatino-SC] [\typescriptthree-posc] [encoding=\typescriptthree] + \definefontsynonym[PalatinoSC] [\typescriptthree-posc] [encoding=\typescriptthree] \stoptypescript @@ -134,7 +255,137 @@ \loadmapfile[\typescriptthree-linotype-palatino.map] \stoptypescript -\stoptypescriptcollection +% palatino nova + +\starttypescript [serif] [palatino-nova] [name] + + \definefontsynonym [Serif] [PalatinoNova-Regular] + \definefontsynonym [SerifItalic] [PalatinoNova-Italic] + \definefontsynonym [SerifBold] [PalatinoNova-Bold] + \definefontsynonym [SerifBoldItalic] [PalatinoNova-BoldItalic] + \definefontsynonym [SerifSlanted] [PalatinoNova-Italic] + \definefontsynonym [SerifBoldSlanted] [PalatinoNova-BoldItalic] + \definefontsynonym [SerifCaps] [PalatinoNova-RegularSC] + + \definefontvariant [Serif][sc][Caps] + + \definefontsynonym [SerifCaps] [PalatinoNova-RegularSC] + \definefontsynonym [SerifItalicCaps] [PalatinoNova-ItalicSC] + \definefontsynonym [SerifBoldCaps] [PalatinoNova-BoldSC] + \definefontsynonym [SerifBoldItalicCaps] [PalatinoNova-BoldItalicSC] + \definefontsynonym [SerifSlantedCaps] [PalatinoNova-ItalicSC] + \definefontsynonym [SerifBoldSlantedCaps] [PalatinoNova-BoldItalicSC] + \definefontsynonym [SerifCapsCaps] [PalatinoNova-RegularSC] + +\stoptypescript + +\starttypescript [serif] [palatino-nova-light] [name] % may change + + \definefontsynonym [Serif] [PalatinoNova-Light] + \definefontsynonym [SerifItalic] [PalatinoNova-LightItalic] + \definefontsynonym [SerifBold] [PalatinoNova-Regular] + \definefontsynonym [SerifBoldItalic] [PalatinoNova-Italic] + \definefontsynonym [SerifSlanted] [PalatinoNova-Regular] + \definefontsynonym [SerifBoldSlanted] [PalatinoNova-Italic] + \definefontsynonym [SerifCaps] [PalatinoNova-LightSC] + +\stoptypescript + +\starttypescript [serif] [palatino-nova-medium] [name] % may change + + \definefontsynonym [Serif] [PalatinoNova-Medium] + \definefontsynonym [SerifItalic] [PalatinoNova-MediumItalic] + \definefontsynonym [SerifBold] [PalatinoNova-Bold] + \definefontsynonym [SerifBoldItalic] [PalatinoNova-BoldItalic] + \definefontsynonym [SerifSlanted] [PalatinoNova-Bold] + \definefontsynonym [SerifBoldSlanted] [PalatinoNova-BoldItalic] + \definefontsynonym [SerifCaps] [PalatinoNova-MediumSC] + +\stoptypescript + +\starttypescript [serif] [palatino-nova,palatino-nova-light,palatino-nova-medium] [texnansi,ec,8r] + + \loadmapfile[\typescriptthree-linotype-palatino-nova.map] + + \definefontsynonym[PalatinoNova-Light] [\typescriptthree-PalatinoNova-Light] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-LightItalic] [\typescriptthree-PalatinoNova-LightItalic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Regular] [\typescriptthree-PalatinoNova-Regular] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Italic] [\typescriptthree-PalatinoNova-Italic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Medium] [\typescriptthree-PalatinoNova-Medium] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-MediumItalic][\typescriptthree-PalatinoNova-MediumItalic][encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Bold] [\typescriptthree-PalatinoNova-Bold] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-BoldItalic] [\typescriptthree-PalatinoNova-BoldItalic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Imperial] [\typescriptthree-PalatinoNova-Imperial] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-Titling] [\typescriptthree-PalatinoNova-Titling] [encoding=\typescriptthree] + + \loadmapfile[\typescriptthree-sc-linotype-palatino-nova.map] + + \definefontsynonym[PalatinoNova-LightSC] [\typescriptthree-sc-PalatinoNova-Light] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-LightItalicSC] [\typescriptthree-sc-PalatinoNova-LightItalic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-RegularSC] [\typescriptthree-sc-PalatinoNova-Regular] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-ItalicSC] [\typescriptthree-sc-PalatinoNova-Italic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-MediumSC] [\typescriptthree-sc-PalatinoNova-Medium] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-MediumItalicSC][\typescriptthree-sc-PalatinoNova-MediumItalic][encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-BoldSC] [\typescriptthree-sc-PalatinoNova-Bold] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-BoldItalicSC] [\typescriptthree-sc-PalatinoNova-BoldItalic] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-ImperialSC] [\typescriptthree-sc-PalatinoNova-Imperial] [encoding=\typescriptthree] + \definefontsynonym[PalatinoNova-TitlingSC] [\typescriptthree-sc-PalatinoNova-Titling] [encoding=\typescriptthree] + +\stoptypescript + +\starttypescript [map] [palatino-nova,palatino-nova-light,palatino-nova-medium] [texnansi,ec,8r] + \loadmapfile[\typescriptthree-linotype-palatino-nova.map] + \loadmapfile[\typescriptthree-sc-linotype-palatino-nova.map] +% \loadmapfile[\typescriptthree-os-linotype-palatino-nova.map] +\stoptypescript + +% aldusnova + +\starttypescript [serif] [aldus-nova] [name] + + \definefontsynonym [Serif] [AldusNova-Book] + \definefontsynonym [SerifItalic] [AldusNova-BookItalic] + \definefontsynonym [SerifBold] [AldusNova-Bold] + \definefontsynonym [SerifBoldItalic] [AldusNova-BoldItalic] + \definefontsynonym [SerifSlanted] [AldusNova-BookItalic] + \definefontsynonym [SerifBoldSlanted] [AldusNova-BoldItalic] + \definefontsynonym [SerifCaps] [AldusNova-BookSC] + + \definefontvariant [Serif][sc][Caps] + + \definefontsynonym [SerifCaps] [AldusNova-BookSC] + \definefontsynonym [SerifItalicCaps] [AldusNova-BookItalicSC] + \definefontsynonym [SerifBoldCaps] [AldusNova-BoldSC] + \definefontsynonym [SerifBoldItalicCaps] [AldusNova-BoldItalicSC] + \definefontsynonym [SerifSlantedCaps] [AldusNova-BookItalicSC] + \definefontsynonym [SerifBoldSlantedCaps] [AldusNova-BoldItalicSC] + \definefontsynonym [SerifCapsCaps] [AldusNova-BookSC] + +\stoptypescript + +\starttypescript [serif] [aldus-nova] [texnansi,ec,8r] + + \loadmapfile[\typescriptthree-linotype-aldus-nova.map] + + \definefontsynonym[AldusNova-Book] [\typescriptthree-AldusNova-Book] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-BookItalic] [\typescriptthree-AldusNova-BookItalic] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-Bold] [\typescriptthree-AldusNova-Bold] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-BoldItalic] [\typescriptthree-AldusNova-BoldItalic] [encoding=\typescriptthree] + + \loadmapfile[\typescriptthree-sc-linotype-aldus-nova.map] + + \definefontsynonym[AldusNova-BookSC] [\typescriptthree-sc-AldusNova-Book] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-BookItalicSC] [\typescriptthree-sc-AldusNova-BookItalic] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-BoldSC] [\typescriptthree-sc-AldusNova-Bold] [encoding=\typescriptthree] + \definefontsynonym[AldusNova-BoldItalicSC] [\typescriptthree-sc-AldusNova-BoldItalic] [encoding=\typescriptthree] + +\stoptypescript + +\starttypescript [map] [aldus-nova] [texnansi,ec,8r] + \loadmapfile[\typescriptthree-linotype-aldus-nova.map] + \loadmapfile[\typescriptthree-sc-linotype-aldus-nova.map] +\stoptypescript + % melior @@ -169,5 +420,6 @@ \loadmapfile[\typescriptthree-linotype-melior.map] \stoptypescript +\stoptypescriptcollection \endinput diff --git a/tex/context/base/unic-chi.tex b/tex/context/base/unic-chi.tex new file mode 100644 index 000000000..b8e498690 --- /dev/null +++ b/tex/context/base/unic-chi.tex @@ -0,0 +1,26 @@ +%D \module +%D [ file=unic-chi, +%D version=2005.12.14, +%D title=\CONTEXT\ \UNICODE\ Macros, +%D subtitle=Chinese Vectors, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% \def\chineseglyph#1#2#3% #1=hex (we know the font anyway), #2=dec, #3=chr +% {\uchar{#2}{#3}} +% +% \dostepwiserecurse{78}{159}{1} % 4E-9F +% {\expanded{\defineunicodecommand \recurselevel\space {\noexpand\chineseglyph{\lchexnumbers{\recurselevel}}}}} + +% \dostepwiserecurse{78}{159}{1}{\defineunicodecommand #1 {\uchar}} % 4E-9F + +% temp: we need proper ranges + +\dostepwiserecurse{40}{159}{1}{\defineunicodecommand #1 {\uchar}} + +\endinput diff --git a/tex/context/base/unic-ini.tex b/tex/context/base/unic-ini.tex index 1881eceb2..01cf8b2fa 100644 --- a/tex/context/base/unic-ini.tex +++ b/tex/context/base/unic-ini.tex @@ -235,6 +235,7 @@ %D and testing these macros) another 10\%. \def\@@univector {univ} +\def\@@unicommand {unic} \def\@@unknownchar{unknownchar} %D Now comes the nice part: turning codes into glyphs. The @@ -401,11 +402,43 @@ \@EA\doutfunihash\@EA{\number\utfdiv{#1}}{#1}\endcsname \fi} +%D Well, we also want a plug-in mechanism, so: + +\def\utfunihashglyph#1% + {\@EA\doutfunihashglyph\@EA{\number\utfdiv{#1}}{#1}} % only div once + +\def\doutfunihashglyph#1#2% div raw + {\csname + \ifnum#2<\utf@i + \strippedcsname\unicodeasciicharacter + \else\ifcsname\@@unicommand#1\endcsname + \@@unicommand#1% + \else\ifcsname\@@univector#1\endcsname + \@@univector#1% + \else + \strippedcsname\unicodeunknowncharacter + \fi\fi\fi + \@EA\endcsname\@EA{\number\utfmod{#2}}} + +\def\unicodeunknowncharacter#1% + {\unknownchar} + %D With: \let\unicodeasciicharacter\rawcharacter -%D Now we can say: +%D Commands are defined with: + +\def\defineunicodecommand #1 #2% #2{range number}{char number} + {\setvalue{\@@unicommand#1}##1{#2{#1}{##1}}} + +%D For instance: +%D +%D \starttyping +%D \defineutfcommand 81 {\uchar} +%D \stoptyping + +%D Now we can also say: \let\utfunihash\utfunihashglyph @@ -455,7 +488,8 @@ \def\douseunicodevector#1% {\ifundefined{\@@univector#1}% - \readsysfile{\f!unicprefix\threedigits{#1}} + % \readsysfile{\f!unicprefix\threedigits{#1}} + \readsysfile{\f!unicprefix\doifnumberelse{#1}{\threedigits{#1}}{#1}} {\writestatus{unicode}{loading vector #1}} {\writestatus{unicode}{unknown vector #1}}% \fi} @@ -665,3 +699,5 @@ % 31, text mem usage first \protect \endinput + +\unprotect diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml index 773028fb2..7def67236 100644 --- a/tex/context/interface/keys-cz.xml +++ b/tex/context/interface/keys-cz.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="jedna"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="vrsek"/> <cd:variable name="wide" value="siroce"/> <cd:variable name="width" value="sirka"/> + <cd:variable name="minwidth" value="minsirka"/> <cd:variable name="outer" value="vnejsi"/> <cd:variable name="numbers" value="cisla"/> <cd:variable name="Numbers" value="Cisla"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="zahlavi"/> <cd:variable name="high" value="vysoko"/> <cd:variable name="height" value="vyska"/> + <cd:variable name="minheight" value="minvyska"/> <cd:variable name="horizontal" value="horizontalne"/> <cd:variable name="current" value="aktualni"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/> <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/> <cd:command name="usetypescript" value="usetypescript"/> + <cd:command name="usetypescriptfile" value="usetypescriptfile"/> </cd:commands> <cd:commands> diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 8eb3cf1d9..d31b5a98c 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="eins"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="oben"/> <cd:variable name="wide" value="breit"/> <cd:variable name="width" value="breite"/> + <cd:variable name="minwidth" value="minbreite"/> <cd:variable name="outer" value="aussen"/> <cd:variable name="numbers" value="ziffern"/> <cd:variable name="Numbers" value="Ziffern"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="kopfzeile"/> <cd:variable name="high" value="hoch"/> <cd:variable name="height" value="hoehe"/> + <cd:variable name="minheight" value="minhoehe"/> <cd:variable name="horizontal" value="horizontal"/> <cd:variable name="current" value="aktuell"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/> <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/> <cd:command name="usetypescript" value="usetypescript"/> + <cd:command name="usetypescriptfile" value="usetypescriptfile"/> </cd:commands> <cd:commands> diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 296513d3d..39da2a27c 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="one"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="top"/> <cd:variable name="wide" value="wide"/> <cd:variable name="width" value="width"/> + <cd:variable name="minwidth" value="minwidth"/> <cd:variable name="outer" value="outer"/> <cd:variable name="numbers" value="numbers"/> <cd:variable name="Numbers" value="Numbers"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="header"/> <cd:variable name="high" value="high"/> <cd:variable name="height" value="height"/> + <cd:variable name="minheight" value="minheight"/> <cd:variable name="horizontal" value="horizontal"/> <cd:variable name="current" value="current"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/> <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/> <cd:command name="usetypescript" value="usetypescript"/> + <cd:command name="usetypescriptfile" value="usetypescriptfile"/> </cd:commands> <cd:commands> diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index 805f776ce..cd0bde1de 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="uno"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="cima"/> <cd:variable name="wide" value="ampio"/> <cd:variable name="width" value="ampiezza"/> + <cd:variable name="minwidth" value="ampiezzamin"/> <cd:variable name="outer" value="esterno"/> <cd:variable name="numbers" value="numeri"/> <cd:variable name="Numbers" value="Numeri"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="intestazione"/> <cd:variable name="high" value="alto"/> <cd:variable name="height" value="altezza"/> + <cd:variable name="minheight" value="altezzamin"/> <cd:variable name="horizontal" value="orizzontale"/> <cd:variable name="current" value="corrente"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/> <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/> <cd:command name="usetypescript" value="usetypescript"/> + <cd:command name="usetypescriptfile" value="usetypescriptfile"/> </cd:commands> <cd:commands> diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index 9c24d7845..74856d310 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="een"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="boven"/> <cd:variable name="wide" value="breed"/> <cd:variable name="width" value="breedte"/> + <cd:variable name="minwidth" value="minbreedte"/> <cd:variable name="outer" value="buiten"/> <cd:variable name="numbers" value="cijfers"/> <cd:variable name="Numbers" value="Cijfers"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="hoofd"/> <cd:variable name="high" value="hoog"/> <cd:variable name="height" value="hoogte"/> + <cd:variable name="minheight" value="minhoogte"/> <cd:variable name="horizontal" value="horizontaal"/> <cd:variable name="current" value="huidige"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startkolomopmaak"/> <cd:command name="stopcolumnmakeup" value="stopkolomopmaak"/> <cd:command name="usetypescript" value="gebruiktypescript"/> + <cd:command name="usetypescriptfile" value="gebruiktypescriptfile"/> </cd:commands> <cd:commands> diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index 2e82a773f..423e8a678 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2005.12.01"> +<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2005.12.18"> <cd:variables> <cd:variable name="one" value="unu"/> @@ -509,6 +509,7 @@ <cd:variable name="top" value="sus"/> <cd:variable name="wide" value="larg"/> <cd:variable name="width" value="latime"/> + <cd:variable name="minwidth" value="latimeminima"/> <cd:variable name="outer" value="extern"/> <cd:variable name="numbers" value="numere"/> <cd:variable name="Numbers" value="Numere"/> @@ -555,6 +556,7 @@ <cd:variable name="header" value="antet"/> <cd:variable name="high" value="inalt"/> <cd:variable name="height" value="inaltime"/> + <cd:variable name="minheight" value="inaltimeminima"/> <cd:variable name="horizontal" value="orizontal"/> <cd:variable name="current" value="curent"/> <cd:variable name="hz" value="hz"/> @@ -1586,6 +1588,7 @@ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/> <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/> <cd:command name="usetypescript" value="usetypescript"/> + <cd:command name="usetypescriptfile" value="usetypescriptfile"/> </cd:commands> <cd:commands> diff --git a/web2c/context.cnf b/web2c/context.cnf index c96630c10..a263d680b 100644 --- a/web2c/context.cnf +++ b/web2c/context.cnf @@ -16,7 +16,7 @@ TEXMFMAIN = $SELFAUTOPARENT/texmf TEXMFLOCAL = $SELFAUTOPARENT/texmf-local TEXMFFONTS = $SELFAUTOPARENT/texmf-fonts TEXMFEXTRA = $SELFAUTOPARENT/texmf-extra -TEXMFPROJECTS = $SELFAUTOPARENT/texmf-projects +TEXMFPROJECT = $SELFAUTOPARENT/texmf-project VARTEXMF = $SELFAUTOPARENT/texmf-var HOMETEXMF = /nonexist TEXMF = {!!$TEXMFPROJECT,!!$TEXMFFONTS,!!$TEXMFLOCAL,!!$TEXMFEXTRA,!!$TEXMFMAIN} |