diff options
-rw-r--r-- | Master/texmf-dist/doc/texlive/texlive-zh-cn/tex-live-zh-cn.sty | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.pdf | bin | 1060881 -> 1149582 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.tex | 2399 |
3 files changed, 1523 insertions, 887 deletions
diff --git a/Master/texmf-dist/doc/texlive/texlive-zh-cn/tex-live-zh-cn.sty b/Master/texmf-dist/doc/texlive/texlive-zh-cn/tex-live-zh-cn.sty index e6c02cfc179..9f5e48fd243 100644 --- a/Master/texmf-dist/doc/texlive/texlive-zh-cn/tex-live-zh-cn.sty +++ b/Master/texmf-dist/doc/texlive/texlive-zh-cn/tex-live-zh-cn.sty @@ -5,12 +5,15 @@ \RequirePackage{xeCJK} \parindent=20pt \defaultfontfeatures{Mapping=tex-text} -\setCJKmainfont[BoldFont=Source Han Sans SC, ItalicFont=AR PL UKai CN]{Songti SC} -\setCJKmonofont[Scale=0.9]{AR PL UKai CN} -\setCJKfamilyfont{song}[BoldFont=Source Han Sans SC]{Songti SC} +% \setCJKmainfont[BoldFont=Source Han Sans SC, ItalicFont=AR PL UKai CN]{Songti SC} +\setCJKmainfont[BoldFont=Source Han Sans SC, ItalicFont=AR PL KaitiM GB]{Source Han Serif SC} +% \setCJKmonofont[Scale=0.9]{AR PL UKai CN} +\setCJKmonofont[Scale=1.1]{AR PL KaitiM GB} +% \setCJKfamilyfont{song}[BoldFont=Source Han Sans SC]{Songti SC} +\setCJKfamilyfont{song}[BoldFont=Source Han Sans SC]{Source Han Serif SC} \setCJKfamilyfont{sf}[BoldFont=Source Han Sans SC]{Source Han Sans SC} -\RequirePackage{tex-live} +\RequirePackage{../texlive-en/tex-live} \renewcommand\contentsname{目录} \renewcommand\listfigurename{插图列表} diff --git a/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.pdf b/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.pdf Binary files differindex 886adf580db..858516c44ab 100644 --- a/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.pdf +++ b/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.pdf diff --git a/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.tex b/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.tex index 562c0ba19a3..d848b591438 100644 --- a/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.tex +++ b/Master/texmf-dist/doc/texlive/texlive-zh-cn/texlive-zh-cn.tex @@ -13,14 +13,14 @@ \usepackage{tex-live-zh-cn, indentfirst} \title{% - {\huge \textit{\TeX\ Live 指南---2020}}% + {\huge \textit{\TeX\ Live 指南---2024}}% } \author{Karl Berry 编写 \\[3mm] \url{https://tug.org/texlive/} } -\date{2020 年 3 月} +\date{2024 年 5 月} \begin{document} \maketitle @@ -36,60 +36,56 @@ \subsection{\protect\TeX\protect\ Live 与 \protect\TeX\protect\ Collection} 本文档描述 \TL{} 软件的主要功能和特性,\TL{} 是 \TeX{} 及其相关程序在 -GNU/Linux 及其他类 Unix 系统、\MacOSX\ 和 Windows +GNU/Linux 及其他类 Unix 系统、\macOS{} 和 Windows 系统下的一套发行版。 -你可以直接下载 \TL{},也可以在 \TeX{} 用户组织给会员分发的 \TK{} -\DVD 中找到。第~\ref{sec:tl-coll-dists}~节中,简要地介绍了 -\DVD 的内容。这两套发行版都是用户组织共同协作完成的。 +你可以通过下载、从 \TeX{} 用户组织分发给会员的 \TK{} +\DVD{} 或其他途径获得 \TL{}。\TL{} 和 \TK{} 都由 \TeX{} 用户组织共同协作 +完成,第~\ref{sec:tl-coll-dists}~节将简要介绍 \DVD 的内容。 这篇文档, 主要介绍 \TL{} 本身。 -\TL{} 包括了 \TeX{}, \LaTeXe{}, \ConTeXt, \MF, \MP, \BibTeX{} -等许多可执行程序;种类繁多的宏包、字体和文档,并支持世界上许多 -不同的语言。 +\TL{} 包含了 \TeX{}, \LaTeXe{}, \ConTeXt, \MF, \MP, \BibTeX{} +和许多其他程序的可执行文件; 种类繁多的宏包、字体和文档; 并支持世界上许多 +不同种语言的排版。 文档末尾的第~\ref{sec:history}~节 (第~\pageref{sec:history}~页) -介绍了这一版 \TL{} 的重要改变。 +将简要介绍这一版 \TL{} 的重要改变。 \htmlanchor{platforms} \subsection{操作系统支持} \label{sec:os-support} -\TL{} 为多种基于 Unix 的平台提供了可执行文件,包括 \GNU/Linux、 -\MacOSX{}、和 Cygwin。它还包含了源代码,可供在没有提 -供可执行文件的平台上编译安装。 +\TL{} 为多种基于 Unix 的平台提供了二进制文件,包括 \GNU/Linux、 +\macOS{}、和 Cygwin。它所包含的源代码还可在没有二进制文件的平台上编译安装。 -至于 Windows,\TL{} 仅支持 Windows~7 或后续版本。 -Windows Vista 可能可以继续工作,但 \TL{} 不能在 Windows XP -或者更早的版本上运行。\TL{} 没有包含 64 位的 Windows -可执行文件,不过 32 位的可执行文件也能 64 位的系统上正常运行。 +至于 Windows,\TL{} 仅支持 Windows~7 及后续版本。 +Windows Vista \emph{或许}还可以继续工作,但 \TL{} 不能在 Windows XP +或者更早的版本上运行。\TL{} 包含了 64 位的 Windows +可执行文件。 -除了 \TL{} 以外,Windows 和 \MacOSX 用户还有其它的选择,请参考 +除了 \TL{} 以外,Windows 和 \macOS{} 用户还有其它的选择,请参考 第~\ref{sec:tl-coll-dists}~节。 \subsection{\protect\TL{} 的基本安装} \label{sec:basic} -你可以使用 \DVD{} 方式或者网络方式来安装 \TL{} +你可以用 \DVD{} 或通过网络来安装 \TL{} (\url{https://tug.org/texlive/acquire.html})。 -通过网络的安装程序本身非常小,它可以从网上下载所有的你所要求的软 -件包。网络安装程序对仅使用 \TL{} 一小部分的用户来说非常适宜。 +网络安装程序本身很小,而且它会从网上下载一切所需的东西。 -\DVD{} 安装程序可以把 \TL{} 安装到你的本地磁盘上。你不能直接从 \TK{} -\DVD{} (或者它的 \code{.iso} 镜像) 上运行 \TL{},但你可以在一个 \USB{} 盘上 -安装一套可以运行的版本 (参见 \ref{sec:portable-tl})。安装方法将 -在下面的章节介绍 (\p.\pageref{sec:install}),这里提供一个快速入门: +\DVD{} 的安装程序可以把 \TL{} 安装到你的本地磁盘上,但你不能直接从 \TK{} +\DVD{} (或者 \TK{} 和 \TL{} 的 \code{.iso} 镜像) 上运行 \TL{}。 +你\emph{可以}在 \USB{} 盘上安装一套可运行的版本 (参见 \ref{sec:portable-tl})。 +安装方法将在下面的章节介绍 (\p.\pageref{sec:install}),这里提供一个快速入门: \begin{itemize*} -\item 安装脚本的名称是 \filename{install-tl}。它可以在指定了 -\code{-gui} 选项的情况下以“GUI”模式 (Windows 和 \MacOSX{} 下的默认模式) -工作,或指定 \code{-gui=text} 选项以文本模式 (其它系统下默认模式) -工作。在 Unix 平台上如果安装了 Perl/Tk,以前的 Perl/Tk 和向导模式还可以 -通过 \code{-gui=perltk} 选项启用。关于 Windows 下的使用参见 -\ref{sec:wininst} 一节。 +\item 对于 Unix,安装脚本是 \filename{install-tl}; 在 Windows 则需要调用 +\filename{install-tl-windows}。安装程序将在指定了 \code{-gui} 选项的情况下 +以图形界面模式工作 (这是 Windows 下的默认模式),或在指定了 \code{-gui=text} +选项的情况下以文本模式工作 (这是其它系统下的默认模式)。 -\item 安装完成后可以得到一个名为 \prog{tlmgr} 的程序:`\TL\ Manager'。 +\item 安装完成后可以得到一个名为 \prog{tlmgr} 的程序: `\TL\ Manager'。 和安装程序一样,它可以在 \GUI{} 模式或文本模式下运行。你不但可以用它 来安装或卸载软件包,还可以用来完成各种配置工作。 @@ -99,21 +95,22 @@ Windows Vista 可能可以继续工作,但 \TL{} 不能在 Windows XP \subsection{关于安全的考虑} \label{sec:security} -尽我们所知,核心的 \TeX\ 程序本身是 (而且一直是) 非常健壮的。但是尽管 -大家都做了最大的努力,\TeX\ Live 中大家贡献的程序不一定能达到同样的程 -度。所以,在运行程序的输入来自未经信任的来源时,你应该一直保持警惕; -为了增加安全性,在一个单独的子目录或者 chroot 环境下执行程序。 +尽我们所知,核心的 \TeX\ 程序本身是 (而且一直是) 非常健壮的。然而,尽 +管每个人都尽力而为,大家贡献给 \TeX\ Live 的程序却不一定能达到同样的程度, +所以,当运行不受信任的输入程序时,你应该一直保持警惕; 为了提高安全性, +请使用单独的子目录或者 chroot。 -最需要小心的系统是 Windows,因为通常 Windows 首先使用当前目录下的程序, -然后再寻找其他搜索路径下的目录。这给许多可能的攻击带来了方便。我们已经 -堵住了很多漏洞,但毫无疑问的是有些漏洞依然存在,尤其是存在于第三方程序 -中。因此,我们建议检查当前目录下的可疑文件,尤其是可执行文件 (二进制文 -件或者脚本)。一般他们不应该存在,而且更不应该在处理文档时生成。 +在 Windows 系统上特别需要注意对当前目录的文件进行检查,因为通常情况下, +Windows 会忽视搜索路径而优先使用当前目录下的程序。这给许多可能的攻击带 +来了方便。我们已经堵住了很多漏洞,但毫无疑问还有漏洞存在,尤其是在第三 +方程序方面。因此,我们建议检查当前目录下的可疑文件,尤其是可执行文件 +(二进制文件或者脚本)。一般情况下,它们不应该存在,而且更不应该在处理文 +档时生成。 -最后,\TeX\ (及其相关程序) 在处理文档时是可以写文件的,这个功能可以被各种 -方式滥用。所以我们再一次强调最保险的是在新的子目录下处理未知的文档。 +最后,\TeX\ (及其相关程序) 在处理文档时是可以写文件的,这个功能可能被 +各方滥用,所以我们再一次强调在新的子目录下处理未知文档是最保险的选择。 -安全的另一个方面是保证下载的内容与内容创建时一致。如果安装了 \prog{gpg} +另一个关乎安全的方面是确保下载的内容与它被创建时一致。如果安装了 \prog{gpg} (GNU Privacy Guard) 程序,\prog{tlmgr} 程序 (第~\ref{sec:tlmgr}~节) 会自动 对现在内容进行加密验证。\prog{gpg} 不和 \TL{} 一起分发,但可以参见 \url{https://texlive.info/tlgpg/} 了解更多信息。 @@ -126,113 +123,97 @@ Windows Vista 可能可以继续工作,但 \TL{} 不能在 Windows XP 有保障的商业性技术支持,可以放弃 \TL{},改为购买商业 \TeX{} 系统,在 \url{https://tug.org/interest.html#vendors} 上有一份销售商的列表。) -按照推荐使用的顺序,我们列出了这样一份资源列表: +大概按照推荐使用的顺序,我们列出了这样一份资源列表: \begin{description} -\item [起步] 如果你刚刚接触 \TeX,\url{https://tug.org/begin.html} -这个网页提供了这个系统的简短介绍。 +\item [起步] 如果你刚刚接触 \TeX,\url{https://tug.org/begin.html}~页面提供了这个 +系统的简短介绍。 -\item [\TeX{} FAQ] 这套庞大的 \TeX{} FAQ 对各种各样的 -问题——从最基础到最晦涩的——都给予了简明的回答,它在 \TL{} 的 -\OnCD{texmf-dist/doc/generic/FAQ-en/},也可以在 -\url{https://texfaq.org} 网站上找到。有问题时请先看看这里能否找 -到解答。 +\item [CTAN] 如果你在寻找某个特定的宏包、字体、程序等等,CTAN 就是你首先该找的地方。 +这里是一个所有 \TeX{} 相关内容的巨大集合。目录表条目还可以告诉你一个宏包能否用于 \TL{} +或 MiK\TeX。参见 \url{https://ctan.org}。 -\item [\TeX{} Catalogue] 如果你在寻找某个特定的宏包、字体、程序等等,\TeX{} -Catalogue 就是你首先该找的地方。这里是所有 \TeX{} 相关内容的一个巨大集合。参见 -\url{https://ctan.org/pkg/catalogue}。 +\item [\TeX{} FAQ] \TeX{} FAQ 汇集了各类问题——从最基础到最晦涩的。它可以在 +\url{https://texfaq.org}~页面找到。 \item [\TeX{} 网上资源] \url{https://tug.org/interest.html}~页面上有 许多和 \TeX{} 相关的链接,包括讨论这个系统方方面面的许多书籍、手册和文章。 -\item [支持信息的归档] 最重要的 \TeX\ 技术支持论坛是 -\LaTeX{} 社区网站 \url{http://latex-community.org/}, 问答网站 -\url{https://tex.stackexchange.com}, Usenet 的新闻组 \url{news:comp.text.tex} -和邮件列表 \email{texhax@tug.org}。它们的内容归档中有多年以来的提问和回答供你 -搜索。最后两种你可以用 \\ -\url{http://groups.google.com/groups?group=comp.text.tex} 和 \\ -\url{https://tug.org/mail-archives/texhax} 进行查询。当然,一般性的搜索 -方式也没有坏处。 +\item [支持网站] 一般性的网络检索没有坏处。最重要的 \TeX\ 技术支持网站包括 +\LaTeX{} 社区网站 \url{http://latex.org/}, 问答网站 \url{https://tex.stackexchange.com}, +和邮件列表 \url{https://lists.tug.org/texhax}。它们的内容归档中有多年以来的提问和 +回答供你搜索。 \item [提问] 如果你还是找不到答案,可以在 \url{https://latex.org} 和 -\url{https://tex.stackexchange.com/} 网站上提问,通过 Google -或者你的新闻组阅读器在 \dirname{comp.text.tex} 上提问,或者发送邮件到 -\email{texhax@tug.org}。不过,在提问之前请先阅读 FAQ 上的这一条: -\url{https://texfaq.org/FAQ-askquestion}, -它能提高你获得回答的可能性。 +\url{https://tex.stackexchange.com/} 网站上提问,或者发送邮件到 +\email{texhax@tug.org} (提问并不需要订阅)。不过,在提问前, +请先阅读 FAQ 上的这一条: \url{https://texfaq.org/FAQ-askquestion}, +它能提高你获得有用回答的可能性。 -\item [\TL{} 技术支持] 如果你需要报告 bug,或者提出对 \TL{} 的发行、安装或 +\item [\TL{} 技术支持] 如果你需要报告错误,或者提出对 \TL{} 的发行、安装或 文档的建议和意见,可以使用 \email{tex-live@tug.org} 这个邮件列表。不过,如果问题 是针对 \TL{} 中包含的某个特定程序,那最好还是写信给这个程序的维护者或邮件列表。 -用 \code{-{}-help} 参数来运行程序都一般能得到用来报告其 bug 的地址。 +用 \code{-{}-help} 参数来运行程序一般都能得到用来报告其 bug 的地址。 \end{description} -另一方面,你也不妨帮助其他有问题的朋友,所有以上资源都是对所有人开放的,请尽管参 -与进去,在你能力所及的范围内提供帮助。 +另一方面,你也不妨帮助其他有问题的朋友。上述所有资源对所有人开放,所以请随时参 +与,开始阅读,在你能力所及的范围内提供帮助。 % don't use \TL so the \uppercase in the headline works. Also so % tex4ht ends up with the right TeX. Likewise the \protect's. \section{\protect\TeX\protect\ Live 概览} \label{sec:overview-tl} -这个小节描述的是 \TL{} 的内容,以及包含 \TL{} 的 \TK{}。 +这个小节描述的是 \TL{} 以及它所属的 \TK{} 的内容。 \subsection{\protect\TeX\protect\ Collection: \protect\TL, - pro\protect\TeX{}t, Mac\protect\TeX} + Mac\protect\TeX, MiK\protect\TeX, CTAN} \label{sec:tl-coll-dists} -\TK{} 的 \DVD{} 包含了以下内容: +\TK{} \DVD{} 包含了以下内容: \begin{description} -\item [\TL] 是一个完整的 \TeX{} 系统,它可以安装在本 +\item [\TL] 是一个完全跨平台的 \TeX{} 系统,它可以安装在本 地磁盘上。主页: \url{https://tug.org/texlive/}。 -\item [Mac\TeX] 在 \TL{} 的基础上增加了原生的 \MacOSX\ (目前 Apple 把它称作 -macOS,但在这份文档中我们还沿用它的旧名字) 的安装程序和一些其它的 -Mac 应用程序。它的主页在 \url{https://tug.org/mactex/}。 +\item [Mac\TeX] 针对 \macOS{},在 \TL{} 的基础上增加了原生的 \macOS{} 的安装程序 +和一些其它的 Mac 应用程序。主页: \url{https://tug.org/mactex/}。 -\item [pro\TeX{}t] 是 Windows 下的 \MIKTEX\ 发行版的一个增强版本。\ProTeXt\ 在 -\MIKTEX\ 基础上增加了一些工具,简化了安装。它完全独立于 \TL{},有其 -自己的安装步骤。主页: \url{https://tug.org/protext}。 +\item [\MIKTEX] 另一个用于 Windows、GNU/Linux 和 \macOS{} 的完全跨平台的 +\TeX\ 发行版 (但 DVD 上只包含Windows 的二进制文件)。它有一个集成的包管理器, +可以根据需要从互联网安装缺失的组件。主页: \url{https://miktex.org/}。 \item [CTAN] 一份 \CTAN{} 仓库的快照 (\url{https://ctan.org/})。 +\CTAN{} 并不一定遵循 \TL{} 的版权协议,因此在分发或修改时要格外小心。 \end{description} -\CTAN{} 和 \pkgname{protext} 并不一定遵循 \TL{} 的版权协议,因此在分发或修改时要 -格外地小心。 - \subsection{\protect\TL{} 的顶层目录} \label{sec:tld} -这里是 \TL{} 发行版顶层目录的一个简短的列表和描述。 +这是一个简短的 \TL{} 发行版顶层目录的列表及描述。 \begin{ttdescription} \item[bin] \TeX{} 系统程序,按平台组织。 -% -\item[readme.html] 网页,提供了多种语言的简介和有用的链接。 -\item[readme-*.dir] \TL{} 多种语言的简介和有用的链接,同时有 \HTML{} + +\item[readme-*.dir] 关于 \TL{} 的多种语言的简介和有用的链接,同时有 \HTML{} 和纯文本版本。 -% -\item[source] 所有程序的源代码,包括主要的基于 \Webc{} 的 \TeX{} - 发行版。 -% +\item[source] 所有程序的源代码,包括主要的基于 \Webc{} 的 \TeX{} 发行版。 + \item[texmf-dist] 最主要的文件树,见下文的 \dirname{TEXMFDIST}。 -% -\item[tlpkg] 用来维护安装程序所用到的脚本,程序和数据,以及对 -Windows 的特殊支持。 + +\item[tlpkg] 用来维护安装程序所用到的脚本、程序和数据,以及对 Windows 的特殊支持。 \end{ttdescription} -至于文档,顶层目录下的 \OnCD{doc.html} 文件中提供的完整的链接会有帮助。 -几乎所有内容的文档 (宏包、格式文件、字体、程序手册,man page, Info 文件等) 在 -\dirname{texmf-dist/doc} 目录下,因为这些程序本身是属于 \dirname{texmf} 目录的。 -\TeX\ 宏包与格式文件的文档则放在 \dirname{texmf-dist/doc} 目录。但不管放在哪个地 -方,你都可以使用 \cmdname{texdoc} 程序来寻找这些文档。 +至于文档,顶层目录下的 \OnCD{doc.html} 文件中提供的完整链接会有帮助。 +几乎所有内容的文档 (宏包、格式文件、字体、程序手册、man page、 Info 文件等) 都在 +\dirname{texmf-dist/doc} 目录下,不管它被放在哪里,你都可以使用 +\cmdname{texdoc} 程序来寻找这些文档。 -\TL\ 本身的文档在 \dirname{texmf-dist/doc/texlive} 目录下,有以下这些语言的版本: +\TL\ 本身的文档在 \dirname{texmf-dist/doc/texlive} 目录下,有以下这些语言的版本: \begin{itemize*} \item{捷克/斯洛伐克语:} \OnCD{texmf-dist/doc/texlive/texlive-cz} @@ -244,6 +225,7 @@ Windows 的特殊支持。 \item{波兰语:} \OnCD{texmf-dist/doc/texlive/texlive-pl} \item{俄语:} \OnCD{texmf-dist/doc/texlive/texlive-ru} \item{塞尔维亚语:} \OnCD{texmf-dist/doc/texlive/texlive-sr} +\item{西班牙语:} \OnCD{texmf-dist/doc/texlive/texlive-es} \item{简体中文:} \OnCD{texmf-dist/doc/texlive/texlive-zh-cn} \end{itemize*} @@ -256,50 +238,59 @@ Windows 的特殊支持。 以列出这些变量的值,这样你可以很容易找到它们和你所安装到的目录 名称的对应关系。 -所有这些目录树,包括个人的,都应该遵循 \TeX\ 目录结构 (\TDS, -\url{https://tug.org/tds}),包括其中所有细小的子目录,否则文件就 -可能找不到。第 \ref{sec:local-personal-macros} 节 (第 -\pageref{sec:local-personal-macros} 页) 有更详细的介绍。这里描述的顺序和搜索的 -优先级相反,也就是说,列在更靠后的目录树会被更优先搜索。 +所有这些目录树,包括个人的,都应该遵循 \TeX\ 目录结构 (\TeX\ +Directory Structure, \TDS, \url{https://tug.org/tds}), +包括其中所有细小的子目录,否则文件就可能找不到。 +第 \ref{sec:local-personal-macros} 节 (第 +\pageref{sec:local-personal-macros} 页) 有更详细的介绍。 +这里描述的顺序和搜索的优先级相反,也就是说, +列在更靠后的目录树会被更优先搜索。 \begin{ttdescription} \item [TEXMFDIST] 这个目录树包含几乎所有原有发行版本的文件——配置文件、脚本、宏 -包、字体等等。唯一的例外是每个平台的可执行文件,存储在与它同级的 \code{bin/} 目 -录下。 -\item [TEXMFSYSVAR] 给 \verb+texconfig-sys+、\verb+updmap-sys+ 和 -\verb+fmtutil-sys+ 还有 \verb+tlmgr+ 这几个命令存储、缓存运行时使用的格式文件和 -生成的 map 文件,对整个系统都有效。 +包、字体等等。(主要的例外是每个平台的可执行文件,它们存储在同级的 \code{bin/} 目 +录下。) + +\item [TEXMFSYSVAR] 给 \verb+texconfig-sys+、\verb+updmap-sys+、\verb+fmtutil-sys+ +和 \verb+tlmgr+ 使用的 (全站的) 目录树,用于存储 (缓存) 运行时的数据,如格式文件和 +生成的映射文件。 + \item [TEXMFSYSCONFIG] 给 \verb+texconfig-sys+、\verb+updmap-sys+ 和 -\verb+fmtutil-sys+ 这些程序存储修改过的全局文件. -\item [TEXMFLOCAL] 系统管理员用来安装供整个系统使用的额外的或更新过的宏包、字体 -的目录。 -\item [TEXMFHOME] 给用户存放它们自己独立安装的的宏包、字体等等。 -这个变量根据不同的用户选择不同的主目录。 -\item [TEXMFVAR] 这个目录是给 \verb+texconfig+、\verb+updmap-user+ 和 - \verb+fmtutil-user+ 存储 (缓存) 格式文件、生成 map 文件这类运行时个人数据的。 +\verb+fmtutil-sys+ 使用的 (全站的) 目录树,用于存储修改过的配置数据。 + +\item [TEXMFLOCAL] 系统管理员用来安装供整个系统使用的额外的或更新过的宏包、字体等 +的目录树。 + +\item [TEXMFHOME] 用户用来安装供他们自己独立使用的的额外的或更新过的宏包、字体等的目录树。 +这个变量根据不同的用户选择不同的个人目录。 + +\item [TEXMFVAR] 给 \verb+texconfig+、\verb+updmap-user+ 和 \verb+fmtutil-user+ +使用的 (个人的) 目录树,用于存储 (缓存) 运行时的数据,如格式文件和生成的映射文件。 + \item [TEXMFCONFIG] 给 \verb+texconfig+、\verb+updmap-sys+、和 \verb+fmtutil-sys+ -这些程序存储个人修改过的配置文件。 -\item [TEXMFCACHE] \ConTeXt\ MkIV 和 Lua\LaTeX\ 用来保存 (缓存的) 运行时 -数据的目录树;缺省为 \code{TEXMFSYSVAR},如果该目录不可写,则使用 +使用的 (个人的) 目录树,用于存储修改过的配置数据。 + +\item [TEXMFCACHE] 给 \ConTeXt\ MkIV 和 Lua\LaTeX\ 使用的目录树, +用于存储 (缓存) 运行时的数据。缺省为 \code{TEXMFSYSVAR}; 若该目录不可写,则使用 \code{TEXMFVAR}。 \end{ttdescription} \noindent -默认的目录结构: +默认的目录结构: \begin{description} \item[全系统根目录] 可以包含多个 \TL{} 版本: (在 Unix 下默认是 \texttt{/usr/local/texlive}) \begin{ttdescription} - \item[2019] 上一个版本。 - \item[2020] 当前版本。 + \item[2023] 上一个版本。 + \item[2024] 当前版本。 \begin{ttdescription} \item [bin] ~ \begin{ttdescription} \item [i386-linux] \GNU/Linux 二进制文件 (32 位) \item [...] - \item [x86\_64-darwin] \MacOSX\ 二进制文件 + \item [universal-darwin] \macOS{}\ 二进制文件 \item [x86\_64-linux] \GNU/Linux 二进制文件 (64 位) - \item [win32] Windows 二进制文件 + \item [windows] Windows 二进制文件 (64 位) \end{ttdescription} \item [texmf-dist\ \ ] \envname{TEXMFDIST} 和 \envname{TEXMFMAIN} \item [texmf-var \ \ ] \envname{TEXMFSYSVAR}, \envname{TEXMFCACHE} @@ -310,57 +301,59 @@ Windows 的特殊支持。 \item[用户主 (home) 目录] (\texttt{\$HOME} 或 \texttt{\%USERPROFILE\%}) \begin{ttdescription} - \item[.texlive2019] 给上个版本的,个人生成和配置的数据。 - \item[.texlive2020] 给这个版本的,个人生成和配置的数据。 + \item[.texlive2023] 给上个版本的,个人生成和配置的数据。 + \item[.texlive2024] 给这个版本的,个人生成和配置的数据。 \begin{ttdescription} \item [texmf-var\ \ \ ] \envname{TEXMFVAR}, \envname{TEXMFCACHE} \item [texmf-config] \envname{TEXMFCONFIG} \end{ttdescription} \item[texmf] \envname{TEXMFHOME} 个人的宏包文件,等等。 - \textit{等等。} \end{ttdescription} \end{description} - \subsection{\protect\TeX\ 的扩展版本} \label{sec:tex-extensions} -原始的 Knuth \TeX{} 本身的开发已经冻结了,仅仅修改除去发现的 -极其少量的错误。它在 \TL\ 中仍然作为 \prog{tex} 程序出现,在 -可见的未来也仍然如此。\TL{} 包括了一些建立在 \TeX\ 基础上的 -扩展程序 (也称为 \TeX\ 引擎): +Knuth 所开发的原始 \TeX{} 本身已经冻结了,仅修改少量的错误。 +它在 \TL\ 中仍然作为 \prog{tex} 程序出现,在可预见的未来也仍然如此。 +\TL{} 包括了一些建立在 \TeX\ 基础上的扩展程序 (也称为 \TeX\ 引擎): \begin{description} \item [\eTeX] 为 \TeX\ 增加了一套新的原语 (primitive)。 \label{text:etex} (包括宏展开,字符扫描,mark 的分类,额外的调试功能,等等) -以及用于双向排版的 \TeXXeT{} 扩展模式。在默认模式下,\eTeX{} 是与原始的 \TeX\ -100\% 兼容的。参见 \OnCD{texmf-dist/doc/etex/base/etex_man.pdf}。 +以及用于双向排版的 \TeXXeT{} 扩展模式。在默认情况下,\eTeX{} 100\% 兼容原始的 \TeX。 +参见 \OnCD{texmf-dist/doc/etex/base/etex_man.pdf}。 \item [pdf\TeX] 在 \eTeX\ 扩展的基础上构建,在 \dvi{} 输出之外增加对 -PDF 输出的支持,以及许多其他的扩展。 -这是针对 \prog{etex}, \prog{latex} 或 \prog{pdflatex} 这些格式使用的缺省程序。 -它的主页在 \url{http://www.pdftex.org/},文档在 +PDF 输出的支持,以及许多非输出相关的扩展。 +它是许多常见格式,如 \prog{etex}, \prog{latex} 或 \prog{pdflatex},调用的程序 。 +它的主页在 \url{http://www.pdftex.org/},文档见 \OnCD{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}。可以在 \OnCD{texmf-dist/doc/pdftex/samplepdftex/samplepdf.tex} 找到展示部分功能的例 子。 -\item [Lua\TeX] 是 pdf\TeX\ 指定的后继者,而且对 pdf\TeX\ 保持大部分 -(但不是完全地) 向下兼容。它也希望包含 Aleph (见后) 的功能,尽管未必能完美兼容。 -它内置的 Lua 语言解释器 (\url{https://lua.org}) 为许多棘手的 \TeX{} -问题提供了优雅的解决方案。当以 \filename{texlua} 命令执行时,它就像一个标准的 -Lua 解释器一样工作,所以,Lua\TeX\ 在 \TL\ 中也被作为 Lua 程序的解释器。 -见 \url{http://www.luatex.org} 和 \OnCD{texmf-dist/doc/luatex/luatex.pdf}。 +\item [Lua\TeX] 增加了对 Unicode 输入以及 OpenType/TrueType 字体和系统字体的支持。 +它集成的 Lua 语言解释器 (\url{https://lua.org}) 为许多棘手的 \TeX{} +问题提供了解决方案。当以 \filename{texlua} 命令执行时,它就像一个独立的 +Lua 解释器一样运行。其网站是 \url{http://www.luatex.org}, +参考手册在 \OnCD{texmf-dist/doc/luatex/luatex.pdf}。 -\item [Xe\TeX] 通过第三方库,增加对 Unicode 输入文本和 OpenType 字体的支持, -能够直接使用系统字体。参见 \url{https://tug.org/xetex}。 +\item [(e)(u)p\TeX] 原生支持日语排版需求; +p\TeX\ 是基本引擎,而 ep\TeX 添加了\eTeX\ 功能, +而 up\TeX\ 添加了 Unicode 支持。 + +\item [Xe\TeX] 通过标准的第三方库, +增加了对 Unicode 输入以及 OpenType/TrueType 字体和系统字体的支持。 +参见 \url{https://tug.org/xetex}。 \item [\OMEGA\ (Omega)] 基于 Unicode (16 位字符集),因而同时支持处理世界上 -几乎所有的语言。它同时还支持所谓的 `\OMEGA{} Translation Processes' (OTP), -用于对任意输入进行复杂的变换操作。Omega 现在已经不作为单独的程序出现在 \TL{} -中了;改为只支持 Aleph: +几乎所有的语言文字。它同时还支持所谓的 `\OMEGA{} 翻译过程' +(\OMEGA{} Translation Processes, OTPs), +用于对任意输入进行复杂的变换操作。Omega 现在已经不作为独立的程序出现在 \TL{} +中了; 改为只支持 Aleph: -\item [Aleph] 将 \OMEGA\ 与 \eTeX\ 扩展合并到一起得到的。 +\item [Aleph] 结合了 \OMEGA\ 与 \eTeX\ 扩展。 参见 \OnCD{texmf-dist/doc/aleph/base}。 \end{description} @@ -368,23 +361,23 @@ Lua 解释器一样工作,所以,Lua\TeX\ 在 \TL\ 中也被作为 Lua 程 \subsection{\protect\TL\ 中其他值得一提的程序} -这里是在 \TL{} 中其他的一些常用程序: +这里给出 \TL{} 中其他的一些常用程序: \begin{cmddescription} \item [bibtex, biber] 参考文献支持。 -\item [makeindex, xindy] 索引支持。 +\item [makeindex, upmendex, xindex, xindy] 索引支持。 \item [dvips] 将 \dvi{} 转换为 \PS{}。 -\item [xdvi] X Window System 下的 \dvi{} 阅读器。 - -\item [dviconcat, dviselect] 从 \dvi{} 文件中复制和粘贴页面。 - \item [dvipdfmx] 将 \dvi{} 转换为 PDF,是 (前面提到过的) pdf\TeX\ 的一套替换方案。 +\item [xdvi] X Window 系统下的 \dvi{} 阅读器。 + +\item [dviconcat, dviselect] 从 \dvi{} 文件中剪切和粘贴页面。 + \item [psselect, psnup, \ldots] \PS{} 实用程序。 \item [pdfjam, pdfjoin, \ldots] PDF 实用程序。 @@ -392,7 +385,7 @@ pdf\TeX\ 的一套替换方案。 \item [context, mtxrun] Con\TeX{}t 和 PDF 处理工具。 \item [htlatex, \ldots] \cmdname{tex4ht}: \AllTeX{} 到 HTML (还有 XML -等其他格式) 的转换器。 +以及 DocX等其他格式) 的转换器。 \end{cmddescription} @@ -407,144 +400,153 @@ pdf\TeX\ 的一套替换方案。 \url{https://tug.org/texlive/acquire.html} 以了解更多关于获得这个软件的信息和方法。 \begin{description} -\item [网络安装程序,.zip 或 .tar.gz 格式:] 在 \CTAN 的 \dirname{systems/texlive/tlnet} -目录下可以下载,\url{http://mirror.ctan.org/systems/texlive/tlnet} 这个地址应该 -能将你导向一个附近的、保持更新的镜像。你可以下载同时支持 Unix 和 +\item [网络安装程序,.zip 或 .tar.gz 格式: ] 从 \CTAN 的 \dirname{systems/texlive/tlnet} +下载压缩包; 链接 \url{http://mirror.ctan.org/systems/texlive/tlnet} 应该 +能重定位到一个附近的、保持更新的镜像。你可以下载同时支持 Unix 和 Windows 的 \filename{install-tl.zip} 或者小得多、但只支持 Unix 的 \filename{install-unx.tar.gz}。解压后,\filename{install-tl} 和 \filename{install-tl-windows.bat} 就会出现在 \dirname{install-tl} 子目录中。 \item[网络安装程序,Windows .exe:] 和上述一样从 \CTAN{} 下载,然后双击。它会作为 -第一阶段的安装程序和解压工具启动;见图~\ref{fig:nsis}。它提供了两个选项: +第一阶段的安装程序和解压工具启动; 见图~\ref{fig:nsis}。它提供了两个选项: ``Install'' 和 ``Unpack only''。 -\item [\TeX{} Collection \DVD:] 打开 \DVD\ 的 \dirname{texlive} 这个子目录。 -在 Windows 下安装程序通常在插入 \DVD 后就自动启动了。要获得 \DVD 的 -话可以加入一个 \TeX\ 用户组织 (推荐这么做,参见 -\url{https://tug.org/usergroups.html}) 或是单独购买 (通过 -\url{https://tug.org/store}),又或者是自己从 \ISO\ 镜像刻录。 -在多数系统里你都可以直接挂载这个 \ISO{}。在从 \DVD\ 或者 \ISO{} 安装后, -如果还希望从 Internet 获得持续的更新,请看第 \ref{sec:dvd-install-net-updates} -节。 +\item [\TeX{} Collection \DVD:] 打开 \DVD\ 的 \dirname{texlive} 子目录。 +在 Windows 下,安装程序通常在插入 \DVD 后就自动启动了。要获得 \DVD 的 +话,可以加入一个 \TeX\ 用户组织 (非常推荐这么做,\url{https://tug.org/usergroups.html}) +或是单独购买 (\url{https://tug.org/store})。又或者是自己从 CTAN 下载 \ISO\ 镜像刻录 \DVD。 +在从 \DVD\ 或者 \ISO{} 安装后,如果还希望从 Internet 获得持续的更新,请看第~\ref{sec:dvd-install-net-updates}~节。 \end{description} \begin{figure}[tb] -\tlpng{nsis_installer}{.6\linewidth} -\caption{第一阶段的 Windows \code{.exe} 安装程序}\label{fig:nsis} + \centering + \def\figdesc{Windows \code{.exe} 安装程序的第一阶段} + \tlpng{../texlive-common/nsis_installer}{.6\linewidth}{\figdesc} + \caption{\figdesc. 点击 Install 选项将出现如图~\ref{fig:basic-w32} 所示的窗口.}\label{fig:nsis} \end{figure} -不管从哪里载入,执行的都是同一个安装程序。两者最明显的区别是通过网络安装 -得到的当前可用的程序包。这和和 \DVD\ 或者 \ISO\ 镜像在主版本之间不能更新 -不同。 +无论安装程序的来源如何,所运行的都是相同的安装程序。 +两者最显著的区别在于,使用网络安装程序时,最终得到的是当前可用的软件包。 +这与 DVD 和 ISO 镜像不同,后者在主要公开发布版本之间不会更新。 -如果你需要用代理服务器来下载,Wget 的代理服务器设置可以使用 \filename{~/.wgetrc} -文件或者环境变量来指定 +如果你需要通过代理服务器下载,使用 \filename{~/.wgetrc} +文件或设置环境变量来配置 Wget 的代理设置 (\url{https://www.gnu.org/software/wget/manual/html_node/Proxies.html}), -或者你使用的下载工具对应的配置文件。如果你是从 \DVD\ 或者 \ISO\ 镜像来安装就 +或者等效地设置你所使用的下载工具。如果你是从 \DVD\ 或者 \ISO\ 镜像来安装就 没有关系了。 -下面的章节介绍更详细地介绍了安装程序的启动。 +下一小节将更详细地介绍安装程序的启动。 \subsubsection{Unix} -\filename{install-tl} 是一个 Perl 脚本。在 Unix 兼容的系统下启动它最简单 -的方法是这样的: - +下面的内容中,\texttt{>} 表示命令提示符; 用户输入显示成 \Ucom{\texttt{bold}} 的样子。 +\filename{install-tl} 是一个 Perl 脚本。在 Unix 兼容的系统下最简单 +的启动它的方法是这样的: \begin{alltt} > \Ucom{perl /path/to/installer/install-tl} \end{alltt} -(你也许可以直接运行 \Ucom{/path/to/installer/install-tl} 如果这个文件有可执行属 -性,或者先 \texttt{cd} 到这个目录中,等等。我们不会把所有这些执行方法列出来。) -你可能需要扩大终端窗口的大小才能在一屏内显示完整的文本安装程序界面 +(或者你可以直接运行 \Ucom{/path/to/installer/install-tl} 一旦它有可执行属性, +或者先 \texttt{cd} 到这个目录中,等等; +我们不会把所有这些执行方法列出来。) +你可能需要扩大终端窗口才能在一屏内显示完整的文本安装程序界面 (图~\ref{fig:text-main})。 -要在 \GUI\ 模式下安装 (见图~\ref{fig:advanced-lnx}),你需要安装 Tcl/Tk。所以你可 -以运行: +要在 \GUI\ 模式下安装 (见图~\ref{fig:advanced-lnx}),你需要安装 Tcl/Tk。 +安装后你可以运行: \begin{alltt} > \Ucom{perl install-tl -gui} \end{alltt} -原有的 \code{wizard} 和 \code{perltk}/\code{expert} 选项仍然存在。它们需要加入了 -XFT 支持的 \dirname{Perl::TK} 模块,\GNU/Linux 下通常都是这样, -但其他系统下可能不是。要列出所有这些选项: +原有的 \code{-wizard} 和 \code{-perltk}/\code{-expert} 选项现在做着和 \code{-gui} 选项同样的事。 +要列出所有这些选项: \begin{alltt} > \Ucom{perl install-tl -help} \end{alltt} -\textbf{关于 Unix 下的权限:} 在安装过程中,\TL{} 安装程序将会 -遵照你的 \code{umask} 行事。所以如果你需要让你的安装能给其他用户使 -用,就必须保证你设置的权限足够,比如 \code{umask 002}。更多关于 +\textbf{关于 Unix 权限: } \TL{} 安装程序将遵照你安装时的 \code{umask} 设置。 +因此,如果你希望你的安装能被除你之外的其他用户使用, +就必须保证你设置的权限足够,比如 \code{umask 002}。更多关于 \code{umask} 的信息请参见你自己系统的文档。 -\textbf{关于 Cygwin 的特殊考虑:} 和其他 Unix 兼容系统不同,Cygwin -并没有包含所有运行 \TL{} 安装程序所必须的程序,见第~\ref{sec:cygwin}~节。 +\textbf{关于 Cygwin 的特殊考虑: } 和其他 Unix 兼容系统不同,Cygwin +默认并没有包含一切运行 \TL{} 安装程序所必须的程序,见第~\ref{sec:cygwin}~节。 -\subsubsection{\MacOSX} +\subsubsection{\macOS{}} \label{sec:macosx} -如第~\ref{sec:tl-coll-dists}~节提到的,我们给 \MacOSX 准备了一套独立的 -发行版,叫做 Mac\TeX\ (\url{https://tug.org/mactex})。我们推荐使用原生的 -Mac\TeX\ 安装程序,而不是 \TL\ 自带的那个,因为原生的安装程序做了一些 -针对 Mac 的调整,尤其是使用 \TeX{}Dist 数据结构方便在 \MacOSX 下的多个 \TeX\ 发 -行版 (Mac\TeX, Fink, MacPorts, \ldots) 之间切换。 +如第~\ref{sec:tl-coll-dists}~节提到的,我们给 \macOS{} 准备了一套独立的 +发行版,叫做 Mac\TeX\ (\url{https://tug.org/mactex})。我们推荐在 \macOS{} +使用原生的 Mac\TeX\ 安装程序,而不是 \TL,因为原生的安装程序做了一些 +针对 Mac 的调整,尤其是方便在 \macOS{} 下的多个 \TL\ 发行版之间切换, +这使用了被称为 \TeX{}Dist 的数据结构。 -Mac\TeX\ 是严格依赖 \TL 构建的,所以主 \TeX\ 树和二进制文件也是完全一致的。不过 +Mac\TeX\ 严格依赖 \TL 构建,所以主 \TeX\ 树和二进制文件也是完全一致的。不过 它添加了一些用来存放 Mac 专有文档和程序的目录。 \subsubsection{Windows}\label{sec:wininst} -如果你使用的是下载 zip 解压后的目录,又或者 \DVD 安装程序无法自动启动了,请 +如果你使用的是下载了 zip 并解压后的目录,又或者 \DVD 安装程序无法自动启动了,请 双击 \filename{install-tl-windows.bat}。 -你也可以从命令行提示符下启动安装程序。下面 \texttt{>} 表示的就是提示符, -用户输入用 \Ucom{\texttt{bold}} 体表示。如果你正在安装程序目录下,只需要 -运行: +你也可以从命令行提示符下启动安装程序。下面 用 \texttt{>} 表示命令提示符; +用户输入显示成 \Ucom{\texttt{bold}} 的样子。如果你正在安装程序目录下, +只需要运行: \begin{alltt} > \Ucom{install-tl-windows} \end{alltt} -或者你也可以通过绝对路径来运行,比如: +或者你也可以通过绝对路径来运行,比如: \begin{alltt} > \Ucom{D:\bs{}texlive\bs{}install-tl-windows} \end{alltt} 这是对 \TK\ \DVD 而言的,假定 \dirname{D:} 是光驱。图~\ref{fig:basic-w32} -展示了 \GUI\ 安装程序的初始基本屏幕,它是 Windows 下的默认形式。 +展示了 \GUI\ 安装程序的初始基本界面,它是 Windows 下的默认形式。 -要在文本模式下安装,使用: +要在文本模式下安装,使用: \begin{alltt} > \Ucom{install-tl-windows -no-gui} \end{alltt} -要列出所有可用的选项: +要列出所有可用的选项: \begin{alltt} > \Ucom{install-tl-windows -help} \end{alltt} +如果同一目录中还包含 \texttt{install-tl-windows.exe}, +则在以上命令中添加 \texttt{.bat} 扩展名。 +这通常不会发生,除非你已经在本地获取了 \dirname{tlnet} 目录的镜像。 + +在 \TL\ 安装路径中,应避免使用非 ASCII 字符。 +这尤其是在 Windows 11 下可能会出现的问题, +因为它的用户被强制使用微软网络帐户。 +请参阅 \url{https://tug.org/texlive/windows.html\#nonascii} 了解一些解决方法。 + \begin{figure}[tb] \begin{boxedverbatim} -Installing TeX Live 2020 from: ... +Installing TeX Live 2024 from: ... Platform: x86_64-linux => 'GNU/Linux on x86_64' Distribution: inst (compressed) Directory for temporary files: /tmp ... Detected platform: GNU/Linux on Intel x86_64 + + <B> binary platforms: 1 out of 16 - <B> platforms: 1 out of 16 - - <S> Set installation scheme: scheme-full + <S> set installation scheme: scheme-full <C> customizing installation collections - 40 collections out of 41, disk space required: 6536 MB + 40 collections out of 41, disk space required: 8296 MB (free: 138718 MB) <D> directories: TEXDIR (the main TeX directory): - /usr/local/texlive/2020 + /usr/local/texlive/2024 ... <O> options: + [ ] use letter size instead of A4 by default ... - + <V> set up for portable installation Actions: @@ -553,30 +555,30 @@ Actions: <H> help <Q> quit \end{boxedverbatim} -\vskip-\baselineskip +\vskip-.5\baselineskip \caption{文本安装程序主界面 (\GNU/Linux)}\label{fig:text-main} \end{figure} \begin{figure}[tb] -\tlpng{basic-w32}{.6\linewidth} -\caption{基本安装界面 (Windows);Advanced 按钮会提供类似 -图~\ref{fig:advanced-lnx} 的界面}\label{fig:basic-w32} +\tlpng{../texlive-common/basic-w32}{.6\linewidth}{基本安装界面 (Windows)} +\caption{基本安装界面 (Windows); + Advanced 按钮会提供类似图~\ref{fig:advanced-lnx} 的界面}\label{fig:basic-w32} \end{figure} \begin{figure}[tb] -\tlpng{advanced-lnx}{\linewidth} +\tlpng{../texlive-common/advanced-lnx}{\linewidth}{Advanced installer screen (\GNU/Linux)} \caption{高级 \GUI{} 安装界面 (\GNU/Linux)}\label{fig:advanced-lnx} \end{figure} - + \htmlanchor{cygwin} \subsubsection{Cygwin} \label{sec:cygwin} -在开始安装之前,请先使用 Cygwin 的 \filename{setup.exe} 程序安装 -\filename{perl} 和 \filename{wget} 软件包,如果你还没装过。此外 -还推荐安装下列软件包: +在开始安装之前,如果你还没装过\filename{perl} 和 \filename{wget} 软件包, +请先使用 Cygwin 的 \filename{setup.exe} 程序安装它们。 +此外还推荐安装下列软件包: \begin{itemize*} \item \filename{fontconfig} [\XeTeX\ 和 Lua\TeX\ 需要] \item \filename{ghostscript} [各种实用工具需要] @@ -584,33 +586,31 @@ Actions: \item \filename{ncurses} [给安装程序提供 \code{clear} 命令] \end{itemize*} -\subsubsection{文本界面安装程序} +\subsubsection{文本化安装程序} 图~\ref{fig:text-main} 展示了 Unix 下文本模式的主界面,这是 Unix 下安装程序的默认界面。 -这是一个完全用命令行操作的安装程序,完全不支持光标移动。所以你无法 -在多选框或者输入框之间用 Tab 上下切换,只能在提示符下输入特定的字符 -(大小写敏感的) 然后按下 Enter,整个终端窗口就会把新的内容刷新出来。 +这只是一个命令行安装程序; 完全没有光标支持。 +例如,你无法在复选框或输入字段之间用 Tab 上下切换。 +你只能在提示符下输入特定的字符 +(注意大小写) 然后按下 Enter, +之后整个终端窗口就会把新的内容刷新出来。 -文本安装程序之所以这么简陋是因为它要尽可能支持最多的平台,就算 +文本化安装程序之所以这么简陋是因为它要尽可能支持最多的平台,就算 只有一个 Perl 的系统也能运行它。 -\subsubsection{图形界面安装程序} +\subsubsection{图形化安装程序} \label{sec:graphical-inst} -默认的图形界面安装程序的初始界面很简单,只有几个选项;见图~\ref{fig:basic-w32}。 -它可以这样启动: +默认的图形化安装程序的初始界面很简单,只有几个选项; 见图~\ref{fig:basic-w32}。 +它可以这样启动: \begin{alltt} > \Ucom{install-tl -gui} \end{alltt} -按下 Advanced 按钮可以获得文本界面安装程序大部分的选项;见图~\ref{fig:advanced-lnx}。 - -\subsubsection{旧版本安装程序} +按下 Advanced 按钮可以获得文本化安装程序的大部分选项; 见图~\ref{fig:advanced-lnx}。 -安装了 Perl/Tk 的系统仍然可以使用 \texttt{perltk}/\texttt{expert} 和 -\texttt{wizard} 模式。它们可以分别使用 \texttt{-gui=perltk} 和 \texttt{-gui=wizard} -选项启动。 +\texttt{perltk}/\texttt{expert} 和 \texttt{wizard} GUI 选项现在调用常规的图形化安装程序。 \subsection{执行安装程序} \label{sec:runinstall} @@ -624,31 +624,31 @@ Actions: \begin{boxedverbatim} Available platforms: =============================================================================== - a [ ] Cygwin on Intel x86 (i386-cygwin) - b [ ] Cygwin on x86_64 (x86_64-cygwin) - c [ ] MacOSX current (10.13-) on x86_64 (x86_64-darwin) - d [ ] MacOSX legacy (10.6-) on x86_64 (x86_64-darwinlegacy) - e [ ] FreeBSD on x86_64 (amd64-freebsd) - f [ ] FreeBSD on Intel x86 (i386-freebsd) - g [ ] GNU/Linux on ARM64 (aarch64-linux) - h [ ] GNU/Linux on ARMv6/RPi (armhf-linux) - i [ ] GNU/Linux on Intel x86 (i386-linux) - j [X] GNU/Linux on x86_64 (x86_64-linux) - k [ ] GNU/Linux on x86_64 with musl (x86_64-linuxmusl) - l [ ] NetBSD on x86_64 (amd64-netbsd) - m [ ] NetBSD on Intel x86 (i386-netbsd) - o [ ] Solaris on Intel x86 (i386-solaris) - p [ ] Solaris on x86_64 (x86_64-solaris) - s [ ] Windows (win32) + a [ ] Cygwin on x86_64 (x86_64-cygwin) + b [ ] MacOSX current (10.14-) on ARM/x86_64 (universal-darwin) + c [ ] MacOSX legacy (10.6-) on x86_64 (x86_64-darwinlegacy) + d [ ] FreeBSD on x86_64 (amd64-freebsd) + e [ ] FreeBSD on Intel x86 (i386-freebsd) + f [ ] GNU/Linux on ARM64 (aarch64-linux) + g [ ] GNU/Linux on RPi(32-bit) and ARMv7 (armhf-linux) + h [ ] GNU/Linux on Intel x86 (i386-linux) + i [X] GNU/Linux on x86_64 (x86_64-linux) + j [ ] GNU/Linux on x86_64 with musl (x86_64-linuxmusl) + k [ ] NetBSD on x86_64 (amd64-netbsd) + l [ ] NetBSD on Intel x86 (i386-netbsd) + m [ ] Solaris on Intel x86 (i386-solaris) + o [ ] Solaris on x86_64 (x86_64-solaris) + p [ ] Windows (64-bit) (windows) \end{boxedverbatim} -\vskip-\baselineskip +\vskip-.5\baselineskip \caption{Binaries (二进制程序) 菜单}\label{fig:bin-text} \end{figure} 图~\ref{fig:bin-text} 展示了文本模式下的 binaries (二进制程序) 菜单。默认情况下只会安装你当前平台下的二进制程序。在这个菜单下, -你可以选择安装其他平台的二进制程序。这对你要将 \TeX\ 树共享在 -异构网络上的情况比较有用,又或者用于双启动的系统。 +你也可以选择安装其他平台的二进制程序。 +如果你要将 \TeX\ 树共享在异构网络上,又或者将使用双启动的系统, +这会比较有用。 \subsubsection{选择要安装的组件} \label{sec:components} @@ -662,36 +662,38 @@ Select scheme: c [ ] small scheme (basic + xetex, metapost, a few languages) d [ ] basic scheme (plain and latex) e [ ] minimal scheme (plain only) - f [ ] ConTeXt scheme - g [ ] GUST TeX Live scheme - h [ ] infrastructure-only scheme (no TeX at all) - i [ ] teTeX scheme (more than medium, but nowhere near full) - j [ ] custom selection of collections + f [ ] infrastructure-only scheme (no TeX at all) + g [ ] book publishing scheme (core LaTeX and add-ons) + h [ ] ConTeXt scheme + i [ ] GUST TeX Live scheme + j [ ] teTeX scheme (more than medium, but nowhere near full) + k [ ] custom selection of collections \end{boxedverbatim} -\vskip-\baselineskip +\vskip-.5\baselineskip \caption{Scheme (安装方案) 菜单}\label{fig:scheme-text} \end{figure} -图~\ref{fig:scheme-text} 展示了 \TL\ 的安装方案菜单;从这里你选择的是 +图~\ref{fig:scheme-text} 展示了 \TL\ 的安装方案菜单; 从这里你选择的是 一套``安装方案'',也就是对软件包集合的一个统一划分。默认的 \optname{full} -方案会把所有可用的都装上。这是推荐方案,不过你也可以选择 \optname{basic} 方案来 -只获得 plain 和 \LaTeX{},\optname{small} 获得比那稍微多一点程序 (相当于 Mac\TeX -中的 Basic\TeX\ 安装),为测试选用 \optname{minimal} 方案,又或者是 -介乎其间的 \optname{medium} 或 \optname{teTeX} 方案。还有许多特殊或者 -专门针对特定国家的方案。 +方案会把所有可用的都装上。这是推荐方案,不过你也可以选择其他的方案: +\optname{basic} 方案只获得 plain 和 \LaTeX{}, +\optname{small} 方案会获得比它稍微多一点的程序 (相当于 Mac\TeX 中的 Basic\TeX\ 安装), +\optname{minimal} 方案可供测试选用, +而 \optname{medium} 或 \optname{teTeX} 方案则介乎其间。 +还有许多特殊或者专门针对特定国家的方案。 \begin{figure}[tb] -\tlpng{stdcoll}{.7\linewidth} -\caption{Collections (集合) 菜单}\label{fig:collections-gui} +\def\figdesc{Collections (集合) 菜单} +\centering \tlpng{../texlive-common/stdcoll}{.7\linewidth}{\figdesc} +\caption{\figdesc}\label{fig:collections-gui} \end{figure} -你可以使用 `collections' 菜单来详细 -选择安装方案。(图~\ref{fig:collections-gui} 显示了 \GUI 模式下修改的情 -况。) +你可以使用 `collections' 菜单来详细选择安装方案。 +(图~\ref{fig:collections-gui} 显示了 \GUI 模式下修改的情况。) -Collection (安装集合) 是比 scheme (方案) 要更细的一层 \Dash 实际上一个 -方案包含了多个集合,而一个集合又包含了一到多个软件包,然后每个软件包 -(\TL 中最小的组织单位) 则包含了实际的 \TeX\ 宏文件,字体文件,等等。 +Collection (安装集合) 是比 scheme (方案) 要更细的一层——实际上一个 +方案包含了多个安装集合,而一个安装集合又包含了至少一个软件包,然后每个软件包 +(\TL 中最小的组织单位) 则包含了实际的 \TeX\ 宏文件、字体文件等等。 如果你觉得 collection 菜单对安装控制还不够细,可以在安装后使用 \TeX\ Live Manager (\prog{tlmgr}) 程序 (参见第~\ref{sec:tlmgr}~节), @@ -702,44 +704,48 @@ Collection (安装集合) 是比 scheme (方案) 要更细的一层 \Dash 实际 缺省的目录布局在第~\ref{sec:texmftrees}~节有过叙述,见 第~\pageref{sec:texmftrees}~页。在 Unix 下默认的安装目录是 -\dirname{/usr/local/texlive/2020} 而 Windows 下是 -|%SystemDrive%\texlive\2020|。这样的安排允许你有多个并行存在的 \TL\ 安装,每年的 -发行版本一个,你可以通过修改搜索路径来在它们中间切换。 +\dirname{/usr/local/texlive/2024} 而 Windows 下是 +|C:\texlive\2024|。这样的安排允许你有多个并行的 \TL\ 安装存在, +例如每个版本都有一个 (通常按年份,如此处), +你可以通过修改搜索路径来在它们中间切换。 -这个安装路径可以通过设置安装程序中的 \dirname{TEXDIR} 来修改。这个选项和其他选项 +这个安装路径可以通过设置安装程序中的 \dirname{TEXDIR} 来修改。这个选项和其他选项的 GUI 界面 如图~\ref{fig:advanced-lnx} 所示。最常见的更改它的原因要么是该分区没有足够的空间 (完 -整的 \TL\ 安装需要好几 GB 的空间),要么是没有默认位置的写权限。(虽然要安装 -\TL\ 不需要是管理员或者 root 用户,但你至少得对安装的目的目录有写权限。) +整的 \TL\ 安装需要好几 GB 的空间),要么是没有默认位置的写权限 (虽然要安装 +\TL\ 不需要是管理员或者 root 用户,但你至少得对安装的目标目录有写权限)。 -你也可以通过在运行安装程序以前修改特定的环境变量来改变安装目录,最常见的是 -\envname{TEXLIVE\_INSTALL\_PREFIX} 或者 \envname{TEXLIVE\_INSTALL\_TEXDIR},参见 -|install-tl --help| 的文档 (\url{https://tug.org/texlive/doc/install-tl.html} 有 +在 Windows 下,通常你不需要是管理员就能创建 |C:\texlive\2024| +(或者,更一般而言,是 |%SystemDrive%\texlive\2024|)。 + +你也可以通过在运行安装程序以前修改特定的环境变量来改变安装目录 (最常见的是 +\envname{TEXLIVE\_INSTALL\_PREFIX} 或者 \envname{TEXLIVE\_INSTALL\_TEXDIR}); +参见 |install-tl --help| 调出的文档 (\url{https://tug.org/texlive/doc/install-tl.html} 有 在线版本) 以了解完整的列表和更多的信息。 一个合理的选择是你自己主目录下的一个子目录,尤其在只有你一个人 -使用的时候。使用 `|~|' 来表示主目录,比如 `|~/texlive/2020|'。 +使用的时候。使用 `|~|' 来表示主目录,比如 `|~/texlive/2024|'。 -我们建议在目录名称中保留年份,这样可以让你保留多个不同版本的 -\TL{}。(你可能希望还维护一个类似 \dirname{/usr/local/texlive-cur} -这样的名字作为指向当前版本的符号链接,这样的目录名就和版本无 -关了,你只要在新版本出来直接重新指向符号链接即可。) +我们建议在目录名称中保留年份,这样可以让你保留多个不同版本的 \TL{}。 +(你可能还希望通过符号链接保留一个与版本无关的名称, +如 \dirname{/usr/local/texlive-cur}, +以便在测试新版本后重新指向该名称。) -在安装程序中修改 \dirname{TEXDIR} 之后还会同时修改 +在安装程序中修改 \dirname{TEXDIR} 还会同时修改 \dirname{TEXMFLOCAL}, \dirname{TEXMFSYSVAR} 和 \dirname{TEXMFSYSCONFIG}。 -\dirname{TEXMFHOME} 是推荐用来存放个人宏文件和软件包的目录。 +\dirname{TEXMFHOME} 是被推荐的用来存放个人宏文件和软件包的目录。 其缺省值是 |~/texmf| (Mac 下是 |~/Library/texmf|)。与 \dirname{TEXDIR} 不同,其中包含的 |~| 会被不加转换地写进配置文件,因为它能在 \TeX 系统运行时 自动被替换为每个用户自己的主目录。在 Unix 它会被展开为 \dirname{$HOME},而 Windows 下展开为 \verb|%USERPROFILE%|。 -多加一句:\envname{TEXMFHOME} 和所有的目录树一样,都必须按照 +多说一句: \envname{TEXMFHOME} 和所有的目录树一样,都必须按照 \TDS\ 组织,否则文件可能会找不到。 \dirname{TEXMFVAR} 是用来给每个用户存储大多数运行时缓存数据 -的。\dirname{TEXMFCACHE} 则是给 Lua\LaTeX\ 和 \ConTeXt\ MkIV 存储缓存 -(见第 \pageref{sec:context-mkiv} 页的 \ref{sec:context-mkiv} 节);它的默认值是 -\dirname{TEXMFSYSVAR},或者如果 \dirname{TEXMFVAR},如果这个目录可以写。 +的。\dirname{TEXMFCACHE} 则为 Lua\LaTeX\ 和 \ConTeXt\ MkIV 存储缓存 +(见第 \pageref{sec:context-mkiv} 页的 \ref{sec:context-mkiv} 节); 它的缺省值是 +\dirname{TEXMFSYSVAR},或者 (如果那不可写) \dirname{TEXMFVAR}。 \subsubsection{选项} \label{sec:options} @@ -747,6 +753,7 @@ Collection (安装集合) 是比 scheme (方案) 要更细的一层 \Dash 实际 \begin{figure}[tbh] \begin{boxedverbatim} Options customization: +=============================================================================== <P> use letter size instead of A4 by default: [ ] <E> execution of restricted list of programs: [X] <F> create all format files: [X] @@ -758,28 +765,25 @@ Options customization: info to: <Y> after install, set CTAN as source for package updates: [X] \end{boxedverbatim} -\vskip-\baselineskip +\vskip-.5\baselineskip \caption{Options 菜单 (Unix)}\label{fig:options-text} \end{figure} 图~\ref{fig:options-text} 显示了文本模式的选项菜单。关于这个菜单的 -每个选项: +每个选项: \begin{description} -\item[use letter size instead of A4 by default:] 缺省的纸张大小选择。 -当然如果需要,每份文档都可以并且应该单独设定一个纸张大小。 +\item[use letter size instead of A4 by default:] 缺省的纸张大小选项。 +当然,如果有需要,每份文档都可以并且应该单独设定一个纸张大小。 \item[execution of restricted list of programs:] 在 \TL\ 2010 中, 默认允许执行一些外部程序。这 (很少的一部分) 允许的程序列表在 \filename{texmf.cnf} 中定义。参见 2010 版新闻 (第~\ref{sec:2010news} 节) 以了解更多信息。 -\item[create all format files:] 虽然创建不必要的格式文件会浪费一 -点时间,也会多占一些磁盘空间,但 -我们还是建议现在保持这个选项的选定状态,因为如果这次不生成,下次 -用到的时候格式文件就会在用户个人的 \dirname{TEXMFVAR} 目录树内生 -成。这样每次二进制文件或者断字模式更新的时候,这些格式文件也得不 -到更新,所以可能会导致它们的不兼容。 +\item[create all format files:] 我们建议保持这个选项的选定状态, +以避免在动态创建格式时出现不必要的问题。 +更多内容请参见 \prog{fmtutil} 文档。 \item[install font/macro \ldots\ tree:] 下载安装大部分宏包中的文档和源代码文 件。建议选择。 @@ -788,39 +792,36 @@ Options customization: 这个选项 (只对 Unix 有效的) 可以省下设定环境变量的步骤。如果 没有选择它,就必须把 \TL{} 的对应目录添加到 \envname{PATH}, \envname{MANPATH} 和 \envname{INFOPATH} 中。如果要创建符号链 -接,你需要对这些目标目录的写权限。这个选项是为了在用户已知的 +接,你需要有这些目标目录的写权限。这个选项是为了在用户已知的 标准目录中创建符号链接设计的,比如 \dirname{/usr/local/bin}, 这些目录并不包含任何 \TeX\ 文件。不要用这个选项来覆盖系统中 现有的文件,比如给它指定系统目录。最保险和推荐的做法还是不要 选择这个选项。 \item[after install, set CTAN as source for package updates:] -从 \DVD\ 安装时,这个选项 +从 \DVD\ 或 \ISO\ 镜像安装时,这个选项 被缺省启用,因为通常你会希望在此后通过 \CTAN\ 安装一年内更新的软件 -包。禁用它唯一可能的原因是你只安装了 \DVD\ 内容的一部分,计划在以后 -扩展安装。无论如何,安装程序时和安装后的更新的软件包仓库如果需要可 -以分别设置,见第~\ref{sec:location}~节和 +包。禁用它唯一的可能是你只安装了 \DVD\ 内容的一部分,并计划在以后 +扩展安装。无论如何,安装程序时和安装后的更新的软件包仓库可 +以根据需要分别设置,见第~\ref{sec:location}~节和 第~\ref{sec:dvd-install-net-updates}~节。 \end{description} - -Windows 专有的选项,在高级 Perl/Tk 界面中显示有: +Windows 专有的选项,在高级的 GUI 界面中显示: \begin{description} -\item[adjust PATH setting in registry] 保证所有程序都可以在它们的 +\item[adjust searchpath] 保证所有程序都可以在它们的 搜索路径中找到 \TL{} 程序目录。 \item[add menu shortcuts] 如果选择了,它会在开始菜单中创建一个 \TL{} 子菜单。除了 `TeX Live menu' 和 `No shortcuts' 之外,还有 `Launcher entry' 这个选项。这个选项在第 \ref{sec:sharedinstall} 节有详细叙述。 -\item[change file associations] The options are `Only new' (create - file associations, but do not overwrite existing ones), `All' and - `None'. +\item[File associations] 选项包括 `Only new' (创建文件关联,但不覆盖现有的关联), +`All' 和 `None'。 \item[install \TeX{}works front end] \end{description} - -如果所有的设置已经齐备,你就可以在文本界面中按下 `I',或者图形界面 -中按下 `Install TeX Live' 按钮来开始安装了。安装完成后, +如果所有的设置已经齐备,你就可以在文本界面中按下 `I',或者 GUI 界面 +中按下 `Install' 按钮来开始安装了。安装完成后, 你可以跳至第~\ref{sec:postinstall}~节来了解还需要做些什么工作。 \subsection{install-tl 命令行选项} @@ -831,67 +832,68 @@ Windows 专有的选项,在高级 Perl/Tk 界面中显示有: > \Ucom{install-tl -help} \end{alltt} 可以列出所有的命令行参数。你既可以用 |-| 也可以用 |--| 来指定一个 -参数。这里有些比较常见的: +参数。这里有些比较常见的: \begin{ttdescription} -\item[-gui] 尽可能用 \GUI{} 模式的安装程序。它需要 Tcl/Tk 版本 8.5 以上。在 - \MacOSX\ 上和 \TL{} 的 Windows 分发中已经满足这个条件了。原有的 - \texttt{-gui=perltk} 和 \texttt{-gui=wizard} 选项需要安装了编译进 XFT 支持的 - Perl/Tk 模块 (\url{https://tug.org/texlive/distro.html#perltk}); - 如果找不到 Perl/Tk,安装程序就会在文本模式下出现。 +\item[-gui] 尽可能用 \GUI{} 模式的安装程序。它需要 Tcl/Tk 版本 8.5 或更高。 +在旧版 \macOS{}\ 上已经分发; 对于 Big Sur 及以后版本, +如果你没有选择用 Mac\TeX\ 来安装,你需要自己安装 Tcl/Tk。 +Tcl/Tk 已经分发于 Windows 的 \TL{} 中。 +原有的 \texttt{-gui=perltk} 和 \texttt{-gui=wizard} 仍然可以使用 +但它们调用的是相同的 GUI 界面。 +如果找不到 Tcl/Tk,安装程序就会在文本模式下出现。 \item[-no-gui] 强制使用文本模式安装程序。 \item[-lang {\sl LL}] 指定安装程序界面的语言,使用标准的 (通常是两个 -两个字符) 语言代码。安装程序会尝试自己判断出合适的语言,如果判断出的 -语言没有支持就会使用英语替代。可以运行 \verb|install-tl --help| 获得 +两个字符) 语言代码。安装程序会尝试自己判断出合适的语言, +一旦失败或判断正确的语言无法使用,程序就会使用英语替代。 +可以运行 \verb|install-tl --help| 获得 支持的语言列表。 -\item[-portable] 为比如 \USB{} 盘上便携使用安装。也可以在 +\item[-portable] 为诸如 \USB{} 盘上便携使用安装。也可以在 文本安装程序中用 \code{V} 命令选择,或者 GUI 安装程序中选择, 参见第 \ref{sec:portable-tl} 节。 -\item[-profile {\sl profile}] 载入安装配置文件 \var{file} 以不需要 +\item[-profile {\sl file}] 载入安装配置文件 \var{file} 以不需要 用户干预的方式完成安装。安装程序会在安装到的 \dirname{tlpkg} -子目录中创建一个叫 \filename{texlive.profile} 的文件。这个文件可以 -用作参数,在不同的系统下完成完全一致的安装。或者你也可以使用一个定 -制的配置文件,一般通过裁剪生成的文件得到,或者空文件,这样安装时会 -使用所有缺省值。 +子目录中创建一个叫 \filename{texlive.profile} 的文件。这个文件, +比方说,它可以用作参数,在不同的系统下完成完全一致的安装。 +或者你也可以使用一个定制的配置文件,最简单的方法是从生成的配置文件开始, +修改其中的值,或者直接使用一个空文件,这将采用所有缺省的设置。 \item [-repository {\sl url-or-directory}] 指定作为来源的软件包仓库, 参见下文。 \htmlanchor{opt-in-place} -\item[-in-place] (补充说明:除非你清楚自己要做什么,否则不要使用这个选项。) +\item[-in-place] (仅为了完整性记录: 除非你知道自己在做什么,否则不要使用这个选项。) 如果你已经有一份用 rsync, svn, 或者其他方式安装的 -\TL{} (参见 \url{https://tug.org/texlive/acquire-mirror.html}) 那 -这个选项会使用现有的,只执行必要的安装后操作。注意 \filename{tlpkg/texlive.tlpdb} -文件会被覆盖,你需要自己备份它。另外,文件的删除必须手动完成。所以 -只在你知道自己在干什么的情况下才用它。这个选项不能在安装程序界面中 -选择。 - +\TL{} 副本 (参见 \url{https://tug.org/texlive/acquire-mirror.html}) 那么 +这个选项会使用现有的副本,按原样使用,并只执行必要的安装后操作。 +注意 \filename{tlpkg/texlive.tlpdb} 文件可能被覆盖,你需要自己备份它。 +另外,包的移除必须手动完成。这个选项不能在安装程序界面中选择。 \end{ttdescription} \subsubsection{\optname{-repository} 参数} \label{sec:location} -默认的网络软件包安装位置是由 \url{http://mirror.ctan.org} 自动选择 +默认的网络包仓库是由 \url{http://mirror.ctan.org} 自动选择 的 \CTAN{} 镜像。 -如果你需要自己指定,地址可以是以 \texttt{ftp:}, \texttt{http:} 或 -\texttt{file:/} 起始的 URL,或者本地路径。(如果给定了一个 -\texttt{http:} 或 \texttt{ftp:} 地址,其末尾的 `\texttt{/}' 字符 -和末尾的 `\texttt{/tlpkg}' 这段都会被忽略。) +如果你想要覆盖这个设置, +地址可以是以 \texttt{ftp:}、\texttt{http:}、\texttt{https:}、\texttt{file:/} 开头的 URL, +或者是一个普通的目录路径。(当给定一个 \texttt{http:}、\texttt{https:} 或 \texttt{ftp:} 地址时, +其末尾的 `\texttt{/}' 字符和结尾的 `\texttt{/tlpkg}' 组件都会被忽略。) -比如你可以选择这样的一个 \CTAN\ 镜像: +比如,你可以选择这样的一个 \CTAN\ 镜像,类似 \url{http://ctan.example.org/tex-archive/systems/texlive/tlnet/}, 当然你应该把 |ctan.example.org/tex-archive| 替换为具体镜像的 -域名和特定的顶层 \CTAN\ 路径 (\url{https://ctan.org/mirrors}) -维护了一个 \CTAN\ 的镜像列表)。 +域名和特定的顶层 \CTAN\ 路径。 +\CTAN\ 的镜像列表由 \url{https://ctan.org/mirrors} 维护。 -如果给定的地址在本地磁盘上 (或者是路径或者是 \texttt{file:/} -开头的 URL),就会使用指定路径下 \dirname{archive} 子目录中的 -压缩文件进行安装。 +如果给定的参数是本地的 (无论是路径还是 \texttt{file:/} +开头的 URL),仓库路径下的 \dirname{archive} 子目录中的 +压缩文件将被使用 (即使同样有未压缩的文件可用)。 \subsection{安装后的操作} \label{sec:postinstall} @@ -902,166 +904,192 @@ Windows 专有的选项,在高级 Perl/Tk 界面中显示有: \label{sec:env} 如果你选择了在标准路径下创建符号连接 (在第~\ref{sec:options}~节提到), -那就不需要设置环境变量了。否则,在 Unix 系统中,你应该将自己使用的平台 -下二进制程序的目录加入搜索路径中。(在 Windows 下安装程序会负责这一步。) +那就不需要设置环境变量了。否则,在 Unix 系统中,你必须将自己使用的平台 +下的二进制程序的目录加入搜索路径中。(在 Windows 下安装程序会负责这一步。) 每个支持的平台都在 \dirname{TEXDIR/bin} 下有自己的子目录。 -参见图~\ref{fig:bin-text} 以了解所有的这些子目录和它们对应的平台。 +图~\ref{fig:bin-text} 展示了这些子目录的列表和它们对应的平台。 -如果希望 man 和 info 能够找到,你还可以把文档的 man 和 Info 目录加 -入其对应的搜索路径中。在添加 \envname{PATH} 后,手册页页可以被自动 +另外,如果还希望 man 和 info 能够被系统工具找到,你还可以把文档的 man 和 Info 目录 +添加至其对应的搜索路径中。在添加 \envname{PATH} 后,man 页面可以被自动 找到。 -对于 \prog{bash} 这样的 Bourne 兼容 shell 而言,以 Intel x86 下的 -GNU/Linux、默认的目录设置为例,需要修改的文件是 \filename{$HOME/.profile} -(或者其他由 \filename{.profile} 载入的文件),应该添加的内容应该类似 -这样: +对于像 \prog{bash} 这样的 Bourne 兼容的 shell 而言,以 Intel x86 下的 +GNU/Linux 和 \TL\ 默认的目录设置为例,需要修改的文件可能是 \filename{$HOME/.profile} +(或者其他由 \filename{.profile} 载入的文件),要添加的内容应该类似 +这样: \begin{sverbatim} -PATH=/usr/local/texlive/2020/bin/i386-linux:$PATH; export PATH -MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH; export MANPATH -INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH; export INFOPATH +PATH=/usr/local/texlive/2024/bin/x86_64-linux:$PATH; export PATH +MANPATH=/usr/local/texlive/2024/texmf-dist/doc/man:$MANPATH; export MANPATH +INFOPATH=/usr/local/texlive/2024/texmf-dist/doc/info:$INFOPATH; export INFOPATH \end{sverbatim} 对于 csh 或者 tcsh,需要修改的文件通常是 \filename{$HOME/.cshrc},而 -应该添加的内容类似: +要添加的内容类似: \begin{sverbatim} -setenv PATH /usr/local/texlive/2020/bin/i386-linux:$PATH -setenv MANPATH /usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH -setenv INFOPATH /usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH +setenv PATH /usr/local/texlive/2024/bin/x86_64-linux:$PATH +setenv MANPATH /usr/local/texlive/2024/texmf-dist/doc/man:$MANPATH +setenv INFOPATH /usr/local/texlive/2024/texmf-dist/doc/info:$INFOPATH \end{sverbatim} -如果你已经在你的配置文件里写过了这样的路径设置,那就只需要 -把 \TL\ 的这些目录加进去就行了。 +如果你不是在 \code{x86\_64-linux} 平台, +请使用相应的平台名称; +同样,如果你没有安装在默认目录中,请更改目录名称。 +\TL\ 的安装程序在安装结束时会报告要使用的完整路径。 + +如果你已经在启动文件中设置了 \envname{PATH}, +你可以根据需要将 \TL\ 目录合并到其中。 \subsubsection{环境变量的全局配置} \label{sec:envglobal} -如果你希望在整个系统范围内修改这些变量,或这样系统新增的用户自动 -继承这些变量,就得自寻方法了,因为不同的系统之间这方面的配置差异 -太大。 +如果你想要全局地或者对于新添加到系统中的用户进行这些更改, +那你就得自己动手了; +因为在系统中配置这些事情的方式和位置变动太大。 我们的建议是: 1)~你可能应该看看 \filename{/etc/manpath.config} -这个文件是否存在,如果有的话,添加下面这样的内容: +这个文件是否存在,如果有的话,添加下面这样的内容: \begin{sverbatim} -MANPATH_MAP /usr/local/texlive/2020/bin/i386-linux \ - /usr/local/texlive/2020/texmf-dist/doc/man +MANPATH_MAP /usr/local/texlive/2024/bin/x86_64-linux \ + /usr/local/texlive/2024/texmf-dist/doc/man \end{sverbatim} 然后 2)~检查 \filename{/etc/environment} 是否定义了默认的搜索路径 和其他的默认环境变量。 -在每个 (Unix) 二进制目录下,我们都会创建一个 \code{man} 符号链接 -到 \dirname{texmf-dist/doc/man} 目录。因为 -有些 \code{man} 程序,比如 \MacOSX\ 标准的 \code{man} 就能够自动通 -过这个链接找到对应的手册页,这样你就不必手工设置手册页路径了。 +在每个 (Unix) 二进制目录下,我们都会创建一个名为 \code{man} 的符号链接 +关联 \dirname{texmf-dist/doc/man} 目录。 +有些 \code{man} 程序,比如 \macOS{}\ 标准的 \code{man}, +能够自动通过这个链接找到对应的手册页,这样就不必手工设置手册页路径了。 \subsubsection{\DVD\ 安装后的网络更新} \label{sec:dvd-install-net-updates} 如果你从 \DVD\ 安装了 \TL\ 并希望从网络获取更新,需要在更新了搜索路径 -(如上一节所述) \emph{之后}执行这个命令: +(如上一节所述) \emph{之后}执行这个命令: \begin{alltt} -> \Ucom{tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet} +> \Ucom{tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet} \end{alltt} -这告诉 \cmdname{tlmgr} 从就近的 \CTAN\ 镜像获取未来更新。 -从 \DVD{} 安装时会默认完成这一步,通过第~\ref{sec:options}~节介绍 -的选项。 +这告诉 \cmdname{tlmgr} 未来从就近的 \CTAN\ 镜像获取更新。 +通过第~\ref{sec:options}~节介绍的选项, +从 \DVD{} 安装时会默认完成这一步。 如果自动镜像选择出现了问题,你可以从 \url{https://ctan.org/mirrors} -列表中自己指定一个 \CTAN\ 镜像。使用与上述一致的 \dirname{tlnet} -子目录路径。 +列表中自己指定一个 \CTAN\ 镜像。使用镜像的 \dirname{tlnet} +子目录的路径,如前所示。 +\htmlanchor{xetexfontconfig} % keep historical anchor working +\htmlanchor{sysfontconfig} \subsubsection{\protect\XeTeX\protect\ 和 Lua\protect\TeX 的系统字体配置} \label{sec:font-conf-sys} \XeTeX\ 和 Lua\TeX\ 可以使用任何系统安装的字体,而不只是 \TeX\ 目录树 -中的那些。它们使用类似但不完全一致的方式实现这一功能。 - -在 Windows 下 \TL\ 提供的字体会自动为 \XeTeX\ 所用,只要通过字体名称就可以了。 -在 \MacOSX\ 下如果需要按字体名称查找则需要额外的步骤,参见 Mac\TeX\ 网页 -(\url{https://tug.org/mactex})。如果你在其他 Unix 系统中安装了 \filename{xetex} -软件包,需要把系统按如下配置一番 \XeTeX\ 才能找到随 \TL\ 安装的那些字体。 - -为了进行配置,\pkgname{xetex} 安装后 (不管是初始安装还是后来安装的) 都会在 +中的那些。 +这些系统字体 (并不属于 \TL) 常通过给出字体名来访问, +例如 `\code{Liberation Serif}', +虽然也可以使用系统文件名。 + +相关问题是将 \TL\ 发行版的字体作为系统字体可用,这将使它们能通过字体名称访问。 + +对于 Lua\TeX: +通过字体名访问并不需要什么特别的处理。 +对于 Lua\TeX\ 来说, +通过同时支持 \LaTeX\ 和 plain \TeX 的 \pkgname{luaotfload} 包, +\TL\ 中的所有字体,或是通过字体名,或是通过文件名,都同样可以访问。 +有新的字体时,\pkgname{luaotfload} 包的字体名索引需要重新构建; +当尝试加载尚未知晓的字体时,此过程会自动触发。 + +对于 \XeTeX: +在 Windows 下,随 \TL\ 分发的字体会自动为 \XeTeX\ 所用 +(通过运行 \cmdname{fc-cache} 程序,它在 Windows 作为 \TL\ 的一部分被提供)。 +在 \macOS{}\ 下,你需要查阅其他文档。 +对于除 \macOS 之外的 Unix 系统,步骤如下。 + +当 \pkgname{xetex} 安装后 (不管是初始安装还是后来安装的), +都会在 \filename{TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf} 创建一个 必需的配置文件。 - -要在整个系统中使用 \TL{} 的字体 (假定你有足够的权限),请依照下面的 -步骤来做: +为了让 \TL\ 的字体作为系统字体一样被调用, \begin{enumerate*} -\item 将 \filename{texlive-fontconfig.conf} 文件复制到 +\item 将 \filename{texlive-fontconfig.conf} 文件 (通常) 复制到 \dirname{/etc/fonts/conf.d/09-texlive.conf}。 \item 运行 \Ucom{fc-cache -fsv}。 \end{enumerate*} -如果你没有足够的权限执行上述操作,或者只需要把 \TL{} 字体提供给你自 -己,可以这么做: +如果你没有足够的权限执行上述操作,或者只想把 \TL{} 字体提供给仅一个用户, +那么你可以这么做: \begin{enumerate*} -\item 将 \filename{texlive-fontconfig.conf} 文件复制到 - \filename{~/.fonts.conf},其中 \filename{~} 是你的主目录。 +\item 将 \filename{texlive-fontconfig.conf} 文件 (通常) 复制到 + \filename{~/.fonts.conf.d/09-texlive.conf},其中 \filename{~} 是你的主目录。 \item 运行 \Ucom{fc-cache -fv}。 \end{enumerate*} -你可以运行 \code{fc-list} 来查看系统字体的名称。命令 -\code{fc-list : family style file spacing} 可以列出一些有趣的信息。 +你可以运行 \code{fc-list} 来查看系统字体的名称。 +命令 \code{fc-list : family style file spacing} (所有这些参数都是字面字符串) 通常会显示一些很有趣的信息。 -\subsubsection{\protect\ConTeXt{} Mark IV} +\subsubsection{\protect\ConTeXt{} LMTX 和 MKIV} +\label{sec:context} % keeping both labels for backward compatibility \label{sec:context-mkiv} -“旧”的 \ConTeXt{} (Mark II) 和“新的” \ConTeXt{} (Mark IV) -应该在 \TL{} 安装后直接就能运行,而且只要你一直用 \verb+tlmgr+ 来更新, +“旧”的 \ConTeXt{} (Mark IV 或 MkIV) 和“新的” \ConTeXt{} (LMTX or MkXL) +应该在 \TL{} 安装后能直接运行,而且,只要你一直用 \verb+tlmgr+ 来更新, 它不应该需要任何其他的处理。 -然而,因为 \ConTeXt{} MkIV 没有使用 kpathsea 库,在你手动安装 -文件 (没使用 \verb+tlmgr+) 后必须执行一定的设置。在每次安装后,每个 -MkIV 用户必须执行: +\ConTeXt{} 不使用 kpathsea 库或系统的 \code{ls-R} 文件; +相反,\ConTeXt{} 维护了一个针对所有已知目录的每个用户的文件名数据库。 +运行 \code{mktexlsr} 不会直接更新这些数据库, +但是 \ConTeXt{} 将在下次运行时自动重新构建它们。 +(\TL\ 特定的文件 \code{cont-sys.mkiv} 和 \code{cont-sys.mkxl} 实现了这一点。) +如果你想手动重新构建他们, +运行下面的一个或所有: \begin{sverbatim} -context --generate +mtxrun --generate # LMTX +mtxrun --luatex --generate # MkIV \end{sverbatim} -来刷新 \ConTeXt{} 磁盘缓存数据。 -生成的文件会被保存在 \code{TEXMFCACHE} 目录下,在 \TL{} 中这个目录 +生成的文件会被保存在 \code{TEXMFCACHE} 目录下,它在 \TL\ 的默认值是 \verb+TEXMFSYSVAR;TEXMFVAR+。 -\ConTeXt\ MkIV 会读取 \verb+TEXMFCACHE+ 提到的所有路径, -并写入第一个可写东风路径。在读取时,最后找到的匹配会被优先选择。 +\ConTeXt\ 会读取 \verb+TEXMFCACHE+ 提到的所有路径, +并写入第一个可写的路径。在读取时,对于重复的缓存数据, +将以最后找到的匹配项为优先选择。 要了解更多信息,参见 -\url{https://wiki.contextgarden.net/Running_Mark_IV}。 +\url{https://wiki.contextgarden.net/LMTX} 和 \url{https://wiki.contextgarden.net/Running_Mark_IV}。 \subsubsection{集成本地与个人宏文件} \label{sec:local-personal-macros} -这在第~\ref{sec:texmftrees}~节已经顺带提到过了:\dirname{TEXMFLOCAL} +这在第~\ref{sec:texmftrees}~节已经顺带提到过了: \dirname{TEXMFLOCAL} 目录 (它的默认值是 \dirname{/usr/local/texlive/texmf-local} 或者 -Windows 下的 \verb|%SystemDrive%\texlive\texmf-local|) 这个目录就是为了存储 -面向整个系统的本地字体和宏文件的;而 \dirname{TEXMFHOME} 目录 (其 +Windows 下的 \verb|%SystemDrive%\texlive\texmf-local|) 就是为了存储 +面向整个系统的本地字体和宏文件的; 而 \dirname{TEXMFHOME} 目录 (其 默认值是 \dirname{$HOME/texmf} 或者 \verb|%USERPROFILE%\texmf|), -则是用来存储个人的字体和宏文件的。这些目录应该在各个 \TL{} -版本之间共享,每个版本都能看到其内容。因此不应该把 -\dirname{TEXMFLOCAL} 改得和主 \TL{} 目录差别太大,否则新的版本出来 -你又得再改。 +则是用来存储个人的字体和宏文件的。这些目录旨在共享于各个版本之间, +并且其内容将由新的 \TL{} 版本自动识别。因此不应该把 +\dirname{TEXMFLOCAL} 的定义改得和主 \TL{} 目录差别太大,否则新的版本出来 +后你又得手动再修改。 对于这两个目录树而言,文件都应该放到合适的 \TeX\ 目录结构 (\TDS) -子目录中,参见 \url{https://tug.org/tds} 或者 +的子目录中,参见 \url{https://tug.org/tds} 或者 \filename{texmf-dist/web2c/texmf.cnf} 文件。比如一个 \LaTeX{} 文档类或者宏包应该 放在 \dirname{TEXMFLOCAL/tex/latex} 或者 \dirname{TEXMFHOME/tex/latex} 目录下,要不然就是它们的一个子目录下。 \dirname{TEXMFLOCAL} 目录需要一个保持更新的文件名数据库,否则新增 -的文件就无法找到。你可以使用 \cmdname{mktexlsr} 命令或者 -\TeX\ Live Manager \GUI{},configuration 选项卡中的 -`Reinit file database' 按钮来刷新它。 +的文件无法被找到。你可以使用 \cmdname{mktexlsr} 命令来刷新它, +也可以点击 \TL\ Manager \GUI{} 的 Actions 选项卡中的 +`Update filename database' 按钮来刷新它。 默认情况下,这些变量的每一个都定义为所示单独的目录。这不是一个硬性 -规定。如果你需要在某些大的宏包的不同版本直接方便地切换,可以维护多 -个自己的目录树,这通过把 \dirname{TEXMFHOME} 设置为目录列表实现, -大括号包围,逗号分隔: +规定。例如,如果你需要在某些大型宏包的不同版本之间轻松切换,你自己可以根据需要维护多 +个目录树,这通过把 \dirname{TEXMFHOME} 设置为目录列表来实现, +记得用大括号包裹内容,且目录之间以逗号分隔: \begin{verbatim} TEXMFHOME = {/my/dir1,/mydir2,/a/third/dir} @@ -1071,14 +1099,17 @@ Windows 下的 \verb|%SystemDrive%\texlive\texmf-local|) 这个目录就是为 \subsubsection{集成第三方字体} -不幸的是,这是一个非常混乱的问题。除非你愿意深入 \TeX{} 安装的细节, -否则请不要涉足这个领域。\TL\ 已经包含了很多字体,所以请先查查。 +不幸的是,对于 \TeX\ 和 pdf\TeX,这是一个非常混乱的问题。除非你愿意深入 \TeX{} 安装的细节, +否则请不要涉足这个领域。\TL\ 已经包含了很多字体,所以,如果你想,请先查查; +链接 \url{https://tug.org/FontCatalogue} 里面展示了主要的 \TeX\ 发行版中包含的几乎所有文本字体, +这些字体按不同方式分类。 -\XeTeX\ 或 Lua\TeX\ 是可行的替代方案 (参见第~\ref{sec:tex-extensions}~节), -它们能让你使用操作系统的字体而不必将它安装到 \TeX 中。 +如果你确实想安装自己的字体, +访问 \url{https://tug.org/fonts/fontinstall.html} 查看我们尽力描述的安装程序。 -如果你非得这么做,参见 \url{https://tug.org/fonts/fontinstall.html}, -这是我们对整个过程最好的描述。 +另外,考虑使用 \XeTeX\ 或 Lua\TeX\ (见第~\ref{sec:tex-extensions}~节), +这些工具允许您在 \TeX 中使用操作系统的字体并无需安装。 +(但请注意,使用系统字体通常会使您的文档源文件在其他人的不同环境中无法使用。) \subsection{测试安装是否成功} \label{sec:test-install} @@ -1086,20 +1117,20 @@ Windows 下的 \verb|%SystemDrive%\texlive\texmf-local|) 这个目录就是为 在完成 \TL{} 安装之后,自然你会希望试试看它是否正常工作,好让你在以后能够创建优 美的文档和字体。 -你可能马上需要的是一个用来编辑文件的前端程序。\TL{} 在 Windows 下只安装了 -\TeX{}works (\url{https://tug.org/texworks}),而 Mac\TeX\ 则安装了 TeXShop -(\url{https://pages.uoregon.edu/koch/texshop}。在其他 Unix 系统下,由你自己选择编 -辑器。当然,存在很多选择,有些在下一小节列出了;还可以参见 -\url{https://tug.org/interest.html#editors}。任何纯文本编辑器都可以,不需要专门为 -\TeX{} 设计的。 +你可能马上需要的是一个用来编辑文件的前端程序。\TL{} 只在 Windows 下安装了 +\TeX{}works (\url{https://tug.org/texworks}),而 Mac\TeX\ 下则安装了 TeXShop +(\url{https://pages.uoregon.edu/koch/texshop})。在其他 Unix 系统下,则由你自己选择编 +辑器。当然,存在很多选择,有些在下一小节列出了; 还可以参见 +\url{https://tug.org/interest.html#editors}。任何纯文本编辑器都可以,并不需要专门为 +\TeX{} 设计。 这个小节后面给出了一些测试系统是否正常工作的基本步骤。我们这里使用的是 Unix 命令, -在 \MacOSX{} 和 Windows 下你更可能是使用图形界面运行这些测试的,不过其原理并无不 +在 \macOS{} 和 Windows 下,你更可能使用图形界面运行这些测试,不过其原理并无不 同。 \begin{enumerate} -\item 首先确认你可以执行 \cmdname{tex} 程序: +\item 首先确认你可以执行 \cmdname{tex} 程序: \begin{alltt} > \Ucom{tex -{}-version} TeX 3.14159265 (TeX Live ...) @@ -1111,12 +1142,12 @@ Copyright ... D.E. Knuth. 到 \envname{PATH} 中。参见第~\pageref{sec:env}~页关于设置环境变量 的说明。 -\item 处理一个基本的 \LaTeX{} 文件: +\item 处理一个基本的 \LaTeX{} 文件: \begin{alltt} -> \Ucom{latex sample2e.tex} +> \Ucom{pdflatex sample2e.tex} This is pdfTeX 3.14... ... -Output written on sample2e.dvi (3 pages, 7484 bytes). +Output written on sample2e.pdf (3 pages, 142120 bytes). Transcript written on sample2e.log. \end{alltt} 如果无法找到 \filename{sample2e.tex} 或其他什么文件,很可能是因为旧的环境变量 @@ -1124,54 +1155,61 @@ Transcript written on sample2e.log. 让 \TeX{} 报告具体搜索的路径,以便仔细分析出错的原因。参见 第~\pageref{sec:debugging}~页的``调试操作''一节以了解更多信息。) -\item 即时预览结果: +\item 即时预览结果: \begin{alltt} -> \Ucom{xdvi sample2e.dvi} # Unix -> \Ucom{dviout sample2e.dvi} # Windows +> \Ucom{xpdf sample2e.pdf} \end{alltt} 你应该可以看到在新窗口中出现了一篇介绍 \LaTeX{} 基础的有趣文档。 -(如果你刚接触 \TeX\ 系统,还是值得一读的。) \cmdname{xdvi} -需要运行在 X 窗口系统下才能工作,如果没有运行窗口环境或 -\envname{DISPLAY} 环境变量设置错误,都会得到 -\samp{Can't open display} 这句错误信息。 +(如果你刚接触 \TeX\ 系统,还是值得一读的。) + +当然还有许多其他的 PDF 阅读器。 +在 Unix 系统, +\cmdname{evince} 和 \cmdname{okular} 是常见的选择。 +在 Windows 系统, +我们建议尝试 Sumatra PDF +(\url{https://www.sumatrapdfreader.org/free-pdf-reader.html})。 +\TL{} 中并没有包含任何 PDF 阅读器, +因此,您必须单独安装您想要使用的任意一款。 -\item 创建用于打印或显示的 \PS{} 文件: +\item 当然你任何可以生成 \TeX\ 原始的 \dvi{} 文件: \begin{alltt} -> \Ucom{dvips sample2e.dvi -o sample2e.ps} +> \Ucom{latex sample2e.tex} \end{alltt} -\item 创建 PDF 文件而非 \dvi{},这里采用直接处理 \filename{.tex} -文件输出 PDF 的方式: +\item 并且在线预览 \dvi{} \begin{alltt} -> \Ucom{pdflatex sample2e.tex} +> \Ucom{xdvi sample2e.dvi} # Unix +> \Ucom{dviout sample2e.dvi} # Windows \end{alltt} +\cmdname{xdvi} 需要运行在 X 窗口系统下才能工作; +如果没有运行窗口环境或 \envname{DISPLAY} 环境变量设置错误, +都会得到 \samp{Can't open display} 这句错误信息。 -\item 预览 PDF 文件: +\item 由 \dvi\ 创建 \PS{} 文件: \begin{alltt} -> \Ucom{gv sample2e.pdf} -\textrm{或:} -> \Ucom{xpdf sample2e.pdf} +> \Ucom{dvips sample2e.dvi -o sample2e.ps} +\end{alltt} + +\item 或由 \dvi{} 创建 PDF 文件, +这是一种使用 pdf\TeX\ (或 Xe\TeX\ 或 Lua\TeX) 的替代方案, +它有时候会很有用: +\begin{alltt} +> \Ucom{dvipdfmx sample2e.dvi -o sample2e.pdf} \end{alltt} -\cmdname{gv} 和 \cmdname{xpdf} 现在都不包含在 \TL{} 中,你 -必须单独安装它们。请分别参阅 \url{https://www.gnu.org/software/gv} 和 -\url{https://www.xpdfreader.com}。(还有许多其他的 PDF 查看器。) -Windows 下我们推荐 Sumatra PDF -(\url{https://www.sumatrapdfreader.org/free-pdf-reader.html})。 -\item 除 \filename{sample2e.tex} 外可能会对你有用的标准测试文件: +\item 除 \filename{sample2e.tex} 外可能会对你有用的其他标准测试文件: \begin{ttdescription} \item [small2e.tex] 比 \filename{sample2e} 更为简单的文档,供你在遇到问题 时尝试减少输入的内容。 \item [testpage.tex] 测试你的打印机是否带有预设的偏移量。 -\item [nfssfont.tex] 打印一份字体表格 (proofsheet) 以供测试。 +\item [nfssfont.tex] 打印一份字体表格以供测试。 \item [testfont.tex] 用 plain \TeX{} 打印字体表格。 \item [story.tex] 最经典的 (plain) \TeX{} 测试文件。在执行 \samp{tex story.tex} 之后,你还要在 \code{*} 提示符下键入 \samp{\bs bye}。 \end{ttdescription} -你可以用与我们处理 \filename{sample2e.tex} 文件时相同的方式来处理这些文件。 -\item 如果你安装了 \filename{xetex} 包,可以按如下步骤测试它能否访问系统字体: +\item 如果你安装了 \filename{xetex} 包,可以按如下步骤测试它能否访问系统字体: \begin{alltt} > \Ucom{xetex opentype-info.tex} This is XeTeX, Version 3.14\dots @@ -1181,11 +1219,45 @@ Transcript written on opentype-info.log. \end{alltt} 如果你收到 ``Invalid fontname `Latin Modern Roman/ICU'\dots'' 这样 -的错误信息,就说明需要配置系统才能找到 \TL{} 自带的字体。 +的错误信息,就说明需要配置系统才能找到 \TL\ 自带的字体。 参见第~\ref{sec:font-conf-sys}~节。 \end{enumerate} +\htmlanchor{uninstall} +\subsection{卸载 \TL} +\label{sec:uninstall} + +要卸载 \TL\ (在成功安装后; 关于 Windows 的操作,请见最后): + +\begin{alltt} +\Ucom{tlmgr uninstall --all} +\end{alltt} + +系统会请求确认,否则不会执行任何操作。 +(如果没有使用 \code{-{}-all},\code{uninstall} 操作将用于移除单个包。) + +这不会移除用户特定的目录,具体如下 (也参见第~\ref{sec:texmftrees}~节): + +\begin{ttdescription} +\item [TEXMFCONFIG] 用于用户配置更改。如果你希望保留它们,请确保在删除之前知道如何重新创建它们。 + +\item [TEXMFVAR] 用于存储自动生成的缓存数据,例如本地格式文件。 +除非你将其用于其他目的,否则删除它应该是安全的。 + +\item [TEXMFHOME] 只包含你自己安装的文件,通常是发行版中不提供的文件。 +除非你完全停止使用 \TeX,或者想从头开始,否则你可能不希望删除此目录。 + +\end{ttdescription} + +\noindent 您可以通过运行 \code{kpsewhich -var-value=\ttvar{var}} 来找到这些变量的目录路径。 + +此 \prog{tlmgr} 卸载操作也不会撤销安装后的操作, +如在你的 shell 初始化文件中修改的 \envname{PATH} 和系统对 \TL\ 中字体的访问 +(见第~\ref{sec:postinstall}~节)。如果需要,您必须手动撤销这些操作。 + +在 Windows 上,卸载可以通过 \GUI 进行; 见第~\ref{sec:winfeatures}~节。 + \subsection{其他可下载软件的链接} 如果你还是个 \TeX{} 新手,或者在编辑 \TeX{} 或 \LaTeX{} 文档时需要帮助, @@ -1193,30 +1265,29 @@ Transcript written on opentype-info.log. 这里是一些你可能会考虑安装的其他工具的链接。 \begin{description} -\item[Ghostscript] \url{https://ghostscript.com/} +\item[Ghostscript] \url{https://ghostscript.com/} 一个免费的 PostScript 和 PDF 解释器。 \item[Perl] \url{https://perl.org/} 与 CPAN 中的补充包, - \url{https://cpan.org/} -\item[ImageMagick] \url{https://imagemagick.org}, 用于图形处理和转换 + \url{https://cpan.org/}。 +\item[ImageMagick] \url{https://imagemagick.org}, 用于图形处理和转换。 \item[NetPBM] \url{http://netpbm.sourceforge.net}, 同样用于图形。 \item[面向 \TeX\ 的编辑器] 有很广泛的选择,一般依用户个人的口味而定。这 里按字典序列出了一些 (部分是 Windows 才有的)。 \begin{itemize*} - \item \cmdname{GNU Emacs} 在 Windows 下也有原生版本,参见 - \url{https://www.gnu.org/software/emacs/emacs.html}。 - \item \cmdname{Emacs 的 Auc\TeX\ 包} 的 Windows 版本在 \CTAN\ 提供。 - AuC\TeX\ 的主页在 \url{https://www.gnu.org/software/auctex}。 + \item \cmdname{GNU Emacs} 在所有的主要平台上都可以使用; 参见 + \url{https://www.gnu.org/software/emacs}。 + \item \cmdname{AUC\TeX} 在 Emacs 下运行; 通过 Emacs 的包管理器 \cmdname{ELPA} 可以获得。 + 源代码也可以通过 CTAN 获取。AUC\TeX\ 的主页是 \url{https://www.gnu.org/software/auctex}。 \item \cmdname{SciTE} 在 \url{https://www.scintilla.org/SciTE.html} 提供。 \item \cmdname{Texmaker} 是自由软件,在 \url{https://www.xm1math.net/texmaker} 提供。 \item \cmdname{TeXstudio} 是 \cmdname{Texmaker} 的一个 - fork,引入了额外的功能;\url{https://texstudio.org}。 + fork,引入了额外的功能; 在 \url{https://texstudio.org} 提供。 \item \cmdname{TeXnicCenter} 是自由软件,在 - \url{https://www.texniccenter.org} 提供,也随 pro\TeX{}t - 发行版附带。 + \url{https://www.texniccenter.org} 提供。 \item \cmdname{TeXworks} 是自由软件,在 \url{https://tug.org/texworks} 提供,也 - 作为 \TL{} 的一部分只在 Windows 被安装。 + 作为 \TL{} 的一部分只在 Windows 下被安装。 \item \cmdname{Vim} 是自由软件,在 \url{https://www.vim.org} 提供。 \item \cmdname{WinEdt} 是共享软件,在 @@ -1235,10 +1306,10 @@ Transcript written on opentype-info.log. \label{sec:sharedinstall} \TL{} 的设计可以使它在同一个网络中的不同的系统间共享。在标准的 -目录结构下,不需要配置固定的绝对路径:\TL{} 程 -序所需要的文件都能通过都在这些程序自身的相对路径找到。你可以在 +目录结构下,不需要配置固定的绝对路径: \TL{} 程 +序所需要的文件都能通过在这些程序自身的相对路径找到。你可以在 \filename{$TEXMFDIST/web2c/texmf.cnf} 配置文件中看到实际的处理, -它包含了类似下面的内容: +它包含了类似下面的内容: \begin{verbatim} TEXMFROOT = $SELFAUTOPARENT ... @@ -1253,8 +1324,8 @@ TEXMFLOCAL = $SELFAUTOGRANDPARENT/../texmf-local 至于 Windows,\TL{} 包含了一个叫 \filename{tlaunch} 的启动程序。它的主 窗口的菜单和按钮包括许多 \TeX\ 相关功能的程序和文档,还可以通过 \code{ini} -定制。首次使用时,它会进行一些 Windows 专有的安装后设置,比如给当前用户 -修改搜索路径并创建文件关联。因此,在局域网络中可以访问到 \TL{} 的工作站 +定制。首次使用时,它会进行一些 Windows 专有的后安装设置,比如给当前用户 +修改搜索路径并创建文件关联。因此,在局域网络中可以访问到 \TL{} 的工作站, 只需要启动器的快捷菜单就够了。参见 \code{tlaunch} 手册 (\code{texdoc tlaunch}, 或 \url{https://ctan.org/pkg/tlaunch})。 @@ -1267,14 +1338,19 @@ TEXMFLOCAL = $SELFAUTOGRANDPARENT/../texmf-local 安装,而跳过系统集成。你可以在 \USB{} 盘上创建这样的安装,或者在安装 后复制到 \USB{} 盘上。 +从技术上讲, +通过将 \envname{TEXMFHOME}、\envname{TEXMFVAR} 和 \envname{TEXMFCONFIG} 的默认值分别设置为与 +\envname{TEXMFLOCAL}、\envname{TEXMFSYSVAR} 和 \envname{TEXMFSYSCONFIG} 相同, +使得便携式安装成为自包含的; 因此,不会创建针对用户的配置和缓存。 + 要使用这样的便携安装来运行 \TeX{},你必须将对应的二进制目录加入终端 的搜索路径,如往常一样。 在 Windows 下,你可以双击安装根目录下的 \filename{tl-tray-menu} -来创建一个临时的启动栏菜单,以选择执行一些常见任务,如这个截图所示: +来创建一个临时的启动栏菜单,以选择执行一些常见任务,如这个截图所示: \medskip -\tlpng{tray-menu}{4cm} +\tlpng{../texlive-common/tray-menu}{4cm}{Windows 托盘菜单} \smallskip \noindent `More\ldots' 项目解释了如何定制这个菜单。 @@ -1285,31 +1361,33 @@ TEXMFLOCAL = $SELFAUTOGRANDPARENT/../texmf-local \begin{figure}[tb] -\tlpng{tlshell-macos}{\linewidth} -\caption{\prog{tlshell} \GUI, 显示了 Actions 菜单 (\MacOSX)} +\def\figdesc{\prog{tlshell} \GUI, 显示 Actions 菜单 (\GNU/Linux)} +\tlpng{../texlive-common/tlshell-linux}{\linewidth}{\figdesc} +\caption{\figdesc} \label{fig:tlshell} \end{figure} \begin{figure}[tb] -\tlpng{tlcockpit-packages}{.8\linewidth} -\caption{\prog{tlmgr} 的 \prog{tlcockpit} \GUI{}} +\def\figdesc{\prog{tlmgr} 的 \prog{tlcockpit} \GUI{}} +\tlpng{../texlive-common/tlcockpit-packages}{.8\linewidth}{\figdesc} +\caption{\figdesc} \label{fig:tlcockpit} \end{figure} \begin{figure}[tb] -\tlpng{tlmgr-gui}{\linewidth} -\caption{旧有的 \prog{tlmgr} \GUI\ 模式:按下 `Load' 后的主窗口} +\def\figdesc{旧有的 \prog{tlmgr} \GUI\ 模式: 按下 `Load' 后的主窗口} +\tlpng{../texlive-common/tlmgr-gui}{\linewidth}{\figdesc} +\caption{\figdesc} \label{fig:tlmgr-gui} \end{figure} \TL{} 包含一个叫 \prog{tlmgr} 的程序,它可以用来管理安装后的 -系统。它的功能包括: +系统。它的功能包括: \begin{itemize*} -\item 列出方案 (scheme),集合和安装包; -\item 安装、升级、备份、恢复、卸载软件包,并且能自动计算依赖关系; -\item 查找和列出软件包以及它们的描述; -\item 列出、添加和删除不同平台的可执行文件; +\item 安装、更新、备份、还原和卸载各个软件包,可选择考虑依赖关系; +\item 查找和列出软件包以及它们的描述; +\item 列出、添加和删除不同平台的可执行文件; \item 改变安装选项,比如纸张大小和源文件位置 (参见第~\ref{sec:location}~节)。 \end{itemize*} @@ -1319,12 +1397,14 @@ TEXMFLOCAL = $SELFAUTOGRANDPARENT/../texmf-local \subsection{\cmdname{tlmgr} 的 \GUI{} 界面} -\TL{} 包含多个 \prog{tlmgr} 的 \GUI{}。图~\ref{fig:tlshell} 展示了 -\cmdname{tlshell},它是用 Tcl/Tk 编写的,在 Windows 和 \MacOSX{} 下直接就能用。 -图~\ref{fig:tlcockpit} 展示了 \prog{tlcockpit},它需要 Java 版本~8 或者更高以及 -JavaFX。这两个都是单独的安装包。 +\TL{} 包含多个 \prog{tlmgr} 的 \GUI{} 前端。 +其中两个值得注意的: 图~\ref{fig:tlshell} 展示了 +\cmdname{tlshell},它是用 Tcl/Tk 编写的,在 Windows 开箱即用。 +图~\ref{fig:tlcockpit} 展示了 \prog{tlcockpit}, +它需要 Java 版本~8 或者更高以及 JavaFX。这两个都是独立的安装包。 -\prog{tlmgr} 还有一个原生的 \GUI{} 模式 (见图~\ref{fig:tlmgr-gui}): +\prog{tlmgr} 还有一个原生的 \GUI{} 模式 (见图~\ref{fig:tlmgr-gui}), +启动它可以用: \begin{alltt} > \Ucom{tlmgr -gui} \end{alltt} @@ -1333,25 +1413,25 @@ JavaFX。这两个都是单独的安装包。 \subsection{\cmdname{tlmgr} 命令行使用示例} -在初始安装之后,你可以用下面的命令更新系统: +在初始安装之后,你可以用下面的命令更新至最新版本: \begin{alltt} > \Ucom{tlmgr update -all} \end{alltt} -如果这太激进了一点,先尝试: +如果这太激进了一点,先尝试: \begin{alltt} > \Ucom{tlmgr update -all -dry-run} \end{alltt} -或 (产生更少输出): +或 (产生更少输出): \begin{alltt} > \Ucom{tlmgr update -list} \end{alltt} -下面这个更复杂一点的例子从本地目录添加了一个新的软件包集合,用于 \XeTeX\ 引擎。 +下面这个更复杂一点的例子从本地目录添加了一个新的软件包集合,用于 \XeTeX\ 引擎: \begin{alltt} > \Ucom{tlmgr -repository /local/mirror/tlnet install collection-xetex} \end{alltt} -它会产生下面的输出 (节略部分): +它会产生下面的输出 (节略部分): \begin{fverbatim} install: collection-xetex install: arabxetex @@ -1363,23 +1443,23 @@ running post install action for xetex install: xetex-def ... running mktexlsr -mktexlsr: Updating /usr/local/texlive/2020/texmf-dist/ls-R... +mktexlsr: Updating /usr/local/texlive/2024/texmf-dist/ls-R... ... running fmtutil-sys --missing ... Transcript written on xelatex.log. -fmtutil: /usr/local/texlive/2020/texmf-var/web2c/xetex/xelatex.fmt installed. +fmtutil: /usr/local/texlive/2024/texmf-var/web2c/xetex/xelatex.fmt installed. \end{fverbatim} 如你所见,\prog{tlmgr} 会安装所有依赖的包,也会处理所有包括刷新文件名 -数据库和重新生成格式文件在内的所有必要的安装后工作。上面给 \XeTeX{} +数据库和重新生成格式文件在内的所有必要的后安装工作。上面给 \XeTeX{} 生成了新的格式文件。 要描述一个包 (或者集合、安装方案): \begin{alltt} > \Ucom{tlmgr show collection-latexextra} \end{alltt} -会产生这样的输出: +会输出这样的内容: \begin{fverbatim} package: collection-latexextra category: Collection @@ -1391,7 +1471,7 @@ sizes: 657941k \end{fverbatim} 最后也是最重要的,查阅 \url{https://tug.org/texlive/tlmgr.html} -这里的完整文档,或者: +这里的完整文档,或者: \begin{alltt} > \Ucom{tlmgr -help} \end{alltt} @@ -1402,22 +1482,32 @@ sizes: 657941k \subsection{针对 Windows 的特征} \label{sec:winfeatures} -在 Windows 下,安装程序额外地做了以下一些事情: +在 Windows 下,安装程序执行了一些额外的操作: \begin{description} -\item[菜单与快捷方式。] 在开始菜单上加入了新的`\TL{}'程序菜单,主要是一些 -\GUI{} 程序 (如 \prog{tlmgr}、\prog{texdoctk} 和一些文档的菜单。 +\item[菜单与快捷方式。] 在开始菜单上加入了新的 `\TL{}' 程序菜单,主要是一些 +\GUI{} 程序, 如 \prog{tlshell} (\prog{tlmgr} 的 \GUI) 和 \prog{dviout}, +以及一些文档的菜单。 + \item[文件关联。] 如果启用,\prog{TeXworks} 和 \prog{Dviout} 会成为它们对应文件 类型的默认程序,或者在这些文件类型的“用...打开”右键菜单中出现。 -\item[位图到 eps 转换器。] 许多位图格式会在它们的“用...打开”菜单中获得一个 - \cmdname{bitmap2eps} 项目。Bitmap2eps 是一个使用 \cmdname{sam2p} 或 - \cmdname{bmeps} 的简单脚本。 +然而,优先级更高的“用户选择”文件关联 (只能通过交互方式指定) 可能会造成干扰。 + +\item[PostScript 支持。] 对于 PostScript 文件, +一个 PSviewer 文件类型现在会将 PostScript 转换为临时 PDF, +然后由默认的 PDF 查看器显示。 +各种位图格式在其“打开方式”右键菜单中会有一个 \cmdname{bitmap2eps} 条目, +用于转换为 EPS, +让 \cmdname{sam2p} 或 \cmdname{bmeps} 执行实际工作。 + \item[自动路径调整。] 不需要手动配置步骤。 -\item[自动设置环境变量。] 不再需要手动的配置步骤。 -\item[反安装程序。] 安装程序为 \TL{} 创建了`添加/删除程序'条目。这与 -\TeX\ Live Manager \GUI\ 的删除按钮相对应。对于单用户安装,安装程序会在开始菜单 -创建卸载项目。 -\item[写保护。] 对于管理员安装,\TL\ 的目录会有写保护,至少在 \TL\ 被安装到 NTFS -格式的本地磁盘时是这样的。 + +\item[卸载程序。] 安装程序会为 \TL{} 创建一个条目, +要么在“添加/删除程序”中 (管理员安装), +要么在 \TL{} 菜单中 (单用户安装)。 + +\item[写保护。] 对于管理员安装, +如果 \TL\ 安装在正常的 NTFS 格式化的不可移动磁盘上, +则 \TL\ 目录是写保护的。 \end{description} 另外,另一种方式可以参见 \filename{tlaunch}, 在第~\ref{sec:sharedinstall} 节有描述。 @@ -1428,10 +1518,13 @@ sizes: 657941k \TL{} 提供了以下缺失的部分。这些程序只在 \TL{} 的 Windows 版本中提供。 \begin{description} -\item[Perl 和 Ghostscript。] 由于 Perl 和 Ghostscript 的重要性,\TL{} -提供了这些程序的`隐藏'拷贝。需要这些软件支持的 \TL{} 程序知道它们的位置, -但它们不会通过环境变量和注册表设置来暴露所在的位置。它们不是完整的安装版, -也不会与任何 Perl 或 Ghostscript 系统安装程序冲突。 +\item[Perl、Tcl/Tk 和 Ghostscript。] 由于 Perl 和 Ghostscript 的重要性, +并且安装程序和 tlshell \GUI{} 是用 Tcl/Tk 编写的, +\TL{} 提供了这些程序的`隐藏'拷贝。需要这些软件支持的 \TL{} 程序知道它们的位置, +但它们不会通过环境变量和注册表设置来暴露所在的位置。它们不是完整的安装版 (除了 Ghostscript), +也不会与任何 Perl、Tcl/Tk 或 Ghostscript 系统安装程序冲突。 +请参阅第~\ref{sec:externalwndws}~节, +了解如何告知 \TL{} 使用您自己的外部安装来处理 \TL{} 内的贡献脚本。 \item[dviout。] 另外安装的还包括一款 DVI 预览程序 \prog{dviout}。 当你第一次使用 \cmdname{dviout} 预览文件时,因为没有安装屏幕显示字体,它 @@ -1442,25 +1535,62 @@ sizes: 657941k \TeX\ 编辑器。 \item[命令行工具。] 与常见的 \TL{} 二进制文件一起,还安装了一些常见的 -Unix 命令行工具的 Windows 移植版本。它们包括 \cmdname{gzip}、 -\cmdname{unzip} 以及来自于 \cmdname{poppler} 套装中的一些工具 -(\cmdname{pdfinfo}, \cmdname{pdffonts}, \ldots)。 -虽然没有提供 Windows 版本的 PDF 阅读器,但有许多替代产品,其中之一是 -Sumatra PDF 阅读器,可以从 \url{https://sumatrapdfreader.org/} 获得。 +Unix 命令行工具的 Windows 移植版本。 +它们包括 \cmdname{gzip}、\cmdname{zip}、\cmdname{unzip} 以及 \cmdname{poppler} 套件中的工具 +(如 \cmdname{pdfinfo}、\cmdname{pdffonts} 等)。 -\item[fc-list、fc-cache, \ldots] 来自于 fontconfig 库的这些工具有助于 \XeTeX{} +\item[fc-list、fc-cache 等。] 来自于 \pkgname{fontconfig} 库的这些工具有助于 \XeTeX{} 处理 Windows 的系统字体。你可以使用 \prog{fc-list} 来确定传递给经 \XeTeX 扩展后的 \cs{font} 命令的字体名称。如果需要,首先运行 \prog{fc-cache} 更新 字体信息。 \end{description} +\subsection{使用外部的 Perl、Tcl/Tk 和 Ghostscript 程序} +\label{sec:externalwndws} + +通常, +\TL{} 会使用其内置的 Perl、Tcl/Tk 和 Ghostscript 来运行 \TL{} 内部的贡献脚本。 +如果你希望使用自己的外部版本, +你可以在\emph{安装根目录}的 \file{texmf.cnf} 文件中进行配置。 + +对于 Perl, +你需要添加一行 +\begin{verbatim} +TEXLIVE_WINDOWS_TRY_EXTERNAL_PERL = 1 +\end{verbatim} +\TL{} (特别是 \file{bin/windows/runscript.tlu}) 会在搜索路径中查找 \file{perl.exe}, +除了属于 \TL{} 底层的脚本之外。 +这是三者中最有可能有用的设置; +尽管 \TL{} Perl 包含许多附加模块, +但它不能支持所有的第三方脚本。 + +同样地, +对于 Tcl/Tk, +你需要添加一行 +\begin{verbatim} +TEXLIVE_WINDOWS_TRY_EXTERNAL_TCL = 1 +\end{verbatim} +\TL{} 将会在搜索路径中查找 \file{tclkit.exe}、\file{wish.exe}、\file{wish85.exe}、\file{wish86.exe} 和 \file{wish87.exe}。 + +Ghostscript 的处理方式有所不同, +你需要指定命令行 Ghostscript 的文件名或完整路径: +\begin{alltt} +TEXLIVE_WINDOWS_EXTERNAL_GS = \var{命令行 Ghostscript 的路径} +\end{alltt} +另一个不同点是, +\TL{} 附带的 Ghostscript 是完整的, +仅缺少文档和打印机驱动程序。 +因此,你不太可能需要覆盖它。 + +另请参阅第~\ref{sec:configfiles}~节关于 \file{texmf.cnf} 的说明。 + \subsection{User Profile 目录相当于主目录} \label{sec:winhome} Windows 下对应于 Unix 下的主目录的是 \verb|%USERPROFILE%|。 在 Windows Vista 和以后的系统下,它通常位于 -\verb|C:\Documents and Settings\<username>|; +\verb|C:\Documents and Settings\<username>|; 在 Windows Vista 和之后的版本下是 \verb|C:\Users\<username>|。通常情况下,在 \filename{texmf.cnf} 文件和 \KPS{} 中,\verb|~| 在 Windows 和 Unix 下均可以 进行合适的展开。 @@ -1468,37 +1598,63 @@ Windows 下对应于 Unix 下的主目录的是 \verb|%USERPROFILE%|。 \subsection{Windows 注册表} \label{sec:registry} -Windows 将几乎所有的配置数据存放在注册表中。注册表是包含几个主支的一系 -列分层组织的分支。对于安装的程序而言,最重要的主支是 \path{HKEY_CURRENT_USER} -和 \path{HKEY_LOCAL_MACHINE},通常简写为 \path{HKCU} 和 \path{HKLM}。注册表的 -\path{HKCU} 部分位于用户的主目录 (参见~\ref{sec:winhome}~节)。\path{HKLM} -通常位于 Windows 目录的子目录中。 +在 Windows 中, +Unix 主目录的对应目录是 \verb|%USERPROFILE%| 目录。 +在 Windows Vista 及更高版本中, +它是 \verb|C:\Users\<username>|。 +在 \filename{texmf.cnf} 文件中, +以及在 \KPS{} 中的一般情况下, +\verb|~| 将在 Windows 和 Unix 上都能适当地展开。 -在某些情况下,系统信息可以从环境变量获得,但对于其它信息,如快捷方式的位置, -则需要访问注册表。设置永久环境变量也需要访问注册表。 +\subsection{Windows 注册表} +\label{sec:registry} +Windows 将几乎所有的配置数据存储在其注册表中。 +注册表包含一组层次结构组织的键,具有多个根键。 +对于安装程序来说, +最重要的根键是 \path{HKEY_CURRENT_USER} 和 \path{HKEY_LOCAL_MACHINE}, +简称为 \path{HKCU} 和 \path{HKLM}。 +注册表的 \path{HKCU} 部分位于用户的主目录中(参见第~\ref{sec:winhome}~节)。 +\path{HKLM} 通常位于 Windows 目录的一个子目录中。 + +在某些情况下, +系统信息可以从环境变量中获取, +但对于其他信息,例如快捷方式的位置,则需要查询注册表。 +永久设置环境变量也需要访问注册表。 \subsection{Windows 权限} \label{sec:winpermissions} -在较新的 Windows 版本中,普通用户与管理员是有区别的。只有管理员能自由访问整个操作系统。我们努力使 -得 \TL{} 的安装不需要管理员权限。 +在较新的 Windows 版本中, +普通用户与管理员是有区别的。 +只有管理员能自由访问近乎整个操作系统。 +我们努力使得 \TL{} 的安装不需要管理员权限。 -如果安装程序以管理员权限启动,会有选项允许给所有用户安装,如果启用了这个选项,就 -会给所有用户创建快捷方式,并修改系统搜索路径。否则,安装程序只为当前用户创建快捷 -方式,并改变用户搜索路径。 +如果安装程序以管理员权限启动, +会有选项允许给所有用户安装, +如果启用了这个选项, +就会给所有用户创建快捷方式, +并修改系统搜索路径。 +否则,安装程序只为当前用户创建快捷方式, +并改变用户搜索路径。 -无论管理员状态如何,\TL{} 预设的默认根目录总是位于 \verb|%SystemDrive%| -下。对于当前用户安装程序总是要测试,根目录是否可写。 +无论管理员状态如何, +\TL{} 预设的默认根目录总是位于 \verb|%SystemDrive%| 下。 +对于当前用户安装,程序总是要测试根目录是否可写。 如果用户不是管理员,并且 \TeX{} 已经存在搜索路径中,则可能会出现问题。 -因为有效搜索路径是由系统路径后接用户路径组成,新安装的 \TL{} 可能永远不会 -优先运行。为了保险起见,安装程序为命令提示符创建快捷方式。在这个快捷 -方式中,新安装的 \TL{} 的可执行目录被预设于本地的搜索路径中。当从这个 -快捷方式启动命令行任务时,便可以使用新的 \TL{}。如果安装了 \TeX{}works, -其快捷方式也将 \TL{} 加进了搜索路径中,所以它应该不会出现路径问题。 - -你需要知道的是:即使你以管理员身份登录系统,依旧要求你 +因为有效搜索路径是由系统路径后接用户路径组成, +新安装的 \TL{} 可能永远不会优先运行。 +为了保险起见,安装程序为命令提示符创建快捷方式。 +在这个快捷方式中, +新安装的 \TL{} 的可执行目录被预设于本地的搜索路径中。 +当从这个快捷方式启动命令行任务时, +便可以使用新的 \TL{}。 +如果安装了 \TeX{}works, +其快捷方式也将 \TL{} 加进了搜索路径中, +所以它应该不会出现路径问题。 + +你需要知道的是: 即使你以管理员身份登录系统,依旧要求你 提供管理员权限。实际上,是否以管理员身份登录并不是问题所在。相反,在你希望运行的 程序或快捷方式上单击右键,系统通常会给出“以管理员身份执行”这样的选择。 @@ -1515,7 +1671,7 @@ Windows 和 Cygwin (参见第~\ref{sec:cygwin}~节以了解 Cygwin 安装细节) 增加可用内存量。 对 Windows,你必须创建一个文件,例如命名为 \code{moremem.reg},包含 -如下内容: +如下内容: \begin{sverbatim} Windows Registry Editor Version 5.00 @@ -1529,11 +1685,11 @@ Windows Registry Editor Version 5.00 \section{Web2C 用户指南} -\Webc{} 是一整套 \TeX{} 相关程序的集合:\TeX{} 本身、\MF{}、\MP{}、\BibTeX{}, +\Webc{} 是一整套 \TeX{} 相关程序的集合: \TeX{} 本身、\MF{}、\MP{}、\BibTeX{}, 等等。它是 \TL{} 的核心。\Webc{} 的主页及最新的手册等都在 \url{https://tug.org/web2c}。 -我们简单的介绍一下它的历史:最早它是由 Tomas Rokicki 在 1987 年实现的,他开发了第一套 +我们简单的介绍一下它的历史: 最早它是由 Tomas Rokicki 在 1987 年实现的,他开发了第一套 将 \TeX{} 系统的代码转换为 C 语言代码的系统,基于的是 Unix 下 change files 的原理,change files 的 工作是 Howard Trickey 和 Pavel Curtis 完成的。Tim Morgan 后来成为了这套系统的维护 @@ -1541,9 +1697,9 @@ Windows Registry Editor Version 5.00 接手了这个工作,到 1997 年,他把这项工作交给了 Olaf Weber。Olaf Weber 在 2006 年又 把这项工作交还给了 Karl。 -\Webc{} 系统可以在 Unix、32 位 Windows 系统、\MacOSX{} 和其他的一些操作系统下运行。 +\Webc{} 系统可以在 Unix、Windows 系统、\macOS{} 和其他的一些操作系统下运行。 它使用的是 Knuth 用 \web{} 文学编程语言编写的 \TeX{} 和其他基本程序的原始代码,将其转换为 C -源码。用这种方法处理的核心的 \TeX{} 程序包括: +源码。用这种方法处理的核心的 \TeX{} 程序包括: \begin{cmddescription} \item[bibtex] 维护参考文献。 @@ -1573,20 +1729,20 @@ Windows Registry Editor Version 5.00 档中也有相关介绍。不过,有些规则对所有这些程序都是通用的,了解这些规则有助于你更好的使用 \Webc{}。 -所有的程序都接受这些 \GNU 标准的选项: +所有的程序都接受这些 \GNU 标准的选项: \begin{ttdescription} \item[-{}-help] 显示基本使用说明。 \item[-{}-version] 显示版本信息,然后退出。 \end{ttdescription} -而大部分都接受: +而大部分都接受: \begin{ttdescription} \item[-{}-verbose] 显示详细的执行过程。 \end{ttdescription} 所有的 \Webc{} 程序均使用 \KPS{} (\url{https://tug.org/kpathsea}) 路径搜索库来查找文件, 这套库结合环境变量和配置文件的 -使用来优化大量 \TeX{} 文件的搜索。\Webc{} 可以在多于一套的目录树下执行查找,这可以方 +使用来优化 (庞大的) \TeX{} 文件的搜索。\Webc{} 可以在多于一套的目录树下执行查找,这可以方 便维护类似 \TeX{} 标准发行版和本地版本的扩展这样两套目录树。为了优化搜索的速度,每个目 录树的顶层目录下都有一个 \file{ls-R} 文件,这个文件里包含了所有此目录下文件的名称和对 应的相对路径。 @@ -1598,7 +1754,7 @@ Windows Registry Editor Version 5.00 我们将目录名称称作\emph{路径元素},而把用冒号或者分号分隔的路径元素列表称 作\emph{搜索路径}。搜索路径可能是许多种来源的组合,比如在 \samp{.:/dir} 路径下 -搜索 \samp{my-file} 这个文件,\KPS{} 将逐个尝试路径中的每个元素:首先是 +搜索 \samp{my-file} 这个文件,\KPS{} 将逐个尝试路径中的每个元素: 首先是 \file{./my-file},然后是 \file{/dir/my-file},并返回找到的第一个结果 (或者 也可以返回所有的结果)。 @@ -1609,7 +1765,7 @@ Windows Registry Editor Version 5.00 数据库 (见第~\pageref{sec:filename-database}~页的``文件名数据库'') 存在,也就是说, 是否有数据库正好对应着 \var{p} 的一个前缀。如果存在,就在数据库中寻找符合的路径后缀。 -尽管最简单也最常见的路径元素是目录名称,\KPS{} 搜索的路径里还是可以使用其他额外功能的: +尽管最简单也最常见的路径元素是目录名称,\KPS{} 搜索的路径里还可以使用其他额外功能: 多层默认值,环境变量名称、配置文件值、用户主目录,以及递归式子目录查找。所以我们把 \KPS{} 将搜索路径变换为一个或多个基本目录名的过程称为\emph{展开}路径元素的过程。展开的方式 按执行的顺序在后续小节里有叙述。 @@ -1630,16 +1786,16 @@ Windows Registry Editor Version 5.00 \subsubsection{路径的来源} \label{sec:path-sources} -搜索路径可能来自许多地方,\KPS{} 是按照下面的顺序查找的: +搜索路径可能来自许多地方,\KPS{} 是按照下面的顺序查找的: \begin{enumerate} \item 用户设置的环境变量,例如 \envname{TEXINPUTS}\@。以 . 连接某个程序名称的环境变量 -有更高的优先级,比如若正在运行的程序是 \samp{latex},那 \envname{TEXINPUTS.latex} -将比 \envname{TEXINPUTS} 优先级更高。 + 有更高的优先级,比如若正在运行的程序是 \samp{latex},那 \envname{TEXINPUTS.latex} + 将比 \envname{TEXINPUTS} 优先级更高。 \item 专门针对某个程序的配置文件,比如 \cmdname{dvips} 的 \file{config.ps} 里出现 -\samp{S /a:/b} 这样一行。 + \samp{S /a:/b} 这样一行。 \item \KPS{} 配置文件 \file{texmf.cnf},包含类似 \samp{TEXINPUTS=/c:/d} 这样的一行 (参见下面的解释)。 \item 编译时的缺省值。 @@ -1648,17 +1804,18 @@ Windows Registry Editor Version 5.00 ``调试操作'')。 \subsubsection{配置文件} +\label{sec:configfiles} \KPS{} 读入\emph{运行时配置文件} \file{texmf.cnf} 来获得搜索路径和其他定义。 我们用 \envname{TEXMFCNF} 搜索路径来查找这些文件,但我们不建议设置这个 (或者任 何) 环境变量来替代系统路径。 -作为代替,标准的安装将产生文件 \file{.../2020/texmf.cnf}。如果你必须修改缺省 +作为代替,标准的安装将产生文件 \file{.../2024/texmf.cnf}。如果你必须修改缺省 值 (一般不需要),这是修改的地方。主配置文件是 -\file{.../2020/texmf-dist/web2c/texmf.cnf}。你不应该修改后者,因为在发行版本被更 +\file{.../2024/texmf-dist/web2c/texmf.cnf}。你不应该修改后者,因为在发行版本被更 新后会丢失修改。 -此外,如果只希望把一个个人目录加入特定的搜索路径,设置环境变量是合理的: +此外,如果只希望把一个个人目录加入特定的搜索路径,设置环境变量是合理的: \begin{verbatim} TEXINPUTS=.:/my/macro/dir: \end{verbatim} @@ -1672,13 +1829,13 @@ Windows Registry Editor Version 5.00 \begin{itemize*} \item - 以 \code{\%},要么在行首,要么在空白后面,表示单行注释。 + 以 \code{\%}——要么在行首,要么在空白后面——表示单行注释。 \item 忽略空行。 \item 行末的 \bs{} 作为连接符,即把下一行直接接上。但保留下一行行首的空白。 \item - 所有剩余的行格式如下:\\ + 所有剩余的行格式如下: \\ \hspace*{2em}\texttt{\var{variable} \textrm{[}.\var{progname}\textrm{]} \textrm{[}=\textrm{]} \var{value}}\\[1pt] \samp{=} 号和空白都是可选的。 @@ -1709,7 +1866,7 @@ Windows Registry Editor Version 5.00 \ifSingleColumn 如下: -\verbatiminput{examples/ex5.tex} +\verbatiminput{../texlive-common/examples/ex5.tex} \else 见图~\ref{fig:config-sample}. \fi @@ -1718,7 +1875,7 @@ Windows Registry Editor Version 5.00 \label{sec:path-expansion} 和 Unix shell 类似,\KPS{} 能够识别搜索路径中的特殊字符。比如路径 -\verb+~$USER/{foo,bar}//baz+,将展开为这样的子目录:在 \texttt{\$USER} +\verb+~$USER/{foo,bar}//baz+,将展开为这样的子目录: 在 \texttt{\$USER} 的主目录下的 \file{foo} 或 \file{bar} 目录中,且包含 \file{baz} 文件或目录。这种展开将在下面解释。 %$ @@ -1733,14 +1890,12 @@ Windows Registry Editor Version 5.00 \begin{alltt} > \Ucom{setenv TEXINPUTS /home/karl:} \end{alltt} - 而 \file{texmf.cnf} 里的 \code{TEXINPUTS} 值为 \begin{alltt} .:\$TEXMF//tex \end{alltt} - -则用于搜索的最终值为: +则用于搜索的最终值为: \begin{alltt} /home/karl:.:\$TEXMF//tex @@ -1752,27 +1907,27 @@ Windows Registry Editor Version 5.00 \subsubsection{大括号展开} \label{sec:brace-expansion} -大括号展开是一项有用的特性,其作用是把 \verb+v{a,b}w+ 这样的转换为 +大括号展开是一项有用的特性,其作用是把例如 \verb+v{a,b}w+ 这样的转换为 \verb+vaw:vbw+,允许嵌套使用。通过把 \code{\$TEXMF} 赋值为一个括号列表, 可以构造出多套 \TeX{} 层级结构。在分发的 \file{texmf.cnf} 里有下面的定义 -(简化的例子): +(简化的例子): \begin{verbatim} TEXMF = {$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFDIST} \end{verbatim} -比如我们可以用它来设置 \TeX\ 的输入路径: +比如我们可以用它来设置 \TeX\ 的输入路径: \begin{verbatim} TEXINPUTS = .;$TEXMF/tex// \end{verbatim} %$ 的时候,检查完当前目录后,依次检查的路径是 -\code{\$TEXMFVAR/tex}, \code{\$TEXMF/tex}, \code{\$TEXMFLOCAL/tex} +\code{\$TEXMFVAR/tex}, \code{\$TEXMFHOME/tex}, \code{\$TEXMFLOCAL/tex} 和 \code{\$TEXMFDIST/tex} (后两个只在 \file{ls-R} 数据库中搜索)。 \subsubsection{子目录展开} \label{sec:subdirectory-expansion} 在路径元素里的目录名称 \var{d} 后面接连使用两个或更多连续的斜杠,表示 \var{d\/} 的 -所有子目录:首先是直接处于 \var{d} 下的那些,然后是这些子目录的子目录,依此类推。 +所有子目录: 首先是直接处于 \var{d} 下的那些,然后是这些子目录的子目录,依此类推。 每层的目录出现的顺序是\emph{不一定}的。 如果你在 \samp{//} 后面还指定了文件名,匹配的将只是那些包含了指定文件的路径。 @@ -1785,7 +1940,7 @@ Windows Registry Editor Version 5.00 \subsubsection{\file{texmf.cnf} 文件中的特殊字符简要说明} \label{sec:cnf-special-chars} -下面的列表总结了 \KPS{} 配置文件中出现的特殊字符和构成: +下面的列表总结了 \KPS{} 配置文件中出现的特殊字符和构成: % need a wider space for the item labels here. \newcommand{\CODE}[1]{\makebox[3em][l]{\code{#1}}} @@ -1795,16 +1950,16 @@ Windows Registry Editor Version 5.00 \item[\CODE{;}] 非 Unix 系统下的路径分隔符 (和 \code{:} 功能一样)。 \item[\CODE{\$}] 变量展开。 \item[\CODE{\string~}] 表示用户的个人主目录。 -\item[\CODE{\char`\{...\char`\}}] Brace expansion. -\item[\CODE{,}] 在路径展开时分隔项目。 +\item[\CODE{\char`\{...\char`\}}] 大括号展开. +\item[\CODE{,}] 在大括号展开时分隔项目。 \item[\CODE{//}] 子目录展开 (可以出现在除路径开头外的任意位置)。 -\item[\CODE{\%}] 注释的起始。 +\item[\CODE{\%{\rm\ and }\#}] 注释的起始。 \item[\CODE{\bs}] 在行末连接下一行的字符,以支持跨行的设置项。 \item[\CODE{!!}] \emph{只}在数据库中搜索文件,\emph{不}搜寻磁盘。 \end{ttdescription} 具体哪一个字符会被视为特殊字符还是不会,取决于它使用的上下文。这些规则在配置文件 -的多层的解析过程中都会体现 (包括解析、展开、搜索,\ldots),所以不能简短地说明。 +的多层的解析过程中都会体现 (包括解析、展开、搜索,等等),所以不能简短地说明。 也没有通用的转义方法,尤其 \samp{\bs} 不是 \file{texmf.cnf} 文件中的“转义字符”。 在选择安装使用的目录名时,避免使用这些字符里的任何一个最为保险。 @@ -1812,81 +1967,112 @@ Windows Registry Editor Version 5.00 \subsection{文件名数据库} \label{sec:filename-database} -\KPS{} 使用了一些方法来减少搜索时的磁盘访问次数。尽管如此,在 \TL{} 的标准安装, -或者安装的文件足够多,在各个可能的目录下搜索某个文件仍然可能花上很长时间。因此, -\KPS{} 使用一个专门构建的纯文本``数据库''文件,这个文件叫做 \file{ls-R},它将 -文件和目录进行映射,避免对磁盘的大量搜索。 +\KPS{} 采取了一些措施来尽量减少搜索时的磁盘访问。 +尽管如此, +在标准的 \TL{} 中, +或者在任何包含足够多目录的安装中, +为查找某个文件而搜索每一个可能的目录将会耗费过长的时间。 +因此, +\KPS{} 可以使用一个名为 \file{ls-R} 的外部构建的纯文本``数据库''文件, +该文件将文件映射到目录, +从而避免了对磁盘进行全面搜索的必要。 第二个数据库 \file{aliases} 允许你给 \file{ls-R} 中的文件指定其他的名字。 \subsubsection{文件名数据库} \label{sec:ls-R} -前边已经解释过,主文件名数据库的名称必须是 \file{ls-R}。你可以在每个需要搜索的 -\TeX{} 目录树 (缺省是 \code{\$TEXMF}) 下放置一个这样的文件。\KPS{} 在 -\code{TEXMFDBS} 指定的路径中寻找这些 \file{ls-R} 文件。 - -推荐使用发行版中包含的 \code{mktexlsr} 脚本来创建和维护 \samp{ls-R} 文件。各类 -\samp{mktex} 脚本也可能会间接调用这个脚本。实际上,这个脚本只是执行下面的命令: +如上所述, +主文件名数据库的名称必须是 \file{ls-R}。 +你可以在安装路径下每个希望被搜索的 \TeX{} 层次结构的根目录中放置一个 \file{ls-R} 文件 +(默认情况下为 \code{\$TEXMF})。 +\KPS{} 会沿着 \code{TEXMFDBS} 路径查找 \file{ls-R} 文件。 +推荐使用发行版中包含的 \code{mktexlsr} 脚本来创建和维护 \samp{ls-R} 文件。 +脚本由各种 \samp{mktex}\dots\ 脚本调用。 +原则上,这个脚本只是执行下面的命令: \begin{alltt} cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R \end{alltt} +意味着你的系统的 \code{ls} 命令生成正确的输出格式 (\GNU \code{ls} 是没问题的)。 +要保证数据库及时更新,最简单的方法是定期通过 \code{cron} 来重建。 +这样当安装的文件发生变化时 (例如安装或更新 \LaTeX{} 包之后), +它会自动更新。 -意味着你的系统的 \code{ls} 命令的输出格式必须正确 (\GNU \code{ls} 是没 -问题的)。要保证数据库及时更新,最简单的方法是定期通过 \code{cron} 来重建。 - -如果文件在数据库中找不到,缺省情况下 \KPS{} 会在磁盘上搜索。如果某个特定的路径元素 -是以 \samp{!!} 起始的,就\emph{只会}在针对这一元素的数据库中查找而不搜索磁盘。 - +如果在数据库中找不到文件, +缺省情况下 \KPS{} 会继续搜索磁盘。 +然而,如果某个特定的路径元素以 \samp{!!} 开头, +则\emph{只会}在针对这一元素的数据库中查找而不去搜索磁盘。 \subsubsection{kpsewhich: 独立的路径搜索} \label{sec:invoking-kpsewhich} -\texttt{kpsewhich} 程序将路径搜索从其他专用程序中独立出来,它可以作为类似 \code{find} -一样的程序,专门在 \TeX{} 层级结构中定位文件 (这在发行版中的 \samp{mktex}\dots\ -脚本中使用得非常多)。 +\texttt{kpsewhich} 程序独立于任何特定应用程序进行路径搜索。 +它可以作为类似 \code{find} 这样的程序, +专门在 \TeX{} 层级结构中定位文件 +(这在发行版中的 \samp{mktex}\dots\ 脚本中使用得非常多)。 \begin{alltt} > \Ucom{kpsewhich \var{option}\dots{} \var{filename}\dots{}} \end{alltt} -\ttvar{option} 处的选项可以用 \samp{-} 也可以用 \samp{-{}-} 来起始,并接受 -任何不造成疑义的缩写。 +在 \ttvar{option} 中指定的选项以 \samp{-} 或 \samp{--} 开头, +且任何不含歧义的缩写都是可以接受的。 -\KPS{} 将第一个非选项的参数作为文件名来查找,并返回找到的第一个文件。它不提供 -寻找所有相同名称文件的功能 (你可以使用 Unix 的 \samp{find} 程序来达到这个功能)。 +\KPS{} 将命令行中的每个非选项参数视为文件名进行查找, +并返回找到的第一个文件。 +它不提供可以返回具有特定名称的所有文件的选项 +(可以使用 Unix 的 \samp{find} 工具来实现此功能)。 -下面介绍了一些比较常见的选项。 +接下来将介绍最常用的选项。 \begin{ttdescription} \item[\texttt{-{}-dpi=\var{num}}]\mbox{} - 将解析度设置为 \ttvar{num},这个选项只影响 \samp{gf} 文件和 \samp{pk} - 文件的查找。为了与 \cmdname{dvips} 兼容,提供 \samp{-D} - 这个同义的参数,默认值是 600。 + 将分辨率设置为 \ttvar{num}; + 这仅影响 \samp{gf} 和 \samp{pk} 的查找。 + 为了兼容 \cmdname{dvips}, + \samp{-D} 是一个同义词。 + 默认值是 600。 \item[\texttt{-{}-format=\var{name}}]\mbox{}\\ - 将查找的文件格式设置为 \ttvar{name}。默认情况下是通过文件名来猜测格式的。对于扩展名 -有二义性的格式,比如 \MP{} 支持文件和 \cmdname{dvips} 配置文件,必须以 \KPS{} 已知 -的名称指定格式,比如 \texttt{tex} 或 \texttt{enc files}。运行 - \texttt{kpsewhich -{}-help-formats} 会显示格式的列表。 + 将查找的格式设置为 \ttvar{name}。 + 默认情况下, + 格式是从文件名中猜测的。 + 对于没有相关明确后缀的格式, + 例如 \MP{} 支持文件和 \cmdname{dvips} 配置文件, + 你必须指定 \KPS{} 已知的名称, + 如 \texttt{tex} 或 \texttt{enc files}。 + 运行 \texttt{kpsewhich --help-formats} 以获取格式列表。 \item[\texttt{-{}-mode=\var{string}}]\mbox{}\\ - 设置模式为 \ttvar{string},只影响 \samp{gf} 和 \samp{pk} - 文件的查找。默认情况匹配所有的模式。 + 将模式名称设置为 \ttvar{string}; + 这仅影响 \samp{gf} 和 \samp{pk} 的查找。 + 没有缺省值: + 任何模式都将被找到。 + \item[\texttt{-{}-must-exist}]\mbox{}\\ - 尽一切可能找到文件,包括直接在磁盘上搜寻。默认情况下为了效率考虑,只检查 - \file{ls-R} 数据库里的内容。 + 尽一切可能找到文件, + 特别包括在磁盘上搜索。 + 默认情况下, + 为了提高效率, + 仅检查 \file{ls-R} 数据库。 + \item[\texttt{-{}-path=\var{string}}]\mbox{}\\ - 不通过文件名来猜测路径,沿 \ttvar{string} 指出的路径搜索 - (也使用冒号分隔)。支持 \samp{//} 和所有常见的展开方式。\samp{-{}-path} 选项 - 和 \samp{-{}-format} 选项是互斥的。 + 沿路径 \ttvar{string} 进行搜索 + (通常以冒号分隔), + 而不是从文件名中猜测搜索路径。 + 支持 \samp{//} 和所有常见的扩展。 + 选项 \samp{--path} 和 \samp{--format} 是互斥的。 + \item[\texttt{-{}-progname=\var{name}}]\mbox{}\\ 将执行查找的程序名称设为 \texttt{\var{name}}。 这会通过 \texttt{.\var{progname}} 特性影响搜索路径。 缺省值是 \cmdname{kpsewhich}。 + \item[\texttt{-{}-show-path=\var{name}}]\mbox{}\\ - 显示用于查找 \texttt{\var{name}} 类型文件的路径。和 \samp{-{}-format} - 选项一样,可以使用扩展名 (\code{.pk}, \code{.vf}, 等等) 也可以使用全名。 + 显示用于查找 \texttt{\var{name}} 类型文件的路径。 + 和 \samp{-{}-format} 选项一样, + 可以使用扩展名 (\code{.pk}, \code{.vf}, 等等) 也可以使用全名。 + \item[\texttt{-{}-debug=\var{num}}]\mbox{}\\ 将调试选项 (等级) 设置为 \texttt{\var{num}}。 \end{ttdescription} @@ -1895,16 +2081,19 @@ cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R \subsubsection{使用举例} \label{sec:examples-of-use} -现在我们看看实际使用 \KPS{} 的例子。这里是一个简单的搜索: +现在我们看看实际使用 \KPS{} 的例子。这里是一个简单的搜索: \begin{alltt} > \Ucom{kpsewhich article.cls} /usr/local/texmf-dist/tex/latex/base/article.cls \end{alltt} -我们寻找的是 \file{article.cls} 文件。因为 \samp{.cls} 后缀已经说明了文件的类型,所以 -我们不需要特别指明查找的是 \optname{tex} 类型的文件 (也就是要在 (\TeX{} 源文件目录下查找)。 -我们在 \samp{texmf-dist} 的 \file{tex/latex/base} 子目录下找到了这个文件。与之类似, -下列所有文件都顺利找到,因为其扩展名没有二义。 +我们寻找的是 \file{article.cls} 文件。 +因为 \samp{.cls} 后缀已经说明了文件的类型, +所以我们不需要特别指明查找的是 \optname{tex} 类型的文件 (也就是要在 \TeX{} 源文件目录下查找)。 +我们在 \TL\ 目录的 \samp{texmf-dist} 下的 \file{tex/latex/base} 子目录找到了这个文件。 +与之类似, +下列所有文件都顺利找到, +因为其扩展名没有歧义。 \begin{alltt} > \Ucom{kpsewhich array.sty} /usr/local/texmf-dist/tex/latex/tools/array.sty @@ -1918,38 +2107,42 @@ cd \var{/your/texmf/root} && \path|\|ls -1LAR ./ >ls-R /usr/local/texmf-dist/bibtex/bib/beebe/tugboat.bib \end{alltt} -另外,最后一个是 \textsl{TUGBoat} 文章的 \BibTeX{} 参考文献数据库。 +顺便提一下, +最后一个是 \BibTeX{} 的文献数据库, +用于 \textsl{TUGboat} 文章。 \begin{alltt} > \Ucom{kpsewhich cmr10.pk} \end{alltt} - -\file{.pk} 类型的字体位图文件是给 \cmdname{dvips} 或者 \cmdname{xdvi} -这种显示程序提供的。因为 \TL{} 里没有预生成的 Computer Modern \samp{.pk} -字体,所以没有找到任何内容\Dash \TL{} 默认使用 Type~1 版本的。 - +类型为 \file{.pk} 的字体位图字形文件被 \cmdname{dvips} 和 \cmdname{xdvi} 等显示程序使用。 +在这种情况下, +不会返回任何内容, +因为 \TL{} 中没有预生成的 Computer Modern \samp{.pk} 文件——默认使用的是 Type~1 变体。 \begin{alltt} > \Ucom{kpsewhich wsuipa10.pk} \ifSingleColumn /usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.600pk \else /usr/local/texmf-var/fonts/pk/ljfour/public/ ... wsuipa/wsuipa10.600pk \fi\end{alltt} - -而这个字体 (Washington 大学的一套注音字母表) 就需要生成 \samp{.pk} 文件了。我们默认的 -\MF{} 模式是 \texttt{ljfour},基础解析度是 600\dpi{} (dots per inch),所以会得到这样一个文件。 +对于这个字体 (来自华盛顿大学的一套音标字母表) 就必须要生成 \samp{.pk} 文件了。 +我们默认的 \MF{} 模式是 \texttt{ljfour}, +基础解析度是 600\dpi{} (每英寸点数), +所以会得到这样一个文件。 \begin{alltt} > \Ucom{kpsewhich -dpi=300 wsuipa10.pk} \end{alltt} - -一旦指明我们需要寻找的只是 300\dpi{} 的文件时 (\texttt{-dpi=300}),就会发现系统里 -没有符合要求的文件。这样 \cmdname{dvips} 或 \cmdname{xdvi} 会使用 \cmdname{mktexpk} -脚本去创建所需的 \texttt{.pk} 文件。 - -下面我们将注意力转向 \cmdname{dvips} 的头文件和配置文件。首先看看最常用的一个,\file{tex.pro} -prologue 文件,然后检查通用配置文件 \file{config.ps} 和 \PS{} 字体映射文件 -\file{psfonts.map}\Dash 从 2004 年开始,映射文件和编码文件都在 \dirname{texmf} -目录树下有其自己的搜索路径了。因为 \samp{.ps} 后缀可能会有二义,我们必须指明意思是 -\optname{dvips config}。 +在这种情况下, +一旦指定我们感兴趣的分辨率是 300\dpi{} (\texttt{-dpi=300}) 时, +就会发现系统里没有符合要求的文件。 +像 \cmdname{dvips} 或 \cmdname{xdvi} 这样的程序会使用 \cmdname{mktexpk} 脚本去创建所需的 \texttt{.pk} 文件。 + +下面我们将注意力转向 \cmdname{dvips} 的头文件和配置文件。 +首先看看最常用的一个, +即用于 \TeX{} 支持的一般序言文件 \file{tex.pro}, +然后检查通用配置文件 (\file{config.ps}) 和 \PS{} 字体映射文件 (\file{psfonts.map}) +——从 2004 年开始,映射文件和编码文件都在 \dirname{texmf} 目录树下有其自己的搜索路径了。 +因为 \samp{.ps} 后缀是模糊的, +我们必须明确指定我们正在考虑的文件类型 (\optname{dvips config}) 用于 \texttt{config.ps} 文件。 \begin{alltt} > \Ucom{kpsewhich tex.pro} @@ -1960,31 +2153,27 @@ prologue 文件,然后检查通用配置文件 \file{config.ps} 和 \PS{} 字 /usr/local/texmf/fonts/map/dvips/updmap/psfonts.map \end{alltt} -这样我们可以更仔细地分析一下 URW Times 的 \PS{} 支持文件。依照标准的字体 -命名方案,这些文件的前缀是 \samp{utm}。首先查询的是配置文件,其中包含的是 map -文件的名称: - +现在我们仔细查看 URW Times \PS{} 支持文件。 +在标准字体命名方案中, +这些文件的前缀是 \samp{utm}。 +我们首先查看的是配置文件, +该文件包含映射文件的名称: \begin{alltt} > \Ucom{kpsewhich --format="dvips config" config.utm} /usr/local/texmf-dist/dvips/psnfss/config.utm \end{alltt} - 这个文件的内容是 - \begin{alltt} p +utm.map \end{alltt} - 即指向 \file{utm.map} 文件,也就是我们下一步要找的。 - \begin{alltt} > \Ucom{kpsewhich utm.map} /usr/local/texmf-dist/fonts/map/dvips/times/utm.map \end{alltt} - -这个 map 文件定义了 URW 集合中的 Type~1 \PS{} 字体文件名。内容差不多是下边这样 -(我们只列出了其中一部分): - +这个 map 文件定义了 URW 集合中的 Type~1 \PS{} 字体文件名。 +其内容如下所示 +(我们只列出了其中一部分): \begin{alltt} utmb8r NimbusRomNo9L-Medi ... <utmb8a.pfb utmbi8r NimbusRomNo9L-MediItal... <utmbi8a.pfb @@ -1993,10 +2182,9 @@ utmri8r NimbusRomNo9L-ReguItal... <utmri8a.pfb utmbo8r NimbusRomNo9L-Medi ... <utmb8a.pfb utmro8r NimbusRomNo9L-Regu ... <utmr8a.pfb \end{alltt} - -比如我们可以以一个 Times Roman 字体 \file{utmr8a.pfb} 为例,在 \file{texmf} -目录下的 Type~1 字体文件中寻找它的位置: - +例如, +让我们以 Times Roman 实例 \file{utmr8a.pfb} 为例, +搜索 Type~1 字体文件以找到它在 \file{texmf} 目录树中的位置: \begin{alltt} > \Ucom{kpsewhich utmr8a.pfb} \ifSingleColumn /usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.pfb @@ -2004,38 +2192,41 @@ utmro8r NimbusRomNo9L-Regu ... <utmr8a.pfb ... urw/utm/utmr8a.pfb \fi\end{alltt} -现在你可以发现,追寻某个文件的下落是如此方便。尤其是在你怀疑找到的文件错了的时候,这些 -功能非常重要,因为 \cmdname{kpsewhich} 只能告诉你找到的第一个文件。 +从这些例子中可以清楚地看出, +你可以轻松找到给定文件的位置。 +如果您怀疑某个文件的错误版本被意外使用, +这一点尤其重要, +因为 \cmdname{kpsewhich} 将显示遇到的第一个文件。 \subsubsection{调试操作} \label{sec:debugging} -有时你可能会需要分析程序是如何解析文件引用的。\KPS{} 提供了多层调试输出来实现这个功能: +有时候, +有必要调查一个程序如何解析文件引用。 +为了使这变得实际,\KPS{} 提供了各种级别的调试输出: \begin{ttdescription} \item[\texttt{\ 1}] \texttt{stat} 调用 (磁盘上的查询)。在 \file{ls-R} 数据库及时更新的情况下几乎不会有什么输出。 \item[\texttt{\ 2}] 对散列表的引用 (例如 \file{ls-R} 数据库,映射文件,配置文件)。 \item[\texttt{\ 4}] 文件的打开与关闭操作。 -\item[\texttt{\ 8}] \KPS{} 搜索的文件类型的通用路径信息。有助于寻找针对某一文件的 +\item[\texttt{\ 8}] \KPS{} 搜索的文件类型的通用路径信息。这有助于寻找针对某一文件的 特定路径。 \item[\texttt{16}] 每个路径元素的目录列表 (只在本地磁盘上搜索时有用)。 \item[\texttt{32}] 文件搜索。 \item[\texttt{64}] 变量的值。 \end{ttdescription} -等级 \texttt{-1} 将启用上述所有选项,实际上这是最方便的设置方法了。 +级别 \texttt{-1} 将启用上述所有选项,实际上这是最方便的设置方法了。 -类似地,在 \cmdname{dvips} 程序中设置上述调试选项的组合,你就可以出 \cmdname{dvips} -是从哪里找到它所需的文件的。另一方面,如果找不到某个文件,调试输出也会显示程序从哪些目录进行 -了查找,你也可以据此判断出问题出在哪里。 +同样地,通过设置一组调试开关,可以使用 \cmdname{dvips} 程序详细跟踪文件从哪里被读取。 +或者,当一个文件未找到时,调试跟踪会显示程序在查找该文件时搜索的目录,从而可以指示问题所在。 -一般而言,因为所有的程序都在其内部调用 \KPS{} 库,你可以设置 \envname{KPATHSEA\_DEBUG} -环境变量来选择调试参数,将这个变量设置为上述参数的组合 (加法) 以获得对应的功能。 +一般来说,由于大多数程序在内部调用 \KPS{} 库,可以通过使用 \envname{KPATHSEA\_DEBUG} 环境变量并将其设置为上述列表中描述的值 (或其组合) 来选择调试选项。 -(Windows 用户请注意:因为在 Windows 下不容易把所有信息都重定向到固定的文件中,为了方便诊断, +(Windows 用户请注意: 因为在 Windows 下不容易把所有信息都重定向到固定的文件中,为了方便诊断, 你可以临时设置 \texttt{SET KPATHSEA\_DEBUG\_OUTPUT=err.log})。 -让我们以一个简单的 \LaTeX{} 源文件 \file{hello-world.tex} 为例,其内容如下: +让我们以一个简单的 \LaTeX{} 源文件 \file{hello-world.tex} 为例,其内容如下: \begin{verbatim} \documentclass{article} \begin{document} @@ -2048,24 +2239,25 @@ utmro8r NimbusRomNo9L-Regu ... <utmr8a.pfb \begin{alltt} > \Ucom{dvips -d4100 hello-world -Pcms -o} \end{alltt} -此时我们将 \cmdname{dvips} 的调试等级 4 (表示字体路径) 和 \KPS\ 的路径元素展开组合到 -一起 (参见 \cmdname{dvips} 参考手册。(稍作整理的) 输出见图~\ref{fig:dvipsdbga}。 +此时将 \cmdname{dvips} 的调试级别 4 (表示字体路径) 和 \KPS\ 的路径元素展开组合到 +一起 (参见 \cmdname{dvips} 参考手册)。 +(稍作整理的) 输出见图~\ref{fig:dvipsdbga}。 \begin{figure*}[tp] \centering -\input{examples/ex6a.tex} +\input{../texlive-common/examples/ex6a.tex} \caption{寻找配置文件}\label{fig:dvipsdbga} \end{figure*} -\cmdname{dvips} 启动后就开始搜寻其需要使用的文件。首先找到的是 \file{texmf.cnf}, -它给出了用于进一步查询其他文件的路径,然后找到的是 \file{ls-R} 文件名数据库 (用于 -优化文件搜索速度) 和 \file{aliases} 文件 (用于创建同一文件的多个别名,比如为较自然 -的长文件名创建 DOS 8.3 风格的短别名)。然后 \cmdname{dvips} 去寻找它的通用 -配置文件 \file{config.ps},接下来查找个人定制文件 \file{.dvipsrc} (不过上述例子中并 -未找到,显示 \emph{not found})。最后 \cmdname{dvips} 找到了 Computer Modern -\PS{} 字体的配置文件 \file{config.cms} (因为执行 \cmdname{dvips} 时使用了 -\texttt{-Pcms} 选项)。这个文件里包含了字体的 \TeX{} 名称, \PS{} 名称和文件名的对 -应关系。 - +\cmdname{dvips} 首先定位其工作文件。 +首先找到 \file{texmf.cnf}, +它定义了其他文件的搜索路径, +然后是文件数据库 \file{ls-R} (用于优化文件搜索) 和文件 \file{aliases}, +它可以为同一个文件声明多个名称 (例如,一个简短的类似 DOS 的 8.3 名称和一个更自然的较长版本)。 +接着,\cmdname{dvips} 找到通用配置文件 \file{config.ps}, +然后寻找自定义文件 \file{.dvipsrc} (在此情况下未找到)。 +最后,\cmdname{dvips} 定位到计算机现代 \PS{} 字体的配置文件 \file{config.cms} +(这是通过 \cmdname{dvips} 命令中的 \texttt{-Pcms} 选项启动的)。 +该文件包含定义字体的 \TeX{}、\PS{} 和文件系统名称之间关系的映射文件列表。 \begin{alltt} > \Ucom{more /usr/local/texmf/dvips/cms/config.cms} p +ams.map @@ -2073,16 +2265,18 @@ utmro8r NimbusRomNo9L-Regu ... <utmr8a.pfb p +cmbkm.map p +amsbkm.map \end{alltt} -于是 \cmdname{dvips} 接下来寻找这些文件,再加上固定载入的,通用映射文件 -\file{psfonts.map} (这个文件里包含常用 \PS{} 字体的映射,参见 -第~\ref{sec:examples-of-use}~节的最后一部分,讨论了 \PS{} 映射文件的处理)。 +因此,\cmdname{dvips} 继续查找所有这些文件, +以及通用映射文件 \file{psfonts.map}, +该文件始终会被加载 (它包含常用 \PS{} 字体的声明; +有关 \PS{} 映射文件处理的更多详细信息, +请参见第~\ref{sec:examples-of-use}~节的最后部分)。 -这时候 \cmdname{dvips} 向用户表示它的存在: +这时候 \cmdname{dvips} 向用户表示它的存在: \begin{alltt} -This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com) +This is dvips(k) 5.92b Copyright 2002 Radical Eye Software \end{alltt} \ifSingleColumn -然后开始寻找 prolog 文件 \file{texc.pro}: +然后开始寻找 prolog 文件 \file{texc.pro}: \begin{alltt}\small kdebug:start search(file=texc.pro, must\_exist=0, find\_all=0, path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//: @@ -2093,17 +2287,20 @@ kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro 然后开始寻找 prolog 文件 \file{texc.pro} (见图~\ref{fig:dvipsdbgb})。 \fi -找到所需文件后,\cmdname{dvips} 输出日期和时间,并告知我们它将生成 -\file{hello-world.ps} 文件,需要用到 \file{cmr10} 字体文件, -这个字体属于``常驻 (resident) 的'',也就是不需要载入位图文件的字体: +找到相关文件后, +\cmdname{dvips} 输出日期和时间, +并告知我们它将生成文件 \file{hello-world.ps}, +然后它需要字体文件 \file{cmr10}, +并且后者被声明为``常驻 (resident) 的'' (也就是不需要载入位图文件的字体): \begin{alltt}\small TeX output 1998.02.26:1204' -> hello-world.ps Defining font () cmr10 at 10.0pt Font cmr10 <CMR10> is resident. \end{alltt} -寻找并找到了 \file{cmr10.tfm} 文件。然后再次引用了一些 prolog 文件 (此处略去), -最终找到了 \file{cmr10.pfb} 这个 Type~1 字体,并将它包含在输出文件中 (见最后 -一行)。 +现在开始搜索文件 \file{cmr10.tfm},该文件已找到, +然后引用了更多的 prolog 文件 (此处未显示), +最终找到了 \file{cmr10.pfb} 这个 Type~1 字体, +并将它包含在输出文件中 (见最后一行)。 \begin{alltt}\small kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0, path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//: @@ -2121,65 +2318,72 @@ kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb \subsection{运行时选项} -\Webc{} 另一项有用的特性是可以通过 \KPS{} 读入的运行时文件 \file{texmf.cnf} -来控制一系列的内存参数 (具体而言是数组的大小)。内存的设置可以在这个文件的第三部分找到。 -比较重要的几个设置是: +\Webc{} 另一项有用的特性是可以通过 \KPS{} 读取的运行时文件 \file{texmf.cnf} +来控制一系列的内存参数 (尤其是数组的大小)。 +这些内存的设置可以在该文件的第三部分找到。 +比较重要的几个设置是: \begin{ttdescription} \item[\texttt{main\_memory}] - 总的可用内存数,以 word 为单位,\TeX{}, \MF{} 和 \MP\ 受此限制。 - 每修改一次都必须重新生成一个新的格式文件。比如你可以生成一个``巨型''版本的 - \TeX{},将其存为 \texttt{hugetex.fmt}。 + \TeX{}、\MF{} 和 \MP{} 可用的总内存 word 数。 + 对于每个不同的设置, + 你必须创建一个新的格式文件。 + 例如,您可以生成一个``巨大''版本的 \TeX{}, + 并将格式文件命名为 \texttt{hugetex.fmt}。 + 使用 \KPS{} 指定程序名称的标准方法时, + 将从 \file{texmf.cnf} 中读取 \texttt{main\_memory} 变量的特定值。 \item[\texttt{extra\_mem\_bot}] - 为``大型'' \TeX{} 数据结构预留的额外空间:boxes, glue, breakpoint 等。如果你使用 - \PiCTeX{} 时特别有用。 + 为``大型'' \TeX{} 数据结构预留的额外空间: boxes, glue, breakpoint 等。 + 尤其在使用 \PiCTeX{} 时特别有用。 \item[\texttt{font\_mem\_size}] - \TeX{} 用于存储字体数据的 word 数。大致等于载入的所有 TFM 文件的总和。 + \TeX{} 用于存储字体数据的 word 数。 + 大致等于载入的所有 TFM 文件的总和。 \item[\texttt{hash\_extra}] - 为存储控制序列而设置的散列表的额外空间。一般散列表足够存储将近 10,000 - 个控制序列。如果你排版的是一本有大量交叉引用的书籍,这个值可能不够用。默认的 - \texttt{hash\_extra} 是 \texttt{50000}。 + 为存储控制序列而设置的散列表的额外空间。 + 默认的值是 \texttt{600000}。 \end{ttdescription} -\noindent 这项功能并非真正的动态内存和数组分配的替代,但考虑到动态分配在现在的 \TeX{} -太难实现,才通过这些选项提供了一些灵活性。 +\noindent 此功能并不能真正替代动态数组和内存分配, +但由于在当前的 \TeX{} 源代码中实现这些功能极其困难, +这些运行时参数提供了一种实用的折衷方案,允许一定的灵活性。 \htmlanchor{texmfdotdir} \subsection{\texttt{\$TEXMFDOTDIR}} \label{sec:texmfdotdir} -在上述许多地方,我们使用了多个以 \code{.} 起始的搜索路径,以优先搜索当前路径, -比如 +在上述许多地方, +我们给出了以 \code{.} 开头的各种搜索路径 (首先搜索当前目录), +如下所示: \begin{alltt}\small TEXINPUTS=.;$TEXMF/tex// \end{alltt} -这是一种简化。我们在 \TL{} 分发的 \code{texmf.cnf} 文件使用的是 -\filename{$TEXMFDOTDIR} 而不是直接用 \samp{.},比如: +这是一种简化。我们在 \TL{} 分发的 \code{texmf.cnf} 文件使用 \filename{$TEXMFDOTDIR} 而不仅是 \samp{.},比如: \begin{alltt}\small TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex// \end{alltt} +(在分发的文件中,第二个路径元素也比 \filename{$TEXMF/tex//} 稍微复杂一点。 +但差别不大; 而且我们这里讨论的是 \filename{$TEXMFDOTDIR} 功能。) -(在分发的文件中,第二个路径元素也比 \filename{$TEXMF/tex//} 稍微复杂一点。但 -差别不大;而且我们这里讨论的是 \filename{$TEXMFDOTDIR} 功能。) - -在路径定义中使用 \filename{$TEXMFDOTDIR} 而不是直接用 \samp{.} 的原因是让它可以 -被重新定义。比如一份复杂的文档可能由来自多个子目录的源文件组成。要支持这种情况 -你可以把 \filename{TEXMFDOTDIR} 设置为 \filename{.//},这样这些子目录就都会被 -搜索到。(警告:不要默认使用 \filename{.//};这个做法一般不常用,而且搜索任意文档 -的所有子目录有可能不够安全。) +在路径定义中使用变量 \filename{$TEXMFDOTDIR} 而不是简单地使用 \samp{.} 的原因纯粹是为了便于重载。 +例如,一份复杂的文档可能有分布在多个子目录中的很多源文件。 +为了解决这个问题, +你可以将 \filename{TEXMFDOTDIR} 设置为 \filename{.//} (例如,在构建文档时在环境中设置), +这样它们都会被搜索。 +(警告: 不要默认使用 \filename{.//}; 通常来说,在所有子目录中搜索任意文档的结果不理想, +并且可能存在安全隐患。) -另一个例子是你可能完全不希望搜索当前路径,比如你安排所有的文件都通过具体的路径 -找到。那样你可以把 \filename{$TEXMFDOTDIR} 设置为如 \filename{/nonesuch} 这样 -不存在的目录。 +另一个例子是你可能完全不希望搜索当前路径,比如你安排所有的文件都通过具体的路径找到。 +那样你可以把 \filename{$TEXMFDOTDIR} 设置为诸如 \filename{/nonesuch} 这样不存在的目录。 -在我们的 \filename{texmf.cnf} 里设置的 \filename{$TEXMFDOTDIR} 的默认值就是 -\samp{.}。 +\filename{$TEXMFDOTDIR} 的默认值就是 \samp{.}, +正如在我们的 \filename{texmf.cnf} 里设置的那样。 +\htmlanchor{ack} \section{致谢} -\TL{} 是在几乎所有 \TeX{} 用户组织的协力下完成的。这个版本由 Karl Berry -监制。下面列出了过去和现在主要的贡献者: +\TL{} 是在几乎所有 \TeX{} 用户组织的协力下完成的。 +这个版本由 Karl Berry监制。下面列出了过去和现在主要的贡献者: \begin{itemize*} @@ -2188,9 +2392,9 @@ TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex// 地区的 \TeX{} 社群提供了必备的技术和管理基础设施。请加入本地的 \TeX 用户组织! (参见 \url{https://tug.org/usergroups.html}。) -\item CTAN 团队 (\url{https://ctan.org}),值得一提的是 Robin Fairbairns 和 -Rainer Sch\"opf。他们负责分发 \TL{} 光盘镜像,为软件包更新提供支撑,\TL{} 正是 -基于这些软件包构建的。 +\item CTAN 团队 (\url{https://ctan.org}), +负责分发 \TL{} 镜像并提供包更新的公共基础设施, +这是 \TL{} 赖以运行的基础。 \item Nelson Beebe,他为 \TL\ 提供了许多平台,自己也进行了详尽的测试,并在参考 文献上有无与伦比的贡献。 @@ -2216,14 +2420,14 @@ Peter 在 2015 年 10 月去世,我们将持续工作以纪念他。 \item Hans Hagen,他对 \ConTeXt\ 宏包 (\url{https://pragma-ade.com}) 做了 许多测试和修改,使之能够包含在 \TL{} 的框架下,并持续推进 \TeX\ 的开发。 -\item \Thanh, Martin Schr\"oder,和 pdf\TeX\ 团队,他们持续不断地改进 \TeX\ -的功能。 +\item \Thanh, Martin Schr\"oder,和 pdf\TeX\ 团队 (\url{http://pdftex.org}), +他们持续不断地改进 \TeX\ 的功能。 \item Hartmut Henkel,他对 pdf\TeX\, Lua\TeX 等程序的开发起到了重要的贡献。 \item Shunshaku Hirata,起始开发和坚持维护 DVIPDFM$x$。 -\item Taco Hoekwater,他对 \MP{} 和 (Lua)\TeX\ (\url{http://luatex.org}) +\item Taco Hoekwater,他对 MetaPost 和 (Lua)\TeX\ (\url{http://luatex.org}) 重要的开发使之焕发新的活力。他还参与了将 \ConTeXt\ 融入 \TL{}、给 Kpathsea 添加多线程功能,等等许多工作。 @@ -2233,9 +2437,9 @@ Kpathsea 添加多线程功能,等等许多工作。 \item Pawe{\l} Jackowski,他创建了 Windows 下的安装程序 \cmdname{tlpm}, 和 Tomasz {\L}uczak,因为他的 \cmdname{tlpmgui} 被用在了以前的版本。 -\item Akira Kakuto,以他的 W32TEX 发行版 -(\url{http://w32tex.org/}) 为基础提供了 Windows 下的二进制文件,以及许多 -其他的贡献。 +\item Akira Kakuto, +感谢他通过 W32TEX 和 W64TEX 发行版为日文 \TeX{} (\url{http://w32tex.org}) 提供 Windows 二进制文件, +以及其他许多开发贡献。 \item Jonathan Kew,他开发了非凡的 Xe\TeX{} 引擎并花了大量时间和精力集成到 \TL{} 中。以及 Mac\TeX 安装程序的早期版本,还有我们推荐的前端 \TeX{}works。 @@ -2243,7 +2447,7 @@ Kpathsea 添加多线程功能,等等许多工作。 \item Hironori Kitagawa,对 p\TeX\ 和相关的支持进行了大量的工作。 \item Dick Koch,他维护了 Mac\TeX\ (\url{https://tug.org/mactex}) 这个和 -\TL{} 联系非常紧密的发行版本。 +\TL{} 联系非常紧密的发行版本,并在此过程中保持极好的乐观态度。 \item Reinhard Kotucha,他对 \TL{} 2008 的基础架构和安装程序起到了重要贡献, 以及 Windows 下的研究性工作,\texttt{getnonfreefonts} 脚本,等等。 @@ -2270,7 +2474,7 @@ Kpathsea 添加多线程功能,等等许多工作。 \item Manuel P\'egouri\'e-Gonnard,他对宏包更新、文档改进以及 \cmdname{texdoc} 开发上的努力。 -\item Fabrice Popineau,他创建了 \TL{} 最早的 Windows 支持。 +\item Fabrice Popineau,感谢其在 \TL{} 中提供的原始 Windows 支持以及对法文文档的工作。 \item Norbert Preining,他是当前 \TL{} 基础架构和安装程序的总设计师,还 负责协调了 Debian 版本的 \TL{} 工作 (和 Frank K\"uster 一起),还有很多其他的工作。 @@ -2280,7 +2484,10 @@ Kpathsea 添加多线程功能,等等许多工作。 \item Luigi Scarso,他坚持开发 MetaPost, Lua\TeX 等等许多。 -\item Andreas Scherer,他开发了 \texttt{cwebbin},\TL{} 使用的 CWEB 实现。 +\item Andreas Scherer,感谢其为 \texttt{cwebbin} (\TL{} 中使用的 CWEB 实现) 所做的工作, +以及对原始 CWEB 的持续维护。 + +\item Takuji Tanaka,感谢他对 (e)(u)p\TeX{} 的维护及相关支持。 \item Tomasz Trzeciak,他为 Windows 开发提供了广泛的帮助。 @@ -2288,12 +2495,12 @@ Kpathsea 添加多线程功能,等等许多工作。 将 \cmdname{xindy} 包含进来。 \item Staszek Wawrykiewicz,\TL{} 的一个主要的测试人员,同时还是许多重要波兰语 -支持的协调人员:字体、Windows 安装,和其他许多工作。Staszek 在 2018 年 2 月去世 +支持的协调人员: 字体、Windows 安装,和其他许多工作。Staszek 在 2018 年 2 月去世 了,我们将继续工作以纪念他。 \item Olaf Weber,他在以前几年对 \Webc{} 耐心的维护。 -\item Gerben Wierda,他创建和维护了原来的 \MacOSX\ 支持。 +\item Gerben Wierda,他创建和维护了原来的 \macOS\ 支持。 \item Graham Williams,他是 \TeX\ Catalogue 的发起者。 @@ -2305,34 +2512,36 @@ Kpathsea 添加多线程功能,等等许多工作。 二进制版本的编译者: Marc Baudoin (\pkgname{amd64-netbsd}, \pkgname{i386-netbsd}), -Ken Brown (\pkgname{i386-cygwin}, \pkgname{x86\_64-cygwin}), -Simon Dales (\pkgname{armhf-linux}), -Johannes Hielscher (\pkgname{aarch64-linux}), -Akira Kakuto (\pkgname{win32}), -Dick Koch (\pkgname{x86\_64-darwin}), -Nikola Le\v{c}i\'c (\pkgname{amd64-freebsd}, \pkgname{i386-freebsd}), -Henri Menke (\pkgname{x86\_64-linuxmusl}), -Mojca Miklavec (\pkgname{i386-linux}, - \pkgname{x86\_64-darwinlegacy}, - \pkgname{i386-solaris}, \pkgname{x86\_64-solaris}, - \pkgname{sparc-solaris}), -Norbert Preining (\pkgname{x86\_64-linux}). -关于 \TL{} 编译进程的信息,请查阅 \url{https://tug.org/texlive/build.html}。 - -这份手册的翻译者: +Ken Brown (\pkgname{x86\_64-cygwin}), +Akira Kakuto (\pkgname{windows}), +Dick Koch (\pkgname{universal-darwin}), +Mojca Miklavec (\pkgname{x86\_64-darwinlegacy}), +Norbert Preining (% + \pkgname{aarch64-linux}, + \pkgname{armhf-linux}, + \pkgname{i386-freebsd}, \pkgname{amd64-freebsd}, + \pkgname{i386-linux}, \pkgname{x86\_64-linux}, + \pkgname{i386-solaris}, \pkgname{x86\_64-solaris}, + \pkgname{x86\_64-linuxmusl}). +关于 \TL{} 编译进程的信息, +请查阅 +\url{https://tug.org/texlive/build.html}. + +这份手册的翻译者: +Takuto Asakura (Japanese), Denis Bitouzé \& Patrick Bideault (法语), Carlos Enriquez Figueras (西班牙语), -Jiang Jiang, Jinsong Zhao, Yue Wang, \& Helin Gai (中文), +Jiang Jiang, Jinsong Zhao, Yue Wang, Helin Gai \& Ran Wang (中文), Nikola Le\v{c}i\'c (塞尔维亚语), Marco Pallante \& Carla Maggi (意大利语), Petr Sojka \& Jan Busa (捷克\slash 斯洛伐克语), -Boris Veytsman (俄语), -Zofia Walczak (波兰语), +Boris Veytsman \& Vladimir Lomov (俄语), Uwe Ziegenhagen (德语)。\TL{} 文档的主页是 \url{https://tug.org/texlive/doc.html}。 -当然,最重要的感谢应该致予 Donald Knuth,感谢他发明了 \TeX,也感谢他将 -\TeX\ 赠与全世界。 +当然,最重要的感谢应该致予 Donald Knuth, +感谢他发明了 \TeX, +也感谢他将 \TeX\ 赠与全世界。 \section{发行历史} \label{sec:history} @@ -2369,7 +2578,7 @@ Uwe Ziegenhagen (德语)。\TL{} 文档的主页是 地选择所需的软件集合。与语言相关的集合也重新组织过了,这样一来,选定某个语言集合时会自 动安装宏包、字体等文件,并自动设置好 \texttt{language.dat}。 -2002 年出现的第 7 版里显著的更新是添加了 \MacOSX{} 的支持,还有大量各类宏包和程序 +2002 年出现的第 7 版里显著的更新是添加了 \macOS{}{} 的支持,还有大量各类宏包和程序 的更新。这个版本的一个重要的目标是将源代码重新与 \teTeX{} 集成,因为在第 5 和第 6 版中它们偏离得太远了。 @@ -2377,7 +2586,7 @@ Uwe Ziegenhagen (德语)。\TL{} 文档的主页是 2003 年,在更新和增添持续不断到来的情况下,我们发现 \TL{} 已经过于庞大,无法在一张 \CD\ 中容纳,于是将其切分为三套不同的发行版 (参见第~\ref{sec:tl-coll-dists} -节,\p.\pageref{sec:tl-coll-dists})。此外: +节,\p.\pageref{sec:tl-coll-dists})。此外: \begin{itemize*} \item 在 \LaTeX{} 团队的要求下,我们将 \cmdname{latex} 和 \cmdname{pdflatex} @@ -2398,13 +2607,13 @@ Uwe Ziegenhagen (德语)。\TL{} 文档的主页是 \verb|^^| 形式的输出,请将 \verb|texmf/web2c/cp8bit.tcx| 文件改名。(后续版本将提供更简洁的方式来控制。) \item 对文档作了大量更新。 -\item 最后,因为版本号增长得实在太快,现在简单地使用年份来标识版本:\TL{} 2003。 +\item 最后,因为版本号增长得实在太快,现在简单地使用年份来标识版本: \TL{} 2003。 \end{itemize*} \subsubsection{2004} -2004 年有许多改变: +2004 年有许多改变: \begin{itemize} @@ -2424,7 +2633,7 @@ Uwe Ziegenhagen (德语)。\TL{} 文档的主页是 (\p.\pageref{sec:overview-tl})。 \item 在原来旧版本 \TL\ 中单一的 \dirname{texmf} 目录树被分拆为三 -个:\dirname{texmf}, \dirname{texmf-dist}, 和 \dirname{texmf-doc}。参见 +个: \dirname{texmf}, \dirname{texmf-dist}, 和 \dirname{texmf-doc}。参见 第~\ref{sec:tld}~节 (\p.\pageref{sec:tld}) 及各目录下的 \filename{README} 文件。 @@ -2460,7 +2669,7 @@ plain \TeX\ (只将位置 32--126 的字符视为可见), \ConTeXt\ (0--255 都 不再是判断是否处于 PDF 输出状态的可靠方法。我们在这一年尽可能地保持向下兼容,但以后 即使在输出 DVI 时 \cs{pdfoutput} 也可能已经定义。 -\item pdf\TeX\ (\url{http://pdftex.org}) 新增了许多特性: +\item pdf\TeX\ (\url{http://pdftex.org}) 新增了许多特性: \begin{itemize*} @@ -2475,17 +2684,17 @@ plain \TeX\ (只将位置 32--126 的字符视为可见), \ConTeXt\ (0--255 都 \filename{pdftex.cfg} 的配置方式。每次修改 \filename{pdftexconfig.tex} 之后都必须重新生成 \filename{.fmt} 文件。 - \item 参见 pdf\TeX\ 手册以了解更多信息:\OnCD{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}。 + \item 参见 pdf\TeX\ 手册以了解更多信息: \OnCD{texmf-dist/doc/pdftex/manual/pdftex-a.pdf}。 \end{itemize*} \item \cmdname{tex} (以及 \cmdname{mf} 和 \cmdname{mpost}) 中的 \cs{input} -原语现在支持通过双引号来引用包含空格和特殊字符的文件。一个典型的例子如下: +原语现在支持通过双引号来引用包含空格和特殊字符的文件。一个典型的例子如下: \begin{verbatim} \input "filename with spaces" % plain \input{"filename with spaces"} % latex \end{verbatim} -参阅 \Webc{} 文档以了解更多信息:\OnCD{texmf-dist/doc/web2c}。 +参阅 \Webc{} 文档以了解更多信息: \OnCD{texmf-dist/doc/web2c}。 \item enc\TeX\ 的支持现在已被包含在 \Webc{} 中,因而所有 \TeX\ 程序都可以通过 \optname{-enc} 参数启用这一支持 \Dash \emph{前提是构建好了格式文件}。enc\TeX\ @@ -2559,7 +2768,7 @@ MIPSpro 7.4 运行时库。 \item 上一年,我们将格式文件的输出改成了和这些文件本身一样的 8 位字符。在你需要的情况下,可以使用新的 TCX 文件 \filename{empty.tcx} 来获得原有的 - \verb|^^| 表示方式。例如: + \verb|^^| 表示方式。例如: \begin{verbatim} latex --translate-file=empty.tcx yourfile.tex @@ -2671,7 +2880,7 @@ bounding box 信息,这是 \cmdname{dvipdfm} 包含但未曾出现在 在与 Omega 的作者讨论后,原来的 Omega 引擎和 Lambda 格式文件被去掉了。 更新后的 Alpeh 和 Lamed 仍然在,同时保留的还有 Omega 实用工具。 -包含了新版本的 AMS \TypeI\ 字体,包括 Computer Modern:其中部分字形 +包含了新版本的 AMS \TypeI\ 字体,包括 Computer Modern: 其中部分字形 随 Knuth 多年以来修改的 MetaFont 源代码更新,hinting 信息也更新了。 Euler 字体也整个由 Hermann Zapf 重新绘制了一遍 (参见 \url{https://tug.org/TUGboat/Articles/tb29-2/tb92hagen-euler.pdf})。 @@ -2680,7 +2889,7 @@ Euler 字体也整个由 Hermann Zapf 重新绘制了一遍 (参见 现在 Windows 和 Mac\TeX\ 都包含了新的 \GUI{} 前端 \TeX{}works。至于其他 的平台和更多的信息,请参见 \TeX{}works 的主页,\url{https://tug.org/texworks}。 -设计这个跨平台前端的灵感来自于 \MacOSX\ 下的 TeXShop 编辑器,目标就是 +设计这个跨平台前端的灵感来自于 \macOS{}\ 下的 TeXShop 编辑器,目标就是 易用。 在许多平台下包含了 Asymptote 图形程序,它实现了一套与 MetaPost 约略 @@ -2696,10 +2905,10 @@ Euler 字体也整个由 Hermann Zapf 重新绘制了一遍 (参见 而我们建议 OpenBSD 和 FreeBSD 的用户使用他们自己的包管理系统提供的 \TeX{}, 另外这也是因为要编译出能在多种版本下都工作的二进制程序有些困难。 -一些更不起眼的更新:我们现在使用 \pkgname{xz} 这套稳定的压缩方式来替代 -原有的 \pkgname{lzma} (\url{https://tukaani.org/xz/});在不和现有变量名 -冲突的情况下允许文件中使用 |$| 字符;Kpathsea 库现在支持多线程了 (其中 -用到了 MetaPost);整个 \TL{} 的编译现在基于 Automake 了。 +一些更不起眼的更新: 我们现在使用 \pkgname{xz} 这套稳定的压缩方式来替代 +原有的 \pkgname{lzma} (\url{https://tukaani.org/xz/}); 在不和现有变量名 +冲突的情况下允许文件中使用 |$| 字符; Kpathsea 库现在支持多线程了 (其中 +用到了 MetaPost); 整个 \TL{} 的编译现在基于 Automake 了。 对过去历史的最终一点提示: 所有版本的 \TL{},包括 \CD\ 标签这些附属材料, 都在 \url{ftp://tug.org/historic/systems/texlive} 提供。 @@ -2721,7 +2930,7 @@ PDF,通过 \pkgname{epstopdf} 宏包。默认选项是为了避免覆盖任何 一个相关的变化是通过 \cs{write18} 特性从 \TeX\ 执行少量外部命令,现在 默认启用了。这些命令是 \code{repstopdf}, \code{makeindex}, \code{kpsewhich}, -\code{bibtex}, 和 \code{bibtex8};这个列表定义在 \code{texmf.cnf}。必须 +\code{bibtex}, 和 \code{bibtex8}; 这个列表定义在 \code{texmf.cnf}。必须 禁用这些外部命令的环境可以通过安装程序取消这个选项 (参见第~\ref{sec:options}~节), 或者在安装后通过运行 |tlmgr conf texmf shell_escape 0| 覆盖这个值。 @@ -2738,17 +2947,17 @@ PDF,通过 \pkgname{epstopdf} 宏包。默认选项是为了避免覆盖任何 \code{tlmgr restore} 恢复。如果你在安装后要执行更新,但没有足够的 磁盘空间来保存备份,可以运行 \code{tlmgr option autobackup 0}。 -包含了这些新的程序:用于排版日文的 p\TeX\ 引擎和相关实用工具;支持了 -Unicode \BibTeX\ 的 \BibTeX{}U 程序;\prog{chktex} 实用工具 +包含了这些新的程序: 用于排版日文的 p\TeX\ 引擎和相关实用工具; 支持了 +Unicode \BibTeX\ 的 \BibTeX{}U 程序; \prog{chktex} 实用工具 (\url{https://baruch.ev-en.org/proj/chktex}) -用来检查 \AllTeX\ 文档;\prog{dvisvgm} +用来检查 \AllTeX\ 文档; \prog{dvisvgm} (\url{https://dvisvgm.de}) 是 DVI 到 SVG 格式转换器。 -现在包含了这些新平台的可执行文件:\code{amd64-freebsd}, +现在包含了这些新平台的可执行文件: \code{amd64-freebsd}, \code{amd64-kfreebsd}, \code{i386-freebsd}, \code{i386-kfreebsd}, \code{x86\_64-darwin}, \code{x86\_64-solaris}。 -我们忘记注明的一个 \TL{} 2009 的修改是:许多 \TeX4ht 相关的可执行文件 +我们忘记注明的一个 \TL{} 2009 的修改是: 许多 \TeX4ht 相关的可执行文件 (\url{https://tug.org/tex4ht}) 被从二进制目录删除了。通用的 \code{mk4ht} 程序可以用来运行这些 \code{tex4ht} 组合的任意一种。 @@ -2758,8 +2967,8 @@ Unicode \BibTeX\ 的 \BibTeX{}U 程序;\prog{chktex} 实用工具 \subsubsection{2011} -\MacOSX\ 二进制程序 (\code{universal-darwin} 和 \code{x86\_64-darwin}) -现在只能在 Leopard 及以后版本上工作;Panther 和 Tiger 都不再支持了。 +\macOS{}\ 二进制程序 (\code{universal-darwin} 和 \code{x86\_64-darwin}) +现在只能在 Leopard 及以后版本上工作; Panther 和 Tiger 都不再支持了。 用于参考文献处理的 \code{biber} 程序在常见平台下都已包含。它的分发和 \code{biblatex} 宏包紧密相关的,这个宏包完全重新实现了 \LaTeX{} 提供 @@ -2800,12 +3009,12 @@ MetaPost 作为一个库有关,这是另一个重要而用户不会注意的 再是全局的配置文件。这个修改应该不容易发现,除非你直接编辑过 \code{updmap.cfg} 文件。\verb|updmap --help| 输出中有更多信息。 -平台:增加了 \pkgname{armel-linux} 和 \pkgname{mipsel-linux} 平台; +平台: 增加了 \pkgname{armel-linux} 和 \pkgname{mipsel-linux} 平台; \pkgname{sparc-linux} 和 \pkgname{i386-netbsd} 不再出现在主发行中。 \subsubsection{2013} -发行版布局:为了简化,顶层的 \code{texmf/} 目录被并入 \code{texmf-dist/}。 +发行版布局: 为了简化,顶层的 \code{texmf/} 目录被并入 \code{texmf-dist/}。 现在 \code{TEXMFMAIN} 和 \code{TEXMFDIST} 这两个 Kpathsea 变量都被指向 \code{texmf-dist} 了。 @@ -2832,12 +3041,12 @@ Lua\TeX: 升级到 Lua 5.2,包含一个新的库 (\code{pdfscanner}) 来处理 \pkgname{microtype.sty}: 对 \XeTeX\ 的部分支持 (protrusion) 和对 Lua\TeX\ 的支持 (protrusion, font expansion, tracking),已经其他改进。 -\cmdname{tlmgr}: 新的 \code{pinning} 操作以方便配置多个仓库;参见 +\cmdname{tlmgr}: 新的 \code{pinning} 操作以方便配置多个仓库; 参见 \verb|tlmgr --help| 的对应章节,或者在线的 \url{https://tug.org/texlive/doc/tlmgr.html#MULTIPLE-REPOSITORIES}。 平台: \pkgname{armhf-linux}, \pkgname{mips-irix}, \pkgname{i386-netbsd}, 和 -\pkgname{amd64-netbsd} 被重新加入;\pkgname{powerpc-aix} 被去除。 +\pkgname{amd64-netbsd} 被重新加入; \pkgname{powerpc-aix} 被去除。 \subsubsection{2014} @@ -2846,8 +3055,8 @@ Lua\TeX: 升级到 Lua 5.2,包含一个新的库 (\code{pdfscanner}) 来处理 个字符串现在反应的时在启动时\emph{应该被}默认载入的格式,而不是在二进制程序中预 载入的未 dump 格式,该格式可能被很多方法覆盖。 -pdf\TeX: 新的警告忽略参数 \cs{pdfsuppresswarningpagegroup};用来制造词间空白 -(interword space) 的新命令:\cs{pdfinterwordspaceon}, \cs{pdfinterwordspaceoff}, +pdf\TeX: 新的警告忽略参数 \cs{pdfsuppresswarningpagegroup}; 用来制造词间空白 +(interword space) 的新命令: \cs{pdfinterwordspaceon}, \cs{pdfinterwordspaceoff}, \cs{pdffakespace},它们可以帮助 PDF 文本重新排版 (reflowing), Lua\TeX: 对于字体载入和断字 (hyphenation) 有明显的变化和修正。最大的增加时一个新 @@ -2859,12 +3068,12 @@ Lua\TeX: 对于字体载入和断字 (hyphenation) 有明显的变化和修正 这样特殊的目的。 \XeTeX: 现在所有平台 (包括 Mac) 都支持所有的图像格式了。避免使用 Unicode 兼容性 -decomposition fallback (但允许其他的变体);为了与先前版本 \XeTeX\ 的兼容,优先于 +decomposition fallback (但允许其他的变体); 为了与先前版本 \XeTeX\ 的兼容,优先于 Graphite 字体使用 OpenType 字体。 \MP: 支持了一个新的数字系统 \code{decimal} (十进制),还包括一个配套的内部 -\code{numberprecision};在 \filename{plain.mp} 有 Knuth 对 \code{drawdot} 的新定 -义;SVG 和 PNG 输出的 bug 修正,等等。 +\code{numberprecision}; 在 \filename{plain.mp} 有 Knuth 对 \code{drawdot} 的新定 +义; SVG 和 PNG 输出的 bug 修正,等等。 独立的 \cmdname{pstopdf} Con\TeX{}t 实用程序会在这个版本后被去除,因为和系统同名 程序有冲突。但你仍然可以通过 \code{mtxrun --script pstopdf} 命令来执行它。 @@ -2882,7 +3091,7 @@ Mac\TeX\ 这个 \TeX\ Live 的重新发行版 (见第~\ref{sec:macosx}~节) 不 包含中文、日文和韩文的 \pkgname{langcjk} 集合被拆分为独立的语言集合,使得每个的 大小更合理。 -平台:加入了 \pkgname{x86\_64-cygwin},去除了 \pkgname{mips-irix};Microsoft 不 +平台: 加入了 \pkgname{x86\_64-cygwin},去除了 \pkgname{mips-irix}; Microsoft 不 再支持 Windows XP,所以我们的程序也可能在以后不支持这个系统。 \subsubsection{2015} @@ -2895,30 +3104,30 @@ Mac\TeX\ 这个 \TeX\ Live 的重新发行版 (见第~\ref{sec:macosx}~节) 不 \LaTeXe\ 的内部现在包含了和 Unicode 相关的引擎配置 (包括哪些字符是字母、 primitive 的命名等等),这些配置以前是 \TeX\ Live 的一部分。这个变化对用户应该是 -没有影响的;有些底层的内部控制命令被改名或者去除了,但行为应保持一致。 +没有影响的; 有些底层的内部控制命令被改名或者去除了,但行为应保持一致。 -pdf\TeX: 支持 JPEG Exif 和 JFIF;就算在 \cs{pdfinclusionerrorlevel} -是负值时也不输出警告;同步到 \prog{xpdf}~3.04 版本。 +pdf\TeX: 支持 JPEG Exif 和 JFIF; 就算在 \cs{pdfinclusionerrorlevel} +是负值时也不输出警告; 同步到 \prog{xpdf}~3.04 版本。 -Lua\TeX: 加入用于扫描 token 的 \pkgname{newtokenlib};对 \code{normal} 随机数生 +Lua\TeX: 加入用于扫描 token 的 \pkgname{newtokenlib}; 对 \code{normal} 随机数生 成器等的 bug 修正。 -\XeTeX: 图像处理的修正;优先选择与 \prog{xetex} 处在同一个目录的 -\prog{xdvipdfmx} 程序;内部的 \code{XDV} 操作符有所变化。 +\XeTeX: 图像处理的修正; 优先选择与 \prog{xetex} 处在同一个目录的 +\prog{xdvipdfmx} 程序; 内部的 \code{XDV} 操作符有所变化。 -MetaPost: 新的 \code{binary} numbersystem;新的支持日语的 \prog{upmpost} 和 +MetaPost: 新的 \code{binary} numbersystem; 新的支持日语的 \prog{upmpost} 和 \prog{updvitomp} 程序,类似 \prog{up*tex}。 Mac\TeX: 更新了自带的 Ghostscript 包的 CJK 支持。\TeX\ Distribution 选项 -面板支持了 Yosemite (\MacOSX~10.10)。\XeTeX{} 不再支持 resource-fork font -suitcase 格式 (通常没有扩展名);data-fork suitcase (\code{.dfont}) 仍然是支持的。 +面板支持了 Yosemite (\macOS{}~10.10)。\XeTeX{} 不再支持 resource-fork font +suitcase 格式 (通常没有扩展名); data-fork suitcase (\code{.dfont}) 仍然是支持的。 -基础设施:重新实现了 \prog{fmtutil} 脚本来按每个独立的目录树读取 +基础设施: 重新实现了 \prog{fmtutil} 脚本来按每个独立的目录树读取 \filename{fmtutil.cnf} 文件,类似 \prog{updmap}。Web2C \prog{mktex*} 脚本 (包括 \prog{mktexlsr}, \prog{mktextfm}, \prog{mktexpk}) 现在优先选择自己所在目录的程 序,而不总选用当前 \envname{PATH} 里的。 -平台:\pkgname{*-kfreebsd} 被去除了,因为 \TeX\ Live 现在在这个平台下通过系统自 +平台: \pkgname{*-kfreebsd} 被去除了,因为 \TeX\ Live 现在在这个平台下通过系统自 带的安装方式已经很容易获取了。 部分额外平台提供了定制二进制包 (\url{https://tug.org/texlive/custom-bin.html})。 @@ -2932,12 +3141,12 @@ Lua\TeX: 原生命令有大量改变,包括重命名和去除,还有一些 果要了解更多细节,参见 Lua\TeX\ 手册, \OnCD{texmf-dist/doc/luatex/base/luatex.pdf}。 -Metafont:新的实验性姊妹程序 MFlua 和 MFluajit,为了试验性目标在 \MF 中集成 Lua。 +Metafont: 新的实验性姊妹程序 MFlua 和 MFluajit,为了试验性目标在 \MF 中集成 Lua。 -MetaPost:Bug 修正和内部为了 MetaPost 2.0 做的准备。 +MetaPost: Bug 修正和内部为了 MetaPost 2.0 做的准备。 \code{SOURCE\_DATE\_EPOCH} 支持所有除 Lua\TeX\ 以外的引擎 (下一个版本支持全部引 -擎),原始的 \code{tex} 也故意不支持:如果设置了 \code{SOURCE\_DATE\_EPOCH} +擎),原始的 \code{tex} 也故意不支持: 如果设置了 \code{SOURCE\_DATE\_EPOCH} 环境变量,它的值会被用作 PDF 输出的时间戳。如果还设置了 \code{SOURCE\_DATE\_EPOCH\_TEX\_PRIMITIVES}, \code{SOURCE\_DATE\_EPOCH} 的值会被用于初始化 \TeX\ @@ -2950,47 +3159,47 @@ pdf\TeX: 新的原生命令 \cs{pdfinfoomitdate}, \cs{pdftrailerid}, Xe\TeX: 新的原生命令 \cs{XeTeXhyphenatablelength}, \cs{XeTeXgenerateactualtext},\\ \cs{XeTeXinterwordspaceshaping}, -\cs{mdfivesum}; 字符分类限制提高到了 4096;DVI 版本提升。 +\cs{mdfivesum}; 字符分类限制提高到了 4096; DVI 版本提升。 -其他实用工具: +其他实用工具: \begin{itemize*} \item \code{gregorio} 是一个新的程序,作为 \code{gregoriotex} 宏包的一部分用于 -Gregorian 圣歌音乐的排版;它缺省就被包括在了 \code{shell\_escape\_commands} +Gregorian 圣歌音乐的排版; 它缺省就被包括在了 \code{shell\_escape\_commands} 中。 \item \code{upmendex} 是一个创建索引的程序, 基本上和 \code{makeindex} 兼容,支持了 Unicode 排序,以及其他的一些修改。 -\item \code{afm2tfm} 现在只将基于音调的高度调整上调;新选项 \code{-a} +\item \code{afm2tfm} 现在只将基于音调的高度调整上调; 新选项 \code{-a} 忽略所有调整。 \item \code{ps2pk} 可以处理扩展 PK/GF 字体了。 \end{itemize*} -Mac\TeX: 去除了 \TeX\ Distribution Preference Pane;它的功能现在在 TeX Live -Utility 里提供了;更新了捆绑的 GUI 应用;给需要在 Ghostscript 中使用多种 CJK +Mac\TeX: 去除了 \TeX\ Distribution Preference Pane; 它的功能现在在 TeX Live +Utility 里提供了; 更新了捆绑的 GUI 应用; 给需要在 Ghostscript 中使用多种 CJK 字体的用户提供了新的 \code{cjk-gs-integrate} 脚本。 -基础架构:支持系统级别的 \code{tlmgr} 配置文件;校验包的完整性;如果有 GPG 还会 +基础架构: 支持系统级别的 \code{tlmgr} 配置文件; 校验包的完整性; 如果有 GPG 还会 校验网络更新的签名。安装程序和 \code{tlmgr} 都会作这些检查。如果没有 GPG 则跳过 这一步。 -平台:\code{alpha-linux} 和 \code{mipsel-linux} 被移除了。 +平台: \code{alpha-linux} 和 \code{mipsel-linux} 被移除了。 \subsubsection{2017} -Lua\TeX: 更多 callback,更多排版控制,更多对内部机制的控制;在一些平台 +Lua\TeX: 更多 callback,更多排版控制,更多对内部机制的控制; 在一些平台 增加了用来动态载入代码的 \code{ffi} 库。 pdf\TeX: 去年的 |SOURCE_DATE_EPOCH_TEX_PRIMITIVES| 环境变量被改名为 |FORCE_SOURCE_DATE|,没有功能改变。如果 \cs{pdfpageattr} token 列表包含了字符串 \code{/MediaBox},则会忽略输出默认的 \code{/MediaBox}。 -Xe\TeX: Unicode/OpenType 数学支持现在是基于 HarfBuzz 的 MATH table 支持实现的; +Xe\TeX: Unicode/OpenType 数学支持现在是基于 HarfBuzz 的 MATH table 支持实现的; 还有一些 bug 修正。 Dvips: 保证最后一次设置的 papersize special 是最后选中的纸张尺寸,和 -\code{dvipdfmx} 以及宏包希望的效果一致;\code{-L0} 选项 (\code{L0} +\code{dvipdfmx} 以及宏包希望的效果一致; \code{-L0} 选项 (\code{L0} 配置文件设置) 可以用来恢复以前的行为,也就是第一次设置纸张尺寸的 special 才有效。 @@ -2999,13 +3208,13 @@ ep\TeX, eup\TeX: 来自 pdf\TeX\ 新的原生命令 \cs{pdfuniformdeviate}, \cs{pdfelapsedtime}, \cs{pdfresettimer}。 Mac\TeX: 从这一年开始,Mac\TeX\ 只支持 Apple 还在发布安全更新的 -\MacOSX\ 版本,使用的平台名称是 |x86_64-darwin|,目前这包括 Yosemite, -El~Capitan, 和 Sierra (10.10 及以后的)。给更老版本的 \MacOSX\ +\macOS{}\ 版本,使用的平台名称是 |x86_64-darwin|,目前这包括 Yosemite, +El~Capitan, 和 Sierra (10.10 及以后的)。给更老版本的 \macOS{}\ 用的二进制程序不会包含在 Mac\TeX\ 里面,但 \TeX\ Live 里还会提供 (|x86_64-darwinlegacy|, \code{i386-darwin}, \code{powerpc-darwin})。 基础架构: \envname{TEXMFLOCAL} 树现在 (默认) 是在 \envname{TEXMFSYSCONFIG} 和 -\envname{TEXMFSYSVAR} 之前搜索了;这是为了更好地符合本地文件优先于系统文件的 +\envname{TEXMFSYSVAR} 之前搜索了; 这是为了更好地符合本地文件优先于系统文件的 原则。另外,\code{tlmgr} 有一个新的 \code{shell} 模式,进行交互和脚本使用,和 一个新的 \code{conf auxtrees} 功能来方便添加和删除额外的目录树。 @@ -3017,7 +3226,7 @@ El~Capitan, 和 Sierra (10.10 及以后的)。给更老版本的 \MacOSX\ \code{install-tl}: Mac 下的个人路径,比如 \envname{TEXMFHOME},现在默认设置为和 Mac\TeX\ 一样的 (|~/Library/...|)。增加了新选项 \code{-init-from-profile} -来以特定 profile 启动安装;新命令 \code{P} 来直接保存一个 profile;新的 profile +来以特定 profile 启动安装; 新命令 \code{P} 来直接保存一个 profile; 新的 profile 变量名 (但先前的名字也还支持)。 Sync\TeX: 临时文件的名字现在被改为了 \code{foo.synctex(busy)},而不是 @@ -3025,15 +3234,15 @@ Sync\TeX: 临时文件的名字现在被改为了 \code{foo.synctex(busy)},而 件的前端和编译系统因此需要调整。 其他工具: \code{texosquery-jre8} 是一个新的跨平台程序,用来在 \TeX\ 文档 -中获取系统 locale 和其他 OS 信息;它已经包含在了 |shell_escape_commands| +中获取系统 locale 和其他 OS 信息; 它已经包含在了 |shell_escape_commands| 中,可以在受限的 shell 环境中执行。(texosquery 也支持更老的 JRE 版本,但 不能在受限模式下启用,因为 Oracle 由于安全问题不再支持那些版本了。) -平台:见上述的 Mac\TeX\ 条目。没有其他的变化。 +平台: 见上述的 Mac\TeX\ 条目。没有其他的变化。 -\subsection{2018} +\subsubsection{2018} -Kpathsea: 对于非系统目录缺省进行大小写不敏感的文件名匹配;可以通过设置 +Kpathsea: 对于非系统目录缺省进行大小写不敏感的文件名匹配; 可以通过设置 \code{texmf.cnf} 或者将 \code{texmf\_casefold\_search} 环境变量设置为~\code{0} 来禁用。详细信息见 Kpathsea 手册 (\url{https://tug.org/kpathsea})。 @@ -3041,24 +3250,24 @@ ep\TeX, eup\TeX: 新的原语 \cs{epTeXversion}。 Lua\TeX: 准备在 2019 年升级到 Lua 5.3: 大部分平台下都提供了一个 \code{luatex53} 程序,但必须被改名为 \code{luatex} 才能使用。或者使用 -\ConTeXt\ Garden (\url{https://wiki.contextgarden.net}) 的文件;那里有 +\ConTeXt\ Garden (\url{https://wiki.contextgarden.net}) 的文件; 那里有 更多的信息。 MetaPost: 对错误的路径方向、TFM 和 PNG 输出的修正。 -pdf\TeX: 允许位图字体使用 encoding vector;当前目录不再被加入 PDF ID 的计算;关于 +pdf\TeX: 允许位图字体使用 encoding vector; 当前目录不再被加入 PDF ID 的计算; 关于 \cs{pdfprimitive} 的 bug 修正及相关改变。 -Xe\TeX: 在插入 PDF 图像文件时支持 \code{/Rotate};如果输出程序失败会返回非 0 -退出码;许多 UTF-8 和原语的修正。 +Xe\TeX: 在插入 PDF 图像文件时支持 \code{/Rotate}; 如果输出程序失败会返回非 0 +退出码; 许多 UTF-8 和原语的修正。 Mac\TeX: 参见下面关于 macOS 版本支持的变化。除此之外,Mac\TeX\ 在 -\code{/Applications/TeX/} 下安装的文件经过了重新组织使之更为清晰;现在这个目录 +\code{/Applications/TeX/} 下安装的文件经过了重新组织使之更为清晰; 现在这个目录 包含四个 GUI 程序 (BibDesk, LaTeXiT, TeX Live Utility, 和 TeXShop),它的子目录 则包含其余的实用程序和文档。 -\code{tlmgr}: 新的 \code{tlshell} (Tcl/Tk) 和 \code{tlcockpit} (Java) 前端;JSON -输出;\code{uninstall} 现在可以替代 \code{remove} 使用;新的 +\code{tlmgr}: 新的 \code{tlshell} (Tcl/Tk) 和 \code{tlcockpit} (Java) 前端; JSON +输出; \code{uninstall} 现在可以替代 \code{remove} 使用; 新的 \code{print-platform-info} 选项。 平台支持: @@ -3076,15 +3285,15 @@ Mac\TeX: 参见下面关于 macOS 版本支持的变化。除此之外,Mac\TeX \item Windows: 不再支持 XP。 \end{itemize*} -\subsection{2019} +\subsubsection{2019} -Kpathsea: 更一致的括号展开和路径拆分;用来替代 \code{.} 的 \code{TEXMFDOTDIR} +Kpathsea: 更一致的括号展开和路径拆分; 用来替代 \code{.} 的 \code{TEXMFDOTDIR} 新变量,以方便子目录搜索 (见 \code{texmf.cnf} 中的注释)。 ep\TeX, eup\TeX: 新的原语 \cs{readpapersizespecial} 和 \cs{expanded}。 Lua\TeX: 现在使用的是 Lua 5.3,随之而来的是算术和接口的变化。自带的 pplib -用于读取 PDF 文件,所以可以去掉对于 poppler 的依赖 (也就不再依赖 C++);Lua +用于读取 PDF 文件,所以可以去掉对于 poppler 的依赖 (也就不再依赖 C++); Lua 接口有相应的变化。 MetaPost: \code{r-mpost} 命令被认作加了 \code{--restricted} 选项的别名,并被加入 @@ -3106,15 +3315,15 @@ Xe\TeX: 新的原语 \cs{expanded}, \cs{uniformdeviate}, \cs{randomseed}; 扩展 \cs{Ucharcat} 来输出 active 的字符。 -\code{tlmgr}: 支持用 \code{curl} 作为下载程序;优先用 \code{lz4} 和 gzip 而不是 - \code{xz} 做本地备份;优先使用系统提供的压缩和下载程序,而不是 \TL\ 自带的, +\code{tlmgr}: 支持用 \code{curl} 作为下载程序; 优先用 \code{lz4} 和 gzip 而不是 + \code{xz} 做本地备份; 优先使用系统提供的压缩和下载程序,而不是 \TL\ 自带的, 除非设置了 \code{TEXLIVE\_PREFER\_OWN} 环境变量。 \code{install-tl}: 新的 \code{-gui} 选项 (不带参数) 现在是 Windows 和 Mac 下的默 认的选项,它会使用一个新的 Tcl/TK 图形界面 (见第~\ref{sec:basic}~节和 第~\ref{sec:graphical-inst})~节。 -实用程序: +实用程序: \begin{itemize*} \item \code{cwebbin} (\url{https://ctan.org/pkg/cwebbin}) 现在是 \TeX\ Live 中的 CWEB 实现,支持更多的方言,并包括构建 mini-index 使用的 \code{ctwill} 程序。 @@ -3126,19 +3335,17 @@ CWEB 实现,支持更多的方言,并包括构建 mini-index 使用的 \code \end{itemize*} Mac\TeX: \code{x86\_64-darwin} 现在支持 10.12 或更新的版本 (Sierra, -High Sierra, Mojave);\code{x86\_64-darwinlegacy} 仍然支持 10.6 或更新版本。 +High Sierra, Mojave); \code{x86\_64-darwinlegacy} 仍然支持 10.6 或更新版本。 不再包含 Excalibur 拼写检查器,因为它需要 32 位支持。 -平台支持:去除了 \code{sparc-solaris}。 +平台支持: 去除了 \code{sparc-solaris}。 -\htmlanchor{news} -\subsection{当前版本:2020} -\label{sec:tlcurrent} +\subsubsection{2020} 通用的更新: \begin{itemize} \item 所有 \TeX\ 引擎,包括 \texttt{tex} 的 \cs{input} 原语,现在都支持以组分隔 的文件名参数,作为跟系统有关的扩展。标准的用空格或者标识符分隔的文件名的使用完全 -不受影响。按组分隔的参数一开始是 Lua\TeX\ 先实现的;现在它被推广到所有的引擎中了。 +不受影响。按组分隔的参数一开始是 Lua\TeX\ 先实现的; 现在它被推广到所有的引擎中了。 ASCII 双引号字符 (\texttt{"}) 一开始会被从文件名中去掉,但在输入后不变。这个改变 目前不会影响 \LaTeX{} 的 \cs{input} 命令,因为那是对标准 \cs{input} 原语重新定义 的宏。 @@ -3152,14 +3359,14 @@ ASCII 双引号字符 (\texttt{"}) 一开始会被从文件名中去掉,但在 \end{itemize} ep\TeX, eup\TeX: 新的原语 \cs{Uchar}, \cs{Ucharcat}, -\cs{current(x)spacingmode}, \cs{ifincsname};更新 \cs{fontchar??} 和 -\cs{iffontchar}。只针对 eup\TeX{} 的:\cs{currentcjktoken}。 +\cs{current(x)spacingmode}, \cs{ifincsname}; 更新 \cs{fontchar??} 和 +\cs{iffontchar}。只针对 eup\TeX{} 的: \cs{currentcjktoken}。 Lua\TeX: 与 HarfBuzz 库的集成,作为新引擎 \texttt{luahbtex} (被用于 -\texttt{lualatex}) 和 \texttt{luajithbtex} 提供。新的原语: +\texttt{lualatex}) 和 \texttt{luajithbtex} 提供。新的原语: \cs{eTeXgluestretchorder}, \cs{eTeXglueshrinkorder}。 -pdf\TeX: 新的原语 \cs{pdfmajorversion};这个命令只改变 PDF 输出的版本号;它对 +pdf\TeX: 新的原语 \cs{pdfmajorversion}; 这个命令只改变 PDF 输出的版本号; 它对 任何 PDF 内容没有影响。\cs{pdfximage} 等类似命令现在以和 \cs{openin} 相同的方式 来搜索图像文件了。 @@ -3172,7 +3379,7 @@ Dvips: 位图字体的输出编码,以更好的支持复制粘贴 (\url{https://tug.org/TUGboat/tb40-2/tb125rokicki-type3search.pdf})。 Mac\TeX: Mac\TeX\ 和 \texttt{x86\_64-darwin} 现在需要 10.13 或者更新的系统 -(High~Sierra, Mojave, 和 Catalina); +(High~Sierra, Mojave, 和 Catalina); \texttt{x86\_64-darwinlegacy} 支持 10.6 和更新的系统。Mac\TeX\ 已经被公证 (notarized) 命令行程序使用强化的运行时环境,因为 Apple 现在要求安装包必须提 供这些。BibDesk 和 \TeX\ Live Utility 不再是 Mac\TeX\ 的一部分,因为它们没有 @@ -3183,22 +3390,446 @@ Mac\TeX: Mac\TeX\ 和 \texttt{x86\_64-darwin} 现在需要 10.13 或者更新的 \item 新选项 \texttt{tlmgr check texmfdbs}, 用来检查每个目录树 \texttt{ls-R} 文件和 \texttt{!!} 配置的一致性。 \item 软件包容器使用带版本号的文件名,比如 -\texttt{tlnet/archive/\textsl{pkgname}.rNNN.tar.xz};对用户应该没有影响,但对于 +\texttt{tlnet/archive/\textsl{pkgname}.rNNN.tar.xz}; 对用户应该没有影响,但对于 分发来说会是一个明显的改变。 \item \texttt{catalogue-date} 信息不在从 \TeX~Catalogue 获得了,因为它通常和软件 包更新没有关系。 \end{itemize*} +\subsubsection{2021} + +一般更新: +\begin{itemize} +\item Donald Knuth 对 \TeX{} 和 Metafont 进行的 2021 年调优更改已被整合 +(\url{https://tug.org/TUGboat/tb42-1/tb130knuth-tuneup21.pdf})。 +这些更改也可在 CTAN 上作为 \code{knuth-dist} 和 \code{knuth-local} 包提供。 +如预期的那样,这些修复仅适用于罕见情况,并不会影响实际操作中的行为。 + +\item 除了原始 \TeX{} 外: +如果 \cs{tracinglostchars} 设置为 3 或更高, +缺失字符将导致错误, +而不仅仅是在日志文件中显示消息, +缺失的字符代码将以十六进制显示。 + +\item 除了原始 \TeX{} 外: +一个新的整数参数 \cs{tracingstacklevels}, +如果为正值,并且 \cs{tracingmacros} 也为正值, +将在每个相关日志行上输出一个前缀, +指示宏展开的深度 (例如,深度为 2 时为 |~..|)。 +此外,宏记录将在深度 $\ge$ 参数值时被截断。 + +\end{itemize} + +Aleph: 基于 Aleph 的 \LaTeX{} 格式 \code{lamed} 已被移除。 +\code{aleph} 二进制文件本身仍然包含在内并支持。 + +Lua\TeX{}: +\begin{itemize*} +\item Lua 5.3.6。 +\item 用于 \cs{tracingmacros} 的嵌套级别回调, +作为新的 \cs{tracingstacklevels} 的通用变体。 +\item 将数学字符标记为保护,以防止作为文本处理。 +\item 删除传统数学代码路径的宽度/ic 补偿。 +\end{itemize*} + +MetaPost: +\begin{itemize*} +\item 支持用于可重复输出的 |SOURCE_DATE_EPOCH| 环境变量。 +\item 避免在 \texttt{mpto} 中错误地结尾 \texttt{\%}。 +\item 记录 \texttt{-T} 选项,其他手册修复。 +\item 在二进制和十进制模式下更改 \texttt{epsilon} 的值, +以便 |mp_solve_rising_cubic| 函数按预期工作。 +\end{itemize*} + +pdf\TeX{}: +\begin{itemize*} +\item 新增原语 \cs{pdfrunninglinkoff} 和 \cs{pdfrunninglinkon}; +例如,用于禁用在页眉和页脚中生成链接。 +\item 当 “\cs{pdfendlink} 结束于与 \cs{pdfstartlink} 不同的嵌套级别” 时发出警告而不是中止。 +\item 在 \texttt{fmt} 文件中转储 \cs{pdfglyphtounicode} 分配。 +\item 源代码: 删除 \texttt{poppler} 支持, +因为同步上游太难。 +在原生 \TL{} 中,pdf\TeX{} 一直使用 \texttt{libs/xpdf}, +这是从 \texttt{xpdf} 中裁剪和调整的代码。 +\end{itemize*} + +Xe\TeX{}: 修复了数学字符间距问题。 + +Dvipdfmx: +\begin{itemize*} +\item 现在默认安全调用 Ghostscript; +要覆盖此设置 (从而假设所有输入文件都是可信的), +请使用 \verb|-i dvipdfmx-unsafe.cfg|。 +要使用 PSTricks 与 \XeTeX{}, +这是必需的,如下所示: \\ +\verb|xetex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" ...| +\item 如果找不到图像文件,则以错误状态退出。 +\item 扩展的颜色支持特殊语法。 +\item 用于操作 |ExtGState| 的特殊命令。 +\item 兼容性特殊命令 \code{pdfcolorstack} 和 \code{pdffontattr}。 +\item 实验性支持 \code{dviluatex} 的扩展 |fnt_def|。 +\item 支持虚拟字体的新特性以回退日文字体定义。 +\end{itemize*} + +Dvips: +\begin{itemize*} +\item 默认 PostScript 文档标题现在是输入文件的基本名称,可以通过新选项 \texttt{-title} 覆盖。 +\item 如果找不到 \texttt{.eps} 或其他图像文件,则以错误状态退出。 +\item 支持虚拟字体的新特性以回退日文字体定义。 +\end{itemize*} + +Mac\TeX{}: Mac\TeX{} 及其新的二进制文件夹 \texttt{universal-darwin} 现在需要 \macOS{} 10.14 或更高版本 +(Mojave、Catalina 和 Big~Sur); +不再存在 |x86_64-darwin| 二进制文件夹。 +通过 Unix \texttt{install-tl} 提供的 |x86_64-darwinlegacy| 二进制文件夹支持 10.6 及更新版本。 + +今年对 Macintosh 来说是重要的一年, +因为 Apple 在 11 月推出了 ARM 机器, +并将在多年内销售和支持 ARM 和 Intel 机器。 +\texttt{universal-darwin} 中的所有程序都具有 ARM 和 Intel 的可执行代码。 +两种二进制文件都从相同的源代码编译。 + +额外的程序 Ghostscript、LaTeXiT、\TeX{} Live Utility 和 TeXShop 都是通用的, +并且都签署了加固运行时, +因此它们今年都包含在 Mac\TeX{} 中。 + +\code{tlmgr} 和基础设施: +\begin{itemize*} +\item 仅保留主存储库的 \texttt{texlive.tlpdb} 的一个备份。 +\item 在系统和 Perl 版本之间实现更高的可移植性。 +\item \texttt{tlmgr info} 报告新的 \texttt{lcat-*} 和 \texttt{rcat-*} 字段, +用于本地与远程目录数据。 +\item 子命令的全部日志记录移动到一个新的日志文件: \\ +\texttt{texmf-var/web2c/tlmgr-commands.log}。 +\end{itemize*} + +\subsubsection{2022} + +一般更新: +\begin{itemize} +\item 新引擎 \code{hitex},它输出自己的 HINT 格式, +特别为在移动设备上阅读技术文档而设计。 +GNU/Linux、Windows 和 Android 的 HINT 查看器可以从 \TL{} 单独获取。 + +\item \code{tangle}、\code{weave}: 支持可选的第三个参数来指定输出文件。 + +\item Knuth 的程序 \code{twill} 现在包含在内,用于为原始 \texttt{WEB} 程序制作迷你索引。 + +\end{itemize} + +跨引擎扩展(原始 \TeX{}、Aleph 和 hi\TeX{} 除外): +\begin{itemize} +\item 新增原语 \cs{showstream},用于将 \cs{show} 输出重定向到文件。 +\item 新增原语 \cs{partokenname} 和 \cs{partokencontext}, +允许覆盖空行、vbox 结束等时发出的 \cs{par} 标记的名称。 +\end{itemize} + +ep\TeX{},eup\TeX{}: +\begin{itemize*}\raggedright +\item 新增原语: \cs{lastnodefont}、\cs{suppresslongerror}、 +\cs{suppressoutererror}、\cs{suppressmathparerror}。 +\item 现在可用 pdf\TeX{} 扩展 \cs{vadjust pre}。 +\end{itemize*} + +Lua\TeX{}: +\begin{itemize*} +\item 支持 PDF 2.0 的结构化目标。 +\item PDF 2.0 的 PNG /Smask。 +\item \code{luahbtex} 的可变字体接口。 +\item 数学默认模式中不同的根式样式默认值。 +\item 可选地阻止选定的可分字符创建。 +\item 改进 TrueType 字体实现。 +\item 更高效的 \cs{fontdimen} 分配。 +\item 忽略只有本地 \code{par} 节点后跟方向同步节点的段落。 +\end{itemize*} + +MetaPost: 无限宏展开的错误修复。 + +pdf\TeX{}: +\begin{itemize*}\raggedright +\item 支持 PDF 2.0 的结构化目标。 +\item 对于字母间隔字体,如果指定了显式 \cs{fontdimen}6,则使用它。 +\item 始终在行首发出警告。 +\item 对于具有自动调整字符间距 (\cs{pdfappendkern} 和 \cs{pdfprependkern}) 的字符, +仍然进行突出显示; 同样,对隐式和显式连字符进行自动调整。 +\end{itemize*} + +p\TeX{} 等: +\begin{itemize*} +\item p\TeX{} 重大更新至 4.0.0,以更好地支持当前 \LaTeX{}。 +\item 新增原语 \cs{ptexlineendmode} 和 \cs{toucs}。 +\item \cs{ucs} (以前在 uptex、euptex 中可用) 现在在 p\TeX{} 和 ep\TeX{} 中也可用。 +\item 区分八位字符和日文字符, +如 Hironori Kitagawa 在 TUGboat 文章中讨论的那样 +(\url{https://tug.org/TUGboat/tb41-3/tb129kitagawa-char.pdf})。 +\end{itemize*} + +Xe\TeX{}: 新增包装脚本 \texttt{xetex-unsafe} 和 \texttt{xelatex-unsafe}, +用于简化调用需要 \XeTeX{} 和 PSTricks 透明操作符的文档, +这本质上是不安全的 (直到 Ghostscript 中重新实现为止)。 +为了安全,使用 Lua\AllTeX{}。 + +Dvipdfmx: +\begin{itemize*} +\item 支持 PSTricks 而无需 \texttt{-dNOSAFER},除了透明度。 +\item \texttt{-r} 选项再次有效,用于设置位图字体分辨率。 +\end{itemize*} + +Dvips: 默认情况下,不尝试自动媒体调整以旋转纸张尺寸; +新选项 \texttt{-{}-landscaperotate} 重新启用。 + +\code{upmendex}: 实验性支持阿拉伯语和希伯来语; 改进的字符分类和语言支持。 + +Kpathsea: \texttt{kpsewhich -all} 返回的第一个路径现在与常规 (非全部) 搜索相同。 + +\code{tlmgr} 和基础设施: +\begin{itemize*} +\item 默认使用 https 访问 \code{mirror.ctan.org}。 +\item 使用 \code{TEXMFROOT} 而不是 \code{SELFAUTOPARENT} 以便于重新定位。 +\item \code{install-tl}: 如果下载或安装失败,将自动继续并稍后重试 (一次)。 +\end{itemize*} + +Mac\TeX{}: Mac\TeX{} 及其二进制文件夹 \texttt{universal-darwin} 需要 \macOS{} 10.14 或更高版本 +(Mojave、Catalina、Big~Sur、Monterey)。 +仅通过 Unix \texttt{install-tl} 提供的 |x86_64-darwinlegacy| +二进制文件夹支持 10.6 (Snow~Leopard) 及更新版本。 + +平台: 今年 (2022年) 没有平台支持的变化。 +但是,明年的发行版 (2023年) 我们计划将 Windows 二进制文件从 32 位切换到 64 位。 +不幸的是,我们无法同时支持两者。 + +\subsubsection{2023} + +\noindent Windows: 正如之前宣布的那样, +\TL{} 现在包含 64 位 Windows 二进制文件, +而不是32位的。 +新目录名为 \texttt{bin/windows} (将 64 位二进制文件放入名为``32''的目录中似乎不合适)。 +我们知道这将给 Windows 用户带来额外的工作, +但似乎没有更好的替代方案。 +如果需要 32 位的 Windows 支持, +你需要安装\TL{} 2022。 +从 Windows 11 开始, +基于 ARM 的 Windows 支持 64 位 AMD/Intel 的仿真, +因此可以使用当前的 \TL。 +然而,基于 ARM 的 Windows 10 无法仿真 Intel/AMD 64位, +因此也需要 32 位 TeX Live。 +请参阅单独的 \TL{} Windows 网页 (\url{https://tug.org/texlive/windows.html})。 + +\noindent 跨引擎扩展 (原始 \TeX{} 和 e-\TeX{} 除外): +\cs{special} 后跟一个新关键字``\texttt{shipout}'', +将参数标记的扩展延迟到 \cs{shipout} 时进行, +就像非 \verb|\immediate\write| 一样。 + +\noindent ep\TeX{}、eup\TeX{}: +\begin{itemize*} +\item 不再构建``原始'' (u)ptex; (u)ptex 现在以 e(u)ptex的兼容模式运行。p\TeX{} 工具也同样,具体如下。 +\item 新增原语: \cs{tojis}、\cs{ptextracingfonts}、\cs{ptexfontname}。 +\item 对于 \cs{font},支持 JIS/UCS 的新语法。 +\end{itemize*} + +\noindent Lua\TeX{}: +\begin{itemize*} +\item 新的原语 \cs{variablefam} 允许数学字符保持其类别,同时让族适应。 +\item 改进了从右到左的注释区域 +\item 上述跨引擎``延迟\cs{special}''。 +\item 在 2023 年 5 月发布的 Lua\TeX{} 1.17.0 中: +默认禁用了 socket 库; 新的命令行选项 \code{--socket} 启用了它, +以及\code{--shell-escape} (而不是\code{--shell-restricted})。 +此外,mime库现在始终可用, +并且新的函数 \code{os.socketsleep} 和 \code{os.socketgettime} 也始终可用。 +最后,修复了一些绕过各种安全功能的隐蔽方法。 +\end{itemize*} + +\noindent MetaPost: +修复了一些错误。\texttt{svg->dx} 和 \texttt{svg->dy} 现在是 \texttt{double} 类型, +以提高精度; +更新了 \verb|mp_begin_iteration|; +修复了 \texttt{mplib} 中的内存泄漏。 + +\noindent pdf\TeX{}: +\begin{itemize*} +\item 新增原语 \cs{pdfomitinfodict},完全省略 \texttt{/Info} 字典。 +\item 新增原语 \cs{pdfomitprocset},控制省略 \texttt{/ProcSet} 数组: +如果该参数为负,则包含 \texttt{/ProcSet}; +如果该参数为 0 并且 pdftex 生成 PDF 1.x 输出,则包含 \texttt{/ProcSet}。 +\item 使用 \cs{pdfinterwordspaceon} 时, +如果当前字体的编码在位置 32 有一个 \texttt{/space} 字符, +则使用该字符; +否则,使用 (新) 默认字体 \texttt{pdftexspace} 的 \texttt{/space} 字符。 +可以使用新的原语 \cs{pdfspacefont} 覆盖该默认字体。同样的新过程用于 \cs{pdffakespace}。 +\end{itemize*} + +\noindent p\TeX{}等: +\begin{itemize*} +\item 如上所述,\texttt{ptex} 现在以兼容模式运行 \texttt{eptex},而不是单独构建。 +\item p\TeX{} 工具 (pbibtex、pdvitype、ppltotf、ptftopl) 合并到相应的 up\TeX{} 版本中, +并以兼容模式运行。 +\end{itemize*} + +\noindent Xe\TeX: +修复了 \cs{topskip} 和 \cs{splittopskip} 在 \cs{XeTeXupwardsmode} 激活时的计算; +上述跨引擎``延迟 \cs{special}''。 + +\noindent Dvipdfmx: +新增选项 \texttt{-{}-pdfm-str-utf8}, +用于创建 pdfmark 和/或书签。 + +\noindent \BibTeX{}u: +\begin{itemize*} +\item 这个 \BibTeX{} 变体与 \BibTeX{} 大部分向上兼容, +具有更好的 (基于Unicode的) 多语言支持。它已经在 \TL{} 中存在多年。 +\item 今年,增加了更多支持 CJK 语言的功能, +一些功能从日本的 (u)pbibtex 和其他程序扩展而来。 +\end{itemize*} + +\noindent Kpathsea: +在类 Unix 平台上支持猜测输入文件编码, +如同在 Windows 上一样; +启用于 (\texttt{e}) \texttt{p} (\texttt{la}) \texttt{tex}、\texttt{pbibtex}、\texttt{mendex}。 + +\noindent \code{tlmgr} 和基础设施: +\begin{itemize*} +\item 在 \macOS{} 上默认使用文本界面。 +\item 首先安装核心包,其他包重试一次。 +\item 对磁盘空间是否足够进行简单检查。 +\end{itemize*} + +\noindent Mac\TeX{}: +\begin{itemize*} +\item Mac\TeX{} 及其二进制文件夹 \texttt{universal-darwin} 需要 \macOS{} 10.14 或更高版本 +(Mojave、Catalina、Big Sur、Monterey、Ventura)。 +仅在 Unix \texttt{install-tl} 中可用的 \texttt{x86\_64-darwinlegacy} 二进制文件夹支持 10.6 +(Snow Leopard) 及更高版本。 +\item Mac\TeX{} 中的 GUI 包现在包含 \texttt{hintview}, +一个 \macOS{} 查看器用于 HINT 文档 +(由 \texttt{hitex} 和 \texttt{hilatex} 引擎为移动设备创建; +请参阅 Hi\TeX{} 网页, +\url{https://hint.userweb.mwn.de/hint/hitex.html})。 +GUI 包不再安装文档文件夹, +而是用一个简短的 \texttt{READ~ME} 文件和一个关于 \texttt{hintview} 的页面取代。 +\item DVD 上的 \texttt{Extras} 文件夹中额外的 \TeX{} 软件已被包含下载链接的文档取代。 +\end{itemize*} + +\noindent 平台: +\begin{itemize*} +\item 如上所述,新的 \texttt{windows} 二进制目录包含 64 位 Windows 二进制文件。 +\item \texttt{bin/win32} 二进制目录已删除,因为我们无法同时支持 32 位和 64 位 Windows。 +\item \texttt{i386-cygwin} 二进制目录已删除,因为 Cygwin 不再支持i386。 +\end{itemize*} + +\htmlanchor{news} +\subsection{当前: 2024} +\label{sec:tlcurrent} + +\noindent 跨引擎变化 (原始 \TeX{}、e-\TeX{} 和 Lua\TeX{} 除外): +\begin{itemize*} +\item 避免因 \cs{output} 和 \cs{write} 大括号的恶意使用导致的崩溃。 +\item 微小的内循环优化。 +(这些更改均由 David Fuchs 完成。) +\end{itemize*} + +\noindent Lua\TeX{}: +\begin{itemize*} +\item Lua 级别的文件写入检查现在与 \TeX{} 级别的检查类似。 +\item 如果设置了 Lua 值 \code{texconfig.trace\_extra\_newline}, +则在宏参数之间的日志中输出空行。 +在 2020-2023 年,这种情况是默认的; +在此之前,不会输出此类空行,这是其他引擎的行为。 +\item 过去,Windows 平台的 \code{texlua} (而不是 \code{luatex},也不是其他平台) +内部会对参数执行通配符扩展。现在不再发生这种情况。 +\end{itemize*} + +\noindent MetaPost: +\begin{itemize*} +\item 现在包含用于区间算术的 MPFI 库; 使用 \texttt{-{}-numbersystem=interval} 启用。 +\end{itemize*} + +\noindent pdf\TeX{}: +\begin{itemize*} +\item 在大端系统上更可靠的文本提取。 +\item 增加对损坏的 pfb、fmt、pdf 文件的检查。 +\item 避免由于不寻常的 pdf 包含导致写入损坏的 pdf 文件。 +\item 手册转换为 \LaTeX{} 并进行了彻底审查,但实质性更新较少。 +\end{itemize*} + +\noindent ep\TeX{}、eup\TeX{}: +\begin{itemize*} +\item 新的简单编码转换工具 \texttt{ptekf}。 +\item \texttt{eptex} 不再单独构建; 它在 \texttt{euptex} 的遗留编码模式下运行。 +\end{itemize*} + +\noindent Xe\TeX{}: +\begin{itemize*} +\item 支持文件名中超出基本多文种平面的 Unicode 字符。 +\end{itemize*} + +\noindent Dvipdfmx: +\begin{itemize*} +\item 以与 pdf\TeX{} 相同的方式计算时区偏移。 +\item 处理变体选择器以应对新的 Adobe-Japan1-UCS2 CMap。 +\item 在虚拟字体中为 (u)p\TeX{} 回退多字节字符到 OFM 字体。 +\item 支持 \code{pdf:image} 特殊命令中的 \code{named} 关键字。 +\end{itemize*} + +\noindent Kpathsea: +\begin{itemize*} +\item 支持扩展的安全文件名检查, +同时允许在 \code{TEXMF}[\code{SYS}]\code{VAR} 下写入, +适用于 Lua\AllTeX{}; 新增函数和相应的 \code{kpsewhich} 选项。 +\item 支持新的变量 \code{TEXMF\_OUTPUT\_DIRECTORY} +(与传统的 \code{TEXMFOUTPUT} 一起), +使子程序可以访问引擎调用中的 \texttt{-{}-output-directory} 设置。 +\end{itemize*} + +\noindent CWEB: +\begin{itemize*} +\item 支持以 Lua\TeX{} 作为后端 \TeX{} 引擎。 +\item 修复了在无换行点的行上发生的缓冲区溢出问题。 +\end{itemize*} + +\noindent \code{tlmgr}: +\begin{itemize*} +\item 新动作 \code{bug},帮助查找错误报告信息。 +\item 在所有平台上使用我们自己的根证书包,以更广泛地支持 LWP,特别是在 \macOS{} 上。 +\item 检测远程仓库是否比本地安装更旧 (即过时的镜像),并且不更新,以避免错误的包移除。 +\item 支持 \ConTeXt{} 纸张尺寸设置。 +\item 修剪镜像仓库 (主仓库和tlcontrib) 的 tlpdb 文件备份。 +\end{itemize*} + +\noindent 平台: +\begin{itemize*} +\item \ISO\ 镜像再次包含所有平台的二进制文件。 +在过去的几年中, +一些二进制集被修剪, +但今年我们没有作为用户组福利制作实体 DVD, +所以可以再次包含所有内容。 +而且,即使是最大限度地修剪的镜像也太大, +无法适应单层 DVD, +因此修剪对 2024 年的志愿刻录者没有好处。 +更多信息请访问 \url{https://tug.org/texcollection/}。 +\item Robert Alessi 在 \url{https://sr.ht/~ralessi/texlive-openbsd/} +提供了在 OpenBSD 上原生 \TL{} 安装的二进制文件。 +\end{itemize*} + +\noindent Mac\TeX{}: +现在包含最新的 Ghostscript 10.03.0, +所有四个 GUI 程序的更新, +以及 (如往常一样) 所有新的 \TL{} 更改。 +二进制文件仍然支持 macOS 10.14 (Mojave,2018) 及更高版本。 +(如往常一样,更早的 Mac 版本由 \texttt{x86\_64-darwinlegacy} 二进制文件支持, +这些文件是 \TL{} 的一部分,但不是 Mac\TeX{} 的一部分。) + \subsection{未来} -\TL{} 并不完美,也永远不会达到完美。我们希望继续发行新的版本,也希望提供 -更多的帮助文档、更多的实用程序、更多的安装程序,当然还有更多更新的宏包与 -字体,以及其他一切和 \TeX\ 有关的东西。这个工作是由志愿者在其空闲时间完成的, -所以总有更多值得做的地方。请参见 \url{https://tug.org/texlive/contribute.html}。 +我们打算继续发布新的 \TL{} 版本, +并希望提供更多的文档、更多的程序、更完善和更全面检查的宏和字体树以及其他与 \TeX{} 相关的内容。 +所有这些工作都是由志愿者在业余时间完成的, +而且总有更多的工作要做。 +请参阅\url{https://tug.org/texlive/contribute.html}。 -请把更正、建议或者提供帮助的意愿发送到: +请将纠正、建议和帮助的提议发送到: \begin{quote} -\email{tex-live@tug.org} \\ +\email{tex-live@tug.org} {\small (您无需订阅即可发布)}\\ \url{https://tug.org/texlive} \end{quote} @@ -3207,7 +3838,7 @@ Mac\TeX: Mac\TeX\ 和 \texttt{x86\_64-darwin} 现在需要 10.13 或者更新的 \section{翻译说明} -这里对简体中文版本《\TL{} 指南》,即本文档中遵循的翻译惯例作一简要说明: +这里对简体中文版本《\TL{} 指南》,即本文档中遵循的翻译惯例作一简要说明: \begin{itemize} @@ -3235,4 +3866,6 @@ Helin Gai 翻译。其中 Jinsong Zhao 负责 Windows 部分的翻译,Yue Wang 2010 到 2020 年的简体中文版本都由 Jiang Jiang 翻译。 +2024 年的简体中文版本由 Ran Wang (王然) 翻译。 + \end{document} |