Free Programming Books

6 Excellent Free Books to Learn TeX

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
JavaGeneral-purpose, concurrent, class-based, object-oriented, high-level language
CGeneral-purpose, procedural, portable, high-level language
PythonGeneral-purpose, structured, powerful language
C++General-purpose, portable, free-form, multi-paradigm language
C#Combines the power and flexibility of C++ with the simplicity of Visual Basic
JavaScriptInterpreted, prototype-based, scripting language
PHPPHP has been at the helm of the web for many years
HTMLHyperText Markup Language
SQLAccess and manipulate data held in a relational database management system
RubyGeneral purpose, scripting, structured, flexible, fully object-oriented language
AssemblyAs close to writing machine code without writing in pure hexadecimal
SwiftPowerful and intuitive general-purpose programming language
GroovyPowerful, optionally typed and dynamic language
GoCompiled, statically typed programming language
PascalImperative and procedural language designed in the late 1960s
PerlHigh-level, general-purpose, interpreted, scripting, dynamic language
RDe facto standard among statisticians and data analysts
COBOLCommon Business-Oriented Language
ScalaModern, object-functional, multi-paradigm, Java-based language
FortranThe first high-level language, using the first compiler
ScratchVisual programming language designed for 8-16 year-old children
LuaDesigned as an embeddable scripting language
LogoDialect of Lisp that features interactivity, modularity, extensibility
RustIdeal for systems, embedded, and other performance critical code
LispUnique features - excellent to study programming constructs
AdaALGOL-like programming language, extended from Pascal and other languages
HaskellStandardized, general-purpose, polymorphically, statically typed language
SchemeA general-purpose, functional language descended from Lisp and Algol
PrologA general purpose, declarative, logic programming language
ForthImperative stack-based programming language
ClojureDialect of the Lisp programming language
JuliaHigh-level, high-performance language for technical computing
AwkVersatile language designed for pattern scanning and processing language
CoffeeScriptTranscompiles into JavaScript inspired by Ruby, Python and Haskell
BASICBeginner’s All-purpose Symbolic Instruction Code
ErlangGeneral-purpose, concurrent, declarative, functional language
VimLPowerful scripting language of the Vim editor
OCamlThe main implementation of the Caml language
ECMAScriptBest known as the language embedded in web browsers
BashShell and command language; popular both as a shell and a scripting language
LaTeXProfessional document preparation system and document markup language
TeXMarkup and programming language - create professional quality typeset text
ArduinoInexpensive, flexible, open source microcontroller platform
TypeScriptStrict syntactical superset of JavaScript adding optional static typing
ElixirRelatively new functional language running on the Erlang virtual machine
F#Uses functional, imperative, and object-oriented programming methods
TclDynamic language based on concepts of Lisp, C, and Unix shells
FactorDynamic stack-based programming language
EiffelObject-oriented language designed by Bertrand Meyer
AgdaDependently typed functional language based on intuitionistic Type Theory
IconWide variety of features for processing and presenting symbolic data
XMLRules for defining semantic tags describing structure ad meaning
ValaObject-oriented language, syntactically similar to C#
Standard MLGeneral-purpose functional language characterized as "Lisp with types"
DGeneral-purpose systems programming language with a C-like syntax
Share this article

Share your Thoughts

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