Last Updated on July 8, 2023
TeX is a system for typesetting documents. It’s a powerful low-level markup and programming language that creates professional quality typeset text. The system was developed by Donald Knuth at Stanford University with the purpose of enabling anyone to generate high-quality books, and to develop a system that yields the same results whatever computer is used.
TeX has many strengths including its portability, flexibility, and the fact that it is free software. But being free would mean little if TeX was not highly proficient at typesetting professional looking mathematical and scientific text, complex documents, and handling multiple languages. TeX produces results equal in quality and appearance to those produced by the finest traditional typesetting systems.
TeX remains popular in academia, especially in mathematics, computer science, economics, engineering, physics, statistics, and quantitative psychology. At the time that TeX was released, it offered some innovative features.
Implementations of TeX exist for a wide variety of operating systems.
1. TeX for the Impatient by Paul W. Abrahams with Karl Berry, Kathryn A. Hargreaves
TeX for the Impatient is a handbook that arose from the need to help technical writers learn TeX more quickly and once having learned it, to find fast answers to common questions. The book contains tutorial and reference information on all features of both plain and primitive TeX.
Clear, concise, and accessible, this book is organized for easy retrieval of information, thoroughly indexed, and carefully designed for learning by example. The book is targeted at scientists, mathematicians, and technical typists.
The book covers the following topics:
- Using TeX – shows how to prepare an input file, and how TeX works.
- Examples – entering simple text, indentation, fonts and special characters, interline spacing, and more.
- Concepts.
- Commands for composing paragraphs – including characters and accents, selecting fonts, uppercase and lowercase, interword spacing, centering and justifying lines and more.
- Commands for composing pages – such as page breaks, page layout, insertions, and more.
- Commands for horizontal and vertical modes – producing space, manipulating boxes, retrieving the last item from a list, rules and leaders, and alignments.
- Commands for composing math formulas – simple parts of formulas, superscripts and subscripts, compound symbols, equation numbers, constructing math symbols, producing spaces and more.
- Commands for composing general operations – converting information to tokens, macros, registers, input and output, and more.
- Tips and techniques – such as correcting bad page breaks and line breaks, avoiding excess space around a display and after a paragraph, drawing lines and more.
- Making sense of error messages.
- A compendium of useful macros.
- Capsule summary of commands.
This book is released under the GNU Free Documentation License, Version 1.3 or any later version.
2. Making TeX Work by Norman Walsh
Making TeX Work provides comprehensive coverage of how to build, run, and use TeX to best advantage on your platform.
This book teaches the reader:
- How to assemble the software you need to build and install TeX on all common platforms: UNIX, DOS, Macintosh, and VMS.
- How to get TeX and its associated tools from public domain and commercial sources (a complete buyer’s guide).
- How to select and use the tools that let you incorporate graphics into your documents and create bibliographies, indices, and other complex document elements.
- How to install and use fonts to best advantage, including PostScript and TrueType fonts and LaTeX’s New Font Selection Scheme (NFSS).
Making TeX Work has been out of print for years. The publisher has released the book under the GNU Free Documentation License.
3. TeX by Topic by Victor Eijkhout
TeX by Topic – a TeXnician’s Reference is a manual designed to help the reader master the TeX typesetting language. It’s a companion to tutorial guides on the system. The book provides original, practical ideas, and is an invaluable information source that will give the TeX user the essential insight needed to solve TeX problems, write LaTeX macros, and other customizations of TeX.
It includes a thorough cross reference system.
This book provides a wealth of information on:
- The Structure of the TeX Processor – a global picture of the way TeX operates.
- Category Codes and Internal States – describes how TeX reads its input and how the category codes of characters influence the reading behaviour.
- Characters – treats character codes, and the commands that have access to them.
- Fonts – describes how fonts are identified to TeX, and what attributes a font can have.
- Boxes – treats box registers, aspects of boxes, and the way their components are placed relative to each other.
- Horizontal and Vertical Mode – looks at the horizontal and vertical modes, the kinds of objects that can occur in the corresponding lists, and the commands that are exclusive for one mode or the other.
- Numbers – covers integers and their denotations, conversions, allocation and use of \count registers, and arithmetic with integers.
- Dimensions and Glue – treats all technical concepts related to dimensions and glue, and explains how the badness of stretching or shrinking a certain amount is calculated.
- Rules and Leaders – explains how rules and leaders work, and how they interact with modes.
- Grouping – what sort of actions can be local, and how groups are formed.
- Macros – explains how TeX macros work.
- Expansion – explains the commands connected with expansion with examples.
- Conditionals – an inventory of the large repertoire of conditionals.
- Token Lists – the only type of data structure in TeX.
- Baseline Distances – treats the computation of interline glue.
- Paragraph Start – explains the sequence of actions and how TeX’s decisions can be altered.
- Paragraph End – explains the mechanism, and the role of \par.
- Paragraph Shape – discusses the parameters and commands that influence the shape of a paragraph.
- Line Breaking – treats line breaking and the concept of ‘badness’ that TeX uses to decide how to break a paragraph into lines, or where to break a page.
- Spacing – explains the rules by which TeX calculates interword space.
- Characters in Math Mode – explains the concept of math codes, and shows how TeX implements variable size delimiters.
- Fonts in Formulas – discusses how font families are organised, and how TeX determines from what families characters should be chosen.
- Mathematics Typesetting – looks at TeX’s two math modes and four styles.
- Display Math – explains how surrounding white space is calculated.
- Alignment – looks at the general alignment mechanism for making tables.
- Page Shape – treats some of the parameters that determine the size of the page and how it appears on paper.
- Page Breaking – examines the ‘page builder’.
- Output Routines – performs the final stages of page processing.
- Insertions – TeX’s way of handling floating information.
- File Input and Output – discusses the ways in which TeX can read from and write to external files.
- Allocation – treats the synonym and allocation commands, and discusses guidelines for macro writers regarding allocation.
- Running TeX – treats the run modes of TeX and other commands associated with the job being processed.
- TeX and the Outside World – dvi files, formats, IniTeX, font and format families, Computer Modern typefaces, and web.
- Errors, Catastrophes and Help.
- The Grammar of TeX.
- Glossary of TeX Primitives.
- Tables.
TeX by Topic has been released by the author under the GNU Free Documentation License, Version 1.2 or any later version.
Next page: Page 2 – A Gentle Introduction to TeX and more books
Pages in this article:
Page 1 – TeX for the Impatient and more books
Page 2 – A Gentle Introduction to TeX and more books
All books in this series:
Free Programming Books | |
---|---|
Ada | ALGOL-like programming language, extended from Pascal and other languages |
Agda | Dependently typed functional language based on intuitionistic Type Theory |
Arduino | Inexpensive, flexible, open source microcontroller platform |
Assembly | As close to writing machine code without writing in pure hexadecimal |
Awk | Versatile language designed for pattern scanning and processing language |
Bash | Shell and command language; popular both as a shell and a scripting language |
BASIC | Beginner’s All-purpose Symbolic Instruction Code |
C | General-purpose, procedural, portable, high-level language |
C++ | General-purpose, portable, free-form, multi-paradigm language |
C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
Clojure | Dialect of the Lisp programming language |
ClojureScript | Compiler for Clojure that targets JavaScript |
COBOL | Common Business-Oriented Language |
CoffeeScript | Transcompiles into JavaScript inspired by Ruby, Python and Haskell |
Coq | Dependently typed language similar to Agda, Idris, F* and others |
Crystal | General-purpose, concurrent, multi-paradigm, object-oriented language |
CSS | CSS (Cascading Style Sheets) specifies a web page’s appearance |
D | General-purpose systems programming language with a C-like syntax |
Dart | Client-optimized language for fast apps on multiple platforms |
Dylan | Multi-paradigm language supporting functional and object-oriented coding |
ECMAScript | Best known as the language embedded in web browsers |
Eiffel | Object-oriented language designed by Bertrand Meyer |
Elixir | Relatively new functional language running on the Erlang virtual machine |
Erlang | General-purpose, concurrent, declarative, functional language |
F# | Uses functional, imperative, and object-oriented programming methods |
Factor | Dynamic stack-based programming language |
Forth | Imperative stack-based programming language |
Fortran | The first high-level language, using the first compiler |
Go | Compiled, statically typed programming language |
Groovy | Powerful, optionally typed and dynamic language |
Haskell | Standardized, general-purpose, polymorphically, statically typed language |
HTML | HyperText Markup Language |
Icon | Wide variety of features for processing and presenting symbolic data |
J | Array programming language based primarily on APL |
Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
JavaScript | Interpreted, prototype-based, scripting language |
Julia | High-level, high-performance language for technical computing |
Kotlin | More modern version of Java |
LabVIEW | Designed to enable domain experts to build power systems quickly |
LaTeX | Professional document preparation system and document markup language |
Lisp | Unique features - excellent to study programming constructs |
Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
Lua | Designed as an embeddable scripting language |
Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
Objective-C | Object-oriented language that adds Smalltalk-style messaging to C |
OCaml | The main implementation of the Caml language |
Pascal | Imperative and procedural language designed in the late 1960s |
Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
PHP | PHP has been at the helm of the web for many years |
PostScript | Interpreted, stack-based and Turing complete language |
Prolog | A general purpose, declarative, logic programming language |
PureScript | Small strongly, statically typed language compiling to JavaScript |
Python | General-purpose, structured, powerful language |
QML | Hierarchical declarative language for user interface layout - JSON-like syntax |
R | De facto standard among statisticians and data analysts |
Racket | General-purpose, object-oriented, multi-paradigm, functional language |
Raku | Member of the Perl family of programming languages |
Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
Rust | Ideal for systems, embedded, and other performance critical code |
Scala | Modern, object-functional, multi-paradigm, Java-based language |
Scheme | A general-purpose, functional language descended from Lisp and Algol |
Scratch | Visual programming language designed for 8-16 year-old children |
SQL | Access and manipulate data held in a relational database management system |
Standard ML | General-purpose functional language characterized as "Lisp with types" |
Swift | Powerful and intuitive general-purpose programming language |
Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
TeX | Markup and programming language - create professional quality typeset text |
TypeScript | Strict syntactical superset of JavaScript adding optional static typing |
Vala | Object-oriented language, syntactically similar to C# |
VHDL | Hardware description language used in electronic design automation |
VimL | Powerful scripting language of the Vim editor |
XML | Rules for defining semantic tags describing structure ad meaning |