From 1e9e7843c8f3dd00f3beff690e97e329c552dddb Mon Sep 17 00:00:00 2001
From: Karl Berry
@@ -87,89 +86,90 @@ ul.no-bullet {list-style: none}
+
\input
filenames
+
-
tex
invocationtex
invocation
-
mf
invocationmf
invocation
-
• Introduction | A brief introduction. @@ -196,17 +196,19 @@ March 2020. | |
• Commonalities | Option syntax, standard options, memory dumps. | |
• TeX | Typesetting. + | |
• Three programs | TeX, Metafont, MetaPost have much in common. | |
• Metafont | Typeface design. + | |
• TeX | Typesetting. | |
• MetaPost | Technical illustrations. + | |
• Metafont | Typeface design. | |
• BibTeX | Reusable bibliographies. + | |
• MetaPost | Technical illustrations. | |
• WEB | Literate programming. + | |
• BibTeX | Reusable bibliographies. | |
• DVI utilities | DVI expansion. + | |
• WEB | Literate programming. + | |
• DVI utilities | DVI expansion. | |
• Font utilities | Font format conversion. | |
• Triptrap | Running the torture tests. | |
• Runtime options | Array sizes and the like. - |
-Next: Runtime options, Previous: Additional targets, Up: Installation [Contents][Index]
+Previous: Additional targets, Up: Installation [Contents][Index]-Previous: Triptrap, Up: Installation [Contents][Index]
-Besides the configure- and compile-time options described in the -previous sections, you can control a number of parameters (in -particular, array sizes) in the texmf.cnf runtime file read by -Kpathsea (see Config files in Kpathsea). -
-Rather than exhaustively listing them here, please see the last section -of the distributed kpathsea/texmf.cnf. Some of the more -interesting values: -
-Total words of memory available, for TeX, Metafont, and MetaPost. -Must remake the format file after changing. -
-Extra space for “large” TeX data structures: boxes, glue, -breakpoints, et al. If you use PiCTeX, you may well want to set this. -
-Words of font info available for TeX; this is approximately the total -size of all TFM files read. -
-Additional space for the hash table of control sequence names.
-Approximately 10,000 control sequences can be stored in the main hash
-table; if you have a large book with numerous cross-references,
-this might not be enough, and thus you will want to set hash_extra
.
-
Of course, ideally all arrays would be dynamically expanded as -necessary, so the only limiting factor would be the amount of swap space -available. 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 dynamic -reallocation of some arrays.) -
--Next: TeX, Previous: Installation, Up: Top [Contents][Index]
+Next: Three programs, Previous: Installation, Up: Top [Contents][Index]Many aspects of the TeX system are the same among more than one -program, so we describe all those pieces together, here. +program, so we describe those pieces together, here.
• Option conventions | – or -, = or ‘ ’ for values. @@ -715,8 +643,6 @@ program, so we describe all those pieces together, here. | |
• Output file location | TEXMFOUTPUT allows output in places other than ‘.’. | |
• Three programs | TeX, Metafont, and MetaPost have a lot in common. - |
Parse str as if it were a line in the texmf.cnf +configuration file, overriding all other settings. See Path +searching options in Kpathsea. +
+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. +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.
-Next: Three programs, Previous: Path searching, Up: Commonalities [Contents][Index]
+Previous: Path searching, Up: Commonalities [Contents][Index]-Previous: Output file location, Up: Commonalities [Contents][Index]
+Next: TeX, Previous: Commonalities, Up: Top [Contents][Index]TeX, Metafont, and MetaPost have a number of features in common. -Besides the ones here, the common command-line options are described in -the previous section. The configuration file options that let you -control some array sizes and other features are described in -Runtime options. +Besides the ones here, command-line options and other commonalities +are described in the previous section.
• Initial and virgin | Making memory dumps vs. production runs. + | |
• Runtime options | The texmf.cnf configuration file. + | |
• Initial and virgin | Making memory dumps vs. production runs. | |
• Memory dumps | .fmt/.base files for fast startup. + | |
• Memory dumps | .fmt/.base files for fast startup. | |
• Editor invocation | The ‘e’ response at errors. + | |
• Editor invocation | The ‘e’ response at errors. | |
• \input filenames | Filename delimiters and Kpathsea expansion. + | |
• \input filenames | Filename delimiters and Kpathsea expansion. |
+Next: Initial and virgin, Up: Three programs [Contents][Index]
+Besides the configure- and compile-time options described in the +installation section (see Installation), you can control a number +of parameters in the texmf.cnf runtime file read by Kpathsea +(see Config files in Kpathsea). +
+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: +
+Total words of memory available, for TeX, Metafont, and MetaPost. +Must remake the format file after changing. +
+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. +
+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 (https://gnu.org/s/libsigsegv) does +not seem worth the effort. +
+See Casefolding search in Kpathsea. +
+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. +
+-Next: Memory dumps, Up: Three programs [Contents][Index]
+Next: Memory dumps, Previous: Runtime options, Up: Three programs [Contents][Index]The TeX and Metafont programs each have two main variants, called @@ -1087,7 +1128,7 @@ memory dump file.
Next: Editor invocation, Previous: Initial and virgin, Up: Three programs [Contents][Index]
-Next: Determining the memory dump to use, Up: Memory dumps [Contents][Index]
-Next: Hardware and memory dumps, Previous: Creating memory dumps, Up: Memory dumps [Contents][Index]
-Previous: Determining the memory dump to use, Up: Memory dumps [Contents][Index]
-Next: \input filenames, Previous: Memory dumps, Up: Three programs [Contents][Index]
-Specifying ‘--with-editor=cmd’ to configure
sets the
default editor command string to cmd. The environment
variables/configuration values TEXEDIT
, MFEDIT
, and
@@ -1328,7 +1370,7 @@ and ‘%s’ is replaced by the name of the current input f
Previous: Editor invocation, Up: Three programs [Contents][Index]
-\input
filenames\input
filenames"
However, for maximal portability of your document across systems, use -only the characters ‘a’–‘z’, ‘0’–‘9’, and -‘.’. Do not use anything but simple filenames, since directory -separators vary among systems; instead, add the necessary directories -to the appropriate search path. +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.
• Quotes | \input "some name"
@@ -1385,7 +1427,7 @@ to the appropriate search path.
Next: \input braced filename, Up: \input filenames [Contents][Index] -3.5.4.1
+ | |
• IPC and TeX | DVI output to a socket. | |
• TeX extensions | Changes to the TeX language. + | |
• TeX extensions | Additional engines with additional features. |
Next: Initial TeX, Up: TeX [Contents][Index]
-tex
invocationtex
invocationEnable encTeX extensions, such as \mubyte
. This can be used
-to support Unicode UTF-8 input encoding. See
+to support the Unicode UTF-8 input encoding, although using an engine
+with native Unicode support is more common nowadays.
http://www.olsak.net/enctex.html.
Next: Formats, Previous: tex invocation, Up: TeX [Contents][Index]
-Next: Languages and hyphenation, Previous: Initial TeX, Up: TeX [Contents][Index]
-fmts
Make variable; by default,
only the ‘plain’ and ‘latex’ formats are made.
-You can get the latest versions of most of these formats from the CTAN -archives in subdirectories of CTAN:/macros (for CTAN info, -see unixtex.ftp in Kpathsea). The archive -ftp://ftp.tug.org/tex/lib.tar.gz (also available from CTAN) -contains most of these formats (although perhaps not the absolute latest -version), among other things. +
Nowadays, the formats are generally installed and updated as part of a +larger TeX distribution, such as TeX Live +(https://tug.org/texlive).
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 10pt Computer Modern -italic font”. The LaTeX home page: http://www.latex-project.org. +
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: https://www.latex-project.org.
ConTeXt is an independent macro package which has a basic document +
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: @@ -1858,10 +1900,10 @@ other interesting features. The ConTeXt home page:
The official typesetting system of the American Mathematical Society. Like LaTeX, it encourages generic markup commands. The AMS also -provides many LaTeX package for authors who prefer LaTeX. Taken +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: -http://www.ams.org/tex. +https://www.ams.org/tex.
An obsolete LaTeX 2.09 format for making slides. It is replaced by -the ‘slides’ document class, along with the ‘beamer’, -‘texpower’, and other packages. +the ‘slides’ document class, although the ‘beamer’ package +is the most commonly method for making slides nowadays. The Beamer +page on CTAN: https://ctan.org/pkg/beamer.
Next: TCX files, Up: Languages and hyphenation [Contents][Index]
-Multi-lingual TeX (mltex
) is an extension of TeX originally
written by Michael Ferguson and now updated and maintained by Bernd
-Raichle. It 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
+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.
+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
@@ -1970,7 +2019,7 @@ Aside from these, MLTeX is completely compatible with standard TeX.
Next: \tracingcharsubdef, Up: MLTeX [Contents][Index]
-\charsubdef
: Character substitutions\charsubdef
: Character substitutionsPrevious: \charsubdef, Up: MLTeX [Contents][Index]
-\tracingcharsubdef
: Substitution diagnostics\tracingcharsubdef
: Substitution diagnosticsNext: patgen invocation, Previous: MLTeX, Up: Languages and hyphenation [Contents][Index]
-Previous: TCX files, Up: Languages and hyphenation [Contents][Index]
-Next: IPC and TeX, Previous: Languages and hyphenation, Up: TeX [Contents][Index]
-TeX can execute shell escapes, that is, arbitrary shell commands. Although tremendously useful, this also has obvious @@ -2353,7 +2403,7 @@ considered untrustworthy, shell escapes should be completely disabled.
Next: TeX extensions, Previous: Shell escapes, Up: TeX [Contents][Index]
-Previous: IPC and TeX, Up: TeX [Contents][Index]
-Adds many new primitives, including right-to-left typesetting and more -registers. Now frozen. +registers. Now frozen. More info: https://ctan.org/pkg/etex.
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: https://ctan.org/pkg/aleph, https://ctan.org/pkg/omega.
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. Home
-page: http://pdftex.org.
+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:
+http://pdftex.org.
Based on pdfTeX, this also embeds the Lua programming language -(http://lua.org) and opens up the TeX typesetting engine to -control from Lua. Home page: http://luatex.org. + + + + +
Embeds the Lua programming language (http://lua.org) 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: http://luatex.org.
Combines support for Unicode input and OpenType- and system fonts -with the capabilities of pdfTeX. -Home page: http://tug.org/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: https://tug.org/xetex. +
+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: https://ctan.org/pkg/ptex, +https://ctan.org/pkg/uptex. +
+Further extends pTeX and upTeX with the e-TeX extensions. +More info: https://ctan.org/pkg/eptex, +https://ctan.org/pkg/euptex.
Next: MetaPost, Previous: TeX, Up: Top [Contents][Index]
-Next: Initial Metafont, Up: Metafont [Contents][Index]
-mf
invocationmf
invocationNext: Online Metafont graphics, Previous: Initial Metafont, Up: Metafont [Contents][Index]
-Next: gftodvi invocation, Previous: Modes, Up: Metafont [Contents][Index]
-Next: mft invocation, Previous: Online Metafont graphics, Up: Metafont [Contents][Index]
-Previous: gftodvi invocation, Up: Metafont [Contents][Index]
-Next: BibTeX, Previous: Metafont, Up: Top [Contents][Index]
-MetaPost is a picture-drawing language similar to Metafont (see Metafont), but instead of outputting bitmaps in a “font”, it outputs PostScript commands. It’s primarily intended for creating -technical illustrations. +technical illustrations, but can also be used to create PostScript or +OpenType fonts (https://ctan.org/pkg/metatype1).
+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. @@ -3116,34 +3200,28 @@ supported) and a number of other subsidiary programs, described below.
Next: Initial MetaPost, Up: MetaPost [Contents][Index]
-mpost
invocationmpost
invocationMetaPost (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. See
-also:
-
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 exactly analogous to Metafont and TeX (see tex
invocation, and see Memory dumps).
+
MetaPost processes its command line and determines its memory dump
+(mem) file in a way analogous to Metafont and TeX (see tex
invocation, and see Memory dumps).
Synopses:
Next: dvitomp invocation, Previous: mpost invocation, Up: MetaPost [Contents][Index]
Previous: Initial MetaPost, Up: MetaPost [Contents][Index]
-Next: WEB, Previous: MetaPost, Up: Top [Contents][Index]
-Next: Basic BibTeX style files, Up: BibTeX [Contents][Index]
-Previous: bibtex invocation, Up: BibTeX [Contents][Index]
-Next: DVI utilities, Previous: BibTeX, Up: Top [Contents][Index]
-Next: weave invocation, Up: WEB [Contents][Index]
-Next: pooltype invocation, Previous: tangle invocation, Up: WEB [Contents][Index]
-Previous: weave invocation, Up: WEB [Contents][Index]
-Next: Font utilities, Previous: WEB, Up: Top [Contents][Index]
-Next: dvitype invocation, Up: DVI utilities [Contents][Index]
-Previous: dvicopy invocation, Up: DVI utilities [Contents][Index]
-Up: dvitype invocation [Contents][Index]
-As an example of the output from DVItype (see section above), here is @@ -4043,7 +4121,7 @@ STORY]
’ and the ‘[ 1]’.Next: Legalisms, Previous: DVI utilities, Up: Top [Contents][Index]
-Next: gftopk invocation, Up: Font utilities [Contents][Index]
-Next: pktogf invocation, Previous: Font file formats, Up: Font utilities [Contents][Index]
-Next: pktype invocation, Previous: gftopk invocation, Up: Font utilities [Contents][Index]
-Next: gftype invocation, Previous: pktogf invocation, Up: Font utilities [Contents][Index]
-Next: tftopl invocation, Previous: pktype invocation, Up: Font utilities [Contents][Index]
-Next: pltotf invocation, Previous: gftype invocation, Up: Font utilities [Contents][Index]
-Next: vftovp invocation, Previous: tftopl invocation, Up: Font utilities [Contents][Index]
-Next: vptovf invocation, Previous: pltotf invocation, Up: Font utilities [Contents][Index]
-Next: Font utilities available elsewhere, Previous: vftovp invocation, Up: Font utilities [Contents][Index]
-Previous: vptovf invocation, Up: Font utilities [Contents][Index]
-ps2pk
, from
PostScript Type 1 font format conversion (i.e., between PFA and PFB
-formats): http://www.lcdf.org/type.
-
-mftrace
In general, each file has its own copyright notice stating the copying permissions for that file. Following is a summary.
-The Web2c system itself and most of the original WEB source files are -public domain. -
-tex.web, the MLTeX code, mf.web, and bibtex.web, -are copyrighted by their authors. They may be copied verbatim, but may -be modified only through a .ch file. -
-MetaPost-related files, including mp.web itself, are copyrighted -under X-like terms; the precise notice is included below. -
-Finally, the Kpathsea library is covered by the GNU Lesser General -Public License (see Introduction in Kpathsea). Therefore, -the binaries resulting from a standard Web2c compilation are also +
The Stanford TeX programs and Web2c system itself are in the public +domain (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 .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 https://www.gnu.org/licenses/#GPL +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 (see Introduction in Kpathsea). 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 the file LGPL for complete details on the LGPL. -
-The following notice must be included by the terms of the MetaPost -copyright. -
--- - +binaries. See https://gnu.org/licenses/#LGPL or the file +kpathsea/COPYING.LESSERv2. +Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that the copyright notice and this permission notice and warranty -disclaimer appear in supporting documentation, and that the names of -AT&T Bell Laboratories or any of its entities not be used in advertising -or publicity pertaining to distribution of the software without -specific, written prior permission. -
-AT&T disclaims all warranties with regard to this software, including -all implied warranties of merchantability and fitness. In no event -shall AT&T be liable for any special, indirect or consequential damages -or any damages whatsoever resulting from loss of use, data or profits, -whether in an action of contract, negligence or other tortious action, -arising out of or in connection with the use or performance of this -software. -
@@ -5000,10 +5053,11 @@ Next: Index, Previous: Introduction in Dvips. -
-change=chfile
:-charcode-format=type
:-charcode-format=type
:-cnf-line
:-D compiler options
:-disable-write18
:-dpi=real
:beamer, package
:beginfig
:BIBINPUTS, search path for bib files
:configure --with/--enable options
:CONTENTS.tex
:eoc GF command
:epsf
:etex for MetaPost labels
:etex is pdfTeX
:expand_depth
:\input
filenames:extra_mem_bot
:fontforge
:fontinst, for creating virtual fonts
:fontutils
:font_mem_size
:formats Make target
:hash_extra
:headerbyte information
:libsigsegv library
:LIG property
:modes.mf recommended modes file
:mode_def
:mode_setup
:MPEDIT
:mpgraph.ps
:mpman.ps
:mpgraph.pdf
:mpman.pdf
:mpost
:mpost, reason for name change
:mpout
:output_comment for DVI files
:ps2pk
:psfonts.map, read by MetaPost
:pxtoch
:write
:\openout
:siam.bst
:SIGSEGV
:system C library function
:tangle
:TCX character translation files
:tek
:texfonts.map
:texmf.cnf
:texmf.cnf
:texmf.cnf for editors
:texmf.cnf for shell escapes
:texmfmp.c
:TEXMFOUTPUT, used for reading
:TEXMFOUTPUT, used if ‘.’ unwritable
:texmf_casefold_search
:texput
:tripman.tex
:triptrap Make target
:troff, supported in MetaPost
:uniterm
:unsrt.bst
: