/[texlive]/trunk/Master/texmf-dist/doc/texlive/texlive-en/texlive-en.tex
ViewVC logotype

Contents of /trunk/Master/texmf-dist/doc/texlive/texlive-en/texlive-en.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 60536 - (show annotations) (download) (as text)
Sat Sep 18 14:30:27 2021 UTC (4 weeks, 4 days ago) by karl
File MIME type: application/x-tex
File size: 169163 byte(s)
more clues about PATH setting
1 % $Id$
2 % TeX Live documentation. Originally written by Sebastian Rahtz and
3 % Michel Goossens, now maintained by Karl Berry and others.
4 % Public domain.
5 %
6 \documentclass{article}
7 \let\tldocenglish=1 % for live4ht.cfg
8 \usepackage{tex-live}
9 \usepackage[latin1]{inputenc} % translators: use your preferred encodings.
10 \usepackage[T1]{fontenc}
11
12 \title{%
13 {\huge \textit{The \TeX\ Live Guide---2021}}
14 }
15
16 \author{Karl Berry, editor \\[3mm]
17 \url{https://tug.org/texlive/}
18 }
19
20 \date{September 2021}
21
22 \begin{document}
23 \maketitle
24
25 \begin{multicols}{2}
26 \tableofcontents
27 %\listoftables
28 \end{multicols}
29
30 \section{Introduction}
31 \label{sec:intro}
32
33 \subsection{\protect\TeX\protect\ Live and the \protect\TeX\protect\ Collection}
34
35 This document describes the main features of the \TL{} software
36 distribution\Dash \TeX{} and related programs for \GNU/Linux
37 and other Unix flavors, \MacOSX, and Windows systems.
38
39 You may have acquired \TL{} by downloading, or on the \TK{} \DVD, which
40 \TeX{} user groups distribute among their members, or in other ways.
41 Section \ref{sec:tl-coll-dists} briefly describes the contents of the
42 \DVD. Both \TL{} and the \TK{} are cooperative efforts by the \TeX{}
43 user groups. This document mainly describes \TL{} itself.
44
45 \TL{} includes executables for \TeX{}, \LaTeXe{}, \ConTeXt,
46 \MF, \MP, \BibTeX{} and many other programs; an extensive collection
47 of macros, fonts and documentation; and support for typesetting in
48 many different scripts from around the world.
49
50 For a brief summary of the major changes in this edition of \TL{},
51 see the end of the document, section~\ref{sec:history}
52 (\p.\pageref{sec:history}).
53
54
55 \htmlanchor{platforms}
56 \subsection{Operating system support}
57 \label{sec:os-support}
58
59 \TL{} contains binaries for many Unix-based platforms, including
60 \GNU/Linux, \MacOSX, and Cygwin. The included sources can be compiled
61 on platforms for which we do not provide binaries.
62
63 As to Windows: Windows~7 and later are supported. Windows Vista
64 may still mostly work, but \TL{} will no longer even install on Windows
65 XP or earlier. \TL{} includes no
66 64-bit executables for Windows, but the 32-bit executables should
67 run on 64-bit systems. But see
68 \url{https://tug.org/texlive/windows.html} for options to add
69 64-bit binaries.
70
71 See section~\ref{sec:tl-coll-dists} for alternate solutions
72 for Windows and \MacOSX.
73
74 \subsection{Basic installation of \protect\TL{}}
75 \label{sec:basic}
76
77 You can install \TL{} either from \DVD{} or over the Internet
78 (\url{https://tug.org/texlive/acquire.html}). The net installer itself is
79 small, and downloads everything requested from the Internet.
80
81 The \DVD{} installer lets you install to a local disk. You cannot run
82 \TL{} directly from the \TK{} \DVD{} (or its \code{.iso} image), but you
83 can prepare a runnable installation on, e.g., a \USB{} stick (see
84 section~\ref{sec:portable-tl}). Installation is described in later
85 sections (\p.\pageref{sec:install}), but here is a quick start:
86
87 \begin{itemize*}
88
89 \item For Unix, the installation script is \filename{install-tl}; on
90 Windows, one should instead invoke \filename{install-tl-windows}.
91 The installer will operate in a graphical mode given the option
92 \code{-gui} (default for Windows and \MacOSX), or a text mode given
93 the option \code{-gui=text} (default for everything else).
94
95 \item One of the installed items is the `\TL\ Manager' program,
96 named \prog{tlmgr}. Like the installer, it can be used in both \GUI{}
97 mode and in text mode. You can use it to install and uninstall
98 packages and do various configuration tasks.
99
100 \end{itemize*}
101
102
103 \htmlanchor{security}
104 \subsection{Security considerations}
105 \label{sec:security}
106
107 To the best of our knowledge, the core \TeX\ programs themselves are
108 (and always have been) extremely robust. However, the contributed
109 programs in \TeX\ Live may not reach the same level, despite everyone's
110 best efforts. As always, you should be careful when running programs on
111 untrusted input; to improve safety, use a new subdirectory or chroot.
112
113 This need for care is especially urgent on Windows, since in general
114 Windows finds programs in the current directory before anything else,
115 regardless of the search path. This opens up a wide variety of possible
116 attacks. We have closed many holes, but undoubtedly some remain,
117 especially with third-party programs. Thus, we recommend checking for
118 suspicious files in the current directory, especially executables
119 (binaries or scripts). Ordinarily they should not be present, and
120 definitely should not normally be created by merely processing a document.
121
122 Finally, \TeX\ (and its companion programs) are able to write files when
123 processing documents, a feature that can also be abused in a wide
124 variety of ways. Again, processing unknown documents in a new
125 subdirectory is the safest bet.
126
127 Another aspect of security is ensuring that downloaded material has not
128 been changed from what was created. The \prog{tlmgr} program
129 (section~\ref{sec:tlmgr}) will automatically perform cryptographic
130 verification on downloads if the \prog{gpg} (GNU Privacy Guard) program
131 is available. It is not distributed as part of \TL, but see
132 \url{https://texlive.info/tlgpg/} for information about \prog{gpg} if
133 need be.
134
135 \subsection{Getting help}
136 \label{sec:help}
137
138 The \TeX{} community is active and friendly, and most serious questions
139 end up getting answered. However, the support is informal, done by
140 volunteers and casual users, so it's especially important that you do
141 your homework before asking. (If you prefer guaranteed commercial
142 support, you can forgo \TL{} completely and purchase a vendor's system;
143 \url{https://tug.org/interest.html#vendors} has a list.)
144
145 Here is a list of resources, approximately in the order we recommend
146 using them:
147
148 \begin{description}
149 \item [Getting started] If you are new to \TeX, the web page
150 \url{https://tug.org/begin.html} gives a brief introduction to the system.
151
152 \item [\TeX{} FAQ] The \TeX{} FAQ is a huge compendium
153 of answers to all sorts of questions, from the most basic to the
154 most arcane. It is included on \TL{} in
155 \OnCD{texmf-dist/doc/generic/FAQ-en/}, and is available
156 on the Internet through \url{https://texfaq.org}. Please
157 check here first.
158
159 \item [\TeX{} Catalogue] If you are looking for a particular package,
160 font, program, etc., the \TeX{} Catalogue is the place to look. It is a
161 huge collection of all \TeX{}-related items. See
162 \url{https://ctan.org/pkg/catalogue}.
163
164 \item [\TeX{} Web Resources] The web page
165 \url{https://tug.org/interest.html} has many \TeX{}-related links, in
166 particular for numerous books, manuals, and articles on all aspects of
167 the system.
168
169 \item [support archives] Principal support forums for \TeX\ include
170 the \LaTeX{} community site at \url{https://latex.org}, the
171 q\&a site \url{https://tex.stackexchange.com}, the Usenet newsgroup
172 \url{news:comp.text.tex}, and the mailing list \email{texhax@tug.org}.
173 Their archives have years of past questions and answers for your
174 searching pleasure, via, for the latter two,
175 \url{http://groups.google.com/group/comp.text.tex/topics} and
176 \url{https://tug.org/mail-archives/texhax}. And a general web search
177 never hurts.
178
179 \item [asking questions] If you cannot find an answer, you can post to
180 \url{http://latex-community.org/} and
181 \url{https://tex.stackexchange.com/} through their web interfaces, to
182 \dirname{comp.text.tex} through Google or your newsreader, or to
183 \email{texhax@tug.org} through email. But before you post anywhere,
184 please read this FAQ entry, to maximize your chances of getting a useful
185 answer:
186 \url{https://texfaq.org/FAQ-askquestion}.
187
188 \item [\TL{} support] If you want to report a bug or have
189 suggestions or comments on the \TL{} distribution, installation, or
190 documentation, the mailing list is \email{tex-live@tug.org}. However,
191 if your question is about how to use a particular program included in
192 \TL{}, please write to that program's maintainer or
193 mailing list. Often running a program with the \code{-{}-help} option
194 will provide a bug reporting address.
195
196 \end{description}
197
198 The other side of the coin is helping others who have questions. All
199 the above resources are open to anyone, so feel free to join, start
200 reading, and help out where you can.
201
202
203 % don't use \TL so the \uppercase in the headline works. Also so
204 % tex4ht ends up with the right TeX. Likewise the \protect's.
205 \section{Overview of \protect\TeX\protect\ Live}
206 \label{sec:overview-tl}
207
208 This section describes the contents of \TL{} and the \TK{} of which it
209 is a part.
210
211 \subsection{The \protect\TeX\protect\ Collection: \protect\TL,
212 pro\protect\TeX{}t, Mac\protect\TeX}
213 \label{sec:tl-coll-dists}
214
215 The \TK{} \DVD{} comprises the following:
216
217 \begin{description}
218
219 \item [\TL] A complete \TeX{} system to be installed to disk. Home
220 page: \url{https://tug.org/texlive/}.
221
222 \item [Mac\TeX] for \MacOSX\ (currently named macOS by Apple, but we
223 continue to use the older name in this document), this adds a native
224 \MacOSX\ installer and other Mac applications to \TL{}. Home page:
225 \url{https://tug.org/mactex/}.
226
227 \item [pro\TeX{}t] An enhancement of the \MIKTEX\ distribution for Windows,
228 \ProTeXt\ adds a few extra tools to \MIKTEX, and simplifies
229 installation. It is entirely independent of \TL{}, and has its own
230 installation instructions. Home page:
231 \url{https://tug.org/protext/}.
232
233 \item [CTAN] A snapshot of the \CTAN{} repository (\url{https://ctan.org/}).
234
235 \end{description}
236
237 \CTAN{} and \pkgname{protext} do not follow the same copying conditions
238 as \TL{}, so be careful when redistributing or modifying.
239
240
241 \subsection{Top level \protect\TL{} directories}
242 \label{sec:tld}
243
244 Here is a brief listing and description of the top level directories in a
245 \TL{} installation.
246
247 \begin{ttdescription}
248 \item[bin] The \TeX{} system programs, arranged by platform.
249 %
250 \item[readme-*.dir] Quick overview and useful links for \TL{},
251 in various languages, in both \HTML{} and plain text.
252 %
253 \item[source] The source to all included programs, including the main
254 \Webc{}-based \TeX{} distributions.
255 %
256 \item[texmf-dist] The principal tree; see \dirname{TEXMFDIST} below.
257 %
258 \item[tlpkg] Scripts, programs and data for managing the
259 installation, and special support for Windows.
260 \end{ttdescription}
261
262 For documentation, the comprehensive links in the top-level file
263 \OnCD{doc.html} may be helpful. The documentation for nearly everything
264 (packages, formats, fonts, program manuals, man pages, Info files) is in
265 \dirname{texmf-dist/doc}. You can use the \cmdname{texdoc} program to
266 find documentation wherever it is located.
267
268 This \TL\ documentation itself is in \dirname{texmf-dist/doc/texlive},
269 available in several languages:
270
271 \begin{itemize*}
272 \item{Czech/Slovak:} \OnCD{texmf-dist/doc/texlive/texlive-cz}
273 \item{German:} \OnCD{texmf-dist/doc/texlive/texlive-de}
274 \item{English:} \OnCD{texmf-dist/doc/texlive/texlive-en}
275 \item{French:} \OnCD{texmf-dist/doc/texlive/texlive-fr}
276 \item{Italian:} \OnCD{texmf-dist/doc/texlive/texlive-it}
277 \item{Japanese:} \OnCD{texmf-dist/doc/texlive/texlive-ja}
278 \item{Polish:} \OnCD{texmf-dist/doc/texlive/texlive-pl}
279 \item{Russian:} \OnCD{texmf-dist/doc/texlive/texlive-ru}
280 \item{Serbian:} \OnCD{texmf-dist/doc/texlive/texlive-sr}
281 \item{Simplified Chinese:} \OnCD{texmf-dist/doc/texlive/texlive-zh-cn}
282 \end{itemize*}
283
284 \subsection{Overview of the predefined texmf trees}
285 \label{sec:texmftrees}
286
287 This section lists the predefined variables specifying the texmf trees
288 used by the system, and their intended purpose, and the default layout
289 of \TL{}. The command \texttt{tlmgr~conf} shows the values of these
290 variables, so that you can easily find out how they map to particular
291 directories in your installation.
292
293 All of the trees, including the personal ones, should follow the \TeX\
294 Directory Structure (\TDS, \url{https://tug.org/tds}), with all its
295 myriad subdirectories, or files may not be found. Section
296 \ref{sec:local-personal-macros} (\p.\pageref{sec:local-personal-macros})
297 describes this in more detail. The order here is the reverse order in
298 which the trees are searched, that is, later trees in the list override
299 earlier ones.
300
301 \begin{ttdescription}
302 \item [TEXMFDIST] The tree which holds nearly all of the files in the original
303 distribution---configuration files, scripts, packages, fonts, etc.
304 (The main exception are the per-platform executables, which are stored
305 in a sibling directory \code{bin/}.)
306 \item [TEXMFSYSVAR] The (site-wide) tree used by \verb+texconfig-sys+,
307 \verb+updmap-sys+ and \verb+fmtutil-sys+, and also by \verb+tlmgr+, to
308 store (cached) runtime data such as format files and generated map files.
309 \item [TEXMFSYSCONFIG] The (site-wide) tree used by the utilities
310 \verb+texconfig-sys+, \verb+updmap-sys+, and \verb+fmtutil-sys+ to
311 store modified configuration data.
312 \item [TEXMFLOCAL] The tree which administrators can use for system-wide
313 installation of additional or updated macros, fonts, etc.
314 \item [TEXMFHOME] The tree which users can use for their own individual
315 installations of additional or updated macros, fonts, etc.
316 The expansion of this variable dynamically adjusts for each user to
317 their own individual directory.
318 \item [TEXMFVAR] The (personal) tree used by \verb+texconfig+,
319 \verb+updmap-user+ and \verb+fmtutil-user+ to store (cached) runtime data such
320 as format files and generated map files.
321 \item [TEXMFCONFIG] The (personal) tree used by the utilities
322 \verb+texconfig+, \verb+updmap-sys+, and \verb+fmtutil-sys+ to store modified
323 configuration data.
324 \item [TEXMFCACHE] The tree(s) used by \ConTeXt\ MkIV and Lua\LaTeX\
325 to store (cached) runtime data; defaults to \code{TEXMFSYSVAR},
326 or (if that's not writable), \code{TEXMFVAR}.
327 \end{ttdescription}
328
329 \noindent
330 The default layout is:
331 \begin{description}
332 \item[system-wide root] can span multiple \TL{} releases
333 (\texttt{/usr/local/texlive} by default on Unix):
334 \begin{ttdescription}
335 \item[2020] A previous release.
336 \item[2021] The current release.
337 \begin{ttdescription}
338 \item [bin] ~
339 \begin{ttdescription}
340 \item [i386-linux] \GNU/Linux binaries (32-bit)
341 \item [...]
342 \item [universal-darwin] \MacOSX\ binaries
343 \item [x86\_64-linux] \GNU/Linux binaries (64-bit)
344 \item [win32] Windows binaries
345 \end{ttdescription}
346 \item [texmf-dist\ \ ] \envname{TEXMFDIST} and \envname{TEXMFMAIN}
347 \item [texmf-var \ \ ] \envname{TEXMFSYSVAR}, \envname{TEXMFCACHE}
348 \item [texmf-config] \envname{TEXMFSYSCONFIG}
349 \end{ttdescription}
350 \item [texmf-local] \envname{TEXMFLOCAL}, intended to be
351 retained from release to release.
352 \end{ttdescription}
353 \item[user's home directory] (\texttt{\$HOME} or
354 \texttt{\%USERPROFILE\%})
355 \begin{ttdescription}
356 \item[.texlive2020] Privately generated and configuration data
357 for a previous release.
358 \item[.texlive2021] Privately generated and configuration data
359 for the current release.
360 \begin{ttdescription}
361 \item [texmf-var\ \ \ ] \envname{TEXMFVAR}, \envname{TEXMFCACHE}
362 \item [texmf-config] \envname{TEXMFCONFIG}
363 \end{ttdescription}
364 \item[texmf] \envname{TEXMFHOME} Personal macros, etc.
365 \end{ttdescription}
366 \end{description}
367
368
369 \subsection{Extensions to \protect\TeX}
370 \label{sec:tex-extensions}
371
372 Knuth's original \TeX{} itself is frozen, apart from rare bug fixes. It
373 is present in \TL\ as the program \prog{tex}, and will remain so
374 for the foreseeable future. \TL{} also contains several extended versions of
375 \TeX\ (also known as \TeX\ engines):
376
377 \begin{description}
378
379 \item [\eTeX] adds a set of new primitives
380 \label{text:etex} (related to macro expansion, character scanning,
381 classes of marks, additional debugging features, and more) and the
382 \TeXXeT{} extensions for bidirectional typesetting. In default mode,
383 \eTeX{} is 100\% compatible with ordinary \TeX. See
384 \OnCD{texmf-dist/doc/etex/base/etex_man.pdf}.
385
386 \item [pdf\TeX] builds on the \eTeX\ extensions, adding support for
387 writing PDF output as well as \dvi{}, and many non-output-related
388 extensions. This is the program invoked for many common formats, e.g.,
389 \prog{etex}, \prog{latex}, \prog{pdflatex}. Its web site is
390 \url{http://www.pdftex.org/}. See
391 \OnCD{texmf-dist/doc/pdftex/manual/pdftex-a.pdf} for the manual, and
392 \OnCD{texmf-dist/doc/pdftex/samplepdftex/samplepdf.tex} for example
393 usage of some of its features.
394
395 \item [Lua\TeX] adds support for Unicode input and OpenType\slash
396 TrueType- and system fonts. It also incorporates a Lua interpreter
397 (\url{https://lua.org/}), enabling solutions for many thorny \TeX{}
398 problems. When called as \filename{texlua}, it functions as a standalone
399 Lua interpreter. Its web site is \url{http://www.luatex.org/}, and the
400 reference manual is \OnCD{texmf-dist/doc/luatex/base/luatex.pdf}.
401
402 \item [(e)(u)p\TeX] have native support for Japanese typesetting
403 requirements; p\TeX\ is the basic engine, while the e- variants add
404 \eTeX\ functionality and u- add Unicode support.
405
406 \item [\XeTeX] adds support for Unicode input and OpenType\slash
407 TrueType- and system fonts, implemented using standard third-party
408 libraries. See \url{https://tug.org/xetex}.
409
410 \item [\OMEGA\ (Omega)] is based on Unicode (16-bit characters), thus
411 supports working with almost all the world's scripts simultaneously. It
412 also supports so-called `\OMEGA{} Translation Processes' (OTPs),
413 for performing complex transformations on arbitrary input. Omega is no
414 longer included in \TL{} as a separate program; only Aleph is provided:
415
416 \item [Aleph] combines the \OMEGA\ and \eTeX\ extensions.
417 See \OnCD{texmf-dist/doc/aleph/base}.
418
419 \end{description}
420
421
422 \subsection{Other notable programs in \protect\TL}
423
424 Here are a few other commonly-used programs included in \TL{}:
425
426 \begin{cmddescription}
427
428 \item [bibtex, biber] bibliography support.
429
430 \item [makeindex, xindy] index support.
431
432 \item [dvips] convert \dvi{} to \PS{}.
433
434 \item [xdvi] \dvi{} previewer for the X Window System.
435
436 \item [dviconcat, dviselect] cut and paste pages
437 from \dvi{} files.
438
439 \item [dvipdfmx] convert \dvi{} to PDF, an alternative approach
440 to pdf\TeX\ (mentioned above).
441
442 \item [psselect, psnup, \ldots] \PS{} utilities.
443
444 \item [pdfjam, pdfjoin, \ldots] PDF utilities.
445
446 \item [context, mtxrun] Con\TeX{}t and PDF processor.
447
448 \item [htlatex, \ldots] \cmdname{tex4ht}: \AllTeX{} to HTML (and
449 XML and more) converter.
450
451 \end{cmddescription}
452
453
454 \htmlanchor{installation}
455 \section{Installation}
456 \label{sec:install}
457
458 \subsection{Starting the installer}
459 \label{sec:inst-start}
460
461 To begin, get the \TK{} \DVD{} or download the \TL{} net installer. See
462 \url{https://tug.org/texlive/acquire.html} for more information and other
463 methods of getting the software.
464
465 \begin{description}
466 \item [Net installer, .zip or .tar.gz:] Download from \CTAN, under
467 \dirname{systems/texlive/tlnet}; the url
468 \url{http://mirror.ctan.org/systems/texlive/tlnet} should redirect to a
469 nearby, up-to-date, mirror. You can retrieve either
470 \filename{install-tl.zip} which can be used under Unix and Windows, or
471 the considerably smaller \filename{install-unx.tar.gz} for Unix
472 only. After unpacking, \filename{install-tl} and
473 \filename{install-tl-windows.bat} will be in the \dirname{install-tl}
474 subdirectory.
475
476 \item[Net installer, Windows .exe:] Download from \CTAN{} as above,
477 and double-click. This starts up a first-stage installer and unpacker;
478 see figure~\ref{fig:nsis}. It gives two choices: ``Install''
479 and``Unpack only''.
480
481 \item [\TeX{} Collection \DVD:] go to the \DVD's \dirname{texlive}
482 subdirectory. Under Windows, the installer normally starts automatically
483 when you insert the \DVD. You can get the \DVD\ by becoming a member of
484 a \TeX\ user group (highly recommended,
485 \url{https://tug.org/usergroups.html}), or purchasing it separately
486 (\url{https://tug.org/store}), or burning your own from the \ISO\ image.
487 You can also mount the \ISO\ directly on most systems. After installing
488 from \DVD\ or \ISO, if you want to get continuing updates from the
489 Internet, please see section~\ref{sec:dvd-install-net-updates}.
490
491 \end{description}
492
493 \begin{figure}[tb]
494 \tlpng{nsis_installer}{.6\linewidth}
495 \caption{First stage of Windows \code{.exe} installer}\label{fig:nsis}
496 \end{figure}
497
498 The same installer program is run, whatever the source. The most
499 visible difference between the two is that with the net installer, what
500 you end up with is the packages that are currently available. This is
501 in contrast to the \DVD\ and \ISO\ images, which are not updated between
502 the major public releases.
503
504 If you need to download through proxies, use a \filename{~/.wgetrc} file
505 or environment variables with the proxy settings for Wget
506 (\url{https://www.gnu.org/software/wget/manual/html_node/Proxies.html}),
507 or the equivalent for whatever download program you are using. This does
508 not matter if you are installing from the \DVD\ or \ISO\ image.
509
510 The following sections explain installer start-up in more detail.
511
512 \subsubsection{Unix}
513
514 Below, \texttt{>} denotes the shell prompt; user input is
515 \Ucom{\texttt{bold}}.
516 The \filename{install-tl} program is a Perl script. The simplest way
517 to start it on a Unix-compatible system is as follows:
518 \begin{alltt}
519 > \Ucom{perl /path/to/installer/install-tl}
520 \end{alltt}
521 (Or you can invoke \Ucom{/path/to/installer/install-tl} if it stayed
522 executable, or \texttt{cd} to the directory first, etc.; we won't repeat
523 all the variations.) You may have to enlarge your terminal window so
524 that it shows the full text installer screen
525 (figure~\ref{fig:text-main}).
526
527 To install in \GUI\ mode (figure~\ref{fig:advanced-lnx}), you'll need to
528 have Tcl/Tk installed. Given that, you can run:
529 \begin{alltt}
530 > \Ucom{perl install-tl -gui}
531 \end{alltt}
532
533 The old \code{wizard} and \code{perltk}/\code{expert} options are
534 still available, but now do the same thing as \code{-gui}. For
535 a complete listing of the various options:
536 \begin{alltt}
537 > \Ucom{perl install-tl -help}
538 \end{alltt}
539
540 \textbf{About Unix permissions:} Your \code{umask} at the time
541 of installation will be respected by the \TL{} installer. Therefore, if
542 you want your installation to be usable by users other than you, make
543 sure your setting is sufficiently permissive, for instance, \code{umask
544 002}. For more information about \code{umask}, consult your system
545 documentation.
546
547 \textbf{Special considerations for Cygwin:} Unlike other
548 Unix-compatible systems, Cygwin does not by default include all of the
549 prerequisite programs needed by the \TL{} installer. See
550 section~\ref{sec:cygwin}.
551
552
553 \subsubsection{\MacOSX}
554 \label{sec:macosx}
555
556 As mentioned in section~\ref{sec:tl-coll-dists}, a separate distribution
557 is prepared for \MacOSX, named Mac\TeX\ (\url{https://tug.org/mactex}).
558 We recommend using the native Mac\TeX\ installer instead of the \TL\
559 installer on \MacOSX, because the native installer makes a few
560 Mac-specific adjustments, in particular to allow easily switching
561 between the various \TeX\ distributions for \MacOSX\ (Mac\TeX, Fink,
562 MacPorts, \ldots) using the so-called \TeX{}Dist data structure.
563
564 Mac\TeX\ is firmly based on \TL, and the main \TeX\ trees and binaries
565 are precisely the same. It adds a few extra folders with Mac-specific
566 documentation and applications.
567
568
569 \subsubsection{Windows}\label{sec:wininst}
570
571 If you are using the unpacked downloaded zip file, or the \DVD\
572 installer failed to start automatically, double-click
573 \filename{install-tl-windows.bat}.
574
575 You can also start the installer from the command-prompt. Below,
576 \texttt{>} denotes the prompt; user input is \Ucom{\texttt{bold}}. If
577 you are in the installer directory, run just:
578 \begin{alltt}
579 > \Ucom{install-tl-windows}
580 \end{alltt}
581
582 Or you can invoke it with an absolute location, such as:
583 \begin{alltt}
584 > \Ucom{D:\bs{}texlive\bs{}install-tl-windows}
585 \end{alltt}
586 for the \TK\ \DVD, supposing that \dirname{D:} is the optical
587 drive. Figure~\ref{fig:basic-w32} displays the initial basic screen
588 of the \GUI\ installer, which is the default for Windows.
589
590 To install in text mode, use:
591 \begin{alltt}
592 > \Ucom{install-tl-windows -no-gui}
593 \end{alltt}
594
595 For a complete listing of the various options:
596 \begin{alltt}
597 > \Ucom{install-tl-windows -help}
598 \end{alltt}
599
600 \begin{figure}[tb]
601 \begin{boxedverbatim}
602 Installing TeX Live 2021 from: ...
603 Platform: x86_64-linux => 'GNU/Linux on x86_64'
604 Distribution: inst (compressed)
605 Directory for temporary files: /tmp
606 ...
607 Detected platform: GNU/Linux on Intel x86_64
608
609 <B> binary platforms: 1 out of 16
610
611 <S> set installation scheme: scheme-full
612
613 <C> customizing installation collections
614 40 collections out of 41, disk space required: 7172 MB
615
616 <D> directories:
617 TEXDIR (the main TeX directory):
618 /usr/local/texlive/2021
619 ...
620
621 <O> options:
622 [ ] use letter size instead of A4 by default
623 ...
624
625 <V> set up for portable installation
626
627 Actions:
628 <I> start installation to hard disk
629 <P> save installation profile to 'texlive.profile' and exit
630 <H> help
631 <Q> quit
632 \end{boxedverbatim}
633 \vskip-.5\baselineskip
634 \caption{Main text installer screen (\GNU/Linux)}\label{fig:text-main}
635 \end{figure}
636
637 \begin{figure}[tb]
638 \tlpng{basic-w32}{.6\linewidth}
639 \caption{Basic installer screen (Windows); the Advanced button will
640 result in something like figure~\ref{fig:advanced-lnx}}\label{fig:basic-w32}
641 \end{figure}
642
643 \begin{figure}[tb]
644 \tlpng{advanced-lnx}{\linewidth}
645 \caption{Advanced \GUI{} installer screen
646 (\GNU/Linux)}\label{fig:advanced-lnx}
647 \end{figure}
648
649
650 \htmlanchor{cygwin}
651 \subsubsection{Cygwin}
652 \label{sec:cygwin}
653
654 Before beginning the installation, use Cygwin's \filename{setup.exe} program to
655 install the \filename{perl} and \filename{wget} packages if you have
656 not already done so. The following additional packages are
657 recommended:
658 \begin{itemize*}
659 \item \filename{fontconfig} [needed by \XeTeX\ and Lua\TeX]
660 \item \filename{ghostscript} [needed by various utilities]
661 \item \filename{libXaw7} [needed by \code{xdvi}]
662 \item \filename{ncurses} [provides the \code{clear} command used by the installer]
663 \end{itemize*}
664
665
666 \subsubsection{The text installer}
667
668 Figure~\ref{fig:text-main} displays the main text mode screen under
669 Unix. The text installer is the default on Unix.
670
671 This is only a command-line installer; there is no cursor support at
672 all. For instance, you cannot tab around checkboxes or input fields.
673 You just type something (case-sensitive) at the prompt and press the
674 Enter key, and then the entire terminal screen will be rewritten, with
675 adjusted content.
676
677 The text installer interface is this primitive in order to make it run
678 on as many platforms as possible, even with a minimal Perl.
679
680 \subsubsection{The graphical installer}
681 \label{sec:graphical-inst}
682
683 The default graphical installer starts out simple, with just a
684 few options; see figure~\ref{fig:basic-w32}. It can be started with
685 \begin{alltt}
686 > \Ucom{install-tl -gui}
687 \end{alltt}
688 The Advanced button gives access to most of the options of the text
689 installer; see figure~\ref{fig:advanced-lnx}.
690
691 The \texttt{perltk}/\texttt{expert} and \texttt{wizard} \GUI{}
692 options now invoke the regular graphical installer.
693
694 \subsection{Running the installer}
695 \label{sec:runinstall}
696
697 The installer is intended to be mostly self-explanatory, but following are a
698 few notes about the various options and submenus.
699
700 \subsubsection{Binary systems menu (Unix only)}
701 \label{sec:binary}
702
703 \begin{figure}[tb]
704 \begin{boxedverbatim}
705 Available platforms:
706 ===============================================================================
707 a [ ] Cygwin on Intel x86 (i386-cygwin)
708 b [ ] Cygwin on x86_64 (x86_64-cygwin)
709 c [ ] MacOSX current (10.14-) on ARM/x86_64 (universal-darwin)
710 d [ ] MacOSX legacy (10.6-) on x86_64 (x86_64-darwinlegacy)
711 e [ ] FreeBSD on x86_64 (amd64-freebsd)
712 f [ ] FreeBSD on Intel x86 (i386-freebsd)
713 g [ ] GNU/Linux on ARM64 (aarch64-linux)
714 h [ ] GNU/Linux on ARMv6/RPi (armhf-linux)
715 i [ ] GNU/Linux on Intel x86 (i386-linux)
716 j [X] GNU/Linux on x86_64 (x86_64-linux)
717 k [ ] GNU/Linux on x86_64 with musl (x86_64-linuxmusl)
718 l [ ] NetBSD on x86_64 (amd64-netbsd)
719 m [ ] NetBSD on Intel x86 (i386-netbsd)
720 o [ ] Solaris on Intel x86 (i386-solaris)
721 p [ ] Solaris on x86_64 (x86_64-solaris)
722 s [ ] Windows (win32)
723 \end{boxedverbatim}
724 \vskip-.5\baselineskip
725 \caption{Binaries menu}\label{fig:bin-text}
726 \end{figure}
727
728 Figure~\ref{fig:bin-text} displays the text mode binaries menu. By
729 default, only the binaries for your current platform will be installed.
730 From this menu, you can select installation of binaries for other
731 platforms as well. This can be useful if you are sharing a \TeX\
732 tree across a network of heterogeneous machines, or for a dual-boot
733 system.
734
735 \subsubsection{Selecting what is to be installed}
736 \label{sec:components}
737
738 \begin{figure}[tbh]
739 \begin{boxedverbatim}
740 Select scheme:
741 ===============================================================================
742 a [X] full scheme (everything)
743 b [ ] medium scheme (small + more packages and languages)
744 c [ ] small scheme (basic + xetex, metapost, a few languages)
745 d [ ] basic scheme (plain and latex)
746 e [ ] minimal scheme (plain only)
747 f [ ] ConTeXt scheme
748 g [ ] GUST TeX Live scheme
749 h [ ] infrastructure-only scheme (no TeX at all)
750 i [ ] teTeX scheme (more than medium, but nowhere near full)
751 j [ ] custom selection of collections
752 \end{boxedverbatim}
753 \vskip-.5\baselineskip
754 \caption{Scheme menu}\label{fig:scheme-text}
755 \end{figure}
756
757 Figure~\ref{fig:scheme-text} displays the \TL\ scheme menu; from here,
758 you choose a ``scheme'', which is an overall set of package collections.
759 The default \optname{full} scheme installs everything available. This is
760 recommended, but you can also choose the \optname{basic} scheme for
761 just plain and \LaTeX, \optname{small} for a few more programs
762 (equivalent to the so-called Basic\TeX\ installation of Mac\TeX),
763 \optname{minimal} for testing purposes, and \optname{medium} or
764 \optname{teTeX} to get something in between. There are also various
765 specialized and country-specific schemes.
766
767 \begin{figure}[tb]
768 \centering \tlpng{stdcoll}{.7\linewidth}
769 \caption{Collections menu}\label{fig:collections-gui}
770 \end{figure}
771
772 You can refine your scheme selection with the `collections' menu
773 (figure~\ref{fig:collections-gui}, shown in \GUI\ mode for a change).
774
775 Collections are one level more detailed than schemes\Dash in essence, a
776 scheme consists of several collections, a collection consists of one or
777 more packages, and a package (the lowest level grouping in \TL) contains
778 the actual \TeX\ macro files, font files, and so on.
779
780 If you want more control than the collection menus provide, you can use
781 the \TeX\ Live Manager (\prog{tlmgr}) program after installation (see
782 section~\ref{sec:tlmgr}); using that, you can control the installation
783 at the package level.
784
785 \subsubsection{Directories}
786 \label{sec:directories}
787
788 The default layout is described in section~\ref{sec:texmftrees},
789 \p.\pageref{sec:texmftrees}. The default installation directory is
790 \dirname{/usr/local/texlive/2021} on Unix and
791 |%SystemDrive%\texlive\2021| on Windows. This arrangement enables
792 having many parallel \TL\ installations, such as one for each release
793 (typically by year, as here), and you can switch between them merely by
794 altering your search path.
795
796 That installation directory can be overridden by setting the so-called
797 \dirname{TEXDIR} in the installer. The \GUI\ screen for this and other
798 options is shown in figure~\ref{fig:advanced-lnx}. The most common reasons
799 to change it are either lacking enough disk space in that partition (the
800 full \TL\ needs several gigabytes), or lacking write permission for the
801 default location (you don't have to be root or administrator to install
802 \TL, but you do need write access to the target directory).
803
804 The installation directories can also be changed by setting a variety of
805 environment variables before running the installer (most likely,
806 \envname{TEXLIVE\_INSTALL\_PREFIX} or
807 \envname{TEXLIVE\_INSTALL\_TEXDIR}); see the documentation from
808 |install-tl --help| (available online at
809 \url{https://tug.org/texlive/doc/install-tl.html}) for the full list and
810 more details.
811
812 A reasonable alternative destination is a directory under your home,
813 especially if you will be the sole user. Use `|~|' to indicate this, as
814 in `|~/texlive/2021|'.
815
816 We recommend including the year in the name, to enable keeping different
817 releases of \TL{} side by side. (You may wish to also maintain a
818 version-independent name, such as \dirname{/usr/local/texlive-cur}, via a
819 symbolic link, which you can then repoint after testing the new release.)
820
821 Changing \dirname{TEXDIR} in the installer will also change
822 \dirname{TEXMFLOCAL}, \dirname{TEXMFSYSVAR} and
823 \dirname{TEXMFSYSCONFIG}.
824
825 \dirname{TEXMFHOME} is the recommended location for personal macro files
826 or packages. The default value is |~/texmf| (|~/Library/texmf| on
827 Macs). In contrast to \dirname{TEXDIR}, here a |~| is preserved in the
828 newly-written configuration files, since it usefully refers to the home
829 directory of the user running \TeX. It expands to \dirname{$HOME} on
830 Unix and \verb|%USERPROFILE%| on Windows. Special redundant note:
831 \envname{TEXMFHOME}, like all trees, must be organized according to the
832 \TDS, or files may not be found.
833
834 \dirname{TEXMFVAR} is the location for storing most cached runtime data
835 specific to each user. \dirname{TEXMFCACHE} is the variable name used
836 for that purpose by Lua\LaTeX\ and \ConTeXt\ MkIV (see
837 section~\ref{sec:context-mkiv}, \p.\pageref{sec:context-mkiv}); its
838 default value is \dirname{TEXMFSYSVAR}, or (if that's not writable),
839 \dirname{TEXMFVAR}.
840
841
842 \subsubsection{Options}
843 \label{sec:options}
844
845 \begin{figure}[tbh]
846 \begin{boxedverbatim}
847 Options customization:
848 ===============================================================================
849 <P> use letter size instead of A4 by default: [ ]
850 <E> execution of restricted list of programs: [X]
851 <F> create all format files: [X]
852 <D> install font/macro doc tree: [X]
853 <S> install font/macro source tree: [X]
854 <L> create symlinks in standard directories: [ ]
855 binaries to:
856 manpages to:
857 info to:
858 <Y> after install, set CTAN as source for package updates: [X]
859 \end{boxedverbatim}
860 \vskip-.5\baselineskip
861 \caption{Options menu (Unix)}\label{fig:options-text}
862 \end{figure}
863
864 Figure~\ref{fig:options-text} shows the text mode options menu.
865 More info on each:
866
867 \begin{description}
868 \item[use letter size instead of A4 by default:] The default paper
869 size selection. Of course, individual documents can and should
870 specify a specific paper size, if desired.
871
872 \item[execution of restricted list of programs:] As of \TL\ 2010,
873 execution of a few external programs is allowed by default. The (very
874 short) list of allowed programs is given in the \filename{texmf.cnf}.
875 See the 2010 news (section~\ref{sec:2010news}) for more details.
876
877 \item[create all format files:] We recommend leaving this option
878 checked, to avoid unnecessary problems when creating formats
879 dynamically. See the \prog{fmtutil} documentation for more details.
880
881 \item[install font/macro \ldots\ tree:] Download/install the
882 documentation and source files included in most packages. Unchecking
883 is not recommended.
884
885 \item[create symlinks in standard directories:]
886 This option (Unix only) bypasses the need to change environment
887 variables. Without this option, \TL{} directories usually have to be
888 added to \envname{PATH}, \envname{MANPATH} and \envname{INFOPATH}. You
889 will need write permissions to the target directories. This option is
890 intended for accessing the \TeX\ system through directories that are
891 already known to users, such as \dirname{/usr/local/bin}, which don't
892 already contain any \TeX\ files. Do not overwrite existing files on
893 your system with this option, e.g., by specifying system directories.
894 The safest and recommended approach is to leave the option unchecked.
895
896 \item[after install, set CTAN as source for package updates:]
897 When installing from \DVD, this
898 option is enabled by default, since usually one wants to take any
899 subsequent package updates from the \CTAN\ area that is updated
900 throughout the year. The only likely reason to disable it is if you
901 install only a subset from the \DVD\ and plan to augment the
902 installation later. In any case, the package repository for the
903 installer, and for updates after installation, can be set
904 independently as needed; see section~\ref{sec:location} and
905 section~\ref{sec:dvd-install-net-updates}.
906 \end{description}
907 Windows-specific options, as displayed in the advanced \GUI{}
908 interface:
909 \begin{description}
910 \item[adjust searchpath] This ensures that all
911 programs will see the \TL{} binary directory on their search path.
912
913 \item[add menu shortcuts] If set, there will be a \TL{} submenu of
914 the Start menu. There is a third option `Launcher entry' besides
915 `TeX Live menu' and `No shortcuts'. This option is described in
916 section \ref{sec:sharedinstall}.
917
918 \item[File associations] The options are `Only new' (create
919 file associations, but do not overwrite existing ones), `All' and
920 `None'.
921
922 \item[install \TeX{}works front end]
923 \end{description}
924 When all the settings are to your liking, you can type `I' in the
925 text interface, or press the `Install' button in the
926 \GUI, to start the installation process. When it is done,
927 skip to section~\ref{sec:postinstall} to read what else needs to be
928 done, if anything.
929
930 \subsection{Command-line install-tl options}
931 \label{sec:cmdline}
932
933 Type
934 \begin{alltt}
935 > \Ucom{install-tl -help}
936 \end{alltt}
937 for a listing of command-line options. Either |-| or |--| can be used
938 to introduce option names. These are the most common ones:
939
940 \begin{ttdescription}
941 \item[-gui] Use the \GUI{} installer if possible. This requires
942 Tcl/Tk version 8.5 or higher. This is the case on \MacOSX\ and is
943 distributed with \TL{} on Windows. The legacy options
944 \texttt{-gui=perltk} and \texttt{-gui=wizard} are still available
945 but invoke the same \GUI{} interface; if Tcl/Tk is not available,
946 installation continues in text mode.
947
948 \item[-no-gui] Force using the text mode installer.
949
950 \item[-lang {\sl LL}] Specify the installer interface
951 language as a standard (usually two-letter) code. The installer tries
952 to automatically determine the right language but if it fails, or if
953 the right language is not available, then it uses English as a
954 fallback. Run \verb|install-tl --help| to get the list of available
955 languages.
956
957 \item[-portable] Install for portable use on, e.g., a \USB{} stick.
958 Also selectable from within the text installer with the \code{V}
959 command, and from the \GUI{} installer. See
960 section~\ref{sec:portable-tl}.
961
962 \item[-profile {\sl file}] Load the installation profile \var{file} and
963 do the installation with no user interaction. The installer always
964 writes a file \filename{texlive.profile} to the \dirname{tlpkg}
965 subdirectory of your installation. That file can be given as the
966 argument to redo the exact same installation on a different system,
967 for example. Alternatively, you can use a custom profile, most easily
968 created by starting from a generated one and changing values, or an
969 empty file, which will take all the defaults.
970
971 \item [-repository {\sl url-or-directory}] Specify package
972 repository from which to install; see following.
973
974 \htmlanchor{opt-in-place}
975 \item[-in-place] (Documented only for completeness: Do not use this
976 unless you know what you are doing.) If you already have an rsync, svn,
977 or other copy of \TL{} (see
978 \url{https://tug.org/texlive/acquire-mirror.html}) then this option
979 will use what you've got, as-is, and do only the necessary
980 post-install actions. Be warned that the file \filename{tlpkg/texlive.tlpdb}
981 may be overwritten; saving it is your responsibility. Also, package
982 removal has to be done manually. This option cannot be toggled via the
983 installer interface.
984 \end{ttdescription}
985
986
987 \subsubsection{The \optname{-repository} option}
988 \label{sec:location}
989
990 The default network package repository is a \CTAN{} mirror chosen
991 automatically via \url{http://mirror.ctan.org}.
992
993 If you want to override that, the location value can be a url
994 starting with \texttt{ftp:}, \texttt{http:}, \texttt{https:},
995 \texttt{file:/}, or a plain directory path. (When giving an
996 \texttt{http:}, \texttt{https:} or \texttt{ftp:}\ location, trailing
997 `\texttt{/}' characters and/or a trailing `\texttt{/tlpkg}'
998 component are ignored.)
999
1000 For example, you could choose a particular \CTAN\ mirror with something
1001 like: \url{http://ctan.example.org/tex-archive/systems/texlive/tlnet/},
1002 substituting a real hostname and its particular top-level \CTAN\ path
1003 for |ctan.example.org/tex-archive|. The list of \CTAN\ mirrors is
1004 maintained at \url{https://ctan.org/mirrors}.
1005
1006 If the given argument is local (either a path or a \texttt{file:/} url),
1007 compressed files in an \dirname{archive} subdirectory of the repository
1008 path are used (even if uncompressed files are available as well).
1009
1010 \htmlanchor{postinstall}
1011 \subsection{Post-install actions}
1012 \label{sec:postinstall}
1013
1014 Some post-installation may be required.
1015
1016 \subsubsection{Environment variables for Unix}
1017 \label{sec:env}
1018
1019 If you elected to create symlinks in standard directories (described in
1020 section~\ref{sec:options}), then there is no need to edit environment
1021 variables. Otherwise, on Unix systems, the directory of the binaries
1022 for your platform must be added to the search path. (On Windows, the
1023 installer takes care of this.)
1024
1025 Each supported platform has its own subdirectory under
1026 \dirname{TEXDIR/bin}. See figure~\ref{fig:bin-text} for the list of
1027 subdirectories and corresponding platforms.
1028
1029 Optionally, you can also add the documentation man and Info directories
1030 to their respective search paths, if you want the system tools to find
1031 them. The man pages might be found automatically after the addition to
1032 \envname{PATH}.
1033
1034 For Bourne-compatible shells such as \prog{bash}, and using Intel x86
1035 GNU/Linux and the \TL\ default directory setup as an example, the file to edit
1036 might be \filename{$HOME/.profile} (or another file sourced by
1037 \filename{.profile}), and the lines to add would look like this:
1038
1039 \begin{sverbatim}
1040 PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH; export PATH
1041 MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH; export MANPATH
1042 INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH; export INFOPATH
1043 \end{sverbatim}
1044
1045 For csh or tcsh, the file to edit is typically \filename{$HOME/.cshrc}, and
1046 the lines to add might look like:
1047
1048 \begin{sverbatim}
1049 setenv PATH /usr/local/texlive/2021/bin/x86_64-linux:$PATH
1050 setenv MANPATH /usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH
1051 setenv INFOPATH /usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH
1052 \end{sverbatim}
1053
1054 If you're not on an \code{x86\_64-linux} platform, use the appropriate
1055 platform name; similarly, if you didn't install in the default
1056 directory, change the directory name. The \TL\ installer reports the
1057 full lines to use at the end of installation.
1058
1059 If you already have \envname{PATH} settings somewhere in your startup
1060 files, merge in the \TL\ directories as you see fit.
1061
1062
1063 \subsubsection{Environment variables: Global configuration}
1064 \label{sec:envglobal}
1065
1066 If you want to make these changes globally, or for a user newly added to
1067 the system, then you are on your own; there is just too much variation
1068 between systems in how and where these things are configured.
1069
1070 Our two hints are: 1)~you may want to check for a file
1071 \filename{/etc/manpath.config} and, if present, add lines such as
1072
1073 \begin{sverbatim}
1074 MANPATH_MAP /usr/local/texlive/2021/bin/x86_64-linux \
1075 /usr/local/texlive/2021/texmf-dist/doc/man
1076 \end{sverbatim}
1077
1078 And 2)~check for a file \filename{/etc/environment} which may define the
1079 search path and other default environment variables.
1080
1081 In each (Unix) binary directory, we also create a symbolic link named
1082 \code{man} to the directory \dirname{texmf-dist/doc/man}. Some \code{man}
1083 programs, such as the standard \MacOSX\ \code{man}, will automatically
1084 find that, obviating the need for any man page setup.
1085
1086
1087 \subsubsection{Internet updates after \DVD\ installation}
1088 \label{sec:dvd-install-net-updates}
1089
1090 If you installed \TL\ from \DVD\ and then wish to get updates from the
1091 Internet, you need to run this command---\emph{after} you've updated
1092 your search path (as described in the previous section):
1093
1094 \begin{alltt}
1095 > \Ucom{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet}
1096 \end{alltt}
1097
1098 This tells \cmdname{tlmgr} to use a nearby \CTAN\ mirror for future updates.
1099 This is done by default when installing from \DVD, via the option
1100 described in section~\ref{sec:options}.
1101
1102 If there are problems with the automatic mirror selection, you can
1103 specify a particular \CTAN\ mirror from the list at
1104 \url{https://ctan.org/mirrors}. Use the exact path to the
1105 \dirname{tlnet} subdir on that mirror, as shown above.
1106
1107
1108 \htmlanchor{xetexfontconfig} % keep historical anchor working
1109 \htmlanchor{sysfontconfig}
1110 \subsubsection{System font configuration for \protect\XeTeX\protect\ and Lua\protect\TeX}
1111 \label{sec:font-conf-sys}
1112
1113 \XeTeX\ and Lua\TeX\ can use any font installed on the system, not just
1114 those in the \TeX\ trees. They do these via related but not identical
1115 methods.
1116
1117 On Windows, fonts shipped with \TL\ are automatically made available to
1118 \XeTeX\ by font name. On \MacOSX, supporting font name lookups requires
1119 additional steps; please see the Mac\TeX\ web pages
1120 (\url{https://tug.org/mactex}). For other Unix systems, the procedure to
1121 be able to find the fonts shipped with \TL\ via font name follows.
1122
1123 To facilitate this, when the \pkgname{xetex} package is installed
1124 (either at initial installation or later), the necessary configuration
1125 file is created in
1126 \filename{TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf}.
1127
1128 To set up the \TL{} fonts for system-wide use (assuming you have
1129 suitable privileges), proceed as follows:
1130 \begin{enumerate*}
1131 \item Copy the \filename{texlive-fontconfig.conf} file to
1132 \dirname{/etc/fonts/conf.d/09-texlive.conf}.
1133 \item Run \Ucom{fc-cache -fsv}.
1134 \end{enumerate*}
1135
1136 If you do not have sufficient privileges to carry out the steps above,
1137 or if you want to make the \TL{} fonts available to only one user,
1138 you can do the following:
1139 \begin{enumerate*}
1140 \item Copy the \filename{texlive-fontconfig.conf} file to
1141 \filename{~/.fonts.conf}, where \filename{~} is your home directory.
1142 \item Run \Ucom{fc-cache -fv}.
1143 \end{enumerate*}
1144
1145 You can run \code{fc-list} to see the names of the system fonts. The
1146 incantation \code{fc-list : family style file spacing} (all arguments
1147 are literal strings) shows some generally interesting information.
1148
1149
1150 \subsubsection{\protect\ConTeXt{} Mark IV}
1151 \label{sec:context-mkiv}
1152
1153 Both the `old' \ConTeXt{} (Mark II) and the `new' \ConTeXt{}
1154 (Mark IV) should run out of the box after \TL{} installation,
1155 and should need no special attention as long as you stick to
1156 using \verb+tlmgr+ for updates.
1157
1158 However, because \ConTeXt{} MkIV does not use the kpathsea
1159 library, some setup will be required whenever you install new
1160 files manually (without using \verb+tlmgr+). After each such
1161 installation, each MkIV user must run:
1162 \begin{sverbatim}
1163 context --generate
1164 \end{sverbatim}
1165 to refresh the \ConTeXt{} disk cache data.
1166 The resulting files are stored under \code{TEXMFCACHE},
1167 whose default value in \TL\ is \verb+TEXMFSYSVAR;TEXMFVAR+.
1168
1169 \ConTeXt\ MkIV will read from
1170 all paths mentioned in \verb+TEXMFCACHE+, and write to the first
1171 path that is writable. While reading, the last found match will
1172 take precedence in the case of duplicated cache data.
1173
1174 For more information, see
1175 \url{https://wiki.contextgarden.net/Running_Mark_IV}.
1176
1177
1178 \subsubsection{Integrating local and personal macros}
1179 \label{sec:local-personal-macros}
1180
1181 This is already mentioned implicitly in section~\ref{sec:texmftrees}:
1182 \dirname{TEXMFLOCAL} (by default,
1183 \dirname{/usr/local/texlive/texmf-local} or
1184 \verb|%SystemDrive%\texlive\texmf-local| on Windows)
1185 is intended for system-wide local fonts and macros; and
1186 \dirname{TEXMFHOME} (by default, \dirname{$HOME/texmf} or
1187 \verb|%USERPROFILE%\texmf|), is for personal fonts and macros. These
1188 directories are intended to stick around from release to release, and
1189 have their content seen automatically by a new \TL{} release.
1190 Therefore, it is best to refrain from changing the definition of
1191 \dirname{TEXMFLOCAL} to be too far away from the main \TL{} directory,
1192 or you will need to manually change future releases.
1193
1194 For both trees, files should be placed in their proper \TeX\ Directory
1195 Structure (\TDS) subdirectories; see \url{https://tug.org/tds} or consult
1196 \filename{texmf-dist/web2c/texmf.cnf}. For instance, a \LaTeX{} class file or
1197 package should be placed in \dirname{TEXMFLOCAL/tex/latex} or
1198 \dirname{TEXMFHOME/tex/latex}, or a subdirectory thereof.
1199
1200 \dirname{TEXMFLOCAL} requires an up-to-date filename database, or files
1201 will not be found. You can update it with the command
1202 \cmdname{mktexlsr} or use the `Reinit file database' button on the
1203 configuration tab of the \TeX\ Live Manager \GUI.
1204
1205 By default, each of these variables is defined to be a single directory,
1206 as shown. This is not a hard-and-fast requirement. If you need to
1207 easily switch back and forth between different versions of large
1208 packages, for example, you can maintain multiple trees for your own
1209 purposes. This is done by setting \dirname{TEXMFHOME} to the
1210 list of directories, within braces, separated by commas:
1211
1212 \begin{verbatim}
1213 TEXMFHOME = {/my/dir1,/mydir2,/a/third/dir}
1214 \end{verbatim}
1215
1216 Section~\ref{sec:brace-expansion} describes brace expansion further.
1217
1218
1219 \subsubsection{Integrating third-party fonts}
1220
1221 This is unfortunately a messy topic for \TeX\ and pdf\TeX. Forget about
1222 it unless you want to delve into many details of the \TeX{}
1223 installation. Many fonts are included in \TL\ already, so take a look if
1224 you like; the web pages under \url{https://tug.org/FontCatalogue}
1225 display nearly all of the text fonts included in the main \TeX\
1226 distributions, categorized in various ways.
1227
1228 If you do want to install your own fonts, see
1229 \url{https://tug.org/fonts/fontinstall.html} for our best effort at
1230 describing the procedure.
1231
1232 Also consider using \XeTeX\ or Lua\TeX\ (see
1233 section~\ref{sec:tex-extensions}), which let you use operating
1234 system fonts without any installation in \TeX. (But beware that using
1235 system fonts makes your documents instantly unusable by anyone in a
1236 different environment.)
1237
1238 \subsection{Testing the installation}
1239 \label{sec:test-install}
1240
1241 After installing \TL{}, you naturally want to test it out, so you can
1242 start creating beautiful documents and\slash or fonts.
1243
1244 One thing you may immediately be looking for is a front-end with which
1245 to edit files. \TL{} installs \TeX{}works
1246 (\url{https://tug.org/texworks}) on Windows (only), and Mac\TeX\ installs
1247 TeXShop (\url{https://pages.uoregon.edu/koch/texshop}). On other Unix
1248 systems, it's left up to you to choose an editor. There are many
1249 choices available, some of which are listed in the next section; see
1250 also \url{https://tug.org/interest.html#editors}. Any plain text editor
1251 will work; something \TeX-specific is not required.
1252
1253 The rest of this section gives some basic procedures for testing that
1254 the new system is functional. We give Unix commands here; under
1255 \MacOSX{} and Windows, you're more likely to run the tests through a
1256 graphical interface, but the principles are the same.
1257
1258 \begin{enumerate}
1259
1260 \item Make sure that you can run the \cmdname{tex} program in the first
1261 place:
1262 \begin{alltt}
1263 > \Ucom{tex -{}-version}
1264 TeX 3.14159265 (TeX Live ...)
1265 Copyright ... D.E. Knuth.
1266 ...
1267 \end{alltt}
1268 If this comes back with `command not found' instead of version and
1269 copyright information, or with an older version, most likely you don't
1270 have the correct \dirname{bin} subdirectory in your \envname{PATH}. See
1271 the environment-setting information on \p.\pageref{sec:env}.
1272
1273 \item Process a basic \LaTeX{} file, generating PDF:
1274 \begin{alltt}
1275 > \Ucom{pdflatex sample2e.tex}
1276 This is pdfTeX 3.14...
1277 ...
1278 Output written on sample2e.pdf (3 pages, 142120 bytes).
1279 Transcript written on sample2e.log.
1280 \end{alltt}
1281 If this fails to find \filename{sample2e.tex} or other files,
1282 you may have interference from old environment variables or
1283 configuration files; we recommend unsetting all \TeX-related environment
1284 variables for a start. (For a deep analysis, you can ask \TeX{} to
1285 report on exactly what it is searching for, and finding; see ``Debugging
1286 actions'' on page~\pageref{sec:debugging}.)
1287
1288 \item Preview the PDF file, for example:
1289 \begin{alltt}
1290 > \Ucom{xpdf sample2e.pdf}
1291 \end{alltt}
1292 You should see a new window with a nice document explaining some of the
1293 basics of \LaTeX{}. (It's well worth reading, by the way, if you're new
1294 to \TeX.)
1295
1296 Of course there are many other PDF viewers; on Unix systems,
1297 \cmdname{evince} and \cmdname{okular} are commonly used. For Windows, we
1298 recommend trying Sumatra PDF
1299 (\url{https://www.sumatrapdfreader.org/free-pdf-reader.html}). No PDF
1300 viewers are included in \TL{}, so you must install whatever you want to
1301 use separately.
1302
1303 \item Of course you can still generate \TeX's original \dvi{} format:
1304 \begin{alltt}
1305 > \Ucom{latex sample2e.tex}
1306 \end{alltt}
1307
1308 \item And preview the \dvi{} online:
1309 \begin{alltt}
1310 > \Ucom{xdvi sample2e.dvi} # Unix
1311 > \Ucom{dviout sample2e.dvi} # Windows
1312 \end{alltt}
1313 You do have to be running under X for \cmdname{xdvi} to work; if
1314 you're not, or your \envname{DISPLAY} environment variable is set
1315 incorrectly, you'll get an error \samp{Can't open display}.
1316
1317 \item To create a \PS{} file from the \dvi:
1318 \begin{alltt}
1319 > \Ucom{dvips sample2e.dvi -o sample2e.ps}
1320 \end{alltt}
1321
1322 \item Or to create PDF from the \dvi{}, an alternate path to using
1323 pdf\TeX\ (or Xe\TeX\ or Lua\TeX) which can be useful sometimes:
1324 \begin{alltt}
1325 > \Ucom{dvipdfmx sample2e.dvi -o sample2e.pdf}
1326 \end{alltt}
1327
1328 \item Other standard test files you may find useful in addition to
1329 \filename{sample2e.tex}:
1330
1331 \begin{ttdescription}
1332 \item [small2e.tex] A simpler document than \filename{sample2e}, to
1333 reduce the input size if you're having troubles.
1334 \item [testpage.tex] Test if your printer introduces any offsets.
1335 \item [nfssfont.tex] For printing font tables and tests.
1336 \item [testfont.tex] Also for font tables, but using plain \TeX{}.
1337 \item [story.tex] The most canonical (plain) \TeX{} test file of all.
1338 You must type \samp{\bs bye} to the \code{*} prompt after \samp{tex
1339 story.tex}.
1340 \end{ttdescription}
1341
1342 \item If you have installed the \filename{xetex} package, you can test
1343 its access to system fonts as follows:
1344 \begin{alltt}
1345 > \Ucom{xetex opentype-info.tex}
1346 This is XeTeX, Version 3.14\dots
1347 ...
1348 Output written on opentype-info.pdf (1 page).
1349 Transcript written on opentype-info.log.
1350 \end{alltt}
1351
1352 If you get an error message saying ``Invalid fontname `Latin Modern
1353 Roman/ICU'\dots'', then you need to configure your system so that the
1354 fonts shipped with \TL\ can be found. See
1355 section~\ref{sec:font-conf-sys}.
1356
1357 \end{enumerate}
1358
1359 \htmlanchor{uninstall}
1360 \subsection{Uninstalling \TL}
1361 \label{sec:uninstall}
1362
1363 To uninstall \TL\ (after a successful installation):
1364
1365 \begin{alltt}
1366 > \Ucom{tlmgr uninstall --all}
1367 \end{alltt}
1368
1369 You will be asked for confirmation, else nothing will be done.
1370 (Without \code{-{}-all}, the \code{uninstall} action is used to remove
1371 individual packages.)
1372
1373 This does not remove user-specific directories, namely (see also
1374 section~{sec:texmftrees}):
1375
1376 \begin{ttdescription}
1377 \item [TEXMFCONFIG] This is intended for user configuration changes.
1378 If you want to preserve them, be sure you know how to recreate them
1379 before removing.
1380
1381 \item [TEXMFVAR] This is intended to store automatically-generated
1382 runtime data, such as local format files. Unless you've used it for
1383 other purposes, it should be safe to remove.
1384
1385 \item[TEXMFHOME] Contains only files you yourself installed, typically
1386 those not available in the distributions. Unless you are completely
1387 stopping using \TeX, or want to start over from scratch, you probably
1388 don't want to remove this.
1389
1390 \end{ttdescription}
1391
1392 \noindent You can find the directory paths for these variables by
1393 running \code{kpsewhich -var-value=\ttvar{var}}.
1394
1395 This \prog{tlmgr} uninstallation also does not undo post-install
1396 actions, such as \envname{PATH} changes in your shell initialization
1397 files and system access to the fonts in \TL\ (see
1398 section~\ref{sec:postinstall}). You must manually reverse such actions,
1399 if desired.
1400
1401 On Windows, uninstallation can be done through the \GUI; see
1402 section~\ref{sec:winfeatures}.
1403
1404
1405 \subsection{Links for additional downloadable software}
1406
1407 If you are new to \TeX{}, or otherwise need help with actually writing
1408 \TeX{} or \LaTeX{} documents, please visit
1409 \url{https://tug.org/begin.html} for some introductory resources.
1410
1411 Links for some other tools you may consider installing:
1412 \begin{description}
1413 \item[Ghostscript] \url{https://ghostscript.com/}, a free PostScript and
1414 PDF interpreter.
1415 \item[Perl] \url{https://perl.org/} with
1416 supplementary packages from CPAN, \url{https://cpan.org/}.
1417 \item[ImageMagick] \url{https://imagemagick.org}, for graphics
1418 processing and conversion.
1419 \item[NetPBM] \url{http://netpbm.sourceforge.net}, also for graphics.
1420
1421 \item[\TeX-oriented editors] There is a wide choice, and it is a matter of the
1422 user's taste. Here is a selection in alphabetical order (a few
1423 here are for Windows only).
1424 \begin{itemize*}
1425 \item \cmdname{GNU Emacs} is also available natively under Windows, see
1426 \url{https://www.gnu.org/software/emacs/emacs.html}.
1427 \item \cmdname{Emacs with Auc\TeX} for Windows is available from \CTAN.
1428 The AuC\TeX\ home page is \url{https://www.gnu.org/software/auctex}.
1429 \item \cmdname{SciTE} is available from
1430 \url{https://www.scintilla.org/SciTE.html}.
1431 \item \cmdname{Texmaker} is free software, available from
1432 \url{https://www.xm1math.net/texmaker}.
1433 \item \cmdname{TeXstudio} started as a fork of
1434 \cmdname{Texmaker} and given additional features; available from
1435 \url{https://texstudio.org/} and in the pro\TeX{}t distribution.
1436 \item \cmdname{TeXnicCenter} is free software, available from
1437 \url{https://www.texniccenter.org}.
1438 \item \cmdname{TeXworks} is free software, available from
1439 \url{https://tug.org/texworks} and installed as part of \TL\ for
1440 Windows (only).
1441 \item \cmdname{Vim} is free software, available from
1442 \url{https://www.vim.org}.
1443 \item \cmdname{WinEdt} is shareware available though
1444 \url{https://tug.org/winedt} or \url{https://www.winedt.com}.
1445 \item \cmdname{WinShell} is available from \url{https://www.winshell.de}.
1446 \end{itemize*}
1447 \end{description}
1448 For a much longer list of packages and programs, see
1449 \url{https://tug.org/interest.html}.
1450
1451
1452 \section{Specialized installations}
1453
1454 The previous sections described the basic installation process. Here we
1455 turn to some specialized cases.
1456
1457 \htmlanchor{tlsharedinstall}
1458 \subsection{Shared-user (or cross-machine) installations}
1459 \label{sec:sharedinstall}
1460
1461 \TL{} has been designed to be shared between different systems on a
1462 network. With a standard directory layout, no hard paths are
1463 configured: the locations for files needed by \TL{} programs are
1464 found relative to the programs. You can see this in the principal
1465 configuration file
1466 \filename{$TEXMFDIST/web2c/texmf.cnf}, which contains lines such as
1467 \begin{sverbatim}
1468 TEXMFROOT = $SELFAUTOPARENT
1469 ...
1470 TEXMFDIST = $TEXMFROOT/texmf-dist
1471 ...
1472 TEXMFLOCAL = $SELFAUTOGRANDPARENT/texmf-local
1473 \end{sverbatim}
1474 This means that adding the directory for \TL{} executables for their
1475 platform to their search path is sufficient to get a working setup.
1476
1477 By the same token, you can also install \TL{} locally and then move
1478 the entire hierarchy afterwards to a network location.
1479
1480 For Windows, \TL{} includes a launcher \filename{tlaunch}. Its main
1481 window contains menu entries and buttons for various \TeX-related
1482 programs and documentation, customizable via an \code{ini} file. On
1483 first use, it replicates the usual Windows-specific post-install,
1484 \emph{i.e.}, search path modification and file associations, but only
1485 for the current user. Therefore, workstations with access to \TL{} on
1486 the local network only need a menu shortcut for the launcher. See the
1487 \code{tlaunch} manual (\code{texdoc tlaunch}, or
1488 \url{https://ctan.org/pkg/tlaunch}).
1489
1490
1491 \htmlanchor{tlportable}
1492 \subsection{Portable (\USB{}) installations}
1493 \label{sec:portable-tl}
1494
1495 The \code{-portable} installer option (or \code{V} command in the text
1496 installer or corresponding \GUI{} option) creates a completely
1497 self-contained \TL{} installation under a common root and forgoes system
1498 integration. You can create such an installation directly on a \USB{}
1499 stick, or copy it to a \USB{} stick afterwards.
1500
1501 Technically, the portable installation is made self-contained by setting
1502 the default values of \envname{TEXMFHOME}, \envname{TEXMFVAR}, and
1503 \envname{TEXMFCONFIG} to be the same as \envname{TEXMFLOCAL},
1504 \envname{TEXMFSYSVAR}, and \envname{TEXMFSYSCONFIG} respectively; thus,
1505 per-user configuration and caches will not be created.
1506
1507 To run \TeX\ using this portable installation, you need to add the
1508 appropriate binary directory to the search path during your terminal
1509 session, as usual.
1510
1511 On Windows, you can double-click \filename{tl-tray-menu} at the root
1512 of the installation and create a temporary `tray menu' offering a
1513 choice of a few common tasks, as shown in this screenshot:
1514
1515 \medskip
1516 \tlpng{tray-menu}{4cm}
1517 \smallskip
1518
1519 \noindent The `More\ldots' entry explains how you can customize this menu.
1520
1521
1522 %\htmlanchor{tlisoinstall}
1523 %\subsection{\ISO\ (or \DVD) installations}
1524 %\label{sec:isoinstall}
1525 %
1526 %If you don't need to update or otherwise modify your installation often,
1527 %and\slash or have several systems on which to use \TL{}, it may be
1528 %convenient to create an \ISO\ of your \TL{} installation, because:
1529 %
1530 %\begin{itemize}
1531 %\item Copying an \ISO\ between different computers is much
1532 % faster than copying a normal installation.
1533 %\item If you are dual-booting between different operating systems
1534 % and want them to share a \TL{} installation, an \ISO
1535 % installation is not tied to the idiosyncrasies and limitations of
1536 % other mutually supported filesystems (FAT32, NTFS,
1537 % HFS+).
1538 %\item Virtual machines can simply mount such an \ISO.
1539 %\end{itemize}
1540 %
1541 %Of course you can also burn an \ISO\ to \DVD, if that is useful for you.
1542 %
1543 %Desktop \GNU/Linux/Unix systems, including \MacOSX, are able to
1544 %mount an \ISO. Windows 8 is the first(!) Windows version which can
1545 %do this. Apart from that, nothing changes compared to a normal hard
1546 %disk installation, see section \ref{sec:env}.
1547 %
1548 %When preparing such an \ISO\ installation, it is best to omit the
1549 %subdirectory for the release year, and have
1550 %\filename{texmf-local} at the same level as the other trees
1551 %(\filename{texmf-dist}, \filename{texmf-var}, etc.). You can do this with
1552 %the normal directory options in the installer.
1553 %
1554 %For a physical (rather than virtual) Windows system, you can burn
1555 %the \ISO\ to DVD. However, it may be worth your while to
1556 %investigate free \ISO-mounting options such as WinCDEmu at
1557 %\url{http://wincdemu.sysprogs.org/}.
1558 %
1559 %For Windows system integration, you can include the \filename{w32client}
1560 %scripts described in section~\ref{sec:sharedinstall} and at
1561 %\url{http://tug.org/texlive/w32client.html}, which work just as well for
1562 %an \ISO\ as for a network installation.
1563 %
1564 %On \MacOSX, TeXShop will be able to use the DVD
1565 %installation if a symlink \filename{/usr/texbin} points to the
1566 %appropriate binary directory, e.g.,
1567 %\begin{verbatim}
1568 %sudo ln -s /Volumes/MyTeXLive/bin/universal-darwin /usr/texbin
1569 %\end{verbatim}
1570 %
1571 %Historical note: \TL{} 2010 was the first \TL{} edition which was no
1572 %longer distributed `live'. However, it always required some acrobatics
1573 %to run from \DVD\ or \ISO; in particular, there was no way around
1574 %setting at least one extra environment variable. If you create your
1575 %\ISO\ from an existing installation then there is no need for this.
1576
1577
1578 \htmlanchor{tlmgr}
1579 \section{\cmdname{tlmgr}: Managing your installation}
1580 \label{sec:tlmgr}
1581
1582 \begin{figure}[tb]
1583 \tlpng{tlshell-macos}{\linewidth}
1584 \caption{\prog{tlshell} \GUI, showing the Actions menu (\MacOSX)}
1585 \label{fig:tlshell}
1586 \end{figure}
1587
1588 \begin{figure}[tb]
1589 \tlpng{tlcockpit-packages}{.8\linewidth}
1590 \caption{\prog{tlcockpit} \GUI{} for \prog{tlmgr}}
1591 \label{fig:tlcockpit}
1592 \end{figure}
1593
1594 \begin{figure}[tb]
1595 \tlpng{tlmgr-gui}{\linewidth}
1596 \caption{Legacy \prog{tlmgr} \GUI\ mode: main window, after `Load'}
1597 \label{fig:tlmgr-gui}
1598 \end{figure}
1599
1600 \TL{} includes a program named \prog{tlmgr} for managing \TL{} after the
1601 initial installation. Its capabilities include:
1602
1603 \begin{itemize*}
1604 \item installing, updating, backing up, restoring, and uninstalling
1605 individual packages, optionally taking dependencies into account;
1606 \item searching for and listing packages and their descriptions;
1607 \item listing, adding, and removing platforms;
1608 \item changing installation options such as paper size and source
1609 location (see section~\ref{sec:location}).
1610 \end{itemize*}
1611
1612 \prog{tlmgr}'s functionality completely subsumes the \prog{texconfig}
1613 program. We still distribute and maintain \prog{texconfig} for the sake
1614 of anyone used to its interface, but we recommend using \prog{tlmgr}
1615 nowadays.
1616
1617 \subsection{\GUI{} interfaces for \cmdname{tlmgr}}
1618
1619 \TL{} contains several \GUI{} front-ends for \prog{tlmgr}. Two notable
1620 ones: (1)~Figure~\ref{fig:tlshell} shows \cmdname{tlshell}, which is
1621 written in Tcl/Tk and runs out of the box under Windows and \MacOSX;
1622 (2)~Figure~\ref{fig:tlcockpit} shows \prog{tlcockpit}, which requires
1623 Java version~8 or higher and JavaFX. Both are separate packages.
1624
1625 \prog{tlmgr} also has a native \GUI{} mode (shown in
1626 figure~\ref{fig:tlmgr-gui}), which is started with:
1627 \begin{alltt}
1628 > \Ucom{tlmgr -gui}
1629 \end{alltt}
1630 However, this \GUI\ extension requires Perl/Tk, which module is no
1631 longer included in \TL's Perl distribution for Windows.
1632
1633 \subsection{Sample \cmdname{tlmgr} command-line invocations}
1634
1635 After the initial installation, you can update your system to the latest
1636 versions available with:
1637 \begin{alltt}
1638 > \Ucom{tlmgr update -all}
1639 \end{alltt}
1640 If this makes you nervous, first try
1641 \begin{alltt}
1642 > \Ucom{tlmgr update -all -dry-run}
1643 \end{alltt}
1644 or (less verbose):
1645 \begin{alltt}
1646 > \Ucom{tlmgr update -list}
1647 \end{alltt}
1648
1649 This more complex example adds a collection, for the engine \XeTeX, from
1650 a local directory:
1651
1652 \begin{alltt}
1653 > \Ucom{tlmgr -repository /local/mirror/tlnet install collection-xetex}
1654 \end{alltt}
1655 It generates the following output (abridged):
1656 \begin{fverbatim}
1657 install: collection-xetex
1658 install: arabxetex
1659 ...
1660 install: xetex
1661 install: xetexconfig
1662 install: xetex.i386-linux
1663 running post install action for xetex
1664 install: xetex-def
1665 ...
1666 running mktexlsr
1667 mktexlsr: Updating /usr/local/texlive/2021/texmf-dist/ls-R...
1668 ...
1669 running fmtutil-sys --missing
1670 ...
1671 Transcript written on xelatex.log.
1672 fmtutil: /usr/local/texlive/2021/texmf-var/web2c/xetex/xelatex.fmt installed.
1673 \end{fverbatim}
1674
1675 As you can see, \prog{tlmgr} installs dependencies, and takes care of any
1676 necessary post-install actions, including updating the filename database
1677 and (re)generating formats. In the above, we generated new formats for
1678 \XeTeX.
1679
1680 To describe a package (or collection or scheme):
1681 \begin{alltt}
1682 > \Ucom{tlmgr show collection-latexextra}
1683 \end{alltt}
1684 which produces output like this:
1685 \begin{fverbatim}
1686 package: collection-latexextra
1687 category: Collection
1688 shortdesc: LaTeX supplementary packages
1689 longdesc: A very large collection of add-on packages for LaTeX.
1690 installed: Yes
1691 revision: 46963
1692 sizes: 657941k
1693 \end{fverbatim}
1694
1695 Last and most important, for full documentation see
1696 \url{https://tug.org/texlive/tlmgr.html}, or:
1697 \begin{alltt}
1698 > \Ucom{tlmgr -help}
1699 \end{alltt}
1700
1701
1702 \section{Notes on Windows}
1703 \label{sec:windows}
1704
1705 \subsection{Windows-specific features}
1706 \label{sec:winfeatures}
1707
1708 Under Windows, the installer does some extra things:
1709 \begin{description}
1710 \item[Menus and shortcuts.] A new `\TL{}' submenu of the
1711 Start menu is installed, which contains entries for some \GUI{}
1712 programs (\prog{tlmgr}, \prog{texdoctk} and some documentation.
1713 \item[File associations.] If enabled, \prog{TeXworks} and \prog{Dviout}
1714 become either the default program for
1715 their respective filetypes, or get an entry in the `Open with'
1716 right-click menus of those filetypes.
1717 \item[Bitmap to eps converter.] Various bitmapped formats get an
1718 entry \cmdname{bitmap2eps} in their `Open with' right-click
1719 menu. Bitmap2eps is a simple script which lets \cmdname{sam2p} or
1720 \cmdname{bmeps} do the real work.
1721 \item[Automatic path adjustment.] No manual configuration steps are required.
1722 \item[Uninstaller.] The installer creates an entry under `Add/Remove
1723 Programs' for \TL. The uninstall tab of the \TeX\ Live Manager \GUI\
1724 refers to this. For a single-user install, the installer also
1725 creates an uninstall entry under the Start menu.
1726 \item[Write-protect.] For an admin install, the \TL\ directories are
1727 write-protected, at least if \TL\ is installed on a normal
1728 NTFS-formatted non-removable disk.
1729 \end{description}
1730
1731 Also, have a look at \filename{tlaunch}, described in
1732 section~\ref{sec:sharedinstall}, for a different approach.
1733
1734 \subsection{Additional software included on Windows}
1735
1736 To be complete, a \TL{} installation needs support packages that are not
1737 commonly found on a Windows machine. \TL{} provides the missing pieces.
1738 These programs are all installed as part of \TL{} only on Windows.
1739
1740 \begin{description}
1741 \item[Perl and Ghostscript.] Because of the importance of Perl and
1742 Ghostscript, \TL{} includes `hidden' copies of these
1743 programs. \TL{} programs that need them know where to find them,
1744 but they don't betray their presence through environment variables
1745 or registry settings. They aren't full-scale installations, and
1746 shouldn't interfere with any system installations of Perl or
1747 Ghostscript.
1748
1749 \item[dviout.] Also installed is \prog{dviout}, a DVI viewer.
1750 At first, when you preview files with \cmdname{dviout}, it will create
1751 fonts, because screen fonts were not installed. After a while, you
1752 will have created most of the fonts you use, and you will rarely see
1753 the font-creation window. More information can be found in the
1754 (highly recommended) on-line help.
1755
1756 \item[\TeX{}works.] \TeX{}works is a \TeX-oriented editor with
1757 an integrated PDF viewer.
1758
1759 \item[Command-line tools.] A number of Windows ports of common Unix
1760 command-line programs are installed along with the usual \TL{}
1761 binaries. These include \cmdname{gzip}, \cmdname{zip},
1762 \cmdname{unzip}, and the utilities from the \cmdname{poppler} suite
1763 (\cmdname{pdfinfo}, \cmdname{pdffonts}, \ldots); no standalone PDF
1764 viewer for Windows is included. One option for that is the Sumatra
1765 PDF viewer, available from \url{https://sumatrapdfreader.org/}.
1766
1767 \item[fc-list, fc-cache, \ldots] The tools from the fontconfig library allow
1768 \XeTeX{} to handle system fonts on Windows. You can use
1769 \prog{fc-list} to determine the font names to pass to \XeTeX's
1770 extended \cs{font} command. If necessary, run \prog{fc-cache}
1771 first to update font information.
1772
1773 \end{description}
1774
1775
1776 \subsection{User Profile is Home}
1777 \label{sec:winhome}
1778
1779 The Windows counterpart of a Unix home directory is the
1780 \verb|%USERPROFILE%| directory. Under Windows Vista and later it is
1781 \verb|C:\Users\<username>|. In the
1782 \filename{texmf.cnf} file, and \KPS{} in general, \verb|~| will
1783 expand appropriately on both Windows and Unix.
1784
1785
1786 \subsection{The Windows registry}
1787 \label{sec:registry}
1788
1789 Windows stores nearly all configuration data in its registry. The
1790 registry contains a set of hierarchically organized keys, with several
1791 root keys. The most important ones for installation programs are
1792 \path{HKEY_CURRENT_USER} and \path{HKEY_LOCAL_MACHINE}, \path{HKCU} and
1793 \path{HKLM} in short. The \path{HKCU} part of the registry is in the
1794 user's home directory (see section~\ref{sec:winhome}). \path{HKLM} is
1795 normally in a subdirectory of the Windows directory.
1796
1797 In some cases, system information could be obtained from environment
1798 variables but for other information, for example the location of
1799 shortcuts, it is necessary to consult the registry. Setting environment
1800 variables permanently also requires registry access.
1801
1802
1803 \subsection{Windows permissions}
1804 \label{sec:winpermissions}
1805
1806 In later versions of Windows, a distinction is made between regular
1807 users and administrators, where only the latter have free access to almost the
1808 entire operating system. We have made an effort to make \TL{}
1809 installable without administrative privileges.
1810
1811 If the installer is started with administrative permissions, there is an
1812 option to install for all users. If this option is chosen, shortcuts
1813 are created for all users, and the system search path is
1814 modified. Otherwise, shortcuts and menu entries are created for the
1815 current user, and the user search path is modified.
1816
1817 Regardless of administrator status, the default root of \TL{} proposed
1818 by the installer is always under \verb|%SystemDrive%|. The installer
1819 always tests whether the root is writable for the current user.
1820
1821 A problem may arise if the user is not an administrator and \TeX{}
1822 already exists in the search path. Since the effective search path
1823 consists of the system search path followed by the user search path, the
1824 new \TL{} would never get precedence. As a fallback, the installer
1825 creates a shortcut to the command-prompt in which the new \TL{} binary
1826 directory is prepended to the local search path. The new \TL{} will be
1827 always usable from within such a command-prompt. The shortcut for
1828 \TeX{}works, if installed, also prepends \TL{} to the search path, so it
1829 should also be immune to this path problem.
1830
1831 You should be aware that even if you are logged in as administrator, you
1832 need to explicitly ask for administrator privileges. In fact, there is
1833 not much point in logging in as administrator. Instead, right-clicking
1834 on the program or shortcut that you want to run usually gives you a
1835 choice `Run as administrator'.
1836
1837
1838 \subsection{Increasing maximum memory on Windows and Cygwin}
1839 \label{sec:cygwin-maxmem}
1840
1841 Windows and Cygwin (see section~\ref{sec:cygwin} for Cygwin installation
1842 specifics) users may find that they run out of memory when running some
1843 of the programs shipped with \TL. For example, \prog{asy} might run out
1844 of memory if you try to allocate an array of 25,000,000 reals, and
1845 Lua\TeX\ might run out of memory if you try to process a document with a
1846 lot of big fonts.
1847
1848 For Cygwin, you can increase the amount of available memory by following
1849 the instructions in the Cygwin User's Guide
1850 (\url{https://cygwin.com/cygwin-ug-net/setup-maxmem.html}).
1851
1852 For Windows, you have to create a file, say \code{moremem.reg}, with
1853 these four lines:
1854
1855 \begin{sverbatim}
1856 Windows Registry Editor Version 5.00
1857
1858 [HKEY_LOCAL_MACHINE\Software\Cygwin]
1859 "heap_chunk_in_mb"=dword:ffffff00
1860 \end{sverbatim}
1861
1862 \noindent and then execute the command \code{regedit /s moremem.reg} as
1863 administrator. (If you want to change memory only for the current user
1864 instead of system-wide, use \code{HKEY\_CURRENT\_USER}.)
1865
1866
1867 \section{A user's guide to Web2C}
1868
1869 \Webc{} is an integrated collection of \TeX-related programs: \TeX{}
1870 itself, \MF{}, \MP, \BibTeX{}, etc. It is the heart of \TL{}. The home
1871 page for \Webc{}, with the current manual and more, is
1872 \url{https://tug.org/web2c}.
1873
1874 A bit of history: The original implementation was by Tomas Rokicki who,
1875 in 1987, developed a first \TeX{}-to-C system based on change files
1876 under Unix, which were primarily the original work of Howard Trickey and
1877 Pavel Curtis. Tim Morgan became the maintainer of the system, and
1878 during this period the name changed to Web-to-C\@. In 1990, Karl Berry
1879 took over the work, assisted by dozens of additional contributors, and
1880 in 1997 he handed the baton to Olaf Weber, who returned it to Karl in
1881 2006.
1882
1883 The \Webc{} system runs on Unix, 32-bit Windows systems, \MacOSX{}, and
1884 other operating systems. It uses Knuth's original sources for \TeX{} and
1885 other basic programs written in the \web{} literate programming system
1886 and translates them into C source code. The core \TeX{} programs
1887 handled in this way are:
1888
1889 \begin{cmddescription}
1890 \item[bibtex] Maintaining bibliographies.
1891 \item[dvicopy] Expands virtual font references in \dvi{} files.
1892 \item[dvitomp] \dvi{} to MPX (MetaPost pictures).
1893 \item[dvitype] \dvi{} to human-readable text.
1894 \item[gftodvi] Generic font proofsheets.
1895 \item[gftopk] Generic to packed fonts.
1896 \item[gftype] GF to human-readable text.
1897 \item[mf] Creating typeface families.
1898 \item[mft] Prettyprinting \MF{} source.
1899 \item[mpost] Creating technical diagrams.
1900 \item[patgen] Creating hyphenation patterns.
1901 \item[pktogf] Packed to generic fonts.
1902 \item[pktype] PK to human-readable text.
1903 \item[pltotf] Plain text property list to TFM.
1904 \item[pooltype] Display \web{} pool files.
1905 \item[tangle] \web{} to Pascal.
1906 \item[tex] Typesetting.
1907 \item[tftopl] TFM to plain text property list.
1908 \item[vftovp] Virtual font to virtual property list.
1909 \item[vptovf] Virtual property list to virtual font.
1910 \item[weave] \web{} to \TeX.
1911 \end{cmddescription}
1912
1913 \noindent The precise functions and syntax of these programs are
1914 described in the documentation of the individual packages and of \Webc{}
1915 itself. However, knowing a few principles governing the whole family of
1916 programs will help you take advantage of your \Webc{} installation.
1917
1918 All programs honor these standard \GNU options:
1919 \begin{ttdescription}
1920 \item[-{}-help] print basic usage summary.
1921 \item[-{}-version] print version information, then exit.
1922 \end{ttdescription}
1923
1924 And most also honor:
1925 \begin{ttdescription}
1926 \item[-{}-verbose] print detailed progress report.
1927 \end{ttdescription}
1928
1929 For locating files the \Webc{} programs use the path searching library
1930 \KPS{} (\url{https://tug.org/kpathsea}). This library uses a combination
1931 of environment variables and configuration files to optimize searching
1932 the (huge) collection of \TeX{} files. \Webc{} can look at many
1933 directory trees simultaneously, which is useful in maintaining \TeX's
1934 standard distribution and local and personal extensions in distinct
1935 trees. To speed up file searches, the root of each tree has a file
1936 \file{ls-R}, containing an entry showing the name and relative pathname
1937 for all files under that root.
1938
1939
1940 \subsection{Kpathsea path searching}
1941 \label{sec:kpathsea}
1942
1943 Let us first describe the generic path searching mechanism of the \KPS{}
1944 library.
1945
1946 We call a \emph{search path} a colon- or semicolon\hyph sepa\-rated list
1947 of \emph{path elements}, which are basically directory names. A
1948 search path can come from (a combination of) many sources. To look up
1949 a file \samp{my-file} along a path \samp{.:/dir}, \KPS{} checks each
1950 element of the path in turn: first \file{./my-file}, then
1951 \file{/dir/my-file}, returning the first match (or possibly all
1952 matches).
1953
1954 In order to adapt optimally to all operating systems' conventions, on
1955 non-Unix systems \KPS{} can use filename separators different from
1956 colon (\samp{:}) and slash (\samp{/}).
1957
1958 To check a particular path element \var{p}, \KPS{} first checks if a
1959 prebuilt database (see ``Filename data\-base'' on
1960 page~\pageref{sec:filename-database}) applies to \var{p}, i.e., if the
1961 database is in a directory that is a prefix of \var{p}. If so, the path
1962 specification is matched against the contents of the database.
1963
1964 Although the simplest and most common path element is a directory
1965 name, \KPS{} supports additional features in search paths: layered
1966 default values, environment variable names, config file values, users'
1967 home directories, and recursive subdirectory searching. Thus, we say
1968 that \KPS{} \emph{expands} a path element, meaning it transforms all
1969 the specifications into basic directory name or names. This is
1970 described in the following sections in the same order as it takes
1971 place.
1972
1973 Note that if the filename being searched for is absolute or explicitly
1974 relative, i.e., starts with \samp{/} or \samp{./} or \samp{../},
1975 \KPS{} simply checks if that file exists.
1976
1977 \ifSingleColumn
1978 \else
1979 \begin{figure*}
1980 \verbatiminput{examples/ex5.tex}
1981 \setlength{\abovecaptionskip}{0pt}
1982 \caption{An illustrative configuration file sample}
1983 \label{fig:config-sample}
1984 \end{figure*}
1985 \fi
1986
1987 \subsubsection{Path sources}
1988 \label{sec:path-sources}
1989
1990 A search path can come from many sources. In the order in which
1991 \KPS{} uses them:
1992
1993 \begin{enumerate}
1994 \item
1995 A user-set environment variable, for instance, \envname{TEXINPUTS}\@.
1996 Environment variables with a period and a program name appended
1997 override; e.g., if \samp{latex} is the name of the program being run,
1998 then \envname{TEXINPUTS.latex} will override \envname{TEXINPUTS}.
1999 \item
2000 A program-specific configuration file, for exam\-ple, a line
2001 \samp{S /a:/b} in \cmdname{dvips}'s \file{config.ps}.
2002 \item A \KPS{} configuration file \file{texmf.cnf}, containing a line like
2003 \samp{TEXINPUTS=/c:/d} (see below).
2004 \item The compile-time default.
2005 \end{enumerate}
2006 \noindent You can see each of these values for a given search path by
2007 using the debugging options (see ``Debugging actions'' on
2008 page~\pageref{sec:debugging}).
2009
2010 \subsubsection{Config files}
2011
2012 \KPS{} reads \emph{runtime configuration files} named \file{texmf.cnf}
2013 for search path and other definitions. The search path
2014 \envname{TEXMFCNF} is used to look for these files, but we do not
2015 recommend setting this (or any) environment variable to override the
2016 system directories.
2017
2018 Instead, normal installation results in a file
2019 \file{.../2021/texmf.cnf}. If you must make changes to the defaults
2020 (not normally necessary), this is the place to put them. The main
2021 configuration file is in \file{.../2021/texmf-dist/web2c/texmf.cnf}.
2022 You should not edit this latter file, as your changes will be lost when
2023 the distributed version is updated.
2024
2025 As an aside, if you merely wish to add a personal directory to a
2026 particular search path, setting an environment variable is a reasonable
2027 method:
2028 \begin{verbatim}
2029 TEXINPUTS=.:/my/macro/dir:
2030 \end{verbatim}
2031 To keep the setting maintainable and portable over the years, use a
2032 trailing \samp{:} (\samp{;} on Windows) to insert the system paths,
2033 instead of trying to write them all out explicitly (see
2034 section~\ref{sec:default-expansion}). Another option is to use the
2035 \envname{TEXMFHOME} tree (see section~\ref{sec:directories}).
2036
2037 \emph{All} \file{texmf.cnf} files in the search path will be read and
2038 definitions in earlier files override those in later files. For
2039 example, with a search path of \verb|.:$TEXMF|, values from
2040 \file{./texmf.cnf} override those from \verb|$TEXMF/texmf.cnf|.
2041
2042 \begin{itemize*}
2043 \item
2044 Comments start with \code{\%}, either at the beginning of a line or
2045 preceded by whitespace, and continue to the end of the line.
2046 \item
2047 Blank lines are ignored.
2048 \item
2049 A \bs{} at the end of a line acts as a continuation character,
2050 i.e., the next line is appended. Whitespace at the beginning of
2051 continuation lines is not ignored.
2052 \item
2053 Each remaining line has the form:\\
2054 \hspace*{2em}\texttt{\var{variable} \textrm{[}.\var{progname}\textrm{]}
2055 \textrm{[}=\textrm{]} \var{value}}\\[1pt]
2056 where the \samp{=} and surrounding whitespace are optional.
2057 (But if \var{value} begins with \samp{.}, it is simplest to use the
2058 \samp{=} to avoid the period being interpreted as the program name
2059 qualifier.)
2060 \item
2061 The \ttvar{variable} name may contain any character other
2062 than whitespace, \samp{=}, or \samp{.}, but sticking to
2063 \samp{A-Za-z\_} is safest.
2064 \item
2065 If \samp{.\var{progname}} is present, the definition only
2066 applies if the program that is running is named
2067 \texttt{\var{progname}} or \texttt{\var{progname}.exe}. This allows
2068 different flavors of \TeX{} to have different search paths, for
2069 example.
2070 \item Considered as strings, \var{value} may contain any character.
2071 However, in practice most \file{texmf.cnf} values are related to path
2072 expansion, and since various special characters are used in expansion
2073 (see section~\ref{sec:cnf-special-chars}), such as braces and commas,
2074 they cannot be used in directory names.
2075
2076 A \samp{;} in \var{value} is translated to \samp{:} if running under
2077 Unix, in order to have a single \file{texmf.cnf} that can support both
2078 Unix and Windows systems. This translation happens with any value, not
2079 just search paths, but fortunately in practice \samp{;} is not needed
2080 in other values.
2081
2082 The \code{\$\var{var}.\var{prog}} feature is not available on the
2083 right-hand side; instead, you must use an additional variable.
2084
2085 \item
2086 All definitions are read before anything is expanded, so
2087 variables can be referenced before they are defined.
2088 \end{itemize*}
2089 A configuration file fragment illustrating most of these points is
2090 \ifSingleColumn
2091 shown below:
2092
2093 \verbatiminput{examples/ex5.tex}
2094 \else
2095 shown in figure~\ref{fig:config-sample}.
2096 \fi
2097
2098 \subsubsection{Path expansion}
2099 \label{sec:path-expansion}
2100
2101 \KPS{} recognizes certain special characters and constructions in
2102 search paths, similar to those available in Unix shells. As a
2103 general example, the path
2104 \verb+~$USER/{foo,bar}//baz+, expands to all subdirectories under
2105 directories \file{foo} and \file{bar} in \texttt{\$USER}'s home
2106 directory that contain a directory or file \file{baz}. These
2107 expansions are explained in the sections below.
2108 %$
2109 \subsubsection{Default expansion}
2110 \label{sec:default-expansion}
2111
2112 If the highest-priority search path (see ``Path sources'' on
2113 page~\pageref{sec:path-sources}) contains an \emph{extra colon} (i.e.,
2114 leading, trailing, or doubled), \KPS{} inserts at that point the
2115 next-highest-prio\-rity search path that is defined. If that inserted
2116 path has an extra colon, the same happens with the next highest. For
2117 example, given an environment variable setting
2118
2119 \begin{alltt}
2120 > \Ucom{setenv TEXINPUTS /home/karl:}
2121 \end{alltt}
2122 and a \code{TEXINPUTS} value from \file{texmf.cnf} of
2123
2124 \begin{alltt}
2125 .:\$TEXMF//tex
2126 \end{alltt}
2127 then the final value used for searching will be:
2128
2129 \begin{alltt}
2130 /home/karl:.:\$TEXMF//tex
2131 \end{alltt}
2132
2133 Since it would be useless to insert the default value in more than one
2134 place, \KPS{} changes only one extra \samp{:}\ and leaves any others in
2135 place. It checks first for a leading \samp{:}, then a trailing
2136 \samp{:}, then a doubled \samp{:}.
2137
2138 \subsubsection{Brace expansion}
2139 \label{sec:brace-expansion}
2140
2141 A useful feature is brace expansion, which means that, for instance,
2142 \verb+v{a,b}w+ expands to \verb+vaw:vbw+. Nesting is allowed.
2143 This is used to implement multiple \TeX{} hierarchies, by
2144 assigning a brace list to \code{\$TEXMF}.
2145 In the distributed \file{texmf.cnf}, a definition like this
2146 (simplified for this example) is made:
2147 \begin{verbatim}
2148 TEXMF = {$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFDIST}
2149 \end{verbatim}
2150 We then use this to define, for example, the \TeX\ input path:
2151 \begin{verbatim}
2152 TEXINPUTS = .;$TEXMF/tex//
2153 \end{verbatim}
2154 %$
2155 which means that, after looking in the current directory, the
2156 \code{\$TEXMFVAR/tex}, \code{\$TEXMFHOME/tex}, \code{\$TEXMFLOCAL/tex}
2157 and \code{\$TEXMFDIST/tex} trees will be searched (the
2158 last two using \file{ls-R} data base files).
2159
2160 \subsubsection{Subdirectory expansion}
2161 \label{sec:subdirectory-expansion}
2162
2163 Two or more consecutive slashes in a path element following a directory
2164 \var{d} is replaced by all subdirectories of \var{d\/}: first those
2165 subdirectories directly under \var{d}, then the subsubdirectories under
2166 those, and so on. At each level, the order in which the directories are
2167 searched is \emph{unspecified}.
2168
2169 If you specify any filename components after the \samp{//}, only
2170 subdirectories with matching components are included. For example,
2171 \samp{/a//b} expands into directories \file{/a/1/b}, \file{/a/2/b},
2172 \file{/a/1/1/b}, and so on, but not \file{/a/b/c} or \file{/a/1}.
2173
2174 Multiple \samp{//} constructs in a path are possible, but
2175 \samp{//} at the beginning of a path is ignored.
2176
2177 \subsubsection{Summary of special characters in \file{texmf.cnf} files}
2178 \label{sec:cnf-special-chars}
2179
2180 The following list summarizes the special characters and constructs in
2181 \KPS{} configuration files.
2182
2183 % need a wider space for the item labels here.
2184 \newcommand{\CODE}[1]{\makebox[3em][l]{\code{#1}}}
2185 \begin{ttdescription}
2186 \item[\CODE{:}] Separator in path specification; at the beginning or
2187 the end of a path, or doubled in the middle, it substitutes the
2188 default path expansion.\par
2189 \item[\CODE{;}] Separator on non-Unix systems (acts like \code{:}).
2190 \item[\CODE{\$}] Variable expansion.
2191 \item[\CODE{\string~}] Represents the user's home directory.
2192 \item[\CODE{\char`\{...\char`\}}] Brace expansion.
2193 \item[\CODE{,}] Separates items in brace expansion.
2194 \item[\CODE{//}] Subdirectory expansion (can occur anywhere in
2195 a path, except at its beginning).
2196 \item[\CODE{\%{\rm\ and }\#}] Start of comment.
2197 \item[\CODE{\bs}] At the end of a line, continuation character to allow
2198 multi-line entries.
2199 \item[\CODE{!!}] Search \emph{only} database to locate file, \emph{do
2200 not} search the disk.
2201 \end{ttdescription}
2202
2203 Exactly when a character will be considered special or act as itself
2204 depends on the context in which it is used. The rules are inherent in
2205 the multiple levels of interpretation of the configuration (parsing,
2206 expansion, search, \ldots)\ and so cannot be concisely stated,
2207 unfortunately. There is no general escape mechanism; in particular,
2208 \samp{\bs} is not an ``escape character'' in \file{texmf.cnf} files.
2209
2210 When it comes choosing directory names for installation, it is safest to
2211 avoid them all.
2212
2213 \subsection{Filename databases}
2214 \label{sec:filename-database}
2215
2216 \KPS{} goes to some lengths to minimize disk accesses for searches.
2217 Nevertheless, in the standard \TL, or at any installation with enough
2218 directories, searching every possible directory for a given file will
2219 take an excessively long time. Therefore, \KPS{} can use an
2220 externally-built plain text ``database'' file named \file{ls-R} that
2221 maps files to directories, thus avoiding the need to exhaustively search
2222 the disk.
2223
2224 A second database file \file{aliases} allows you to give additional
2225 names to the files listed in \file{ls-R}.
2226
2227 \subsubsection{The filename database}
2228 \label{sec:ls-R}
2229
2230 As explained above, the name of the main filename database must be
2231 \file{ls-R}. You can put one at the root of each \TeX{} hierarchy in
2232 your installation that you wish to be searched (\code{\$TEXMF} by
2233 default). \KPS{} looks for
2234 \file{ls-R} files along the \code{TEXMFDBS} path.
2235
2236 The recommended way to create and maintain \samp{ls-R} is to run the
2237 \code{mktexlsr} script included with the distribution. It is invoked
2238 by the various \samp{mktex}\dots\ scripts. In principle, this script
2239 just runs the command
2240 \begin{alltt}
2241 cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R
2242 \end{alltt}
2243 presuming your system's \code{ls} produces the right output format
2244 (\GNU \code{ls} is all right). To ensure that the database is
2245 always up-to-date, it is easiest to rebuild it regularly via
2246 \code{cron}, so that it is automatically updated when the installed
2247 files change, such as after installing or updating a \LaTeX{} package.
2248
2249 If a file is not found in the database, by default \KPS{} goes ahead
2250 and searches the disk. If a particular path element begins with
2251 \samp{!!}, however, \emph{only} the database will be searched for that
2252 element, never the disk.
2253
2254
2255 \subsubsection{kpsewhich: Standalone path searching}
2256 \label{sec:invoking-kpsewhich}
2257
2258 The \texttt{kpsewhich} program exercises path searching independent of any
2259 particular application. This can be useful as a sort of \code{find}
2260 program to locate files in \TeX{} hierarchies (this is used heavily in
2261 the distributed \samp{mktex}\dots\ scripts).
2262
2263 \begin{alltt}
2264 > \Ucom{kpsewhich \var{option}\dots{} \var{filename}\dots{}}
2265 \end{alltt}
2266 The options specified in \ttvar{option} start with either \samp{-}
2267 or \samp{-{}-}, and any unambiguous abbreviation is accepted.
2268
2269 \KPS{} looks up each non-option argument on the command line as a
2270 filename, and returns the first file found. There is no option to
2271 return all the files with a particular name (you can run the Unix
2272 \samp{find} utility for that).
2273
2274 The most common options are described next.
2275
2276 \begin{ttdescription}
2277 \item[\texttt{-{}-dpi=\var{num}}]\mbox{}
2278 Set the resolution to \ttvar{num}; this only affects \samp{gf}
2279 and \samp{pk} lookups. \samp{-D} is a synonym, for compatibility
2280 with \cmdname{dvips}. Default is 600.
2281
2282 \item[\texttt{-{}-format=\var{name}}]\mbox{}\\
2283 Set the format for lookup to \ttvar{name}. By default, the
2284 format is guessed from the filename. For formats which do not have
2285 an associated unambiguous suffix, such as \MP{} support files and
2286 \cmdname{dvips} configuration files, you have to specify the name as
2287 known to \KPS{}, such as \texttt{tex} or \texttt{enc files}. Run
2288 \texttt{kpsewhich -{}-help-formats} for a list.
2289
2290 \item[\texttt{-{}-mode=\var{string}}]\mbox{}\\
2291 Set the mode name to \ttvar{string}; this only affects \samp{gf}
2292 and \samp{pk} lookups. No default: any mode will be found.
2293 \item[\texttt{-{}-must-exist}]\mbox{}\\
2294 Do everything possible to find the files, notably including
2295 searching the disk. By default, only the \file{ls-R} database is
2296 checked, in the interest of efficiency.
2297 \item[\texttt{-{}-path=\var{string}}]\mbox{}\\
2298 Search along the path \ttvar{string} (colon-separated as usual),
2299 instead of guessing the search path from the filename. \samp{//} and
2300 all the usual expansions are supported. The options \samp{-{}-path}
2301 and \samp{-{}-format} are mutually exclusive.
2302 \item[\texttt{-{}-progname=\var{name}}]\mbox{}\\
2303 Set the program name to \texttt{\var{name}}.
2304 This can affect the search paths via the \texttt{.\var{progname}}
2305 feature.
2306 The default is \cmdname{kpsewhich}.
2307 \item[\texttt{-{}-show-path=\var{name}}]\mbox{}\\
2308 shows the path used for file lookups of file type \texttt{\var{name}}.
2309 Either a filename extension (\code{.pk}, \code{.vf}, etc.) or a
2310 name can be used, just as with \samp{-{}-format} option.
2311 \item[\texttt{-{}-debug=\var{num}}]\mbox{}\\
2312 sets the debugging options to \texttt{\var{num}}.
2313 \end{ttdescription}
2314
2315
2316 \subsubsection{Examples of use}
2317 \label{sec:examples-of-use}
2318
2319 Let us now have a look at \KPS{} in action. Here's a straightforward search:
2320
2321 \begin{alltt}
2322 > \Ucom{kpsewhich article.cls}
2323 /usr/local/texmf-dist/tex/latex/base/article.cls
2324 \end{alltt}
2325 We are looking for the file \file{article.cls}. Since the \samp{.cls}
2326 suffix is unambiguous we do not need to specify that we want to look for a
2327 file of type \optname{tex} (\TeX{} source file directories). We find it in
2328 the subdirectory \file{tex/latex/base} below the \samp{texmf-dist} \TL\
2329 directory. Similarly, all of the following are found without problems
2330 thanks to their unambiguous suffix.
2331 \begin{alltt}
2332 > \Ucom{kpsewhich array.sty}
2333 /usr/local/texmf-dist/tex/latex/tools/array.sty
2334 > \Ucom{kpsewhich latin1.def}
2335 /usr/local/texmf-dist/tex/latex/base/latin1.def
2336 > \Ucom{kpsewhich size10.clo}
2337 /usr/local/texmf-dist/tex/latex/base/size10.clo
2338 > \Ucom{kpsewhich small2e.tex}
2339 /usr/local/texmf-dist/tex/latex/base/small2e.tex
2340 > \Ucom{kpsewhich tugboat.bib}
2341 /usr/local/texmf-dist/bibtex/bib/beebe/tugboat.bib
2342 \end{alltt}
2343
2344 By the way, that last is a \BibTeX{} bibliography database for
2345 \textsl{TUGboat} articles.
2346
2347 \begin{alltt}
2348 > \Ucom{kpsewhich cmr10.pk}
2349 \end{alltt}
2350 Font bitmap glyph files of type \file{.pk} are used by display
2351 programs like \cmdname{dvips} and \cmdname{xdvi}. Nothing is returned in
2352 this case since there are no pre-generated Computer Modern \samp{.pk}
2353 files in \TL{}\Dash the Type~1 variants are used by default.
2354 \begin{alltt}
2355 > \Ucom{kpsewhich wsuipa10.pk}
2356 \ifSingleColumn /usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.600pk
2357 \else /usr/local/texmf-var/fonts/pk/ljfour/public/
2358 ... wsuipa/wsuipa10.600pk
2359 \fi\end{alltt}
2360 For these fonts (a phonetic alphabet from the University of Washington)
2361 we had to generate \samp{.pk} files, and since the default \MF{} mode on
2362 our installation is \texttt{ljfour} with a base resolution of 600\dpi{}
2363 (dots per inch), this instantiation is returned.
2364 \begin{alltt}
2365 > \Ucom{kpsewhich -dpi=300 wsuipa10.pk}
2366 \end{alltt}
2367 In this case, when specifying that we are interested in a resolution
2368 of 300\dpi{} (\texttt{-dpi=300}) we see that no such font is available on
2369 the system. A program like \cmdname{dvips} or \cmdname{xdvi} would
2370 go off and actually build the required \texttt{.pk} files
2371 using the script \cmdname{mktexpk}.
2372
2373 Next we turn our attention to \cmdname{dvips}'s header and configuration
2374 files. We first look at one of the commonly used files, the general
2375 prologue \file{tex.pro} for \TeX{} support, before turning our attention
2376 to the generic configuration file (\file{config.ps}) and the \PS{} font
2377 map \file{psfonts.map}\Dash as of 2004, map and encoding files have
2378 their own search paths and new location in \dirname{texmf} trees. As
2379 the \samp{.ps} suffix is ambiguous we have to specify explicitly which
2380 type we are considering (\optname{dvips config}) for the file
2381 \texttt{config.ps}.
2382 \begin{alltt}
2383 > \Ucom{kpsewhich tex.pro}
2384 /usr/local/texmf/dvips/base/tex.pro
2385 > \Ucom{kpsewhich --format="dvips config" config.ps}
2386 /usr/local/texmf/dvips/config/config.ps
2387 > \Ucom{kpsewhich psfonts.map}
2388 /usr/local/texmf/fonts/map/dvips/updmap/psfonts.map
2389 \end{alltt}
2390
2391 We now take a closer look at the URW Times \PS{} support
2392 files. The prefix for these in the standard font naming scheme is
2393 \samp{utm}. The first file we look at is the configuration file,
2394 which contains the name of the map file:
2395 \begin{alltt}
2396 > \Ucom{kpsewhich --format="dvips config" config.utm}
2397 /usr/local/texmf-dist/dvips/psnfss/config.utm
2398 \end{alltt}
2399 The contents of that file is
2400 \begin{alltt}
2401 p +utm.map
2402 \end{alltt}
2403 which points to the file \file{utm.map}, which we want to
2404 locate next.
2405 \begin{alltt}
2406 > \Ucom{kpsewhich utm.map}
2407 /usr/local/texmf-dist/fonts/map/dvips/times/utm.map
2408 \end{alltt}
2409 This map file defines the file names of the Type~1 \PS{} fonts in
2410 the URW collection. Its contents look like (we only show part of the
2411 lines):
2412 \begin{alltt}
2413 utmb8r NimbusRomNo9L-Medi ... <utmb8a.pfb
2414 utmbi8r NimbusRomNo9L-MediItal... <utmbi8a.pfb
2415 utmr8r NimbusRomNo9L-Regu ... <utmr8a.pfb
2416 utmri8r NimbusRomNo9L-ReguItal... <utmri8a.pfb
2417 utmbo8r NimbusRomNo9L-Medi ... <utmb8a.pfb
2418 utmro8r NimbusRomNo9L-Regu ... <utmr8a.pfb
2419 \end{alltt}
2420 Let us, for instance, take the Times Roman instance
2421 \file{utmr8a.pfb} and find its position in the \file{texmf} directory
2422 tree with a search for Type~1 font files:
2423 \begin{alltt}
2424 > \Ucom{kpsewhich utmr8a.pfb}
2425 \ifSingleColumn /usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.pfb
2426 \else /usr/local/texmf-dist/fonts/type1/
2427 ... urw/utm/utmr8a.pfb
2428 \fi\end{alltt}
2429
2430 It should be evident from these examples how you can easily locate the
2431 whereabouts of a given file. This is especially important if you suspect
2432 that the wrong version of a file is picked up somehow, since
2433 \cmdname{kpsewhich} will show you the first file encountered.
2434
2435 \subsubsection{Debugging actions}
2436 \label{sec:debugging}
2437
2438 Sometimes it is necessary to investigate how a program resolves file
2439 references. To make this practical, \KPS{} offers various levels of
2440 debugging output:
2441
2442 \begin{ttdescription}
2443 \item[\texttt{\ 1}] \texttt{stat} calls (disk lookups). When running
2444 with an up-to-date \file{ls-R} database this should almost give no
2445 output.
2446 \item[\texttt{\ 2}] References to hash tables (such as \file{ls-R}
2447 databases, map files, configuration files).
2448 \item[\texttt{\ 4}] File open and close operations.
2449 \item[\texttt{\ 8}] General path information for file types
2450 searched by \KPS. This is useful to find out where a particular
2451 path for the file was defined.
2452 \item[\texttt{16}] Directory list for each path element (only relevant
2453 for searches on disk).
2454 \item[\texttt{32}] File searches.
2455 \item[\texttt{64}] Variable values.
2456 \end{ttdescription}
2457 A value of \texttt{-1} will set all the above options; in practice,
2458 this is usually the most convenient.
2459
2460 Similarly, with the \cmdname{dvips} program, by setting a combination of
2461 debug switches, one can follow in detail where files are being picked up
2462 from. Alternatively, when a file is not found, the debug trace shows in
2463 which directories the program looks for the given file, so that one can
2464 get an indication what the problem~is.
2465
2466 Generally speaking, as most programs call the \KPS{} library
2467 internally, one can select a debug option by using the
2468 \envname{KPATHSEA\_DEBUG} environment variable, and setting it to (a
2469 combination of) values as described in the above list.
2470
2471 (Note for Windows users: it is not easy to redirect
2472 all messages to a file in this system. For diagnostic purposes
2473 you can temporarily \texttt{SET KPATHSEA\_DEBUG\_OUTPUT=err.log}).
2474
2475 Let us consider, as an example, a small \LaTeX{} source file,
2476 \file{hello-world.tex}, which contains the following input.
2477 \begin{verbatim}
2478 \documentclass{article}
2479 \begin{document}
2480 Hello World!
2481 \end{document}
2482 \end{verbatim}
2483 This little file only uses the font \file{cmr10}, so let us look at
2484 how \cmdname{dvips} prepares the \PS{} file (we want to use the Type~1
2485 version of the Computer Modern fonts, hence the option \texttt{-Pcms}).
2486 \begin{alltt}
2487 > \Ucom{dvips -d4100 hello-world -Pcms -o}
2488 \end{alltt}
2489 In this case we have combined \cmdname{dvips}'s debug class 4 (font
2490 paths) with \KPS's path element expansion (see the \cmdname{dvips}
2491 reference manual).
2492 The output (slightly rearranged) appears in
2493 Figure~\ref{fig:dvipsdbga}.
2494 \begin{figure*}[tp]
2495 \centering
2496 \input{examples/ex6a.tex}
2497 \caption{Finding configuration files}\label{fig:dvipsdbga}
2498 \end{figure*}
2499
2500 \cmdname{dvips} starts by locating its working files. First,
2501 \file{texmf.cnf} is found, which gives the definitions of the search
2502 paths for the other files, then the file database \file{ls-R} (to
2503 optimize file searching) and the file \file{aliases}, which makes it
2504 possible to declare several names (e.g., a short DOS-like 8.3 and
2505 a more natural longer version) for the same file. Then \cmdname{dvips}
2506 goes on to find the generic configuration file \file{config.ps}
2507 before looking for the customization file \file{.dvipsrc} (which, in
2508 this case is \emph{not found}). Finally, \cmdname{dvips} locates the
2509 config file for the Computer Modern \PS{} fonts \file{config.cms}
2510 (this was initiated with the \texttt{-Pcms} option on the \cmdname{dvips}
2511 command). This file contains the list of the map files which
2512 define the relation between the \TeX{}, \PS{} and file system
2513 names of the fonts.
2514 \begin{alltt}
2515 > \Ucom{more /usr/local/texmf/dvips/cms/config.cms}
2516 p +ams.map
2517 p +cms.map
2518 p +cmbkm.map
2519 p +amsbkm.map
2520 \end{alltt}
2521 \cmdname{dvips} thus goes on to find all these files, plus the generic
2522 map file \file{psfonts.map}, which is always loaded (it contains
2523 declarations for commonly used \PS{} fonts; see the last part of
2524 section~\ref{sec:examples-of-use} for more details about \PS{} map
2525 file handling).
2526
2527 At this point \cmdname{dvips} identifies itself to the user:
2528 \begin{alltt}
2529 This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com)
2530 \end{alltt}
2531 \ifSingleColumn
2532 Then it goes on to look for the prolog file \file{texc.pro}:
2533 \begin{alltt}\small
2534 kdebug:start search(file=texc.pro, must\_exist=0, find\_all=0,
2535 path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
2536 ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
2537 kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro
2538 \end{alltt}
2539 \else
2540 Then it goes on to look for the prolog file \file{texc.pro} (see
2541 Figure~\ref{fig:dvipsdbgb}).
2542 \fi
2543
2544 After having found the file in question, \cmdname{dvips} outputs
2545 the date and time, and informs us that it will generate the
2546 file \file{hello-world.ps}, then that it needs the font file
2547 \file{cmr10}, and that the latter is declared as ``resident'' (no
2548 bitmaps needed):
2549 \begin{alltt}\small
2550 TeX output 1998.02.26:1204' -> hello-world.ps
2551 Defining font () cmr10 at 10.0pt
2552 Font cmr10 <CMR10> is resident.
2553 \end{alltt}
2554 Now the search is on for the file \file{cmr10.tfm}, which is found,
2555 then a few more prolog files (not shown) are referenced, and finally
2556 the Type~1 instance \file{cmr10.pfb} of the font is located and
2557 included in the output file (see last line).
2558 \begin{alltt}\small
2559 kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0,
2560 path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
2561 /var/tex/fonts/tfm//).
2562 kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
2563 kdebug:start search(file=texps.pro, must\_exist=0, find\_all=0,
2564 ...
2565 <texps.pro>
2566 kdebug:start search(file=cmr10.pfb, must\_exist=0, find\_all=0,
2567 path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
2568 ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
2569 kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
2570 <cmr10.pfb>[1]
2571 \end{alltt}
2572
2573 \subsection{Runtime options}
2574
2575 Another useful feature of \Webc{} is its possibility to control a number
2576 of memory parameters (in particular, array sizes) via the runtime file
2577 \file{texmf.cnf} read by \KPS{}. The memory settings can be found in
2578 Part~3 of that file in the \TL{} distribution. The more important
2579 are:
2580
2581 \begin{ttdescription}
2582 \item[\texttt{main\_memory}]
2583 Total words of memory available, for
2584 \TeX{}, \MF{} and \MP. You must make a new format file for each
2585 different setting. For instance, you could generate a ``huge''
2586 version of \TeX{}, and call the format file \texttt{hugetex.fmt}.
2587 Using the standard way of specifying the program name used by \KPS{},
2588 the particular value of the \texttt{main\_memory} variable will then
2589 be read from \file{texmf.cnf}.
2590 \item[\texttt{extra\_mem\_bot}]
2591 Extra space for ``large'' \TeX{} data structures:
2592 boxes, glue, breakpoints, etc. Especially useful if you use
2593 \PiCTeX{}.
2594 \item[\texttt{font\_mem\_size}]
2595 Number of words for font information available for \TeX. This
2596 is more or less the total size of all TFM files read.
2597 \item[\texttt{hash\_extra}]
2598 Additional space for the hash table of control sequence names; its
2599 default value is \texttt{600000}.
2600 \end{ttdescription}
2601
2602 \noindent This facility is no substitute for truly dynamic
2603 arrays and memory allocation, but since these are extremely difficult to
2604 implement in the present \TeX{} source, these runtime parameters provide
2605 a practical compromise allowing some flexibility.
2606
2607 \htmlanchor{texmfdotdir}
2608 \subsection{\texttt{\$TEXMFDOTDIR}}
2609 \label{sec:texmfdotdir}
2610
2611 In various places above, we gave various search paths starting with
2612 \code{.} (to search the current directory first), as in
2613 \begin{alltt}\small
2614 TEXINPUTS=.;$TEXMF/tex//
2615 \end{alltt}
2616
2617 This is a simplification. The \code{texmf.cnf} file we distribute in
2618 \TL{} uses \filename{$TEXMFDOTDIR} instead of just \samp{.}, as in:
2619 \begin{alltt}\small
2620 TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex//
2621 \end{alltt}
2622 (In the distributed file, the second path element is also slightly more
2623 complicated than \filename{$TEXMF/tex//}. But that's minor; here we want
2624 to discuss the \filename{$TEXMFDOTDIR} feature.)
2625
2626 The reason to use the variable \filename{$TEXMFDOTDIR} in the path
2627 definitions instead of simply \samp{.} is purely so that it can be
2628 overridden. For example, a complex document may have many source files
2629 arranged in many subdirectories. To handle that, you can set
2630 \filename{TEXMFDOTDIR} to \filename{.//} (for example, in the environment when
2631 you build the document) and they will all get searched. (Warning: don't
2632 use \filename{.//} by default; it's usually highly undesirable, and
2633 potentially insecure, to search through all subdirectories for an
2634 arbitrary document.)
2635
2636 As another example, you may wish not to search the current directory at
2637 all, e.g., if you have arranged for all the files to be found via
2638 explicit paths. You can set \filename{$TEXMFDOTDIR} to, say,
2639 \filename{/nonesuch} or any nonexistent directory for this.
2640
2641 The default value of \filename{$TEXMFDOTDIR} is just \samp{.}, as set in our
2642 \filename{texmf.cnf}.
2643
2644 \htmlanchor{ack}
2645 \section{Acknowledgements}
2646
2647 \TL{} is a joint effort by virtually all of the \TeX{} user groups.
2648 This edition of \TL{} was overseen by Karl Berry. The other principal
2649 contributors, past and present, are listed below.
2650
2651 \begin{itemize*}
2652
2653 \item The English, German, Dutch, and Polish \TeX{} user groups
2654 (TUG, DANTE e.V., NTG, and GUST,
2655 respectively), which provide the necessary technical and administrative
2656 infrastructure. Please join the \TeX\ user group near you! (See
2657 \url{https://tug.org/usergroups.html}.)
2658
2659 \item The CTAN team (\url{https://ctan.org}), which distributes
2660 the \TL{} images and provides the common infrastructure for package
2661 updates, upon which \TL{} depends.
2662
2663 \item Nelson Beebe, for making many platforms available to \TL\
2664 developers, and his own comprehensive testing and unparalleled
2665 bibliographic efforts.
2666
2667 \item John Bowman, for making many changes to his advanced graphics
2668 program Asymptote to make it work in \TL.
2669
2670 \item Peter Breitenlohner and the \eTeX\ team for the stable foundation
2671 of future \TeX's, and Peter specifically for years of stellar help with
2672 \GNU\ autotools and keeping sources up to date. Peter passed away in
2673 October 2015, and we dedicate the continuing work to his memory.
2674
2675 \item Jin-Hwan Cho and all of the DVIPDFM$x$ team, for their
2676 excellent driver and responsiveness to configuration issues.
2677
2678 \item Thomas Esser, without whose marvelous \teTeX{} package \TL{}
2679 would have never existed.
2680
2681 \item Michel Goossens, who co-authored the original documentation.
2682
2683 \item Eitan Gurari, whose \TeX4ht is used to create the \HTML{}
2684 version of this documentation, and who worked tirelessly to improve it
2685 at short notice, every year. Eitan prematurely passed away in June
2686 2009, and we dedicate this documentation to his memory.
2687
2688 \item Hans Hagen, for much testing and making his \ConTeXt\ package
2689 (\url{https://pragma-ade.com}) work within \TL's framework, and
2690 continually driving \TeX\ development.
2691
2692 \item \Thanh, Martin Schr\"oder, and the pdf\TeX\ team
2693 (\url{http://pdftex.org}), for continuing enhancements of \TeX's
2694 abilities.
2695
2696 \item Hartmut Henkel, for significant development contributions to
2697 pdf\TeX\, Lua\TeX, and more.
2698
2699 \item Shunshaku Hirata, for much original and continuing work on DVIPDFM$x$.
2700
2701 \item Taco Hoekwater, for major renewed development efforts on MetaPost and
2702 (Lua)\TeX\ (\url{http://luatex.org}) itself, incorporating
2703 \ConTeXt\ into \TL, giving Kpathsea multi-threaded functionality, and
2704 much more.
2705
2706 \item Khaled Hosny, for substantial work on \XeTeX, DVIPDFM$x$, and
2707 efforts with Arabic and other fonts.
2708
2709 \item Pawe{\l} Jackowski, for the Windows installer \cmdname{tlpm},
2710 and Tomasz {\L}uczak, for \cmdname{tlpmgui}, used in past releases.
2711
2712 \item Akira Kakuto, for providing the Windows
2713 binaries from his W32TEX and W64TEX distributions for Japanese \TeX\
2714 (\url{http://w32tex.org}), and many other development contributions.
2715
2716 \item Jonathan Kew, for developing the remarkable \XeTeX{} engine and
2717 taking the time and trouble to integrate it in \TL{}, as well as the
2718 initial version of the Mac\TeX\ installer, and also for our recommended
2719 front-end \TeX{}works.
2720
2721 \item Hironori Kitagawa, for maintenance of (e)p\TeX\ and related support.
2722
2723 \item Dick Koch, for maintaining Mac\TeX\ (\url{https://tug.org/mactex})
2724 in very close tandem with \TL{}, and for his great good cheer in doing
2725 so.
2726
2727 \item Reinhard Kotucha, for major contributions to the \TL{} 2008
2728 infrastructure and installer, as well as Windows research efforts, the
2729 \texttt{getnonfreefonts} script, and more.
2730
2731 \item Siep Kroonenberg, also for major contributions to the \TL{} 2008
2732 infrastructure and installer, especially on Windows, and for the bulk of
2733 work updating this manual describing those features.
2734
2735 \item Clerk Ma, for engine bug fixes and extensions.
2736
2737 \item Mojca Miklavec, for much help with \ConTeXt, building many binary
2738 sets, and plenty more.
2739
2740 \item Heiko Oberdiek, for the \pkgname{epstopdf} package and many
2741 others, compressing the huge \pkgname{pst-geo} data files so we could
2742 include them, and most of all, for his remarkable work on
2743 \pkgname{hyperref}.
2744
2745 \item Phelype Oleinik, for the group-delimited \cs{input} across engines
2746 in 2020, and more.
2747
2748 \item Petr Ol\v{s}ak, who coordinated and checked all the Czech and Slovak
2749 material very carefully.
2750
2751 \item Toshio Oshima, for his \cmdname{dviout} previewer for Windows.
2752
2753 \item Manuel P\'egouri\'e-Gonnard, for helping with package updates,
2754 documentation improvements, and \cmdname{texdoc} development.
2755
2756 \item Fabrice Popineau, for the original Windows support in \TL{} and
2757 work on the French documentation.
2758
2759 \item Norbert Preining, the principal architect of the current \TL{}
2760 infrastructure and installer, and also for coordinating the Debian
2761 version of \TL{} (together with Frank K\"uster), and doing so much work
2762 along the way.
2763
2764 \item Sebastian Rahtz, for originally creating \TL{} and maintaining it
2765 for many years. Sebastian passed away in March 2016, and we dedicate
2766 the continuing work to his memory.
2767
2768 \item Luigi Scarso, for continuing development of MetaPost, Lua\TeX, and
2769 much more.
2770
2771 \item Andreas Scherer, for \texttt{cwebbin}, the CWEB implementation
2772 used in \TL{}, and continuing maintenance of the original CWEB.
2773
2774 \item Takuji Tanaka, for maintenance of (e)(u)p\TeX\ and related support.
2775
2776 \item Tomasz Trzeciak, for wide-ranging help with Windows.
2777
2778 \item Vladimir Volovich, for substantial help with porting and other
2779 maintenance issues, and especially for making it feasible to include
2780 \cmdname{xindy}.
2781
2782 \item Staszek Wawrykiewicz, a principal tester for all of \TL{},
2783 and coordinator of the many major Polish contributions: fonts, Windows
2784 installation, and more. Staszek passed away in February 2018, and we
2785 dedicate the continuing work to his memory.
2786
2787 \item Olaf Weber, for his patient maintenance of \Webc\ in past years.
2788
2789 \item Gerben Wierda, for creating and maintaining the original \MacOSX\
2790 support.
2791
2792 \item Graham Williams, the originator of the \TeX\ Catalogue.
2793
2794 \item Joseph Wright, for much work on making the same primitive
2795 functionality available across engines.
2796
2797 \item Hironobu Yamashita, for much work on p\TeX\ and related support.
2798
2799 \end{itemize*}
2800
2801 Builders of the binaries:
2802 Marc Baudoin (\pkgname{amd64-netbsd}, \pkgname{i386-netbsd}),
2803 Ken Brown (\pkgname{i386-cygwin}, \pkgname{x86\_64-cygwin}),
2804 Simon Dales (\pkgname{armhf-linux}),
2805 Johannes Hielscher (\pkgname{aarch64-linux}),
2806 Akira Kakuto (\pkgname{win32}),
2807 Dick Koch (\pkgname{universal-darwin}),
2808 Mojca Miklavec (\pkgname{amd64-freebsd},
2809 \pkgname{i386-freebsd},
2810 \pkgname{x86\_64-darwinlegacy},
2811 \pkgname{i386-solaris}, \pkgname{x86\_64-solaris},
2812 \pkgname{sparc-solaris}),
2813 Norbert Preining (\pkgname{i386-linux},
2814 \pkgname{x86\_64-linux},
2815 \pkgname{x86\_64-linuxmusl}).
2816 For information on the \TL{} build process, see
2817 \url{https://tug.org/texlive/build.html}.
2818
2819 Translators of this manual:
2820 Takuto Asakura (Japanese),
2821 Denis Bitouz\'e \& Patrick Bideault (French),
2822 Carlos Enriquez Figueras (Spanish),
2823 Jjgod Jiang, Jinsong Zhao, Yue Wang, \& Helin Gai (Chinese),
2824 Nikola Le\v{c}i\'c (Serbian),
2825 Marco Pallante \& Carla Maggi (Italian),
2826 Petr Sojka \& Jan Busa (Czech\slash Slovak),
2827 Boris Veytsman (Russian),
2828 Zofia Walczak (Polish),
2829 Uwe Ziegenhagen (German). The \TL{} documentation web page
2830 is \url{https://tug.org/texlive/doc.html}.
2831
2832 Of course the most important acknowledgement must go to Donald Knuth,
2833 first for inventing \TeX, and then for giving it to the world.
2834
2835
2836 \section{Release history}
2837 \label{sec:history}
2838
2839 \subsection{Past}
2840
2841 Discussion began in late 1993 when the Dutch \TeX{} Users Group was
2842 starting work on its 4All\TeX{} \CD{} for MS-DOS users, and it
2843 was hoped at that time to issue a single, rational, \CD{} for all
2844 systems. This was too ambitious a target for the time, but it did spawn
2845 not only the very successful 4All\TeX{} \CD{}, but also the TUG
2846 Technical Council working group on a \emph{\TeX{} Directory Structure}
2847 (\url{https://tug.org/tds}), which specified how to create consistent and
2848 manageable collections of \TeX{} support files. A complete draft of the
2849 \TDS{} was published in the December 1995 issue of \textsl{TUGboat}, and
2850 it was clear from an early stage that one desirable product would be a
2851 model structure on \CD{}. The distribution you now have is a very direct
2852 result of the working group's deliberations. It was also clear that the
2853 success of the 4All\TeX{} \CD{} showed that Unix users would benefit
2854 from a similarly easy system, and this is the other main strand of
2855 \TL.
2856
2857 We first undertook to make a new Unix-based \TDS{} \CD{} in the autumn
2858 of 1995, and quickly identified Thomas Esser's \teTeX{} as the ideal
2859 setup, as it already had multi-platform support and was built with
2860 portability across file systems in mind. Thomas agreed to help, and work
2861 began seriously at the start of 1996. The first edition was released in
2862 May 1996. At the start of 1997, Karl Berry completed a major new release
2863 of Web2c, which included nearly all the features which Thomas Esser had
2864 added in \teTeX, and we decided to base the 2nd edition of the \CD{} on
2865 the standard \Webc, with the addition of \teTeX's \texttt{texconfig}
2866 script. The 3rd edition of the \CD{} was based on a major revision of
2867 \Webc, 7.2, by Olaf Weber; at the same time, a new revision of \teTeX
2868 was being made, and \TL{} included almost all of its features. The
2869 4th edition followed the same pattern, using a new version of \teTeX,
2870 and a new release of \Webc{} (7.3). The system now included a complete
2871 Windows setup, thanks to Fabrice Popineau.
2872
2873 For the 5th edition (March 2000) many parts of the \CD{} were revised
2874 and checked, updating hundreds of packages. Package details were stored
2875 in XML files. But the major change for \TeX\ Live 5 was that all
2876 non-free software was removed. Everything in \TL{} is now intended
2877 to be compatible with the Debian Free Software Guidelines
2878 (\url{https://debian.org/intro/free}); we have done our best to check
2879 the license conditions of all packages, but we would very much
2880 appreciate hearing of any mistakes.
2881
2882 The 6th edition (July 2001) had much more material updated. The major
2883 change was a new install concept: the user could select a more exact set
2884 of needed collections. Language-related collections were completely
2885 reorganized, so selecting any of them installs not only macros, fonts,
2886 etc., but also prepares an appropriate \texttt{language.dat}.
2887
2888 The 7th edition of 2002 had the notable addition of \MacOSX{} support,
2889 and the usual myriad of updates to all sorts of packages and
2890 programs. An important goal was integration of the source back with
2891 \teTeX, to correct the drift apart in versions~5 and~6.
2892
2893 \subsubsection{2003}
2894
2895 In 2003, with the continuing flood of updates and additions, we found
2896 that \TL{} had grown so large it could no longer be contained on a
2897 single \CD, so we split it into three different distributions (see
2898 section~\ref{sec:tl-coll-dists}, \p.\pageref{sec:tl-coll-dists}). In
2899 addition:
2900
2901 \begin{itemize*}
2902 \item At the request of the \LaTeX{} team, we changed the standard
2903 \cmdname{latex} and \cmdname{pdflatex} commands to now use \eTeX{} (see
2904 \p.\pageref{text:etex}).
2905 \item The new Latin Modern fonts were included (and are recommended).
2906 \item Support for Alpha OSF was removed
2907 (HPUX support was removed previously), since no one had (or
2908 volunteered) hardware available on which to compile new binaries.
2909 \item Windows setup was substantially changed; for the first time
2910 an integrated environment based on XEmacs was introduced.
2911 \item Important supplementary programs for Windows
2912 (Perl, Ghost\-script, Image\-Magick, Ispell) are now installed
2913 in the \TL{} installation directory.
2914 \item Font map files used by \cmdname{dvips}, \cmdname{dvipdfm}
2915 and \cmdname{pdftex} are now generated by the new program
2916 \cmdname{updmap} and installed into \dirname{texmf/fonts/map}.
2917 \item \TeX{}, \MF{}, and \MP{} now, by default, output most input
2918 characters (32 and above) as themselves in output (e.g.,
2919 \verb|\write|) files,
2920 log files, and the terminal, i.e., \emph{not} translated using the
2921 \verb|^^| notation. In \TL{}~7, this translation was
2922 dependent on the system locale settings; now, locale settings do
2923 not influence the \TeX{} programs' behavior. If for some reason
2924 you need the \verb|^^| output, rename the file
2925 \verb|texmf/web2c/cp8bit.tcx|. (Future releases will have cleaner
2926 ways to control this.)
2927 \item This documentation was substantially revised.
2928 \item Finally, since the edition numbers had grown unwieldy,
2929 the version is now simply identified by the year: \TL{} 2003.
2930 \end{itemize*}
2931
2932
2933 \subsubsection{2004}
2934
2935 2004 saw many changes:
2936
2937 \begin{itemize}
2938
2939 \item If you have locally-installed fonts which use their own
2940 \filename{.map} or (much less likely) \filename{.enc} support files, you
2941 may need to move those support files.
2942
2943 \filename{.map} files are now searched for in subdirectories of
2944 \dirname{fonts/map} only (in each \filename{texmf} tree), along the
2945 \envname{TEXFONTMAPS} path. Similarly, \filename{.enc} files are now
2946 searched for in subdirectories of \dirname{fonts/enc} only, along the
2947 \envname{ENCFONTS} path. \cmdname{updmap} will attempt to warn about
2948 problematic files.
2949
2950 For methods of handling this and other information, please see
2951 \url{https://tug.org/texlive/mapenc.html}.
2952
2953 \item The \TK\ has been expanded with the addition of a \MIKTEX-based
2954 installable \CD, for those who prefer that implementation to Web2C.
2955 See section~\ref{sec:overview-tl} (\p.\pageref{sec:overview-tl}).
2956
2957 \item Within \TL, the single large \dirname{texmf} tree of previous
2958 releases has been replaced by three: \dirname{texmf},
2959 \dirname{texmf-dist}, and \dirname{texmf-doc}. See
2960 section~\ref{sec:tld} (\p.\pageref{sec:tld}), and the \filename{README}
2961 files for each.
2962
2963 \item All \TeX-related input files are now collected in
2964 the \dirname{tex} subdirectory of \dirname{texmf*} trees, rather than
2965 having separate sibling directories \dirname{tex}, \dirname{etex},
2966 \dirname{pdftex}, \dirname{pdfetex}, etc. See
2967 \CDref{texmf-dist/doc/generic/tds/tds.html\#Extensions}
2968 {\texttt{texmf-dist/doc/generic/tds/tds.html\#Extensions}}.
2969
2970 \item Helper scripts (not meant to be invoked by users) are now located
2971 in a new \dirname{scripts} subdirectory of \dirname{texmf*} trees, and
2972 can be searched for via \verb|kpsewhich -format=texmfscripts|. So if you have
2973 programs which call such scripts, they'll need to be adjusted. See
2974 \CDref{texmf-dist/doc/generic/tds/tds.html\#Scripts}
2975 {\texttt{texmf-dist/doc/generic/tds/tds.html\#Scripts}}.
2976
2977 \item Almost all formats leave most characters printable as
2978 themselves via the ``translation file'' \filename{cp227.tcx}, instead of
2979 translating them with the \verb|^^| notation. Specifically, characters
2980 at positions 32--256, plus tab, vertical tab, and form feed are
2981 considered printable and not translated. The exceptions are plain \TeX\
2982 (only 32--126 printable), \ConTeXt\ (0--255 printable), and the
2983 \OMEGA-related formats. This default behavior is almost the same as in
2984 \TL\,2003, but it's implemented more cleanly, with more possibilities
2985 for customization. See \CDref{texmf-dist/doc/web2c/web2c.html\#TCX-files}
2986 {\texttt{texmf-dist/doc/web2c/web2c.html\#TCX-files}}.
2987 (By the way, with Unicode input, \TeX\ may output partial character
2988 sequences when showing error contexts, since it is byte-oriented.)
2989
2990 \item \textsf{pdfetex} is now the default engine for all formats
2991 except (plain) \textsf{tex} itself. (Of course it generates DVI
2992 when run as \textsf{latex}, etc.) This means, among other things, that
2993 the microtypographic features of \textsf{pdftex} are available in
2994 \LaTeX, \ConTeXt, etc., as well as the \eTeX\ features
2995 (\OnCD{texmf-dist/doc/etex/base/}).
2996
2997 It also means it's \emph{more important than ever} to use the
2998 \pkgname{ifpdf} package (works with both plain and \LaTeX) or equivalent
2999 code, because simply testing whether \cs{pdfoutput} or some other
3000 primitive is defined is not a reliable way to determine if PDF
3001 output is being generated. We made this backward compatible as best we
3002 could this year, but next year, \cs{pdfoutput} may be defined even when
3003 DVI is being written.
3004
3005 \item pdf\TeX\ (\url{http://pdftex.org}) has many new features:
3006
3007 \begin{itemize*}
3008
3009 \item \cs{pdfmapfile} and \cs{pdfmapline} provide font map support
3010 from within a document.
3011
3012 \item Microtypographic font expansion can be used more easily.\\
3013 \url{http://www.ntg.nl/pipermail/ntg-pdftex/2004-May/000504.html}
3014
3015 \item All parameters previously set through the special configuration
3016 file \filename{pdftex.cfg} must now be set through primitives,
3017 typically in \filename{pdftexconfig.tex}; \filename{pdftex.cfg} is no
3018 longer supported. Any extant \filename{.fmt} files must be redumped
3019 when \filename{pdftexconfig.tex} is changed.
3020
3021 \item See the pdf\TeX\ manual for more: \OnCD{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}.
3022
3023 \end{itemize*}
3024
3025 \item The \cs{input} primitive in \cmdname{tex} (and \cmdname{mf} and
3026 \cmdname{mpost}) now accepts double quotes containing spaces and other
3027 special characters. Typical examples:
3028 \begin{verbatim}
3029 \input "filename with spaces" % plain
3030 \input{"filename with spaces"} % latex
3031 \end{verbatim}
3032 See the Web2C manual for more: \OnCD{texmf-dist/doc/web2c}.
3033
3034 \item enc\TeX\ support is now included within Web2C and consequently all
3035 \TeX\ programs, via the \optname{-enc} option\Dash \emph{only when
3036 formats are built}. enc\TeX\ supports general re-encoding of input and
3037 output, enabling full support of Unicode (in UTF-8). See
3038 \OnCD{texmf-dist/doc/generic/enctex/} and
3039 \url{http://olsak.net/enctex.html}.
3040
3041 \item Aleph, a new engine combining \eTeX\ and \OMEGA, is available.
3042 A little information is available in \OnCD{texmf-dist/doc/aleph/base}
3043 and \url{https://texfaq.org/FAQ-enginedev}. The
3044 \LaTeX-based format for Aleph is named \textsf{lamed}.
3045
3046 \item The latest \LaTeX\ release has a new version of the
3047 LPPL\Dash now officially a Debian-approved license. Assorted
3048 other updates, see the \filename{ltnews} files in
3049 \OnCD{texmf-dist/doc/latex/base}.
3050
3051 \item \cmdname{dvipng}, a new program for converting DVI to
3052 PNG image files, is included. See
3053 \url{https://ctan.org/pkg/dvipng}.
3054
3055 \item We reduced the \pkgname{cbgreek} package to a ``medium'' sized set
3056 of fonts, with the assent and advice of the author (Claudio Beccari).
3057 The excised fonts are the invisible, outline, and transparency ones,
3058 which are relatively rarely used, and we needed the space. The full set
3059 is of course available from CTAN (\url{https://ctan.org/pkg/cbgreek-complete}).
3060
3061 \item \cmdname{oxdvi} has been removed; just use \cmdname{xdvi}.
3062
3063 \item The \cmdname{ini} and \cmdname{vir} commands (links) for
3064 \cmdname{tex}, \cmdname{mf}, and \cmdname{mpost} are no longer created,
3065 such as \cmdname{initex}. The \cmdname{ini} functionality has been
3066 available through the command-line option \optname{-ini} for years now.
3067
3068 \item \textsf{i386-openbsd} platform support was removed. Since the
3069 \pkgname{tetex} package in the BSD Ports system is available, and
3070 GNU/Linux and FreeBSD binaries were available, it seemed
3071 volunteer time could be better spent elsewhere.
3072
3073 \item On \textsf{sparc-solaris} (at least), you may have to set the
3074 \envname{LD\_LIBRARY\_PATH} environment variable to run the
3075 \pkgname{t1utils} programs. This is because they are compiled with C++,
3076 and there is no standard location for the runtime libraries. (This is
3077 not new in 2004, but wasn't previously documented.) Similarly, on
3078 \textsf{mips-irix}, the MIPSpro 7.4 runtimes are required.
3079
3080 \end{itemize}
3081
3082 \subsubsection{2005}
3083
3084 2005 saw the usual huge number of updates to packages and programs.
3085 The infrastructure stayed relatively stable from 2004, but inevitably
3086 there were some changes there as well:
3087
3088 \begin{itemize}
3089
3090 \item New scripts \cmdname{texconfig-sys}, \cmdname{updmap-sys}, and
3091 \cmdname{fmtutil-sys} were introduced, which modify the
3092 configuration in the system trees. The \cmdname{texconfig},
3093 \cmdname{updmap}, and \cmdname{fmtutil} scripts now modify
3094 user-specific files, under \dirname{$HOME/.texlive2005}.
3095
3096 \item Corresponding new variables \envname{TEXMFCONFIG} and
3097 \envname{TEXMFSYSCONFIG} to specify the trees where configuration
3098 files (user or system, respectively) are found. Thus, you may
3099 need to move personal versions of \filename{fmtutil.cnf} and
3100 \filename{updmap.cfg} to these places; another option is to
3101 redefine \envname{TEXMFCONFIG} or \envname{TEXMFSYSCONFIG} in
3102 \filename{texmf.cnf}. In any case the real location of these files
3103 and the values of \envname{TEXMFCONFIG} and \envname{TEXMFSYSCONFIG}
3104 must agree.
3105 See section~\ref{sec:texmftrees}, \p.\pageref{sec:texmftrees}.
3106
3107 \item Last year, we kept \verb|\pdfoutput| and other primitives undefined
3108 for \dvi\ output, even though the \cmdname{pdfetex} program was
3109 being used. This year, as promised, we undid that compatibility
3110 measure. So if your document uses \verb|\ifx\pdfoutput\undefined|
3111 to test if PDF is being output, it will need to be changed. You
3112 can use the package \pkgname{ifpdf.sty} (which works under both
3113 plain \TeX\ and \LaTeX) to do this, or steal its logic.
3114
3115 \item Last year, we changed most formats to output (8-bit) characters as
3116 themselves (see previous section). The new TCX file
3117 \filename{empty.tcx} now provides an easier way to get the
3118 original \verb|^^| notation if you so desire, as in:
3119 \begin{verbatim}
3120 latex --translate-file=empty.tcx yourfile.tex
3121 \end{verbatim}
3122
3123 \item The new program \cmdname{dvipdfmx} is included for translation of
3124 DVI to PDF; this is an actively maintained update of
3125 \cmdname{dvipdfm} (which is also still available for now, though
3126 no longer recommended).
3127
3128 \item The new programs \cmdname{pdfopen} and \cmdname{pdfclose} are included
3129 to allow reloading of PDF files in the Adobe Acrobat Reader without
3130 restarting the program. (Other PDF readers, notably \cmdname{xpdf},
3131 \cmdname{gv}, and \cmdname{gsview}, have never suffered from this
3132 problem.)
3133
3134 \item For consistency, the variables \envname{HOMETEXMF} and
3135 \envname{VARTEXMF} have been renamed to \envname{TEXMFHOME} and
3136 \envname{TEXMFSYSVAR}, respectively. There is also
3137 \envname{TEXMFVAR}, which is by default user-specific. See the
3138 first point above.
3139
3140 \end{itemize}
3141
3142
3143 \subsubsection{2006--2007}
3144
3145 In 2006--2007, the major new addition to \TL{} was the \XeTeX{} program,
3146 available as the \texttt{xetex} and \texttt{xelatex} programs; see
3147 \url{https://scripts.sil.org/xetex}.
3148
3149 MetaPost also received a notable update, with more planned for the
3150 future (\url{https://tug.org/metapost/articles}), likewise pdf\TeX{}
3151 (\url{https://tug.org/applications/pdftex}).
3152
3153 The \TeX\ \filename{.fmt} (high-speed format) and the similar files for
3154 MetaPost and \MF\ are now stored in subdirectories of \dirname{texmf/web2c},
3155 instead of in the directory itself (although the directory is still
3156 searched, for the sake of existing \filename{.fmt}'s). The
3157 subdirectories are named for the `engine' in use, such as \filename{tex}
3158 or \filename{pdftex} or \filename{xetex}. This change should be
3159 invisible in normal use.
3160
3161 The (plain) \texttt{tex} program no longer reads \texttt{\%\&} first
3162 lines to determine what format to run; it is the pure Knuthian \TeX.
3163 (\LaTeX\ and everything else do still read \texttt{\%\&} lines).
3164
3165 Of course the year also saw (the usual) hundreds of other updates to
3166 packages and programs. As usual, please check CTAN
3167 (\url{https://ctan.org}) for updates.
3168
3169 Internally, the source tree is now stored in Subversion, with a standard
3170 web interface for viewing the tree, as linked from our home page.
3171 Although not visible in the final distribution, we expect this will
3172 provide a stable development foundation for future years.
3173
3174 Finally, in May 2006 Thomas Esser announced that he would no longer be
3175 updating te\TeX{} (\url{https://tug.org/tetex}). As a result, there was
3176 a surge of interest in \TL{}, especially among \GNU/Linux
3177 distributors. (There is a new \texttt{tetex} installation scheme in
3178 \TL{}, which provides an approximate equivalent.) We hope this will
3179 eventually translate to improvements in the \TeX\ environment for
3180 everyone.
3181
3182 \subsubsection{2008}
3183
3184 In 2008, the entire \TL{} infrastructure was redesigned and
3185 reimplemented. Complete information about an installation is now stored
3186 in a plain text file \filename{tlpkg/texlive.tlpdb}.
3187
3188 Among other things, this finally makes possible upgrading a \TL{}
3189 installation over the Internet after the initial installation, a feature
3190 MiK\TeX\ has provided for many years. We expect to regularly update new
3191 packages as they are released to \CTAN.
3192
3193 The major new engine Lua\TeX\ (\url{http://luatex.org}) is included;
3194 besides a new level of flexibility in typesetting, this provides an
3195 excellent scripting language for use both inside and outside of \TeX\
3196 documents.
3197
3198 Support among Windows and the Unix-based platforms is now much more
3199 uniform. In particular, most Perl and Lua scripts are now available on
3200 Windows, using the Perl internally distributed with \TL.
3201
3202 The new \cmdname{tlmgr} script (section~\ref{sec:tlmgr}) is the
3203 general interface for managing \TL{} after the initial installation.
3204 It handles package updates and consequent regeneration of formats, map
3205 files, and language files, optionally including local additions.
3206
3207 With the advent of \cmdname{tlmgr}, the \cmdname{texconfig} actions to
3208 edit the format and hyphenation configuration files are now disabled.
3209
3210 The \cmdname{xindy} indexing program
3211 (\url{http://xindy.sourceforge.net/}) is now included on most platforms.
3212
3213 The \cmdname{kpsewhich} tool can now report all matches for a given file
3214 (option \optname{-{}-all}) and limit matches to a given subdirectory
3215 (option \optname{-{}-subdir}).
3216
3217 The \cmdname{dvipdfmx} program now includes functionality to extract
3218 bounding box information, via the command name \cmdname{extractbb}; this
3219 was one of the last features provided by \cmdname{dvipdfm} not in
3220 \cmdname{dvipdfmx}.
3221
3222 The font aliases \filename{Times-Roman}, \filename{Helvetica}, and so on
3223 have been removed. Different packages expected them to behave
3224 differently (in particular, to have different encodings), and there was
3225 no good way to resolve this.
3226
3227 The \pkgname{platex} format has been removed, to resolve a name conflict
3228 with a completely different Japanese \pkgname{platex}; the
3229 \pkgname{polski} package is now the main Polish support.
3230
3231 Internally, the \web\ string pool files are now compiled into the
3232 binaries, to ease upgrades.
3233
3234 Finally, the changes made by Donald Knuth in his `\TeX\ tuneup of 2008'
3235 are included in this release. See
3236 \url{https://tug.org/TUGboat/Articles/tb29-2/tb92knut.pdf}.
3237
3238 \subsubsection{2009}
3239
3240 In 2009, the default output format for Lua\AllTeX\ is now PDF, to take
3241 advantage of Lua\TeX's OpenType support, et al. New executables named
3242 \code{dviluatex} and \code{dvilualatex} run Lua\TeX\ with DVI output.
3243 The Lua\TeX\ home page is \url{http://luatex.org}.
3244
3245 The original Omega engine and Lambda format have been excised, after
3246 discussions with the Omega authors. The updated Aleph and Lamed remain,
3247 as do the Omega utilities.
3248
3249 A new release of the AMS \TypeI\ fonts is included, including Computer
3250 Modern: a few shape changes made over the years by Knuth in the Metafont
3251 sources have been integrated, and the hinting has been updated. The
3252 Euler fonts have been thoroughly reshaped by Hermann Zapf (see
3253 \url{https://tug.org/TUGboat/Articles/tb29-2/tb92hagen-euler.pdf}). In
3254 all cases, the metrics remain unchanged. The AMS fonts home page is
3255 \url{https://ams.org/tex/amsfonts.html}.
3256
3257 The new \GUI{} front end \TeX{}works is included for Windows, and also in
3258 Mac\TeX. For other platforms, and more information, see the \TeX{}works
3259 home page, \url{https://tug.org/texworks}. It is a cross-platform
3260 front-end inspired by the \MacOSX\ TeXShop editor, aiming at
3261 ease-of-use.
3262
3263 The graphics program Asymptote is included for several platforms. This
3264 implements a text-based graphics description language vaguely akin to
3265 MetaPost, but with advanced 3D support and other features. Its home
3266 page is \url{https://asymptote.sourceforge.io}.
3267
3268 The separate \code{dvipdfm} program has been replaced by
3269 \code{dvipdfmx}, which operates in a special compatibility mode under
3270 that name. \code{dvipdfmx} includes CJK support and has
3271 accumulated many other fixes over the years since the last
3272 \code{dvipdfm} release.
3273
3274 Executables for the \pkgname{cygwin} and \pkgname{i386-netbsd} platforms
3275 are now included, while we were advised that OpenBSD users get
3276 \TeX\ through their package systems, plus there were difficulties in
3277 making binaries that have a chance of working on more than one version.
3278
3279 A miscellany of smaller changes: we now use \pkgname{xz} compression,
3280 the stable replacement for \pkgname{lzma}
3281 (\url{https://tukaani.org/xz/}); a literal |$| is allowed in filenames
3282 when it does not introduce a known variable name; the Kpathsea library
3283 is now multi-threaded (made use of in MetaPost); the entire \TL{} build
3284 is now based on Automake.
3285
3286 Final note on the past: all releases of \TL{}, along with ancillary
3287 material such as \CD\ labels, are available at
3288 \url{ftp://tug.org/historic/systems/texlive}.
3289
3290
3291 \subsubsection{2010}
3292 \label{sec:2010news} % keep with 2010
3293
3294 In 2010, the default version for PDF output is now 1.5, enabling more
3295 compression. This applies to all the \TeX\ engines when used to produce
3296 PDF and to \code{dvipdfmx}. Loading the \pkgname{pdf14} \LaTeX\ package
3297 changes back to PDF~1.4, or set |\pdfminorversion=4|.
3298
3299 pdf\AllTeX\ now \emph{automatically} converts a requested Encapsulated
3300 PostScript (EPS) file to PDF, via the \pkgname{epstopdf} package, when
3301 and if the \LaTeX\ \code{graphics.cfg} configuration file is loaded, and
3302 PDF is being output. The default options are intended to eliminate any
3303 chance of hand-created PDF files being overwritten, but you can also
3304 prevent \code{epstopdf} from being loaded at all by putting
3305 |\newcommand{\DoNotLoadEpstopdf}{}| (or |\def...|) before the
3306 \cs{documentclass} declaration. It is also not loaded if the
3307 \pkgname{pst-pdf} package is used. For more details, see the
3308 \pkgname{epstopdf} package documentation
3309 (\url{https://ctan.org/pkg/epstopdf-pkg}).
3310
3311 A related change is that execution of a very few external commands from
3312 \TeX, via the \cs{write18} feature, is now enabled by default. These
3313 commands are \code{repstopdf}, \code{makeindex}, \code{kpsewhich},
3314 \code{bibtex}, and \code{bibtex8}; the list is defined in
3315 \code{texmf.cnf}. Environments which must disallow all such external
3316 commands can deselect this option in the installer (see
3317 section~\ref{sec:options}), or override the value after installation by
3318 running |tlmgr conf texmf shell_escape 0|.
3319
3320 Yet another related change is that \BibTeX\ and Makeindex now refuse to
3321 write their output files to an arbitrary directory (like \TeX\ itself),
3322 by default. This is so they can now be enabled for use by the
3323 restricted \cs{write18}. To change this, the \envname{TEXMFOUTPUT}
3324 environment variable can be set, or the |openout_any| setting changed.
3325
3326 \XeTeX\ now supports margin kerning along the same lines as pdf\TeX.
3327 (Font expansion is not presently supported.)
3328
3329 By default, \prog{tlmgr} now saves one backup of each package updated
3330 (\code{tlmgr option autobackup 1}), so broken package updates can be
3331 easily reverted with \code{tlmgr restore}. If you do post-install
3332 updates, and don't have the disk space for the backups, run \code{tlmgr
3333 option autobackup 0}.
3334
3335 New programs included: the p\TeX\ engine and related utilities for
3336 typesetting Japanese; the \BibTeX{}U program for Unicode-enabled
3337 \BibTeX; the \prog{chktex} utility
3338 (originally from \url{http://baruch.ev-en.org/proj/chktex}) for checking
3339 \AllTeX\
3340 documents; the \prog{dvisvgm} (\url{https://dvisvgm.de})
3341 DVI-to-SVG translator.
3342
3343 Executables for these new platforms are now included: \code{amd64-freebsd},
3344 \code{amd64-kfreebsd}, \code{i386-freebsd}, \code{i386-kfreebsd},
3345 \code{x86\_64-darwin}, \code{x86\_64-solaris}.
3346
3347 A change in \TL{} 2009 that we failed to note: numerous \TeX4ht-related
3348 executables (\url{https://tug.org/tex4ht}) were removed from the binary
3349 directories. The generic \code{mk4ht} program can be used to run any of
3350 the various \code{tex4ht} combinations.
3351
3352 Finally, the \TL{} release on the \TK\ \DVD\ can no longer be run live
3353 (oddly enough). A single \DVD\ no longer has enough room. One
3354 beneficial side effect is that installation from the physical \DVD\ is
3355 much faster.
3356
3357 \subsubsection{2011}
3358
3359 The \MacOSX\ binaries (\code{universal-darwin} and
3360 \code{x86\_64-darwin}) now work only on Leopard or later; Panther and
3361 Tiger are no longer supported.
3362
3363 The \code{biber} program for bibliography processing is included on
3364 common platforms. Its development is closely coupled with the
3365 \code{biblatex} package, which completely reimplements the
3366 bibliographical facilities provided by LaTeX.
3367
3368 The MetaPost (\code{mpost}) program no longer creates or uses
3369 \code{.mem} files. The needed files, such as \code{plain.mp}, are
3370 simply read on every run. This is related to supporting MetaPost as a
3371 library, which is another significant though not user-visible change.
3372
3373 The \code{updmap} implementation in Perl, previously used only on
3374 Windows, has been revamped and is now used on all platforms. There
3375 shouldn't be any user-visible changes as a result, except that it runs
3376 much faster.
3377
3378 The \cmdname{initex} and \cmdname{inimf} programs were restored (but no
3379 other \cmdname{ini*} variants).
3380
3381 \subsubsection{2012}
3382
3383 \code{tlmgr} supports updates from multiple network repositories. The
3384 section on multiple repositories in the \code{tlmgr help} output has
3385 more.
3386
3387 The parameter \cs{XeTeXdashbreakstate} is set to~1 by default, for both
3388 \code{xetex} and \code{xelatex}. This allows line breaks after
3389 em-dashes and en-dashes, which has always been the behavior of plain
3390 \TeX, \LaTeX, Lua\TeX, etc. Existing \XeTeX\ documents which must
3391 retain perfect line-break compatibility will need to set
3392 \cs{XeTeXdashbreakstate} to~0 explicitly.
3393
3394 The output files generated by \code{pdftex} and \code{dvips}, among
3395 others, can now exceed 2 gigabytes.
3396
3397 The 35 standard PostScript fonts are included in the output of
3398 \code{dvips} by default, since so many different versions of them are
3399 extant.
3400
3401 In the restricted \cs{write18} execution mode, set by default,
3402 \code{mpost} is now an allowed program.
3403
3404 A \code{texmf.cnf} file is also found in \filename{../texmf-local},
3405 e.g., \filename{/usr/local/texlive/texmf-local/web2c/texmf.cnf}, if it
3406 exists.
3407
3408 The \code{updmap} script reads a per-tree \code{updmap.cfg} instead of
3409 one global config. This change should be invisible, unless you edited
3410 your updmap.cfg's directly. The \verb|updmap --help| output has more.
3411
3412 Platforms: \pkgname{armel-linux} and \pkgname{mipsel-linux} added;
3413 \pkgname{sparc-linux} and \pkgname{i386-netbsd} are no longer in the
3414 main distribution.
3415
3416 \subsubsection{2013}
3417
3418 Distribution layout: the top-level \code{texmf/} directory has been
3419 merged into \code{texmf-dist/}, for simplicity. Both the
3420 \code{TEXMFMAIN} and \code{TEXMFDIST} Kpathsea variables now point to
3421 \code{texmf-dist}.
3422
3423 Many small language collections have been merged together, to simplify
3424 installation.
3425
3426 \MP: native support for PNG output and floating-point (IEEE double) has
3427 been added.
3428
3429 Lua\TeX: updated to Lua 5.2, and includes a new library
3430 (\code{pdfscanner}) to process external PDF page content, among much
3431 else (see its web pages).
3432
3433 \XeTeX\ (also see its web pages for more):
3434 \begin{itemize*}
3435 \item The HarfBuzz library is now used for font layout instead of
3436 ICU. (ICU is still used to support input encodings, bidirectionality,
3437 and the optional Unicode line breaking.)
3438 \item Graphite2 and HarfBuzz are used instead of SilGraphite for Graphite
3439 layout.
3440 \item On Macs, Core Text is used instead of the (deprecated) ATSUI.
3441 \item Prefer TrueType/OpenType fonts to Type1 when the names are the same.
3442 \item Fix occasional mismatch in font finding between \XeTeX\ and
3443 \code{xdvipdfmx}.
3444 \item Support OpenType math cut-ins.
3445 \end{itemize*}
3446
3447 \cmdname{xdvi}: now uses FreeType instead of \code{t1lib} for rendering.
3448
3449 \pkgname{microtype.sty}: some support for \XeTeX\ (protrusion) and
3450 Lua\TeX\ (protrusion, font expansion, tracking), among other
3451 enhancements.
3452
3453 \cmdname{tlmgr}: new \code{pinning} action to ease configuring multiple
3454 repositories; that section in \verb|tlmgr --help| has more, online at
3455 \url{https://tug.org/texlive/doc/tlmgr.html#MULTIPLE-REPOSITORIES}.
3456
3457 Platforms: \pkgname{armhf-linux}, \pkgname{mips-irix},
3458 \pkgname{i386-netbsd}, and \pkgname{amd64-netbsd} added or revived;
3459 \pkgname{powerpc-aix} removed.
3460
3461 \subsubsection{2014}
3462
3463 2014 saw another \TeX\ tune-up from Knuth; this affected all engines,
3464 but the only visible change likely is the restoration of the
3465 \code{preloaded format} string on the banner line. Per Knuth, this now
3466 reflects the format that \emph{would} be loaded by default, rather than
3467 an undumped format that is actually preloaded in the binary; it may be
3468 overridden in various ways.
3469
3470 pdf\TeX: new warning-suppression parameter
3471 \cs{pdfsuppresswarningpagegroup}; new primitives for fake interword
3472 spaces to help with PDF text reflowing: \cs{pdfinterwordspaceon},
3473 \cs{pdfinterwordspaceoff}, \cs{pdffakespace}.
3474
3475 Lua\TeX: Notable changes and fixes were made to font loading and
3476 hyphenation. The biggest addition is a new engine variant,
3477 \code{luajittex} and its siblings \code{texluajit} and
3478 \code{texluajitc}. This uses a just-in-time Lua compiler (detailed
3479 \textsl{TUGboat} article at
3480 \url{https://tug.org/TUGboat/tb34-1/tb106scarso.pdf}). \code{luajittex}
3481 is still in development, is not available on all platforms, and is
3482 considerably less stable than \code{luatex}. Neither we nor its
3483 developers recommend using it except for the specific purpose of
3484 experimenting with jit on Lua code.
3485
3486 \XeTeX: The same image formats are now supported on all platforms
3487 (including Mac); avoid Unicode compatibility decomposition fallback (but
3488 not other variants); prefer OpenType to Graphite fonts, for
3489 compatibility with previous \XeTeX\ versions.
3490
3491 \MP: A new numbersystem \code{decimal} is supported, along with a
3492 companion internal \code{numberprecision}; a new definition of
3493 \code{drawdot} in \filename{plain.mp}, per Knuth; bug fixes in
3494 SVG and PNG output, among others.
3495
3496 The \cmdname{pstopdf} Con\TeX{}t utility will be removed as a standalone
3497 command at some point after the release, due to conflicts with OS
3498 utilities of the same name. It can still (and now) be invoked as
3499 \code{mtxrun --script pstopdf}.
3500
3501 \cmdname{psutils} has been substantially revised by a new maintainer.
3502 As a result, several seldom-used utilities (\code{fix*}, \code{getafm},
3503 \code{psmerge}, \code{showchar}) are now only in the \dirname{scripts/}
3504 directory rather than being user-level executables (this can be reversed
3505 if it turns out to be problematic). A new script, \code{psjoin}, has
3506 been added.
3507
3508 The Mac\TeX\ redistribution of \TeX\ Live (section~\ref{sec:macosx}) no
3509 longer includes the optional Mac-only packages for the Latin Modern and
3510 \TeX\ Gyre fonts, since it is easy enough for individual users to make
3511 them available to the system. The \cmdname{convert} program from
3512 ImageMagick has also been excised, since \TeX4ht (specifically
3513 \code{tex4ht.env}) now uses Ghostscript directly.
3514
3515 The \pkgname{langcjk} collection for Chinese, Japanese, and Korean
3516 support has been split into individual language collections for the sake
3517 of more moderate sizes.
3518
3519 Platforms: \pkgname{x86\_64-cygwin} added, \pkgname{mips-irix} removed;
3520 Microsoft no longer supports Windows XP, so our programs may
3521 start failing there at any time.
3522
3523 \subsubsection{2015}
3524
3525 \LaTeXe\ now incorporates, by default, changes previously included only
3526 by explicitly loading the \pkgname{fixltx2e} package, which is now a
3527 no-op. A new \pkgname{latexrelease} package and other mechanisms allow
3528 for controlling what is done. The included \LaTeX\ News \#22 and
3529 ``\LaTeX\ changes'' documents have details. Incidentally, the
3530 \pkgname{babel} and \pkgname{psnfss} packages, while core parts of
3531 \LaTeX, are maintained separately and are not affected by these changes
3532 (and should still work).
3533
3534 Internally, \LaTeXe\ now includes Unicode-related engine configuration
3535 (what characters are letters, naming of primitives, etc.) which was
3536 previously part of \TeX\ Live. This change is intended to be invisible
3537 to users; a few low-level internal control sequences have been renamed
3538 or removed, but the behavior should be just the same.
3539
3540 pdf\TeX: Support JPEG Exif as well as JFIF; do not
3541 emit a warning if \cs{pdfinclusionerrorlevel} is negative; sync
3542 with \prog{xpdf}~3.04.
3543
3544 Lua\TeX: New library \pkgname{newtokenlib} for scanning tokens; bug
3545 fixes in the \code{normal} random number generator and other places.
3546
3547 \XeTeX: Image handling fixes; \prog{xdvipdfmx} binary looked for first
3548 as a sibling to \prog{xetex}; internal \code{XDV} opcodes changed.
3549
3550 MetaPost: New numbersystem \code{binary}; new Japanese-enabled
3551 \prog{upmpost} and \prog{updvitomp} programs, analogous to
3552 \prog{up*tex}.
3553
3554 Mac\TeX:\ Updates to the included Ghostscript package for CJK
3555 support. The \TeX\ Distribution Preference Pane now works in Yosemite
3556 (\MacOSX~10.10). Resource-fork font suitcases (generally without an
3557 extension) are no longer supported by \XeTeX; data-fork suitcases
3558 (\code{.dfont}) remain supported.
3559
3560 Infrastructure: The \prog{fmtutil} script has been reimplemented to read
3561 \filename{fmtutil.cnf} on a per-tree basis, analogous to \prog{updmap}.
3562 Web2C \prog{mktex*} scripts (including \prog{mktexlsr}, \prog{mktextfm},
3563 \prog{mktexpk}) now prefer programs in their own directory, instead of
3564 always using the existing \envname{PATH}.
3565
3566 Platforms: \pkgname{*-kfreebsd} removed, since \TeX\ Live is now easily
3567 available through the system platform mechanisms.
3568 Support for some additional platforms is available as custom binaries
3569 (\url{https://tug.org/texlive/custom-bin.html}). In addition, some
3570 platforms are now omitted from the \DVD\ (simply to save space), but can
3571 be installed normally over the net.
3572
3573 %
3574 \subsubsection{2016}
3575
3576 Lua\TeX: Sweeping changes to primitives, both renames and removals,
3577 along with some node structure rearrangements. The changes are
3578 summarized in an article by Hans Hagen, ``Lua\TeX\ 0.90 backend changes
3579 for PDF and more''
3580 (\url{https://tug.org/TUGboat/tb37-1/tb115hagen-pdf.pdf}); for all the
3581 details, see the Lua\TeX\ manual,
3582 \OnCD{texmf-dist/doc/luatex/base/luatex.pdf}.
3583
3584 Metafont: New highly experimental sibling programs MFlua and MFluajit,
3585 integrating Lua with \MF, for trial testing purposes.
3586
3587 MetaPost: Bug fixes and internal preparations for MetaPost 2.0.
3588
3589 \code{SOURCE\_DATE\_EPOCH} support in all engines except Lua\TeX\ (which
3590 will come in the next release) and original \code{tex} (intentionally
3591 omitted): if the environment variable \code{SOURCE\_DATE\_EPOCH} is set,
3592 its value is used for timestamps in the PDF output. If
3593 \code{SOURCE\_DATE\_EPOCH\_TEX\_PRIMITIVES} is also set, the
3594 \code{SOURCE\_DATE\_EPOCH} value is used to initialize the \TeX\
3595 primitives \cs{year}, \cs{month}, \cs{day}, \cs{time}. The pdf\TeX\
3596 manual has examples and details.
3597
3598 pdf\TeX: new primitives \cs{pdfinfoomitdate}, \cs{pdftrailerid},
3599 \cs{pdfsuppressptexinfo}, to control values appearing in the output
3600 which normally change with each run. These features are for PDF output
3601 only, not DVI.
3602
3603 Xe\TeX: New primitives \cs{XeTeXhyphenatablelength},
3604 \cs{XeTeXgenerateactualtext},\\ \cs{XeTeXinterwordspaceshaping},
3605 \cs{mdfivesum}; character class limit increased to 4096; DVI id byte
3606 incremented.
3607
3608 Other utilities:
3609 \begin{itemize*}
3610 \item \code{gregorio} is a new program, part of the \code{gregoriotex}
3611 package for typesetting Gregorian chant scores; it is included in
3612 \code{shell\_escape\_commands} by default.
3613
3614 \item \code{upmendex} is an index creation program, mostly compatible
3615 with \code{makeindex}, with support for Unicode sorting, among other
3616 changes.
3617
3618 \item \code{afm2tfm} now makes only accent-based height adjustments
3619 upward; a new option \code{-a} omits all adjustments.
3620
3621 \item \code{ps2pk} can handle extended PK/GF fonts.
3622 \end{itemize*}
3623
3624 Mac\TeX:\ The \TeX\ Distribution Preference Pane is gone; its
3625 functionality is now in \TeX\ Live Utility; bundled GUI applications
3626 upgraded; new script \code{cjk-gs-integrate} to be run by users who wish
3627 to incorporate various CJK fonts into Ghostscript.
3628
3629 Infrastructure: System-level \code{tlmgr} configuration file supported;
3630 verify package checksums; if GPG is available, verify signature of
3631 network updates. These checks happen with both the installer and
3632 \code{tlmgr}. If GPG is not available, updates proceed as usual.
3633
3634 Platforms: \code{alpha-linux} and \code{mipsel-linux} removed.
3635
3636 %
3637 \subsubsection{2017}
3638
3639 Lua\TeX: More callbacks, more typesetting control, more access to
3640 internals; \code{ffi} library for dynamic code loading added on some
3641 platforms.
3642
3643 pdf\TeX: Environment variable |SOURCE_DATE_EPOCH_TEX_PRIMITIVES| from
3644 last year renamed to |FORCE_SOURCE_DATE|, with no changes in
3645 functionality; if the \cs{pdfpageattr} token list contains the string
3646 \code{/MediaBox}, omit output of the default \code{/MediaBox}.
3647
3648 Xe\TeX: Unicode/OpenType math now based on HarfBuzz's MATH table support;
3649 some bug fixes.
3650
3651 Dvips: Make the last papersize special win, for consistency with
3652 \code{dvipdfmx} and package expectations; the \code{-L0} option (\code{L0}
3653 config setting) restores the previous behavior of the first special
3654 winning.
3655
3656 ep\TeX, eup\TeX: New primitives \cs{pdfuniformdeviate},
3657 \cs{pdfnormaldeviate}, \cs{pdfrandomseed}, \cs{pdfsetrandomseed},
3658 \cs{pdfelapsedtime}, \cs{pdfresettimer}, from pdf\TeX.
3659
3660 Mac\TeX:\ As of this year, only \MacOSX\ releases for which Apple still
3661 releases security patches will be supported in Mac\TeX, under the
3662 platform name |x86_64-darwin|; currently this means Yosemite,
3663 El~Capitan, and Sierra (10.10 and newer). Binaries for older \MacOSX\
3664 versions are not included in Mac\TeX, but are still available in \TeX\
3665 Live (|x86_64-darwinlegacy|, \code{i386-darwin}, \code{powerpc-darwin}).
3666
3667 Infrastructure: The \envname{TEXMFLOCAL} tree is now searched before
3668 \envname{TEXMFSYSCONFIG} and \envname{TEXMFSYSVAR} (by default); the
3669 hope is that this will better match expectations of local files
3670 overriding system files. Also, \code{tlmgr} has a new mode \code{shell}
3671 for interactive and scripted use, and a new action \code{conf auxtrees}
3672 to easily add and remove extra trees.
3673
3674 \code{updmap} and \code{fmtutil}: These scripts now give a warning when
3675 invoked without explicitly specifying either so-called system mode
3676 (\code{updmap-sys}, \code{fmtutil-sys}, or option \code{-sys}), or user
3677 mode (\code{updmap-user}, \code{fmtutil-user}, or option \code{-user}).
3678 The hope is that this will reduce the perennial problem of invoking user
3679 mode by accident and thus losing future system updates. See
3680 \url{https://tug.org/texlive/scripts-sys-user.html} for details.
3681
3682 \code{install-tl}: Personal paths such as \envname{TEXMFHOME} are now
3683 set to Mac\TeX\ values (|~/Library/...|)\ by default on Macs. New
3684 option \code{-init-from-profile} to start an installation with the
3685 values from a given profile; new command \code{P} to explicitly save a
3686 profile; new profile variable names (but previous ones are still
3687 accepted).
3688
3689 Sync\TeX: the name of the temporary file now looks like
3690 \code{foo.synctex(busy)}, instead of \code{foo.synctex.gz(busy)}
3691 (no~\code{.gz}). Front-ends and build systems that want to remove temp
3692 files may need adjusting.
3693
3694 Other utilities: \code{texosquery-jre8} is a new cross-platform program
3695 for retrieving locale and other OS information from a \TeX\ document; it
3696 is included in |shell_escape_commands| by default for restricted
3697 shell execution. (Older JRE versions are supported by texosquery, but
3698 cannot be enabled in restricted mode, as they are no longer supported by
3699 Oracle, even for security issues.)
3700
3701 Platforms: See Mac\TeX\ entry above; no other changes.
3702
3703 %
3704 \subsubsection{2018}
3705
3706 Kpathsea: Case-insensitive filename matching now done by default in
3707 non-system directories; set \code{texmf.cnf} or environment variable
3708 \code{texmf\_casefold\_search} to~\code{0} to disable.
3709 Full details in the Kpathsea manual (\url{https://tug.org/kpathsea}).
3710
3711 ep\TeX, eup\TeX: New primitive \cs{epTeXversion}.
3712
3713 Lua\TeX: Preparation for moving to Lua 5.3 in 2019: a binary
3714 \code{luatex53} is available on most platforms, but must be renamed to
3715 \code{luatex} to be effective. Or use the \ConTeXt\ Garden
3716 (\url{https://wiki.contextgarden.net}) files; more information there.
3717
3718 MetaPost: Fixes for wrong path directions, TFM and PNG output.
3719
3720 pdf\TeX: Allow encoding vectors for bitmap fonts; current directory not
3721 hashed into PDF ID; bug fixes for \cs{pdfprimitive} and related.
3722
3723 Xe\TeX: Support \code{/Rotate} in PDF image inclusion; exit nonzero if
3724 the output driver fails; various obscure UTF-8 and other primitive
3725 fixes.
3726
3727 Mac\TeX:\ See version support changes below. In addition, the files
3728 installed in \code{/Applications/TeX/} by Mac\TeX\ have been reorganized for
3729 greater clarity; now this location contains four GUI programs (BibDesk,
3730 LaTeXiT, \TeX\ Live Utility, and TeXShop) at the top level and folders
3731 with additional utilities and documentation.
3732
3733 \code{tlmgr}: new front-ends \code{tlshell} (Tcl/Tk) and
3734 \code{tlcockpit} (Java); JSON output; \code{uninstall} now a synonym
3735 for \code{remove}; new action/option \code{print-platform-info}.
3736
3737 Platforms:
3738 \begin{itemize*}
3739 \item
3740 Removed: \code{armel-linux}, \code{powerpc-linux}.
3741
3742 \item \code{x86\_64-darwin} supports 10.10--10.13
3743 (Yosemite, El~Capitan, Sierra, and High~Sierra).
3744
3745 \item \code{x86\_64-darwinlegacy} supports 10.6--10.10 (though
3746 \code{x86\_64-darwin} is preferred for 10.10). All support for 10.5
3747 (Leopard) is gone, that is, both the \code{powerpc-darwin} and
3748 \code{i386-darwin platforms} have been removed.
3749
3750 \item Windows: XP is no longer supported.
3751 \end{itemize*}
3752
3753 %
3754 \subsubsection{2019}
3755
3756 Kpathsea: More consistent brace expansion and path splitting; new
3757 variable \code{TEXMFDOTDIR} instead of hard-coded \code{.}\ in paths
3758 allows for easily searching additional or sub-directories (see comments
3759 in \code{texmf.cnf}).
3760
3761 ep\TeX, eup\TeX: New primitives \cs{readpapersizespecial} and
3762 \cs{expanded}.
3763
3764 Lua\TeX: Lua 5.3 now used, with concomitant arithmetic and interface changes.
3765 The homegrown library pplib is used to read pdf files, thus
3766 eliminating the dependency on poppler (and the need for C++);
3767 Lua interface changed accordingly.
3768
3769 MetaPost: \code{r-mpost} command name recognized as an
3770 alias for invocation with the \code{-{}-restricted} option, and added to
3771 the list of restricted commands available by default.
3772 Minimum precision now 2 for decimal and binary mode.
3773 Binary mode no longer available in MPlib but still available in
3774 standalone MetaPost.
3775
3776 pdf\TeX: New primitive \cs{expanded}; if new primitive parameter
3777 \cs{pdfomitcharset} is set to 1, the \code{/CharSet} string
3778 omitted from the PDF output, since it cannot feasibly be guaranteed
3779 correct, as required by PDF/A-2 and PDF/A-3.
3780
3781 Xe\TeX: New primitives \cs{expanded},
3782 \cs{creationdate},
3783 \cs{elapsedtime},
3784 \cs{filedump},
3785 \cs{filemoddate},
3786 \cs{filesize},
3787 \cs{resettimer},
3788 \cs{normaldeviate},
3789 \cs{uniformdeviate},
3790 \cs{randomseed}; extend \cs{Ucharcat} to produce active
3791 characters.
3792
3793 \code{tlmgr}: Support \code{curl} as a download program;
3794 use \code{lz4} and gzip before \code{xz} for local backups, if available;
3795 prefer system-provided binaries over binaries provided with \TL\ for
3796 compressor and download programs, unless the environment variable
3797 \code{TEXLIVE\_PREFER\_OWN} is set.
3798
3799 \code{install-tl}: New option \code{-gui} (with no argument) is the
3800 default on Windows and Macs, and invokes a new Tcl/TK GUI (see
3801 sections~\ref{sec:basic} and~\ref{sec:graphical-inst}).
3802
3803 Utilities:
3804 \begin{itemize*}
3805 \item \code{cwebbin} (\url{https://ctan.org/pkg/cwebbin}) is now the CWEB
3806 implementation in \TeX\ Live, with support for more language dialects,
3807 and including the \code{ctwill} program to make mini-indexes.
3808
3809 \item \code{chkdvifont}: report font information from \dvi{} files, also
3810 from tfm/ofm, vf, gf, pk.
3811
3812 \item \code{dvispc}: make a DVI file page-independent with respect to specials.
3813 \end{itemize*}
3814
3815 Mac\TeX:\ \code{x86\_64-darwin} now supports 10.12 and higher (Sierra,
3816 High Sierra, Mojave); \code{x86\_64-darwinlegacy} still supports 10.6
3817 and newer. The spell checker Excalibur is no longer included, since it
3818 requires 32-bit support.
3819
3820 Platforms: removed \code{sparc-solaris}.
3821
3822 %
3823 \subsubsection{2020}
3824
3825 General: \begin{itemize}
3826 \item The \cs{input} primitive in all \TeX\ engines, including
3827 \texttt{tex}, now also accepts a group-delimited filename argument, as a
3828 system-dependent extension. The usage with a standard
3829 space/token-delimited filename is completely unchanged. The
3830 group-delimited argument was previously implemented in Lua\TeX; now it
3831 is available in all engines. ASCII double quote characters (\texttt{"})
3832 are removed from the filename, but it is otherwise left unchanged after
3833 tokenization. This does not currently affect \LaTeX's \cs{input} command,
3834 as that is a macro redefinition of the standard \cs{input} primitive.
3835
3836 \item New option \optname{-{}-cnf-line} for \texttt{kpsewhich}, \texttt{tex},
3837 \texttt{mf}, and all other engines, to support arbitrary configuration
3838 settings on the command line.
3839
3840 \item The addition of various primitives to various engines in this and
3841 previous years is intended to result in a common set of functionality
3842 available across all engines (\textsl{\LaTeX\ News \#31},
3843 \url{https://latex-project.org/news}).
3844
3845 \end{itemize}
3846
3847 ep\TeX, eup\TeX: New primitives \cs{Uchar}, \cs{Ucharcat},
3848 \cs{current(x)spacingmode}, \cs{ifincsname}; revise \cs{fontchar??} and
3849 \cs{iffontchar}. For eup\TeX\ only: \cs{currentcjktoken}.
3850
3851 Lua\TeX: Integration with HarfBuzz library, available as new engines
3852 \texttt{luahbtex} (used for \texttt{lualatex}) and \texttt{luajithbtex}.
3853 New primitives: \cs{eTeXgluestretchorder}, \cs{eTeXglueshrinkorder}.
3854
3855 pdf\TeX: New primitive \cs{pdfmajorversion}; this merely changes the
3856 version number in the PDF output; it has no effect on any PDF content.
3857 \cs{pdfximage} and similar now search for image files in the same way as
3858 \cs{openin}.
3859
3860 p\TeX: New primitives \cs{ifjfont}, \cs{iftfont}. Also in ep\TeX,
3861 up\TeX, eup\TeX.
3862
3863 Xe\TeX: Fixes for \cs{Umathchardef}, \cs{XeTeXinterchartoks}, \cs{pdfsavepos}.
3864
3865 Dvips: Output encodings for bitmap fonts, for better copy/paste
3866 capabilities
3867 (\url{https://tug.org/TUGboat/tb40-2/tb125rokicki-type3search.pdf}).
3868
3869 Mac\TeX:\ Mac\TeX\ and \texttt{x86\_64-darwin} now require 10.13 or
3870 higher (High~Sierra, Mojave, and Catalina);
3871 \texttt{x86\_64-darwinlegacy} supports 10.6 and newer. Mac\TeX\ is
3872 notarized and command line programs have hardened runtimes, as now
3873 required by Apple for install packages. BibDesk and \TeX\ Live Utility
3874 are not in Mac\TeX\ because they are not notarized, but a
3875 \filename{README} file lists urls where they can be obtained.
3876
3877 \code{tlmgr} and infrastructure: \begin{itemize*}
3878 \item Automatically retry (once) packages that fail to download.
3879 \item New option \texttt{tlmgr check texmfdbs}, to
3880 to check consistency of \texttt{ls-R} files and \texttt{!!}\
3881 specifications for each tree.
3882 \item Use versioned filenames for the package containers, as in
3883 \texttt{tlnet/archive/\textsl{pkgname}.rNNN.tar.xz}; should be
3884 invisible to users, but a notable change in distribution.
3885 \item \texttt{catalogue-date} information no longer propagated from the
3886 \TeX~Catalogue, since it was often unrelated to package updates.
3887 \end{itemize*}
3888
3889 %
3890 \htmlanchor{news}
3891 \subsection{Present: 2021}
3892 \label{sec:tlcurrent}
3893
3894 General: \begin{itemize}
3895 \item Donald Knuth's changes for his 2021 tuneup of \TeX\ and Metafont are
3896 incorporated
3897 (\url{https://tug.org/TUGboat/tb42-1/tb130knuth-tuneup21.pdf}). They are
3898 also available on CTAN as the \code{knuth-dist} and \code{knuth-local}
3899 packages. As expected, the fixes are for obscure cases and do not affect
3900 any behavior in practice.
3901
3902 \item Except in original \TeX: if \cs{tracinglostchars} is set to 3 or
3903 more, missing characters will result in an error, not just a message in
3904 the log file, and the missing character code will be shown in hex.
3905
3906 \item Except in original \TeX: a new integer parameter
3907 \cs{tracingstacklevels}, if positive, and \cs{tracingmacros}
3908 is also positive, causes a prefix indicating the macro expansion depth
3909 to be output on each relevant log line (e.g., |~..| at depth 2).
3910 Also, macro logging is truncated at a depth $\ge$ the parameter value.
3911
3912 \end{itemize}
3913
3914 Aleph: The Aleph-based \LaTeX\ format, named \code{lamed}, has been
3915 removed. The \code{aleph} binary itself is still included and supported.
3916
3917 Lua\TeX: \begin{itemize*}
3918 \item Lua 5.3.6.
3919 \item Callback for nesting level used in \cs{tracingmacros}, as
3920 generalized variant of the new \cs{tracingstacklevels}.
3921 \item Mark math glyphs as protected to prevent processing as text.
3922 \item Removed width/ic compensation for traditional math code path.
3923 \end{itemize*}
3924
3925 MetaPost: \begin{itemize*}
3926 \item |SOURCE_DATE_EPOCH| environment variable support for reproducible output.
3927 \item Avoid wrong final \texttt{\%} in \texttt{mpto}.
3928 \item Document \texttt{-T} option, other fixes to manual.
3929 \item Value of \texttt{epsilon} changed in binary and decimal modes, so
3930 |mp_solve_rising_cubic| works as expected.
3931 \end{itemize*}
3932
3933 pdf\TeX{}: \begin{itemize*}
3934 \item New primitives \cs{pdfrunninglinkoff} and
3935 \cs{pdfrunninglinkon}; e.g., for disabling generation of links in
3936 headers and footers.
3937 \item Warn instead of aborting when ``\cs{pdfendlink} ended up in
3938 different nesting level than \cs{pdfstartlink}''.
3939 \item Dump \cs{pdfglyphtounicode} assignments in \texttt{fmt} file.
3940 \item Source: \texttt{poppler} support removed, as it was too hard to
3941 keep in sync with upstream. In native TL, pdf\TeX\ has always used
3942 \texttt{libs/xpdf}, which is cut-down and adapted code from \texttt{xpdf}.
3943 \end{itemize*}
3944
3945 Xe\TeX{}: Fixes for math kerning.
3946
3947 Dvipdfmx: \begin{itemize*}
3948 \item Ghostscript is now invoked safely by default; to override
3949 (assuming all input files are trusted), use
3950 \verb|-i dvipdfmx-unsafe.cfg|. To use PSTricks with \XeTeX, this is
3951 required, as in:
3952 \verb|xetex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" ...|
3953 \item If an image file is not found, exit with bad status.
3954 \item Extended special syntax for color support.
3955 \item Specials for manipulating |ExtGState|.
3956 \item Compatibility specials \code{pdfcolorstack} and \code{pdffontattr}.
3957 \item Experimental support for \code{dviluatex}'s extended |fnt_def|.
3958 \item Support new feature of virtual font to fallback Japanese font definition.
3959 \end{itemize*}
3960
3961 Dvips: \begin{itemize*}
3962 \item Default PostScript document title is now the basename of the input
3963 file, and can be overridden with the new option \texttt{-title}.
3964 \item If an \texttt{.eps} or other image file is not found, exit with bad
3965 status.
3966 \item Support new feature of virtual font to fallback Japanese font definition.
3967 \end{itemize*}
3968
3969 Mac\TeX{}: Mac\TeX{} and its new binary folder \texttt{universal-darwin} now
3970 require macOS 10.14 or higher (Mojave, Catalina, and Big~Sur); the
3971 |x86_64-darwin| binary folder is no longer present. The
3972 |x86_64-darwinlegacy| binary folder, available only with the Unix
3973 \texttt{install-tl}, supports 10.6 and newer.
3974
3975 This is an important year for the Macintosh because Apple introduced
3976 ARM machines in November and will sell and support both ARM and Intel
3977 machines for many years. All programs in \texttt{universal-darwin} have
3978 executable code for both ARM and Intel. Both binaries are compiled from
3979 the same source code.
3980
3981 The additional programs Ghostscript, LaTeXiT, \TeX{} Live Utility, and
3982 TeXShop are all universal and are signed with a hardened runtime, so all
3983 are included in Mac\TeX{} this year.
3984
3985 \code{tlmgr} and infrastructure: \begin{itemize*}
3986 \item keep only one backup of the main repository's \texttt{texlive.tlpdb}.
3987 \item even more portability across systems and Perl versions.
3988 \item \texttt{tlmgr info} reports new \texttt{lcat-*} and \texttt{rcat-*}
3989 fields for local vs. remote Catalogue data.
3990 \item full logging of subcommands moved to new log file
3991 \texttt{texmf-var/web2c/tlmgr-commands.log}.
3992 \end{itemize*}
3993
3994
3995
3996 \subsection{Future}
3997
3998 We intend to continue to release new versions of \TL, and would like to
3999 provide more documentation, more programs, an ever-improved and
4000 better-checked tree of macros and fonts, and anything else \TeX. This
4001 work is all done by volunteers in their spare time, and there is always
4002 more to do. Please see \url{https://tug.org/texlive/contribute.html}.
4003
4004 Please send corrections, suggestions, and offers of help to:
4005 \begin{quote}
4006 \email{tex-live@tug.org} \\
4007 \url{https://tug.org/texlive}
4008 \end{quote}
4009
4010 \medskip
4011 \noindent \textsl{Happy \TeX ing!}
4012
4013 \end{document}

Properties

Name Value
svn:eol-style native
svn:keywords Date Author Id

root@tug.org
ViewVC Help
Powered by ViewVC 1.1.26