Programming Books

6 Excellent Free Books to Learn TeX

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 ImpatientTeX 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.

Read the book

2. Making TeX Work by Norman Walsh

Making TeX WorkMaking 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.

Read the book

3. TeX by Topic by Victor Eijkhout

TeX by Topic

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.

Read the book

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
AdaALGOL-like programming language, extended from Pascal and other languages
AgdaDependently typed functional language based on intuitionistic Type Theory
ArduinoInexpensive, flexible, open source microcontroller platform
AssemblyAs close to writing machine code without writing in pure hexadecimal
AwkVersatile language designed for pattern scanning and processing language
BashShell and command language; popular both as a shell and a scripting language
BASICBeginner’s All-purpose Symbolic Instruction Code
CGeneral-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
ClojureDialect of the Lisp programming language
ClojureScriptCompiler for Clojure that targets JavaScript
COBOLCommon Business-Oriented Language
CoffeeScriptTranscompiles into JavaScript inspired by Ruby, Python and Haskell
CoqDependently typed language similar to Agda, Idris, F* and others
CrystalGeneral-purpose, concurrent, multi-paradigm, object-oriented language
CSSCSS (Cascading Style Sheets) specifies a web page’s appearance
DGeneral-purpose systems programming language with a C-like syntax
DartClient-optimized language for fast apps on multiple platforms
DylanMulti-paradigm language supporting functional and object-oriented coding
ECMAScriptBest known as the language embedded in web browsers
EiffelObject-oriented language designed by Bertrand Meyer
ElixirRelatively new functional language running on the Erlang virtual machine
ErlangGeneral-purpose, concurrent, declarative, functional language
F#Uses functional, imperative, and object-oriented programming methods
FactorDynamic stack-based programming language
ForthImperative stack-based programming language
FortranThe first high-level language, using the first compiler
GoCompiled, statically typed programming language
GroovyPowerful, optionally typed and dynamic language
HaskellStandardized, general-purpose, polymorphically, statically typed language
HTMLHyperText Markup Language
IconWide variety of features for processing and presenting symbolic data
JArray programming language based primarily on APL
JavaGeneral-purpose, concurrent, class-based, object-oriented, high-level language
JavaScriptInterpreted, prototype-based, scripting language
JuliaHigh-level, high-performance language for technical computing
KotlinMore modern version of Java
LabVIEWDesigned to enable domain experts to build power systems quickly
LaTeXProfessional document preparation system and document markup language
LispUnique features - excellent to study programming constructs
LogoDialect of Lisp that features interactivity, modularity, extensibility
LuaDesigned as an embeddable scripting language
MarkdownPlain text formatting syntax designed to be easy-to-read and easy-to-write
Objective-CObject-oriented language that adds Smalltalk-style messaging to C
OCamlThe main implementation of the Caml language
PascalImperative and procedural language designed in the late 1960s
PerlHigh-level, general-purpose, interpreted, scripting, dynamic language
PHPPHP has been at the helm of the web for many years
PostScriptInterpreted, stack-based and Turing complete language
PrologA general purpose, declarative, logic programming language
PureScriptSmall strongly, statically typed language compiling to JavaScript
PythonGeneral-purpose, structured, powerful language
QMLHierarchical declarative language for user interface layout - JSON-like syntax
RDe facto standard among statisticians and data analysts
RacketGeneral-purpose, object-oriented, multi-paradigm, functional language
RakuMember of the Perl family of programming languages
RubyGeneral purpose, scripting, structured, flexible, fully object-oriented language
RustIdeal for systems, embedded, and other performance critical code
ScalaModern, object-functional, multi-paradigm, Java-based language
SchemeA general-purpose, functional language descended from Lisp and Algol
ScratchVisual programming language designed for 8-16 year-old children
SQLAccess and manipulate data held in a relational database management system
Standard MLGeneral-purpose functional language characterized as "Lisp with types"
SwiftPowerful and intuitive general-purpose programming language
TclDynamic language based on concepts of Lisp, C, and Unix shells
TeXMarkup and programming language - create professional quality typeset text
TypeScriptStrict syntactical superset of JavaScript adding optional static typing
ValaObject-oriented language, syntactically similar to C#
VHDLHardware description language used in electronic design automation
VimLPowerful scripting language of the Vim editor
XMLRules for defining semantic tags describing structure ad meaning
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments