| 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} |