/* MAKETEXP exec: based on the MakeTeXPK script for Unix. */ /* This is version 1.0 as of 9 Nov. 1992. */ /* Written by Jim Hafner (hafner@almaden.ibm.com). */ /* */ /* Command is: */ /* MakeTeXP fontname dpi basedpi magnification [mode] */ /* This is usually called by the DVIPS program or EXEC. */ /* */ /* END OF HEADER (this line must be preceded by a blank line) */ /* This is part of the VM/CMS distribution of Rokicki's DVIPS program. * Installers may need to customize this exec extensively, though we * have tried to make it as generic as possible. * * You are welcome to modify this exec in any way you choose. * * NOTE TO INSTALLERS: * 1) For locations of some possible site dependencies, search for * 'SITE DEPENDENCIES'. * 2) This exec assumes that your Metafont MODULE is called MF MODULE. * 3) It tries to bypass any front ends to this module by not invoking * EXEC MF but by calling MF directly. This was intended to reduce * some site dependencies. * 4) It assumes that you have a local modes definition file which * is the first thing MF will load. The name of this file can * be changed by changing the 'localModeFile' variable. If you * have no need for this then there are other changes that will * be required. In particular, using this local mode def file * means that all output files will have their filenames based on * this name. So, below we rename the output files so they match * the font name. If you don't have a localModeFile then you * will need to modify this section of the code. * * NOTE: * This exec can be called either by DVIPS directly (when a font is * found missing and the automatic font generation is allowed in the * code itself) or by the DVIPS EXEC (if a MISSFONT LOG file is * created). Consequently, any changes to either this exec or the * DVIPS EXEC may require changes to the other. * * THANKS: * This EXEC is based in large part on the Unix script version and on * some additional features in the version created by Alessio Guglielmi * (ALESSIO@IPISNSIB.BITNET) as modified by Ronald Kappert (R.Kappert@ * uci.kun.nl). We acknowledge their contributions and their * assistence. */ address 'COMMAND' basedpi = 300 /* pick your favorite default */ /************ SITE DEPENDENCIES **************************************/ /* Use this variable for the filename of your local mode defs file. */ /* This might be MODES (for modes.mf) or LOCAL (for local.mf). */ /* DO NOT ATTACH the '.MF' since this is used later as filename. */ LocalModeFile='MODES' /************ END OF SITE DEPENDENCIES */ parse arg fn dpi bdpi mag mode . upper fn mag if fn='' | fn='?' then signal show_header if bdpi = '' then bdpi = basedpi ; if mode ='' then /* we use bdpi to select mode; this is site dependent */ select; when bdpi = 300 then mode = "CanonCX" ; /* same as imagen */ when bdpi = 400 then mode = "nexthi" ; when bdpi = 100 then mode = "nextscreen" ; when bdpi = 600 then mode = "varitype" ; when bdpi = 635 then mode = "linolo" ; when bdpi = 1270 then mode = "linohi" ; when bdpi = 2540 then mode = "linosuper" ; otherwise do say "I don't know the mode for base resolution "bdpi say "Have your system administrator update MakeTeXPK EXEC" end end gftype=dpi'GF' /* File types are always GF' */ pktype=dpi'PK' /* File types are always PK' */ /* =0 if not there, =1 if on A-disk, =2 if on another disk */ gfthere=Whereis(fn gftype) ; mfthere=Whereis(fn 'MF') ; tfmthere=Whereis(fn 'TFM') ; if (gfthere = 0 & mfthere = 0 ) then call failure parse var mag "MAGSTEP\("magstep"\)" if magstep="" then mag=dpi/bdpi else mag="magstep "magstep /* now run Metafont is there is no GF file */ if gfthere = 0 then do /* build up Metafont arguments */ mfargs='' /* initialize */ /********* SITE DEPENDENCIES, probably ***********/ mfargs='&plain 'mfargs /* note, &plain is first */ mfargs=mfargs localModeFile /* WE ASSUME THIS IS REQUIRED */ /********* END OF SITE DEPENDENCIES **************/ mfargs=mfargs'; \mode='mode'; mag='mag'; scrollmode; input' fn /*** NOTE: we call the module directly so that we can use this generic syntax for the command line options. Should be less SITE DEPENDENT this way. ***/ push mfargs 'MF' /*** output filenames are all determined by 'localModeFile' so we a) clean up the log, b) check to see that MF worked, and c) rename things to 'fn'. ***/ 'ERASE' localModeFile' MFLOG A' 'STATE' localModeFile gftype 'A' if rc ^=0 then call mffailure /* no gf file was created */ else do 'RENAME' localModeFile gftype 'A' fn '= =' 'RENAME' localModeFile' TFM A' fn '= =' end end /* now we can call GFtoPK since everything is OK */ 'EXEC GFTOPK 'fn gftype' * 'fn pktype' A' if rc ^= 0 then call gffailure /* we erase junk on the A-disk if there wasn't anything there before */ if gfthere^=1 then 'ERASE 'fn gftype' A' if tfmthere^=1 then 'ERASE 'fn 'TFM A' exit 0 failure: say "Can't find either the MF or GF file for this font so will exit." ; exit 100 ; mffailure: say "Metafont failed for some reason. I'll have to exit." ; exit 200 ; mffailure: say "GFtoPK failed for some reason. I'll have to exit." ; exit 300 ; show_header: index=1 line=Sourceline(index) Do While Substr(line,1,2)="/*" parse var line '/*' middle '*/' say middle index=index+1 line=Sourceline(index) End Exit Whereis: arg fn ft there = 0 'MAKEBUF' 'LISTFILE' fn ft '* (STACK' if rc = 0 then do /* found some version of file */ pull . . fm . if 'ABBREV'(fm,"A",1) then there = 1; else there = 2 ; end 'DROPBUF' return there ;