From c6101f91d071883b48b1b4b51e5eba0f36d9a78d Mon Sep 17 00:00:00 2001 From: Denis Bitouzé Date: Thu, 25 Feb 2021 18:23:07 +0000 Subject: French translation for tlmgr updated git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/doc/Makefile.am | 8 - Build/source/texk/web2c/doc/Makefile.in | 906 ------ Build/source/texk/web2c/doc/README | 7 - Build/source/texk/web2c/doc/install.texi | 288 -- Build/source/texk/web2c/doc/ref.txi | 118 - Build/source/texk/web2c/doc/web2c.info | 4587 ------------------------------ Build/source/texk/web2c/doc/web2c.texi | 4353 ---------------------------- 7 files changed, 10267 deletions(-) delete mode 100644 Build/source/texk/web2c/doc/Makefile.am delete mode 100644 Build/source/texk/web2c/doc/Makefile.in delete mode 100644 Build/source/texk/web2c/doc/README delete mode 100644 Build/source/texk/web2c/doc/install.texi delete mode 100644 Build/source/texk/web2c/doc/ref.txi delete mode 100644 Build/source/texk/web2c/doc/web2c.info delete mode 100644 Build/source/texk/web2c/doc/web2c.texi (limited to 'Build/source/texk/web2c/doc') diff --git a/Build/source/texk/web2c/doc/Makefile.am b/Build/source/texk/web2c/doc/Makefile.am deleted file mode 100644 index 2688e595443..00000000000 --- a/Build/source/texk/web2c/doc/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -## Makefile.am for the TeX Live subdirectory texk/web2c/doc/ -## -## Copyright (C) 2009 Peter Breitenlohner -## You may freely use, modify and/or distribute this file. -## -info_TEXINFOS = web2c.texi -web2c_TEXINFOS = install.texi ref.txi - diff --git a/Build/source/texk/web2c/doc/Makefile.in b/Build/source/texk/web2c/doc/Makefile.in deleted file mode 100644 index f343ffa6b91..00000000000 --- a/Build/source/texk/web2c/doc/Makefile.in +++ /dev/null @@ -1,906 +0,0 @@ -# Makefile.in generated by automake 1.16.3 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/web2c-disable.m4 \ - $(top_srcdir)/../../m4/ax_cxx_compile_stdcxx.m4 \ - $(top_srcdir)/../../m4/kpse-asm.m4 \ - $(top_srcdir)/../../m4/kpse-cairo-flags.m4 \ - $(top_srcdir)/../../m4/kpse-common.m4 \ - $(top_srcdir)/../../m4/kpse-cross.m4 \ - $(top_srcdir)/../../m4/kpse-cxx-hack.m4 \ - $(top_srcdir)/../../m4/kpse-fontconfig-flags.m4 \ - $(top_srcdir)/../../m4/kpse-freetype2-flags.m4 \ - $(top_srcdir)/../../m4/kpse-gmp-flags.m4 \ - $(top_srcdir)/../../m4/kpse-graphite2-flags.m4 \ - $(top_srcdir)/../../m4/kpse-harfbuzz-flags.m4 \ - $(top_srcdir)/../../m4/kpse-icu-flags.m4 \ - $(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \ - $(top_srcdir)/../../m4/kpse-lex.m4 \ - $(top_srcdir)/../../m4/kpse-lib-version.m4 \ - $(top_srcdir)/../../m4/kpse-libpng-flags.m4 \ - $(top_srcdir)/../../m4/kpse-lt-hack.m4 \ - $(top_srcdir)/../../m4/kpse-lua52-flags.m4 \ - $(top_srcdir)/../../m4/kpse-lua53-flags.m4 \ - $(top_srcdir)/../../m4/kpse-luajit-flags.m4 \ - $(top_srcdir)/../../m4/kpse-macos-framework.m4 \ - $(top_srcdir)/../../m4/kpse-mpfr-flags.m4 \ - $(top_srcdir)/../../m4/kpse-pixman-flags.m4 \ - $(top_srcdir)/../../m4/kpse-pplib-flags.m4 \ - $(top_srcdir)/../../m4/kpse-ptexenc-flags.m4 \ - $(top_srcdir)/../../m4/kpse-socket-libs.m4 \ - $(top_srcdir)/../../m4/kpse-teckit-flags.m4 \ - $(top_srcdir)/../../m4/kpse-warnings.m4 \ - $(top_srcdir)/../../m4/kpse-web2c.m4 \ - $(top_srcdir)/../../m4/kpse-win32.m4 \ - $(top_srcdir)/../../m4/kpse-xpdf-flags.m4 \ - $(top_srcdir)/../../m4/kpse-zlib-flags.m4 \ - $(top_srcdir)/../../m4/kpse-zziplib-flags.m4 \ - $(top_srcdir)/../../m4/libtool.m4 \ - $(top_srcdir)/../../m4/ltoptions.m4 \ - $(top_srcdir)/../../m4/ltsugar.m4 \ - $(top_srcdir)/../../m4/ltversion.m4 \ - $(top_srcdir)/../../m4/lt~obsolete.m4 \ - $(top_srcdir)/../../version.ac $(top_srcdir)/ac/web2c.ac \ - $(top_srcdir)/synctexdir/ac/synctex.ac \ - $(top_srcdir)/synctexdir/synctex_parser_api_level.txt \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/w2c/c-auto.h \ - $(top_builddir)/ff-config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) -am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) -am__v_DVIPS_0 = @echo " DVIPS " $@; -am__v_DVIPS_1 = -AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) -am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) -am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; -am__v_MAKEINFO_1 = -AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) -am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) -am__v_INFOHTML_0 = @echo " INFOHTML" $@; -am__v_INFOHTML_1 = -AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) -am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) -am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; -am__v_TEXI2DVI_1 = -AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) -am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) -am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; -am__v_TEXI2PDF_1 = -AM_V_texinfo = $(am__v_texinfo_@AM_V@) -am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) -am__v_texinfo_0 = -q -am__v_texinfo_1 = -AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) -am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) -am__v_texidevnull_0 = > /dev/null -am__v_texidevnull_1 = -INFO_DEPS = $(srcdir)/web2c.info -TEXINFO_TEX = $(top_srcdir)/../../build-aux/texinfo.tex -am__TEXINFO_TEX_DIR = $(top_srcdir)/../../build-aux -DVIS = web2c.dvi -PDFS = web2c.pdf -PSS = web2c.ps -HTMLS = web2c.html -TEXINFOS = web2c.texi -TEXI2DVI = texi2dvi -TEXI2PDF = $(TEXI2DVI) --pdf --batch -MAKEINFOHTML = $(MAKEINFO) --html -AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) -DVIPS = dvips -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__installdirs = "$(DESTDIR)$(infodir)" -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/../../build-aux/texinfo.tex $(web2c_TEXINFOS) \ - README -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAIRO_DEPEND = @CAIRO_DEPEND@ -CAIRO_INCLUDES = @CAIRO_INCLUDES@ -CAIRO_LIBS = @CAIRO_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CTANGLE = @CTANGLE@ -CTANGLEBOOT = @CTANGLEBOOT@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CXXLD = @CXXLD@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FONTCONFIG_INCLUDES = @FONTCONFIG_INCLUDES@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE2_DEPEND = @FREETYPE2_DEPEND@ -FREETYPE2_INCLUDES = @FREETYPE2_INCLUDES@ -FREETYPE2_LIBS = @FREETYPE2_LIBS@ -FT2_CONFIG = @FT2_CONFIG@ -GMP_DEPEND = @GMP_DEPEND@ -GMP_INCLUDES = @GMP_INCLUDES@ -GMP_LIBS = @GMP_LIBS@ -GRAPHITE2_DEPEND = @GRAPHITE2_DEPEND@ -GRAPHITE2_INCLUDES = @GRAPHITE2_INCLUDES@ -GRAPHITE2_LIBS = @GRAPHITE2_LIBS@ -GREP = @GREP@ -HARFBUZZ_DEPEND = @HARFBUZZ_DEPEND@ -HARFBUZZ_INCLUDES = @HARFBUZZ_INCLUDES@ -HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ -HAVE_CXX11 = @HAVE_CXX11@ -ICU_CONFIG = @ICU_CONFIG@ -ICU_DEPEND = @ICU_DEPEND@ -ICU_INCLUDES = @ICU_INCLUDES@ -ICU_LIBS = @ICU_LIBS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -KPATHSEA_DEPEND = @KPATHSEA_DEPEND@ -KPATHSEA_INCLUDES = @KPATHSEA_INCLUDES@ -KPATHSEA_LIBS = @KPATHSEA_LIBS@ -KPATHSEA_PATHS_H = @KPATHSEA_PATHS_H@ -KPSEWHICH = @KPSEWHICH@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBOBJS = @LIBOBJS@ -LIBPNG_DEPEND = @LIBPNG_DEPEND@ -LIBPNG_INCLUDES = @LIBPNG_INCLUDES@ -LIBPNG_LIBS = @LIBPNG_LIBS@ -LIBS = @LIBS@ -LIBSYNCTEX = @LIBSYNCTEX@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTLIBSYNCTEX = @LTLIBSYNCTEX@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -LUA52_DEFINES = @LUA52_DEFINES@ -LUA52_DEPEND = @LUA52_DEPEND@ -LUA52_INCLUDES = @LUA52_INCLUDES@ -LUA52_LIBS = @LUA52_LIBS@ -LUA53_DEFINES = @LUA53_DEFINES@ -LUA53_DEPEND = @LUA53_DEPEND@ -LUA53_INCLUDES = @LUA53_INCLUDES@ -LUA53_LIBS = @LUA53_LIBS@ -LUAJIT_DEFINES = @LUAJIT_DEFINES@ -LUAJIT_DEPEND = @LUAJIT_DEPEND@ -LUAJIT_INCLUDES = @LUAJIT_INCLUDES@ -LUAJIT_LDEXTRA = @LUAJIT_LDEXTRA@ -LUAJIT_LIBS = @LUAJIT_LIBS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MPFR_DEPEND = @MPFR_DEPEND@ -MPFR_INCLUDES = @MPFR_INCLUDES@ -MPFR_LIBS = @MPFR_LIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJCXX = @OBJCXX@ -OBJCXXDEPMODE = @OBJCXXDEPMODE@ -OBJCXXFLAGS = @OBJCXXFLAGS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTANGLE = @OTANGLE@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIXMAN_DEPEND = @PIXMAN_DEPEND@ -PIXMAN_INCLUDES = @PIXMAN_INCLUDES@ -PIXMAN_LIBS = @PIXMAN_LIBS@ -PKG_CONFIG = @PKG_CONFIG@ -PPLIB_DEPEND = @PPLIB_DEPEND@ -PPLIB_INCLUDES = @PPLIB_INCLUDES@ -PPLIB_LIBS = @PPLIB_LIBS@ -PTEXENC_DEPEND = @PTEXENC_DEPEND@ -PTEXENC_INCLUDES = @PTEXENC_INCLUDES@ -PTEXENC_LIBS = @PTEXENC_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -SYNCTEXVERSION = @SYNCTEXVERSION@ -SYNCTEX_LT_VERSINFO = @SYNCTEX_LT_VERSINFO@ -TANGLE = @TANGLE@ -TANGLEBOOT = @TANGLEBOOT@ -TECKIT_DEPEND = @TECKIT_DEPEND@ -TECKIT_INCLUDES = @TECKIT_INCLUDES@ -TECKIT_LIBS = @TECKIT_LIBS@ -TIE = @TIE@ -VERSION = @VERSION@ -WARNING_CFLAGS = @WARNING_CFLAGS@ -WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ -WARNING_OBJCXXFLAGS = @WARNING_OBJCXXFLAGS@ -WEB2CVERSION = @WEB2CVERSION@ -XMKMF = @XMKMF@ -XPDF_DEPEND = @XPDF_DEPEND@ -XPDF_INCLUDES = @XPDF_INCLUDES@ -XPDF_LIBS = @XPDF_LIBS@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -ZLIB_DEPEND = @ZLIB_DEPEND@ -ZLIB_INCLUDES = @ZLIB_INCLUDES@ -ZLIB_LIBS = @ZLIB_LIBS@ -ZZIPLIB_DEPEND = @ZZIPLIB_DEPEND@ -ZZIPLIB_INCLUDES = @ZZIPLIB_INCLUDES@ -ZZIPLIB_LIBS = @ZZIPLIB_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -ac_ct_OBJCXX = @ac_ct_OBJCXX@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -ipc_socketlibs = @ipc_socketlibs@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lua_socketlibs = @lua_socketlibs@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -wlibs = @wlibs@ -x_ext_lib = @x_ext_lib@ -x_tool_libs = @x_tool_libs@ -info_TEXINFOS = web2c.texi -web2c_TEXINFOS = install.texi ref.txi -all: all-am - -.SUFFIXES: -.SUFFIXES: .dvi .html .info .pdf .ps .texi -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -.texi.info: - $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ - am__cwd=`pwd` && $(am__cd) $(srcdir) && \ - rm -rf $$backupdir && mkdir $$backupdir && \ - if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ - for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ - if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ - done; \ - else :; fi && \ - cd "$$am__cwd"; \ - if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $@ $<; \ - then \ - rc=0; \ - $(am__cd) $(srcdir); \ - else \ - rc=$$?; \ - $(am__cd) $(srcdir) && \ - $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ - fi; \ - rm -rf $$backupdir; exit $$rc - -.texi.dvi: - $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ - $< - -.texi.pdf: - $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ - $< - -.texi.html: - $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) - $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ - -o $(@:.html=.htp) $<; \ - then \ - rm -rf $@ && mv $(@:.html=.htp) $@; \ - else \ - rm -rf $(@:.html=.htp); exit 1; \ - fi -$(srcdir)/web2c.info: web2c.texi $(web2c_TEXINFOS) -web2c.dvi: web2c.texi $(web2c_TEXINFOS) -web2c.pdf: web2c.texi $(web2c_TEXINFOS) -web2c.html: web2c.texi $(web2c_TEXINFOS) -.dvi.ps: - $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - $(DVIPS) $(AM_V_texinfo) -o $@ $< - -uninstall-dvi-am: - @$(NORMAL_UNINSTALL) - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ - rm -f "$(DESTDIR)$(dvidir)/$$f"; \ - done - -uninstall-html-am: - @$(NORMAL_UNINSTALL) - @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ - rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ - done - -uninstall-info-am: - @$(PRE_UNINSTALL) - @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ - if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ - then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ - done; \ - else :; fi - @$(NORMAL_UNINSTALL) - @list='$(INFO_DEPS)'; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ - (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ - echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ - rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ - else :; fi); \ - done - -uninstall-pdf-am: - @$(NORMAL_UNINSTALL) - @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ - rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ - done - -uninstall-ps-am: - @$(NORMAL_UNINSTALL) - @list='$(PSS)'; test -n "$(psdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ - rm -f "$(DESTDIR)$(psdir)/$$f"; \ - done - -dist-info: $(INFO_DEPS) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; \ - for base in $$list; do \ - case $$base in \ - $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$base; then d=.; else d=$(srcdir); fi; \ - base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ - for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ - if test -f $$file; then \ - relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f "$(distdir)/$$relfile" || \ - cp -p $$file "$(distdir)/$$relfile"; \ - else :; fi; \ - done; \ - done - -mostlyclean-aminfo: - -rm -rf web2c.t2d web2c.t2p - -clean-aminfo: - -test -z "web2c.dvi web2c.pdf web2c.ps web2c.html" \ - || rm -rf web2c.dvi web2c.pdf web2c.ps web2c.html - -maintainer-clean-aminfo: - @list='$(INFO_DEPS)'; for i in $$list; do \ - i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ - echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ - rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ - done -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-info -check-am: all-am -check: check-am -all-am: Makefile $(INFO_DEPS) -installdirs: - for dir in "$(DESTDIR)$(infodir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: $(DVIS) - -html: html-am - -html-am: $(HTMLS) - -info: info-am - -info-am: $(INFO_DEPS) - -install-data-am: install-info-am - -install-dvi: install-dvi-am - -install-dvi-am: $(DVIS) - @$(NORMAL_INSTALL) - @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ - done -install-exec-am: - -install-html: install-html-am - -install-html-am: $(HTMLS) - @$(NORMAL_INSTALL) - @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ - $(am__strip_dir) \ - d2=$$d$$p; \ - if test -d "$$d2"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ - $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ - echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ - else \ - list2="$$list2 $$d2"; \ - fi; \ - done; \ - test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ - done; } -install-info: install-info-am - -install-info-am: $(INFO_DEPS) - @$(NORMAL_INSTALL) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ - fi; \ - for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - esac; \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ - for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ - $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ - if test -f $$ifile; then \ - echo "$$ifile"; \ - else : ; fi; \ - done; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done - @$(POST_INSTALL) - @if $(am__can_run_installinfo); then \ - list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ - for file in $$list; do \ - relfile=`echo "$$file" | sed 's|^.*/||'`; \ - echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ - install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ - done; \ - else : ; fi -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: $(PDFS) - @$(NORMAL_INSTALL) - @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done -install-ps: install-ps-am - -install-ps-am: $(PSS) - @$(NORMAL_INSTALL) - @list='$(PSS)'; test -n "$(psdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-aminfo \ - maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: $(PDFS) - -ps: ps-am - -ps-am: $(PSS) - -uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ - uninstall-pdf-am uninstall-ps-am - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ - clean-libtool cscopelist-am ctags-am dist-info distclean \ - distclean-generic distclean-libtool distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ - mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \ - pdf-am ps ps-am tags-am uninstall uninstall-am \ - uninstall-dvi-am uninstall-html-am uninstall-info-am \ - uninstall-pdf-am uninstall-ps-am - -.PRECIOUS: Makefile - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/Build/source/texk/web2c/doc/README b/Build/source/texk/web2c/doc/README deleted file mode 100644 index 782585c019f..00000000000 --- a/Build/source/texk/web2c/doc/README +++ /dev/null @@ -1,7 +0,0 @@ -This directory contains the Texinfo manual for Web2c, which includes -nodes for all the TeX system programs in the distribution. - -The man pages are no longer supported, and are no longer in the distribution. -I do not wish to take the time to maintain the same documentation in two -source formats. If you want to volunteer to keep the man pages in sync -with the Texinfo manual, let me know. diff --git a/Build/source/texk/web2c/doc/install.texi b/Build/source/texk/web2c/doc/install.texi deleted file mode 100644 index ac3329a83dc..00000000000 --- a/Build/source/texk/web2c/doc/install.texi +++ /dev/null @@ -1,288 +0,0 @@ -@ifclear version -@defcodeindex cm -@defcodeindex fl -@defcodeindex op -@end ifclear - -@node Installation -@chapter Installation - -@cindex configuration -@cindex compilation -@cindex installation - -@ifset version -(A copy of this chapter is in the distribution file @file{web2c/INSTALL}.) -@end ifset - -Installing Web2c is mostly the same as installing any other -Kpathsea-using program. Therefore, for the basic steps involved, -see @ref{Installation,,, kpathsea, Kpathsea}. (A copy is in the file -@file{kpathsea/INSTALL}.) - -One peculiarity to Web2c is that the source distribution comes in two -files: @file{web.tar.gz} and @file{web2c.tar.gz}. You must retrieve and -unpack them both. (We have two because the former archive contains the -very large and seldom-changing original WEB source files.) -@xref{unixtex.ftp,,, kpathsea, Kpathsea}. - -@pindex mpost@r{, reason for name change} -Another peculiarity is the MetaPost program. Although it has been -installed previously as @code{mp}, as of Web2c 7.0 the installed name is -now @code{mpost}, to avoid conflict with the @code{mp} program that does -prettyprinting. This approach was recommended by the MetaPost author, -John Hobby. If you as the @TeX{} administrator wish to make it -available under its shorter name as well, you will have to set up a link -or some such yourself. And of course individual users can do the same. - -For solutions to common installation problems and information on how to -report a bug, see the file @file{kpathsea/BUGS} (@pxref{Bugs,,, -kpathsea, Kpathsea}). See also the Web2c home page, -@url{http://www.tug.org/web2c}. - -Points worth repeating: - -@itemize @bullet -@item -@cindex directory structure -@cindex basic fonts and macros -@cindex fonts, basic -@cindex macros, basic -Before starting the standard compilation and installation you must -install the basic fonts, macros, and other library files. -@xref{Installation,,,kpathsea, Kpathsea}. - -@item -If you do not wish to use the standard file locations, see @ref{Changing -search paths,,, kpathsea, Kpathsea}. - -@item -Some Web2c features are enabled or disabled at @code{configure} time, -as described in the first section below. - -@end itemize - -@menu -* configure options:: Especially --with and --enable. -* Compile-time options:: Unusual -D's. -* Additional targets:: Breaking down the task. -* Triptrap:: Running the torture tests. -@end menu - - -@node configure options -@section @code{configure} options - -@cindex configuration, compile-time -@cindex compile-time options -@pindex configure --with/--enable @r{options} -This section gives pointers to descriptions of the @samp{--with} and -@samp{--enable} @code{configure} arguments that Web2c accepts. Some are -specific to Web2c, others are generic to all Kpathsea-using programs. - -For a list of all the options @code{configure} accepts, run -@samp{configure --help}. The generic options are listed first, and the -package-specific options come last. - -For a description of the generic options (which mainly allow you to -specify installation directories) and basic @code{configure} usage, -see @ref{Invoking configure,, Running @code{configure} scripts, autoconf, -Autoconf}, a copy is in the file @file{kpathsea/CONFIGURE}. - -@table @samp -@item --disable-dump-share -Do not make fmt/base/mem files sharable across different endian -architectures. @xref{Hardware and memory dumps}. - -@item --without-maketexmf-default -@itemx --without-maketexpk-default -@itemx --without-maketextfm-default -@itemx --with-maketextex-default -Enable or disable the dynamic generation programs. @xref{mktex -configuration,,, kpathsea, Kpathsea}. The defaults are the inverse of -the options, i.e., everything is enabled except @code{mktextex}. - -@item --enable-shared -Build Kpathsea as a shared library. @xref{Shared library,,, kpathsea, -Kpathsea}. - -@item --with-editor=@var{cmd} -Change the default editor invoked by the @samp{e} interactive command. -@xref{Editor invocation}. - -@item --with-epsfwin -@itemx --with-hp2627win -@itemx --with-mftalkwin -@itemx --with-nextwin -@itemx --with-regiswin -@itemx --with-suntoolswin -@itemx --with-tektronixwin -@itemx --with-unitermwin -@itemx --with-x -@itemx --with-x-toolkit=KIT -@itemx --with-x11win -@itemx --with-x11 -Define Metafont graphics support; by default, no graphics support is -enabled. @xref{Online Metafont graphics}. - -@item --x-includes=@var{dir} -@itemx --x-libraries=@var{dir} -Define the locations of the X11 include files and libraries; by default, -@code{configure} does its best to guess). @xref{Optional Features,,, -autoconf, Autoconf}. A copy is in @file{kpathsea/CONFIGURE}. -@end table - - -@node Compile-time options -@section Compile-time options - -@cindex compile-time options -@cindex @samp{#define} options -@opindex -D @r{compiler options} -In addition to the @code{configure} options listed in the previous -section, there are a few things that can be affected at compile-time -with C definitions, rather than with @code{configure}. Using any of -these is unusual. - -To specify extra compiler flags (@samp{-D@var{name}} in this case), the -simplest thing to do is: -@example -make XCFLAGS="@var{ccoptions}" -@end example -@noindent You can also set the @code{CFLAGS} environment variable before -running @code{configure}. @xref{configure environment,,, kpathsea, Kpathsea}. - -Anyway, here are the possibilities: - -@table @samp -@item -DFIXPT -@itemx -DNO_MF_ASM -@vindex FIXPT -@cindex fixed-point arithmetic -@cindex floating-point arithmetic -@cindex assembly language routines -@cindex fraction routines -Use the original WEB fixed-point routines for Metafont and MetaPost -arithmetic calculations regarding fractions. By default, -assembly-language routines are used on x86 hardware with GNU C (unless -@samp{NO_MF_ASM} is defined), and floating-point routines are used -otherwise. - -@item -DIPC_DEBUG -@vindex IPC_DEBUG -Report on various interprocess communication activities. @xref{IPC and -TeX,, IPC and @TeX{}}. -@end table - - -@node Additional targets -@section Additional targets - -@cindex additional Make targets -@cindex targets, additional Make -@cindex Make targets, additional - -Web2c has several Make targets besides the standard ones. You can invoke -these either in the top level directory of the source distribution (the -one containing @file{kpathsea/} and @file{web2c/}), or in the -@file{web2c/} directory. - -@table @samp -@item c-sources -@cmindex c-sources @r{Makefile target} -@cindex non-Unix system, compiling on -Make only the C files, translated from the Web sources, presumably -because you want to take them to a non-Unix machine. - -@item formats -@itemx install-formats -@cmindex formats @r{Make target} -@cmindex install-formats @r{Make target} -Make or install all the memory dumps (@pxref{Memory dumps}). By -default, the standard plain formats plus @file{latex.fmt} are made. You -can add other formats by redefining the @code{fmts}, @code{bases}, and -@code{mems} variables. See the top of @file{web2c/Makefile} for the -possibilities. - -@item fmts -@itemx install-fmts -@cmindex fmts @r{Make target} -@cmindex install-fmts @r{Make target} -Make or install the @TeX{} @file{.fmt} files. @xref{Initial TeX}. - -@item bases -@itemx install-bases -@cmindex bases @r{Make target} -@cmindex install-bases @r{Make target} - -Make or install the Metafont @file{.base} files. @xref{Initial Metafont}. - -@item mems -@itemx install-mems -@cmindex mems @r{Make target} -@cmindex install-mems @r{Make target} -Make or install the MetaPost @file{.mem} files. @xref{Initial MetaPost}. - -@item triptrap -@itemx trip -@itemx trap -@itemx mptrap -@cmindex triptrap @r{Make target} -@findex trip @r{Make target} -@findex trap @r{Make target} -@findex mptrap @r{Make target} -To run the torture tests for @TeX{}, Metafont, and MetaPost -(respectively). See the next section. - -@end table - - -@node Triptrap -@section Trip, trap, and mptrap: Torture tests - -@cindex Gruff, Billy Goat -@cindex trip test -@cindex trap test -@cindex mptrap test -@cindex torture tests - -@flindex tripman.tex -@flindex trapman.tex -@flindex mptrap.readme -To validate your @TeX{}, Metafont, and MetaPost executables, run -@samp{make triptrap}. This runs the trip, trap, and mptrap ``torture -tests''. See the files @file{triptrap/tripman.tex}, -@file{triptrap/trapman.tex}, and @file{triptrap/mptrap.readme} for -detailed information and background on the tests. - -The differences between your executables' behavior and the standard -values will show up on your terminal. The usual differences (these are -all acceptable) are: - -@itemize @bullet -@item string usage and table sizes; -@item glue set ratios; -@item @samp{down4}, @samp{right4}, and @samp{y4} commands in DVItype output; -@item dates and times. -@end itemize - -@noindent Any other differences are trouble. The most common culprit in -the past has been compiler bugs, especially when optimizing. -@xref{TeX or Metafont failing,, @TeX{} or Metafont failing, kpathsea, -Kpathsea}. - -The files @file{trip.diffs}, @file{mftrap.diffs}, and -@file{mptrap.diffs} in the @file{triptrap} directory show the standard -diffs against the original output. If you diff your diffs against these -files, you should come up clean. For example -@example -make trip >&mytrip.diffs -diff triptrap/trip.diffs mytrip.diffs -@end example - -To run the tests separately, use the targets @code{trip}, @code{trap}, -and @code{mptrap}. - -To run simple tests for all the programs as well as the torture tests, -run @samp{make check}. You can compare the output to the distributed -file @file{tests/check.log} if you like. diff --git a/Build/source/texk/web2c/doc/ref.txi b/Build/source/texk/web2c/doc/ref.txi deleted file mode 100644 index 7c2dc6bc876..00000000000 --- a/Build/source/texk/web2c/doc/ref.txi +++ /dev/null @@ -1,118 +0,0 @@ -@c begin{thebibliography}{Knu86d} - -@item [Bil87] -Neenie Billawala. -Write-white printing engines and tuning fonts with Metafont. -@cite{TUGboat}, 8(1):29--32, April 1987. -@url{https://tug.org/TUGboat/tb08-1/tb17billawala.pdf}. - -@item [Hob89] -John D. Hobby. -A Metafont-like system with PS output. -@cite{TUGboat}, 10(4):505--512, December 1989. -@url{https://tug.org/metapost}. - -@item [Hob92] -John D. Hobby. -A User's Manual for MetaPost. -Technical Report CSTR-162, AT&T Bell Laboratories, 1992. - -@item [Hob93] -John D. Hobby. -Drawing Graphs with MetaPost. -Technical Report CSTR-164, AT&T Bell Laboratories, 1993. - -@item [HS91] -Samuel P. Harbison and Guy L. Steele Jr. -@cite{C---A Reference Manual}. -Prentice-Hall, Upper Saddle River, NJ 07458, USA, third edition, 1991. -An authoritative reference to the C programming language, and a good - companion to Kernighan and Ritchie. - -@item [KL93] -Donald E. Knuth and Silvio Levy. -@cite{The CWEB System of Structured Documentation, Version 3.0}. -Addison-Wesley, Reading, MA, USA, 1993. -@url{https://ctan.org/pkg/cweb}. - -@item [Knu84] -Donald E. Knuth. -A torture test for @TeX{}. -Report No. STAN-CS-84-1027, Stanford University, Department of Computer - Science, 1984. - -@item [Knu86a] -Donald E. Knuth. -A Torture Test for METAFONT. -Report No. STAN-CS-86-1095, Stanford University, Department of Computer - Science, 1986. - -@item [Knu86b] -Donald E. Knuth. -@cite{The @TeX{}book}, volume A of @cite{Computers and Typesetting}. -Addison-Wesley, Reading, MA, USA, 1986. - -@item [Knu86c] -Donald E. Knuth. -@cite{@TeX{}: The Program}, volume B of @cite{Computers and Typesetting}. -Addison-Wesley, Reading, MA, USA, 1986. - -@item [Knu86d] -Donald E. Knuth. -@cite{The METAFONTbook}, volume C of @cite{Computers and Typesetting}. -Addison-Wesley, Reading, MA, USA, 1986. - -@item [Knu86e] -Donald E. Knuth. -@cite{METAFONT: The Program}, volume D of @cite{Computers and - Typesetting}. -Addison-Wesley, Reading, MA, USA, 1986. - -@item [Knu86f] -Donald E. Knuth. -@cite{Computer Modern Typefaces}, volume E of @cite{Computers and - Typesetting}. -Addison-Wesley, Reading, MA, USA, 1986. - -@item [Knu89] -Donald E. Knuth. -The errors of @TeX{}. -@cite{Software---Practice and Experience}, 19(7):607--681, July - 1989. -This is an updated version of Knuth:1988:ET. - -@item [Knu90] -Donald Knuth. -Virtual Fonts: More Fun for Grand Wizards. -@cite{TUGboat}, 11(1):13--23, April 1990. -@url{https://tug.org/TUGboat/tb11-1/tb27knut.pdf}. - -@item [Knu92] -Donald E. Knuth. -@cite{Literate Programming}. -CSLI Lecture Notes Number 27. Stanford University Center for the Study of - Language and Information, Stanford, CA, USA, 1992. - -@item [Lam94] -Leslie Lamport. -@cite{@LaTeX{}: A Document Preparation System: User's Guide and Reference - Manual}. -Addison-Wesley, Reading, MA, USA, second edition, 1994. -Reprinted with corrections, 1996. - -@item [Lia83] -Franklin Mark Liang. -Word hy-phen-a-tion by com-pu-ter. -Technical Report STAN-CS-83-977, Stanford University, August 1983. -@url{https://tug.org/docs/liang/liang-thesis.pdf}. - -@item [Mac91] -Pierre A. MacKay. -Looking at the pixels: Quality control for 300 dpi laser printer fonts, - especially Metafonts. -In Robert A. Morris and Jacques Andre, editors, @cite{Raster Imaging and - Digital Typography II---Papers from the second RIDT meeting, held in - Boston, Oct. 14--16, 1991}, pages 205--215, New York, 1991. Cambridge - University Press. - -@c end{thebibliography} diff --git a/Build/source/texk/web2c/doc/web2c.info b/Build/source/texk/web2c/doc/web2c.info deleted file mode 100644 index f287a96a42c..00000000000 --- a/Build/source/texk/web2c/doc/web2c.info +++ /dev/null @@ -1,4587 +0,0 @@ -This is web2c.info, produced by makeinfo version 6.7 from web2c.texi. - -This file documents the installation and use of the programs in Web2c, -an implementation of Donald Knuth's TeX system. - - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -2005, 2007, 2008, 2009, 2010-2021 Karl Berry & Olaf Weber. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that this permission notice may be stated in a -translation -INFO-DIR-SECTION TeX -START-INFO-DIR-ENTRY -* Web2c: (web2c). TeX, Metafont, and companion programs. -END-INFO-DIR-ENTRY - -INFO-DIR-SECTION Individual utilities -START-INFO-DIR-ENTRY -* bibtex: (web2c)bibtex invocation. Maintaining bibliographies. -* dvicopy: (web2c)dvicopy invocation. Virtual font expansion -* dvitomp: (web2c)dvitomp invocation. DVI to MPX (MetaPost pictures). -* dvitype: (web2c)dvitype invocation. DVI to human-readable text. -* gftodvi: (web2c)gftodvi invocation. Generic font proofsheets. -* gftopk: (web2c)gftopk invocation. Generic to packed fonts. -* gftype: (web2c)gftype invocation. GF to human-readable text. -* mf: (web2c)mf invocation. Creating typeface families. -* mft: (web2c)mft invocation. Prettyprinting Metafont source. -* mltex: (web2c)MLTeX. Multi-lingual TeX. -* mpost: (web2c)mpost invocation. Generating PostScript. -* patgen: (web2c)patgen invocation. Creating hyphenation patterns. -* pktogf: (web2c)pktogf invocation. Packed to generic fonts. -* pktype: (web2c)pktype invocation. PK to human-readable text. -* pltotf: (web2c)pltotf invocation. Property list to TFM. -* pooltype: (web2c)pooltype invocation. Display WEB pool files. -* tangle: (web2c)tangle invocation. WEB to Pascal. -* tex: (web2c)tex invocation. Typesetting. -* tftopl: (web2c)tftopl invocation. TFM -> property list. -* vftovp: (web2c)vftovp invocation. Virtual font -> virtual pl. -* vptovf: (web2c)vptovf invocation. Virtual pl -> virtual font. -* weave: (web2c)weave invocation. WEB to TeX. -END-INFO-DIR-ENTRY - - -File: web2c.info, Node: Top, Next: Introduction, Up: (dir) - -Web2c -***** - -This document describes how to install and use the programs in the Web2c -implementation of the TeX system, especially for Unix systems. It -corresponds to Web2c version 2021, released in February 2021. - -* Menu: - -* Introduction:: A brief introduction. -* Installation:: How to compile and install Web2c. -* Commonalities:: Option syntax, standard options, memory dumps. -* Three programs:: TeX, Metafont, MetaPost have much in common. -* TeX:: Typesetting. -* Metafont:: Typeface design. -* MetaPost:: Technical illustrations. -* BibTeX:: Reusable bibliographies. -* WEB:: Literate programming. -* DVI utilities:: DVI expansion. -* Font utilities:: Font format conversion. -* Legalisms:: Blah blah blah. -* References:: Books and such. -* Index:: General index. - - -File: web2c.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top - -1 Introduction -************** - -This manual corresponds to version 2021 of Web2c, released in February -2021. - - "Web2c" is the name of a TeX implementation, originally for Unix, but -now also running under various operating systems. By "TeX -implementation", we mean all of the standard programs developed by the -Stanford TeX project directed by Donald E. Knuth: Metafont, DVItype, -GFtoDVI, BibTeX, Tangle, etc., as well as TeX itself. Other programs -are also included: DVIcopy, written by Peter Breitenlohner, MetaPost and -its utilities (derived from Metafont), by John Hobby, etc. - - General strategy: Web2c works, as its name implies, by translating -the WEB source in which TeX is written into C source code. Its output -is not self-contained, however; it makes extensive use of many macros -and functions in a library (the 'web2c/lib' directory in the sources). -Therefore, it will not work without change on an arbitrary WEB program. - - Availability: All of Web2c is freely available--"free" both in the -sense of no cost (free ice cream) and of having the source code to -modify and/or redistribute (free speech). *Note -(kpathsea)unixtex.ftp::, for the practical details of how to obtain -Web2c. - - Different parts of the Web2c distribution have different licensing -terms, however, reflecting the different circumstances of their -creation; consult each source file for exact details. The main -practical implication for redistributors of Web2c is that most of the -executables are covered by the GNU General Public License or GNU Lesser -General Public License, and therefore anyone who gets a binary -distribution must also be able to get the sources, as explained by the -terms of the GPL (. The GPL covers the Web2c -executables, including 'tex', because the Free Software Foundation -sponsored the initial development of the Kpathsea library that Web2c -uses. The basic source files from Stanford, however, have their own -copyright terms or are in the public domain, and are not covered by the -GPL. - - History: Tomas Rokicki originated the TeX-to-C system in 1987, -working from the first change files for TeX under Unix, which were done -primarily by Howard Trickey and Pavel Curtis. Tim Morgan then took over -development and maintenance for a number of years; the name changed to -Web-to-C somewhere in there. In 1990, Karl Berry became the maintainer. -He made many changes to the original sources, and started using the -shorter name Web2c. In 1997, Olaf Weber took over, and then in 2006, -Karl started taking care of it again. No significant development or -changes have been needed for many years. Dozens of other people have -contributed; their names are listed in the 'ChangeLog' files. - - Other acknowledgements by Karl: The University of Massachusetts at -Boston (particularly Rick Martin and Bob Morris) provided computers and -ftp access to me for many years. Richard Stallman at the Free Software -Foundation employed me while I wrote the original path searching library -(for the GNU font utilities). (rms also gave us Emacs, GDB, and GCC, -without which I cannot imagine developing Web2c.) And, of course, TeX -would not exist in the first place without Donald E. Knuth. - - Further reading: *Note References::. - - -File: web2c.info, Node: Installation, Next: Commonalities, Prev: Introduction, Up: Top - -2 Installation -************** - -(A copy of this chapter is in the distribution file 'web2c/INSTALL'.) - - Installing Web2c is mostly the same as installing any other -Kpathsea-using program. Therefore, for the basic steps involved, see -*note (kpathsea)Installation::. (A copy is in the file -'kpathsea/INSTALL'.) - - One peculiarity to Web2c is that the source distribution comes in two -files: 'web.tar.gz' and 'web2c.tar.gz'. You must retrieve and unpack -them both. (We have two because the former archive contains the very -large and seldom-changing original WEB source files.) *Note -(kpathsea)unixtex.ftp::. - - Another peculiarity is the MetaPost program. Although it has been -installed previously as 'mp', as of Web2c 7.0 the installed name is now -'mpost', to avoid conflict with the 'mp' program that does -prettyprinting. This approach was recommended by the MetaPost author, -John Hobby. If you as the TeX administrator wish to make it available -under its shorter name as well, you will have to set up a link or some -such yourself. And of course individual users can do the same. - - For solutions to common installation problems and information on how -to report a bug, see the file 'kpathsea/BUGS' (*note (kpathsea)Bugs::). -See also the Web2c home page, . - - Points worth repeating: - - * Before starting the standard compilation and installation you must - install the basic fonts, macros, and other library files. *Note - (kpathsea)Installation::. - - * If you do not wish to use the standard file locations, see *note - (kpathsea)Changing search paths::. - - * Some Web2c features are enabled or disabled at 'configure' time, as - described in the first section below. - -* Menu: - -* configure options:: Especially -with and -enable. -* Compile-time options:: Unusual -D's. -* Additional targets:: Breaking down the task. -* Triptrap:: Running the torture tests. - - -File: web2c.info, Node: configure options, Next: Compile-time options, Up: Installation - -2.1 'configure' options -======================= - -This section gives pointers to descriptions of the '--with' and -'--enable' 'configure' arguments that Web2c accepts. Some are specific -to Web2c, others are generic to all Kpathsea-using programs. - - For a list of all the options 'configure' accepts, run 'configure ---help'. The generic options are listed first, and the package-specific -options come last. - - For a description of the generic options (which mainly allow you to -specify installation directories) and basic 'configure' usage, see *note -Running 'configure' scripts: (autoconf)Invoking configure, a copy is in -the file 'kpathsea/CONFIGURE'. - -'--disable-dump-share' - Do not make fmt/base/mem files sharable across different endian - architectures. *Note Hardware and memory dumps::. - -'--without-maketexmf-default' -'--without-maketexpk-default' -'--without-maketextfm-default' -'--with-maketextex-default' - Enable or disable the dynamic generation programs. *Note - (kpathsea)mktex configuration::. The defaults are the inverse of - the options, i.e., everything is enabled except 'mktextex'. - -'--enable-shared' - Build Kpathsea as a shared library. *Note (kpathsea)Shared - library::. - -'--with-editor=CMD' - Change the default editor invoked by the 'e' interactive command. - *Note Editor invocation::. - -'--with-epsfwin' -'--with-hp2627win' -'--with-mftalkwin' -'--with-nextwin' -'--with-regiswin' -'--with-suntoolswin' -'--with-tektronixwin' -'--with-unitermwin' -'--with-x' -'--with-x-toolkit=KIT' -'--with-x11win' -'--with-x11' - Define Metafont graphics support; by default, no graphics support - is enabled. *Note Online Metafont graphics::. - -'--x-includes=DIR' -'--x-libraries=DIR' - Define the locations of the X11 include files and libraries; by - default, 'configure' does its best to guess). *Note - (autoconf)Optional Features::. A copy is in 'kpathsea/CONFIGURE'. - - -File: web2c.info, Node: Compile-time options, Next: Additional targets, Prev: configure options, Up: Installation - -2.2 Compile-time options -======================== - -In addition to the 'configure' options listed in the previous section, -there are a few things that can be affected at compile-time with C -definitions, rather than with 'configure'. Using any of these is -unusual. - - To specify extra compiler flags ('-DNAME' in this case), the simplest -thing to do is: - make XCFLAGS="CCOPTIONS" -You can also set the 'CFLAGS' environment variable before running -'configure'. *Note (kpathsea)configure environment::. - - Anyway, here are the possibilities: - -'-DFIXPT' -'-DNO_MF_ASM' - Use the original WEB fixed-point routines for Metafont and MetaPost - arithmetic calculations regarding fractions. By default, - assembly-language routines are used on x86 hardware with GNU C - (unless 'NO_MF_ASM' is defined), and floating-point routines are - used otherwise. - -'-DIPC_DEBUG' - Report on various interprocess communication activities. *Note IPC - and TeX: IPC and TeX. - - -File: web2c.info, Node: Additional targets, Next: Triptrap, Prev: Compile-time options, Up: Installation - -2.3 Additional targets -====================== - -Web2c has several Make targets besides the standard ones. You can -invoke these either in the top level directory of the source -distribution (the one containing 'kpathsea/' and 'web2c/'), or in the -'web2c/' directory. - -'c-sources' - Make only the C files, translated from the Web sources, presumably - because you want to take them to a non-Unix machine. - -'formats' -'install-formats' - Make or install all the memory dumps (*note Memory dumps::). By - default, the standard plain formats plus 'latex.fmt' are made. You - can add other formats by redefining the 'fmts', 'bases', and 'mems' - variables. See the top of 'web2c/Makefile' for the possibilities. - -'fmts' -'install-fmts' - Make or install the TeX '.fmt' files. *Note Initial TeX::. - -'bases' -'install-bases' - - Make or install the Metafont '.base' files. *Note Initial - Metafont::. - -'mems' -'install-mems' - Make or install the MetaPost '.mem' files. *Note Initial - MetaPost::. - -'triptrap' -'trip' -'trap' -'mptrap' - To run the torture tests for TeX, Metafont, and MetaPost - (respectively). See the next section. - - -File: web2c.info, Node: Triptrap, Prev: Additional targets, Up: Installation - -2.4 Trip, trap, and mptrap: Torture tests -========================================= - -To validate your TeX, Metafont, and MetaPost executables, run 'make -triptrap'. This runs the trip, trap, and mptrap "torture tests". See -the files 'triptrap/tripman.tex', 'triptrap/trapman.tex', and -'triptrap/mptrap.readme' for detailed information and background on the -tests. - - The differences between your executables' behavior and the standard -values will show up on your terminal. The usual differences (these are -all acceptable) are: - - * string usage and table sizes; - * glue set ratios; - * 'down4', 'right4', and 'y4' commands in DVItype output; - * dates and times. - -Any other differences are trouble. The most common culprit in the past -has been compiler bugs, especially when optimizing. *Note TeX or -Metafont failing: (kpathsea)TeX or Metafont failing. - - The files 'trip.diffs', 'mftrap.diffs', and 'mptrap.diffs' in the -'triptrap' directory show the standard diffs against the original -output. If you diff your diffs against these files, you should come up -clean. For example - make trip >&mytrip.diffs - diff triptrap/trip.diffs mytrip.diffs - - To run the tests separately, use the targets 'trip', 'trap', and -'mptrap'. - - To run simple tests for all the programs as well as the torture -tests, run 'make check'. You can compare the output to the distributed -file 'tests/check.log' if you like. - - -File: web2c.info, Node: Commonalities, Next: Three programs, Prev: Installation, Up: Top - -3 Commonalities -*************** - -Many aspects of the TeX system are the same among more than one program, -so we describe those pieces together, here. - -* Menu: - -* Option conventions:: - or -, = or ' ' for values. -* Common options:: -help -version -verbose, and TeX/MF/MP options. -* Path searching:: Features of the common path searching library. -* Output file location:: TEXMFOUTPUT allows output in places other than '.'. - - -File: web2c.info, Node: Option conventions, Next: Common options, Up: Commonalities - -3.1 Option conventions -====================== - -To provide a clean and consistent behavior, we chose to have all these -programs use the GNU function 'getopt_long_only' to parse command lines. -However, we do use in a restricted mode, where all the options have to -come before the rest of the arguments. - - As a result, you can: - * use '-' or '--' to start an option name; - - * use any unambiguous abbreviation for an option name; - - * separate option names and values with either '=' or one or more - spaces; - - * use filenames that would otherwise look like options by putting - them after an option '--'. - - By convention, non-option arguments, if specified, generally define -the name of an input file, as documented for each program. - - If a particular option with a value is given more than once, it is -the last value that counts. - - For example, the following command line specifies the options 'foo', -'bar', and 'verbose'; gives the value 'baz' to the 'abc' option, and the -value 'xyz' to the 'quux' option; and specifies the filename '-myfile-'. - - -foo --bar -verb -abc=baz -quux karl --quux xyz -- -myfile- - - -File: web2c.info, Node: Common options, Next: Path searching, Prev: Option conventions, Up: Commonalities - -3.2 Common options -================== - -All of these programs accept the standard GNU '--help' and '--version' -options, and several programs accept '--verbose'. Rather than writing -identical descriptions for every program, they are described here. - -'--help' - Print a usage message listing basic usage and all available options - to standard output, then exit successfully. - -'--verbose' - Print progress reports to standard output. - -'--version' - Print the version number to standard output, then exit - successfully. - - TeX, Metafont, and MetaPost have a number of additional options in -common: - -'-cnf-line=STR' - Parse STR as if it were a line in the 'texmf.cnf' configuration - file, overriding all other settings. *Note (kpathsea)Path - searching options::. - -'-file-line-error' -'-no-file-line-error' - Change (or do not change) the way error messages are printed. The - alternate style looks like error messages from many compilers and - is easier to parse for some editors that invoke TeX. This option - used to be called '-file-line-error-style'. - -'-fmt=DUMPNAME' -'-base=DUMPNAME' -'-mem=DUMPNAME' - Use DUMPNAME instead of the program name or a '%&' line to - determine the name of the memory dump file read ('fmt' for TeX, - 'base' for Metafont, 'mem' for MetaPost). *Note Memory dumps::. - Also sets the program name to DUMPNAME if no '-progname' option was - given. - -'-halt-on-error' - Stop processing and exit when an error occurs, as opposed to the - normal process of trying to recover and continue. - -'-ini' - Enable the "initial" form of the program (*note Initial and - virgin::). This is implicitly set if the program name is 'initex' - resp. 'inimf'. - -'-interaction=STRING' - Set the interaction mode from the command line. The STRING must be - one of 'batchmode', 'nonstopmode', 'scrollmode', or - 'errorstopmode'. - -'-jobname=STRING' - Set the job name to STRING, instead of deriving it from the name of - the input file. - -'-kpathsea-debug=NUMBER' - Set path searching debugging flags according to the bits of NUMBER - (*note (kpathsea)Debugging::). You can also specify this in - 'KPATHSEA_DEBUG' environment variable (for all Web2c programs). - (The command line value overrides.) The most useful value is '-1', - to get all available output. - -'-output-directory=DIRNAME' - Specify the directory DIRNAME to which output files are written. - Also look for input files in DIRNAME first, before looking along - the normal search path. *Note Output file location::. - -'-parse-first-line' -'-no-parse-first-line' - Check or disable checking whether the first line of the main input - file starts with '%&', and parse it if it does. This line can be - used specify the format and/or a TCX file. - -'-progname=STRING' - Set program (and memory dump) name to STRING. This may affect the - search paths and other values used (*note (kpathsea)Config - files::). Using this option is equivalent to making a link named - STRING to the binary and then invoking the binary under that name. - *Note Memory dumps::. - -'-recorder' - Enable the filename recorder. This makes the program save a list - of the opened files into a file with (by default) extension '.fls'. - For Aleph, this option is always on, and the file has extension - '.ofl'. - - Ordinarily, the '.fls' file is written to the same location as the - '.log' file, for example, respecting '-output-directory' if it is - given (*note Output file location::). However, if TeX processing - is done on the command line (or in response to the '**' prompt), - the '.fls' might be written to the current directory, or include an - integer (the current pid), as in 'texput1234.fls'. You can use - '-jobname' to explicitly set the basename. - -'-translate-file=TCXFILE' - Use TCXFILE to define which characters are printable and - translations between the internal and external character sets. - Moreover, TCXFILE can be explicitly declared in the first line of - the main input file '%& -translate-file=TCXFILE'. This is the - recommended method for portability reasons. *Note TCX files::. - -'-8bit' - This option specifies that by default all characters should be - considered printable. If '-translate-file' was given as well, then - the TCX file may mark characters as non-printable. This is a no-op - in engines natively supporting Unicode. - - -File: web2c.info, Node: Path searching, Next: Output file location, Prev: Common options, Up: Commonalities - -3.3 Path searching -================== - -All of the Web2c programs, including TeX, which do path searching use -the Kpathsea routines to do so. The precise names of the environment -and configuration file variables which get searched for particular file -formatted are therefore documented in the Kpathsea manual (*note -(kpathsea)Supported file formats::). Reading 'texmf.cnf' (*note -(kpathsea)Config files::), invoking 'mktex...' scripts (*note -(kpathsea)mktex scripts::), and so on are all handled by Kpathsea. - - The programs which read fonts make use of another Kpathsea feature: -'texfonts.map', which allows arbitrary aliases for the actual names of -font files; for example, 'Times-Roman' for 'ptmr8r.tfm'. The -distributed (and installed by default) 'texfonts.map' includes aliases -for many widely available PostScript fonts by their PostScript names. - - -File: web2c.info, Node: Output file location, Prev: Path searching, Up: Commonalities - -3.4 Output file location -======================== - -All the programs generally follow the usual convention for output files. -Namely, they are placed in the directory current when the program is -run, regardless of any input file location; or, in a few cases, output -is to standard output. - - For example, if you run 'tex /tmp/foo', for example, the output will -be in './foo.dvi' and './foo.log', not '/tmp/foo.dvi' and -'/tmp/foo.log'. - - You can use the '-output-directory' option to cause all output files -that would normally be written in the current directory to be written in -the specified directory instead. *Note Common options::. - - If the current directory is not writable, and '-output-directory' is -not specified, the main programs (TeX, Metafont, MetaPost, and BibTeX) -make an exception: if the config file or environment variable value -'TEXMFOUTPUT' is set (it is not by default), output files are written to -the directory specified. - - 'TEXMFOUTPUT' is also checked for input files, as TeX often generates -files that need to be subsequently read; for input, no suffixes (such as -'.tex') are added by default and no exhaustive path searching is done, -the input name is simply checked as given. - - -File: web2c.info, Node: Three programs, Next: TeX, Prev: Commonalities, Up: Top - -4 Three programs: Metafont, MetaPost, and TeX -********************************************* - -TeX, Metafont, and MetaPost have a number of features in common. -Besides the ones here, command-line options and other commonalities are -described in the previous section. - -* Menu: - -* Runtime options:: The 'texmf.cnf' configuration file. -* Initial and virgin:: Making memory dumps vs. production runs. -* Memory dumps:: .fmt/.base files for fast startup. -* Editor invocation:: The 'e' response at errors. -* \input filenames:: Filename delimiters and Kpathsea expansion. - - -File: web2c.info, Node: Runtime options, Next: Initial and virgin, Up: Three programs - -4.1 Runtime options -=================== - -Besides the configure- and compile-time options described in the -installation section (*note Installation::), you can control a number of -parameters in the 'texmf.cnf' runtime file read by Kpathsea (*note -(kpathsea)Config files::). - - The main purpose of 'texmf.cnf' is to specify search paths, but array -sizes and other options are also set there. Most are rather obscure. -Here are a few of the more interesting values: - -'main_memory' - Total words of memory available, for TeX, Metafont, and MetaPost. - Must remake the format file after changing. - -'extra_mem_bot' - Extra space for "large" TeX data structures (default 0): boxes, - glue, breakpoints, et al. If you use PiCTeX, you may well want to - set this. - -'expand_depth' - Limit on recursive expansion calls before TeX aborts (default - 10000). If a TeX program does an unterminated recursive expansion, - TeX will dutifully expand macros until the system's runtime stack - overflows, typically with a segmentation fault (SIGSEGV). This - parameter was introduced to minimize the chance of that unpleasant - (though not dangerous) crash, instead allowing TeX to quit with a - more informative message. - - The crash can still happen, though, if the system has an - exceptionally small memory allocation for its stack. There is no - quantitative way to determine the limit, and it does not seem worth - implementing system-dependent heuristics to guess at the number, - since it's highly improbable that any real TeX code will ever need - more than 10000 recursive expansions (it has never happened). For - the same reason, using the libsigsegv library - () does not seem worth the effort. - -'texmf_casefold_search' - *Note (kpathsea)Casefolding search::. - - Ideally all arrays would be dynamically expanded as necessary, so the -only limiting factor would be the amount of swap space available, or -some configurable limit much larger than can currently be supported. - - Unfortunately, implementing this is extremely difficult, as the fixed -size of arrays is assumed in many places throughout the source code. -These runtime limits are a practical compromise between the compile-time -limits in previous versions, and truly dynamic arrays. (On the other -hand, the Web2c BibTeX implementation does do true dynamic reallocation -of some arrays.) - - Nowadays there is rarely a reason to modify the values. But if you -do wish to modify 'texmf.cnf', in TeX Live the best approach is to put -your changes, and only your changes at the top of the TL installation -tree. That is, if the system 'texmf.cnf' is installed in -'/some/path/to/texlive/YYYY/texmf-dist/web2c/texmf.cnf' is put your -custom settings in '/some/path/to/texlive/YYY/texmf.cnf', where YYYY is -the year of installation (if you use that subdirectory; it's the -default). That way, unrelated changes to the system 'texmf.cnf' can -happen with normal updates, without affecting your local values. - - -File: web2c.info, Node: Initial and virgin, Next: Memory dumps, Prev: Runtime options, Up: Three programs - -4.2 Initial and virgin -====================== - -The TeX and Metafont programs each have two main variants, called -"initial" and "virgin". MetaPost no longer makes this distinction. - - The initial form is enabled if: - 1. the '-ini' option was specified; or - 2. the program name is 'initex' resp. 'inimf'; or - 3. the first line of the main input file is '%&ini'; -otherwise, the virgin form is used. - - The "virgin" form is the one generally invoked for production use. -The first thing it does is read a memory dump (*note Determining the -memory dump to use::), and then proceeds on with the main job. - - The "initial" form is generally used only to create memory dumps (see -the next section). It starts up more slowly than the virgin form, -because it must do lengthy initializations that are encapsulated in the -memory dump file. - - -File: web2c.info, Node: Memory dumps, Next: Editor invocation, Prev: Initial and virgin, Up: Three programs - -4.3 Memory dumps -================ - -In typical use, TeX and Metafont require a large number of macros to be -predefined; therefore, they support "memory dump" files, which can be -read much more efficiently than ordinary source code. - -* Menu: - -* Creating memory dumps:: -* Determining the memory dump to use:: -* Hardware and memory dumps:: - - -File: web2c.info, Node: Creating memory dumps, Next: Determining the memory dump to use, Up: Memory dumps - -4.3.1 Creating memory dumps ---------------------------- - -The programs all create memory dumps in slightly idiosyncratic (thought -substantially similar) way, so we describe the details in separate -sections (references below). The basic idea is to run the initial -version of the program (*note Initial and virgin::), read the source -file to define the macros, and then execute the '\dump' primitive. - - Also, each program uses a different filename extension for its memory -dumps, since although they are completely analogous they are not -interchangeable (TeX cannot read a Metafont memory dump, for example). - - Here is a list of filename extensions with references to examples of -creating memory dumps: - -TeX - ('.fmt') *Note Initial TeX: Initial TeX. - -Metafont - ('.base') *Note Initial Metafont::. - - When making memory dumps, the programs read environment variables and -configuration files for path searching and other values as usual. If -you are making a new installation and have environment variables -pointing to an old one, for example, you will probably run into -difficulties. - - -File: web2c.info, Node: Determining the memory dump to use, Next: Hardware and memory dumps, Prev: Creating memory dumps, Up: Memory dumps - -4.3.2 Determining the memory dump to use ----------------------------------------- - -The virgin form (*note Initial and virgin::) of each program always -reads a memory dump before processing normal source input. All three -programs determine the memory dump to use in the same way: - - 1. If the first non-option command-line argument begins with '&', the - program uses the remainder of that argument as the memory dump - name. For example, running 'tex \&super' reads 'super.fmt'. (The - backslash protects the '&' against interpretation by the shell.) - - 2. If the '-fmt' resp. '-base' option is specified, its value is used. - - 3. If the '-progname' option is specified, its value is used. - - 4. If the first line of the main input file (which must be specified - on the command line, not in response to '**') is '%&DUMP', and DUMP - is an existing memory dump of the appropriate type, DUMP is used. - - The first line of the main input file can also specify which - character translation file is to be used: - '%&-translate-file=TCXFILE' (*note TCX files::). - - These two roles can be combined: '%&DUMP -translate-file=TCXFILE'. - If this is done, the name of the dump must be given first. - - 5. Otherwise, the program uses the program invocation name, most - commonly 'tex' resp. 'mf'. For example, if 'latex' is a link to - 'tex', and the user runs 'latex foo', 'latex.fmt' will be used. - - -File: web2c.info, Node: Hardware and memory dumps, Prev: Determining the memory dump to use, Up: Memory dumps - -4.3.3 Hardware and memory dumps -------------------------------- - -By default, memory dump files are generally sharable between -architectures of different types; specifically, on machines of different -endianness (*note (libc)Byte order::). (This is a feature of the Web2c -implementation, and is not true of all TeX implementations.) If you -specify '--disable-dump-share' to 'configure', however, memory dumps -will be endian-dependent. - - The reason to do this is speed. To achieve endian-independence, the -reading of memory dumps on LittleEndian architectures, such as PC's and -DEC architectures, is somewhat slowed (all the multibyte values have to -be swapped). Usually, this is not noticeable, and the advantage of -being able to share memory dumps across all platforms at a site far -outweighs the speed loss. But if you're installing Web2c for use on -LittleEndian machines only, perhaps on a PC being used only by you, you -may wish to get maximum speed. - - TeXnically, even without '--disable-dump-share', sharing of '.fmt' -files cannot be guaranteed to work. Floating-point values are always -written in native format, and hence will generally not be readable -across platforms. Fortunately, TeX uses floating point only to -represent glue ratios, and all common formats (plain, LaTeX, AMSTeX, -...) do not do any glue setting at '.fmt'-creation time. Metafont does -not use floating point in any dumped value at all. - - Incidentally, different memory dump files will never compare equal -byte-for-byte, because the program always dumps the current date and -time. So don't be alarmed by just a few bytes difference. - - If you don't know what endianness your machine is, and you're -curious, here is a little C program to tell you. (The 'configure' -script contains a similar program.) This is from the book 'C: A -Reference Manual', by Samuel P. Harbison and Guy L. Steele Jr. (*note -References::). - - main () - { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - if (u.c[0] == 1) - printf ("LittleEndian\n"); - else if (u.c[sizeof (long) - 1] == 1) - printf ("BigEndian\n"); - else - printf ("unknownEndian"); - - exit (u.c[sizeof (long) - 1] == 1); - } - - -File: web2c.info, Node: Editor invocation, Next: \input filenames, Prev: Memory dumps, Up: Three programs - -4.4 Editor invocation -===================== - -TeX, Metafont, and MetaPost all (by default) stop and ask for user -intervention at an error. If the input came from a file, and the user -responds with 'e' or 'E', the program invokes an editor. - - Specifying '--with-editor=CMD' to 'configure' sets the default editor -command string to CMD. The environment variables/configuration values -'TEXEDIT', 'MFEDIT', and 'MPEDIT' (respectively) override this. If -'--with-editor' is not specified, the default is 'vi +%d %s' on Unix, -and an invocation of the TeXworks editor on Windows. (See 'texmf.cnf' -for the precise values.) - - In this string, '%d' is replaced by the line number of the error, and -'%s' is replaced by the name of the current input file. - - -File: web2c.info, Node: \input filenames, Prev: Editor invocation, Up: Three programs - -4.5 '\input' filenames -====================== - -TeX, Metafont, and MetaPost source programs can all read other source -files with the '\input' (TeX) and 'input' (MF and MP) primitives: - \input NAME % in TeX - - The file NAME can always be terminated with whitespace; for Metafont -and MetaPost, the statement terminator ';' also works. (LaTeX and other -macro packages provide other interfaces to '\input' that allow different -notation; here we are concerned only with the primitive operation.) - - As (allowed) extensions to standard TeX, Web2c also supports -specifying the filename in double quotes ('"some name"') and in braces -('{"some name"}'), which is convenient for filenames containing spaces -or other special characters, as described in the sections below. - - In all cases, space tokens are ignored after the filename is read. - - Also, double quote ('"') characters are ignored within the filename; -there is no way to read files whose names contain a '"'. - - However, for maximal portability of your document across systems, use -only the characters 'a'-'z', '0'-'9', and at most one '.'. Do not use -anything but simple filenames, since directory separators vary among -systems; instead, add the necessary directories to the appropriate -search path. - -* Menu: - -* Quotes: \input quoted filename. \input "some name" -* Braces: \input braced filename. \input {some name} -* Caveats: \input filename caveats. Tokenization, nulls, Kpathsea expansion. - - -File: web2c.info, Node: \input quoted filename, Next: \input braced filename, Up: \input filenames - -4.5.1 '\input' quoted filename: '\input "some name"' ----------------------------------------------------- - -As of Web2c version 7.5.3 (2004), double-quote characters can be used to -include spaces or other special characters. In typical use, the '"' -characters surround the entire filename: - \input "filename with spaces" - - Technically, the quote characters can be used inside the name, and -can enclose any characters, as in: - \input filename" "with" "spaces - - One more point. In LaTeX, the quotes are needed inside the braces of -its '\input' macro, thus: - \input{a b} % fails - \input{"a b"} % ok - - There is no way to quote the quote character. - - -File: web2c.info, Node: \input braced filename, Next: \input filename caveats, Prev: \input quoted filename, Up: \input filenames - -4.5.2 '\input' braced filename: '\input{some name}' ---------------------------------------------------- - -As of Web2c 2020, '\input' filenames in TeX engines (this does not apply -in Metafont and MetaPost) can also be specified within a TeX group, -typically curly braces. For example: - \input{filename with spaces} - - As always with TeX, the brace characters are not hardwired; what -counts is the category code: the first token after the '\input' must be -of catcode 1 (begin group), and it is matched with the next character of -catcode 2 (end group). - - Within the group-delimited filename, braces are treated as normal -characters. - - As with all forms of filenames, following spaces are ignored (after -the end group), and double quote ('"') characters are ignored within the -filename. - - -File: web2c.info, Node: \input filename caveats, Prev: \input braced filename, Up: \input filenames - -4.5.3 '\input' filename caveats -------------------------------- - -The quoting mechanisms just described come into play _after_ TeX has -tokenized and expanded the input. So, multiple spaces and tabs will -generally be seen as a single space, active characters such as '~' are -expanded first (generally causing an error), and so on. More examples -below. - - On the other hand, various C library routines and Unix itself use the -null byte (character code zero, ASCII NUL) to terminate strings. So -filenames in Web2c cannot contain nulls, even though TeX itself does not -treat NUL specially. - - Finally, the present Web2c implementation does '~' and '$' expansion -on NAME, unlike Knuth's original implementation. Thus: - \input ~jsmith/$foo.bar - will dereference the environment variable or Kpathsea config file -value 'foo' and read that file, extended with '.bar', in user 'jsmith''s -home directory. You can also use braces in the variable expansion, as -in '${foo}bar', if you want to follow the variable name with a letter, -numeral, or '_'. - - (So another way to get a program to read a filename containing -whitespace is to define an environment variable and dereference it.) - - In all the common TeX formats (plain TeX, LaTeX, ConTeXt, AMSTeX, -...), the characters '~' and '$' have special category codes, so to -actually use these in a document you have to change their catcodes or -use '\string'. - - -File: web2c.info, Node: TeX, Next: Metafont, Prev: Three programs, Up: Top - -5 TeX: Typesetting -****************** - -TeX is a typesetting system: it was especially designed to handle -complex mathematics, as well as most ordinary text typesetting. - - TeX is a batch language, like C or Pascal, and not an interactive -"word processor": you compile a TeX input file into a corresponding -device-independent (DVI) file (and then translate the DVI file to the -commands for a particular output device). This approach has both -considerable disadvantages and considerable advantages. For a complete -description of the TeX language, see 'The TeXbook' (*note References::). -Many other books on TeX, introductory and otherwise, are available. - -* Menu: - -* tex invocation:: Invoking TeX. -* Initial TeX:: Making format files. -* Formats:: Major TeX macro packages. -* Languages and hyphenation:: TeX supports many human languages. -* Shell escapes:: Running subprograms from TeX. -* IPC and TeX:: DVI output to a socket. -* TeX extensions:: Additional engines with additional features. - - -File: web2c.info, Node: tex invocation, Next: Initial TeX, Up: TeX - -5.1 'tex' invocation -==================== - -TeX (usually invoked as 'tex') formats the given text and commands, and -outputs a corresponding device-independent representation of the typeset -document. This section merely describes the options available in the -Web2c implementation. For a complete description of the TeX typesetting -language, see 'The TeXbook' (*note References::). - - TeX, Metafont, and MetaPost process the command line (described here) -and determine their memory dump (fmt) file in the same way (*note Memory -dumps::). Synopses: - - tex [OPTION]... [TEXNAME[.tex]] [TEX-COMMANDS] - tex [OPTION]... \FIRST-LINE - tex [OPTION]... &FMT ARGS - - TeX searches the usual places for the main input file TEXNAME (*note -(kpathsea)Supported file formats::), extending TEXNAME with '.tex' if -necessary. To see all the relevant paths, set the environment variable -'KPATHSEA_DEBUG' to '-1' before running the program. - - After TEXNAME is read, TeX processes any remaining TEX-COMMANDS on -the command line as regular TeX input. Also, if the first non-option -argument begins with a TeX escape character (usually '\'), TeX processes -all non-option command-line arguments as a line of regular TeX input. - - If no arguments or options are specified, TeX prompts for an input -file name with '**'. - - TeX writes the main DVI output to the file 'BASETEXNAME.dvi', where -BASETEXNAME is the basename of TEXNAME, or 'texput' if no input file was -specified. A DVI file is a device-independent binary representation of -your TeX document. The idea is that after running TeX, you translate -the DVI file using a separate program to the commands for a particular -output device, such as a PostScript printer (*note Introduction: -(dvips)Top.) or an X Window System display (see xdvi(1)). - - TeX also reads TFM files for any fonts you load in your document with -the '\font' primitive. By default, it runs an external program named -'mktextfm' to create any nonexistent TFM files. You can disable this at -configure-time or runtime (*note (kpathsea)mktex configuration::). This -is enabled mostly for the sake of the EC fonts, which can be generated -at any size. - - TeX can write output files, via the '\openout' primitive; this opens -a security hole vulnerable to Trojan horse attack: an unwitting user -could run a TeX program that overwrites, say, '~/.rhosts'. (MetaPost -has a 'write' primitive with similar implications). To alleviate this -and similar problems the functions 'kpathsea_out_name_ok' and -'kpathsea_in_name_ok' from the Kpathse library (*note (kpathsea)Calling -sequence::) are used to determine if a given filename is acceptable to -be opened for output or input, depending on the setting of the -configuration variables 'openout_any' and 'openin_any': 'a' (for "any", -the default for 'openin_any'), 'r' (for "restricted"), or 'p' (for -"paranoid", the default for 'openout_any'). - - In any case, all '\openout' filenames are recorded in the log file, -except those opened on the first line of input, which is processed when -the log file has not yet been opened. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-enc' -'-[no]-file-line-error' -'-fmt=FMTNAME' -'-halt-on-error' -'-ini' -'-interaction=STRING' -'-ipc' -'-ipc-start' -'-jobname=STRING' -'-kpathsea-debug=NUMBER' -'-[no]parse-first-line' -'-output-directory' -'-progname=STRING' -'-recorder' -'-translate-file=TCXFILE' -'-8bit' - These options are common to TeX, Metafont, and MetaPost. *Note - Common options::. - -'-enc' - Enable encTeX extensions, such as '\mubyte'. This can be used to - support the Unicode UTF-8 input encoding, although using an engine - with native Unicode support is more common nowadays. - . - -'-ipc' -'-ipc-start' - With either option, TeX writes its DVI output to a socket as well - as to the usual '.dvi' file. With '-ipc-start', TeX also opens a - server program at the other end to read the output. *Note IPC and - TeX: IPC and TeX. - - These options are available only if the '--enable-ipc' option was - specified to 'configure' during installation of Web2c. - -'-mktex=FILETYPE' -'-no-mktex=FILETYPE' - Turn on or off the 'mktex' script associated with FILETYPE. For - TeX proper, FILETYPE can only be 'tex' and 'tfm', but for pdfTeX - and luaTeX, it can also be 'pk'. - -'-mltex' - If we are 'INITEX' (*note Initial and virgin::), enable MLTeX - extensions such as '\charsubdef'. Implicitly set if the program - name is 'mltex'. *Note MLTeX: MLTeX. - -'-output-comment=STRING' - Use STRING as the DVI file comment. Ordinarily, this comment - records the date and time of the TeX run, but if you are doing - regression testing, you may not want the DVI file to have this - spurious difference. This is also taken from the environment - variable and config file value 'output_comment'. - -'-shell-escape' -'-no-shell-escape' -'-shell-restricted' - Enable, or disable, or enable with restrictions the - '\write18{SHELL-COMMAND}' feature for external executing shell - commands. *Note Shell escapes::. - -'-enable-write18' -'-disable-write18' - Synonyms for '-shell-escape' and '-no-shell-escape', for - compatibility with MiKTeX. (MiKTeX also accepts both pairs of - options.) *Note Shell escapes::. - -'-src-specials' -'-src-specials=STRING' - This option makes TeX output specific source information using - '\special' commands in the DVI file. These '\special' track the - current file name and line number. - - Using the first form of this option, the '\special' commands are - inserted automatically. - - In the second form of the option, STRING is a comma separated list - of the following values: 'cr', 'display', 'hbox', 'math', 'par', - 'parend', 'vbox'. You can use this list to specify where you want - TeX to output such commands. For example, '-src-specials=cr,math' - will output source information every line and every math formula. - - These commands can be used with the appropriate DVI viewer and text - editor to switch from the current position in the editor to the - same position in the viewer and back from the viewer to the editor. - - This option works by inserting '\special' commands into the token - stream, and thus in principle these additional tokens can be - recovered or seen by the tricky-enough macros. If you run across a - case, let us know, because this counts as a bug. However, such - bugs are very hard to fix, requiring significant changes to TeX, so - please don't count on it. - - Redefining '\special' will not affect the functioning of this - option. The commands inserted into the token stream are hard-coded - to always use the '\special' primitive. - - TeX does not pass the trip test when this option is enabled. - - -File: web2c.info, Node: Initial TeX, Next: Formats, Prev: tex invocation, Up: TeX - -5.2 Initial TeX -=============== - -The "initial" form of TeX is invoked by 'tex -ini'. It does lengthy -initializations avoided by the "virgin" ('vir') form, so as to be -capable of dumping '.fmt' files (*note Memory dumps::). For a detailed -comparison of virgin and initial forms, *note Initial and virgin::. - - For a list of options and other information, *note tex invocation::. - - Unlike Metafont and MetaPost, many format files are commonly used -with TeX. The standard one implementing the features described in the -'TeXbook' is 'plain.fmt', also known as 'tex.fmt' (again, *note Memory -dumps::). It is created by default during installation, but you can -also do so by hand if necessary (e.g., if an update to 'plain.tex' is -issued): - tex -ini '\input plain \dump' -(The quotes prevent interpretation of the backslashes from the shell.) -Then install the resulting 'plain.fmt' in '$(fmtdir)' -('/usr/local/share/texmf/web2c' by default), and link 'tex.fmt' to it. - - The necessary invocation for generating a format file differs for -each format, so instructions that come with the format should explain. -The top-level 'web2c' Makefile has targets for making most common -formats: plain latex amstex texinfo eplain. *Note Formats::, for more -details on TeX formats. - - -File: web2c.info, Node: Formats, Next: Languages and hyphenation, Prev: Initial TeX, Up: TeX - -5.3 Formats -=========== - -TeX "formats" are large collections of macros, often dumped into a -'.fmt' file (*note Memory dumps::) by 'tex -ini' (*note Initial TeX::). -A number of formats are in reasonably widespread use, and the Web2c -Makefile has targets to make the versions current at the time of -release. You can change which formats are automatically built by -setting the 'fmts' Make variable; by default, only the 'plain' and -'latex' formats are made. - - Nowadays, the formats are generally installed and updated as part of -a larger TeX distribution, such as TeX Live (). - -latex - The most widely used format. The current release is named - 'LaTeX2e'; new versions are released approximately every six - months, with patches issued as needed. The old release was called - 'LaTeX 2.09', and is no longer maintained or supported. LaTeX - attempts to provide generic markup instructions, such as - "emphasize", instead of specific typesetting instructions, such as - "use the 10pt Computer Modern italic font". The LaTeX home page: - . - -context - ConTeXt is an independent macro package which has a basic document - structuring approach similar to LaTeX. It also supports creating - interactive PDF files and has integrated MetaPost support, among - many other interesting features. The ConTeXt home page: - . - -amstex - The official typesetting system of the American Mathematical - Society. Like LaTeX, it encourages generic markup commands. The - AMS also provides many LaTeX packages for authors who prefer LaTeX. - Taken together, they are used to produce nearly all AMS - publications, e.g., 'Mathematical Reviews'. The AMSTeX home page: - . - -texinfo - The documentation system developed and maintained by the Free - Software Foundation for their software manuals. It can be - automatically converted into plain text, a machine-readable on-line - format called 'info', HTML, etc. The Texinfo home page: - . - -eplain - The "expanded plain" format provides various common features (e.g., - symbolic cross-referencing, tables of contents, indexing, citations - using BibTeX), for those authors who prefer to handle their own - high-level formatting. The Eplain home page: - . - -slitex - An obsolete LaTeX 2.09 format for making slides. It is replaced by - the 'slides' document class, although the 'beamer' package is the - most commonly method for making slides nowadays. The Beamer page - on CTAN: . - - -File: web2c.info, Node: Languages and hyphenation, Next: Shell escapes, Prev: Formats, Up: TeX - -5.4 Languages and hyphenation -============================= - -TeX supports most natural languages. See also *note TeX extensions: TeX -extensions. - -* Menu: - -* MLTeX:: Multi-lingual TeX. -* TCX files:: Support for different character sets & fonts. -* patgen invocation:: Creating hyphenation patterns. - - -File: web2c.info, Node: MLTeX, Next: TCX files, Up: Languages and hyphenation - -5.4.1 MLTeX: Multi-lingual TeX ------------------------------- - -Multi-lingual TeX ('mltex') is an extension of TeX originally written by -Michael Ferguson and now updated and maintained by Bernd Raichle. With -the advent of Unicode, it has become obsolete, though it is still -supported in Web2c in the event of bugs or compilation bugs. - - MLTeX allows the use of non-existing glyphs in a font by declaring -glyph substitutions. These are restricted to substitutions of an -accented character glyph, which need not be defined in the current font, -by its appropriate '\accent' construction using a base and accent -character glyph, which do have to exist in the current font. This -substitution is automatically done behind the scenes, if necessary, and -thus MLTeX additionally supports hyphenation of words containing an -accented character glyph for fonts missing this glyph (e.g., Computer -Modern). Standard TeX suppresses hyphenation in this case. - - MLTeX works at '.fmt'-creation time: the basic idea is to specify the -'-mltex' option to TeX when you '\dump' a format. Then, when you -subsequently invoke TeX and read that '.fmt' file, the MLTeX features -described below will be enabled. - - Generally, you use special macro files to create an MLTeX '.fmt' -file. - - The sections below describe the two new primitives that MLTeX -defines. Aside from these, MLTeX is completely compatible with standard -TeX. - -* Menu: - -* \charsubdef:: Character substitution definitions. -* \tracingcharsubdef:: Tracing substitutions. - - -File: web2c.info, Node: \charsubdef, Next: \tracingcharsubdef, Up: MLTeX - -5.4.1.1 '\charsubdef': Character substitutions -.............................................. - -The most important primitive MLTeX adds is '\charsubdef', used in a way -reminiscent of '\chardef': - \charsubdef COMPOSITE [=] ACCENT BASE - - Each of COMPOSITE, ACCENT, and BASE are font glyph numbers, expressed -in the usual TeX syntax: `\e symbolically, '145 for octal, "65 for hex, -101 for decimal. - - MLTeX's '\charsubdef' declares how to construct an accented character -glyph (not necessarily existing in the current font) using two character -glyphs (that do exist). Thus it defines whether a character glyph code, -either typed as a single character or using the '\char' primitive, will -be mapped to a font glyph or to an '\accent' glyph construction. - - For example, if you assume glyph code 138 (decimal) for an -e-circumflex and you are using the Computer Modern fonts, which have the -circumflex accent in position 18 and lowercase 'e' in the usual ASCII -position 101 decimal, you would use '\charsubdef' as follows: - - \charsubdef 138 = 18 101 - - For the plain TeX format to make use of this substitution, you have -to redefine the circumflex accent macro '\^' in such a way that if its -argument is character 'e' the expansion '\char138 ' is used instead of -'\accent18 e'. Similar '\charsubdef' declaration and macro -redefinitions have to be done for all other accented characters. - - To disable a previous '\charsubdef C', redefine C as a pair of zeros. -For example: - \charsubdef '321 = 0 0 % disable N tilde -(Octal '321 is the ISO Latin-1 value for the Spanish N tilde.) - - '\charsubdef' commands should only be given once. Although in -principle you can use '\charsubdef' at any time, the result is -unspecified. If '\charsubdef' declarations are changed, usually either -incorrect character dimensions will be used or MLTeX will output missing -character warnings. (The substitution of a '\charsubdef' is used by TeX -when appending the character node to the current horizontal list, to -compute the width of a horizontal box when the box gets packed, and when -building the '\accent' construction at '\shipout'-time. In summary, the -substitution is accessed often, so changing it is not desirable, nor -generally useful.) - - -File: web2c.info, Node: \tracingcharsubdef, Prev: \charsubdef, Up: MLTeX - -5.4.1.2 '\tracingcharsubdef': Substitution diagnostics -...................................................... - -To help diagnose problems with '\charsubdef', MLTeX provides a new -primitive parameter, '\tracingcharsubdef'. If positive, every use of -'\charsubdef' will be reported. This can help track down when a -character is redefined. - - In addition, if the TeX parameter '\tracinglostchars' is 100 or more, -the character substitutions actually performed at '\shipout'-time will -be recorded. - - -File: web2c.info, Node: TCX files, Next: patgen invocation, Prev: MLTeX, Up: Languages and hyphenation - -5.4.2 TCX files: Character translations ---------------------------------------- - -TCX (TeX character translation) files help TeX support direct input of -8-bit international characters if fonts containing those characters are -being used. Specifically, they map an input (keyboard) character code -to the internal TeX character code (a superset of ASCII). - - Of the various proposals for handling more than one input encoding, -TCX files were chosen because they follow Knuth's original ideas for the -use of the 'xchr' and 'xord' tables. He ventured that these would be -changed in the WEB source in order to adjust the actual version to a -given environment. It turns out, however, that recompiling the WEB -sources is not as simple a task as Knuth may have imagined; therefore, -TCX files, providing the possibility of changing of the conversion -tables on on-the-fly, have been implemented instead. - - This approach limits the portability of TeX documents, as some -implementations do not support it (or use a different method for -input-internal reencoding). It may also be problematic to determine the -encoding to use for a TeX document of unknown provenance; in the worst -case, failure to do so correctly may result in subtle errors in the -typeset output. But we feel the benefits outweigh these disadvantages. - - This is entirely independent of the MLTeX extension (*note MLTeX::): -whereas a TCX file defines how an input keyboard character is mapped to -TeX's internal code, MLTeX defines substitutions for a non-existing -character glyph in a font with a '\accent' construction made out of two -separate character glyphs. TCX files involve no new primitives; it is -not possible to specify that an input (keyboard) character maps to more -than one character. - - Information on specifying TCX files: - - * The best way to specify a TCX file is to list it explicitly in the - first line of the main document: - %& -translate-file=TCXFILE - - * You can also specify a TCX file to be used on a particular TeX run - with the command-line option '-translate-file=TCXFILE'. - - * TCX files are searched for along the 'WEB2C' path. - - * Initial TeX (*note Initial TeX: Initial TeX.) ignores TCX files. - - The Web2c distribution comes with a number of TCX files. Two -important ones are 'il1-t1.tcx' and 'il2-t1.tcx', which support ISO -Latin 1 and ISO Latin 2, respectively, with Cork-encoded fonts -(a.k.a. the LaTeX T1 encoding). TCX files for Czech, Polish, and Slovak -are also provided. - - One other notable TCX file is 'empty.tcx', which is, well, empty. -Its purpose is to reset Web2C's behavior to the default (only visible -ASCII being printable, as described below) when a format was dumped with -another TCX being active--which is in fact the case for everything but -plain TeX in the TeX Live and other distributions. Thus: - - latex somefile8.tex - => terminal etc. output with 8-bit chars - latex --translate-file=empty.tcx somefile8.tex - => terminal etc. output with ^^ notation - - Syntax of TCX files: - 1. Line-oriented. Blank lines are ignored. - - 2. Whitespace is ignored except as a separator. - - 3. Comments start with '%' and continue to the end of the line. - - 4. Otherwise, a line consists of one or two character codes, - optionally followed by 0 or 1. The last number indicates whether - DEST is considered printable. - SRC [DEST [PRNT]] - - 5. Each character code may be specified in octal with a leading '0', - hexadecimal with a leading '0x', or decimal otherwise. Values must - be between 0 and 255, inclusive (decimal). - - 6. If the DEST code is not specified, it is taken to be the same as - SRC. - - 7. If the same SRC code is specified more than once, it is the last - definition that counts. - - Finally, here's what happens: when TeX sees an input character with -code SRC, it 1) changes SRC to DEST; and 2) makes the DEST code -"printable", i.e., printed as-is in diagnostics and the log file rather -than in '^^' notation. - - By default, no characters are translated, and character codes between -32 and 126 inclusive (decimal) are printable. - - Specifying translations for the printable ASCII characters (codes -32-127) will yield unpredictable results. Additionally you shouldn't -make the following characters printable: '^^I' (TAB), '^^J' (line feed), -'^^M' (carriage return), and '^^?' (delete), since TeX uses them in -various ways. - - Thus, the idea is to specify the input (keyboard) character code for -SRC, and the output (font) character code for DEST. - - By default, only the printable ASCII characters are considered -printable by TeX. If you specify the '-8bit' option, all characters are -considered printable by default. If you specify both the '-8bit' option -and a TCX file, then the TCX can set specific characters to be -non-printable. - - Both the specified TCX encoding and whether characters are printable -are saved in the dump files (like 'tex.fmt'). So by giving these -options in combination with '-ini', you control the defaults seen by -anyone who uses the resulting dump file. - - When loading a dump, if the '-8bit' option was given, then all -characters become printable by default. - - When loading a dump, if a TCX file was specified, then the TCX data -from the dump is ignored and the data from the file used instead. - - -File: web2c.info, Node: patgen invocation, Prev: TCX files, Up: Languages and hyphenation - -5.4.3 Patgen: Creating hyphenation patterns -------------------------------------------- - -Patgen creates hyphenation patterns from dictionary files for use with -TeX. Synopsis: - - patgen DICTIONARY PATTERNS OUTPUT TRANSLATE - - Each argument is a filename. No path searching is done. The output -is written to the file OUTPUT. - - In addition, Patgen prompts interactively for other values. - - For more information, see 'Word hy-phen-a-tion by com-puter' by Frank -Liang (*note References::), and also the 'patgen.web' source file. - - The only options are '-help' and '-version' (*note Common options::). - - -File: web2c.info, Node: Shell escapes, Next: IPC and TeX, Prev: Languages and hyphenation, Up: TeX - -5.5 Shell escapes -================= - -TeX can execute "shell escapes", that is, arbitrary shell commands. -Although tremendously useful, this also has obvious security -implications. Therefore, as of TeX Live 2009, a "restricted" mode for -shell escapes is the default mode of operation, which allows executing -only certain commands, as specified in the 'texmf.cnf' configuration -file. - - * Unrestricted shell escapes are allowed if the option - '--shell-escape' is specified, or if the environment variable or - config file value 'shell_escape' is set to 't' or 'y' and '1'. - - * Restricted shell escapes are allowed if 'shell_escape' is set to - 'p'. This is the default. - - * Shell escapes are completely disabled if '--no-shell-escape' is - specified, or if 'shell_escape' is set to anything else. - - When enabled, the TeX construct to execute a system command is -'\write18{SHELL-COMMAND}'; for example: - - \write18{echo "hello, world"} - - From TeX's point of view, this is a normal '\write' command, and is -therefore subject to the usual TeX expansions. Also, the system call -either happens during the '\output' routine or right away, according to -the absence or presence of the '\immediate' prefix, as usual for -'\write'. - - The SHELL-COMMAND string is passed to the command shell (via the C -library function 'system'). The output of SHELL-COMMAND is not diverted -anywhere, so it will not appear in the log file, or anywhere but the -terminal output. The exit status of the system call is also not -available to TeX. - - In unrestricted mode, the argument is simply passed straight to -'system' unaltered. - - In restricted mode, ASCII double quote characters (") should always -be used in the argument to '\write18' where quoting of arguments is -needed, as in the example above. This is to achieve some measure of -system independence. On Unix systems, these are replaced with single -quote (') characters to avoid insecure further expansion. Care is also -taken on Windows to avoid additional expansions (from, e.g., `...`). -Mismatched quotation marks in the command string result in a diagnostic -message in the log file; no execution is performed. - - After quotation processing, if the first word (delimited by a space -or tab) of the command is in the list specified by the -'shell_escape_commands' configuration value, the command is executed. -Otherwise it is not. In any case, a message is written to the log file. - - The 'shell_escape_commands' value is a comma-separated list of words. -Whitespace is significant, and typically should not be present. The -default definition in 'texmf.cnf' looks like this, but with more -commands included: - - shell_escape_commands = bibtex,kpsewhich,repstopdf,... - - pdfTeX and luaTeX support reading (via '\input' and '\openin') and -writing (via '\openout') from pipes if the first character is '|'. The -following command is then treated exactly the same as the argument to -'\write18'. In these engines, the primitive variable '\pdfshellescape' -is set to 0 if shell escapes are disabled, 1 if they are enabled, and 2 -if they are enabled with restrictions. - - The purpose of this feature is to make it possible for TeX documents -to perform useful external actions in the common case of an individual -user running a known document on his or her own machine. In such -environments as CGI scripts or wikis where the input has to be -considered untrustworthy, shell escapes should be completely disabled. - - -File: web2c.info, Node: IPC and TeX, Next: TeX extensions, Prev: Shell escapes, Up: TeX - -5.6 IPC and TeX -=============== - -(If anyone uses this feature and needs documentation, write -.) - - This functionality is available only if the '--enable-ipc' option was -specified to 'configure' during installation of Web2c (*note -Installation::). - - If you define 'IPC_DEBUG' before compilation (e.g., with 'make -XCFLAGS=-DIPC_DEBUG'), TeX will print messages to standard error about -its socket operations. This may be helpful if you are, well, debugging. - - -File: web2c.info, Node: TeX extensions, Prev: IPC and TeX, Up: TeX - -5.7 Extended TeX engines -======================== - -The base TeX program has been extended in many ways. Here's a partial -list. - -e-TeX - Adds many new primitives, including right-to-left typesetting and - more registers. Now frozen. More info: - . - -Aleph - This adds Unicode support, right-to-left typesetting, and more. - Omega was the original program. Aleph is an updated version with a - variety of bug fixes, and includes e-TeX. Aleph is not actively - maintained. More info: , - . - -pdfTeX - Can produce PDF as well as DVI files. It also incorporates the - e-TeX extensions, new primitives for hypertext and - micro-typography, reading/writing from pipes, and much more. In - TeX Live, the command 'etex' invokes pdfTeX to make all these - additions available with DVI output. Home page: - . - -LuaTeX - Embeds the Lua programming language () and opens up - the TeX typesetting engine to control from Lua, starting from the - pdfTeX capabilities as a base. Also natively supports UTF-8 input, - the OpenType and TrueType font formats, and use of system fonts. - Home page: . - -XeTeX - Combines support for Unicode input, the OpenType and TrueType font - formats, and use of system fonts with the capabilities of pdfTeX, - with the exception of the font expansion part of micro-typography. - Home page: . - -pTeX -upTeX - With additional support for Japanese; pTeX was the original engine, - and upTeX has native Unicode support and thus is more useful for - Chinese and Korean. More info: , - . - -epTeX -eupTeX - Further extends pTeX and upTeX with the e-TeX extensions. More - info: , . - - -File: web2c.info, Node: Metafont, Next: MetaPost, Prev: TeX, Up: Top - -6 Metafont: Creating typeface families -************************************** - -Metafont is a system for producing shapes; it was designed for producing -complete typeface families, but it can also produce geometric designs, -dingbats, etc. And it has considerable mathematical and -equation-solving capabilities which can be useful entirely on their own. - - Metafont is a batch language, like C or Pascal: you compile a -Metafont program into a corresponding font, rather than interactively -drawing lines or curves. This approach has both considerable -disadvantages (people unfamiliar with conventional programming languages -will be unlikely to find it usable) and considerable advantages (you can -make your design intentions specific and parameterizable). For a -complete description of the Metafont language, see 'The METAFONTbook' -(*note References::). - -* Menu: - -* mf invocation:: Invoking Metafont. -* Initial Metafont:: Making bases. -* Modes:: Device definitions for Metafont. -* Online Metafont graphics:: Seeing MF output online. -* gftodvi invocation:: Making proofsheets for fonts. -* mft invocation:: Prettyprinting Metafont sources. - - -File: web2c.info, Node: mf invocation, Next: Initial Metafont, Up: Metafont - -6.1 'mf' invocation -=================== - -Metafont (usually invoked as 'mf') reads character definitions specified -in the Metafont programming language, and outputs the corresponding -font. This section merely describes the options available in the Web2c -implementation. For a complete description of the Metafont language, -see 'The Metafontbook' (*note References::). - - Metafont processes its command line and determines its memory dump -(base) file in a way exactly analogous to MetaPost and TeX (*note tex -invocation::, and *note Memory dumps::). Synopses: - - mf [OPTION]... [MFNAME[.mf]] [MF-COMMANDS] - mf [OPTION]... \FIRST-LINE - mf [OPTION]... &BASE ARGS - - Most commonly, a Metafont invocation looks like this: - mf '\mode:=MODE; mag:=MAGNIFICATION; input MFNAME' -(The single quotes avoid unwanted interpretation by the shell.) - - Metafont searches the usual places for the main input file MFNAME -(*note (kpathsea)Supported file formats::), extending MFNAME with '.mf' -if necessary. To see all the relevant paths, set the environment -variable 'KPATHSEA_DEBUG' to '-1' before running the program. By -default, Metafont runs an external program named 'mktexmf' to create any -nonexistent Metafont source files you input. You can disable this at -configure-time or runtime (*note (kpathsea)mktex configuration::). This -is mostly for the sake of the EC fonts, which can be generated at any -size. - - Metafont writes the main GF output to the file 'BASEMFNAME.NNNgf', -where NNN is the font resolution in pixels per inch, and BASEMFNAME is -the basename of MFNAME, or 'mfput' if no input file was specified. A GF -file contains bitmaps of the actual character shapes. Usually GF files -are converted immediately to PK files with GFtoPK (*note gftopk -invocation::), since PK files contain equivalent information, but are -more compact. (Metafont output in GF format rather than PK for only -historical reasons.) - - Metafont also usually writes a metric file in TFM format to -'BASEMFNAME.tfm'. A TFM file contains character dimensions, kerns, and -ligatures, and spacing parameters. TeX reads only this .tfm file, not -the GF file. - - The MODE in the example command above is a name referring to a device -definition (*note Modes::); for example, 'localfont' or 'ljfour'. These -device definitions must generally be precompiled into the base file. If -you leave this out, the default is 'proof' mode, as stated in 'The -Metafontbook', in which Metafont outputs at a resolution of 2602dpi; -this is usually not what you want. The remedy is simply to assign a -different mode--'localfont', for example. - - The MAGNIFICATION assignment in the example command above is a -magnification factor; for example, if the device is 600dpi and you -specify 'mag:=2', Metafont will produce output at 1200dpi. Very often, -the MAGNIFICATION is an expression such as 'magstep(.5)', corresponding -to a TeX "magstep", which are factors of 1.2 * sqrt(2). - - After running Metafont, you can use the font in a TeX document as -usual. For example: - \font\myfont = newfont - \myfont Now I am typesetting in my new font (minimum hamburgers). - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-[no]-file-line-error' -'-fmt=FMTNAME' -'-halt-on-error' -'-ini' -'-interaction=STRING' -'-jobname=STRING' -'-kpathsea-debug=NUMBER' -'-[no]parse-first-line' -'-output-directory' -'-progname=STRING' -'-recorder' -'-translate-file=TCXFILE' -'-8bit' - These options are common to TeX, Metafont, and MetaPost. *Note - Common options::. - -'-mktex=FILETYPE' -'-no-mktex=FILETYPE' - Turn on or off the 'mktex' script associated with FILETYPE. The - only value that makes sense for FILETYPE is 'mf'. - - -File: web2c.info, Node: Initial Metafont, Next: Modes, Prev: mf invocation, Up: Metafont - -6.2 Initial Metafont -==================== - -'inimf' is the "initial" form of Metafont, which does lengthy -initializations avoided by the "virgin" ('vir') form, so as to be -capable of dumping '.base' files (*note Memory dumps::). For a detailed -comparison of virgin and initial forms, see *note Initial and virgin::. - - For a list of options and other information, see *note mf -invocation::. - - The only memory dump file commonly used with Metafont is the default -'plain.base', also known as 'mf.base' (again, *note Memory dumps::). It -is created by default during installation, but you can also do so by -hand if necessary (e.g., if a Metafont update is issued): - mf -ini '\input plain; input modes; dump' -(The quotes prevent interpretation of the backslashes from the shell.) -Then install the resulting 'plain.base' in '$(basedir)' -('/usr/local/share/texmf/web2c' by default), and link 'mf.base' to it. - - For an explanation of the additional 'modes.mf' file, see *note -Modes::. This file has no counterpart in TeX or MetaPost. - - In the past, it was sometimes useful to create a base file -'cmmf.base' (a.k.a. 'cm.base'), with the Computer Modern macros also -included in the base file. Nowadays, however, the additional time -required to read 'cmbase.mf' is exceedingly small, usually not enough to -be worth the administrative hassle of updating the 'cmmf.base' file when -you install a new version of 'modes.mf'. People actually working on a -typeface may still find it worthwhile to create their own base file, of -course. - - -File: web2c.info, Node: Modes, Next: Online Metafont graphics, Prev: Initial Metafont, Up: Metafont - -6.3 Modes: Device definitions for Metafont -========================================== - -Running Metafont and creating Metafont base files requires information -that TeX and MetaPost do not: "mode" definitions which specify device -characteristics, so Metafont can properly rasterize the shapes. - - When making a base file, a file containing modes for -locally-available devices should be input after 'plain.mf'. One -commonly used file is ; it includes all -known definitions. - - If, however, for some reason you have decreased the memory available -in your Metafont, you may need to copy 'modes.mf' and remove the -definitions irrelevant to you (probably most of them) instead of using -it directly. (Or, if you're a Metafont hacker, maybe you can suggest a -way to redefine 'mode_def' and/or 'mode_setup'; right now, the amount of -memory used is approximately four times the total length of the -'mode_def' names, and that's a lot.) - - If you have a device not included in 'modes.mf', please see comments -in that file for how to create the new definition, and please send the -definition to to get it included in the next -release of 'modes.mf'. - - Usually, when you run Metafont you must supply the name of a mode -that was dumped in the base file. But you can also define the mode -characteristics dynamically, by invoking Metafont with an assignment to -'smode' instead of 'mode', like this: - mf '\smode:="newmode.mf"; mag:=MAGNIFICATION; input MFNAME' -This is most useful when you are working on the definition of a new -mode. - - The MAGNIFICATION and MFNAME arguments are explained in *note mf -invocation::. In the file 'newmode.mf', you should have the following -(with no 'mode_def' or 'enddef'), if you are using 'modes.mf' -conventions: - mode_param (pixels_per_inch, DPI); - mode_param (blacker, B); - mode_param (fillin, F); - mode_param (o_correction, O); - mode_common_setup_; -(Of course, you should use real numbers for DPI, B, F, and O.) - - For more information on the use of 'smode', or if you are not using -'modes.mf', see page 269 of 'The Metafontbook'. - - -File: web2c.info, Node: Online Metafont graphics, Next: gftodvi invocation, Prev: Modes, Up: Metafont - -6.4 Online Metafont graphics -============================ - -The Web2c implementation of Metafont can do online graphics with a -number of devices. (See the Metafont manual for more information about -how to draw on your screen.) By default, no graphics support is -enabled. - - Metafont examines the 'MFTERM' environment variable or config file -value at runtime, or the 'TERM' environment variable if 'MFTERM' is not -set, to determine the device support to use. Naturally, only the -devices for which support has been compiled in can be selected. - - Here is a table of the possibilities, showing the 'MFTERM' value and -the corresponding 'configure' option(s) in parentheses. - -'epsf' - ('--enable-epsfwin') Pseudo-window server for Encapsulated - PostScript (see 'web2c/window/epsf.c'). This device produces an - EPS file containing the graphics which would be displayed online on - other devices. The name of the EPS file defaults to metafont.eps - but can be changed by setting the MFEPSF environment variable to - the new filename. Contributed by Mathias Herberts. - -'hp2627' - ('--enable-hp2627win') HP2627a color graphics terminals. - -'mftalk' - ('--enable-mftalkwin') Generic window server (see - 'web2c/window/mftalk.c'). - -'next' - ('--enable-next') NeXT window system. This requires a separate - program, called 'DrawingServant', available separately. See the - 'web2c/window/next.c'. - -'regis' - ('--enable-regiswin') Regis terminals. - -'sun' - ('--enable-suntoolswin') The old Suntools (not any flavor of X) - window system. (You can get the even older SunWindows 'gfx' system - by using 'sun-gfx.c'.) - -'tek' - ('--enable-tektronixwin') Tektronix terminals. - -'uniterm' - ('--enable-unitermwin') Uniterm, Simon Poole's emulator of a smart - Tektronix 4014 terminal. This may work with regular Tektronix - terminals as well; it's faster than the driver - '--enable-tektronixwin' selects. - -'xterm' - '--with-x' The X window system (version 11). - - There are two variants of the X11 support, one that works with the - Xt toolkit, and another that works directly with Xlib. The Xt - support is more efficient and has more functionality, so it is the - default. If you must use the Xlib support, use 'configure --with-x - --with-kf-x-toolkit=no'. - - Specify '--disable-mf-nowin' in order not to build a separate - non-windows-capable Metafont executable 'mf-nowin' (or - 'mf-nowin.exe'). - - You cannot specify any of the usual X options (e.g., '-geometry') - on the Metafont command line, but you can specify X resources in - your '~/.Xdefaults' or '~/.Xresources' file. The class name is - 'Metafont'. If you're using the Xt support, all the usual X - toolkit resources are supported. If you're using the Xlib support, - only the 'geometry' resource is supported. - - You specify the X display to which Metafont connects in the - 'DISPLAY' environment variable, as usual. - - Writing support for a new device is straightforward. Aside from -defining the basic drawing routines that Metafont uses (see 'mf.web'), -you only have to add another entry to the tables on the last page of -'web2c/lib/texmfmp.c'. Or you can write an independent program and use -MFtalk (see 'web2c/window/mftalk.c'). - - -File: web2c.info, Node: gftodvi invocation, Next: mft invocation, Prev: Online Metafont graphics, Up: Metafont - -6.5 GFtoDVI: Character proofs of fonts -====================================== - -GFtoDVI makes "proof sheets" from a GF bitmap file as output by, for -example, Metafont (*note Metafont::). This is an indispensable aid for -font designers or Metafont hackers. Synopsis: - - gftodvi [OPTION]... GFNAME[gf] - - The font GFNAME is searched for in the usual places (*note -(kpathsea)Glyph lookup::). To see all the relevant paths, set the -environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - The suffix 'gf' is supplied if not already present. This suffix is -not an extension, no '.' precedes it; for instance, 'cmr10.600gf'. - - The output filename is the basename of GFNAME extended with '.dvi', -e.g., 'gftodvi /wherever/foo.600gf' creates './foo.dvi'. - - The characters from GFNAME appear one per page in the DVI output, -with labels, titles, and annotations, as specified in Appendix H -(Hardcopy Proofs) of 'The Metafontbook'. - - GFtoDVI uses several fonts besides GFNAME itself: - - * "gray font" (default 'gray'): for the pixels that actually make up - the character. Simply using black is not right, since then labels, - key points, and other information could not be shown. - - * "title font" (default 'cmr8'): for the header information at the - top of each output page. - - * "label font" (default 'cmtt10'): for the labels on key points of - the figure. - - * "slant font" (no default): for diagonal lines, which are otherwise - simulated using horizontal and vertical rules. - - To change the default fonts, you must use 'special' commands in your -Metafont source file, typically via commands like 'slantfont slantlj4'. -There is no default slant font since no one printer is suitable as a -default. You can make your own by copying one of the existing files, -such as '.../fonts/source/public/misc/slantlj4.mf' and then running 'mf' -on it. - - For testing purposes, you may it useful to run 'mf-nowin rtest' (hit -RETURN when it stops) to get a 'gf' file of a thorn glyph. Or use 'mf' -instead of 'mf-nowin' to have the glyph(s) displayed on the screen. -After that, 'gftodvi rtest.2602gf' should produce 'rtest.dvi', which you -process as usual. - - The program accepts the following option, as well as the standard -'-verbose', '-help', and '-version' (*note Common options::): - -'-overflow-label-offset=POINTS' - Typeset the so-called overflow labels, if any, POINTS TeX points - from the right edge of the character bounding box. The default is - a little over two inches (ten million scaled points, to be - precise). Overflow equations are used to locate coordinates when - their actual position is too crowded with other information. - - -File: web2c.info, Node: mft invocation, Prev: gftodvi invocation, Up: Metafont - -6.6 MFT: Prettyprinting Metafont source -======================================= - -MFT translates a Metafont program into a TeX document suitable for -typesetting, with the aid of TeX macros defined in the file -'mftmac.tex'. Synopsis: - - mft [OPTION]... MFNAME[.mf] - - MFT searches the usual places for MFNAME (*note (kpathsea)Supported -file formats::). To see all the relevant paths, set the environment -variable 'KPATHSEA_DEBUG' to '-1' before running the program. The -output goes to the basename of MFNAME extended with '.tex', e.g., 'mft -/wherever/foo.mf' creates './foo.tex'. - - Line breaks in the input are carried over into the output; moreover, -blank spaces at the beginning of a line are converted to quads of -indentation in the output. Thus, you have full control over the -indentation and line breaks. Each line of input is translated -independently of the others. - - Further control is allowed via Metafont comments: - * Metafont comments following a single '%' should be valid TeX input. - But Metafont material can be included within vertical bars in a - comment; this will be translated by MFT as if it were regular - Metafont code. For example, a comment like '% |x2r| is the tip of - the bowl' will be translated into the TeX '% $x_{2r}$ is the ...', - i.e., the 'x2r' is treated as an identifier. - - * '%%' indicates that the remainder of an input line should be copied - verbatim to the output. This is typically used to introduce - additional TeX material at the beginning or an MFT job, e.g. code - to modify the standard layout or the formatting macros defined in - 'mftmac.tex', or to add a line saying '%%\bye' at the end of the - job. (MFT doesn't add this automatically in order to allow - processing several files produces by MFT in the same TeX job.) - - * '%%% TOKEN1 OTHER-TOKENS' introduces a change in MFT's formatting - rules; all the OTHER-TOKENS will henceforth be translated according - to the current conventions for TOKEN1. The tokens must be symbolic - (i.e., not numeric or string tokens). For example, the input line - %%% addto fill draw filldraw - says to format the 'fill', 'draw', and 'filldraw' operations of - plain Metafont just like the primitive token 'addto', i.e., in - boldface type. Without such reformatting commands, MFT would treat - 'fill' like an ordinary tag or variable name. In fact, you need a - '%%%' command even to get parentheses to act like delimiters. - - * '%%%%' introduces an MFT comment, i.e., MFT ignores the remainder - of such a line. - - * Five or more '%' signs should not be used. - - (The above description was edited from 'mft.web', written by -D.E. Knuth.) - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-change=CHFILE[.ch]' - Apply the change file CHFILE as with Tangle and Weave (*note - WEB::). - -'-style=MFTFILE[.mft]' - Read MFTFILE before anything else; a MFT style file typically - contains only MFT directives as described above. The default style - file is named 'plain.mft', which defines this properly for programs - using plain Metafont. The MFT files is searched along the - 'MFTINPUTS' path; see *note (kpathsea)Supported file formats::. - - Other examples of MFT style files are 'cmbase.mft', which defines - formatting rules for the macros defined in 'cm.base', and 'e.mft', - which was used in the production of Knuth's Volume E, 'Computer - Modern Typefaces'. - - Using an appropriate MFT style file, it is also possible to - configure MFT for typesetting MetaPost sources. However, MFT does - not search the usual places for MetaPost input files. - - If you use eight-bit characters in the input file, they are passed on -verbatim to the TeX output file; it is up to you to configure TeX to -print these properly. - - -File: web2c.info, Node: MetaPost, Next: BibTeX, Prev: Metafont, Up: Top - -7 MetaPost: Generating PostScript -********************************* - -MetaPost is a picture-drawing language similar to Metafont (*note -Metafont::), but instead of outputting bitmaps in a "font", it outputs -PostScript commands. It's primarily intended for creating technical -illustrations, but can also be used to create PostScript or OpenType -fonts (). - - MetaPost also provides for arbitrary integration of text and graphics -in a natural way, using any typesetter (TeX and Troff are both -supported) and a number of other subsidiary programs, described below. - -* Menu: - -* mpost invocation:: Invoking MetaPost. -* Initial MetaPost:: Making mems. -* dvitomp invocation:: DVI-to-MPX translation. - - -File: web2c.info, Node: mpost invocation, Next: Initial MetaPost, Up: MetaPost - -7.1 'mpost' invocation -====================== - -MetaPost (installed as 'mpost') reads a series of pictures specified in -the MetaPost programming language, and outputs corresponding PostScript -code. This section merely describes the options available in the Web2c -implementation. For a complete description of the MetaPost language, -see AT&T technical report CSTR-162, generally available in -'TEXMF/doc/metapost/', where TEXMF is the root of TeX directory -structure. The MetaPost home page: . - - Also, a standard MetaPost package for drawing graphs is documented in -AT&T technical report CSTR-164, available as the file 'mpgraph.ps', -generally stored alongside 'mpman.ps'. - - MetaPost processes its command line and determines its memory dump -(mem) file in a way analogous to Metafont and TeX (*note 'tex' -invocation: tex invocation, and *note Memory dumps::). Synopses: - - mpost [OPTION]... [MPNAME[.mp]] [MP-COMMANDS] - mpost [OPTION]... \FIRST-LINE - mpost [OPTION]... &MEM ARGS - - MetaPost searches the usual places for the main input file MPNAME -(*note (kpathsea)Supported file formats::), extending MPNAME with '.mp' -if necessary. To see all the relevant paths, set the environment -variable 'KPATHSEA_DEBUG' to '-1' before running the program. - - MetaPost writes its PostScript output to a series of files -'BASEMPNAME.NNN' (or perhaps 'BASEMPNAME.ps', very occasionally -'BASEMPNAME.tfm'), where NNN are the figure numbers specified in the -input, typically to the 'beginfig' macro, and BASEMPNAME is the basename -of MPNAME, or 'mpout' if no input file was specified. MetaPost uses the -'.ps' extension when the figure number is out of range, e.g., if you say -'beginfig(-1)'. - - You can use the output files as figures in a TeX document just as -with any other PostScript figures. For example, with this TeX command: - \special{psfile="FILENAME"} -or by using 'epsf.tex' (*note (dvips)EPSF macros::). - - The MetaPost construct - btex ... TEX-INPUT ... etex -generates a MetaPost picture expression corresponding to TEX-INPUT. - - The construct - verbatimtex ... TEX-INPUT ... etex -simply passes the TEX-INPUT through to TeX. For example, if you are -using LaTeX, your MetaPost input file must start with a 'verbatimtex' -block that gives the necessary '\documentclass' (or '\documentstyle') -'\begin{document}' command. You will also need to set the enviroment -variable 'TEX' to 'latex'. - - TEX-INPUT need not be specifically TeX input; it could also be Troff. -In that case, you will need the '-m pictures' Troff macro package -(unfortunately absent from many Troff implementations), or an equivalent -such as the '-m pspic' macros from GNU groff described in grops(1). - - Naturally, you must use fonts that are supported by the typesetter; -specifically, you'll probably want to use standard PostScript fonts with -Troff. And only the TeX system understands Computer Modern or other -Metafont fonts; you can also use PostScript fonts with TeX, of course. - - MetaPost-generated PostScript figures which do use Computer Modern -fonts for labels cannot be directly previewed or printed. Instead, you -must include them in a TeX document and run the resulting DVI file -through Dvips to arrange for the downloading of the required fonts -(*note (dvips)Fonts in figures::). To help with this, the MetaPost -distribution provides a small TeX file 'mproof.tex' which is typically -called as: - tex mproof MP-OUTPUT-FILES... ; dvips mproof -o -The resulting file 'mproof.ps' can then be printed or previewed. - - To generate EPSF files, set the internal MetaPost variable -'prologues' positive. To make the output files self-contained, use only -standard PostScript fonts. MetaPost reads the same 'psfonts.map' file -as Dvips, to determine PostScript fonts that need to be downloaded -(*note (dvips)psfonts.map::). - - It is posible for pdfTeX to read MetaPost output directly; this is in -contrast to general EPSF files, which have to be converted for use with -PDF output. The easiest way is to name the MetaPost output files with -the '.mps' extension. Then the LaTeX '\includegraphics' command, for -example, will be able to read them, even when outputting PDF. - - MetaPost can write output files, via the 'write' primitive; this -opens a security hole. *Note tex invocation::. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-[no]-file-line-error' -'-fmt=FMTNAME' -'-halt-on-error' -'-ini' -'-interaction=STRING' -'-jobname=STRING' -'-kpathsea-debug=NUMBER' -'-[no]parse-first-line' -'-output-directory' -'-progname=STRING' -'-recorder' -'-translate-file=TCXFILE' -'-8bit' - These options are common to TeX, Metafont, and MetaPost. *Note - Common options::. - -'-T' -'-troff' - Set the 'prologues' internal variable to '1'. - -'-tex=TEXPROGRAM' - When this option is given, the program TEXPROGRAM is used to - typeset the labels. - - -File: web2c.info, Node: Initial MetaPost, Next: dvitomp invocation, Prev: mpost invocation, Up: MetaPost - -7.2 Initial MetaPost -==================== - -As of MetaPost 1.504 (TeX Live 2011), MetaPost no longer dumps '.mem' -files (*note Memory dumps::) and does not distinguish virgin and initial -forms (*note Initial and virgin::). Instead, the "initial" file name is -read in its source form--that is, 'mpost.mp' when the program is invoked -as 'mpost'. - - For a list of options and other information, see *note mpost -invocation::. - - MetaPost provides a format with all the features of plain Metafont, -called 'mfplain'. You can use that in the same way; just run 'mfplain' -instead of 'mpost'. This lets you directly process Metafont source -files with MetaPost, producing character proofs (one file for each -character) similar to those produced with Metafont in proof mode and -GFtoDVI (*note gftodvi invocation::). - - -File: web2c.info, Node: dvitomp invocation, Prev: Initial MetaPost, Up: MetaPost - -7.3 DVItoMP: DVI to MPX conversion -================================== - -DVItoMP converts DVI files into low-level MetaPost commands in a -so-called MPX file. Synopsis: - - dvitomp DVIFILE[.dvi] [MPXFILE[.mpx]] - -If MPXFILE is not specified, the output goes to the basename of DVIFILE -extended with '.mpx', e.g., 'dvitomp /wherever/foo.dvi' creates -'./foo.mpx'. - - DVItoMP supports Dvips-style color specials, such as 'color push -NAME' and 'color pop', outputting them as 'withcolor' MetaPost commands. - - The only options are '-help' and '-version' (*note Common options::). - - -File: web2c.info, Node: BibTeX, Next: WEB, Prev: MetaPost, Up: Top - -8 BibTeX: Bibliographies -************************ - -BibTeX automates much of the job of typesetting bibliographies, and -makes bibliography entries reusable in many different contexts. - -* Menu: - -* bibtex invocation:: -* Basic BibTeX style files:: The standard and semi-standard styles. - - -File: web2c.info, Node: bibtex invocation, Next: Basic BibTeX style files, Up: BibTeX - -8.1 BibTeX invocation -===================== - -BibTeX creates a printable bibliography ('.bbl') file from references in -a '.aux' file, generally written by TeX or LaTeX. The '.bbl' file is -then incorporated on a subsequent run. The basic bibliographic -information comes from '.bib' files, and a BibTeX style ('.bst') file -controls the precise contents of the '.bbl' file. Synopsis: - - bibtex [OPTION]... AUXFILE[.aux] - -The output goes to the basename of AUXFILE extended with '.bbl'; for -example, 'bibtex /wherever/foo.aux' creates './foo.bbl'. BibTeX also -writes a log file to the basename of AUXFILE extended with '.blg'. - - The names of the '.bib' and '.bst' files are specified in the '.aux' -file as well, via the '\bibliography' and '\bibliographystyle' (La)TeX -macros. BibTeX searches for '.bib' files using the 'BIBINPUTS' and -'TEXBIB' paths, and for '.bst' files using 'BSTINPUTS' (*note -(kpathsea)Supported file formats::). It does no path searching for -'.aux' files. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-terse' - Suppress the program banner and progress reports normally output. - -'-min-crossrefs=N' - If at least N (2 by default) bibliography entries refer to another - entry E via their 'crossref' field, include E in the .bbl file, - even if it was not explicitly referenced in the .aux file. For - example, E might be a conference proceedings as a whole, with the - cross-referencing entries being individual articles published in - the proceedings. - - If you want to avoid these automatic inclusions altogether, make N - a sufficiently large number, and be sure to remove any previous - .aux and .bbl files. Otherwise the option may appear to have no - effect, since BibTeX will have added the citation for E to the - .aux, and nothing will remove it. - - See also: -'btxdoc.tex' - Basic LaTeXable documentation for general BibTeX users. - -'btxhak.tex' - LaTeXable documentation for style designers. - -'btxdoc.bib' - BibTeX database file for the two above documents. - -'xampl.bib' - Example database file with all the standard entry types. - -'' - A very large '.bib' and '.bst' collection, including references for - all the standard TeX books and a complete bibliography for TUGboat. - - -File: web2c.info, Node: Basic BibTeX style files, Prev: bibtex invocation, Up: BibTeX - -8.2 Basic BibTeX style files -============================ - -Here are descriptions of the four standard and four semi-standard basic -BibTeX styles. 'CTAN:/biblio/bibtex' contains these and many more (for -CTAN info, *note (kpathsea)unixtex.ftp::). - -'plain' - Sorts entries alphabetically, with numeric labels. Generally - formatted according to van Leunen's 'A Handbook for Scholars'. The - other style files listed here are based on 'plain'. - -'abbrv' - First names, month names, and journal names are abbreviated. - -'acm' - Names are printed in small caps. - -'alpha' - Alphanumeric labels, e.g., 'Knu66'. - -'apalike' - No labels at all; instead, the year appears in parentheses after - the author. Use this in conjunction with 'apalike.tex' (plain TeX) - or 'apalike.sty' (LaTeX), which also changes the citations in the - text to be '(AUTHOR, YEAR)'. - -'ieeetr' - Numeric labels, entries in citation order, IEEE abbreviations, - article titles in quotes. - -'siam' - Numeric labels, alphabetic order, 'Math. Reviews' abbreviations, - names in small caps. - -'unsrt' - Lists entries in citation order, i.e., unsorted. - -'btxbst.doc' - The template file and documentation for the standard styles. - - -File: web2c.info, Node: WEB, Next: DVI utilities, Prev: BibTeX, Up: Top - -9 WEB: Literate programming -*************************** - -"WEB" languages allow you to write a single source file that can produce -both a compilable program and a well-formatted document describing the -program in as much detail as you wish to prepare. Writing in this kind -of dual-purpose language is called "literate programming". (The Usenet -newsgroup 'comp.programming.literate' is devoted to this subject.) - - WEB-like languages have been implemented with many pairs of base -languages: Cweb provides C and Troff (*note References::); CWEB provides -C and TeX ('CTAN:/web/c_cpp/cweb'); Spiderweb provides C, C++, Awk, Ada, -many others, and TeX ('CTAN:/web/spiderweb'); and, of course, the -original WEB provides Pascal and TeX, the implementation languages for -the original TeX, Metafont, MetaPost, and related programs to come from -the TeX project at Stanford. - - The original WEB language is documented in the file 'webman.tex', -which is included in the archive (and -available in many other places, of course). - -* Menu: - -* tangle invocation:: -* weave invocation:: -* pooltype invocation:: - - -File: web2c.info, Node: tangle invocation, Next: weave invocation, Up: WEB - -9.1 Tangle: Translate WEB to Pascal -=================================== - -Tangle creates a compilable Pascal program from a WEB source file (*note -WEB::). Synopsis: - - tangle [OPTION]... WEBFILE[.web] [CHANGEFILE[.ch]] - -The Pascal output is written to the basename of WEBFILE extended with -'.p'; for example, 'tangle /wherever/foo.web' creates './foo.p'. Tangle -applies CHANGEFILE to WEBFILE before writing the output; by default, -there is no change file. - - If the program makes use of the WEB string facility, Tangle writes -the string pool to the basename of WEBFILE extended with '.pool'. - - The Pascal output is packed into lines of 72 characters or less, with -the only concession to readability being the termination of lines at -semicolons when this can be done conveniently. - - The program accepts the following options, as well as the standard -'--help' and '--version' (*note Common options::): - -'-length=NUMBER' - The number of characters that are considered significant in an - identifier. Whether underline characters are counted depends on - the '-underline' option. The default value is 32, the original - tangle used 7, but this proved too restrictive for use by Web2c. - -'-lowercase' -'-mixedcase' -'-uppercase' - These options specify the case of identifiers in the output of - tangle. If '-uppercase' ('-lowercase') is specified, tangle will - convert all identfiers to uppercase (lowercase). The default is - '-mixedcase', which specifies that the case will not be changed. - -'-underline' - When this option is given, tangle does not strip underline - characters from identifiers. - -'-loose' -'-strict' - These options specify how strict tangle must be when checking - identifiers for equality. The default is '-loose', which means - that tangle will follow the rules set by the case-smashing and - underline options above. If '-strict' is set, then identifiers - will always be stripped of underlines and converted to uppercase - before checking whether they collide. - - -File: web2c.info, Node: weave invocation, Next: pooltype invocation, Prev: tangle invocation, Up: WEB - -9.2 Weave: Translate WEB to TeX -=============================== - -Weave creates a TeX document from a WEB source file (*note WEB::), -assuming various macros defined in 'webmac.tex'. It takes care of -typographic details such as page layout, indentation, and italicizing -identifiers. It also automatically gathers and outputs extensive -cross-reference information. Synopsis: - - weave [OPTION]... WEBFILE[.web] [CHANGEFILE[.ch]] - -The output is to the basename of WEBFILE extended with '.tex'; for -example, 'weave /wherever/foo.web' creates './foo.tex'. Weave applies -CHANGEFILE to WEBFILE before writing the output; by default, there is no -change file. - - The program accepts the following option, as well as the standard -'-verbose', '-help' and '-version' (*note Common options::): -'-x' - Omit the cross-reference information: the index, the list of WEB - module names, and the table of contents (an empty 'CONTENTS.tex' - file will still be written when the Weave output file is processed - by TeX using the default 'webmac.tex', though). - - Conventionally, WEB programmers should define the TeX '\title' macro -at the beginning of the source file. Also, to get output of only -changed modules, one can say '\let\maybe=\iffalse' (usually as the first -change in the change file). - - -File: web2c.info, Node: pooltype invocation, Prev: weave invocation, Up: WEB - -9.3 Pooltype: Display WEB pool files -==================================== - -Pooltype shows the so-called "string number" of each string in a WEB -pool file (*note WEB::), as output by Tangle (*note tangle -invocation::), including the first 256 strings corresponding to the -possible input characters. Pooltype primarily serves as an example of -WEB conventions to implementors of the TeX system. Synopsis: - - pooltype [OPTION]... POOLFILE[.pool] - -No path searching is done for POOLFILE. Output is to standard output. - - The only options are '--help' and '--version' (*note Common -options::). - - As an example of the output, here is the (edited) output for -'tex.pool': - 0: "^^@" - 1: "^^A" - ... - 255: "^^ff" - 256: "pool size" - ... - 1314: "Using character substitution: " - (23617 characters in all.) - - In Metafont and MetaPost, the first 256 characters are actually -represented as single bytes (i.e., themselves), not in the '^^' -notation. Consider Pooltype as showing the results after conversion for -output. - - -File: web2c.info, Node: DVI utilities, Next: Font utilities, Prev: WEB, Up: Top - -10 DVI utilities -**************** - -TeX outputs a file in "DVI" (DeVice Independent) format as a compact -representation of the original document. DVI files can be translated to -meet the requirements of a real physical device, such as PostScript -printers (*note Introduction: (dvips)Top.), PCL printers (see dvilj(1)), -and X displays (see xdvi(1)). In fact, DVI translators are available -for virtually all common devices: see 'CTAN:/dviware' (for CTAN info, -*note (kpathsea)unixtex.ftp::). - - For the precise definition of the DVI file format, see (for example) -the source file 'web2c/dvitype.web'. - - The DVI-processing programs in the Web2c distribution are not device -drivers; they perform generic utility functions. - -* Menu: - -* dvicopy invocation:: Expand virtual fonts. -* dvitype invocation:: DVI to human-readable text. - - -File: web2c.info, Node: dvicopy invocation, Next: dvitype invocation, Up: DVI utilities - -10.1 DVIcopy: Canonicalize virtual font references -================================================== - -DVIcopy reads a DVI file, expands any references to virtual fonts (*note -(dvips)Virtual fonts::) to base fonts, and writes the resulting DVI -file. Thus you can use virtual fonts even if your DVI processor does -not support them, by passing the documents through DVIcopy first. -Synopsis: - - dvicopy [OPTION]... [INDVI[.dvi] [OUTDVI[.dvi]]] - - DVIcopy reads standard input if INDVI is not specified, and writes -standard output if OUTDVI is not specified. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-magnification=INTEGER' - Override existing magnification in INDVI with INTEGER; 1000 - specifies no magnification. This is equivalent to setting TeX's - '\mag' parameter. - -'-max-pages=N' - Process N pages; default is one million. - -'-page-start=PAGE-SPEC' - Start at the first page matching PAGE-SPEC, which is one or more - (signed) integers separated by periods, corresponding to TeX's - '\count0...9' parameters at '\shipout' time; '*' matches anything. - Examples: '3', '1.*.-4'. - - -File: web2c.info, Node: dvitype invocation, Prev: dvicopy invocation, Up: DVI utilities - -10.2 DVItype: Plain text transliteration of DVI files -===================================================== - -DVItype translates a DeVice Independent (DVI) file (as output by TeX, -for example) to a plain text file that humans can read. It also serves -as a DVI-validating program, i.e., if DVItype can read a file, it's -correct. Synopsis: - - dvitype [OPTION]... DVIFILE[.dvi] - -DVItype does not read any bitmap files, but it does read TFM files for -fonts referenced in DVIFILE. The usual places are searched (*note -(kpathsea)Supported file formats::). To see all the relevant paths, set -the environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - Output goes to standard output. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-dpi=REAL' - Do pixel movement calculations at REAL pixels per inch; default - 300.0. - -'-magnification=INTEGER' - Override existing magnification in INDVI with INTEGER; 1000 - specifies no magnification. This is equivalent to setting TeX's - '\mag' parameter. - -'-max-pages=N' - Process N pages; default is one million. - -'-output-level=N' - Verbosity level of output, from 0 to 4 (default 4): - * 0: Global document information only. - * 1: Most DVI commands included, and typeset characters - summarized. - * 2: Character and movement commands explicitly included. - * 3: DVI stack and current position calculations included. - * 4: Same information as level 3, but DVItype does random - positioning in the file, reading the DVI postamble first. - -'-page-start=PAGE-SPEC' - Start at the first page matching PAGE-SPEC, which is one or more - (signed) integers separated by periods, corresponding to TeX's - '\count0...9' parameters at '\shipout' time; '*' matches anything. - Examples: '1', '5.*.-9'. - -'-show-opcodes' - Show numeric opcode values (in decimal) for DVI commands, in braces - after the command name. This can help in debugging DVI utilities. - We use decimal because in the DVI format documentation (in - 'dvitype.web', among others) the opcodes are shown in decimal. - -* Menu: - -* dvitype output example:: - - -File: web2c.info, Node: dvitype output example, Up: dvitype invocation - -10.2.1 DVItype output example ------------------------------ - -As an example of the output from DVItype (see section above), here is -its (abridged) translation of the 'story.dvi' resulting from running the -example in 'The TeXbook', with '-output-level=4' and '-show-opcodes' on. - - ... - Options selected: - Starting page = * - Maximum number of pages = 1000000 - Output level = 4 (the works) - Resolution = 300.00000000 pixels per inch - numerator/denominator=25400000/473628672 - magnification=1000; 0.00006334 pixels per DVI unit - ' TeX output 1992.05.17:0844' - Postamble starts at byte 564. - maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 - Font 33: cmsl10---loaded at size 655360 DVI units - Font 23: cmbx10---loaded at size 655360 DVI units - Font 0: cmr10---loaded at size 655360 DVI units - - 42: beginning of page 1 - 87: push {141} - level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) - 88: down3 -917504 {159} v:=0-917504=-917504, vv:=-58 - 92: pop {142} - ... - 104: putrule {137} height 26214, width 30785863 (2x1950 pixels) - 113: down3 5185936 {159} v:=655360+5185936=5841296, vv:=370 - 117: push {141} - level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) - 118: right4 12265425 {146} h:=0+12265425=12265425, hh:=777 - [ ] - 123: fntdef1 23 {243}: cmbx10 - 145: fntnum23 {194} current font is cmbx10 - 146: setchar65 h:=12265425+569796=12835221, hh:=813 - 147: w3 251220 {150} h:=12835221+251220=13086441, hh:=829 - 151: setchar83 h:=13086441+418700=13505141, hh:=856 - ... - 164: setchar82 h:=17448202+565245=18013447, hh:=1142 - 165: x0 -62805 {152} h:=18013447-62805=17950642, hh:=1138 - 166: setchar89 h:=17950642+569796=18520438, hh:=1174 - [A SHORT STORY] - 167: pop {142} - level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) - ... - 550: pop {142} - level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) - 551: down3 1572864 {159} v:=42152922+1572864=43725786, vv:=2770 - 555: push {141} - level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) - 556: right4 15229091 {146} h:=0+15229091=15229091, hh:=965 - 561: setchar49 h:=15229091+327681=15556772, hh:=986 - [ 1] - 562: pop {142} - level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) - 563: eop {140} - - Explanation: - - * The DVItype options are recorded at the beginning, followed by - global information about the document, including fonts used. - - * Each DVI command is preceded by its byte position in the file - ('42:', '87:', ...), and (because of the '-show-opcodes') followed - by its decimal opcode value in braces ('{141}', '{142}', ...). - - * The 'level' lines record information about the DVI stack; 'h' and - 'v' define the current position in DVI units, while 'hh' and 'vv' - are the same in pixels. - - * Text sequences are summarized in brackets, as in '[A SHORT STORY]' - and the '[ 1]'. - - -File: web2c.info, Node: Font utilities, Next: Legalisms, Prev: DVI utilities, Up: Top - -11 Font utilities -***************** - -The Web2c programs described here convert between various TeX-related -font formats; the first section below briefly describes the formats. -GFtoPK is the only one that is routinely used, as Metafont outputs GF -format, but it's most efficient for device drivers to use PK. - - The precise definitions of the PK, GF, TFM, PL, VF, and VPL formats -mentioned below are in the source files that read them; 'pktype.web', -'gftype.web', 'tftopl.web', etc. - -* Menu: - -* Font file formats:: Explanations of GF, PK, TFM, VF, ... -* gftopk invocation:: GF -> PK (compact) -* pktogf invocation:: PK -> GF (expand). -* pktype invocation:: PK -> human-readable text. -* gftype invocation:: GF -> human-readable text. -* tftopl invocation:: TFM -> PL (for editing TFM). -* pltotf invocation:: PL -> TFM (make editing results usable). -* vftovp invocation:: VF -> VPL (tftopl for virtual fonts). -* vptovf invocation:: VPL -> VF (pltotf for virtual fonts). -* Font utilities available elsewhere:: Type 1, BDF, editors, etc. - - -File: web2c.info, Node: Font file formats, Next: gftopk invocation, Up: Font utilities - -11.1 Font file formats -====================== - -(For another perspective on this, *note (dvips)Font concepts::). - - Font files come in several varieties, with suffixes like: - .tfm .*pk .*gf .*pxl (obsolete) .pl .mf .vf .vpl -Each represents a file format. - - A TFM (TeX font metric) file is a compact binary file that contains -information about each character in a font, about combinations of -characters within that font, and about the font as a whole. The font -metric information contained in TFM files is device-independent units is -used by TeX to do typesetting. Unlike the bitmap (raster) fonts -described below, TFM font files contain no information about the shapes -of characters. They describe rectangular areas and combinations -thereof, but not what will eventually be printed in those areas. - - Since TeX does scaling calculations, one TFM file serves for all -magnifications of a given typeface. On the other hand, the best printed -results are obtained when magnified (or reduced fonts) are not produced -geometrically (as done by PostScript, for example) but rather optically, -with each size a separate design (as done with Computer Modern and the -EC fonts, for example); then a separate TFM file is needed for each -size. - - At any rate, TeX produces a DVI (DeVice Independent) file from your -source document. In order to print DVI files on real devices, you need -font files defining digitized character shapes and other data. Then -previewers and printer-driver programs can translate your DVI files into -something usable by your monitor or printer. Bitmap fonts come with -suffixes such as '.600pk' or '.600gf' or '.3000pxl', where the '600' is -the horizontal dots-per-inch resolution at which the font was produced, -and the 'pk' or 'gf' or 'pxl' indicates the font format. Outline fonts -in PostScript Type 1 format have suffixes such as '.pfa' or '.pfb'. - - Fonts in pk (packed) format are in the tightly packed raster format -that is pretty much the standard today. They take up less space than -fonts in the gf (generic font) format that Metafont generates, and far -less space than fonts in pxl format. Fonts in pxl format take up gross -amounts of disk space and permit only 128 characters. They are -obsolete. - - Font files with the '.pl' (property list) suffix are the plain text -(human-readable) analog of the binary '.tfm' files. The TFtoPL and -PLtoTF programs convert between the two formats (*note tftopl -invocation:: and *note pltotf invocation::). - - Font files with the '.mf' suffix are in Metafont source format. -These are the files used by Metafont to generate rastered fonts for -specific typefaces at specific magnifications for the specific -resolution and type of mapping used by your device. - - The suffix '.vf' identifies "virtual font" files, for which '.vpl' is -the human-readable analog. See *Note vftovp invocation::, and *note -vptovf invocation::. For further discussion of virtual fonts, see -'CTAN:/doc/virtual-fonts.knuth', 'CTAN:/help/virtualfonts.txt', and -*note (dvips)Virtual fonts::. - - (This section is based on documentation in the original Unix TeX -distribution by Pierre MacKay and Elizabeth Tachikawa.) - - -File: web2c.info, Node: gftopk invocation, Next: pktogf invocation, Prev: Font file formats, Up: Font utilities - -11.2 GFtoPK: Generic to packed font conversion -============================================== - -GFtoPK converts a generic font (GF) file output by, for example, -Metafont (*note mf invocation::) to a packed font (PK) file. PK files -are considerably smaller than the corresponding gf files, so they are -generally the bitmap font format of choice. Some DVI-processing -programs, notably Dvips, only support PK files and not GF files. -Synopsis: - - gftopk [OPTION]... GFNAME.DPI[gf] [PKFILE] - -The font GFNAME is searched for in the usual places (*note -(kpathsea)Glyph lookup::). To see all the relevant paths, set the -environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - The suffix 'gf' is supplied if not already present. This suffix is -not an extension; no '.' precedes it: for instance, 'cmr10.600gf'. - - If PKFILE is not specified, the output is written to the basename of -'GFNAME.DPIpk', e.g., 'gftopk /wherever/cmr10.600gf' creates -'./cmr10.600pk'. - - The only options are '--verbose', '--help', and '--version' (*note -Common options::). - - -File: web2c.info, Node: pktogf invocation, Next: pktype invocation, Prev: gftopk invocation, Up: Font utilities - -11.3 PKtoGF: Packed to generic font conversion -============================================== - -PKtoGF converts a packed font (PK) file to a generic font (GF) file. -Since PK format is much more compact than GF format, the most likely -reason to do this is to run GFtype (*note gftype invocation::) on the -result, so you can see the bitmap images. Also, a few old utility -programs do not support PK format. Synopsis: - - pktogf [OPTION]... PKNAME.DPI[pk] [GFFILE] - -The font PKNAME is searched for in the usual places (*note -(kpathsea)Glyph lookup::). To see all the relevant paths, set the -environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - The suffix 'pk' is supplied if not already present. This suffix is -not an extension; no '.' precedes it: for instance, 'cmr10.600pk'. - - If GFFILE is not specified, the output is written to the basename of -'PKNAME.DPIgf', e.g., 'pktogf /wherever/cmr10.600pk' creates -'./cmr10.600gf'. - - The only options are '--verbose', '--help', and '--version' (*note -Common options::). - - -File: web2c.info, Node: pktype invocation, Next: gftype invocation, Prev: pktogf invocation, Up: Font utilities - -11.4 PKtype: Plain text transliteration of packed fonts -======================================================= - -PKtype translates a packed font (PK) bitmap file (as output by GFtoPK, -for example) to a plain text file that humans can read. It also serves -as a PK-validating program, i.e., if PKtype can read a file, it's -correct. Synopsis: - - pktype PKNAME.DPI[pk] - - The font PKNAME is searched for in the usual places (*note -(kpathsea)Glyph lookup::). To see all the relevant paths, set the -environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - The suffix 'pk' is supplied if not already present. This suffix is -not an extension; no '.' precedes it: for instance, 'cmr10.600pk'. - - The translation is written to standard output. - - The only options are '-help' and '-version' (*note Common options::). - - As an example of the output, here is the (abridged) translation of -the letter 'K' in 'cmr10', as rendered at 600dpi with the mode 'ljfour' -from (available from 'ftp://ftp.tug.org/tex/modes.mf'). - - 955: Flag byte = 184 Character = 75 Packet length = 174 - Dynamic packing variable = 11 - TFM width = 815562 dx = 4259840 - Height = 57 Width = 57 X-offset = -3 Y-offset = 56 - [2]23(16)17(8)9(25)11(13)7(27)7(16)7(28)4(18)7(28)2(20)7(27)... - ... - (14)9(24)12(5)[2]23(13)21 - -Explanation: - -'955' - The byte position in the file where this character starts. - -'Flag byte' -'Dynamic packing variable' - Related to the packing for this character; see the source code. - -'Character' - The character code, in decimal. - -'Packet length' - The total length of this character definition, in bytes. - -'TFM width' - The device-independent (TFM) width of this character. It is 2^24 - times the ratio of the true width to the font's design size. - -'dx' - The device-dependent width, in "scaled pixels", i.e., units of - horizontal pixels times 2^16. - -'Height' -'Width' - The bitmap height and width, in pixels. - -'X-offset' -'Y-offset' - Horizontal and vertical offset from the upper left pixel to the - reference (origin) pixel for this character, in pixels (right and - down are positive). The "reference pixel" is the pixel that - occupies the unit square in Metafont; the Metafont reference point - is the lower left hand corner of this pixel. Put another way, the - x-offset is the negative of the left side bearing; the right side - bearing is the horizontal escapement minus the bitmap width plus - the x-offset. - -'[2]23(16)...' - Finally, run lengths of black pixels alternate with parenthesized - run lengths of white pixels, and brackets indicate a repeated row. - - -File: web2c.info, Node: gftype invocation, Next: tftopl invocation, Prev: pktype invocation, Up: Font utilities - -11.5 GFtype: Plain text transliteration of generic fonts -======================================================== - -GFtype translates a generic font (GF) bitmap file (as output by -Metafont, for example) to a plain text file that humans can read. It -also serves as a GF-validating program, i.e., if GFtype can read a file, -it's correct. Synopsis: - - gftype [OPTION]... GFNAME.DPI[gf] - - The font GFNAME is searched for in the usual places (*note -(kpathsea)Glyph lookup::). To see all the relevant paths, set the -environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. - - The suffix 'gf' is supplied if not already present. This suffix is -not an extension; no '.' precedes it: for instance, 'cmr10.600gf'. - - The translation is written to standard output. - - The program accepts the following options, as well as the standard -'-help' and '-version' (*note Common options::): -'-images' - Show the characters' bitmaps using asterisks and spaces. - -'-mnemonics' - Translate all commands in the GF file. - - As an example of the output, here is the (abrdiged) translation of -the letter 'K' in 'cmr10', as rendered at 600dpi with the mode 'ljfour' -from 'modes.mf' (available from ), with -both '-mnemonics' and '-images' enabled. - - GFtype outputs the information about a character in two places: a -main definition and a one-line summary at the end. We show both. Here -is the main definition: - - 2033: beginning of char 75: 3<=m<=60 0<=n<=56 - (initially n=56) paint (0)24(12)20 - 2043: newrow 0 (n=55) paint 24(12)20 - 2047: newrow 0 (n=54) paint 24(12)20 - 2051: newrow 0 (n=53) paint 24(12)20 - 2055: newrow 7 (n=52) paint 10(21)13 - 2059: newrow 8 (n=51) paint 8(23)9 - ... - 2249: newrow 8 (n=5) paint 8(23)11 - 2253: newrow 7 (n=4) paint 10(22)12 - 2257: newrow 0 (n=3) paint 24(11)22 - 2261: newrow 0 (n=2) paint 24(11)22 - 2265: newrow 0 (n=1) paint 24(11)22 - 2269: newrow 0 (n=0) paint 24(11)22 - 2273: eoc - .<--This pixel's lower left corner is at (3,57) in METAFONT coordinates - ************************ ******************** - ************************ ******************** - ************************ ******************** - ************************ ******************** - ********** ************* - ******** ********* - ... - ******** *********** - ********** ************ - ************************ ********************** - ************************ ********************** - ************************ ********************** - ************************ ********************** - .<--This pixel's upper left corner is at (3,0) in METAFONT coordinates - -Explanation: - -'2033' -'2043' -'...' - The byte position in the file where each GF command starts. - -'beginning of char 75' - The character code, in decimal. - -'3<=m<=60 0<=n<=56' - The character's bitmap lies between 3 and 60 (inclusive) - horizontally, and between 0 and 56 (inclusive) vertically. (m is a - column position and n is a row position.) Thus, 3 is the left side - bearing. The right side bearing is the horizontal escapement - (given below) minus the maximum m. - -'(initially n=56) paint (0)24(12)20' - The first row of pixels: 0 white pixels, 24 black pixels, 12 white - pixels, etc. - -'newrow 0 (n=55) paint 24(12)20' - The second row of pixels, with zero leading white pixels on the - row. - -'eoc' - The end of the main character definition. - - Here is the GF postamble information that GFtype outputs at the end: - - Character 75: dx 4259840 (65), width 815562 (64.57289), loc 2033 - - Explanation: - -'dx' - The device-dependent width, in "scaled pixels", i.e., units of - horizontal pixels times 2^16. The '(65)' is simply the same number - rounded. If the vertical escapement is nonzero, it would appear - here as a 'dy' value. - -'width' - The device-independent (TFM) width of this character. It is 2^24 - times the ratio of the true width to the font's design size. The - '64.57289' is the same number converted to pixels. - -'loc' - The byte position in the file where this character starts. - - -File: web2c.info, Node: tftopl invocation, Next: pltotf invocation, Prev: gftype invocation, Up: Font utilities - -11.6 TFtoPL: TeX font metric to property list conversion -======================================================== - -TFtoPL translates a TeX font metric (TFM, *note (dvips)Metric files::) -file (as output by Metafont, for example) to "property list format" (a -list of parenthesized items describing the font) that humans can edit or -read. This program is mostly used by people debugging TeX -implementations, writing font utilities, etc. Synopsis: - - tftopl [OPTION]... TFMNAME[.tfm] [PLFILE[.pl]] - - The font TFMNAME (extended with '.tfm' if necessary) is searched for -in the usual places (*note (kpathsea)Supported file formats::). To see -all the relevant paths, set the environment variable 'KPATHSEA_DEBUG' to -'-1' before running the program. - - If PLFILE (which is extended with '.pl' if necessary) is not -specified, the property list file is written to standard output. The -property list file can be converted back to TFM format by the companion -program TFtoPL (see the next section). - - The program accepts the following option, as well as the standard -'-verbose', '-help' and '-version' (*note Common options::): -'-charcode-format=TYPE' - Output character codes in the PL file according to TYPE: either - 'octal' or 'ascii'. Default is 'ascii' for letters and digits, - octal for all other characters. Exception: if the font's coding - scheme starts with 'TeX math sy' or 'TeX math ex', all character - codes are output in octal. - - In 'ascii' format, character codes that correspond to graphic - characters, except for left and right parentheses, are output as a - 'C' followed by the single character: 'C K', for example. In octal - format, character codes are output as the letter 'O' followed by - octal digits, as in 'O 113' for 'K'. - - 'octal' format is useful for symbol and other non-alphabetic fonts, - where using ASCII characters for the character codes is merely - confusing. - - As an example of the output, here is the (abridged) property list -translation of 'cmr10.tfm': - - (FAMILY CMR) - (FACE O 352) - (CODINGSCHEME TEX TEXT) - (DESIGNSIZE R 10.0) - (COMMENT DESIGNSIZE IS IN POINTS) - (COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) - (CHECKSUM O 11374260171) - (FONTDIMEN - (SLANT R 0.0) - (SPACE R 0.333334) - (STRETCH R 0.166667) - (SHRINK R 0.111112) - (XHEIGHT R 0.430555) - (QUAD R 1.000003) - (EXTRASPACE R 0.111112) - ) - (LIGTABLE - ... - (LABEL C f) - (LIG C i O 14) - (LIG C f O 13) - (LIG C l O 15) - (KRN O 47 R 0.077779) - (KRN O 77 R 0.077779) - (KRN O 41 R 0.077779) - (KRN O 51 R 0.077779) - (KRN O 135 R 0.077779) - (STOP) - ... - ) - ... - (CHARACTER C f - (CHARWD R 0.305557) - (CHARHT R 0.694445) - (CHARIC R 0.077779) - (COMMENT - (LIG C i O 14) - (LIG C f O 13) - (LIG C l O 15) - (KRN O 47 R 0.077779) - (KRN O 77 R 0.077779) - ... - ) - ) - ... - - As you can see, the general format is a list of parenthesized -"properties", nested where necessary. - - * The first few items ('FAMILY', 'FACE', and so on) are the so-called - "headerbyte" information from Metafont, giving general information - about the font. - - * The 'FONTDIMEN' property defines the TeX '\fontdimen' values. - - * The 'LIGTABLE' property defines the ligature and kerning table. - 'LIG' properties define ligatures: in the example above, an 'f' (in - the 'LABEL') followed by an 'i' is a ligature, i.e., a typesetting - program like TeX replaces those two consecutive characters by the - character at position octal '014 in the current font--presumably - the 'fi' ligature. 'KRN' properties define kerns: if an 'f' is - followed by character octal '047 (an apostrophe), TeX inserts a - small amount of space between them: 0.077779 times the design size - the font was loaded at (about three-quarters of a printer's point - by default in this case, or .001 inches). - - * The 'CHARACTER' property defines the dimensions of a character: its - width, height, depth, and italic correction, also in design-size - units, as explained in the previous item. For our example 'f', the - depth is zero, so that property is omitted. TFtoPL also inserts - any kerns and ligatures for this character as a comment. - - -File: web2c.info, Node: pltotf invocation, Next: vftovp invocation, Prev: tftopl invocation, Up: Font utilities - -11.7 PLtoTF: Property list to TeX font metric conversion -======================================================== - -PLtoTF translates a property list file (as output by TFtoPL, for -example) to TeX font metric (TFM, *note (dvips)Metric files::) format. -It's much easier for both programs and humans to create the (plain text) -property list files and let PLtoTF take care of creating the binary TFM -equivalent than to output TFM files directly. Synopsis: - - pltotf [OPTION]... PLFILE[.pl] [TFMFILE[.tfm]] - - If TFMFILE (extended with '.tfm' if necessary) is not specified, the -TFM file is written to the basename of 'PLFILE.tfm', e.g., 'pltotf -/wherever/cmr10.pl' creates './cmr10.tfm'. (Since TFM files are binary, -writing to standard output by default is undesirable.) - - The only options are '-verbose', '-help', and '-version' (*note -Common options::). - - For an example of property list format, see the previous section. - - -File: web2c.info, Node: vftovp invocation, Next: vptovf invocation, Prev: pltotf invocation, Up: Font utilities - -11.8 VFtoVP: Virtual font to virtual property lists -=================================================== - -VFtoVP translates a virtual font metric (VF, *note (dvips)Virtual -fonts::) file and its accompanying TeX font metric (TFM, *note -(dvips)Metric files::) file (as output by VPtoVF, for example) to -"virtual property list format" (a list of parenthesized items describing -the virtual font) that humans can edit or read. This program is mostly -used by people debugging virtual font utilities. Synopsis: - - vftovp [OPTION]... VFNAME[.vf] [TFMNAME[.tfm] [VPLFILE[.vpl]]] - - The fonts VFNAME and TFMNAME (extended with '.vf' and '.tfm' if -necessary) are searched for in the usual places (*note -(kpathsea)Supported file formats::). To see all the relevant paths, set -the environment variable 'KPATHSEA_DEBUG' to '-1' before running the -program. If TFMNAME is not specified, VFNAME (without a trailing '.vf') -is used. - - If VPLFILE (extended with '.vpl' if necessary) is not specified, the -property list file is written to standard output. The property list -file can be converted back to VF and TFM format by the companion program -VFtoVP (see the next section). - - The program accepts the following option, as well as the standard -'-verbose', '-help' and '-version' (*note Common options::): -'-charcode-format=TYPE' - Output character codes in the PL file according to TYPE: either - 'octal' or 'ascii'. Default is 'ascii' for letters and digits, - octal for all other characters. Exception: if the font's coding - scheme starts with 'TeX math sy' or 'TeX math ex', all character - codes are output in octal. - - In 'ascii' format, character codes that correspond to graphic - characters, except for left and right parentheses, are output as a - 'C' followed by the single character: 'C K', for example. In octal - format, character codes are output as the letter 'O' followed by - octal digits, as in 'O 113' for 'K'. - - 'octal' format is useful for symbol and other non-alphabetic fonts, - where using ASCII characters for the character codes is merely - confusing. - - -File: web2c.info, Node: vptovf invocation, Next: Font utilities available elsewhere, Prev: vftovp invocation, Up: Font utilities - -11.9 VPtoVF: Virtual property lists to virtual font -=================================================== - -VPtoVF translates a virtual property list file (as output by VFtoVP, for -example) to virtual font (VF, *note (dvips)Virtual fonts::) and TeX font -metric (TFM, *note (dvips)Metric files::) files. It's much easier for -both programs and humans to create the (plain text) property list files -and let VPtoVF take care of creating the binary VF and TFM equivalents -than to output them directly. Synopsis: - - vptovf [OPTION]... VPLFILE[.vpl] [VFFILE[.vf] [TFMFILE[.tfm]]] - - If VFFILE (extended with '.vf' if necessary) is not specified, the VF -output is written to the basename of 'VPLFILE.vf'; similarly for -TFMFILE. For example, 'vptovf /wherever/ptmr.vpl' creates './ptmr.vf' -and './ptmr.tfm'. - - The only options are '-verbose', '-help', and '-version' (*note -Common options::). - - -File: web2c.info, Node: Font utilities available elsewhere, Prev: vptovf invocation, Up: Font utilities - -11.10 Font utilities available elsewhere -======================================== - -The Web2c complement of font utilities merely implements a few basic -conversions. Many other more sophisticated font utilities exist; most -are in 'CTAN:/fonts/utilities' (for CTAN info, *note -(kpathsea)unixtex.ftp::). Here are some of the most commonly-requested -items: - - * AFM (Adobe font metric) to TFM conversion: *note (dvips)Invoking - afm2tfm::, and 'CTAN:/fonts/utilities/afmtopl'. - - * BDF (the X bitmap format) conversion: - . - - * Creating fonts using MetaPost: MetaType1. - . This is used to create the - excellent Latin Modern font family ('CTAN:/fonts/lm'), which - extends Computer Modern to a vast repertoire of scripts. - - * Editing of bitmap fonts: Xbfe from the GNU font utilities mentioned - below; the X BDF-editing programs available from - and - ; and finally, if your - fonts have only 128 characters, you can use the old 'gftopxl', - 'pxtoch', and 'chtopx' programs from . - - * Editing of outline fonts: FontForge, . - This is a very elaborate program with support for many outline - formats (Type 1, OpenType, TrueType, ...), and many advanced font - editing features. - - * PK bitmaps from PostScript outline fonts: gsftopk from the 'xdvi' - distribution. Alternatively, 'ps2pk', from - 'CTAN:/fonts/utilities/ps2pk'. - - * PostScript Type 1 font format conversion (i.e., between PFA and PFB - formats): . - - * Tracing bitmaps to fitted outlines: Autotrace - (), Potrace - (). For Metafont fonts, either of - the two programs 'mftrace' () - or 'textrace' () make the job - easier. - - * Virtual font creation: . - - -File: web2c.info, Node: Legalisms, Next: References, Prev: Font utilities, Up: Top - -Appendix A Legalisms -******************** - -In general, each file has its own copyright notice stating the copying -permissions for that file. Following is a summary. - - The Stanford TeX programs and Web2c system itself are in the public -domain (). The sources may be -copied verbatim, or used as the starting point of new software under -different names; however, per the wishes of the authors, they should be -modified only through a '.ch' file, but this is in the nature of a -development request rather than a legal requirement. - - MLTeX, pdfTeX, LuaTeX, XeTeX, and all the other derived engines have -used various license terms for their additions to the base code, often -the GPL (see or (for example) the -file 'web2c/pdftexdir/COPYINGv2'. They also mostly make use of -additional libraries with their own (compatible) terms. Please see each -program's sources. - - The Kpathsea library is covered by the GNU Lesser General Public -License (*note (kpathsea)Introduction::). Therefore, the _binaries_ -resulting from a standard Web2c compilation are also covered by the -LGPL; so if you (re)distribute the binaries, you must also (offer to) -distribute the complete source that went into those binaries. See - or the file -'kpathsea/COPYING.LESSERv2'. - - -File: web2c.info, Node: References, Next: Index, Prev: Legalisms, Up: Top - -Appendix B References -********************* - - 1. Kpathsea: *Note Introduction: (kpathsea)Top. - - 2. Dvips and Afm2tfm: *Note Introduction: (dvips)Top. - - 3. The TeX Users Group: . For an introduction to the - TeX system, see . - - 4. TUGboat, the principal journal for the TeX world: - . - - 5. TeX and computer typesetting in general: - . - - 6. For a bibliography of formal articles and technical reports on the - TeX project, see the books 'TeX: The Program' or 'Metafont: The - Program' cited below. - - 7. [Bil87] Neenie Billawala. Write-white printing engines and tuning - fonts with Metafont. 'TUGboat', 8(1):29-32, April 1987. - . - - 8. [Hob89] John D. Hobby. A Metafont-like system with PS output. - 'TUGboat', 10(4):505-512, December 1989. - . - - 9. [Hob92] John D. Hobby. A User's Manual for MetaPost. Technical - Report CSTR-162, AT&T Bell Laboratories, 1992. - - 10. [Hob93] John D. Hobby. Drawing Graphs with MetaPost. Technical - Report CSTR-164, AT&T Bell Laboratories, 1993. - - 11. [HS91] Samuel P. Harbison and Guy L. Steele Jr. 'C--A Reference - Manual'. Prentice-Hall, Upper Saddle River, NJ 07458, USA, third - edition, 1991. An authoritative reference to the C programming - language, and a good companion to Kernighan and Ritchie. - - 12. [KL93] Donald E. Knuth and Silvio Levy. 'The CWEB System of - Structured Documentation, Version 3.0'. Addison-Wesley, Reading, - MA, USA, 1993. . - - 13. [Knu84] Donald E. Knuth. A torture test for TeX. Report No. - STAN-CS-84-1027, Stanford University, Department of Computer - Science, 1984. - - 14. [Knu86a] Donald E. Knuth. A Torture Test for METAFONT. Report No. - STAN-CS-86-1095, Stanford University, Department of Computer - Science, 1986. - - 15. [Knu86b] Donald E. Knuth. 'The TeXbook', volume A of 'Computers - and Typesetting'. Addison-Wesley, Reading, MA, USA, 1986. - - 16. [Knu86c] Donald E. Knuth. 'TeX: The Program', volume B of - 'Computers and Typesetting'. Addison-Wesley, Reading, MA, USA, - 1986. - - 17. [Knu86d] Donald E. Knuth. 'The METAFONTbook', volume C of - 'Computers and Typesetting'. Addison-Wesley, Reading, MA, USA, - 1986. - - 18. [Knu86e] Donald E. Knuth. 'METAFONT: The Program', volume D of - 'Computers and Typesetting'. Addison-Wesley, Reading, MA, USA, - 1986. - - 19. [Knu86f] Donald E. Knuth. 'Computer Modern Typefaces', volume E - of 'Computers and Typesetting'. Addison-Wesley, Reading, MA, USA, - 1986. - - 20. [Knu89] Donald E. Knuth. The errors of TeX. 'Software--Practice - and Experience', 19(7):607-681, July 1989. This is an updated - version of Knuth:1988:ET. - - 21. [Knu90] Donald Knuth. Virtual Fonts: More Fun for Grand Wizards. - 'TUGboat', 11(1):13-23, April 1990. - . - - 22. [Knu92] Donald E. Knuth. 'Literate Programming'. CSLI Lecture - Notes Number 27. Stanford University Center for the Study of - Language and Information, Stanford, CA, USA, 1992. - - 23. [Lam94] Leslie Lamport. 'LaTeX: A Document Preparation System: - User's Guide and Reference Manual'. Addison-Wesley, Reading, MA, - USA, second edition, 1994. Reprinted with corrections, 1996. - - 24. [Lia83] Franklin Mark Liang. Word hy-phen-a-tion by com-pu-ter. - Technical Report STAN-CS-83-977, Stanford University, August 1983. - . - - 25. [Mac91] Pierre A. MacKay. Looking at the pixels: Quality control - for 300 dpi laser printer fonts, especially Metafonts. In Robert - A. Morris and Jacques Andre, editors, 'Raster Imaging and Digital - Typography II--Papers from the second RIDT meeting, held in Boston, - Oct. 14-16, 1991', pages 205-215, New York, 1991. Cambridge - University Press. - - -File: web2c.info, Node: Index, Prev: References, Up: Top - -Index -***** - -[index] -* Menu: - -* " character, ignored in filenames: \input filenames. (line 22) -* #define options: Compile-time options. - (line 6) -* $ expansion in filenames: \input filename caveats. - (line 17) -* %& magic number: Determining the memory dump to use. - (line 19) -* - starting a filename: Option conventions. (line 19) -* - starts option names: Option conventions. (line 11) -* -- starts option names: Option conventions. (line 11) -* --disable-dump-share configure option: Hardware and memory dumps. - (line 6) -* --disable-mf-nowin: Online Metafont graphics. - (line 65) -* --enable-epsfwin: Online Metafont graphics. - (line 20) -* --enable-hp2627win: Online Metafont graphics. - (line 28) -* --enable-ipc configure option: tex invocation. (line 93) -* --enable-mftalkwin: Online Metafont graphics. - (line 31) -* --enable-next: Online Metafont graphics. - (line 35) -* --enable-regiswin: Online Metafont graphics. - (line 40) -* --enable-suntoolswin: Online Metafont graphics. - (line 43) -* --enable-tektronixwin: Online Metafont graphics. - (line 48) -* --enable-unitermwin: Online Metafont graphics. - (line 51) -* --help common option: Common options. (line 11) -* --verbose common option: Common options. (line 15) -* --version common option: Common options. (line 18) -* --with-editor=CMD: Editor invocation. (line 10) -* --with-mf-x-toolkit=KIT: Online Metafont graphics. - (line 59) -* --with-x: Online Metafont graphics. - (line 57) -* -8bit: Common options. (line 110) -* -base=BASE: Determining the memory dump to use. - (line 15) -* -base=DUMPNAME: Common options. (line 39) -* -change=CHFILE: mft invocation. (line 63) -* -charcode-format=TYPE: tftopl invocation. (line 27) -* -charcode-format=TYPE <1>: vftovp invocation. (line 30) -* -cnf-line: Common options. (line 25) -* -D compiler options: Compile-time options. - (line 6) -* -disable-write18: tex invocation. (line 128) -* -dpi=REAL: dvitype invocation. (line 24) -* -enable-write18: tex invocation. (line 127) -* -enc: tex invocation. (line 86) -* -file-line-error: Common options. (line 30) -* -file-line-error-style: Common options. (line 31) -* -fmt=DUMPNAME: Common options. (line 39) -* -fmt=FMT: Determining the memory dump to use. - (line 15) -* -geometry, supported with Xt: Online Metafont graphics. - (line 69) -* -halt-on-error: Common options. (line 46) -* -images: gftype invocation. (line 26) -* -ini: Common options. (line 50) -* -ini <1>: Initial and virgin. (line 10) -* -interaction=STRING: Common options. (line 55) -* -ipc: tex invocation. (line 93) -* -ipc-start: tex invocation. (line 93) -* -jobname=STRING: Common options. (line 60) -* -kpathsea-debug=NUMBER: Common options. (line 64) -* -length=NUMBER: tangle invocation. (line 27) -* -loose: tangle invocation. (line 46) -* -lowercase: tangle invocation. (line 35) -* -magnification=INTEGER: dvicopy invocation. (line 20) -* -magnification=INTEGER <1>: dvitype invocation. (line 28) -* -max-pages=N: dvicopy invocation. (line 25) -* -max-pages=N <1>: dvitype invocation. (line 33) -* -mem=DUMPNAME: Common options. (line 39) -* -min-crossrefs=N: bibtex invocation. (line 31) -* -mixedcase: tangle invocation. (line 35) -* -mktex=FILETYPE: tex invocation. (line 103) -* -mktex=FILETYPE <1>: mf invocation. (line 87) -* -mltex: tex invocation. (line 108) -* -mnemonics: gftype invocation. (line 29) -* -no-file-line-error: Common options. (line 31) -* -no-mktex=FILETYPE: tex invocation. (line 103) -* -no-mktex=FILETYPE <1>: mf invocation. (line 87) -* -no-parse-first-line: Common options. (line 77) -* -no-shell-escape: tex invocation. (line 121) -* -output-comment=STRING: tex invocation. (line 113) -* -output-directory: Common options. (line 71) -* -output-directory <1>: Output file location. - (line 15) -* -output-level=N: dvitype invocation. (line 36) -* -overflow-label-offset=POINTS: gftodvi invocation. (line 59) -* -page-start=PAGE-SPEC: dvicopy invocation. (line 28) -* -page-start=PAGE-SPEC <1>: dvitype invocation. (line 46) -* -parse-first-line: Common options. (line 76) -* -progname=STRING: Common options. (line 82) -* -progname=STRING <1>: Determining the memory dump to use. - (line 17) -* -recorder: Common options. (line 89) -* -shell-escape: tex invocation. (line 120) -* -shell-restricted: tex invocation. (line 122) -* -show-opcodes: dvitype invocation. (line 52) -* -strict: tangle invocation. (line 46) -* -style=MFTFILE: mft invocation. (line 67) -* -T: mpost invocation. (line 111) -* -terse: bibtex invocation. (line 28) -* -tex=TEXPROGRAM: mpost invocation. (line 114) -* -translate-file=TCXFILE: Common options. (line 103) -* -troff: mpost invocation. (line 111) -* -underline: tangle invocation. (line 41) -* -uppercase: tangle invocation. (line 35) -* -x: weave invocation. (line 22) -* ., used for output: Output file location. - (line 6) -* .2602gf: mf invocation. (line 48) -* .aux cross-reference files: bibtex invocation. (line 6) -* .base: Initial Metafont. (line 6) -* .bbl bibliography files: bibtex invocation. (line 6) -* .bib bibliography databases: bibtex invocation. (line 6) -* .blg BibTeX log file: bibtex invocation. (line 14) -* .fmt: Initial TeX. (line 6) -* .mf: mf invocation. (line 24) -* .mp: mpost invocation. (line 26) -* .mps files and PDF: mpost invocation. (line 82) -* .NNN PostScript figures: mpost invocation. (line 31) -* .NNNgf generic fonts: mf invocation. (line 34) -* .tcx character translation files: Common options. (line 103) -* .tcx character translation files <1>: TCX files. (line 6) -* .tex: tex invocation. (line 20) -* .tfm output: mf invocation. (line 43) -* .tfm output <1>: mpost invocation. (line 31) -* .Xdefaults: Online Metafont graphics. - (line 69) -* .Xresources: Online Metafont graphics. - (line 69) -* 2602gf: mf invocation. (line 48) -* 8 bit clean: Common options. (line 110) -* 8 bit clean output, specifying: Common options. (line 110) -* 8-bit characters: TCX files. (line 6) -* \bibliography: bibtex invocation. (line 18) -* \bibliographystyle: bibtex invocation. (line 18) -* \charsubdef and MLTeX: \charsubdef. (line 6) -* \countN: dvicopy invocation. (line 28) -* \countN <1>: dvitype invocation. (line 46) -* \font and dynamic generation: tex invocation. (line 41) -* \fontdimen: tftopl invocation. (line 99) -* \immediate\write18: Shell escapes. (line 6) -* \input braced (grouped) filename: \input braced filename. - (line 6) -* \input filename caveats: \input filename caveats. - (line 6) -* \input filenames: \input filenames. (line 6) -* \input quoted filename: \input quoted filename. - (line 6) -* \input, and pipes: Shell escapes. (line 64) -* \mag: dvicopy invocation. (line 20) -* \mag <1>: dvitype invocation. (line 28) -* \openin, and pipes: Shell escapes. (line 64) -* \openout and security: tex invocation. (line 48) -* \openout, and pipes: Shell escapes. (line 64) -* \output routine, and \write: Shell escapes. (line 28) -* \pdfshellescape: Shell escapes. (line 64) -* \string, and \input filenames: \input filename caveats. - (line 29) -* \tracingcharsubdef and MLTeX: \tracingcharsubdef. (line 6) -* \tracinglostchars and MLTeX: \tracingcharsubdef. (line 11) -* \write18 shell escape extension: Shell escapes. (line 6) -* ^^ notation, avoiding: TCX files. (line 87) -* ~ expansion in filenames: \input filename caveats. - (line 17) -* abbrv.bst: Basic BibTeX style files. - (line 16) -* accented character: TCX files. (line 6) -* accents, hyphenating words with: MLTeX. (line 6) -* acknowledgements: Introduction. (line 54) -* acm.bst: Basic BibTeX style files. - (line 19) -* Ada, WEB for: WEB. (line 12) -* additional Make targets: Additional targets. (line 6) -* AFM to TFM conversion: Font utilities available elsewhere. - (line 12) -* afm2tfm: Font utilities available elsewhere. - (line 12) -* afmtopl: Font utilities available elsewhere. - (line 12) -* Aleph: TeX extensions. (line 15) -* aliases for fonts: Path searching. (line 14) -* alpha.bst: Basic BibTeX style files. - (line 22) -* American Mathematical Society, typesetting system: Formats. (line 35) -* AMSTeX: Formats. (line 35) -* apalike.bst: Basic BibTeX style files. - (line 25) -* architecture dependencies: Hardware and memory dumps. - (line 6) -* array limit, fixed: Runtime options. (line 45) -* array sizes: Runtime options. (line 6) -* assembly language routines: Compile-time options. - (line 21) -* autotrace: Font utilities available elsewhere. - (line 42) -* Awk, WEB for: WEB. (line 12) -* base file, determining: Determining the memory dump to use. - (line 6) -* base files: Initial Metafont. (line 6) -* base files, need mode definitions: Modes. (line 6) -* base files, plain only: Initial Metafont. (line 26) -* base files, sharing: Hardware and memory dumps. - (line 6) -* bases Make target: Additional targets. (line 28) -* basic BibTeX style files: Basic BibTeX style files. - (line 6) -* basic fonts and macros: Installation. (line 33) -* batch languages: TeX. (line 9) -* BDF and GF conversion: Font utilities available elsewhere. - (line 15) -* beamer, package: Formats. (line 57) -* beginfig: mpost invocation. (line 31) -* Berry, Karl: Introduction. (line 43) -* BIBINPUTS, search path for bib files: bibtex invocation. (line 18) -* bibliographies, creating: BibTeX. (line 6) -* bibliography: References. (line 6) -* bibliography items, cross-referenced: bibtex invocation. (line 31) -* bibtex: bibtex invocation. (line 6) -* BibTeX: BibTeX. (line 6) -* BibTeX collection: bibtex invocation. (line 58) -* BibTeX style files: Basic BibTeX style files. - (line 6) -* BigEndian machines: Hardware and memory dumps. - (line 6) -* binaries, linking: Common options. (line 82) -* blank lines, in TCX files: TCX files. (line 66) -* boxes, memory for: Runtime options. (line 20) -* braced filename for \input: \input braced filename. - (line 6) -* breakpoints, memory for: Runtime options. (line 20) -* Breitenlohner, Peter: Introduction. (line 9) -* BSTINPUTS, search path for bst files: bibtex invocation. (line 18) -* btex for MetaPost labels: mpost invocation. (line 44) -* btxdoc.bib: bibtex invocation. (line 52) -* btxdoc.tex: bibtex invocation. (line 46) -* btxhak.tex: bibtex invocation. (line 49) -* byte position: pktype invocation. (line 40) -* byte position <1>: gftype invocation. (line 76) -* byte swapping: Hardware and memory dumps. - (line 13) -* c-sources Makefile target: Additional targets. (line 12) -* caveats for \input filenames: \input filename caveats. - (line 6) -* change files, and MFT: mft invocation. (line 63) -* change files, and Tangle: tangle invocation. (line 11) -* change files, and Weave: weave invocation. (line 14) -* changing error messages style: Common options. (line 31) -* character codes, in GFtype output: gftype invocation. (line 79) -* character codes, in PKtype output: pktype invocation. (line 47) -* character codes, in TCX files: TCX files. (line 77) -* character proofs of fonts: gftodvi invocation. (line 6) -* CHARACTER property: tftopl invocation. (line 112) -* character translation files: TCX files. (line 6) -* CHARDP property: tftopl invocation. (line 112) -* CHARHT property: tftopl invocation. (line 112) -* CHARIC property: tftopl invocation. (line 112) -* CHARWD property: tftopl invocation. (line 112) -* chtopx: Font utilities available elsewhere. - (line 23) -* class name for Metafont: Online Metafont graphics. - (line 69) -* cm.base: Initial Metafont. (line 26) -* cmbase.mf: Initial Metafont. (line 26) -* cmbase.mft: mft invocation. (line 73) -* cmmf.base not recommended: Initial Metafont. (line 26) -* color, in DVItoMP: dvitomp invocation. (line 15) -* comments, in TCX files: TCX files. (line 70) -* comments, MFT control: mft invocation. (line 24) -* common options: Common options. (line 6) -* commonalities: Commonalities. (line 6) -* compilation: Installation. (line 6) -* compile-time options: configure options. (line 6) -* compile-time options <1>: Compile-time options. - (line 6) -* Computer Modern fonts, and Troff: mpost invocation. (line 61) -* Computer Modern macros: Initial Metafont. (line 26) -* Computer Modern Typefaces, production of: mft invocation. (line 73) -* configuration: Installation. (line 6) -* configuration file reading: Path searching. (line 6) -* configuration file values: Runtime options. (line 6) -* configuration, compile-time: configure options. (line 6) -* configure --with/--enable options: configure options. (line 6) -* CONTENTS.tex: weave invocation. (line 22) -* ConTeXt: Formats. (line 28) -* conventions for options,: Option conventions. (line 6) -* conversion, DVI to plain text: dvitype invocation. (line 6) -* conversion, GF to PK: gftopk invocation. (line 6) -* conversion, GF to plain text: gftype invocation. (line 6) -* conversion, PK to GF: pktogf invocation. (line 6) -* conversion, PK to plain text: pktype invocation. (line 6) -* conversion, property list to TFM: pltotf invocation. (line 6) -* conversion, property list to VF: vptovf invocation. (line 6) -* conversion, TFM to property list: tftopl invocation. (line 6) -* conversion, VF to VPL: vftovp invocation. (line 6) -* copyright notices: Legalisms. (line 6) -* Cork encoding and ISO input: TCX files. (line 48) -* creating memory dumps: Creating memory dumps. - (line 6) -* cross-referenced bibliography items: bibtex invocation. (line 31) -* cross-references, omitting: weave invocation. (line 22) -* current directory, used for output: Output file location. - (line 6) -* Curtis, Pavel: Introduction. (line 43) -* Cweb: WEB. (line 12) -* CWEB: WEB. (line 12) -* date and time, in memory dumps: Hardware and memory dumps. - (line 30) -* debugging DVI utilities: dvitype invocation. (line 52) -* debugging flags, specifying: Common options. (line 64) -* decimal character codes, in TCX files: TCX files. (line 77) -* dependencies, hardware: Hardware and memory dumps. - (line 6) -* design-size units: tftopl invocation. (line 101) -* device definitions, for Metafont: Modes. (line 6) -* device-independent width: pktype invocation. (line 53) -* device-independent width <1>: gftype invocation. (line 112) -* directory structure: Installation. (line 33) -* DISPLAY: Online Metafont graphics. - (line 76) -* dot files, written by TeX programs: tex invocation. (line 48) -* double quote character, ignored in filenames: \input filenames. - (line 22) -* downloading of fonts for MetaPost labels: mpost invocation. (line 66) -* DrawingServant: Online Metafont graphics. - (line 35) -* dump file: Common options. (line 39) -* dumping memory: Memory dumps. (line 6) -* DVI comment, specifying: tex invocation. (line 113) -* DVI files, converting to MPX: dvitomp invocation. (line 6) -* DVI files, explained: Font file formats. (line 29) -* DVI format definition: DVI utilities. (line 14) -* DVI opcodes, showing: dvitype invocation. (line 52) -* DVI utilities: DVI utilities. (line 6) -* dvicopy: dvicopy invocation. (line 6) -* dvitomp: dvitomp invocation. (line 6) -* dvitype DVI validation: dvitype invocation. (line 6) -* dvitype output example: dvitype output example. - (line 6) -* dvitype.web: DVI utilities. (line 14) -* dx horizontal escapement: pktype invocation. (line 57) -* dx horizontal escapement <1>: gftype invocation. (line 106) -* dy vertical escapement: gftype invocation. (line 106) -* dynamic array allocation: Runtime options. (line 45) -* dynamic Metafont mode definitions with smode: Modes. (line 28) -* dynamic packing variable: pktype invocation. (line 44) -* e response at error prompt: Editor invocation. (line 6) -* e-circumflex: \charsubdef. (line 20) -* e-TeX: TeX extensions. (line 10) -* e.mft: mft invocation. (line 73) -* EC fonts: tex invocation. (line 41) -* EC fonts <1>: mf invocation. (line 24) -* editing of bitmap fonts: Font utilities available elsewhere. - (line 23) -* editor invoked at error: Editor invocation. (line 6) -* eight-bit characters in filenames: \input filename caveats. - (line 12) -* empty.tcx: TCX files. (line 48) -* endian dependencies: Hardware and memory dumps. - (line 6) -* eoc GF command: gftype invocation. (line 97) -* Eplain: Formats. (line 50) -* epsf: Online Metafont graphics. - (line 19) -* epTeX: TeX extensions. (line 51) -* errors, editor invoked at: Editor invocation. (line 6) -* escapement, horizontal: pktype invocation. (line 57) -* escapement, horizontal <1>: gftype invocation. (line 106) -* escapement, vertical: gftype invocation. (line 106) -* etex for MetaPost labels: mpost invocation. (line 44) -* etex is pdfTeX: TeX extensions. (line 22) -* eupTeX: TeX extensions. (line 51) -* executables, shared initial and virgin: Initial and virgin. (line 6) -* exit status, of shell escape: Shell escapes. (line 34) -* expanded plain format: Formats. (line 50) -* expand_depth: Runtime options. (line 24) -* expansion limit, recursive: Runtime options. (line 25) -* expansion, and \input filenames: \input filename caveats. - (line 6) -* extensions to TeX: TeX extensions. (line 6) -* extra_mem_bot: Runtime options. (line 19) -* FACE property: tftopl invocation. (line 95) -* FAMILY property: tftopl invocation. (line 95) -* FAMILY property <1>: tftopl invocation. (line 99) -* Ferguson, Michael: MLTeX. (line 6) -* file formats for fonts: Font file formats. (line 6) -* file recorder: Common options. (line 89) -* filename conventions, in input files: \input filenames. (line 6) -* filenames starting with -: Option conventions. (line 19) -* first line of the main input file: Common options. (line 103) -* fixed-point arithmetic: Compile-time options. - (line 21) -* FIXPT: Compile-time options. - (line 21) -* flag byte: pktype invocation. (line 44) -* floating-point arithmetic: Compile-time options. - (line 21) -* floating-point values: Hardware and memory dumps. - (line 22) -* fmt file, determining: Determining the memory dump to use. - (line 6) -* fmt files: Initial TeX. (line 6) -* fmt files, sharing: Hardware and memory dumps. - (line 6) -* fmts Make target: Additional targets. (line 24) -* font aliases: Path searching. (line 14) -* font character code, translating: TCX files. (line 101) -* font design: Metafont. (line 6) -* font downloading for MetaPost labels: mpost invocation. (line 66) -* font file formats: Font file formats. (line 6) -* font proofs: gftodvi invocation. (line 6) -* font utilities: Font utilities. (line 6) -* font utilities, non-Web2c: Font utilities available elsewhere. - (line 6) -* fontforge: Font utilities available elsewhere. - (line 30) -* fontinst, for creating virtual fonts: Font utilities available elsewhere. - (line 49) -* fonts, basic: Installation. (line 33) -* format files: Initial TeX. (line 13) -* formats for TeX: Formats. (line 6) -* formats Make target: Additional targets. (line 17) -* fraction routines: Compile-time options. - (line 21) -* Free Software Foundation documentation system: Formats. (line 43) -* freedom of Web2c: Introduction. (line 23) -* ftp.math.utah.edu: bibtex invocation. (line 58) -* generating source specials: tex invocation. (line 134) -* geometric designs: Metafont. (line 6) -* geometric font scaling: Font file formats. (line 21) -* geometry for Metafont: Online Metafont graphics. - (line 69) -* getopt_long_only: Option conventions. (line 6) -* GF files, explained: Font file formats. (line 39) -* GF files, output by Metafont: mf invocation. (line 34) -* GF format definition: Font utilities. (line 11) -* GF output: mf invocation. (line 34) -* GF, converting PK to: pktogf invocation. (line 6) -* GF, converting to PK: gftopk invocation. (line 6) -* gftodvi: gftodvi invocation. (line 6) -* gftopk: gftopk invocation. (line 6) -* gftopxl: Font utilities available elsewhere. - (line 23) -* gftype GF validation: gftype invocation. (line 6) -* gftype.web: Font utilities. (line 11) -* glue ratio representations: Hardware and memory dumps. - (line 22) -* glue, memory for: Runtime options. (line 20) -* glyph substitutions: MLTeX. (line 6) -* gray font: gftodvi invocation. (line 29) -* group-delimited filename for \input: \input braced filename. - (line 6) -* Gruff, Billy Goat: Triptrap. (line 6) -* gsftopk: Font utilities available elsewhere. - (line 35) -* Harbison, Samuel P.: Hardware and memory dumps. - (line 34) -* hardware and memory dumps: Hardware and memory dumps. - (line 6) -* headerbyte information: tftopl invocation. (line 95) -* height, in pixels: pktype invocation. (line 62) -* help, online: Common options. (line 11) -* Herberts, Mathias: Online Metafont graphics. - (line 20) -* hex character codes, in TCX files: TCX files. (line 77) -* history: Introduction. (line 43) -* Hobby, John: Introduction. (line 9) -* horizontal escapement: pktype invocation. (line 57) -* horizontal escapement <1>: gftype invocation. (line 106) -* hp2627: Online Metafont graphics. - (line 27) -* human languages, supported in TeX: Languages and hyphenation. - (line 6) -* human-readable text, converting DVI to: dvitype invocation. (line 6) -* human-readable text, converting GF to: gftype invocation. (line 6) -* human-readable text, converting PK to: pktype invocation. (line 6) -* human-readable text, converting TFM to: tftopl invocation. (line 6) -* human-readable text, converting VF to: vftovp invocation. (line 6) -* hypertext: TeX extensions. (line 22) -* hyphenation and languages: Languages and hyphenation. - (line 6) -* hyphenation patterns, creating: patgen invocation. (line 6) -* ice cream: Introduction. (line 23) -* identifier case: tangle invocation. (line 35) -* identifier collisions: tangle invocation. (line 46) -* identifier length: tangle invocation. (line 27) -* identifiers with underlines: tangle invocation. (line 41) -* ieeetr.bst: Basic BibTeX style files. - (line 31) -* il1-t1.tcx: TCX files. (line 48) -* il2-t1.tcx: TCX files. (line 48) -* Info format: Formats. (line 43) -* initial form, enabling: Common options. (line 50) -* initial Metafont: Initial Metafont. (line 6) -* initial MetaPost: Initial MetaPost. (line 6) -* initial programs: Initial and virgin. (line 19) -* initial TeX: Initial TeX. (line 6) -* initializations, lengthy: Initial and virgin. (line 19) -* input filenames: \input filenames. (line 6) -* install-bases Make target: Additional targets. (line 28) -* install-fmts Make target: Additional targets. (line 24) -* install-formats Make target: Additional targets. (line 17) -* install-mems Make target: Additional targets. (line 34) -* installation: Installation. (line 6) -* interaction between TCX files and -8bit.: TCX files. (line 104) -* interaction mode: Common options. (line 55) -* international characters: TCX files. (line 6) -* introduction: Introduction. (line 6) -* IPC: IPC and TeX. (line 6) -* IPC_DEBUG: Compile-time options. - (line 28) -* IPC_DEBUG <1>: IPC and TeX. (line 13) -* job name: Common options. (line 60) -* kerning table, in TFM files: tftopl invocation. (line 101) -* keyboard character code, translating: TCX files. (line 101) -* Knuth, Donald E.: Introduction. (line 9) -* Knuth, Donald E. <1>: mft invocation. (line 56) -* KPATHSEA_DEBUG: Common options. (line 64) -* KRN property: tftopl invocation. (line 101) -* label font: gftodvi invocation. (line 36) -* LABEL property: tftopl invocation. (line 101) -* language support in TeX: Languages and hyphenation. - (line 6) -* languages, hyphenation rules for: patgen invocation. (line 6) -* LaTeX: Formats. (line 18) -* Latin Modern: Font utilities available elsewhere. - (line 18) -* left side bearing: pktype invocation. (line 66) -* left side bearing <1>: gftype invocation. (line 82) -* legalisms: Legalisms. (line 6) -* libsigsegv library: Runtime options. (line 33) -* licensing terms: Introduction. (line 23) -* LIG property: tftopl invocation. (line 101) -* ligature table, in TFM files: tftopl invocation. (line 101) -* LIGTABLE property: tftopl invocation. (line 101) -* linking binaries: Common options. (line 82) -* links to binaries: Determining the memory dump to use. - (line 30) -* literate programming: WEB. (line 6) -* LittleEndian machines: Hardware and memory dumps. - (line 6) -* location of texmf.cnf in TeX Live: Runtime options. (line 56) -* log file, BibTeX: bibtex invocation. (line 14) -* Lua: TeX extensions. (line 30) -* LuaTeX: TeX extensions. (line 30) -* machine dependencies: Hardware and memory dumps. - (line 6) -* machine-readable, converting property lists to: pltotf invocation. - (line 6) -* machine-readable, converting property lists to <1>: vptovf invocation. - (line 6) -* MacKay, Pierre: Font file formats. (line 62) -* macro packages, major TeX: Formats. (line 6) -* macros, basic: Installation. (line 33) -* macros, predefining in memory dumps: Memory dumps. (line 6) -* magnification: dvicopy invocation. (line 20) -* magnification <1>: dvitype invocation. (line 28) -* main_memory: Runtime options. (line 15) -* Make targets, additional: Additional targets. (line 6) -* Martin, Rick: Introduction. (line 54) -* Mathematical Reviews: Formats. (line 35) -* mathematical typesetting: TeX. (line 6) -* mem file, determining: Determining the memory dump to use. - (line 6) -* mem files, sharing: Hardware and memory dumps. - (line 6) -* memory dump to use, determining: Determining the memory dump to use. - (line 6) -* memory dumps: Memory dumps. (line 6) -* memory dumps and hardware: Hardware and memory dumps. - (line 6) -* memory dumps, contain date and time: Hardware and memory dumps. - (line 30) -* memory dumps, creating: Creating memory dumps. - (line 6) -* mems Make target: Additional targets. (line 34) -* meta characters in filenames: \input filename caveats. - (line 12) -* Metafont: Metafont. (line 6) -* Metafont geometry: Online Metafont graphics. - (line 69) -* Metafont graphics: Online Metafont graphics. - (line 6) -* Metafont input files: mf invocation. (line 24) -* Metafont invocation: mf invocation. (line 6) -* Metafont meets PostScript: MetaPost. (line 6) -* Metafont online support, new devices: Online Metafont graphics. - (line 79) -* Metafont source, prettyprinting: mft invocation. (line 6) -* Metafont, compatibility in MetaPost: Initial MetaPost. (line 15) -* Metafont, initial: Initial Metafont. (line 6) -* Metafont, MetaPost, and TeX: Three programs. (line 6) -* MetaPost: MetaPost. (line 6) -* MetaPost and plain Metafont compatibility: Initial MetaPost. - (line 15) -* MetaPost input files: mpost invocation. (line 26) -* MetaPost invocation: mpost invocation. (line 6) -* MetaPost source, prettyprinting: mft invocation. (line 79) -* MetaPost, initial: Initial MetaPost. (line 6) -* MetaPost, TeX, and Metafont: Three programs. (line 6) -* metatype1: Font utilities available elsewhere. - (line 18) -* mf: mf invocation. (line 6) -* mf.base: Initial Metafont. (line 14) -* MFEDIT: Editor invocation. (line 10) -* mfplain: Initial MetaPost. (line 15) -* mfput: mf invocation. (line 34) -* mft: mft invocation. (line 6) -* mftalk: Online Metafont graphics. - (line 30) -* MFTERM: Online Metafont graphics. - (line 11) -* mftmac.tex: mft invocation. (line 6) -* micro-typography: TeX extensions. (line 22) -* mktexmf, disabling: mf invocation. (line 24) -* mktextfM, disabling: tex invocation. (line 41) -* mltex: MLTeX. (line 6) -* MLTeX, enabling: tex invocation. (line 108) -* mode needed to run Metafont: mf invocation. (line 48) -* modes file needed for Metafont: Modes. (line 6) -* modes.mf recommended modes file: Modes. (line 10) -* mode_def: Modes. (line 15) -* mode_setup: Modes. (line 15) -* modifying texmf.cnf in TeX Live: Runtime options. (line 56) -* Morgan, Tim: Introduction. (line 43) -* Morris, Bob: Introduction. (line 54) -* MPEDIT: Editor invocation. (line 10) -* mpgraph.pdf: mpost invocation. (line 14) -* mpman.pdf: mpost invocation. (line 6) -* mpost: mpost invocation. (line 6) -* mpost, reason for name change: Installation. (line 19) -* mpout: mpost invocation. (line 31) -* mproof.tex: mpost invocation. (line 66) -* mptrap Make target: Additional targets. (line 41) -* mptrap test: Triptrap. (line 6) -* mptrap.readme: Triptrap. (line 6) -* MPX files, converting from DVI files: dvitomp invocation. (line 6) -* Multi-lingual TeX: MLTeX. (line 6) -* multiple spaces, and \input filenames: \input filename caveats. - (line 6) -* N tilde: \charsubdef. (line 36) -* new graphics support for Metafont: Online Metafont graphics. - (line 79) -* newrow GF command: gftype invocation. (line 93) -* next: Online Metafont graphics. - (line 34) -* non-Unix system, compiling on: Additional targets. (line 12) -* non-windows-capable Metafont: Online Metafont graphics. - (line 65) -* NO_X11WIN: Online Metafont graphics. - (line 56) -* NUL, not allowed in filenames: \input filename caveats. - (line 12) -* octal character codes, in TCX files: TCX files. (line 77) -* offset for overflow labels: gftodvi invocation. (line 59) -* Omega: TeX extensions. (line 15) -* online Metafont graphics: Online Metafont graphics. - (line 6) -* opcodes, showing DVI: dvitype invocation. (line 52) -* OpenType support: TeX extensions. (line 30) -* optical font scaling: Font file formats. (line 21) -* option conventions: Option conventions. (line 6) -* origin: pktype invocation. (line 66) -* output directory, specifying: Common options. (line 71) -* output directory, specifying <1>: Output file location. - (line 15) -* output file location: Output file location. - (line 6) -* output files, written by TeX programs: tex invocation. (line 48) -* output_comment for DVI files: tex invocation. (line 113) -* overflow label offset: gftodvi invocation. (line 59) -* overflow, of runtime stack: Runtime options. (line 25) -* packet length: pktype invocation. (line 50) -* page, starting: dvicopy invocation. (line 28) -* page, starting <1>: dvitype invocation. (line 46) -* parsing the first line: Common options. (line 77) -* Pascal, creating from WEB: tangle invocation. (line 6) -* patgen: patgen invocation. (line 6) -* path searching: Path searching. (line 6) -* path searching debugging: Common options. (line 64) -* PDF: TeX extensions. (line 22) -* PDF, and .mps files: mpost invocation. (line 82) -* pdfTeX: TeX extensions. (line 22) -* permissions, legal: Legalisms. (line 6) -* PFA and PFB conversion: Font utilities available elsewhere. - (line 39) -* pfaedit: Font utilities available elsewhere. - (line 30) -* PiCTeX, increasing memory for: Runtime options. (line 20) -* pipes, reading and writing: Shell escapes. (line 64) -* pixel height: pktype invocation. (line 62) -* pixel width: pktype invocation. (line 62) -* PK bitmaps from PostScript: Font utilities available elsewhere. - (line 35) -* PK files, explained: Font file formats. (line 39) -* PK files, not output by Metafont: mf invocation. (line 34) -* PK format definition: Font utilities. (line 11) -* PK, converting GF to: gftopk invocation. (line 6) -* PK, converting to GF: pktogf invocation. (line 6) -* pktogf: pktogf invocation. (line 6) -* pktype PK validation: pktype invocation. (line 6) -* pktype.web: Font utilities. (line 11) -* PL files, explained: Font file formats. (line 46) -* plain Metafont, compatibility in MetaPost: Initial MetaPost. - (line 15) -* plain text, converting DVI to: dvitype invocation. (line 6) -* plain text, converting GF to: gftype invocation. (line 6) -* plain text, converting PK to: pktype invocation. (line 6) -* plain text, converting TFM to: tftopl invocation. (line 6) -* plain text, converting VF to: vftovp invocation. (line 6) -* plain.base: Initial Metafont. (line 14) -* plain.bst: Basic BibTeX style files. - (line 11) -* plain.fmt: Initial TeX. (line 13) -* plain.mft: mft invocation. (line 67) -* pltotf: pltotf invocation. (line 6) -* pool file, writing: tangle invocation. (line 16) -* Poole, Simon: Online Metafont graphics. - (line 50) -* pooltype: pooltype invocation. (line 6) -* portable filenames: \input filenames. (line 25) -* PostScript fonts, and Troff: mpost invocation. (line 61) -* PostScript meets Metafont: MetaPost. (line 6) -* PostScript output: mpost invocation. (line 31) -* PostScript to PK bitmaps: Font utilities available elsewhere. - (line 35) -* PostScript Type 1 font conversion: Font utilities available elsewhere. - (line 39) -* PostScript, and font scaling: Font file formats. (line 21) -* potrace: Font utilities available elsewhere. - (line 42) -* predefined macros and memory dumps: Memory dumps. (line 6) -* prettyprinting Metafont source: mft invocation. (line 6) -* prettyprinting WEB programs: weave invocation. (line 6) -* primitives, new: TeX extensions. (line 10) -* printable characters, specifying: TCX files. (line 87) -* printer characteristics, for Metafont: Modes. (line 6) -* production use: Initial and virgin. (line 15) -* program name, determines memory dump: Determining the memory dump to use. - (line 30) -* program names, special: Common options. (line 50) -* program names, special <1>: Common options. (line 82) -* program names, special <2>: tex invocation. (line 108) -* prologues: mpost invocation. (line 111) -* prologues, and EPSF output: mpost invocation. (line 76) -* proof mode: mf invocation. (line 48) -* proof sheets, of fonts: gftodvi invocation. (line 6) -* property list format: tftopl invocation. (line 43) -* property list, converting TFM to: tftopl invocation. (line 6) -* property list, converting VF to virtual: vftovp invocation. (line 6) -* ps2pk: Font utilities available elsewhere. - (line 35) -* psfonts.map, read by MetaPost: mpost invocation. (line 76) -* pTeX: TeX extensions. (line 44) -* PXL files, explained: Font file formats. (line 39) -* pxtoch: Font utilities available elsewhere. - (line 23) -* quoted filename for \input: \input quoted filename. - (line 6) -* Raichle, Bernd: MLTeX. (line 6) -* reading, additional: Introduction. (line 62) -* readonly directory, running TeX in: Output file location. - (line 15) -* readonly directory, running TeX in <1>: Output file location. - (line 19) -* reallocation of arrays: Runtime options. (line 45) -* recursive expansion limit: Runtime options. (line 25) -* redefined character substitutions: \tracingcharsubdef. (line 6) -* reference pixel: pktype invocation. (line 66) -* references: References. (line 6) -* regis: Online Metafont graphics. - (line 39) -* Regis graphics support: Online Metafont graphics. - (line 40) -* regression testing: tex invocation. (line 113) -* repeated rows: pktype invocation. (line 76) -* representation of strings: pooltype invocation. (line 30) -* restricted shell escapes: Shell escapes. (line 6) -* right side bearing: pktype invocation. (line 66) -* right side bearing <1>: gftype invocation. (line 82) -* Rokicki, Tomas: Introduction. (line 43) -* run length encoded bitmaps: pktype invocation. (line 76) -* run length encoded bitmaps <1>: gftype invocation. (line 89) -* runtime options: Runtime options. (line 6) -* runtime stack overflow: Runtime options. (line 25) -* scaled pixels: pktype invocation. (line 57) -* scaled pixels <1>: gftype invocation. (line 106) -* scaling of fonts: Font file formats. (line 21) -* security, and output files: tex invocation. (line 48) -* security, and shell escapes: Shell escapes. (line 6) -* security, and write: mpost invocation. (line 88) -* security, and \openout: tex invocation. (line 48) -* segmentation fault: Runtime options. (line 25) -* shapes: Metafont. (line 6) -* sharing memory dumps: Hardware and memory dumps. - (line 6) -* shell commands in TeX: Shell escapes. (line 6) -* shell_escape enabling in TeX: Shell escapes. (line 6) -* shell_escape_commands: Shell escapes. (line 52) -* siam.bst: Basic BibTeX style files. - (line 35) -* side bearings: pktype invocation. (line 66) -* side bearings <1>: gftype invocation. (line 82) -* SIGSEGV: Runtime options. (line 25) -* slant font: gftodvi invocation. (line 39) -* slides, producing: Formats. (line 57) -* SliTeX: Formats. (line 57) -* small Metafont memory and modes: Modes. (line 15) -* smode and dynamic Metafont mode definition: Modes. (line 28) -* sockets: IPC and TeX. (line 6) -* space-terminated filenames: \input filenames. (line 10) -* Spiderweb: WEB. (line 12) -* Stallman, Richard: Introduction. (line 54) -* starting page: dvicopy invocation. (line 28) -* starting page <1>: dvitype invocation. (line 46) -* Steele Jr., Guy L.: Hardware and memory dumps. - (line 34) -* stopping at the first error: Common options. (line 46) -* strategy, overall: Introduction. (line 17) -* string numbers, displaying: pooltype invocation. (line 6) -* string pool, writing: tangle invocation. (line 16) -* string representation: pooltype invocation. (line 30) -* style design, for BibTeX: bibtex invocation. (line 49) -* style files: mft invocation. (line 67) -* substitutions of font glyphs: MLTeX. (line 6) -* sun: Online Metafont graphics. - (line 42) -* sun-gfx.c: Online Metafont graphics. - (line 43) -* Suntools: Online Metafont graphics. - (line 43) -* SunView: Online Metafont graphics. - (line 43) -* swap space, as array limit: Runtime options. (line 45) -* swapping bytes: Hardware and memory dumps. - (line 13) -* syntax of TCX files: TCX files. (line 65) -* system C library function: Shell escapes. (line 6) -* system command: Shell escapes. (line 6) -* system fonts, using: TeX extensions. (line 30) -* T1 encoding and ISO input: TCX files. (line 48) -* tabs, and \input filenames: \input filename caveats. - (line 6) -* Tachikawa, Elizabeth: Font file formats. (line 62) -* tangle: tangle invocation. (line 6) -* targets, additional Make: Additional targets. (line 6) -* TCX character translation files: TCX files. (line 6) -* technical illustrations, creating: MetaPost. (line 6) -* tek: Online Metafont graphics. - (line 47) -* Tektronix: Online Metafont graphics. - (line 48) -* Tektronix 4014: Online Metafont graphics. - (line 51) -* TERM: Online Metafont graphics. - (line 11) -* terminator for filenames: \input filenames. (line 10) -* terse output: bibtex invocation. (line 28) -* tex: tex invocation. (line 6) -* TeX, bibliographies for: bibtex invocation. (line 58) -* TeX, creating from Metafont: mft invocation. (line 6) -* TeX, creating from WEB: weave invocation. (line 6) -* TeX, description of: TeX. (line 6) -* TeX, extensions to: TeX extensions. (line 6) -* TeX, format packages for: Formats. (line 6) -* TeX, initial: Initial TeX. (line 6) -* TeX, input files found: tex invocation. (line 20) -* TeX, invocation: tex invocation. (line 6) -* TeX, Metafont, and MetaPost: Three programs. (line 6) -* TeX, Web2c implementation of: Introduction. (line 9) -* tex.fmt: Initial TeX. (line 13) -* TEXBIB, search path for bib files: bibtex invocation. (line 18) -* TEXEDIT: Editor invocation. (line 10) -* texfonts.map: Path searching. (line 14) -* Texinfo: Formats. (line 43) -* texmf.cnf: Path searching. (line 6) -* texmf.cnf <1>: Runtime options. (line 6) -* texmf.cnf for editors: Editor invocation. (line 10) -* texmf.cnf for shell escapes: Shell escapes. (line 6) -* texmfmp.c: Online Metafont graphics. - (line 79) -* TEXMFOUTPUT, used for reading: Output file location. - (line 25) -* TEXMFOUTPUT, used if . unwritable: Output file location. - (line 19) -* texmf_casefold_search: Runtime options. (line 42) -* texput: tex invocation. (line 33) -* TFM files, converting property lists to: pltotf invocation. (line 6) -* TFM files, explained: Font file formats. (line 12) -* TFM files, output by Metafont: mf invocation. (line 43) -* TFM files, output by MetaPost: mpost invocation. (line 31) -* TFM width of characters: pktype invocation. (line 53) -* TFM width of characters <1>: gftype invocation. (line 112) -* tftopl: tftopl invocation. (line 6) -* three programs: Three programs. (line 6) -* time and date, in memory dumps: Hardware and memory dumps. - (line 30) -* title font: gftodvi invocation. (line 33) -* tokenization, and \input filenames: \input filename caveats. - (line 6) -* toolkits, X: Online Metafont graphics. - (line 59) -* torture tests: Triptrap. (line 6) -* translation file for TeX, specifying: Common options. (line 103) -* translation from WEB to C: Introduction. (line 17) -* trap Make target: Additional targets. (line 41) -* trap test: Triptrap. (line 6) -* trapman.tex: Triptrap. (line 6) -* Trickey, Howard: Introduction. (line 43) -* trip Make target: Additional targets. (line 41) -* trip test: Triptrap. (line 6) -* tripman.tex: Triptrap. (line 6) -* triptrap Make target: Additional targets. (line 41) -* Troff, and MetaPost: mpost invocation. (line 61) -* troff, supported in MetaPost: MetaPost. (line 12) -* Troff, WEB for: WEB. (line 12) -* Trojan horses and TeX programs: tex invocation. (line 48) -* TrueType support: TeX extensions. (line 30) -* TUGboat bibliography: bibtex invocation. (line 58) -* Type 1 conversion: Font utilities available elsewhere. - (line 39) -* type design, personal: Initial Metafont. (line 31) -* type programs, DVI: dvitype invocation. (line 6) -* type programs, GF: gftype invocation. (line 6) -* type programs, PK: pktype invocation. (line 6) -* type programs, pool: pooltype invocation. (line 6) -* typeface families: Metafont. (line 6) -* typesetting: TeX. (line 6) -* Unicode: TeX extensions. (line 15) -* Unicode input: tex invocation. (line 86) -* Unicode input, native: TeX extensions. (line 37) -* uniterm: Online Metafont graphics. - (line 50) -* unsrt.bst: Basic BibTeX style files. - (line 39) -* upTeX: TeX extensions. (line 44) -* UTF-8 input: tex invocation. (line 86) -* UTF-8 input, native: TeX extensions. (line 30) -* validation, of DVI files: dvitype invocation. (line 6) -* validation, of GF files: gftype invocation. (line 6) -* validation, of PK files: pktype invocation. (line 6) -* validation, of TFM files: tftopl invocation. (line 6) -* validation, of VF files: vftovp invocation. (line 6) -* verbose BibTeX output, suppressing: bibtex invocation. (line 28) -* verbosity, enabling: Common options. (line 15) -* version number, finding: Common options. (line 18) -* vertical escapement: gftype invocation. (line 106) -* VF files, converting property lists to: vptovf invocation. (line 6) -* vftovp: vftovp invocation. (line 6) -* virgin programs: Initial and virgin. (line 15) -* virtual font creation: Font utilities available elsewhere. - (line 49) -* virtual fonts, expanding: dvicopy invocation. (line 6) -* virtual-fonts.knuth: Font file formats. (line 56) -* virtualfonts.txt: Font file formats. (line 56) -* vptovf: vptovf invocation. (line 6) -* weave: weave invocation. (line 6) -* WEB: WEB. (line 6) -* web environments, and security: Shell escapes. (line 71) -* WEB pool files, displaying: pooltype invocation. (line 6) -* WEB programs, compiling: tangle invocation. (line 6) -* WEB programs, typesetting: weave invocation. (line 6) -* WEB2C, search path for TCX files: TCX files. (line 35) -* Weber, Olaf: Introduction. (line 43) -* webmac.tex: weave invocation. (line 22) -* webman.tex: WEB. (line 12) -* whitespace, in TCX files: TCX files. (line 68) -* whitespace-terminated filenames: \input filenames. (line 10) -* width, device-independent: pktype invocation. (line 53) -* width, device-independent <1>: gftype invocation. (line 112) -* width, in pixels: pktype invocation. (line 62) -* word processor, not: TeX. (line 9) -* writing memory dumps: Creating memory dumps. - (line 6) -* X bitmap fonts: Font utilities available elsewhere. - (line 15) -* X class name for Metafont: Online Metafont graphics. - (line 69) -* x offset: pktype invocation. (line 66) -* X resources: Online Metafont graphics. - (line 69) -* X toolkits and Metafont: Online Metafont graphics. - (line 59) -* xampl.bib: bibtex invocation. (line 55) -* xbfe, bitmap font editor: Font utilities available elsewhere. - (line 23) -* XeTeX: TeX extensions. (line 37) -* xfed, bitmap font editor: Font utilities available elsewhere. - (line 23) -* xfedor, bitmap font editor: Font utilities available elsewhere. - (line 23) -* Xlib: Online Metafont graphics. - (line 56) -* Xlib support: Online Metafont graphics. - (line 59) -* Xt: Online Metafont graphics. - (line 56) -* Xt support: Online Metafont graphics. - (line 59) -* xterm: Online Metafont graphics. - (line 56) -* y offset: pktype invocation. (line 66) - - - -Tag Table: -Node: Top2759 -Node: Introduction3834 -Node: Installation7174 -Node: configure options9218 -Node: Compile-time options11240 -Node: Additional targets12342 -Node: Triptrap13619 -Node: Commonalities15122 -Node: Option conventions15655 -Node: Common options16878 -Node: Path searching21496 -Node: Output file location22468 -Node: Three programs23770 -Node: Runtime options24477 -Node: Initial and virgin27618 -Node: Memory dumps28567 -Node: Creating memory dumps29019 -Node: Determining the memory dump to use30226 -Node: Hardware and memory dumps31803 -Node: Editor invocation34249 -Node: \input filenames35112 -Node: \input quoted filename36665 -Node: \input braced filename37442 -Node: \input filename caveats38372 -Node: TeX39886 -Node: tex invocation41054 -Node: Initial TeX48039 -Node: Formats49403 -Node: Languages and hyphenation52220 -Node: MLTeX52650 -Node: \charsubdef54278 -Node: \tracingcharsubdef56601 -Node: TCX files57176 -Node: patgen invocation62616 -Node: Shell escapes63322 -Node: IPC and TeX66902 -Node: TeX extensions67472 -Node: Metafont69501 -Node: mf invocation70789 -Node: Initial Metafont74626 -Node: Modes76256 -Node: Online Metafont graphics78506 -Node: gftodvi invocation81931 -Node: mft invocation84751 -Node: MetaPost88749 -Node: mpost invocation89585 -Node: Initial MetaPost94619 -Node: dvitomp invocation95541 -Node: BibTeX96206 -Node: bibtex invocation96567 -Node: Basic BibTeX style files99041 -Node: WEB100371 -Node: tangle invocation101580 -Node: weave invocation103703 -Node: pooltype invocation105110 -Node: DVI utilities106240 -Node: dvicopy invocation107174 -Node: dvitype invocation108459 -Node: dvitype output example110790 -Node: Font utilities113843 -Node: Font file formats115023 -Node: gftopk invocation118292 -Node: pktogf invocation119483 -Node: pktype invocation120649 -Node: gftype invocation123472 -Node: tftopl invocation127975 -Node: pltotf invocation132568 -Node: vftovp invocation133619 -Node: vptovf invocation135854 -Node: Font utilities available elsewhere136881 -Node: Legalisms139086 -Node: References140532 -Node: Index144665 - -End Tag Table - - -Local Variables: -coding: utf-8 -End: diff --git a/Build/source/texk/web2c/doc/web2c.texi b/Build/source/texk/web2c/doc/web2c.texi deleted file mode 100644 index f96ed0d6a0a..00000000000 --- a/Build/source/texk/web2c/doc/web2c.texi +++ /dev/null @@ -1,4353 +0,0 @@ -\input texinfo -@setfilename web2c.info -@settitle Web2c: A @TeX{} implementation - -@tex -\expandafter\ifx\csname url\endcsname\relax - \errhelp{You must update texinfo.tex to at least version 3.8. -The latest version is available from ftp://ftp.tug.org/tex/texinfo.tex.} - \errmessage{Your texinfo.tex is too old} - \csname bye\expandafter\endcsname -\fi -@end tex - -@set version 2021 -@set month-year February 2021 - -@c Define new indices for commands in auxiliary files, filenames, and options. -@defcodeindex cm -@defcodeindex fl -@defcodeindex op - -@c Put everything in one index (arbitrarily chosen to be the concept index). -@syncodeindex cm cp -@syncodeindex fl cp -@syncodeindex fn cp -@syncodeindex ky cp -@syncodeindex op cp -@syncodeindex pg cp -@syncodeindex vr cp - -@dircategory TeX -@direntry -* Web2c: (web2c). TeX, Metafont, and companion programs. -@end direntry -@dircategory Individual utilities -@direntry -* bibtex: (web2c)bibtex invocation. Maintaining bibliographies. -* dvicopy: (web2c)dvicopy invocation. Virtual font expansion -* dvitomp: (web2c)dvitomp invocation. DVI to MPX (MetaPost pictures). -* dvitype: (web2c)dvitype invocation. DVI to human-readable text. -* gftodvi: (web2c)gftodvi invocation. Generic font proofsheets. -* gftopk: (web2c)gftopk invocation. Generic to packed fonts. -* gftype: (web2c)gftype invocation. GF to human-readable text. -* mf: (web2c)mf invocation. Creating typeface families. -* mft: (web2c)mft invocation. Prettyprinting Metafont source. -* mltex: (web2c)MLTeX. Multi-lingual TeX. -* mpost: (web2c)mpost invocation. Generating PostScript. -* patgen: (web2c)patgen invocation. Creating hyphenation patterns. -* pktogf: (web2c)pktogf invocation. Packed to generic fonts. -* pktype: (web2c)pktype invocation. PK to human-readable text. -* pltotf: (web2c)pltotf invocation. Property list to TFM. -* pooltype: (web2c)pooltype invocation. Display WEB pool files. -* tangle: (web2c)tangle invocation. WEB to Pascal. -* tex: (web2c)tex invocation. Typesetting. -* tftopl: (web2c)tftopl invocation. TFM -> property list. -* vftovp: (web2c)vftovp invocation. Virtual font -> virtual pl. -* vptovf: (web2c)vptovf invocation. Virtual pl -> virtual font. -* weave: (web2c)weave invocation. WEB to TeX. -@end direntry - -@copying -This file documents the installation and use of the programs in Web2c, -an implementation of Donald Knuth's TeX system. - -Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -2004, 2005, 2007, 2008, 2009, 2010-2021 Karl Berry & Olaf Weber. - -Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). -@end ignore - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation -@end copying - - -@titlepage -@title Web2c -@subtitle for version @value{version} -@subtitle @value{month-year} -@author Karl Berry -@author Olaf Weber -@author @url{https://tug.org/web2c} - -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@contents - -@ifnottex -@node Top -@top Web2c - -This document describes how to install and use the programs in the Web2c -implementation of the @TeX{} system, especially for Unix systems. It -corresponds to Web2c version @value{version}, released in -@value{month-year}. - -@menu -* Introduction:: A brief introduction. -* Installation:: How to compile and install Web2c. -* Commonalities:: Option syntax, standard options, memory dumps. -* Three programs:: TeX, Metafont, MetaPost have much in common. -* TeX:: Typesetting. -* Metafont:: Typeface design. -* MetaPost:: Technical illustrations. -* BibTeX:: Reusable bibliographies. -* WEB:: Literate programming. -* DVI utilities:: DVI expansion. -* Font utilities:: Font format conversion. -* Legalisms:: Blah blah blah. -* References:: Books and such. -* Index:: General index. -@end menu -@end ifnottex - - -@node Introduction -@chapter Introduction - -@cindex introduction - -This manual corresponds to version @value{version} of Web2c, released in -@value{month-year}. - -@cindex Knuth, Donald E. -@cindex @TeX{}, Web2c implementation of -@cindex Hobby, John -@cindex Breitenlohner, Peter -@dfn{Web2c} is the name of a @TeX{} implementation, originally for -Unix, but now also running under various operating systems. By -@dfn{@TeX{} implementation}, we mean all of the standard programs -developed by the Stanford @TeX{} project directed by Donald E. Knuth: -Metafont, DVItype, GFtoDVI, Bib@TeX{}, Tangle, etc., as well as @TeX{} -itself. Other programs are also included: DVIcopy, written by Peter -Breitenlohner, MetaPost and its utilities (derived from Metafont), by -John Hobby, etc. - -@cindex translation from WEB to C -@cindex strategy, overall -General strategy: Web2c works, as its name implies, by translating the -WEB source in which @TeX{} is written into C source code. Its output is -not self-contained, however; it makes extensive use of many macros and -functions in a library (the @file{web2c/lib} directory in the sources). -Therefore, it will not work without change on an arbitrary WEB program. - -@cindex licensing terms -@cindex freedom of Web2c -@cindex ice cream -Availability: All of Web2c is freely available---``free'' both in the -sense of no cost (free ice cream) and of having the source code to -modify and/or redistribute (free speech). @xref{unixtex.ftp,,, -kpathsea, Kpathsea}, for the practical details of how to obtain Web2c. - -Different parts of the Web2c distribution have different licensing -terms, however, reflecting the different circumstances of their -creation; consult each source file for exact details. The main -practical implication for redistributors of Web2c is that most of the -executables are covered by the GNU General Public License or GNU -Lesser General Public License, and therefore anyone who gets a binary -distribution must also be able to get the sources, as explained by the -terms of the GPL (@url{https://gnu.org/licenses/}. The GPL covers the -Web2c executables, including @code{tex}, because the Free Software -Foundation sponsored the initial development of the Kpathsea library -that Web2c uses. The basic source files from Stanford, however, have -their own copyright terms or are in the public domain, and are not -covered by the GPL. - -@cindex history -@cindex Rokicki, Tomas -@cindex Trickey, Howard -@cindex Curtis, Pavel -@cindex Morgan, Tim -@cindex Berry, Karl -@cindex Weber, Olaf -History: Tomas Rokicki originated the @TeX{}-to-C system in 1987, -working from the first change files for @TeX{} under Unix, which were -done primarily by Howard Trickey and Pavel Curtis. Tim Morgan then -took over development and maintenance for a number of years; the name -changed to Web-to-C somewhere in there. In 1990, Karl Berry became -the maintainer. He made many changes to the original sources, and -started using the shorter name Web2c. In 1997, Olaf Weber took over, -and then in 2006, Karl started taking care of it again. No -significant development or changes have been needed for many -years. Dozens of other people have contributed; their names are listed -in the @file{ChangeLog} files. - -@cindex acknowledgements -@cindex Martin, Rick -@cindex Morris, Bob -@cindex Stallman, Richard -Other acknowledgements by Karl: The University of Massachusetts at Boston -(particularly Rick Martin and Bob Morris) provided computers and ftp -access to me for many years. Richard Stallman at the Free Software -Foundation employed me while I wrote the original path searching library -(for the GNU font utilities). (rms also gave us Emacs, GDB, and GCC, -without which I cannot imagine developing Web2c.) And, of course, -@TeX{} would not exist in the first place without Donald E. Knuth. - -@cindex reading, additional -Further reading: @xref{References}. - - -@include install.texi - - -@node Commonalities -@chapter Commonalities - -@cindex commonalities - -Many aspects of the @TeX{} system are the same among more than one -program, so we describe those pieces together, here. - -@menu -* Option conventions:: -- or -, = or ` ' for values. -* Common options:: --help --version --verbose, and TeX/MF/MP options. -* Path searching:: Features of the common path searching library. -* Output file location:: TEXMFOUTPUT allows output in places other than `.'. -@end menu - - -@node Option conventions -@section Option conventions - -@cindex option conventions -@cindex conventions for options, - -@findex getopt_long_only -To provide a clean and consistent behavior, we chose to have all these -programs use the GNU function @code{getopt_long_only} to parse command -lines. However, we do use in a restricted mode, where all the options -have to come before the rest of the arguments. - -@opindex - @r{starts option names} -@opindex -- @r{starts option names} -As a result, you can: -@itemize @bullet -@item -use @samp{-} or @samp{--} to start an option name; - -@item -use any unambiguous abbreviation for an option name; - -@item -separate option names and values with either @samp{=} or one or more -spaces; - -@item -@flindex - @r{starting a filename} -@cindex filenames starting with @samp{-} -use filenames that would otherwise look like options by putting them -after an option @samp{--}. -@end itemize - -By convention, non-option arguments, if specified, generally define the -name of an input file, as documented for each program. - -If a particular option with a value is given more than once, it is the -last value that counts. - -For example, the following command line specifies the options -@samp{foo}, @samp{bar}, and @samp{verbose}; gives the value @samp{baz} -to the @samp{abc} option, and the value @samp{xyz} to the @samp{quux} -option; and specifies the filename @file{-myfile-}. - -@example --foo --bar -verb -abc=baz -quux karl --quux xyz -- -myfile- -@end example - - -@node Common options -@section Common options - -@cindex common options -All of these programs accept the standard GNU @samp{--help} and -@samp{--version} options, and several programs accept -@samp{--verbose}. Rather than writing identical descriptions for -every program, they are described here. - -@table @samp -@item --help -@opindex --help @r{common option} -@cindex help, online -Print a usage message listing basic usage and all available options to -standard output, then exit successfully. - -@item --verbose -@opindex --verbose @r{common option} -@cindex verbosity, enabling -Print progress reports to standard output. - -@item --version -@opindex --version @r{common option} -@cindex version number, finding -Print the version number to standard output, then exit successfully. -@end table - -@TeX{}, Metafont, and MetaPost have a number of additional options in -common: - -@table @samp -@item -cnf-line=@var{str} -@opindex -cnf-line -Parse @var{str} as if it were a line in the @file{texmf.cnf} -configuration file, overriding all other settings. @xref{Path -searching options,,,kpathsea,Kpathsea}. - -@item -file-line-error -@opindex -file-line-error -@itemx -no-file-line-error -@opindex -no-file-line-error -@opindex -file-line-error-style -@cindex changing error messages style -Change (or do not change) the way error messages are printed. The -alternate style looks like error messages from many compilers and is -easier to parse for some editors that invoke @TeX{}. This option used -to be called @samp{-file-line-error-style}. - -@item -fmt=@var{dumpname} -@itemx -base=@var{dumpname} -@itemx -mem=@var{dumpname} -@opindex -fmt=@var{dumpname} -@opindex -base=@var{dumpname} -@opindex -mem=@var{dumpname} -@cindex dump file -Use @var{dumpname} instead of the program name or a @samp{%&} line to -determine the name of the memory dump file read (@samp{fmt} for @TeX{}, -@samp{base} for Metafont, @samp{mem} for MetaPost). @xref{Memory -dumps}. Also sets the program name to @var{dumpname} if no -@samp{-progname} option was given. - -@item -halt-on-error -@opindex -halt-on-error -@cindex stopping at the first error -Stop processing and exit when an error occurs, as opposed to the normal -process of trying to recover and continue. - -@item -ini -@opindex -ini -@cindex program names, special -@cindex initial form, enabling -Enable the ``initial'' form of the program (@pxref{Initial and -virgin}). This is implicitly set if the program name is @code{initex} -resp.@: @code{inimf}. - -@item -interaction=@var{string} -@opindex -interaction=@var{string} -@cindex interaction mode -Set the interaction mode from the command line. The @var{string} must -be one of @samp{batchmode}, @samp{nonstopmode}, @samp{scrollmode}, or -@samp{errorstopmode}. - -@item -jobname=@var{string} -@opindex -jobname=@var{string} -@cindex job name -Set the job name to @var{string}, instead of deriving it from the name -of the input file. - -@item -kpathsea-debug=@var{number} -@opindex -kpathsea-debug=@var{number} -@vindex KPATHSEA_DEBUG -@cindex debugging flags, specifying -@cindex path searching debugging -Set path searching debugging flags according to the bits of @var{number} -(@pxref{Debugging,,,kpathsea,Kpathsea}). You can also specify this in -@code{KPATHSEA_DEBUG} environment variable (for all Web2c programs). -(The command line value overrides.) The most useful value is @samp{-1}, -to get all available output. - -@item -output-directory=@var{dirname} -@opindex -output-directory -@cindex output directory, specifying -Specify the directory @var{dirname} to which output files are written. -Also look for input files in @var{dirname} first, before looking along -the normal search path. @xref{Output file location}. - -@item -parse-first-line -@opindex -parse-first-line -@itemx -no-parse-first-line -@opindex -no-parse-first-line -@cindex parsing the first line -Check or disable checking whether the first line of the main input -file starts with @samp{%&}, and parse it if it does. This line can be -used specify the format and/or a TCX file. - -@item -progname=@var{string} -@opindex -progname=@var{string} -@cindex binaries, linking -@cindex linking binaries -@cindex program names, special -Set program (and memory dump) name to @var{string}. This may affect the -search paths and other values used (@pxref{Config files,,, kpathsea, -Kpathsea}). Using this option is equivalent to making a link named -@var{string} to the binary and then invoking the binary under that -name. @xref{Memory dumps}. - -@item -recorder -@opindex -recorder -@cindex file recorder -Enable the filename recorder. This makes the program save a list of the -opened files into a file with (by default) extension @samp{.fls}. For -Aleph, this option is always on, and the file has extension @samp{.ofl}. - -Ordinarily, the @samp{.fls} file is written to the same location as -the @samp{.log} file, for example, respecting -@option{-output-directory} if it is given (@pxref{Output file -location}). However, if @TeX{} processing is done on the command line -(or in response to the @samp{**} prompt), the @samp{.fls} might be -written to the current directory, or include an integer (the current -pid), as in @file{texput1234.fls}. You can use @option{-jobname} to -explicitly set the basename. - -@item -translate-file=@var{tcxfile} -@opindex -translate-file=@var{tcxfile} -@cindex translation file for @TeX{}, specifying -@flindex .tcx @r{character translation files} -@cindex first line of the main input file -Use @var{tcxfile} to define which characters are printable and translations -between the internal and external character sets. Moreover, -@var{tcxfile} can be explicitly declared in the first line of the main -input file @samp{%& -translate-file=@var{tcxfile}}. -This is the recommended method for portability reasons. -@xref{TCX files}. - -@item -8bit -@opindex -8bit -@cindex 8 bit clean -@flindex 8 bit clean output, specifying -This option specifies that by default all characters should be -considered printable. If @samp{-translate-file} was given as well, -then the TCX file may mark characters as non-printable. This is a -no-op in engines natively supporting Unicode. - -@end table - - -@node Path searching -@section Path searching - -@cindex path searching - -@flindex texmf.cnf -@cindex configuration file reading -All of the Web2c programs, including @TeX{}, which do path searching use -the Kpathsea routines to do so. The precise names of the environment -and configuration file variables which get searched for particular file -formatted are therefore documented in the Kpathsea manual -(@pxref{Supported file formats,,, kpathsea, Kpathsea}). Reading -@file{texmf.cnf} (@pxref{Config files,,, kpathsea, Kpathsea}), invoking -@code{mktex@dots{}} scripts (@pxref{mktex scripts,,, kpathsea, -Kpathsea}), and so on are all handled by Kpathsea. - -@cindex font aliases -@cindex aliases for fonts -@flindex texfonts.map -The programs which read fonts make use of another Kpathsea feature: -@file{texfonts.map}, which allows arbitrary aliases for the actual names -of font files; for example, @samp{Times-Roman} for @samp{ptmr8r.tfm}. -The distributed (and installed by default) @file{texfonts.map} includes -aliases for many widely available PostScript fonts by their PostScript -names. - - -@node Output file location -@section Output file location - -@cindex output file location -@cindex current directory, used for output -@flindex .@r{, used for output} -All the programs generally follow the usual convention for output files. -Namely, they are placed in the directory current when the program is -run, regardless of any input file location; or, in a few cases, output -is to standard output. - -For example, if you run @samp{tex /tmp/foo}, for example, the output -will be in @file{./foo.dvi} and @file{./foo.log}, not -@file{/tmp/foo.dvi} and @file{/tmp/foo.log}. - -@opindex -output-directory -@cindex output directory, specifying -@cindex readonly directory, running @TeX{} in -You can use the @samp{-output-directory} option to cause all output -files that would normally be written in the current directory to be -written in the specified directory instead. @xref{Common options}. - -@vindex TEXMFOUTPUT@r{, used if @samp{.} unwritable} -@cindex readonly directory, running @TeX{} in -If the current directory is not writable, and @samp{-output-directory} -is not specified, the main programs (@TeX{}, Metafont, MetaPost, and -Bib@TeX{}) make an exception: if the config file or environment -variable value @code{TEXMFOUTPUT} is set (it is not by default), -output files are written to the directory specified. - -@vindex TEXMFOUTPUT@r{, used for reading} -@code{TEXMFOUTPUT} is also checked for input files, as @TeX{} often -generates files that need to be subsequently read; for input, no -suffixes (such as @samp{.tex}) are added by default and no exhaustive -path searching is done, the input name is -simply checked as given. - - -@node Three programs -@chapter Three programs: Metafont, MetaPost, and @TeX{} - -@cindex three programs -@cindex @TeX{}, Metafont, and MetaPost -@cindex Metafont, MetaPost, and @TeX{} -@cindex MetaPost, @TeX{}, and Metafont - -@TeX{}, Metafont, and MetaPost have a number of features in common. -Besides the ones here, command-line options and other commonalities -are described in the previous section. - -@menu -* Runtime options:: The @file{texmf.cnf} configuration file. -* Initial and virgin:: Making memory dumps vs. production runs. -* Memory dumps:: .fmt/.base files for fast startup. -* Editor invocation:: The `e' response at errors. -* \input filenames:: Filename delimiters and Kpathsea expansion. -@end menu - - -@node Runtime options -@section Runtime options - -@cindex runtime options - -@cindex configuration file values -@cindex array sizes -@flindex texmf.cnf -Besides the configure- and compile-time options described in the -installation section (@pxref{Installation}), you can control a number -of parameters in the @file{texmf.cnf} runtime file read by Kpathsea -(@pxref{Config files,,, kpathsea, Kpathsea}). - -The main purpose of @file{texmf.cnf} is to specify search paths, but -array sizes and other options are also set there. Most are rather -obscure. Here are a few of the more interesting values: - -@vtable @samp -@item main_memory -Total words of memory available, for @TeX{}, Metafont, and MetaPost. -Must remake the format file after changing. - -@item extra_mem_bot -@cindex boxes, memory for -@cindex glue, memory for -@cindex breakpoints, memory for -@cindex PiC@TeX{}, increasing memory for -Extra space for ``large'' @TeX{} data structures (default 0): boxes, -glue, breakpoints, et al. If you use PiC@TeX{}, you may well want to -set this. - -@item expand_depth -@cindex recursive expansion limit -@cindex expansion limit, recursive -@cindex runtime stack overflow -@cindex overflow, of runtime stack -@cindex segmentation fault -@vindex SIGSEGV -Limit on recursive expansion calls before @TeX{} aborts (default -10000). If a @TeX{} program does an unterminated recursive expansion, -@TeX{} will dutifully expand macros until the system's runtime stack -overflows, typically with a segmentation fault (SIGSEGV). This -parameter was introduced to minimize the chance of that unpleasant -(though not dangerous) crash, instead allowing @TeX{} to quit with a -more informative message. - -@pindex libsigsegv @r{library} -The crash can still happen, though, if the system has an exceptionally -small memory allocation for its stack. There is no quantitative way to -determine the limit, and it does not seem worth implementing -system-dependent heuristics to guess at the number, since it's highly -improbable that any real @TeX{} code will ever need more than 10000 -recursive expansions (it has never happened). For the same reason, -using the libsigsegv library (@url{https://gnu.org/s/libsigsegv}) does -not seem worth the effort. - -@item texmf_casefold_search -@xref{Casefolding search,,, kpathsea, Kpathsea}. - -@end vtable - -@cindex array limit, fixed -@cindex swap space, as array limit -@cindex reallocation of arrays -@cindex dynamic array allocation -Ideally all arrays would be dynamically expanded as necessary, so the -only limiting factor would be the amount of swap space available, or -some configurable limit much larger than can currently be supported. - -Unfortunately, implementing this is extremely difficult, as the fixed -size of arrays is assumed in many places throughout the source code. -These runtime limits are a practical compromise between the -compile-time limits in previous versions, and truly dynamic arrays. -(On the other hand, the Web2c Bib@TeX{} implementation does do true -dynamic reallocation of some arrays.) - -@cindex modifying @file{texmf.cnf} in @TeX{} Live -@cindex location of @file{texmf.cnf} in @TeX{} Live -Nowadays there is rarely a reason to modify the values. But if you do -wish to modify @file{texmf.cnf}, in @TeX{} Live the best approach is -to put your changes, and only your changes at the top of the TL -installation tree. That is, if the system @file{texmf.cnf} is -installed in -@file{/some/path/to/texlive/YYYY/texmf-dist/web2c/texmf.cnf} is put -your custom settings in @file{/some/path/to/texlive/YYY/texmf.cnf}, -where @var{YYYY} is the year of installation (if you use that -subdirectory; it's the default). That way, unrelated changes to the -system @file{texmf.cnf} can happen with normal updates, without -affecting your local values. - - -@node Initial and virgin -@section Initial and virgin - -@cindex executables, shared initial and virgin -The @TeX{} and Metafont programs each have two main variants, called -@dfn{initial} and @dfn{virgin}. MetaPost no longer makes this -distinction. - -The initial form is enabled if: -@enumerate -@item -@opindex -ini -the @samp{-ini} option was specified; or -@item -the program name is @file{initex} resp.@: @file{inimf}; or -@item -the first line of the main input file is @samp{%&ini}; -@end enumerate -@noindent -otherwise, the virgin form is used. - -@cindex virgin programs -@cindex production use -The @dfn{virgin} form is the one generally invoked for production use. -The first thing it does is read a memory dump (@pxref{Determining the -memory dump to use}), and then proceeds on with the main job. - -@cindex initial programs -@cindex initializations, lengthy -The @dfn{initial} form is generally used only to create memory dumps -(see the next section). It starts up more slowly than the virgin form, -because it must do lengthy initializations that are encapsulated in the -memory dump file. - - -@node Memory dumps -@section Memory dumps - -@cindex memory dumps - -@cindex dumping memory -@cindex macros, predefining in memory dumps -@cindex predefined macros and memory dumps -In typical use, @TeX{} and Metafont require a large number of -macros to be predefined; therefore, they support @dfn{memory dump} -files, which can be read much more efficiently than ordinary source -code. - -@menu -* Creating memory dumps:: -* Determining the memory dump to use:: -* Hardware and memory dumps:: -@end menu - - -@node Creating memory dumps -@subsection Creating memory dumps - -@cindex memory dumps, creating -@cindex creating memory dumps -@cindex writing memory dumps - -The programs all create memory dumps in slightly idiosyncratic (thought -substantially similar) way, so we describe the details in separate -sections (references below). The basic idea is to run the initial -version of the program (@pxref{Initial and virgin}), read the source -file to define the macros, and then execute the @code{\dump} primitive. - -Also, each program uses a different filename extension for its memory -dumps, since although they are completely analogous they are not -interchangeable (@TeX{} cannot read a Metafont memory dump, for -example). - -Here is a list of filename extensions with references to examples of -creating memory dumps: - -@table @asis -@item @TeX{} -(@samp{.fmt}) @xref{Initial TeX,,Initial @TeX{}}. - -@item Metafont -(@samp{.base}) @xref{Initial Metafont}. -@end table - -When making memory dumps, the programs read environment variables and -configuration files for path searching and other values as usual. If -you are making a new installation and have environment variables -pointing to an old one, for example, you will probably run into -difficulties. - - -@node Determining the memory dump to use -@subsection Determining the memory dump to use - -@cindex memory dump to use, determining -@cindex fmt file, determining -@cindex base file, determining -@cindex mem file, determining - -The virgin form (@pxref{Initial and virgin}) of each program always -reads a memory dump before processing normal source input. All three -programs determine the memory dump to use in the same way: - -@enumerate -@item -If the first non-option command-line argument begins with @samp{&}, the -program uses the remainder of that argument as the memory dump name. -For example, running @samp{tex \&super} reads @file{super.fmt}. (The -backslash protects the @samp{&} against interpretation by the shell.) - -@item -@opindex -fmt=@var{fmt} -@opindex -base=@var{base} -If the @samp{-fmt} resp.@: @samp{-base} option is -specified, its value is used. - -@item -@opindex -progname=@var{string} -If the @samp{-progname} option is specified, its value is used. - -@item -@kindex %& @r{magic number} -If the first line of the main input file (which must be specified on the -command line, not in response to @samp{**}) is @code{%&@var{dump}}, and -@var{dump} is an existing memory dump of the appropriate type, -@var{dump} is used. - -The first line of the main input file can also specify which character -translation file is to be used: @code{%&-translate-file=@var{tcxfile}} -(@pxref{TCX files}). - -These two roles can be combined: @code{%&@var{dump} --translate-file=@var{tcxfile}}. If this is done, the name of the dump -must be given first. - -@item -@cindex program name, determines memory dump -@cindex links to binaries -Otherwise, the program uses the program invocation name, most commonly -@file{tex} resp.@: @file{mf}. For example, if @file{latex} is a link -to @file{tex}, and the user runs @samp{latex foo}, @file{latex.fmt} -will be used. - -@end enumerate - - -@node Hardware and memory dumps -@subsection Hardware and memory dumps - -@cindex hardware and memory dumps -@cindex memory dumps and hardware -@cindex sharing memory dumps -@cindex fmt files, sharing -@cindex base files, sharing -@cindex mem files, sharing - -@cindex LittleEndian machines -@cindex BigEndian machines -@cindex endian dependencies -@cindex machine dependencies -@cindex architecture dependencies -@cindex dependencies, hardware -@opindex --disable-dump-share configure @r{option} -By default, memory dump files are generally sharable between -architectures of different types; specifically, on machines of different -endianness (@pxref{Byte order,,,libc,GNU C Library}). (This is a -feature of the Web2c implementation, and is not true of all @TeX{} -implementations.) If you specify @samp{--disable-dump-share} to -@code{configure}, however, memory dumps will be endian-dependent. - -@cindex byte swapping -@cindex swapping bytes -The reason to do this is speed. To achieve endian-independence, the -reading of memory dumps on LittleEndian architectures, such as PC's and -DEC architectures, is somewhat slowed (all the multibyte values have to -be swapped). Usually, this is not noticeable, and the advantage of -being able to share memory dumps across all platforms at a site far -outweighs the speed loss. But if you're installing Web2c for use on -LittleEndian machines only, perhaps on a PC being used only by you, you -may wish to get maximum speed. - -@cindex floating-point values -@cindex glue ratio representations -@TeX{}nically, even without @samp{--disable-dump-share}, sharing of -@file{.fmt} files cannot be guaranteed to work. Floating-point values -are always written in native format, and hence will generally not be -readable across platforms. Fortunately, @TeX{} uses floating point -only to represent glue ratios, and all common formats (plain, -@LaTeX{}, AMS@TeX{}, @dots{}) do not do any glue setting at -@file{.fmt}-creation time. Metafont does not use floating point in -any dumped value at all. - -@cindex date and time, in memory dumps -@cindex time and date, in memory dumps -@cindex memory dumps, contain date and time -Incidentally, different memory dump files will never compare equal -byte-for-byte, because the program always dumps the current date and -time. So don't be alarmed by just a few bytes difference. - -@cindex Harbison, Samuel P. -@cindex Steele Jr., Guy L. -If you don't know what endianness your machine is, and you're curious, -here is a little C program to tell you. (The @code{configure} script -contains a similar program.) This is from the book @cite{C: A Reference -Manual}, by Samuel P. Harbison and Guy L. Steele -Jr@:. (@pxref{References}). - -@example -main () -@{ - /* Are we little or big endian? From Harbison&Steele. */ - union - @{ - long l; - char c[sizeof (long)]; - @} u; - u.l = 1; - if (u.c[0] == 1) - printf ("LittleEndian\n"); - else if (u.c[sizeof (long) - 1] == 1) - printf ("BigEndian\n"); - else - printf ("unknownEndian"); - - exit (u.c[sizeof (long) - 1] == 1); -@} -@end example - - -@node Editor invocation -@section Editor invocation - -@cindex editor invoked at error -@cindex errors, editor invoked at -@opindex e @r{response at error prompt} - -@TeX{}, Metafont, and MetaPost all (by default) stop and ask for user -intervention at an error. If the input came from a file, and the user -responds with @kbd{e} or @kbd{E}, the program invokes an editor. - -@vindex TEXEDIT -@vindex MFEDIT -@vindex MPEDIT -@opindex --with-editor=@var{cmd} -@flindex texmf.cnf @r{for editors} -Specifying @samp{--with-editor=@var{cmd}} to @code{configure} sets the -default editor command string to @var{cmd}. The environment -variables/configuration values @code{TEXEDIT}, @code{MFEDIT}, and -@code{MPEDIT} (respectively) override this. If @samp{--with-editor} is -not specified, the default is @code{vi +%d %s} on Unix, and an -invocation of the @TeX{}works editor on Windows. (See -@file{texmf.cnf} for the precise values.) - -In this string, @samp{%d} is replaced by the line number of the error, -and @samp{%s} is replaced by the name of the current input file. - - -@node \input filenames -@section @code{\input} filenames - -@cindex input filenames -@cindex filename conventions, in input files -@findex \input @r{filenames} - -@TeX{}, Metafont, and MetaPost source programs can all read other source -files with the @code{\input} (@TeX{}) and @code{input} (MF and MP) -primitives: -@example -\input @var{name} % in TeX -@end example - -@cindex space-terminated filenames -@cindex whitespace-terminated filenames -@cindex terminator for filenames -The file @var{name} can always be terminated with whitespace; for -Metafont and MetaPost, the statement terminator @samp{;} also works. -(@LaTeX{} and other macro packages provide other interfaces to -@code{\input} that allow different notation; here we are concerned only -with the primitive operation.) - -As (allowed) extensions to standard @TeX{}, Web2c also supports -specifying the filename in double quotes (@code{"some name"}) and in -braces (@code{@{"some name"@}}), which is convenient for filenames -containing spaces or other special characters, as described in the -sections below. - -In all cases, space tokens are ignored after the filename is read. - -@cindex @code{"} character, ignored in filenames -@cindex double quote character, ignored in filenames -Also, double quote (@code{"}) characters are ignored within the -filename; there is no way to read files whose names contain a @code{"}. - -@cindex portable filenames -However, for maximal portability of your document across systems, use -only the characters @samp{a}--@samp{z}, @samp{0}--@samp{9}, and at -most one @samp{.}. Do not use anything but simple filenames, since -directory separators vary among systems; instead, add the necessary -directories to the appropriate search path. - -@menu -* Quotes: \input quoted filename. \input "some name" -* Braces: \input braced filename. \input @{some name@} -* Caveats: \input filename caveats. Tokenization, nulls, Kpathsea expansion. -@end menu - - -@node \input quoted filename -@subsection @code{\input} quoted filename: @code{\input "some name"} - -@cindex @code{\input} quoted filename -@cindex quoted filename for @code{\input} - -As of Web2c version 7.5.3 (2004), double-quote characters can be used -to include spaces or other special characters. In typical use, the -@samp{"} characters surround the entire filename: -@example -\input "filename with spaces" -@end example - -Technically, the quote characters can be used inside the name, and -can enclose any characters, as in: -@example -\input filename" "with" "spaces -@end example - -One more point. In @LaTeX{}, the quotes are needed inside the braces -of its @code{\input} macro, thus: -@example -\input@{a b@} % fails -\input@{"a b"@} % ok -@end example - -There is no way to quote the quote character. - - -@node \input braced filename -@subsection @code{\input} braced filename: @code{\input@{some name@}} - -@cindex @code{\input} braced (grouped) filename -@cindex braced filename for @code{\input} -@cindex group-delimited filename for @code{\input} - -As of Web2c 2020, @code{\input} filenames in @TeX{} engines (this does -not apply in Metafont and MetaPost) can also be specified within a -@TeX{} group, typically curly braces. For example: -@example -\input@{filename with spaces@} -@end example - -As always with @TeX{}, the brace characters are not hardwired; what -counts is the category code: the first token after the @code{\input} -must be of catcode@tie{}1 (begin group), and it is matched with the -next character of catcode@tie{}2 (end group). - -Within the group-delimited filename, braces are treated as normal -characters. - -As with all forms of filenames, following spaces are ignored (after -the end group), and double quote (@code{"}) characters are ignored -within the filename. - - -@node \input filename caveats -@subsection @code{\input} filename caveats - -@cindex @code{\input} filename caveats -@cindex caveats for @code{\input} filenames -@cindex tokenization, and @code{\input} filenames -@cindex expansion, and @code{\input} filenames -@cindex multiple spaces, and @code{\input} filenames -@cindex tabs, and @code{\input} filenames -The quoting mechanisms just described come into play @emph{after} -@TeX{} has tokenized and expanded the input. So, multiple spaces and -tabs will generally be seen as a single space, active characters such -as @samp{~} are expanded first (generally causing an error), and so -on. More examples below. - -@cindex NUL, not allowed in filenames -@cindex eight-bit characters in filenames -@cindex meta characters in filenames -On the other hand, various C library routines and Unix itself use the null -byte (character code zero, ASCII NUL) to terminate strings. So -filenames in Web2c cannot contain nulls, even though @TeX{} itself does -not treat NUL specially. - -@kindex ~ @r{expansion in filenames} -@kindex $ @r{expansion in filenames} -Finally, the present Web2c implementation does @samp{~} and @samp{$} -expansion on @var{name}, unlike Knuth's original implementation. -Thus: -@example -\input ~jsmith/$foo.bar -@end example -will dereference the environment variable or Kpathsea config file -value @samp{foo} and read that file, extended with @samp{.bar}, in -user @samp{jsmith}'s home directory. You can also use braces in the -variable expansion, as in @samp{$@{foo@}bar}, if you want to follow -the variable name with a letter, numeral, or @samp{_}. - -(So another way to get a program to read a filename containing -whitespace is to define an environment variable and dereference it.) - -@findex \string@r{, and @code{\input filenames}} -In all the common @TeX{} formats (plain @TeX{}, @LaTeX{}, Con@TeX{}t, -AMS@TeX{}, @dots{}), the characters @samp{~} and @samp{$} have special -category codes, so to actually use these in a document you have to -change their catcodes or use @code{\string}. - - -@node TeX -@chapter @TeX{}: Typesetting - -@cindex @TeX{}, description of -@cindex typesetting -@cindex mathematical typesetting - -@TeX{} is a typesetting system: it was especially designed to handle -complex mathematics, as well as most ordinary text typesetting. - -@cindex batch languages -@cindex word processor, not -@TeX{} is a batch language, like C or Pascal, and not an interactive -``word processor'': you compile a @TeX{} input file into a corresponding -device-independent (DVI) file (and then translate the DVI file to the -commands for a particular output device). This approach has both -considerable disadvantages and considerable advantages. For a complete -description of the @TeX{} language, see @cite{The @TeX{}book} -(@pxref{References}). Many other books on @TeX{}, introductory and -otherwise, are available. - -@menu -* tex invocation:: Invoking TeX. -* Initial TeX:: Making format files. -* Formats:: Major TeX macro packages. -* Languages and hyphenation:: TeX supports many human languages. -* Shell escapes:: Running subprograms from TeX. -* IPC and TeX:: DVI output to a socket. -* TeX extensions:: Additional engines with additional features. -@end menu - - -@node tex invocation -@section @code{tex} invocation - -@pindex tex -@cindex @TeX{}, invocation - -@TeX{} (usually invoked as @code{tex}) formats the given text and -commands, and outputs a corresponding device-independent representation -of the typeset document. This section merely describes the options -available in the Web2c implementation. For a complete description of -the @TeX{} typesetting language, see @cite{The @TeX{}book} -(@pxref{References}). - -@TeX{}, Metafont, and MetaPost process the command line (described -here) and determine their memory dump (fmt) file in the same way -(@pxref{Memory dumps}). Synopses: - -@example -tex [@var{option}]@dots{} [@var{texname}[.tex]] [@var{tex-commands}] -tex [@var{option}]@dots{} \@var{first-line} -tex [@var{option}]@dots{} &@var{fmt} @var{args} -@end example - -@flindex .tex -@cindex @TeX{}, input files found -@TeX{} searches the usual places for the main input file @var{texname} -(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending -@var{texname} with @file{.tex} if necessary. To see all the -relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to -@samp{-1} before running the program. - -After @var{texname} is read, @TeX{} processes any remaining -@var{tex-commands} on the command line as regular @TeX{} input. Also, -if the first non-option argument begins with a @TeX{} escape character -(usually @code{\}), @TeX{} processes all non-option command-line -arguments as a line of regular @TeX{} input. - -If no arguments or options are specified, @TeX{} prompts for an -input file name with @samp{**}. - -@flindex texput -@TeX{} writes the main DVI output to the file -@file{@var{basetexname}.dvi}, where @var{basetexname} is the basename of -@var{texname}, or @samp{texput} if no input file was specified. A DVI -file is a device-independent binary representation of your @TeX{} -document. The idea is that after running @TeX{}, you translate the DVI -file using a separate program to the commands for a particular output -device, such as a PostScript printer -(@pxref{Top,,Introduction,dvips,Dvips}) or an X Window System display -(see xdvi(1)). - -@cindex EC fonts -@pindex mktextfM@r{, disabling} -@findex \font @r{and dynamic generation} -@TeX{} also reads TFM files for any fonts you load in your document with -the @code{\font} primitive. By default, it runs an external program -named @file{mktextfm} to create any nonexistent TFM files. You can -disable this at configure-time or runtime (@pxref{mktex -configuration,,, kpathsea, Kpathsea}). This is enabled mostly for the -sake of the EC fonts, which can be generated at any size. - -@findex \openout @r{and security} -@cindex security, and @code{\openout} -@cindex output files, written by @TeX{} programs -@cindex Trojan horses and @TeX{} programs -@cindex dot files, written by @TeX{} programs -@cindex security, and output files -@TeX{} can write output files, via the @code{\openout} primitive; this opens -a security hole vulnerable to Trojan horse attack: an unwitting user could -run a @TeX{} program that overwrites, say, @file{~/.rhosts}. (MetaPost has -a @code{write} primitive with similar implications). To alleviate this and -similar problems the functions @code{kpathsea_out_name_ok} and -@code{kpathsea_in_name_ok} from the Kpathse library (@pxref{Calling -sequence,,, kpathsea, Kpathsea}) are used to determine if a given filename -is acceptable to be opened for output or input, depending on the setting of -the configuration variables @code{openout_any} and @code{openin_any}: -@samp{a} (for ``any'', the default for @code{openin_any}), @samp{r} (for -``restricted''), or @samp{p} (for ``paranoid'', the default for -@code{openout_any}). - -In any case, all @code{\openout} filenames are recorded in the log file, -except those opened on the first line of input, which is processed when -the log file has not yet been opened. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -enc -@itemx -[no]-file-line-error -@itemx -fmt=@var{fmtname} -@itemx -halt-on-error -@itemx -ini -@itemx -interaction=@var{string} -@itemx -ipc -@itemx -ipc-start -@itemx -jobname=@var{string} -@itemx -kpathsea-debug=@var{number} -@itemx -[no]parse-first-line -@itemx -output-directory -@itemx -progname=@var{string} -@itemx -recorder -@itemx -translate-file=@var{tcxfile} -@itemx -8bit -These options are common to @TeX{}, Metafont, and MetaPost. -@xref{Common options}. - -@item -enc -@opindex -enc -@cindex Unicode input -@cindex UTF-8 input -Enable enc@TeX{} extensions, such as @code{\mubyte}. This can be used -to support the Unicode UTF-8 input encoding, although using an engine -with native Unicode support is more common nowadays. -@url{http://www.olsak.net/enctex.html}. - -@item -ipc -@itemx -ipc-start -@opindex -ipc -@opindex -ipc-start -@opindex --enable-ipc configure @r{option} -With either option, @TeX{} writes its DVI output to a socket as well as -to the usual @file{.dvi} file. With @samp{-ipc-start}, @TeX{} also -opens a server program at the other end to read the output. @xref{IPC -and TeX,,IPC and @TeX{}}. - -These options are available only if the @samp{--enable-ipc} option was -specified to @code{configure} during installation of Web2c. - -@item -mktex=@var{filetype} -@itemx -no-mktex=@var{filetype} -@opindex -mktex=@var{filetype} -@opindex -no-mktex=@var{filetype} -Turn on or off the @samp{mktex} script associated with @var{filetype}. -For @TeX{} proper, @var{filetype} can only be @samp{tex} and -@samp{tfm}, but for pdf@TeX{} and lua@TeX{}, it can also be @samp{pk}. - -@item -mltex -@opindex -mltex -@cindex ML@TeX{}, enabling -@cindex program names, special -If we are @code{INITEX} (@pxref{Initial and virgin}), enable ML@TeX{} -extensions such as @code{\charsubdef}. Implicitly set if the program -name is @code{mltex}. @xref{MLTeX,,ML@TeX{}}. - -@item -output-comment=@var{string} -@opindex -output-comment=@var{string} -@vindex output_comment @r{for DVI files} -@cindex DVI comment, specifying -@cindex regression testing -Use @var{string} as the DVI file comment. Ordinarily, this comment -records the date and time of the @TeX{} run, but if you are doing -regression testing, you may not want the DVI file to have this spurious -difference. This is also taken from the environment variable and -config file value @samp{output_comment}. - -@item -shell-escape -@opindex -shell-escape -@itemx -no-shell-escape -@opindex -no-shell-escape -@itemx -shell-restricted -@opindex -shell-restricted -Enable, or disable, or enable with restrictions the -@code{\write18@{@var{shell-command}@}} feature for external executing -shell commands. @xref{Shell escapes}. - -@item -enable-write18 -@opindex -enable-write18 -@itemx -disable-write18 -@opindex -disable-write18 -Synonyms for @option{-shell-escape} and @option{-no-shell-escape}, for -compatibility with MiK@TeX{}. (MiK@TeX{} also accepts both pairs of -options.) @xref{Shell escapes}. - -@item -src-specials -@itemx -src-specials=@var{string} -@cindex generating source specials -This option makes @TeX{} output specific source information using -@samp{\special} commands in the DVI file. These @samp{\special} track -the current file name and line number. - -Using the first form of this option, the @samp{\special} commands are -inserted automatically. - -In the second form of the option, @var{string} is -a comma separated list of the following values: @samp{cr}, -@samp{display}, @samp{hbox}, @samp{math}, @samp{par}, @samp{parend}, -@samp{vbox}. You can use this list to specify where you want @TeX{} to -output such commands. For example, @samp{-src-specials=cr,math} will -output source information every line and every math formula. - -These commands can be used with the appropriate DVI viewer and text -editor to switch from the current position in the editor to the same -position in the viewer and back from the viewer -to the editor. - -This option works by inserting @samp{\special} commands into the token -stream, and thus in principle these additional tokens can be recovered -or seen by the tricky-enough macros. If you run across a case, let us -know, because this counts as a bug. However, such bugs are very hard -to fix, requiring significant changes to @TeX{}, so please don't count -on it. - -Redefining @samp{\special} will not affect the functioning of this -option. The commands inserted into the token stream are -hard-coded to always use the @samp{\special} primitive. - -@TeX{} does not pass the trip test when this option is enabled. - -@end table - - -@node Initial TeX -@section Initial @TeX{} - -@cindex initial @TeX{} -@cindex @TeX{}, initial - -@flindex .fmt -@cindex fmt files -The @dfn{initial} form of @TeX{} is invoked by @samp{tex -ini}. It -does lengthy initializations avoided by the ``virgin'' (@code{vir}) -form, so as to be capable of dumping @samp{.fmt} files (@pxref{Memory -dumps}). For a detailed comparison of virgin and initial forms, -@pxref{Initial and virgin}. - -For a list of options and other information, @pxref{tex invocation}. - -@flindex plain.fmt -@flindex tex.fmt -@cindex format files -Unlike Metafont and MetaPost, many format files are commonly used with -@TeX{}. The standard one implementing the features described in the -@cite{@TeX{}book} is @samp{plain.fmt}, also known as @samp{tex.fmt} -(again, @pxref{Memory dumps}). It is created by default during -installation, but you can also do so by hand if necessary (e.g., if an -update to @file{plain.tex} is issued): -@example -tex -ini '\input plain \dump' -@end example -@noindent -(The quotes prevent interpretation of the backslashes from the shell.) -Then install the resulting @file{plain.fmt} in @samp{$(fmtdir)} -(@file{/usr/local/share/texmf/web2c} by default), and link -@file{tex.fmt} to it. - -The necessary invocation for generating a format file differs for each -format, so instructions that come with the format should explain. The -top-level @file{web2c} Makefile has targets for making most common -formats: @t{plain latex amstex texinfo eplain}. @xref{Formats}, for -more details on @TeX{} formats. - - -@node Formats -@section Formats - -@cindex formats for @TeX{} -@cindex @TeX{}, format packages for -@cindex macro packages, major @TeX{} - -@TeX{} @dfn{formats} are large collections of macros, often dumped -into a @file{.fmt} file (@pxref{Memory dumps}) by @code{tex -ini} -(@pxref{Initial TeX}). A number of formats are in reasonably -widespread use, and the Web2c Makefile has targets to make the versions -current at the time of release. You can change which formats are -automatically built by setting the @code{fmts} Make variable; by default, -only the @samp{plain} and @samp{latex} formats are made. - -Nowadays, the formats are generally installed and updated as part of a -larger @TeX{} distribution, such as @TeX{} Live -(@url{https://tug.org/texlive}). - -@table @t -@item latex -@cindex @LaTeX{} -The most widely used format. The current release is named -`@LaTeX{}2e'; new versions are released approximately every six -months, with patches issued as needed. The old release was called -`@LaTeX{} 2.09', and is no longer maintained or supported. @LaTeX{} -attempts to provide generic markup instructions, such as -``emphasize'', instead of specific typesetting instructions, such as -``use the 10@dmn{pt} Computer Modern italic font''. The @LaTeX{} home -page: @url{https://www.latex-project.org}. - -@item context -@cindex Con@TeX{}t -Con@TeX{}t is an independent macro package which has a basic document -structuring approach similar to @LaTeX{}. It also supports creating -interactive PDF files and has integrated MetaPost support, among many -other interesting features. The Con@TeX{}t home page: -@url{http://www.pragma-ade.com}. - -@item amstex -@cindex AMS@TeX{} -@cindex American Mathematical Society, typesetting system -@cindex Mathematical Reviews -The official typesetting system of the American Mathematical Society. -Like @LaTeX{}, it encourages generic markup commands. The AMS also -provides many @LaTeX{} packages for authors who prefer @LaTeX{}. Taken -together, they are used to produce nearly all AMS publications, e.g., -@cite{Mathematical Reviews}. The AMS@TeX{} home page: -@url{https://www.ams.org/tex}. - -@item texinfo -@cindex Texinfo -@cindex Info format -@cindex Free Software Foundation documentation system -The documentation system developed and maintained by the Free Software -Foundation for their software manuals. It can be automatically -converted into plain text, a machine-readable on-line format called -`info', HTML, etc. The Texinfo home page: -@url{https://www.gnu.org/software/texinfo}. - -@item eplain -@cindex Eplain -@cindex expanded plain format -The ``expanded plain'' format provides various common features (e.g., -symbolic cross-referencing, tables of contents, indexing, citations -using Bib@TeX{}), for those authors who prefer to handle their own -high-level formatting. The Eplain home page: -@url{https://tug.org/eplain}. - -@item slitex -@cindex Sli@TeX{} -@cindex slides, producing -@flindex beamer@r{, package} -An obsolete @LaTeX{} 2.09 format for making slides. It is replaced by -the @samp{slides} document class, although the @samp{beamer} package -is the most commonly method for making slides nowadays. The Beamer -page on CTAN: @url{https://ctan.org/pkg/beamer}. - -@end table - - -@node Languages and hyphenation -@section Languages and hyphenation - -@cindex language support in @TeX{} -@cindex human languages, supported in @TeX{} -@cindex hyphenation and languages - -@TeX{} supports most natural languages. See also @ref{TeX extensions,, -@TeX{} extensions}. - -@menu -* MLTeX:: Multi-lingual TeX. -* TCX files:: Support for different character sets & fonts. -* patgen invocation:: Creating hyphenation patterns. -@end menu - - -@node MLTeX -@subsection ML@TeX{}: Multi-lingual @TeX{} - -@pindex mltex -@cindex Multi-lingual @TeX{} - -@cindex Ferguson, Michael -@cindex Raichle, Bernd -@cindex accents, hyphenating words with -@cindex glyph substitutions -@cindex substitutions of font glyphs -Multi-lingual @TeX{} (@code{mltex}) is an extension of @TeX{} originally -written by Michael Ferguson and now updated and maintained by Bernd -Raichle. With the advent of Unicode, it has become obsolete, though -it is still supported in Web2c in the event of bugs or compilation -bugs. - -ML@TeX{} allows the use of non-existing glyphs in a font by declaring -glyph substitutions. These are restricted to substitutions of an -accented character glyph, which need not be defined in the current -font, by its appropriate @code{\accent} construction using a base and -accent character glyph, which do have to exist in the current font. -This substitution is automatically done behind the scenes, if -necessary, and thus ML@TeX{} additionally supports hyphenation of -words containing an accented character glyph for fonts missing this -glyph (e.g., Computer Modern). Standard @TeX{} suppresses hyphenation -in this case. - -ML@TeX{} works at @file{.fmt}-creation time: the basic idea is to -specify the @samp{-mltex} option to @TeX{} when you @code{\dump} a -format. Then, when you subsequently invoke @TeX{} and read that -@code{.fmt} file, the ML@TeX{} features described below will be enabled. - -Generally, you use special macro files to create an ML@TeX{} @code{.fmt} -file. - -The sections below describe the two new primitives that ML@TeX{} defines. -Aside from these, ML@TeX{} is completely compatible with standard @TeX{}. - -@menu -* \charsubdef:: Character substitution definitions. -* \tracingcharsubdef:: Tracing substitutions. -@end menu - - -@node \charsubdef -@subsubsection @code{\charsubdef}: Character substitutions - -@findex \charsubdef @r{and ML@TeX{}} - -The most important primitive ML@TeX{} adds is @code{\charsubdef}, used -in a way reminiscent of @code{\chardef}: -@example -\charsubdef @var{composite} [=] @var{accent} @var{base} -@end example - -Each of @var{composite}, @var{accent}, and @var{base} are font glyph -numbers, expressed in the usual @TeX{} syntax: @t{`\e} symbolically, -@t{'145} for octal, @t{"65} for hex, @t{101} for decimal. - -ML@TeX{}'s @code{\charsubdef} declares how to construct an accented -character glyph (not necessarily existing in the current font) using two -character glyphs (that do exist). Thus it defines whether a character -glyph code, either typed as a single character or using the @code{\char} -primitive, will be mapped to a font glyph or to an @code{\accent} glyph -construction. - -For example, if you assume glyph code 138 -@cindex e-circumflex -(decimal) for an e-circumflex -@tex -(\^e) -@end tex -and you are using the Computer Modern fonts, which have the circumflex -accent in position 18 and lowercase `e' in the usual ASCII position 101 -decimal, you would use @code{\charsubdef} as follows: - -@example -\charsubdef 138 = 18 101 -@end example - -For the plain @TeX{} format to make use of this substitution, you have -to redefine the circumflex accent macro @code{\^} in such a way that if -its argument is character `e' the expansion @code{\char138 } is used -instead of @code{\accent18 e}. Similar @code{\charsubdef} declaration -and macro redefinitions have to be done for all other accented -characters. - -To disable a previous @code{\charsubdef @var{c}}, redefine @var{c} -as a pair of zeros. For example: -@example -\charsubdef '321 = 0 0 % disable N tilde -@end example -@cindex N tilde -@noindent -(Octal @t{'321} is the ISO Latin-1 value for the Spanish N tilde.) - -@code{\charsubdef} commands should only be given once. Although in -principle you can use @code{\charsubdef} at any time, the result is -unspecified. If @code{\charsubdef} declarations are changed, usually -either incorrect character dimensions will be used or ML@TeX{} will -output missing character warnings. (The substitution of a -@code{\charsubdef} is used by @TeX{} when appending the character node -to the current horizontal list, to compute the width of a horizontal box -when the box gets packed, and when building the @code{\accent} -construction at @code{\shipout}-time. In summary, the substitution is -accessed often, so changing it is not desirable, nor generally useful.) - - -@node \tracingcharsubdef -@subsubsection @code{\tracingcharsubdef}: Substitution diagnostics - -@findex \tracingcharsubdef @r{and ML@TeX{}} -@cindex redefined character substitutions -To help diagnose problems with @samp{\charsubdef}, ML@TeX{} provides a -new primitive parameter, @code{\tracingcharsubdef}. If positive, every -use of @code{\charsubdef} will be reported. This can help track down -when a character is redefined. - -@findex \tracinglostchars @r{and ML@TeX{}} -In addition, if the @TeX{} parameter @code{\tracinglostchars} is 100 or -more, the character substitutions actually performed at -@code{\shipout}-time will be recorded. - - -@node TCX files -@subsection TCX files: Character translations - -@flindex TCX @r{character translation files} -@flindex .tcx @r{character translation files} -@cindex character translation files - -@cindex international characters -@cindex 8-bit characters -@cindex accented character -TCX (@TeX{} character translation) files help @TeX{} support direct -input of 8-bit international characters if fonts containing those -characters are being used. Specifically, they map an input (keyboard) -character code to the internal @TeX{} character code (a superset of -ASCII). - -Of the various proposals for handling more than one input encoding, -TCX files were chosen because they follow Knuth's original ideas for -the use of the @samp{xchr} and @samp{xord} tables. He ventured that -these would be changed in the WEB source in order to adjust the actual -version to a given environment. It turns out, however, that -recompiling the WEB sources is not as simple a task as Knuth may have -imagined; therefore, TCX files, providing the possibility of changing -of the conversion tables on on-the-fly, have been implemented instead. - -This approach limits the portability of @TeX{} documents, as some -implementations do not support it (or use a different method for -input-internal reencoding). It may also be problematic to determine -the encoding to use for a @TeX{} document of unknown provenance; in -the worst case, failure to do so correctly may result in subtle errors -in the typeset output. But we feel the benefits outweigh these -disadvantages. - -This is entirely independent of the ML@TeX{} extension (@pxref{MLTeX}): -whereas a TCX file defines how an input keyboard character is mapped to -@TeX{}'s internal code, ML@TeX{} defines substitutions for a -non-existing character glyph in a font with a @code{\accent} -construction made out of two separate character glyphs. TCX files -involve no new primitives; it is not possible to specify -that an input (keyboard) character maps to more than one character. - -@vindex WEB2C@r{, search path for TCX files} -Information on specifying TCX files: - -@itemize @bullet -@item -The best way to specify a TCX file is to list it explicitly in the -first line of the main document: -@example -%& -translate-file=@var{tcxfile} -@end example - -@item -You can also specify a TCX file to be used on a particular @TeX{} run -with the command-line option @samp{-translate-file=@var{tcxfile}}. - -@item -TCX files are searched for along the @code{WEB2C} path. - -@item -Initial @TeX{} (@pxref{Initial TeX,,Initial @TeX{}}) ignores TCX files. -@end itemize - -@flindex il1-t1.tcx -@flindex il2-t1.tcx -@flindex empty.tcx -@cindex Cork encoding and ISO input -@cindex T1 encoding and ISO input -The Web2c distribution comes with a number of TCX files. Two -important ones are @file{il1-t1.tcx} and @file{il2-t1.tcx}, which -support ISO Latin 1 and ISO Latin 2, respectively, with Cork-encoded -fonts (a.k.a.@ the @LaTeX{} T1 encoding). TCX files for Czech, -Polish, and Slovak are also provided. - -One other notable TCX file is @file{empty.tcx}, which is, well, -empty. Its purpose is to reset Web2C's behavior to the default (only -visible ASCII being printable, as described below) when a format was -dumped with another TCX being active---which is in fact the case for -everything but plain @TeX{} in the TeX Live and other distributions. -Thus: - -@example -latex somefile8.tex -@result{} terminal etc. output with 8-bit chars -latex --translate-file=empty.tcx somefile8.tex -@result{} terminal etc. output with ^^ notation -@end example - -@cindex syntax of TCX files -Syntax of TCX files: -@enumerate -@item -@cindex blank lines, in TCX files -Line-oriented. Blank lines are ignored. - -@item -@cindex whitespace, in TCX files -Whitespace is ignored except as a separator. - -@item -@cindex comments, in TCX files -Comments start with @samp{%} and continue to the end of the line. - -@item -Otherwise, a line consists of one or two character codes, optionally -followed by 0 or 1. The last number indicates whether @var{dest} is -considered printable. -@example -@var{src} [@var{dest} [@var{prnt}]] -@end example - -@item -@cindex character codes, in TCX files -@cindex octal character codes, in TCX files -@cindex hex character codes, in TCX files -@cindex decimal character codes, in TCX files -Each character code may be specified in octal with a leading @samp{0}, -hexadecimal with a leading @samp{0x}, or decimal otherwise. Values must -be between 0 and 255, inclusive (decimal). - -@item -If the @var{dest} code is not specified, it is taken to be the same as -@var{src}. - -@item -If the same @var{src} code is specified more than once, it is the last -definition that counts. -@end enumerate - -@cindex printable characters, specifying -@kindex ^^ @r{notation, avoiding} -Finally, here's what happens: when @TeX{} sees an input character with -code @var{src}, it 1) changes @var{src} to @var{dest}; and 2) makes the -@var{dest} code ``printable'', i.e., printed as-is in diagnostics and the -log file rather than in @samp{^^} notation. - -By default, no characters are translated, and character codes between 32 -and 126 inclusive (decimal) are printable. - -Specifying translations for the printable ASCII characters (codes -32--127) will yield unpredictable results. Additionally you shouldn't -make the following characters printable: @code{^^I} (TAB), @code{^^J} -(line feed), @code{^^M} (carriage return), and @code{^^?} (delete), -since @TeX{} uses them in various ways. - -@cindex font character code, translating -@cindex keyboard character code, translating -Thus, the idea is to specify the input (keyboard) character code for -@var{src}, and the output (font) character code for @var{dest}. - -@cindex interaction between TCX files and @samp{-8bit}. -By default, only the printable ASCII characters are considered printable -by @TeX{}. If you specify the @samp{-8bit} option, all characters are -considered printable by default. If you specify both the @samp{-8bit} -option and a TCX file, then the TCX can set specific characters to be -non-printable. - -Both the specified TCX encoding and whether characters are printable -are saved in the dump files (like @file{tex.fmt}). So by giving these -options in combination with @samp{-ini}, you control the defaults seen -by anyone who uses the resulting dump file. - -When loading a dump, if the @samp{-8bit} option was given, then all -characters become printable by default. - -When loading a dump, if a TCX file was specified, then the TCX data from -the dump is ignored and the data from the file used instead. - - -@node patgen invocation -@subsection Patgen: Creating hyphenation patterns - -@pindex patgen -@cindex hyphenation patterns, creating -@cindex languages, hyphenation rules for - -Patgen creates hyphenation patterns from dictionary files for use with -@TeX{}. Synopsis: - -@example -patgen @var{dictionary} @var{patterns} @var{output} @var{translate} -@end example - -Each argument is a filename. No path searching is done. The output is -written to the file @var{output}. - -@c @table @var -@c @item dictionary -@c @cindex dictionary file -@c @findex \lefthyphemmin -@c @findex \righthyphenmin -@c The first line contains the values of @code{}\lefthyphenmin} and -@c @code{\righthyphenmin} in columns 1--2 and 3--4. Columns 5, 6, and 7 may -@c optionally contain replacements for the default characters @samp{.}, -@c @samp{-}, and @samp{*} respectively used in the word lists. -@c -@c Subsequent lines are either comments (if they start with two identical -@c characters, e.g., @samp{%%}), or contain the external representation of -@c the lower case version of a letter, followed by an arbitrary number of -@c upper case versions, preceded and separated by a delimiter and followed -@c by two consecutive delimiters. The delimiter may be any character not -@c occurring in either version. - -In addition, Patgen prompts interactively for other values. - -For more information, see @cite{Word hy-phen-a-tion by com-puter} by -Frank Liang (@pxref{References}), and also the @file{patgen.web} source file. - -The only options are @samp{-help} and @samp{-version} (@pxref{Common -options}). - - -@node Shell escapes -@section Shell escapes - -@cindex shell commands in @TeX{} -@cindex security, and shell escapes -@cindex restricted shell escapes -@cindex system command -@vindex shell_escape @r{enabling in @TeX{}} -@findex \immediate\write18 -@findex \write18 @r{shell escape extension} -@findex system @r{C library function} -@flindex texmf.cnf @r{for shell escapes} - -@TeX{} can execute @dfn{shell escapes}, that is, arbitrary shell -commands. Although tremendously useful, this also has obvious -security implications. Therefore, as of @TeX{} Live 2009, a -@dfn{restricted} mode for shell escapes is the default mode of -operation, which allows executing only certain commands, as specified -in the @file{texmf.cnf} configuration file. - -@itemize @bullet -@item -Unrestricted shell escapes are allowed if the option -@option{--shell-escape} is specified, or if the environment variable -or config file value @code{shell_escape} is set to @samp{t} or -@samp{y} and @samp{1}. - -@item -Restricted shell escapes are allowed if @code{shell_escape} is set to -@samp{p}. This is the default. - -@item -Shell escapes are completely disabled if @option{--no-shell-escape} is -specified, or if @code{shell_escape} is set to anything else. -@end itemize - -When enabled, the @TeX{} construct to execute a system command is -@code{\write18@{@var{shell-command}@}}; for example: - -@example -\write18@{echo "hello, world"@} -@end example - -@findex \output @r{routine, and @code{\write}} -From @TeX{}'s point of view, this is a normal @code{\write} command, -and is therefore subject to the usual @TeX{} expansions. Also, the -system call either happens during the @samp{\output} routine or right -away, according to the absence or presence of the @code{\immediate} -prefix, as usual for @code{\write}. - -@cindex exit status, of shell escape -The @var{shell-command} string is passed to the command shell (via the -C library function @code{system}). The output of @var{shell-command} -is not diverted anywhere, so it will not appear in the log file, or -anywhere but the terminal output. The exit status of the system call -is also not available to @TeX{}. - -In unrestricted mode, the argument is simply passed straight to -@code{system} unaltered. - -In restricted mode, ASCII double quote characters (@verb{|"|}) should -always be used in the argument to @code{\write18} where quoting of -arguments is needed, as in the example above. This is to achieve some -measure of system independence. On Unix systems, these are replaced -with single quote (@verb{|'|}) characters to avoid insecure further -expansion. Care is also taken on Windows to avoid additional -expansions (from, e.g., @verb{|`...`|}). Mismatched quotation marks -in the command string result in a diagnostic message in the log file; -no execution is performed. - -@findex shell_escape_commands -After quotation processing, if the first word (delimited by a space or -tab) of the command is in the list specified by the -@code{shell_escape_commands} configuration value, the command is -executed. Otherwise it is not. In any case, a message is written to -the log file. - -The @code{shell_escape_commands} value is a comma-separated list of -words. Whitespace is significant, and typically should not be -present. The default definition in @file{texmf.cnf} looks like this, -but with more commands included: - -@example -shell_escape_commands = bibtex,kpsewhich,repstopdf,... -@end example - -@cindex pipes, reading and writing -@findex \openin@r{, and pipes} -@findex \input@r{, and pipes} -@findex \openout@r{, and pipes} -@findex \pdfshellescape -pdf@TeX{} and lua@TeX{} support reading (via @code{\input} and -@code{\openin}) and writing (via @code{\openout}) from pipes if the -first character is @samp{|}. The following command is then treated -exactly the same as the argument to @code{\write18}. In these -engines, the primitive variable @code{\pdfshellescape} is set to 0 if -shell escapes are disabled, 1 if they are enabled, and 2 if they are -enabled with restrictions. - -@cindex web environments, and security -The purpose of this feature is to make it possible for @TeX{} -documents to perform useful external actions in the common case of an -individual user running a known document on his or her own machine. -In such environments as CGI scripts or wikis where the input has to be -considered untrustworthy, shell escapes should be completely disabled. - - -@node IPC and TeX -@section IPC and @TeX{} - -@cindex IPC -@cindex sockets -(If anyone uses this feature and needs documentation, write -@email{tex-k@@tug.org}.) - -This functionality is available only if the @samp{--enable-ipc} option -was specified to @code{configure} during installation of Web2c -(@pxref{Installation}). - -@vindex IPC_DEBUG -If you define @code{IPC_DEBUG} before compilation (e.g., with @samp{make -XCFLAGS=-DIPC_DEBUG}), @TeX{} will print messages to standard error -about its socket operations. This may be helpful if you are, well, -debugging. - - -@node TeX extensions -@section Extended @TeX{} engines - -@cindex extensions to @TeX{} -@cindex @TeX{}, extensions to - -The base @TeX{} program has been extended in many ways. Here's a -partial list. - -@table @asis -@item e-@TeX{} -@cindex e-@TeX{} -@cindex primitives, new -Adds many new primitives, including right-to-left typesetting and more -registers. Now frozen. More info: @url{https://ctan.org/pkg/etex}. - -@item Aleph -@cindex Aleph -@cindex Omega -@cindex Unicode -This adds Unicode support, right-to-left typesetting, and more. Omega -was the original program. Aleph is an updated version with a variety -of bug fixes, and includes e-@TeX{}. Aleph is not actively maintained. -More info: @url{https://ctan.org/pkg/aleph}, @url{https://ctan.org/pkg/omega}. - -@item pdf@TeX{} -@cindex pdf@TeX{} -@cindex PDF -@cindex micro-typography -@cindex hypertext -@pindex etex @r{is pdf@TeX{}} -Can produce PDF as well as DVI files. It also incorporates the -e-@TeX{} extensions, new primitives for hypertext and -micro-typography, reading/writing from pipes, and much more. In -@TeX{} Live, the command @command{etex} invokes pdf@TeX{} to make all -these additions available with DVI output. Home page: -@url{http://pdftex.org}. - -@item Lua@TeX{} -@cindex Lua@TeX{} -@cindex Lua -@cindex UTF-8 input, native -@cindex OpenType support -@cindex TrueType support -@cindex system fonts, using -Embeds the Lua programming language (@url{http://lua.org}) and opens -up the @TeX{} typesetting engine to control from Lua, starting from -the pdf@TeX{} capabilities as a base. Also natively supports UTF-8 -input, the OpenType and TrueType font formats, and use of system -fonts. Home page: @url{http://luatex.org}. - -@item Xe@TeX{} -@cindex Xe@TeX{} -@cindex Unicode input, native -Combines support for Unicode input, the OpenType and TrueType font -formats, and use of system fonts with the capabilities of pdf@TeX{}, -with the exception of the font expansion part of micro-typography. -Home page: @url{https://tug.org/xetex}. - -@item p@TeX{} -@itemx up@TeX{} -@cindex p@TeX{} -@cindex up@TeX{} -With additional support for Japanese; p@TeX{} was the original engine, -and up@TeX{} has native Unicode support and thus is more useful for -Chinese and Korean. More info: @url{https://ctan.org/pkg/ptex}, -@url{https://ctan.org/pkg/uptex}. - -@item ep@TeX{} -@itemx eup@TeX{} -@cindex ep@TeX{} -@cindex eup@TeX{} -Further extends p@TeX{} and up@TeX{} with the e-@TeX{} extensions. -More info: @url{https://ctan.org/pkg/eptex}, -@url{https://ctan.org/pkg/euptex}. - -@end table - - -@node Metafont -@chapter Metafont: Creating typeface families - -@cindex Metafont -@cindex typeface families -@cindex geometric designs -@cindex shapes -@cindex font design - -Metafont is a system for producing shapes; it was designed for producing -complete typeface families, but it can also produce geometric designs, -dingbats, etc. And it has considerable mathematical and -equation-solving capabilities which can be useful entirely on their own. - -Metafont is a batch language, like C or Pascal: you compile a Metafont -program into a corresponding font, rather than interactively drawing -lines or curves. This approach has both considerable disadvantages -(people unfamiliar with conventional programming languages will be -unlikely to find it usable) and considerable advantages (you can make -your design intentions specific and parameterizable). For a complete -description of the Metafont language, see @cite{The METAFONTbook} -(@pxref{References}). - -@menu -* mf invocation:: Invoking Metafont. -* Initial Metafont:: Making bases. -* Modes:: Device definitions for Metafont. -* Online Metafont graphics:: Seeing MF output online. -* gftodvi invocation:: Making proofsheets for fonts. -* mft invocation:: Prettyprinting Metafont sources. -@end menu - - -@node mf invocation -@section @code{mf} invocation - -@pindex mf -@cindex Metafont invocation - -Metafont (usually invoked as @code{mf}) reads character definitions -specified in the Metafont programming language, and outputs the -corresponding font. This section merely describes the options available -in the Web2c implementation. For a complete description of the Metafont -language, see @cite{The Metafontbook} (@pxref{References}). - -Metafont processes its command line and determines its memory dump -(base) file in a way exactly analogous to MetaPost and @TeX{} -(@pxref{tex invocation}, and @pxref{Memory dumps}). Synopses: - -@example -mf [@var{option}]@dots{} [@var{mfname}[.mf]] [@var{mf-commands}] -mf [@var{option}]@dots{} \@var{first-line} -mf [@var{option}]@dots{} &@var{base} @var{args} -@end example - -Most commonly, a Metafont invocation looks like this: -@example -mf '\mode:=@var{mode}; mag:=@var{magnification}; input @var{mfname}' -@end example -@noindent -(The single quotes avoid unwanted interpretation by the shell.) - -@flindex .mf -@cindex Metafont input files -@cindex EC fonts -@pindex mktexmf@r{, disabling} -Metafont searches the usual places for the main input file @var{mfname} -(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending -@var{mfname} with @file{.mf} if necessary. To see all the relevant -paths, set the environment variable @code{KPATHSEA_DEBUG} to @samp{-1} -before running the program. By default, Metafont runs an external -program named @file{mktexmf} to create any nonexistent Metafont source -files you input. You can disable this at configure-time or runtime -(@pxref{mktex configuration,,, kpathsea, Kpathsea}). This is mostly -for the sake of the EC fonts, which can be generated at any size. - -@flindex .@var{nnn}gf @r{generic fonts} -@flindex mfput -@cindex GF output -@cindex GF files, output by Metafont -@cindex PK files, not output by Metafont -Metafont writes the main GF output to the file -@file{@var{basemfname}.@var{nnn}gf}, where @var{nnn} is the font -resolution in pixels per inch, and @var{basemfname} is the basename of -@var{mfname}, or @samp{mfput} if no input file was specified. A GF file -contains bitmaps of the actual character shapes. Usually GF files are -converted immediately to PK files with GFtoPK (@pxref{gftopk -invocation}), since PK files contain equivalent information, but are -more compact. (Metafont output in GF format rather than PK for only -historical reasons.) - -@flindex .tfm @r{output} -@cindex TFM files, output by Metafont -Metafont also usually writes a metric file in TFM format to -@file{@var{basemfname}.tfm}. A TFM file contains character dimensions, -kerns, and ligatures, and spacing parameters. @TeX{} reads only this -@t{.tfm} file, not the GF file. - -@cindex mode needed to run Metafont -@findex proof @r{mode} -@flindex 2602gf -@flindex .2602gf -The @var{mode} in the example command above is a name referring to a -device definition (@pxref{Modes}); for example, @code{localfont} or -@code{ljfour}. These device definitions must generally be precompiled -into the base file. If you leave this out, the default is @code{proof} -mode, as stated in @cite{The Metafontbook}, in which Metafont outputs at -a resolution of 2602@dmn{dpi}; this is usually not what you want. The -remedy is simply to assign a different mode---@code{localfont}, for -example. - -The @var{magnification} assignment in the example command above is a -magnification factor; for example, if the device is 600@dmn{dpi} and you -specify @code{mag:=2}, Metafont will produce output at 1200@dmn{dpi}. -Very often, the @var{magnification} is an expression such as -@code{magstep(.5)}, corresponding to a @TeX{} ``magstep'', which are -factors of -@tex -1.2$\sqrt{2}$. -@end tex -@ifinfo -1.2 * sqrt(2). -@end ifinfo - -After running Metafont, you can use the font in a @TeX{} document as -usual. For example: -@example -\font\myfont = newfont -\myfont Now I am typesetting in my new font (minimum hamburgers). -@end example - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -[no]-file-line-error -@itemx -fmt=@var{fmtname} -@itemx -halt-on-error -@itemx -ini -@itemx -interaction=@var{string} -@itemx -jobname=@var{string} -@itemx -kpathsea-debug=@var{number} -@itemx -[no]parse-first-line -@itemx -output-directory -@itemx -progname=@var{string} -@itemx -recorder -@itemx -translate-file=@var{tcxfile} -@itemx -8bit -These options are common to @TeX{}, Metafont, and MetaPost. -@xref{Common options}. - -@item -mktex=@var{filetype} -@itemx -no-mktex=@var{filetype} -@opindex -mktex=@var{filetype} -@opindex -no-mktex=@var{filetype} -Turn on or off the @samp{mktex} script associated with @var{filetype}. -The only value that makes sense for @var{filetype} is @samp{mf}. -@end table - - -@node Initial Metafont -@section Initial Metafont - -@cindex initial Metafont -@cindex Metafont, initial - -@flindex .base -@cindex base files -@code{inimf} is the ``initial'' form of Metafont, which does lengthy -initializations avoided by the ``virgin'' (@code{vir}) form, so as to -be capable of dumping @samp{.base} files (@pxref{Memory dumps}). For -a detailed comparison of virgin and initial forms, see @ref{Initial -and virgin}. - -For a list of options and other information, see @ref{mf invocation}. - -@flindex plain.base -@flindex mf.base -The only memory dump file commonly used with Metafont is the default -@samp{plain.base}, also known as @samp{mf.base} (again, @pxref{Memory -dumps}). It is created by default during installation, but you can also -do so by hand if necessary (e.g., if a Metafont update is issued): -@example -mf -ini '\input plain; input modes; dump' -@end example -@noindent -(The quotes prevent interpretation of the backslashes from the shell.) -Then install the resulting @file{plain.base} in @samp{$(basedir)} -(@file{/usr/local/share/texmf/web2c} by default), and link -@file{mf.base} to it. - -For an explanation of the additional @file{modes.mf} file, -see @ref{Modes}. This file has no counterpart in @TeX{} or MetaPost. - -@flindex cmmf.base @r{not recommended} -@flindex cm.base -@flindex cmbase.mf -@cindex Computer Modern macros -@cindex base files, plain only -In the past, it was sometimes useful to create a base file -@file{cmmf.base} (a.k.a.@: @file{cm.base}), with the Computer Modern -macros also included in the base file. Nowadays, however, the -additional time required to read @file{cmbase.mf} is exceedingly small, -usually not enough to be worth the administrative hassle of updating the -@file{cmmf.base} file when you install a new version of @file{modes.mf}. -@cindex type design, personal -People actually working on a typeface may still find it worthwhile to -create their own base file, of course. - - -@node Modes -@section Modes: Device definitions for Metafont - -@cindex modes file needed for Metafont -@cindex base files, need mode definitions -@cindex device definitions, for Metafont -@cindex printer characteristics, for Metafont -Running Metafont and creating Metafont base files requires information -that @TeX{} and MetaPost do not: @dfn{mode} definitions which specify -device characteristics, so Metafont can properly rasterize the shapes. - -@flindex modes.mf @r{recommended modes file} -When making a base file, a file containing modes for locally-available -devices should be input after @file{plain.mf}. One commonly used file -is @url{ftp://ftp.tug.org/tex/modes.mf}; it includes all known -definitions. - -@cindex small Metafont memory and modes -@findex mode_def -@findex mode_setup -If, however, for some reason you have decreased the memory available in -your Metafont, you may need to copy @file{modes.mf} and remove the -definitions irrelevant to you (probably most of them) instead of using -it directly. (Or, if you're a Metafont hacker, maybe you can suggest a -way to redefine @code{mode_def} and/or @code{mode_setup}; right now, the -amount of memory used is approximately four times the total length of -the @code{mode_def} names, and that's a lot.) - -If you have a device not included in @file{modes.mf}, please see -comments in that file for how to create the new definition, and please -send the definition to @email{tex-fonts@@math.utah.edu} to get it included -in the next release of @file{modes.mf}. - -@findex smode @r{and dynamic Metafont mode definition} -@cindex dynamic Metafont mode definitions with @code{smode} -Usually, when you run Metafont you must supply the name of a mode that -was dumped in the base file. But you can also define the mode -characteristics dynamically, by invoking Metafont with an assignment to -@code{smode} instead of @code{mode}, like this: -@example -mf '\smode:="newmode.mf"; mag:=@var{magnification}; input @var{mfname}' -@end example -@noindent -This is most useful when you are working on the definition of a new -mode. - -The @var{magnification} and @var{mfname} arguments are explained in -@ref{mf invocation}. In the file @file{newmode.mf}, you should have the -following (with no @code{mode_def} or @code{enddef}), if you are using -@file{modes.mf} conventions: -@example -mode_param (pixels_per_inch, @var{dpi}); -mode_param (blacker, @var{b}); -mode_param (fillin, @var{f}); -mode_param (o_correction, @var{o}); -mode_common_setup_; -@end example -@noindent -(Of course, you should use real numbers for @var{dpi}, @var{b}, @var{f}, -and @var{o}.) - -For more information on the use of @code{smode}, or if you are not using -@file{modes.mf}, see page 269 of @cite{The Metafontbook}. - - -@node Online Metafont graphics -@section Online Metafont graphics - -@cindex online Metafont graphics -@cindex Metafont graphics - -The Web2c implementation of Metafont can do online graphics with a -number of devices. (See the Metafont manual for more information about -how to draw on your screen.) By default, no graphics support is -enabled. - -@vindex MFTERM -@vindex TERM -Metafont examines the @code{MFTERM} environment variable or config file -value at runtime, or the @code{TERM} environment variable if -@code{MFTERM} is not set, to determine the device support to use. -Naturally, only the devices for which support has been compiled in can -be selected. - -Here is a table of the possibilities, showing the @code{MFTERM} value -and the corresponding @code{configure} option(s) in parentheses. - -@vtable @code -@item epsf -@cindex Herberts, Mathias -@opindex --enable-epsfwin -(@samp{--enable-epsfwin}) Pseudo-window server for Encapsulated -PostScript (see @file{web2c/window/epsf.c}). This device produces an -EPS file containing the graphics which would be displayed online on -other devices. The name of the EPS file defaults to metafont.eps but -can be changed by setting the MFEPSF environment variable to the new -filename. Contributed by Mathias Herberts. - -@item hp2627 -@opindex --enable-hp2627win -(@samp{--enable-hp2627win}) HP2627a color graphics terminals. - -@item mftalk -@opindex --enable-mftalkwin -(@samp{--enable-mftalkwin}) Generic window server (see -@file{web2c/window/mftalk.c}). - -@item next -@pindex DrawingServant -@opindex --enable-next -(@samp{--enable-next}) NeXT window system. This requires a separate -program, called @code{DrawingServant}, available separately. See the -@file{web2c/window/next.c}. - -@item regis -@opindex --enable-regiswin -@cindex Regis graphics support -(@samp{--enable-regiswin}) Regis terminals. - -@item sun -@cindex SunView -@cindex Suntools -@opindex --enable-suntoolswin -@flindex sun-gfx.c -(@samp{--enable-suntoolswin}) The old Suntools (not any flavor of X) -window system. (You can get the even older SunWindows @code{gfx} system -by using @file{sun-gfx.c}.) - -@item tek -@cindex Tektronix -@opindex --enable-tektronixwin -(@samp{--enable-tektronixwin}) Tektronix terminals. - -@cindex Poole, Simon -@item uniterm -@cindex Tektronix 4014 -@opindex --enable-unitermwin -(@samp{--enable-unitermwin}) Uniterm, Simon Poole's emulator of a smart -Tektronix 4014 terminal. This may work with regular Tektronix terminals -as well; it's faster than the driver @samp{--enable-tektronixwin} selects. - -@vindex NO_X11WIN -@pindex Xt -@pindex Xlib -@item xterm -@opindex --with-x -@samp{--with-x} The X window system (version 11). - -@opindex --with-mf-x-toolkit=@var{kit} -@cindex toolkits, X -@cindex X toolkits and Metafont -@cindex Xt support -@cindex Xlib support -There are two variants of the X11 support, one that works with the Xt -toolkit, and another that works directly with Xlib. The Xt support is -more efficient and has more functionality, so it is the default. If you -must use the Xlib support, use @samp{configure --with-x ---with-kf-x-toolkit=no}. - -@opindex --disable-mf-nowin -@cindex non-windows-capable Metafont -Specify @samp{--disable-mf-nowin} in order not to build a separate -non-windows-capable Metafont executable @code{mf-nowin} (or -@code{mf-nowin.exe}). - -@cindex X resources -@cindex X class name for Metafont -@cindex class name for Metafont -@cindex geometry for Metafont -@cindex Metafont geometry -@flindex .Xdefaults -@flindex .Xresources -@opindex -geometry@r{, supported with Xt} -You cannot specify any of the usual X options (e.g., @samp{-geometry}) -on the Metafont command line, but you can specify X resources in your -@file{~/.Xdefaults} or @file{~/.Xresources} file. The class name is -@code{Metafont}. If you're using the Xt support, all the usual X toolkit -resources are supported. If you're using the Xlib support, only the -@code{geometry} resource is supported. - -@vindex DISPLAY -You specify the X display to which Metafont connects in the -@code{DISPLAY} environment variable, as usual. - -@end vtable - -@cindex Metafont online support, new devices -@cindex new graphics support for Metafont -@flindex texmfmp.c -Writing support for a new device is straightforward. Aside from defining -the basic drawing routines that Metafont uses (see @file{mf.web}), you -only have to add another entry to the tables on the last page of -@file{web2c/lib/texmfmp.c}. Or you can write an independent program and -use MFtalk (see @file{web2c/window/mftalk.c}). - - -@node gftodvi invocation -@section GFtoDVI: Character proofs of fonts - -@pindex gftodvi -@cindex character proofs of fonts -@cindex font proofs -@cindex proof sheets, of fonts - -GFtoDVI makes @dfn{proof sheets} from a GF bitmap file as output by, for -example, Metafont (@pxref{Metafont}). This is an indispensable aid for -font designers or Metafont hackers. Synopsis: - -@example -gftodvi [@var{option}]@dots{} @var{gfname}[gf] -@end example - -The font @var{gfname} is searched for in the usual places (@pxref{Glyph -lookup,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -The suffix @samp{gf} is supplied if not already present. This suffix is -not an extension, no @samp{.} precedes it; for instance, @file{cmr10.600gf}. - -The output filename is the basename of @var{gfname} extended with -@file{.dvi}, e.g., @samp{gftodvi /wherever/foo.600gf} creates -@file{./foo.dvi}. - -The characters from @var{gfname} appear one per page in the DVI output, -with labels, titles, and annotations, as specified in Appendix H -(Hardcopy Proofs) of @cite{The Metafontbook}. - -GFtoDVI uses several fonts besides @var{gfname} itself: - -@itemize @bullet -@item -@cindex gray font -@dfn{gray font} (default @file{gray}): for the pixels that actually make -up the character. Simply using black is not right, since then labels, -key points, and other information could not be shown. - -@item -@cindex title font -@dfn{title font} (default @file{cmr8}): for the header information at -the top of each output page. - -@item -@cindex label font -@dfn{label font} (default @file{cmtt10}): for the labels on key points -of the figure. - -@item -@cindex slant font -@dfn{slant font} (no default): for diagonal lines, which are otherwise -simulated using horizontal and vertical rules. -@end itemize - -To change the default fonts, you must use @code{special} commands in -your Metafont source file, typically via commands like @code{slantfont -slantlj4}. There is no default slant font since no one printer is -suitable as a default. You can make your own by copying one of the -existing files, such as -@file{.../fonts/source/public/misc/slantlj4.mf} and then running -@command{mf} on it. - -For testing purposes, you may it useful to run @code{mf-nowin rtest} -(hit RETURN when it stops) to get a @file{gf} file of a thorn glyph. -Or use @command{mf} instead of @command{mf-nowin} to have the glyph(s) -displayed on the screen. After that, @code{gftodvi rtest.2602gf} -should produce @file{rtest.dvi}, which you process as usual. - -The program accepts the following option, as well as the standard -@samp{-verbose}, @samp{-help}, and @samp{-version} (@pxref{Common -options}): - -@table @samp -@item -overflow-label-offset=@var{points} -@opindex -overflow-label-offset=@var{points} -@cindex overflow label offset -@cindex offset for overflow labels -Typeset the so-called overflow labels, if any, @var{points} @TeX{} -points from the right edge of the character bounding box. The default -is a little over two inches (ten million scaled points, to be precise). -Overflow equations are used to locate coordinates when their actual -position is too crowded with other information. -@end table - - -@node mft invocation -@section MFT: Prettyprinting Metafont source - -@pindex mft -@cindex Metafont source, prettyprinting -@cindex prettyprinting Metafont source -@cindex @TeX{}, creating from Metafont - -@flindex mftmac.tex -MFT translates a Metafont program into a @TeX{} document suitable for -typesetting, with the aid of @TeX{} macros defined in the file -@file{mftmac.tex}. Synopsis: - -@example -mft [@var{option}]@dots{} @var{mfname}[.mf] -@end example - -MFT searches the usual places for @var{mfname} (@pxref{Supported file -formats,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. The output goes to the basename of @var{mfname} extended -with @file{.tex}, e.g., @samp{mft /wherever/foo.mf} creates -@file{./foo.tex}. - -Line breaks in the input are carried over into the output; moreover, -blank spaces at the beginning of a line are converted to quads of -indentation in the output. Thus, you have full control over the -indentation and line breaks. Each line of input is translated -independently of the others. - -Further control is allowed via Metafont comments: -@cindex comments, MFT control -@itemize @bullet -@item -Metafont comments following a single @samp{%} should be valid @TeX{} -input. But Metafont material can be included within vertical bars in a -comment; this will be translated by MFT as if it were regular Metafont -code. For example, a comment like @samp{% |x2r| is the tip of the bowl} -will be translated into the @TeX{} @samp{% $x_@{2r@}$ is the @dots{}}, -i.e., the @samp{x2r} is treated as an identifier. - -@item -@samp{%%} indicates that the remainder of an input line should be copied -verbatim to the output. This is typically used to introduce additional -@TeX{} material at the beginning or an MFT job, e.g. code to modify the -standard layout or the formatting macros defined in @file{mftmac.tex}, -or to add a line saying @samp{%%\bye} at the end of the job. (MFT -doesn't add this automatically in order to allow processing several -files produces by MFT in the same @TeX{} job.) - -@item -@samp{%%% @var{token1} @var{other-tokens}} -introduces a change in MFT's formatting rules; all the @var{other-tokens} -will henceforth be translated according to the current conventions for -@var{token1}. The tokens must be symbolic (i.e., not -numeric or string tokens). For example, the input line -@example -%%% addto fill draw filldraw -@end example -@noindent -says to format the @samp{fill}, @samp{draw}, and @samp{filldraw} -operations of plain Metafont just like the primitive token @samp{addto}, -i.e., in boldface type. Without such reformatting commands, MFT would -treat @samp{fill} like an ordinary tag or variable name. In fact, you -need a @samp{%%%} command even to get parentheses to act like -delimiters. - -@item -@samp{%%%%} introduces an MFT comment, i.e., MFT ignores the remainder -of such a line. - -@item -Five or more @samp{%} signs should not be used. -@end itemize - -@cindex Knuth, Donald E. -(The above description was edited from @file{mft.web}, written by -@w{D.E. Knuth}.) - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -change=@var{chfile}[.ch] -@opindex -change=@var{chfile} -@cindex change files, and MFT -Apply the change file @var{chfile} as with Tangle and Weave -(@pxref{WEB}). - -@item -style=@var{mftfile}[.mft] -@opindex -style=@var{mftfile} -@cindex style files -@flindex plain.mft -Read @var{mftfile} before anything else; a MFT style file typically -contains only MFT directives as described above. The default style file -is named @file{plain.mft}, which defines this properly for programs -using plain Metafont. The MFT files is searched along the -@code{MFTINPUTS} path; see @ref{Supported file formats,,, kpathsea, Kpathsea}. - -@flindex cmbase.mft -@flindex e.mft -@cindex @cite{Computer Modern Typefaces}, production of -Other examples of MFT style files are @file{cmbase.mft}, which defines -formatting rules for the macros defined in @file{cm.base}, and -@file{e.mft}, which was used in the production of Knuth's Volume@w{ }E, -@cite{Computer Modern Typefaces}. - -@cindex MetaPost source, prettyprinting -Using an appropriate MFT style file, it is also possible to configure -MFT for typesetting MetaPost sources. However, MFT does not search -the usual places for MetaPost input files. -@end table - -If you use eight-bit characters in the input file, they are -passed on verbatim to the @TeX{} output file; it is up to you to -configure @TeX{} to print these properly. - - -@node MetaPost -@chapter MetaPost: Generating PostScript - -@cindex MetaPost -@cindex PostScript meets Metafont -@cindex Metafont meets PostScript -@cindex technical illustrations, creating -MetaPost is a picture-drawing language similar to Metafont -(@pxref{Metafont}), but instead of outputting bitmaps in a ``font'', it -outputs PostScript commands. It's primarily intended for creating -technical illustrations, but can also be used to create PostScript or -OpenType fonts (@url{https://ctan.org/pkg/metatype1}). - -@pindex troff@r{, supported in MetaPost} -MetaPost also provides for arbitrary integration of text and graphics in -a natural way, using any typesetter (@TeX{} and Troff are both -supported) and a number of other subsidiary programs, described below. - -@menu -* mpost invocation:: Invoking MetaPost. -* Initial MetaPost:: Making mems. -* dvitomp invocation:: DVI-to-MPX translation. -@end menu - - -@node mpost invocation -@section @code{mpost} invocation - -@pindex mpost -@cindex MetaPost invocation - -@flindex mpman.pdf -MetaPost (installed as @code{mpost}) reads a series of pictures -specified in the MetaPost programming language, and outputs -corresponding PostScript code. This section merely describes the -options available in the Web2c implementation. For a complete -description of the MetaPost language, see AT&T technical report -CSTR-162, generally available in @file{@var{texmf}/doc/metapost/}, -where @var{texmf} is the root of @TeX{} directory structure. -The MetaPost home page: @url{https://tug.org/metapost}. - -@flindex mpgraph.pdf -Also, a standard MetaPost package for drawing graphs is documented in -AT&T technical report CSTR-164, available as the file @file{mpgraph.ps}, -generally stored alongside @file{mpman.ps}. - -MetaPost processes its command line and determines its memory dump -(mem) file in a way analogous to Metafont and @TeX{} (@pxref{tex -invocation,,@code{tex} invocation}, and @pxref{Memory dumps}). -Synopses: - -@example -mpost [@var{option}]@dots{} [@var{mpname}[.mp]] [@var{mp-commands}] -mpost [@var{option}]@dots{} \@var{first-line} -mpost [@var{option}]@dots{} &@var{mem} @var{args} -@end example - -@flindex .mp -@cindex MetaPost input files -MetaPost searches the usual places for the main input file @var{mpname} -(@pxref{Supported file formats,,, kpathsea, Kpathsea}), extending -@var{mpname} with @file{.mp} if necessary. To see all the relevant -paths, set the environment variable @code{KPATHSEA_DEBUG} to @samp{-1} -before running the program. - -@findex beginfig -@flindex .@var{nnn} @r{PostScript figures} -@flindex .tfm @r{output} -@flindex mpout -@cindex TFM files, output by MetaPost -@cindex PostScript output -MetaPost writes its PostScript output to a series of files -@file{@var{basempname}.@var{nnn}} (or perhaps -@file{@var{basempname}.ps}, very occasionally -@file{@var{basempname}.tfm}), where @var{nnn} are the figure numbers -specified in the input, typically to the @code{beginfig} macro, and -@var{basempname} is the basename of @var{mpname}, or @samp{mpout} if no -input file was specified. MetaPost uses the @samp{.ps} extension when -the figure number is out of range, e.g., if you say @code{beginfig(-1)}. - -You can use the output files as figures in a @TeX{} document just as -with any other PostScript figures. For example, with this @TeX{} command: -@example -\special@{psfile="@var{filename}"@} -@end example -@noindent -or by using @file{epsf.tex} (@pxref{EPSF macros,,, dvips, Dvips}). - -@findex btex @r{for MetaPost labels} -@findex etex @r{for MetaPost labels} -The MetaPost construct -@example -btex @dots{} @var{tex-input} @dots{} etex -@end example -@noindent -generates a MetaPost picture expression corresponding to -@var{tex-input}. - -The construct -@example -verbatimtex @dots{} @var{tex-input} @dots{} etex -@end example -@noindent -simply passes the @var{tex-input} through to -@TeX{}. For example, if you are using @LaTeX{}, your MetaPost input file -must start with a @code{verbatimtex} block that gives the necessary -@code{\documentclass} (or @code{\documentstyle}) -@code{\begin@{document@}} command. You will also need to set the -enviroment variable @code{TEX} to @samp{latex}. - -@var{tex-input} need not be specifically @TeX{} input; it could also be -Troff. In that case, you will need the @samp{-m pictures} Troff macro -package (unfortunately absent from many Troff implementations), or an -equivalent such as the @samp{-m pspic} macros from GNU groff described -in grops(1). - -@cindex PostScript fonts, and Troff -@cindex Troff, and MetaPost -@cindex Computer Modern fonts, and Troff -Naturally, you must use fonts that are supported by the typesetter; -specifically, you'll probably want to use standard PostScript fonts with -Troff. And only the @TeX{} system understands Computer Modern or other -Metafont fonts; you can also use PostScript fonts with @TeX{}, of course. - -@flindex mproof.tex -@cindex downloading of fonts for MetaPost labels -@cindex font downloading for MetaPost labels -MetaPost-generated PostScript figures which do use Computer Modern fonts -for labels cannot be directly previewed or printed. Instead, you must -include them in a @TeX{} document and run the resulting DVI file through -Dvips to arrange for the downloading of the required fonts (@pxref{Fonts -in figures,,, dvips, Dvips}). To help with this, the MetaPost -distribution provides a small @TeX{} file @file{mproof.tex} which is -typically called as: -@example -tex mproof @var{mp-output-files}... ; dvips mproof -o -@end example -@noindent -The resulting file @file{mproof.ps} can then be printed or previewed. - -@vindex prologues@r{, and EPSF output} -@flindex psfonts.map@r{, read by MetaPost} -To generate EPSF files, set the internal MetaPost variable -@code{prologues} positive. To make the output files self-contained, use -only standard PostScript fonts. MetaPost reads the same -@file{psfonts.map} file as Dvips, to determine PostScript fonts that -need to be downloaded (@pxref{psfonts.map,,, dvips, Dvips}). - -@cindex PDF, and @code{.mps} files -@cindex @code{.mps} files and PDF -It is posible for pdf@TeX{} to read MetaPost output directly; this is -in contrast to general EPSF files, which have to be converted for use -with PDF output. The easiest way is to name the MetaPost output files -with the @code{.mps} extension. Then the @LaTeX{} -@code{\includegraphics} command, for example, will be able to read -them, even when outputting PDF. - -@cindex security, and @code{write} -MetaPost can write output files, via the @code{write} primitive; this -opens a security hole. @xref{tex invocation}. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -[no]-file-line-error -@itemx -fmt=@var{fmtname} -@itemx -halt-on-error -@itemx -ini -@itemx -interaction=@var{string} -@itemx -jobname=@var{string} -@itemx -kpathsea-debug=@var{number} -@itemx -[no]parse-first-line -@itemx -output-directory -@itemx -progname=@var{string} -@itemx -recorder -@itemx -translate-file=@var{tcxfile} -@itemx -8bit -These options are common to @TeX{}, Metafont, and MetaPost. -@xref{Common options}. - -@item -T -@itemx -troff -@opindex -T -@opindex -troff -@vindex prologues -Set the @code{prologues} internal variable to @code{1}. - -@item -tex=@var{texprogram} -@opindex -tex=@var{texprogram} -When this option is given, the program @var{texprogram} is used to -typeset the labels. - -@end table - - -@node Initial MetaPost -@section Initial MetaPost - -@cindex initial MetaPost -@cindex MetaPost, initial - -As of MetaPost 1.504 (@TeX{} Live 2011), MetaPost no longer dumps -@file{.mem} files (@pxref{Memory dumps}) and does not distinguish -virgin and initial forms (@pxref{Initial and virgin}). Instead, the -``initial'' file name is read in its source form---that is, -@file{mpost.mp} when the program is invoked as @command{mpost}. - -For a list of options and other information, see @ref{mpost invocation}. - -@cindex Metafont, compatibility in MetaPost -@cindex plain Metafont, compatibility in MetaPost -@cindex MetaPost and plain Metafont compatibility -@flindex mfplain -MetaPost provides a format with all the features of plain Metafont, -called @file{mfplain}. You can use that in the same way; just run -@command{mfplain} instead of @command{mpost}. This lets you directly -process Metafont source files with MetaPost, producing character -proofs (one file for each character) similar to those produced with -Metafont in proof mode and GFtoDVI (@pxref{gftodvi invocation}). - - -@node dvitomp invocation -@section DVItoMP: DVI to MPX conversion - -@pindex dvitomp -@cindex DVI files, converting to MPX -@cindex MPX files, converting from DVI files - -DVItoMP converts DVI files into low-level MetaPost commands in a -so-called MPX file. Synopsis: - -@example -dvitomp @var{dvifile}[.dvi] [@var{mpxfile}[.mpx]] -@end example - -@noindent -If @var{mpxfile} is not specified, the output goes to the basename of -@var{dvifile} extended with @file{.mpx}, e.g., @samp{dvitomp -/wherever/foo.dvi} creates @file{./foo.mpx}. - -@cindex color, in DVItoMP -DVItoMP supports Dvips-style color specials, such as @samp{color push -@var{name}} and @samp{color pop}, outputting them as @code{withcolor} -MetaPost commands. - -The only options are @samp{-help} and @samp{-version} (@pxref{Common -options}). - - -@node BibTeX -@chapter Bib@TeX{}: Bibliographies - -@cindex bibliographies, creating -@cindex Bib@TeX{} - -Bib@TeX{} automates much of the job of typesetting bibliographies, and -makes bibliography entries reusable in many different contexts. - -@menu -* bibtex invocation:: -* Basic BibTeX style files:: The standard and semi-standard styles. -@end menu - - -@node bibtex invocation -@section Bib@TeX{} invocation - -@pindex bibtex - -@flindex .bbl @r{bibliography files} -@flindex .aux @r{cross-reference files} -@flindex .bib @r{bibliography databases} -Bib@TeX{} creates a printable bibliography (@file{.bbl}) file from -references in a @file{.aux} file, generally written by @TeX{} or -@LaTeX{}. The @file{.bbl} file is then incorporated on a subsequent -run. The basic bibliographic information comes from @file{.bib} files, -and a Bib@TeX{} style (@file{.bst}) file controls the precise contents -of the @file{.bbl} file. Synopsis: - -@example -bibtex [@var{option}]@dots{} @var{auxfile}[.aux] -@end example - -@flindex .blg @r{Bib@TeX{} log file} -@cindex log file, Bib@TeX{} -@noindent -The output goes to the basename of @var{auxfile} extended with -@file{.bbl}; for example, @samp{bibtex /wherever/foo.aux} creates -@file{./foo.bbl}. Bib@TeX{} also writes a log file to the basename of -@var{auxfile} extended with @samp{.blg}. - -@findex \bibliography -@findex \bibliographystyle -@vindex TEXBIB@r{, search path for bib files} -@vindex BIBINPUTS@r{, search path for bib files} -@vindex BSTINPUTS@r{, search path for bst files} -The names of the @file{.bib} and @file{.bst} files are specified in the -@file{.aux} file as well, via the @file{\bibliography} and -@file{\bibliographystyle} (La)@TeX{} macros. Bib@TeX{} searches for -@file{.bib} files using the @code{BIBINPUTS} and @code{TEXBIB} paths, -and for @file{.bst} files using @code{BSTINPUTS} (@pxref{Supported file -formats,,,kpathsea,Kpathsea}). It does no path searching for -@file{.aux} files. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -terse -@opindex -terse -@cindex terse output -@cindex verbose Bib@TeX{} output, suppressing -Suppress the program banner and progress reports normally output. - -@item -min-crossrefs=@var{n} -@opindex -min-crossrefs=@var{n} -@cindex cross-referenced bibliography items -@cindex bibliography items, cross-referenced -If at least @var{n} (2 by default) bibliography entries refer to another -entry @var{e} via their @code{crossref} field, include @var{e} in the -@t{.bbl} file, even if it was not explicitly referenced in the @t{.aux} -file. For example, @var{e} might be a conference proceedings as a whole, -with the cross-referencing entries being individual articles published -in the proceedings. - -If you want to avoid these automatic inclusions altogether, make -@var{n} a sufficiently large number, and be sure to remove any -previous @t{.aux} and @t{.bbl} files. Otherwise the option may -appear to have no effect, since Bib@TeX{} will have added the citation -for @var{e} to the @t{.aux}, and nothing will remove it. - -@end table - -See also: -@table @file -@item btxdoc.tex -@flindex btxdoc.tex -Basic @LaTeX{}able documentation for general Bib@TeX{} users. - -@item btxhak.tex -@flindex btxhak.tex -@cindex style design, for Bib@TeX{} -@LaTeX{}able documentation for style designers. - -@item btxdoc.bib -@flindex btxdoc.bib -Bib@TeX{} database file for the two above documents. - -@item xampl.bib -@flindex xampl.bib -Example database file with all the standard entry types. - -@item @url{ftp://ftp.math.utah.edu/pub/tex/bib/} -@flindex ftp.math.utah.edu -@cindex Bib@TeX{} collection -@cindex TUGboat bibliography -@cindex @TeX{}, bibliographies for -A very large @file{.bib} and @file{.bst} collection, including -references for all the standard @TeX{} books and a complete bibliography -for TUGboat. -@end table - - -@node Basic BibTeX style files -@section Basic Bib@TeX{} style files - -@cindex basic Bib@TeX{} style files -@cindex Bib@TeX{} style files - -Here are descriptions of the four standard and four semi-standard basic -Bib@TeX{} styles. @file{@var{CTAN:}/biblio/bibtex} contains these and -many more (for CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}). - -@table @code -@item plain -@flindex plain.bst -Sorts entries alphabetically, with numeric labels. Generally formatted -according to van Leunen's @cite{A Handbook for Scholars}. The other -style files listed here are based on @code{plain}. - -@item abbrv -@flindex abbrv.bst -First names, month names, and journal names are abbreviated. - -@item acm -@flindex acm.bst -Names are printed in small caps. - -@item alpha -@flindex alpha.bst -Alphanumeric labels, e.g., @samp{Knu66}. - -@item apalike -@flindex apalike.bst -No labels at all; instead, the year appears in parentheses after the author. -Use this in conjunction with @file{apalike.tex} (plain @TeX{}) or -@file{apalike.sty} (@LaTeX{}), which also changes the citations in the -text to be @samp{(@var{author}, @var{year})}. - -@item ieeetr -@flindex ieeetr.bst -Numeric labels, entries in citation order, @sc{ieee} abbreviations, -article titles in quotes. - -@item siam -@flindex siam.bst -Numeric labels, alphabetic order, @cite{Math.@: Reviews} -abbreviations, names in small caps. - -@item unsrt -@flindex unsrt.bst -Lists entries in citation order, i.e., unsorted. - -@item btxbst.doc -The template file and documentation for the standard styles. - -@end table - - -@node WEB -@chapter WEB: Literate programming - -@cindex WEB -@cindex literate programming - -@dfn{WEB} languages allow you to write a single source file that can -produce both a compilable program and a well-formatted document -describing the program in as much detail as you wish to prepare. -Writing in this kind of dual-purpose language is called @dfn{literate -programming}. (The Usenet newsgroup @file{comp.programming.literate} -is devoted to this subject.) - -@flindex webman.tex -@cindex Spiderweb -@cindex Cweb -@cindex CWEB -@cindex Awk, WEB for -@cindex Ada, WEB for -@cindex Troff, WEB for -WEB-like languages have been implemented with many pairs of base -languages: Cweb provides C and Troff (@pxref{References}); CWEB provides -C and @TeX{} (@file{@var{CTAN:}/web/c_cpp/cweb}); Spiderweb provides C, -C++, Awk, Ada, many others, and @TeX{} -(@file{@var{CTAN:}/web/spiderweb}); and, of course, the original WEB -provides Pascal and @TeX{}, the implementation languages for the -original @TeX{}, Metafont, MetaPost, and related programs to come from -the @TeX{} project at Stanford. - -The original WEB language is documented in the file @file{webman.tex}, -which is included in the @url{ftp://ftp.tug.org/tex/lib.tar.gz} archive -(and available in many other places, of course). - -@menu -* tangle invocation:: -* weave invocation:: -* pooltype invocation:: -@end menu - - -@node tangle invocation -@section Tangle: Translate WEB to Pascal - -@pindex tangle -@cindex Pascal, creating from WEB -@cindex WEB programs, compiling - -Tangle creates a compilable Pascal program from a WEB source file -(@pxref{WEB}). Synopsis: - -@example -tangle [@var{option}]@dots{} @var{webfile}[.web] [@var{changefile}[.ch]] -@end example - -@cindex change files, and Tangle -@noindent -The Pascal output is written to the basename of @var{webfile} extended -with @samp{.p}; for example, @samp{tangle /wherever/foo.web} creates -@file{./foo.p}. Tangle applies @var{changefile} to @var{webfile} before -writing the output; by default, there is no change file. - -@cindex pool file, writing -@cindex string pool, writing -If the program makes use of the WEB string facility, Tangle writes the -string pool to the basename of @var{webfile} extended with @samp{.pool}. - -The Pascal output is packed into lines of 72 characters or less, with -the only concession to readability being the termination of lines at -semicolons when this can be done conveniently. - -The program accepts the following options, as well as the standard -@samp{--help} and @samp{--version} (@pxref{Common options}): - -@table @samp -@item -length=@var{number} -@opindex -length=@var{number} -@cindex identifier length -The number of characters that are considered significant in an -identifier. Whether underline characters are counted depends on the -@samp{-underline} option. The default value is 32, the original tangle -used 7, but this proved too restrictive for use by Web2c. - -@item -lowercase -@itemx -mixedcase -@itemx -uppercase -@opindex -lowercase -@opindex -mixedcase -@opindex -uppercase -@cindex identifier case -These options specify the case of identifiers in the output of tangle. -If @samp{-uppercase} (@samp{-lowercase}) is specified, tangle will -convert all identfiers to uppercase (lowercase). The default is -@samp{-mixedcase}, which specifies that the case will not be changed. - -@item -underline -@opindex -underline -@cindex identifiers with underlines -When this option is given, tangle does not strip underline characters -from identifiers. - -@item -loose -@itemx -strict -@opindex -loose -@opindex -strict -@cindex identifier collisions -These options specify how strict tangle must be when checking -identifiers for equality. The default is @samp{-loose}, which means -that tangle will follow the rules set by the case-smashing and underline -options above. If @samp{-strict} is set, then identifiers will always -be stripped of underlines and converted to uppercase before checking -whether they collide. - -@end table - -@node weave invocation -@section Weave: Translate WEB to @TeX{} - -@pindex weave -@cindex @TeX{}, creating from WEB -@cindex WEB programs, typesetting -@cindex prettyprinting WEB programs - -Weave creates a @TeX{} document from a WEB source file (@pxref{WEB}), -assuming various macros defined in @file{webmac.tex}. It takes care of -typographic details such as page layout, indentation, and italicizing -identifiers. It also automatically gathers and outputs extensive -cross-reference information. Synopsis: - -@example -weave [@var{option}]@dots{} @var{webfile}[.web] [@var{changefile}[.ch]] -@end example - -@cindex change files, and Weave -@noindent -The output is to the basename of @var{webfile} extended with -@samp{.tex}; for example, @samp{weave /wherever/foo.web} creates -@file{./foo.tex}. Weave applies @var{changefile} to @var{webfile} -before writing the output; by default, there is no change file. - -The program accepts the following option, as well as the standard -@samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common -options}): -@table @samp -@item -x -@opindex -x -@cindex cross-references, omitting -@flindex CONTENTS.tex -@flindex webmac.tex -Omit the cross-reference information: the index, the list of WEB module -names, and the table of contents (an empty @file{CONTENTS.tex} file will -still be written when the Weave output file is processed by @TeX{} using -the default @file{webmac.tex}, though). -@end table - -Conventionally, WEB programmers should define the @TeX{} @code{\title} -macro at the beginning of the source file. Also, to get output of only -changed modules, one can say @code{\let\maybe=\iffalse} (usually as the -first change in the change file). - - -@node pooltype invocation -@section Pooltype: Display WEB pool files - -@pindex pooltype -@cindex type programs, pool -@cindex string numbers, displaying -@cindex WEB pool files, displaying - -Pooltype shows the so-called @dfn{string number} of each string in a WEB -pool file (@pxref{WEB}), as output by Tangle (@pxref{tangle -invocation}), including the first 256 strings corresponding to the -possible input characters. Pooltype primarily serves as an example of -WEB conventions to implementors of the @TeX{} system. Synopsis: - -@example -pooltype [@var{option}]@dots{} @var{poolfile}[.pool] -@end example - -@noindent -No path searching is done for @var{poolfile}. Output is to standard -output. - -The only options are @samp{--help} and @samp{--version} (@pxref{Common -options}). - -As an example of the output, here is the (edited) output for @file{tex.pool}: -@example -0: "^^@@" -1: "^^A" -@dots{} -255: "^^ff" -256: "pool size" -@dots{} -1314: "Using character substitution: " -(23617 characters in all.) -@end example - -@cindex representation of strings -@cindex string representation -In Metafont and MetaPost, the first 256 characters are actually -represented as single bytes (i.e., themselves), not in the @samp{^^} -notation. Consider Pooltype as showing the results after conversion for -output. - - -@node DVI utilities -@chapter DVI utilities - -@cindex DVI utilities - -@TeX{} outputs a file in @dfn{DVI} (DeVice Independent) format as a -compact representation of the original document. DVI files can be -translated to meet the requirements of a real physical device, such as -PostScript printers (@pxref{Top,, Introduction, dvips, Dvips}), PCL -printers (see dvilj(1)), and X displays (see xdvi(1)). In fact, DVI -translators are available for virtually all common devices: see -@file{@var{CTAN:}/dviware} (for CTAN info, @pxref{unixtex.ftp,,, -kpathsea, Kpathsea}). - -@flindex dvitype.web -@cindex DVI format definition -For the precise definition of the DVI file format, see (for example) the -source file @file{web2c/dvitype.web}. - -The DVI-processing programs in the Web2c distribution are not device -drivers; they perform generic utility functions. - -@menu -* dvicopy invocation:: Expand virtual fonts. -* dvitype invocation:: DVI to human-readable text. -@end menu - -@node dvicopy invocation -@section DVIcopy: Canonicalize virtual font references - -@pindex dvicopy -@cindex virtual fonts, expanding - -DVIcopy reads a DVI file, expands any references to virtual fonts -(@pxref{Virtual fonts,,, dvips, Dvips}) to base fonts, and writes the -resulting DVI file. Thus you can use virtual fonts even if your DVI -processor does not support them, by passing the documents through -DVIcopy first. Synopsis: - -@example -dvicopy [@var{option}]@dots{} [@var{indvi}[.dvi] [@var{outdvi}[.dvi]]] -@end example - -DVIcopy reads standard input if @var{indvi} is not specified, and writes -standard output if @var{outdvi} is not specified. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -magnification=@var{integer} -@opindex -magnification=@var{integer} -@cindex magnification -@findex \mag -Override existing magnification in @var{indvi} with @var{integer}; 1000 -specifies no magnification. This is equivalent to setting @TeX{}'s -@code{\mag} parameter. - -@item -max-pages=@var{n} -@opindex -max-pages=@var{n} -Process @var{n} pages; default is one million. - -@item -page-start=@var{page-spec} -@opindex -page-start=@var{page-spec} -@cindex starting page -@cindex page, starting -@findex \count@var{n} -Start at the first page matching @var{page-spec}, which is one or more -(signed) integers separated by periods, corresponding to @TeX{}'s -@code{\count0@dots{}9} parameters at @code{\shipout} time; @samp{*} -matches anything. Examples: @samp{3}, @samp{1.*.-4}. -@end table - - -@node dvitype invocation -@section DVItype: Plain text transliteration of DVI files - -@pindex dvitype @r{DVI validation} -@cindex conversion, DVI to plain text -@cindex plain text, converting DVI to -@cindex human-readable text, converting DVI to -@cindex type programs, DVI -@cindex validation, of DVI files - -DVItype translates a DeVice Independent (DVI) file (as output by @TeX{}, -for example) to a plain text file that humans can read. It also serves -as a DVI-validating program, i.e., if DVItype can read a file, it's -correct. Synopsis: - -@example -dvitype [@var{option}]@dots{} @var{dvifile}[.dvi] -@end example - -@noindent -DVItype does not read any bitmap files, but it does read TFM files for -fonts referenced in @var{dvifile}. The usual places are searched -(@pxref{Supported file formats,,, kpathsea, Kpathsea}). To see all the -relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to -@samp{-1} before running the program. - -Output goes to standard output. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -dpi=@var{real} -@opindex -dpi=@var{real} -Do pixel movement calculations at @var{real} pixels per inch; default -300.0. - -@item -magnification=@var{integer} -@opindex -magnification=@var{integer} -@cindex magnification -@findex \mag -Override existing magnification in @var{indvi} with @var{integer}; 1000 -specifies no magnification. This is equivalent to setting @TeX{}'s -@code{\mag} parameter. - -@item -max-pages=@var{n} -@opindex -max-pages=@var{n} -Process @var{n} pages; default is one million. - -@item -output-level=@var{n} -@opindex -output-level=@var{n} -Verbosity level of output, from 0 to 4 (default 4): -@itemize @bullet -@item 0: Global document information only. -@item 1: Most DVI commands included, and typeset characters summarized. -@item 2: Character and movement commands explicitly included. -@item 3: DVI stack and current position calculations included. -@item 4: Same information as level 3, but DVItype does random positioning -in the file, reading the DVI postamble first. -@end itemize - -@item -page-start=@var{page-spec} -@opindex -page-start=@var{page-spec} -@cindex starting page -@cindex page, starting -@findex \count@var{n} -Start at the first page matching @var{page-spec}, which is one or more -(signed) integers separated by periods, corresponding to @TeX{}'s -@code{\count0@dots{}9} parameters at @code{\shipout} time; @samp{*} -matches anything. Examples: @samp{1}, @samp{5.*.-9}. - -@item -show-opcodes -@opindex -show-opcodes -@cindex opcodes, showing DVI -@cindex DVI opcodes, showing -@cindex debugging DVI utilities -Show numeric opcode values (in decimal) for DVI commands, in braces -after the command name. This can help in debugging DVI utilities. We -use decimal because in the DVI format documentation (in -@file{dvitype.web}, among others) the opcodes are shown in decimal. -@end table - -@menu -* dvitype output example:: -@end menu - - -@node dvitype output example -@subsection DVItype output example - -@cindex dvitype output example -As an example of the output from DVItype (see section above), here is -its (abridged) translation of the @file{story.dvi} resulting from -running the example in @cite{The @TeX{}book}, with -@samp{-output-level=4} and @samp{-show-opcodes} on. - -@example -@dots{} -Options selected: - Starting page = * - Maximum number of pages = 1000000 - Output level = 4 (the works) - Resolution = 300.00000000 pixels per inch -numerator/denominator=25400000/473628672 -magnification=1000; 0.00006334 pixels per DVI unit -' TeX output 1992.05.17:0844' -Postamble starts at byte 564. -maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 -Font 33: cmsl10---loaded at size 655360 DVI units -Font 23: cmbx10---loaded at size 655360 DVI units -Font 0: cmr10---loaded at size 655360 DVI units - -42: beginning of page 1 -87: push @{141@} -level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) -88: down3 -917504 @{159@} v:=0-917504=-917504, vv:=-58 -92: pop @{142@} -@dots{} -104: putrule @{137@} height 26214, width 30785863 (2x1950 pixels) -113: down3 5185936 @{159@} v:=655360+5185936=5841296, vv:=370 -117: push @{141@} -level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) -118: right4 12265425 @{146@} h:=0+12265425=12265425, hh:=777 -[ ] -123: fntdef1 23 @{243@}: cmbx10 -145: fntnum23 @{194@} current font is cmbx10 -146: setchar65 h:=12265425+569796=12835221, hh:=813 -147: w3 251220 @{150@} h:=12835221+251220=13086441, hh:=829 -151: setchar83 h:=13086441+418700=13505141, hh:=856 -@dots{} -164: setchar82 h:=17448202+565245=18013447, hh:=1142 -165: x0 -62805 @{152@} h:=18013447-62805=17950642, hh:=1138 -166: setchar89 h:=17950642+569796=18520438, hh:=1174 -[A SHORT STORY] -167: pop @{142@} -level 1:(h=0,v=5841296,w=0,x=0,y=0,z=0,hh=0,vv=370) -@dots{} -550: pop @{142@} -level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) -551: down3 1572864 @{159@} v:=42152922+1572864=43725786, vv:=2770 -555: push @{141@} -level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) -556: right4 15229091 @{146@} h:=0+15229091=15229091, hh:=965 -561: setchar49 h:=15229091+327681=15556772, hh:=986 -[ 1] -562: pop @{142@} -level 0:(h=0,v=43725786,w=0,x=0,y=0,z=0,hh=0,vv=2770) -563: eop @{140@} -@end example - -Explanation: - -@itemize @bullet -@item -The DVItype options are recorded at the beginning, followed by -global information about the document, including fonts used. - -@item -Each DVI command is preceded by its byte position in the file -(@samp{42:}, @samp{87:}, @dots{}), and (because of the -@samp{-show-opcodes}) followed by its decimal opcode value in braces -(@samp{@{141@}}, @samp{@{142@}}, @dots{}). - -@item -The @samp{level} lines record information about the DVI stack; @samp{h} -and @samp{v} define the current position in DVI units, while @samp{hh} -and @samp{vv} are the same in pixels. - -@item -Text sequences are summarized in brackets, as in @samp{[A SHORT -STORY]} and the @samp{[ 1]}. -@end itemize - - -@node Font utilities -@chapter Font utilities - -@cindex font utilities - -The Web2c programs described here convert between various @TeX{}-related -font formats; the first section below briefly describes the -formats. GFtoPK is the only one that is routinely used, as Metafont -outputs GF format, but it's most efficient for device drivers to use PK. - -@flindex pktype.web -@flindex gftype.web -@cindex PK format definition -@cindex GF format definition -The precise definitions of the PK, GF, TFM, PL, VF, and VPL formats -mentioned below are in the source files that read them; -@file{pktype.web}, @file{gftype.web}, @file{tftopl.web}, etc. - -@menu -* Font file formats:: Explanations of GF, PK, TFM, VF, ... -* gftopk invocation:: GF -> PK (compact) -* pktogf invocation:: PK -> GF (expand). -* pktype invocation:: PK -> human-readable text. -* gftype invocation:: GF -> human-readable text. -* tftopl invocation:: TFM -> PL (for editing TFM). -* pltotf invocation:: PL -> TFM (make editing results usable). -* vftovp invocation:: VF -> VPL (tftopl for virtual fonts). -* vptovf invocation:: VPL -> VF (pltotf for virtual fonts). -* Font utilities available elsewhere:: Type 1, BDF, editors, etc. -@end menu - - -@node Font file formats -@section Font file formats - -@cindex font file formats -@cindex file formats for fonts - -(For another perspective on this, @pxref{Font concepts,,, dvips, -Dvips}). - -Font files come in several varieties, with suffixes like: -@example -.tfm .*pk .*gf .*pxl@r{ (obsolete)} .pl .mf .vf .vpl -@end example -@noindent -Each represents a file format. - -@cindex TFM files, explained -A TFM (@TeX{} font metric) file is a compact binary file that contains -information about each character in a font, about combinations of -characters within that font, and about the font as a whole. The font -metric information contained in TFM files is device-independent units is -used by @TeX{} to do typesetting. Unlike the bitmap (raster) fonts -described below, TFM font files contain no information about the shapes -of characters. They describe rectangular areas and combinations -thereof, but not what will eventually be printed in those areas. - -@cindex scaling of fonts -@cindex optical font scaling -@cindex geometric font scaling -@cindex PostScript, and font scaling -Since @TeX{} does scaling calculations, one TFM file serves for all -magnifications of a given typeface. On the other hand, the best printed -results are obtained when magnified (or reduced fonts) are not produced -geometrically (as done by PostScript, for example) but rather optically, -with each size a separate design (as done with Computer Modern and the -EC fonts, for example); then a separate TFM file is needed for each -size. - -@cindex DVI files, explained -At any rate, @TeX{} produces a DVI (DeVice Independent) file from your -source document. In order to print DVI files on real devices, you need -font files defining digitized character shapes and other data. Then -previewers and printer-driver programs can translate your DVI files into -something usable by your monitor or printer. Bitmap fonts come with -suffixes such as @samp{.600pk} or @samp{.600gf} or @samp{.3000pxl}, where -the @samp{600} is the horizontal dots-per-inch resolution at which the -font was produced, and the @samp{pk} or @samp{gf} or @samp{pxl} -indicates the font format. Outline fonts in PostScript Type 1 format -have suffixes such as @samp{.pfa} or @samp{.pfb}. - -@cindex PXL files, explained -@cindex PK files, explained -@cindex GF files, explained -Fonts in pk (packed) format are in the tightly packed raster format that -is pretty much the standard today. They take up less space than fonts -in the gf (generic font) format that Metafont generates, and far less -space than fonts in pxl format. Fonts in pxl format take up gross -amounts of disk space and permit only 128 characters. They are -obsolete. - -@cindex PL files, explained -Font files with the @samp{.pl} (property list) suffix are the plain text -(human-readable) analog of the binary @samp{.tfm} files. -The TFtoPL and PLtoTF programs convert between the two formats -(@pxref{tftopl invocation} and @ref{pltotf invocation}). - -Font files with the @samp{.mf} suffix are in Metafont source format. -These are the files used by Metafont to generate rastered fonts for -specific typefaces at specific magnifications for the specific -resolution and type of mapping used by your device. - -@flindex virtual-fonts.knuth -@flindex virtualfonts.txt -The suffix @samp{.vf} identifies ``virtual font'' files, for which -@samp{.vpl} is the human-readable analog. See @xref{vftovp invocation}, -and @ref{vptovf invocation}. For further discussion of virtual fonts, -see @file{@var{CTAN:}/doc/virtual-fonts.knuth}, -@file{@var{CTAN:}/help/virtualfonts.txt}, and @ref{Virtual fonts,,, -dvips, Dvips}. - -@cindex MacKay, Pierre -@cindex Tachikawa, Elizabeth -(This section is based on documentation in the original Unix @TeX{} -distribution by Pierre MacKay and Elizabeth Tachikawa.) - - -@node gftopk invocation -@section GFtoPK: Generic to packed font conversion - -@pindex gftopk -@cindex conversion, GF to PK -@cindex PK, converting GF to -@cindex GF, converting to PK - -GFtoPK converts a generic font (GF) file output by, for example, -Metafont (@pxref{mf invocation}) to a packed font (PK) file. PK files -are considerably smaller than the corresponding gf files, so they are -generally the bitmap font format of choice. Some DVI-processing -programs, notably Dvips, only support PK files and not GF files. -Synopsis: - -@example -gftopk [@var{option}]@dots{} @var{gfname}.@var{dpi}[gf] [@var{pkfile}] -@end example - -@noindent -The font @var{gfname} is searched for in the usual places (@pxref{Glyph -lookup,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -The suffix @samp{gf} is supplied if not already present. This suffix is -not an extension; no @samp{.} precedes it: for instance, -@file{cmr10.600gf}. - -If @var{pkfile} is not specified, the output is written to the basename -of @samp{@var{gfname}.@var{dpi}pk}, e.g., @samp{gftopk -/wherever/cmr10.600gf} creates @file{./cmr10.600pk}. - -The only options are @samp{--verbose}, @samp{--help}, and -@samp{--version} (@pxref{Common options}). - - -@node pktogf invocation -@section PKtoGF: Packed to generic font conversion - -@pindex pktogf -@cindex conversion, PK to GF -@cindex GF, converting PK to -@cindex PK, converting to GF - -PKtoGF converts a packed font (PK) file to a generic font (GF) file. -Since PK format is much more compact than GF format, the most likely -reason to do this is to run GFtype (@pxref{gftype invocation}) on the -result, so you can see the bitmap images. Also, a few old utility -programs do not support PK format. Synopsis: - -@example -pktogf [@var{option}]@dots{} @var{pkname}.@var{dpi}[pk] [@var{gffile}] -@end example - -@noindent -The font @var{pkname} is searched for in the usual places (@pxref{Glyph -lookup,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -The suffix @samp{pk} is supplied if not already present. This suffix is -not an extension; no @samp{.} precedes it: for instance, -@file{cmr10.600pk}. - -If @var{gffile} is not specified, the output is written to the basename -of @samp{@var{pkname}.@var{dpi}gf}, e.g., @samp{pktogf -/wherever/cmr10.600pk} creates @file{./cmr10.600gf}. - -The only options are @samp{--verbose}, @samp{--help}, and -@samp{--version} (@pxref{Common options}). - - -@node pktype invocation -@section PKtype: Plain text transliteration of packed fonts - -@pindex pktype @r{PK validation} -@cindex conversion, PK to plain text -@cindex plain text, converting PK to -@cindex human-readable text, converting PK to -@cindex type programs, PK -@cindex validation, of PK files - -PKtype translates a packed font (PK) bitmap file (as output by GFtoPK, -for example) to a plain text file that humans can read. It also serves -as a PK-validating program, i.e., if PKtype can read a file, it's -correct. Synopsis: - -@example -pktype @var{pkname}.@var{dpi}[pk] -@end example - -The font @var{pkname} is searched for in the usual places (@pxref{Glyph -lookup,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -The suffix @samp{pk} is supplied if not already present. This suffix is -not an extension; no @samp{.} precedes it: for instance, @file{cmr10.600pk}. - -The translation is written to standard output. - -The only options are @samp{-help} and @samp{-version} -(@pxref{Common options}). - -As an example of the output, here is the (abridged) translation of the -letter `K' in @samp{cmr10}, as rendered at 600@dmn{dpi} with the mode -@samp{ljfour} from @url{modes.mf} (available from -@file{ftp://ftp.tug.org/tex/modes.mf}). - -@smallexample -955: Flag byte = 184 Character = 75 Packet length = 174 - Dynamic packing variable = 11 - TFM width = 815562 dx = 4259840 - Height = 57 Width = 57 X-offset = -3 Y-offset = 56 - [2]23(16)17(8)9(25)11(13)7(27)7(16)7(28)4(18)7(28)2(20)7(27)@dots{} - @dots{} - (14)9(24)12(5)[2]23(13)21 -@end smallexample - -@noindent -Explanation: - -@table @samp -@item 955 -@cindex byte position -The byte position in the file where this character starts. - -@item Flag byte -@itemx Dynamic packing variable -@cindex flag byte -@cindex dynamic packing variable -Related to the packing for this character; see the source code. - -@item Character -@cindex character codes, in PKtype output -The character code, in decimal. - -@item Packet length -@cindex packet length -The total length of this character definition, in bytes. - -@item TFM width -@cindex TFM width of characters -@cindex device-independent width -@cindex width, device-independent -The device-independent (TFM) width of this character. It is 2^24 -times the ratio of the true width to the font's design size. - -@item dx -@cindex horizontal escapement -@cindex escapement, horizontal -@cindex scaled pixels -@cindex dx @r{horizontal escapement} -The device-dependent width, in @dfn{scaled pixels}, i.e., units of -horizontal pixels times 2^16. - -@item Height -@itemx Width -@cindex height, in pixels -@cindex pixel height -@cindex pixel width -@cindex width, in pixels -The bitmap height and width, in pixels. - -@item X-offset -@itemx Y-offset -@cindex x offset -@cindex y offset -@cindex origin -@cindex reference pixel -@cindex side bearings -@cindex left side bearing -@cindex right side bearing -Horizontal and vertical offset from the upper left pixel to the -reference (origin) pixel for this character, in pixels (right and down -are positive). The @dfn{reference pixel} is the pixel that occupies the -unit square in Metafont; the Metafont reference point is the lower left -hand corner of this pixel. Put another way, the x-offset is the negative -of the left side bearing; the right side bearing is the horizontal -escapement minus the bitmap width plus the x-offset. - -@item [2]23(16)@dots{} -@cindex run length encoded bitmaps -@cindex repeated rows -Finally, run lengths of black pixels alternate with parenthesized run -lengths of white pixels, and brackets indicate a repeated row. -@end table - - -@node gftype invocation -@section GFtype: Plain text transliteration of generic fonts - -@pindex gftype @r{GF validation} -@cindex conversion, GF to plain text -@cindex plain text, converting GF to -@cindex human-readable text, converting GF to -@cindex type programs, GF -@cindex validation, of GF files - -GFtype translates a generic font (GF) bitmap file (as output by -Metafont, for example) to a plain text file that humans can read. It -also serves as a GF-validating program, i.e., if GFtype can read a file, -it's correct. Synopsis: - -@example -gftype [@var{option}]@dots{} @var{gfname}.@var{dpi}[gf] -@end example - -The font @var{gfname} is searched for in the usual places (@pxref{Glyph -lookup,,, kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -The suffix @samp{gf} is supplied if not already present. This suffix is -not an extension; no @samp{.} precedes it: for instance, @file{cmr10.600gf}. - -The translation is written to standard output. - -The program accepts the following options, as well as the standard -@samp{-help} and @samp{-version} (@pxref{Common options}): -@table @samp -@item -images -@opindex -images -Show the characters' bitmaps using asterisks and spaces. - -@item -mnemonics -@opindex -mnemonics -Translate all commands in the GF file. -@end table - -As an example of the output, here is the (abrdiged) translation of the -letter `K' in @samp{cmr10}, as rendered at 600@dmn{dpi} with the mode -@samp{ljfour} from @file{modes.mf} (available from -@url{ftp://ftp.tug.org/tex/modes.mf}), with both @samp{-mnemonics} and -@samp{-images} enabled. - -GFtype outputs the information about a character in two places: a main -definition and a one-line summary at the end. We show both. Here is the -main definition: - -@example -2033: beginning of char 75: 3<=m<=60 0<=n<=56 -(initially n=56) paint (0)24(12)20 -2043: newrow 0 (n=55) paint 24(12)20 -2047: newrow 0 (n=54) paint 24(12)20 -2051: newrow 0 (n=53) paint 24(12)20 -2055: newrow 7 (n=52) paint 10(21)13 -2059: newrow 8 (n=51) paint 8(23)9 -@dots{} -2249: newrow 8 (n=5) paint 8(23)11 -2253: newrow 7 (n=4) paint 10(22)12 -2257: newrow 0 (n=3) paint 24(11)22 -2261: newrow 0 (n=2) paint 24(11)22 -2265: newrow 0 (n=1) paint 24(11)22 -2269: newrow 0 (n=0) paint 24(11)22 -2273: eoc -@group -.<--This pixel's lower left corner is at (3,57) in METAFONT coordinates -************************ ******************** -************************ ******************** -************************ ******************** -************************ ******************** - ********** ************* - ******** ********* -@dots{} - ******** *********** - ********** ************ -************************ ********************** -************************ ********************** -************************ ********************** -************************ ********************** -.<--This pixel's upper left corner is at (3,0) in METAFONT coordinates -@end group -@end example - -@noindent -Explanation: - -@table @samp -@item 2033 -@itemx 2043 -@itemx @dots{} -@cindex byte position -The byte position in the file where each GF command starts. - -@item beginning of char 75 -@cindex character codes, in GFtype output -The character code, in decimal. - -@item 3<=m<=60 0<=n<=56 -@cindex left side bearing -@cindex right side bearing -@cindex side bearings -The character's bitmap lies between 3 and 60 (inclusive) horizontally, -and between 0 and 56 (inclusive) vertically. (@math{m} is a column -position and @math{n} is a row position.) Thus, 3 is the left side -bearing. The right side bearing is the horizontal escapement (given -below) minus the maximum @math{m}. - -@item (initially n=56) paint (0)24(12)20 -@cindex run length encoded bitmaps -The first row of pixels: 0 white pixels, 24 black pixels, 12 white -pixels, etc. - -@item newrow 0 (n=55) paint 24(12)20 -@findex newrow @r{GF command} -The second row of pixels, with zero leading white pixels on the row. - -@item eoc -@findex eoc @r{GF command} -The end of the main character definition. - -@end table - -Here is the GF postamble information that GFtype outputs at the end: - -@example -Character 75: dx 4259840 (65), width 815562 (64.57289), loc 2033 -@end example - -Explanation: - -@table @samp -@item dx -@cindex horizontal escapement -@cindex escapement, horizontal -@cindex vertical escapement -@cindex escapement, vertical -@cindex scaled pixels -@cindex dx @r{horizontal escapement} -@cindex dy @r{vertical escapement} -The device-dependent width, in @dfn{scaled pixels}, i.e., units of -horizontal pixels times 2^16. The @samp{(65)} is simply the same number -rounded. If the vertical escapement is nonzero, it would appear here as -a @samp{dy} value. - -@item width -@cindex TFM width of characters -@cindex device-independent width -@cindex width, device-independent -The device-independent (TFM) width of this character. It is 2^24 -times the ratio of the true width to the font's design size. The -@samp{64.57289} is the same number converted to pixels. - -@item loc -The byte position in the file where this character starts. - -@end table - - -@node tftopl invocation -@section TFtoPL: @TeX{} font metric to property list conversion - -@pindex tftopl -@cindex conversion, TFM to property list -@cindex validation, of TFM files -@cindex property list, converting TFM to -@cindex human-readable text, converting TFM to -@cindex plain text, converting TFM to - -TFtoPL translates a @TeX{} font metric (TFM, @pxref{Metric -files,,,dvips,Dvips}) file (as output by Metafont, for example) to -@dfn{property list format} (a list of parenthesized items describing the -font) that humans can edit or read. This program is mostly used by -people debugging @TeX{} implementations, writing font utilities, etc. -Synopsis: - -@example -tftopl [@var{option}]@dots{} @var{tfmname}[.tfm] [@var{plfile}[.pl]] -@end example - -The font @var{tfmname} (extended with @samp{.tfm} if necessary) is -searched for in the usual places (@pxref{Supported file formats,,, -kpathsea, Kpathsea}). To see all the relevant paths, set the -environment variable @code{KPATHSEA_DEBUG} to @samp{-1} before running -the program. - -If @var{plfile} (which is extended with @samp{.pl} if necessary) is not -specified, the property list file is written to standard output. The -property list file can be converted back to TFM format by the companion -program TFtoPL (see the next section). - -The program accepts the following option, as well as the standard -@samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common -options}): -@table @samp -@item -charcode-format=@var{type} -@opindex -charcode-format=@var{type} -Output character codes in the PL file according to @var{type}: either -@samp{octal} or @samp{ascii}. Default is @samp{ascii} for letters and -digits, octal for all other characters. Exception: if the font's coding -scheme starts with @samp{TeX math sy} or @samp{TeX math ex}, all -character codes are output in octal. - -In @samp{ascii} format, character codes that correspond to graphic -characters, except for left and right parentheses, are output as a -@samp{C} followed by the single character: @samp{C K}, for example. In -octal format, character codes are output as the letter @samp{O} followed -by octal digits, as in @samp{O 113} for @samp{K}. - -@samp{octal} format is useful for symbol and other non-alphabetic fonts, -where using ASCII characters for the character codes is merely -confusing. -@end table - -@cindex property list format -As an example of the output, here is the (abridged) property list -translation of @file{cmr10.tfm}: - -@example -(FAMILY CMR) -(FACE O 352) -(CODINGSCHEME TEX TEXT) -(DESIGNSIZE R 10.0) -(COMMENT DESIGNSIZE IS IN POINTS) -(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) -(CHECKSUM O 11374260171) -(FONTDIMEN - (SLANT R 0.0) - (SPACE R 0.333334) - (STRETCH R 0.166667) - (SHRINK R 0.111112) - (XHEIGHT R 0.430555) - (QUAD R 1.000003) - (EXTRASPACE R 0.111112) - ) -(LIGTABLE - @dots{} - (LABEL C f) - (LIG C i O 14) - (LIG C f O 13) - (LIG C l O 15) - (KRN O 47 R 0.077779) - (KRN O 77 R 0.077779) - (KRN O 41 R 0.077779) - (KRN O 51 R 0.077779) - (KRN O 135 R 0.077779) - (STOP) - @dots{} - ) -@dots{} -(CHARACTER C f - (CHARWD R 0.305557) - (CHARHT R 0.694445) - (CHARIC R 0.077779) - (COMMENT - (LIG C i O 14) - (LIG C f O 13) - (LIG C l O 15) - (KRN O 47 R 0.077779) - (KRN O 77 R 0.077779) - @dots{} - ) - ) -@dots{} -@end example - -As you can see, the general format is a list of parenthesized -@dfn{properties}, nested where necessary. - -@itemize @bullet -@item -@findex FAMILY @r{property} -@findex FACE @r{property} -@findex headerbyte @r{information} -The first few items (@code{FAMILY}, @code{FACE}, and so on) are -the so-called @dfn{headerbyte} information from Metafont, giving general -information about the font. - -@item -@findex FAMILY @r{property} -@findex \fontdimen -The @code{FONTDIMEN} property defines the @TeX{} @code{\fontdimen} -values. - -@item -@findex LIGTABLE @r{property} -@findex LABEL @r{property} -@findex LIG @r{property} -@findex KRN @r{property} -@cindex ligature table, in TFM files -@cindex kerning table, in TFM files -@cindex design-size units -The @code{LIGTABLE} property defines the ligature and kerning table. -@code{LIG} properties define ligatures: in the example above, an -@samp{f} (in the @samp{LABEL}) followed by an @samp{i} is a ligature, -i.e., a typesetting program like @TeX{} replaces those two consecutive -characters by the character at position octal '014 in the current -font---presumably the `fi' ligature. @code{KRN} properties define -kerns: if an @samp{f} is followed by character octal '047 (an -apostrophe), @TeX{} inserts a small amount of space between them: -0.077779 times the design size the font was loaded at (about -three-quarters of a printer's point by default in this case, or .001 -inches). - -@item -@findex CHARACTER @r{property} -@findex CHARWD @r{property} -@findex CHARHT @r{property} -@findex CHARDP @r{property} -@findex CHARIC @r{property} -The @code{CHARACTER} property defines the dimensions of a character: its -width, height, depth, and italic correction, also in design-size units, -as explained in the previous item. For our example `f', the depth is -zero, so that property is omitted. TFtoPL also inserts any kerns and -ligatures for this character as a comment. - -@end itemize - - -@node pltotf invocation -@section PLtoTF: Property list to @TeX{} font metric conversion - -@pindex pltotf -@cindex conversion, property list to TFM -@cindex TFM files, converting property lists to -@cindex machine-readable, converting property lists to - -PLtoTF translates a property list file (as output by TFtoPL, for -example) to @TeX{} font metric (TFM, @pxref{Metric files,,,dvips,Dvips}) -format. It's much easier for both programs and humans to create the -(plain text) property list files and let PLtoTF take care of creating -the binary TFM equivalent than to output TFM files directly. Synopsis: - -@example -pltotf [@var{option}]@dots{} @var{plfile}[.pl] [@var{tfmfile}[.tfm]] -@end example - -If @var{tfmfile} (extended with @samp{.tfm} if necessary) is -not specified, the TFM file is written to the basename of -@samp{@var{plfile}.tfm}, e.g., @samp{pltotf /wherever/cmr10.pl} creates -@file{./cmr10.tfm}. (Since TFM files are binary, writing to standard -output by default is undesirable.) - -The only options are @samp{-verbose}, @samp{-help}, and -@samp{-version} (@pxref{Common options}). - -For an example of property list format, see the previous section. - - -@node vftovp invocation -@section VFtoVP: Virtual font to virtual property lists - -@pindex vftovp -@cindex conversion, VF to VPL -@cindex validation, of VF files -@cindex property list, converting VF to virtual -@cindex human-readable text, converting VF to -@cindex plain text, converting VF to - -VFtoVP translates a virtual font metric (VF, @pxref{Virtual -fonts,,,dvips,Dvips}) file and its accompanying @TeX{} font metric (TFM, -@pxref{Metric files,,,dvips,Dvips}) file (as output by VPtoVF, for -example) to @dfn{virtual property list format} (a list of parenthesized -items describing the virtual font) that humans can edit or read. This -program is mostly used by people debugging virtual font utilities. -Synopsis: - -@example -vftovp [@var{option}]@dots{} @var{vfname}[.vf] [@var{tfmname}[.tfm] @c -[@var{vplfile}[.vpl]]] -@end example - -The fonts @var{vfname} and @var{tfmname} (extended with @samp{.vf} and -@samp{.tfm} if necessary) are searched for in the usual places -(@pxref{Supported file formats,,, kpathsea, Kpathsea}). To see all the -relevant paths, set the environment variable @code{KPATHSEA_DEBUG} to -@samp{-1} before running the program. If @var{tfmname} is not -specified, @var{vfname} (without a trailing @samp{.vf}) is used. - -If @var{vplfile} (extended with @samp{.vpl} if necessary) is -not specified, the property list file is written to standard output. -The property list file can be converted back to VF and TFM format by the -companion program VFtoVP (see the next section). - -The program accepts the following option, as well as the standard -@samp{-verbose}, @samp{-help} and @samp{-version} (@pxref{Common -options}): -@table @samp -@item -charcode-format=@var{type} -@opindex -charcode-format=@var{type} -Output character codes in the PL file according to @var{type}: either -@samp{octal} or @samp{ascii}. Default is @samp{ascii} for letters and -digits, octal for all other characters. Exception: if the font's coding -scheme starts with @samp{TeX math sy} or @samp{TeX math ex}, all -character codes are output in octal. - -In @samp{ascii} format, character codes that correspond to graphic -characters, except for left and right parentheses, are output as a -@samp{C} followed by the single character: @samp{C K}, for example. In -octal format, character codes are output as the letter @samp{O} followed -by octal digits, as in @samp{O 113} for @samp{K}. - -@samp{octal} format is useful for symbol and other non-alphabetic fonts, -where using ASCII characters for the character codes is merely -confusing. -@end table - - -@node vptovf invocation -@section VPtoVF: Virtual property lists to virtual font - -@pindex vptovf -@cindex conversion, property list to VF -@cindex VF files, converting property lists to -@cindex machine-readable, converting property lists to - -VPtoVF translates a virtual property list file (as output by VFtoVP, for -example) to virtual font (VF, @pxref{Virtual fonts,,,dvips,Dvips}) and -@TeX{} font metric (TFM, @pxref{Metric files,,,dvips,Dvips}) files. -It's much easier for both programs and humans to create the (plain text) -property list files and let VPtoVF take care of creating the binary VF -and TFM equivalents than to output them directly. Synopsis: - -@example -vptovf [@var{option}]@dots{} @var{vplfile}[.vpl] [@var{vffile}[.vf] @c -[@var{tfmfile}[.tfm]]] -@end example - -If @var{vffile} (extended with @samp{.vf} if necessary) is not -specified, the VF output is written to the basename of -@samp{@var{vplfile}.vf}; similarly for @var{tfmfile}. For example, -@samp{vptovf /wherever/ptmr.vpl} creates @file{./ptmr.vf} and -@file{./ptmr.tfm}. - -The only options are @samp{-verbose}, @samp{-help}, and @samp{-version} -(@pxref{Common options}). - - -@node Font utilities available elsewhere -@section Font utilities available elsewhere - -@cindex font utilities, non-Web2c - -The Web2c complement of font utilities merely implements a few basic -conversions. Many other more sophisticated font utilities exist; most -are in @file{@var{CTAN:}/fonts/utilities} (for CTAN info, -@pxref{unixtex.ftp,,, kpathsea, Kpathsea}). Here are some of the most -commonly-requested items: - -@itemize @bullet -@item -@cindex AFM to TFM conversion -@pindex afm2tfm -@pindex afmtopl -AFM (Adobe font metric) to TFM conversion: @pxref{Invoking afm2tfm,,, -dvips, Dvips}, and @file{@var{CTAN:}/fonts/utilities/afmtopl}. - -@item -@cindex X bitmap fonts -@cindex BDF and GF conversion -BDF (the X bitmap format) conversion: -@url{ftp://ftp.tug.org/tex/bdf.tar.gz}. - -@item -@pindex metatype1 -@cindex Latin Modern -Creating fonts using MetaPost: MetaType1. -@url{ftp://bop.eps.gda.pl/pub/metatype1}. This is used to create -the excellent Latin Modern font family (@file{@var{CTAN:}/fonts/lm}), -which extends Computer Modern to a vast repertoire of scripts. - -@item -@cindex editing of bitmap fonts -@pindex xbfe@r{, bitmap font editor} -@pindex xfed@r{, bitmap font editor} -@pindex xfedor@r{, bitmap font editor} -@pindex gftopxl -@pindex chtopx -@pindex pxtoch -Editing of bitmap fonts: Xbfe from the GNU font utilities mentioned -below; the X BDF-editing programs available from -@url{ftp://ftp.x.org/R5contrib/xfed.tar.Z} and -@url{ftp://ftp.x.org/R5contrib/xfedor.tar.Z}; and finally, if your -fonts have only 128 characters, you can use the old @code{gftopxl}, -@code{pxtoch}, and @code{chtopx} programs from -@url{ftp://ftp.tug.org/tex/web}. - -@item -@pindex fontforge -@pindex pfaedit -Editing of outline fonts: FontForge, @url{fontforge.sourceforge.net}. -This is a very elaborate program with support for many outline formats -(Type@tie{}1, OpenType, TrueType, @dots{}), and many advanced font -editing features. - -@item -@cindex PK bitmaps from PostScript -@cindex PostScript to PK bitmaps -@pindex gsftopk -@pindex ps2pk -PK bitmaps from PostScript outline fonts: gsftopk from the @samp{xdvi} -distribution. Alternatively, @code{ps2pk}, from -@file{@var{CTAN:}/fonts/utilities/ps2pk}. - -@item -@cindex Type 1 conversion -@cindex PFA and PFB conversion -@cindex PostScript Type 1 font conversion -PostScript Type 1 font format conversion (i.e., between PFA and PFB -formats): @url{https://www.lcdf.org/type}. - -@item -@pindex autotrace -@pindex potrace -Tracing bitmaps to fitted outlines: Autotrace -(@url{http://autotrace.sourceforge.net}), Potrace -(@url{http://potrace.sourceforge.net}). For Metafont fonts, either of -the two programs @code{mftrace} -(@url{http://www.xs4all.nl/~hanwen/mftrace}) or @code{textrace} -(@url{http://textrace.sourceforge.net}) make the job easier. - -@item -@cindex virtual font creation -@pindex fontinst@r{, for creating virtual fonts} -Virtual font creation: @url{https://ctan.org/pkg/fontinst}. -@end itemize - - -@node Legalisms -@appendix Legalisms - -@cindex legalisms -@cindex copyright notices -@cindex permissions, legal - -In general, each file has its own copyright notice stating the copying -permissions for that file. Following is a summary. - -The Stanford @TeX{} programs and Web2c system itself are in the public -domain (@url{https://tug.org/texlive/copying.html}). The sources may -be copied verbatim, or used as the starting point of new software -under different names; however, per the wishes of the authors, they -should be modified only through a @file{.ch} file, but this is in the -nature of a development request rather than a legal requirement. - -ML@TeX{}, pdf@TeX{}, Lua@TeX{}, Xe@TeX{}, and all the other derived -engines have used various license terms for their additions to the -base code, often the GPL (see @url{https://www.gnu.org/licenses/#GPL} -or (for example) the file @file{web2c/pdftexdir/COPYINGv2}. They also -mostly make use of additional libraries with their own (compatible) -terms. Please see each program's sources. - -The Kpathsea library is covered by the GNU Lesser General Public -License (@pxref{Introduction,,, kpathsea, Kpathsea}). Therefore, the -@emph{binaries} resulting from a standard Web2c compilation are also -covered by the LGPL; so if you (re)distribute the binaries, you must -also (offer to) distribute the complete source that went into those -binaries. See @url{https://gnu.org/licenses/#LGPL} or the file -@file{kpathsea/COPYING.LESSERv2}. - -@node References -@appendix References - -@cindex references -@cindex bibliography - -@enumerate -@item -Kpathsea: @xref{Top, Introduction,, kpathsea, Kpathsea}. - -@item -Dvips and Afm2tfm: @xref{Top, Introduction,, dvips, Dvips}. - -@item -The @TeX{} Users Group: @url{https://tug.org}. For an introduction -to the @TeX{} system, see @url{https://tug.org/begin.html}. - -@item -TUGboat, the principal journal for the @TeX{} world: -@url{https://tug.org/TUGboat}. - -@item -@TeX{} and computer typesetting in general:@* -@url{ftp://ftp.math.utah.edu/pub/tex/bib/texbook1.bib}. - -@item -For a bibliography of formal articles and technical reports on the -@TeX{} project, see the books @cite{@TeX{}: The Program} or -@cite{Metafont: The Program} cited below. - -@include ref.txi - -@end enumerate - - -@node Index -@unnumbered Index - -@printindex cp - -@bye -- cgit v1.2.3