summaryrefslogtreecommitdiff
path: root/systems/unix/tex-fpc/README
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /systems/unix/tex-fpc/README
Initial commit
Diffstat (limited to 'systems/unix/tex-fpc/README')
-rw-r--r--systems/unix/tex-fpc/README316
1 files changed, 316 insertions, 0 deletions
diff --git a/systems/unix/tex-fpc/README b/systems/unix/tex-fpc/README
new file mode 100644
index 0000000000..4d62296690
--- /dev/null
+++ b/systems/unix/tex-fpc/README
@@ -0,0 +1,316 @@
+2019-03-04
+
+This directory contains change files for Donald E. Knuth's suite
+of TeX related programs. The change files (.ch) and Don Knuth's
+WEB files (.web) from January 2014 are the key components of a
+construction kit for "TeX-FPC"---a TeX system which is based on
+the Free Pascal Compiler (FPC) and runs in a Unix environment. It's
+by magnitudes smaller than other TeX distributions.
+
+These building bricks are glued together by shell scripts in
+the---guess where---shell subdirectory.
+
+The MFT directory contains shell scripts for installing fonts
+(xxxfonts), and the directory iby shows how to install fonts
+with TeX-FPC. In this case a polytonic Greek font, suited for ancient
+Greek texts.
+
+The directories dvipsnk and xdvi show how to install Tom Rokicki's
+dvips and Paul Vojta's xdvi.
+If your printer does not accept postscript, you might want to install
+ghostscript, which converts postscript to the language of you printer or
+to pdf. Use ghostscripts dvipdf to convert ps to pdf.
+
+TeX-FPC replaces the famous and beautiful TeX-GPC. The GNU Pascal Compiler
+is not supported on Linux, the BSDs and OS X. Free Pascal is chosen
+not because it is the best alternative but because it is the only
+alternative.
+In FPC 3.0.4 I spotted to errors: See
+0035136: The function EOF does not comply to ISO Pascal
+0035066: fpc says "cannot determine which overloaded function to call"
+at bugs.freepascal.org
+
+
+Overview:
+=========
+
+File formats and their documentation:
+-------------------------------------
+WEB files:
+.web WEB programs, "The WEB System of Structured Documentation" (webman.tex)
+.ch Change files for WEB programs (patches to be applied to .web files)
+.p Free Pascal source
+.pool String pool, contains the string constants of a WEB program.
+
+
+METAFONT files:
+.mf METAFONT source, "The METAFONTbook" (mfbook.tex)
+.base Base file, a compact representation of METAFONT's memory.
+.tfm TeX font metric, "TeX: The Program" (tex.web) part 30
+.nnngf generic font file, "METAFONT: The Program" (mf.web), part 46
+.nnnpk packed font file, gftopk.web, modules 21-36
+ The last two are bitmap font formats, where nnn is a number that
+ stands for "dots per inch". The number equals resolution of the
+ output device as specified in your mode times the magnification.
+.log a log file
+
+TeX files:
+.tex TeX source, "The TeXbook" (texbook.tex)
+.fmt Format file, a compact representation of TeX's memory.
+ contains the string pool (tex.pool) and preloaded .tfm files.
+.dvi device independent file, "TeX: The Program" (tex.web), part 31
+.log a log file
+
+
+
+Files and their processors:
+--------------------------
+WEB:
+ tangle
+ .web, .ch --------> .p, .pool
+
+ fpc
+ x.p --------> x
+
+ tgl
+ x.web, x.ch --------> x (linking the last two steps)
+
+ itgl
+ x.web, x.ch --------> x, inix.p, .pool (links the first two steps
+ and keeps the pascal sources)
+
+ weave
+ .web, .ch --------> .tex (Description of the program)
+
+ wve
+ .web, .ch --------> .dvi (linking the above step and tex)
+
+
+METAFONT:
+ inimf
+ plain.mf --------> plain.base
+
+ mf
+ .mf --------> .nnngf, tfm
+
+ gftopk
+ .nnngf --------> .nnnpk
+
+ mkfont
+ .mf --------> TeXfonts/.tfm, PKfonts/.nnnpk
+
+ mkpkfont
+ .mf --------> PKfonts/.nnnpk
+
+
+TeX:
+ initex
+ .tfm, plain.tex --------> plain.fmt
+
+ tex
+ [ .tfm ], .tex --------> .dvi
+
+
+DVI drivers:
+ dvips
+ .dvi, .nnnpk --------> .ps, PostScript printer
+
+ xdvi
+ .dvi, .nnnpk --------> X-Window
+
+
+File names:
+-----------
+TeX-FPC searches files in directories which are local to the working
+directory:
+ TeXinputs .tex
+ TeXfonts .tfm
+ TeXformats .pool, .fmt
+ MFinputs .mf
+ MFbases .pool, .base
+ PKfonts .nnnpk
+ DVIPSconf .pro, .ps, .map (Header and configuration files for dvips)
+
+I created one set of "master directories" and used symbolic links
+to my working directory like:
+
+ ln -s ~/TeXformats .
+
+The scripts mk_TeX_dir and mk_MF_dir help to prepare a directory
+for running TeX resp. METAFONT. Adapt these scripts to the locations
+of your master directories.
+
+TeX-FPC's path searching applies to file names without directory
+components, i.e. without a /:
+ .tex local directory and then TeXinputs
+ .mf local directory and then MFinputs
+ .tfm TeXfonts
+
+Depending on the context, TeX-FPC programs append ".mf", ".tex",
+or ".tfm" to file names without extensions.
+
+builtin file names:
+------------------
+TeXformats/tex.pool string pool for tex, (in initex)
+MFbases/mf.pool string pool for mf, (in inimf)
+TeXformats/plain.fmt format file for Plain TeX, (in tex)
+MFbases/plain.base base file for Plain METAFONT, (in mf)
+
+Fonts in TeX-FPC:
+----------------
+For each font TeX needs one .tfm file. For each font and
+resolution/magnification the DVI drivers need one .nnnpk file.
+The script mkfont will install both a .tfm and an .nnnpk file, the
+script mkpkfont will install an .nnnpk file only. You specify the
+resolution in your METAFONT mode and the magnification as an optional
+second argument to mkpkfont or mkfont. The DVI drivers will invoke
+mkpkfont automatically to create missing .nnnpk files.
+
+Running TeX-FPC
+===============
+Missing files
+-------------
+Search missing macro files like (webmac.tex) in Knuth's lib
+directory and copy them to the working directory or to TeXinputs.
+My change files import webmac-fpc.tex; move it to TeXinputs.
+
+Search the sources of missing fonts in the lib directory (.mf),
+copy them to MFinputs and use the scripts mkfont or mkpkfont to
+create and install .tfm files respective .pk files. The shell scripts
+assume the METAFONT mode localfont which is defined in MFT/local.mf.
+Remember, you've loaded local.mf into the file plain.base. Or you
+might want to grep for font assignments in your .tex files. The
+command line
+ grep '\\font.*=' plain.tex > plainfonts
+creates a list of the font names used by plain.tex. I edited
+plainfonts to convert it to a shell script that creates all fonts
+of the plain format. In the MFT directory you'll find other examples.
+
+Installing new fonts from CTAN
+------------------------------
+The directory MFT/iby contains instructions on how to install a font
+from CTAN, in this case ibygrk to typeset polytonic ancient Greek.
+
+Printing the documentation
+--------------------------
+The weave program generates an xxx.tex file from an xxx.web file
+and a possibly empty change file. Use tex to generate an xxx.dvi
+file. This is done by the script wve. For example, to view the
+description of TeX-FPC, use
+ wve tex.web tex.ch && xdvi tex
+The web-macros need another font. Use webfonts to install it.
+The scripts texwebfonts installs additional fonts for tex.tex,
+and mfwebfonts for mf.tex.
+
+TRIP TRAP
+---------
+Both tests might not be passed by TeX-FPC: TeX and METAFONT trim
+trailing spaces from input lines for compatibility with IBM's
+punched cards. TeX-FPC's programs don't.
+
+
+Installing TeX-FPC:
+===================
+
+Get Knuth's source files:
+------------------------
+Make a stage directory, say tex-fpc, which mirrors Knuth's distribution
+from
+
+ ftp://ftp.dante.de/pub/tex/systems/knuth/dist.zip
+
+This gives you the WEB files, manuals, macros and some .mf files.
+At least you need the directories lib, tex, mfware, mf and web.
+
+You need another set of source files, namely the METAFONT source
+files (.mf) for Knuth's font Computer Modern.
+
+Copy the .mf files from
+ ftp://ftp.dante.de/pub/tex/fonts/cm/mf/
+to MFinputs.
+
+And Copy the .mf files from the lib directory to MFinputs.
+ cp -p lib/*.mf MFinputs
+
+I prefer the DANTE server, because that server preserves modification
+times. This is not true with other CTAN mirrors.
+
+Building from WEB sources, (xxx.web and xxx.ch --> xxx, xxx.pool)
+----------------------------------------------------------------
+The general procedure to build a binary xxx from its WEB files is:
+Move xxx.ch to the directory that contains xxx.web, apply tangle
+to xxx.web and xxx.ch to generate xxx.p and xxx.pool, and compile the
+Pascal source with gpc. The command line
+ tgl xxx.web xxx.ch
+will do all that. It produces xxx that you need to move to your binary
+directory.
+
+Step by step procedure to bootstrap TeX-FPC
+-------------------------------------------
+Install Free Pascal Compiler from www.freepascal.org.
+
+Create the master directories (see above)
+
+copy the shell scripts from the tex-fpc/shell to your binary direcory.
+
+
+0. Make tangle tangle.p --> tangle
+------------------------------------------------------------------------
+Compile tangle.p (fpc tangle.p) and move tangle to your
+binary directory.
+
+1. Make inimf and initex mf.web, mf.ch --> inimf, inimf.p, MFbases/mf.pool
+ tex.web, tex.ch --> initex,initex.p TeXformats/tex.pool
+Make sure, mf.ch and tex.ch are prepared to produce ini versions of
+tex and mf.
+------------------------------------------------------------------------
+Build the ini-programs and save them as initex, resp. inimf.
+Move tex.pool to TeXformats and mf.pool to MFbases, use itgl instead
+of tgl to keep inimf.p and initex.p.
+
+2. Make plain.base lib/plain.mf --> MFbases/plain.base
+------------------------------------------------------------------------
+Go to the directory tex-fpc/mf and use inimf to create plain.base.
+The file local.mf contains mode definitions for my HP LaserJet 1320
+printer. Adapt local.mf to your printer and then type
+ inimf ../lib/plain input ../MFT/local dump
+
+Move plain.base to MFbases.
+
+3. Make mf mf.web, mf.ch --> mf
+------------------------------------------------------------------------
+Edit mf.ch and look for the string @x inimf that introduces a change
+block. This change block is commented out, since it is shifted
+right. Shift left this block to uncomment it. This way mf.ch is
+changed to build a production version.
+
+4. Make gftopk gftopk.web, gftopk.ch --> gftopk
+------------------------------------------------------------------------
+Build gftopk in the mfware directory. You need gftopk to install
+packed font files (.nnnpk) in the next step.
+
+5. Install fonts: MFinputs/*.mf --> TeXfonts/*.tfm, PKfonts/*.pk
+------------------------------------------------------------------------
+Prepare tex-fpc to run both METAFONT (mk_MF_dir) and TeX (mk_TeX_dir)
+and run the shell script MFT/plainfonts from there.
+Check the file trouble that might contain commands that failed.
+
+6. Make plain.fmt lib/plain.tex --> TeXformats/plain.fmt
+------------------------------------------------------------------------
+Copy lib/hyphen.tex to TeXinputs and go to the directory tex-fpc/tex
+to build plain.fmt.
+This command line will do
+ initex ../lib/plain \\dump # one backslash is consumend by sh!
+Move plain.fmt to TeXformats.
+
+7. Finally build tex tex.web, tex.ch --> tex
+------------------------------------------------------------------------
+Change tex.ch for production, and build it with tgl.
+
+Enjoy,
+Wolfgang Helbig, Programmierer
+
+Comments welcome: helbig@mailbox.org
+
+TeX is a trademark of the American Mathematical Society.
+METAFONT is a trademark of Addison Wesley Publishing Company.