-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathhistory.tex
137 lines (124 loc) · 6.44 KB
/
history.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
\chapter{A Brief History of \texorpdfstring{\LaTeX}{LaTeX}}
\label{history}
Donald Knuth is a father of computer science,
famous for pioneering the \emph{analysis of algorithms}
and for his ongoing magnum opus,
\textit{The~Art of Computer Programming}.
When the first volume of \acronym{taocp} was released in 1968,
it was printed the way books had been since the turn of the century:
with \introduce{hot metal} type.
Letters were cast from molten lead,
then arranged into lines.
These lines were clamped together to form pages,
which were inked and pressed against paper.
In March of 1977, Knuth was ready for a second run of \acronym{taocp}, volume~2,
but he was horrified when he received proofs.
Working with hot metal was expensive, complicated, and time-consuming,
so publishers---including Knuth's---switched to phototypesetting,
a process that projects characters onto film instead.
The new technology, while cheaper and faster,
didn't provide the quality Knuth
expected.\punckern\endnote{Knuth, \textit{Digital Typography} (Stanford, 1999), 3--5}
The average author would have resigned themselves to this change and moved on,
but Knuth took great pride in his books' typography,
especially when it came to their mathematics.
Inspired by his recent introduction to the growing field of digital typesetting,
Knuth set off on one of the greatest yak shaves\footnote{Programmers
call seemingly-unrelated work needed to solve their main problem
``yak shaving''\quotekern. The phrase is thought to originate from an episode
of \textit{The Ren~\&~Stimpy Show}.\punckern\endnote{``yak shaving''\quotekern,
\textit{The Jargon File},
\href{http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html}%
{\texttt{www.catb.org/\~{}esr/jargon/html/Y/yak-shaving.html}}}}
of all time.
Setting aside his other work, he hammered on this problem for more than a year.
When the dust settled in 1978, Knuth introduced the world to
\TeX.\punckern\footnote{The name ``\TeX{}'' comes from the Greek
{\fontspec[Scale=MatchLowercase]{NotoSerif-Medium}τέχνη},
meaning \introduce{art} or \introduce{craft}.\punckern\endnote{Knuth,
\textit{The \TeX book}, 1}}
It's hard to appreciate how much of a revolution \TeX{} was,
especially looking back from today, where anybody with a web browser
can be their own desktop publisher.
Adobe's \acronym{pdf} wouldn't exist for another decade, so Knuth
and his graduate students devised their own device-independent document format,
\acronym{dvi}.
Scalable fonts were uncommon, so he created \MF{} to rasterize glyphs
into dots on the page.
Perhaps most importantly, Knuth and his students designed algorithms
to automatically hyphenate and justify text into
beautifully-typeset paragraphs.\punckern\footnote{These same algorithms went
on to influence the ones Adobe uses in its software today.\punckern\endnote{%
Several sources (\http{www.tug.org/whatis.html},
\https{tug.org/interviews/thanh.html},
\http{www.typophile.com/node/34620})
mention \TeX's influence on the \textit{hz}-program by Peter Karow
and Hermann Zapf, thanks to Knuth's collaborations with Zapf.
\textit{hz} was later acquired by Adobe and used
when creating InDesign's paragraph formatting systems.}}
\LaTeX{}, short for Lamport~\TeX{}, was developed by Leslie Lamport in the
early 1980s as a set of commands for common document layouts.
He introduced it with his guide,
\textit{\LaTeX: A~Document Preparation System},
in 1986.
Development continues today,
both in the form of user-provided packages for \TeX{} and \LaTeX{},
and as improvements to the \TeX{} typesetting program itself.
There are four versions, or \introduce{engines}:
\begin{description}
\item[\TeX] is the original system by Donald Knuth.
Knuth stopped adding features after version 3.0 in March~1990---%
subsequent releases contain only bug fixes.
With each release, the version number asymptotically approaches $\pi$
by adding an additional digit.
The most recent version, 3.141592653, came out in 2021.
\item[pdf\TeX] is an extension of \TeX{} that provides direct \acronym{pdf}
output,
native support for PostScript
and TrueType fonts,
and micro-typographic features discussed in \chapref{microtype}.
It was originally developed by
Hàn Thế Thành
as part of his PhD thesis
for Masaryk University in Brno, Czech Republic.\punckern\endnote{%
Hàn Thế Thành,
\textit{Micro-typographic extensions to the \TeX{} typesetting system}
(Masaryk University Brno, October 2000)}
\item[\XeTeX] is a further extension of \TeX{} that adds native support for
Unicode and OpenType.
It was originally developed by Jonathan Kew in the early 2000s,
and gained full cross-platform support in 2007.\punckern\endnote{Jonathan Kew,
``\XeTeX{} Live''\quotekern, \textit{TUGboat} 29, no.~1 (2007)}
\item[\LuaTeX] is similar to \XeTeX{} in its native Unicode and modern font support.
It also embeds the Lua scripting language into the engine,
exposing an interface for package and document authors.
It first appeared in 2007, developed by a core team of
Hans Hagen, Hartmut Henkel, Taco Hoekwater,
and Luigi Scarso.\punckern\endnote{\http{www.luatex.org}}
\end{description}
Building \TeX{} today is an\dots{} interesting endeavor.
When it was written in the late 1970s,
there were no large, well-documented, open-source projects for computer science
students to study,
so Knuth set out to make one.
As part of this effort, \TeX{} was written in a style he calls
\introduce{literate programming}: opposite most programs---where
documentation is interspersed throughout the code---Knuth wrote \TeX{} as a book,
with the code inserted between paragraphs.
This mix of English and code is called \texttt{WEB}.\punckern\footnote{Knuth
also released a pair of companion programs named
\texttt{TANGLE} and \texttt{WEAVE}.
The former extracts the book---as \TeX, of course---and the latter
produces \TeX's Pascal source code.}
Unfortunately, modern systems don't have good tooling for the 1970s
dialect of Pascal that \TeX{} was written in,
so present-day distributions use another program,
\texttt{web2c}, to convert its \texttt{WEB} source into C code.
pdf\TeX{} and \XeTeX{} are built by combining the result with other C
and \cpp{} sources.
As an alternative to this complicated approach,
the \LuaTeX{} authors hand-translated Knuth's Pascal into C.
They have used the resulting code since 2009.\punckern\endnote{%
Taco Hoekwater, \textit{\LuaTeX{} says goodbye to Pascal}
(MAPS 39, Euro\TeX{} 2009),
\https{www.tug.org/TUGboat/tb30-3/tb96hoekwater-pascal.pdf}}