文件freebsd安装

freebsd安装  时间:2021-02-20  阅读:()

TEXLive指南—2020KarlBerry编写https://tug.
org/texlive/2020年3月目录1简介31.
1TEXLive与TEXCollection31.
2操作系统支持31.
3TEXLive的基本安装41.
4关于安全的考虑41.
5获得帮助42TEXLive概览52.
1TEXCollection:TEXLive,proTEXt,MacTEX52.
2TEXLive的顶层目录52.
3预定义的texmf目录树概览62.
4TEX的扩展版本72.
5TEXLive中其他值得一提的程序73安装73.
1启动安装程序73.
1.
1Unix83.
1.
2MacOSX93.
1.
3Windows93.
1.
4Cygwin93.
1.
5文本界面安装程序93.
1.
6图形界面安装程序93.
1.
7旧版本安装程序103.
2执行安装程序103.
2.
1二进制系统菜单(只对Unix适用)113.
2.
2选择要安装的组件113.
2.
3目录123.
2.
4选项133.
3install-tl命令行选项143.
3.
1-repository参数143.
4安装后的操作141目录23.
4.
1Unix下的环境变量153.
4.
2环境变量的全局配置153.
4.
3DVD安装后的网络更新153.
4.
4XeTEX和LuaTEX的系统字体配置163.
4.
5ConTEXtMarkIV163.
4.
6集成本地与个人宏文件163.
4.
7集成第三方字体173.
5测试安装是否成功173.
6其他可下载软件的链接184特殊安装194.
1用户共享(或跨机器)安装194.
2便携(USB)安装195tlmgr:管理你的安装205.
1tlmgr的GUI界面215.
2tlmgr命令行使用示例216有关Windows平台的说明226.
1针对Windows的特征226.
2Windows上附加的软件236.
3UserProfile目录相当于主目录236.
4Windows注册表236.
5Windows权限246.
6增加Windows和Cygwin下的最大内存量247Web2C用户指南247.
1Kpathsea路径搜索257.
1.
1路径的来源267.
1.
2配置文件267.
1.
3路径展开277.
1.
4默认展开277.
1.
5大括号展开277.
1.
6子目录展开277.
1.
7texmf.
cnf文件中的特殊字符简要说明277.
2文件名数据库287.
2.
1文件名数据库287.
2.
2kpsewhich:独立的路径搜索287.
2.
3使用举例297.
2.
4调试操作307.
3运行时选项327.
4$TEXMFDOTDIR338致谢331简介39发行历史349.
1过去349.
1.
12003359.
1.
22004359.
1.
32005379.
1.
42006–2007379.
1.
52008389.
1.
62009389.
1.
72010399.
1.
82011399.
1.
92012409.
1.
102013409.
1.
112014409.
1.
122015419.
1.
132016419.
1.
142017429.
22018439.
32019439.
4当前版本:2020449.
5未来4510翻译说明451简介1.
1TEXLive与TEXCollection本文档描述TEXLive软件的主要功能和特性,TEXLive是TEX及其相关程序在GNU/Linux及其他类Unix系统、MacOSX和Windows系统下的一套发行版.
你可以直接下载TEXLive,也可以在TEX用户组织给会员分发的TEXCollectionDVD中找到.
第2.
1节中,简要地介绍了DVD的内容.
这两套发行版都是用户组织共同协作完成的.
这篇文档,主要介绍TEXLive本身.
TEXLive包括了TEX,LATEX2ε,ConTEXt,METAFONT,MetaPost,BibTEX等许多可执行程序;种类繁多的宏包、字体和文档,并支持世界上许多不同的语言.
文档末尾的第9节(第34页)介绍了这一版TEXLive的重要改变.
1.
2操作系统支持TEXLive为多种基于Unix的平台提供了可执行文件,包括GNU/Linux、MacOSX、和Cygwin.
它还包含了源代码,可供在没有提供可执行文件的平台上编译安装.
至于Windows,TEXLive仅支持Windows7或后续版本.
WindowsVista可能可以继续工作,但TEXLive不能在WindowsXP或者更早的版本上运行.
TEXLive没有包含64位的Windows可执行文件,不过32位的可执行文件也能64位的系统上正常运行.
除了TEXLive以外,Windows和MacOSX用户还有其它的选择,请参考第2.
1节.
1简介41.
3TEXLive的基本安装你可以使用DVD方式或者网络方式来安装TEXLive(https://tug.
org/texlive/acquire.
html).
通过网络的安装程序本身非常小,它可以从网上下载所有的你所要求的软件包.
网络安装程序对仅使用TEXLive一小部分的用户来说非常适宜.
DVD安装程序可以把TEXLive安装到你的本地磁盘上.
你不能直接从TEXCollectionDVD(或者它的.
iso镜像)上运行TEXLive,但你可以在一个USB盘上安装一套可以运行的版本(参见4.
2).
安装方法将在下面的章节介绍(p.
7),这里提供一个快速入门:安装脚本的名称是install-tl.
它可以在指定了-gui选项的情况下以"GUI"模式(Windows和MacOSX下的默认模式)工作,或指定-gui=text选项以文本模式(其它系统下默认模式)工作.
在Unix平台上如果安装了Perl/Tk,以前的Perl/Tk和向导模式还可以通过-gui=perltk选项启用.
关于Windows下的使用参见3.
1.
3一节.
安装完成后可以得到一个名为tlmgr的程序:'TEXLiveManager'.
和安装程序一样,它可以在GUI模式或文本模式下运行.
你不但可以用它来安装或卸载软件包,还可以用来完成各种配置工作.
1.
4关于安全的考虑尽我们所知,核心的TEX程序本身是(而且一直是)非常健壮的.
但是尽管大家都做了最大的努力,TEXLive中大家贡献的程序不一定能达到同样的程度.
所以,在运行程序的输入来自未经信任的来源时,你应该一直保持警惕;为了增加安全性,在一个单独的子目录或者chroot环境下执行程序.
最需要小心的系统是Windows,因为通常Windows首先使用当前目录下的程序,然后再寻找其他搜索路径下的目录.
这给许多可能的攻击带来了方便.
我们已经堵住了很多漏洞,但毫无疑问的是有些漏洞依然存在,尤其是存在于第三方程序中.
因此,我们建议检查当前目录下的可疑文件,尤其是可执行文件(二进制文件或者脚本).
一般他们不应该存在,而且更不应该在处理文档时生成.

最后,TEX(及其相关程序)在处理文档时是可以写文件的,这个功能可以被各种方式滥用.
所以我们再一次强调最保险的是在新的子目录下处理未知的文档.
安全的另一个方面是保证下载的内容与内容创建时一致.
如果安装了gpg(GNUPrivacyGuard)程序,tlmgr程序(第5节)会自动对现在内容进行加密验证.
gpg不和TEXLive一起分发,但可以参见https://texlive.
info/tlgpg/了解更多信息.
1.
5获得帮助TEX社群是活跃而友好的,几乎所有认真的提问都能得到回答.
尽管如此,这种由志愿者和业余用户组成的技术支持仍然显得不太正式,所以,在提问前最好做好功课.
(如果你更喜欢有保障的商业性技术支持,可以放弃TEXLive,改为购买商业TEX系统,在https://tug.
org/interest.
html#vendors上有一份销售商的列表.
)按照推荐使用的顺序,我们列出了这样一份资源列表:起步如果你刚刚接触TEX,https://tug.
org/begin.
html这个网页提供了这个系统的简短介绍.
TEXFAQ这套庞大的TEXFAQ对各种各样的问题——从最基础到最晦涩的——都给予了简明的回答,它在TEXLive的texmf-dist/doc/generic/FAQ-en/,也可以在https://texfaq.
org网站上找到.
有问题时请先看看这里能否找到解答.
TEXCatalogue如果你在寻找某个特定的宏包、字体、程序等等,TEXCatalogue就是你首先该找的地方.
这里是所有TEX相关内容的一个巨大集合.
参见https://ctan.
org/pkg/catalogue.
TEX网上资源https://tug.
org/interest.
html页面上有许多和TEX相关的链接,包括讨论这个系统方方面面的许多书籍、手册和文章.
支持信息的归档最重要的TEX技术支持论坛是LATEX社区网站http://latex-community.
org/,问答网站https://tex.
stackexchange.
com,Usenet的新闻组news:comp.
text.
tex和邮件列表texhax@tug.
org.
它们的内容归档中有多年以来的提问和回答供你搜索.
最后两种你可以用http://groups.
google.
com/groupsgroup=comp.
text.
tex和https://tug.
org/mail-archives/texhax进行查询.
当然,一般性的搜索方式也没有坏处.
2TEXLIVE概览5提问如果你还是找不到答案,可以在https://latex.
org和https://tex.
stackexchange.
com/网站上提问,通过Google或者你的新闻组阅读器在comp.
text.
tex上提问,或者发送邮件到texhax@tug.
org.
不过,在提问之前请先阅读FAQ上的这一条:https://texfaq.
org/FAQ-askquestion,它能提高你获得回答的可能性.
TEXLive技术支持如果你需要报告bug,或者提出对TEXLive的发行、安装或文档的建议和意见,可以使用tex-live@tug.
org这个邮件列表.
不过,如果问题是针对TEXLive中包含的某个特定程序,那最好还是写信给这个程序的维护者或邮件列表.
用--help参数来运行程序都一般能得到用来报告其bug的地址.
另一方面,你也不妨帮助其他有问题的朋友,所有以上资源都是对所有人开放的,请尽管参与进去,在你能力所及的范围内提供帮助.
2TEXLive概览这个小节描述的是TEXLive的内容,以及包含TEXLive的TEXCollection.
2.
1TEXCollection:TEXLive,proTEXt,MacTEXTEXCollection的DVD包含了以下内容:TEXLive是一个完整的TEX系统,它可以安装在本地磁盘上.
主页:https://tug.
org/texlive/.
MacTEX在TEXLive的基础上增加了原生的MacOSX(目前Apple把它称作macOS,但在这份文档中我们还沿用它的旧名字)的安装程序和一些其它的Mac应用程序.
它的主页在https://tug.
org/mactex/.
proTEXt是Windows下的MiKTEX发行版的一个增强版本.
proTEXt在MiKTEX基础上增加了一些工具,简化了安装.
它完全独立于TEXLive,有其自己的安装步骤.
主页:https://tug.
org/protext.
CTAN一份CTAN仓库的快照(https://ctan.
org/).
CTAN和protext并不一定遵循TEXLive的版权协议,因此在分发或修改时要格外地小心.
2.
2TEXLive的顶层目录这里是TEXLive发行版顶层目录的一个简短的列表和描述.
binTEX系统程序,按平台组织.
readme.
html网页,提供了多种语言的简介和有用的链接.
readme-*.
dirTEXLive多种语言的简介和有用的链接,同时有HTML和纯文本版本.
source所有程序的源代码,包括主要的基于Web2C的TEX发行版.
texmf-dist最主要的文件树,见下文的TEXMFDIST.
tlpkg用来维护安装程序所用到的脚本,程序和数据,以及对Windows的特殊支持.
至于文档,顶层目录下的doc.
html文件中提供的完整的链接会有帮助.
几乎所有内容的文档(宏包、格式文件、字体、程序手册,manpage,Info文件等)在texmf-dist/doc目录下,因为这些程序本身是属于texmf目录的.
TEX宏包与格式文件的文档则放在texmf-dist/doc目录.
但不管放在哪个地方,你都可以使用texdoc程序来寻找这些文档.
TEXLive本身的文档在texmf-dist/doc/texlive目录下,有以下这些语言的版本:捷克/斯洛伐克语:texmf-dist/doc/texlive/texlive-cz德语:texmf-dist/doc/texlive/texlive-de英语:texmf-dist/doc/texlive/texlive-en2TEXLIVE概览6法语:texmf-dist/doc/texlive/texlive-fr意大利语:texmf-dist/doc/texlive/texlive-it日语:texmf-dist/doc/texlive/texlive-ja波兰语:texmf-dist/doc/texlive/texlive-pl俄语:texmf-dist/doc/texlive/texlive-ru塞尔维亚语:texmf-dist/doc/texlive/texlive-sr简体中文:texmf-dist/doc/texlive/texlive-zh-cn2.
3预定义的texmf目录树概览本小节列出了系统中用于指定texmf目录的所有预定义变量及其用途,以及TEXLive的默认布局.
tlmgrconf命令可以列出这些变量的值,这样你可以很容易找到它们和你所安装到的目录名称的对应关系.
所有这些目录树,包括个人的,都应该遵循TEX目录结构(TDS,https://tug.
org/tds),包括其中所有细小的子目录,否则文件就可能找不到.
第3.
4.
6节(第16页)有更详细的介绍.
这里描述的顺序和搜索的优先级相反,也就是说,列在更靠后的目录树会被更优先搜索.

TEXMFDIST这个目录树包含几乎所有原有发行版本的文件——配置文件、脚本、宏包、字体等等.
唯一的例外是每个平台的可执行文件,存储在与它同级的bin/目录下.
TEXMFSYSVAR给texconfig-sys、updmap-sys和fmtutil-sys还有tlmgr这几个命令存储、缓存运行时使用的格式文件和生成的map文件,对整个系统都有效.
TEXMFSYSCONFIG给texconfig-sys、updmap-sys和fmtutil-sys这些程序存储修改过的全局文件.
TEXMFLOCAL系统管理员用来安装供整个系统使用的额外的或更新过的宏包、字体的目录.

TEXMFHOME给用户存放它们自己独立安装的的宏包、字体等等.
这个变量根据不同的用户选择不同的主目录.
TEXMFVAR这个目录是给texconfig、updmap-user和fmtutil-user存储(缓存)格式文件、生成map文件这类运行时个人数据的.
TEXMFCONFIG给texconfig、updmap-sys、和fmtutil-sys这些程序存储个人修改过的配置文件.
TEXMFCACHEConTEXtMkIV和LuaLATEX用来保存(缓存的)运行时数据的目录树;缺省为TEXMFSYSVAR,如果该目录不可写,则使用TEXMFVAR.
默认的目录结构:全系统根目录可以包含多个TEXLive版本:(在Unix下默认是/usr/local/texlive)2019上一个版本.
2020当前版本.
bini386-linuxGNU/Linux二进制文件(32位).
.
.
x86_64-darwinMacOSX二进制文件x86_64-linuxGNU/Linux二进制文件(64位)win32Windows二进制文件texmf-distTEXMFDIST和TEXMFMAINtexmf-varTEXMFSYSVAR,TEXMFCACHEtexmf-configTEXMFSYSCONFIGtexmf-localTEXMFLOCAL用来存放在不同版本间共享的数据.
用户主(home)目录($HOME或%USERPROFILE%).
texlive2019给上个版本的,个人生成和配置的数据.
.
texlive2020给这个版本的,个人生成和配置的数据.
texmf-varTEXMFVAR,TEXMFCACHEtexmf-configTEXMFCONFIGtexmfTEXMFHOME个人的宏包文件,等等.
等等.
3安装72.
4TEX的扩展版本原始的KnuthTEX本身的开发已经冻结了,仅仅修改除去发现的极其少量的错误.
它在TEXLive中仍然作为tex程序出现,在可见的未来也仍然如此.
TEXLive包括了一些建立在TEX基础上的扩展程序(也称为TEX引擎):ε-TEX为TEX增加了一套新的原语(primitive).
(包括宏展开,字符扫描,mark的分类,额外的调试功能,等等)以及用于双向排版的TEX--XET扩展模式.
在默认模式下,ε-TEX是与原始的TEX100%兼容的.
参见texmf-dist/doc/etex/base/etex_man.
pdf.
pdfTEX在ε-TEX扩展的基础上构建,在DVI输出之外增加对PDF输出的支持,以及许多其他的扩展.
这是针对etex,latex或pdflatex这些格式使用的缺省程序.
它的主页在http://www.
pdftex.
org/,文档在texmf-dist/doc/pdftex/manual/pdftex-a.
pdf.
可以在texmf-dist/doc/pdftex/samplepdftex/samplepdf.
tex找到展示部分功能的例子.
LuaTEX是pdfTEX指定的后继者,而且对pdfTEX保持大部分(但不是完全地)向下兼容.
它也希望包含Aleph(见后)的功能,尽管未必能完美兼容.
它内置的Lua语言解释器(https://lua.
org)为许多棘手的TEX问题提供了优雅的解决方案.
当以texlua命令执行时,它就像一个标准的Lua解释器一样工作,所以,LuaTEX在TEXLive中也被作为Lua程序的解释器.
见http://www.
luatex.
org和texmf-dist/doc/luatex/luatex.
pdf.
XeTEX通过第三方库,增加对Unicode输入文本和OpenType字体的支持,能够直接使用系统字体.
参见https://tug.
org/xetex.
(Omega)基于Unicode(16位字符集),因而同时支持处理世界上几乎所有的语言.
它同时还支持所谓的'TranslationProcesses'(OTP),用于对任意输入进行复杂的变换操作.
Omega现在已经不作为单独的程序出现在TEXLive中了;改为只支持Aleph:Aleph将与ε-TEX扩展合并到一起得到的.
参见texmf-dist/doc/aleph/base.
2.
5TEXLive中其他值得一提的程序这里是在TEXLive中其他的一些常用程序:bibtex,biber参考文献支持.
makeindex,xindy索引支持.
dvips将DVI转换为PostScript.
xdviXWindowSystem下的DVI阅读器.
dviconcat,dviselect从DVI文件中复制和粘贴页面.
dvipdfmx将DVI转换为PDF,是(前面提到过的)pdfTEX的一套替换方案.
psselect,psnup,…PostScript实用程序.
pdfjam,pdfjoin,…PDF实用程序.
context,mtxrunConTEXt和PDF处理工具.
htlatex,…tex4ht:(LA)TEX到HTML(还有XML等其他格式)的转换器.
3安装3.
1启动安装程序首先请找来一张TEXCollection的DVD,或者下载TEXLive的网络安装程序.
参见https://tug.
org/texlive/acquire.
html以了解更多关于获得这个软件的信息和方法.
网络安装程序,.
zip或.
tar.
gz格式:在CTAN的systems/texlive/tlnet目录下可以下载,http://mirror.
ctan.
org/systems/texlive/tlnet这个地址应该能将你导向一个附近的、保持更新的镜像.
你可以下载同时支持Unix和Windows的install-tl.
zip或者小得多、但只支持Unix的install-unx.
tar.
gz.
解压后,install-tl和install-tl-windows.
bat就会出现在install-tl子目录中.
3安装8图1:第一阶段的Windows.
exe安装程序网络安装程序,Windows.
exe:和上述一样从CTAN下载,然后双击.
它会作为第一阶段的安装程序和解压工具启动;见图1.
它提供了两个选项:"Install"和"Unpackonly".
TEXCollectionDVD:打开DVD的texlive这个子目录.
在Windows下安装程序通常在插入DVD后就自动启动了.
要获得DVD的话可以加入一个TEX用户组织(推荐这么做,参见https://tug.
org/usergroups.
html)或是单独购买(通过https://tug.
org/store),又或者是自己从ISO镜像刻录.
在多数系统里你都可以直接挂载这个ISO.
在从DVD或者ISO安装后,如果还希望从Internet获得持续的更新,请看第3.
4.
3节.
不管从哪里载入,执行的都是同一个安装程序.
两者最明显的区别是通过网络安装得到的当前可用的程序包.
这和和DVD或者ISO镜像在主版本之间不能更新不同.
如果你需要用代理服务器来下载,Wget的代理服务器设置可以使用~/.
wgetrc文件或者环境变量来指定(https://www.
gnu.
org/software/wget/manual/html_node/Proxies.
html),或者你使用的下载工具对应的配置文件.
如果你是从DVD或者ISO镜像来安装就没有关系了.
下面的章节介绍更详细地介绍了安装程序的启动.
3.
1.
1Unixinstall-tl是一个Perl脚本.
在Unix兼容的系统下启动它最简单的方法是这样的:>perl/path/to/installer/install-tl(你也许可以直接运行/path/to/installer/install-tl如果这个文件有可执行属性,或者先cd到这个目录中,等等.
我们不会把所有这些执行方法列出来.
)你可能需要扩大终端窗口的大小才能在一屏内显示完整的文本安装程序界面(图2).
要在GUI模式下安装(见图4),你需要安装Tcl/Tk.
所以你可以运行:>perlinstall-tl-gui原有的wizard和perltk/expert选项仍然存在.
它们需要加入了XFT支持的Perl::TK模块,GNU/Linux下通常都是这样,但其他系统下可能不是.
要列出所有这些选项:>perlinstall-tl-help关于Unix下的权限:在安装过程中,TEXLive安装程序将会遵照你的umask行事.
所以如果你需要让你的安装能给其他用户使用,就必须保证你设置的权限足够,比如umask002.
更多关于umask的信息请参见你自己系统的文档.
关于Cygwin的特殊考虑:和其他Unix兼容系统不同,Cygwin并没有包含所有运行TEXLive安装程序所必须的程序,见第3.
1.
4节.
3安装93.
1.
2MacOSX如第2.
1节提到的,我们给MacOSX准备了一套独立的发行版,叫做MacTEX(https://tug.
org/mactex).
我们推荐使用原生的MacTEX安装程序,而不是TEXLive自带的那个,因为原生的安装程序做了一些针对Mac的调整,尤其是使用TEXDist数据结构方便在MacOSX下的多个TEX发行版(MacTEX,Fink,MacPorts,…)之间切换.
MacTEX是严格依赖TEXLive构建的,所以主TEX树和二进制文件也是完全一致的.
不过它添加了一些用来存放Mac专有文档和程序的目录.
3.
1.
3Windows如果你使用的是下载zip解压后的目录,又或者DVD安装程序无法自动启动了,请双击install-tl-windows.
bat.
你也可以从命令行提示符下启动安装程序.
下面>表示的就是提示符,用户输入用bold体表示.
如果你正在安装程序目录下,只需要运行:>install-tl-windows或者你也可以通过绝对路径来运行,比如:>D:\texlive\install-tl-windows这是对TEXCollectionDVD而言的,假定D:是光驱.
图3展示了GUI安装程序的初始基本屏幕,它是Windows下的默认形式.
要在文本模式下安装,使用:>install-tl-windows-no-gui要列出所有可用的选项:>install-tl-windows-help3.
1.
4Cygwin在开始安装之前,请先使用Cygwin的setup.
exe程序安装perl和wget软件包,如果你还没装过.
此外还推荐安装下列软件包:fontconfig[XeTEX和LuaTEX需要]ghostscript[各种实用工具需要]libXaw7[xdvi需要]ncurses[给安装程序提供clear命令]3.
1.
5文本界面安装程序图2展示了Unix下文本模式的主界面,这是Unix下安装程序的默认界面.
这是一个完全用命令行操作的安装程序,完全不支持光标移动.
所以你无法在多选框或者输入框之间用Tab上下切换,只能在提示符下输入特定的字符(大小写敏感的)然后按下Enter,整个终端窗口就会把新的内容刷新出来.
文本安装程序之所以这么简陋是因为它要尽可能支持最多的平台,就算只有一个Perl的系统也能运行它.
3.
1.
6图形界面安装程序默认的图形界面安装程序的初始界面很简单,只有几个选项;见图3.
它可以这样启动:>install-tl-gui按下Advanced按钮可以获得文本界面安装程序大部分的选项;见图4.
3安装10InstallingTeXLive2020from:.
.
.
Platform:x86_64-linux=>'GNU/Linuxonx86_64'Distribution:inst(compressed)Directoryfortemporaryfiles:/tmp.
.
.
Detectedplatform:GNU/LinuxonIntelx86_64platforms:1outof16Setinstallationscheme:scheme-fullcustomizinginstallationcollections40collectionsoutof41,diskspacerequired:6536MBdirectories:TEXDIR(themainTeXdirectory):/usr/local/texlive/2020.
.
.
options:.
.
.
setupforportableinstallationActions:startinstallationtoharddisksaveinstallationprofileto'texlive.
profile'andexithelpquit图2:文本安装程序主界面(GNU/Linux)图3:基本安装界面(Windows);Advanced按钮会提供类似图4的界面3.
1.
7旧版本安装程序安装了Perl/Tk的系统仍然可以使用perltk/expert和wizard模式.
它们可以分别使用-gui=perltk和-gui=wizard选项启动.
3.
2执行安装程序安装程序应该不需要文档就足够明确,但下面还是对这些选项和子菜单作一点说明.

3安装11图4:高级GUI安装界面(GNU/Linux)Availableplatforms:a[]CygwinonIntelx86(i386-cygwin)b[]Cygwinonx86_64(x86_64-cygwin)c[]MacOSXcurrent(10.
13-)onx86_64(x86_64-darwin)d[]MacOSXlegacy(10.
6-)onx86_64(x86_64-darwinlegacy)e[]FreeBSDonx86_64(amd64-freebsd)f[]FreeBSDonIntelx86(i386-freebsd)g[]GNU/LinuxonARM64(aarch64-linux)h[]GNU/LinuxonARMv6/RPi(armhf-linux)i[]GNU/LinuxonIntelx86(i386-linux)j[X]GNU/Linuxonx86_64(x86_64-linux)k[]GNU/Linuxonx86_64withmusl(x86_64-linuxmusl)l[]NetBSDonx86_64(amd64-netbsd)m[]NetBSDonIntelx86(i386-netbsd)o[]SolarisonIntelx86(i386-solaris)p[]Solarisonx86_64(x86_64-solaris)s[]Windows(win32)图5:Binaries(二进制程序)菜单3.
2.
1二进制系统菜单(只对Unix适用)图5展示了文本模式下的binaries(二进制程序)菜单.
默认情况下只会安装你当前平台下的二进制程序.
在这个菜单下,你可以选择安装其他平台的二进制程序.
这对你要将TEX树共享在异构网络上的情况比较有用,又或者用于双启动的系统.
3.
2.
2选择要安装的组件图6展示了TEXLive的安装方案菜单;从这里你选择的是一套"安装方案",也就是对软件包集合的一个统一划分.
默认的full方案会把所有可用的都装上.
这是推荐方案,不过你也可以选择basic3安装12Selectscheme:a[X]fullscheme(everything)b[]mediumscheme(small+morepackagesandlanguages)c[]smallscheme(basic+xetex,metapost,afewlanguages)d[]basicscheme(plainandlatex)e[]minimalscheme(plainonly)f[]ConTeXtschemeg[]GUSTTeXLiveschemeh[]infrastructure-onlyscheme(noTeXatall)i[]teTeXscheme(morethanmedium,butnowherenearfull)j[]customselectionofcollections图6:Scheme(安装方案)菜单图7:Collections(集合)菜单方案来只获得plain和LATEX,small获得比那稍微多一点程序(相当于MacTEX中的BasicTEX安装),为测试选用minimal方案,又或者是介乎其间的medium或teTeX方案.
还有许多特殊或者专门针对特定国家的方案.
你可以使用'collections'菜单来详细选择安装方案.
(图7显示了GUI模式下修改的情况.
)Collection(安装集合)是比scheme(方案)要更细的一层—实际上一个方案包含了多个集合,而一个集合又包含了一到多个软件包,然后每个软件包(TEXLive中最小的组织单位)则包含了实际的TEX宏文件,字体文件,等等.
如果你觉得collection菜单对安装控制还不够细,可以在安装后使用TEXLiveManager(tlmgr)程序(参见第5节),它能在软件包一层控制安装.
3.
2.
3目录缺省的目录布局在第2.
3节有过叙述,见第6页.
在Unix下默认的安装目录是/usr/local/texlive/2020而Windows下是%SystemDrive%\texlive\2020.
这样的安排允许你有多个并行存在的TEXLive安装,每年的发行版本一个,你可以通过修改搜索路径来在它们中间切换.

这个安装路径可以通过设置安装程序中的TEXDIR来修改.
这个选项和其他选项如图4所示.
最常见的更改它的原因要么是该分区没有足够的空间(完整的TEXLive安装需要好几GB的空间),要么是没有默认位置的写权限.
(虽然要安装TEXLive不需要是管理员或者root用户,但你至少得对安装的目的目录有写权限.
)你也可以通过在运行安装程序以前修改特定的环境变量来改变安装目录,最常见的是TEXLIVE_INSTALL_PREFIX或者TEXLIVE_INSTALL_TEXDIR,参见install-tl--help的文档(https://tug.
org/texlive/doc/install-tl.
html有在线版本)以了解完整的列表和更多的信息.
一个合理的选择是你自己主目录下的一个子目录,尤其在只有你一个人使用的时候.
使用'~'来表示主目录,比如'~/texlive/2020'.
3安装13我们建议在目录名称中保留年份,这样可以让你保留多个不同版本的TEXLive.
(你可能希望还维护一个类似/usr/local/texlive-cur这样的名字作为指向当前版本的符号链接,这样的目录名就和版本无关了,你只要在新版本出来直接重新指向符号链接即可.
)在安装程序中修改TEXDIR之后还会同时修改TEXMFLOCAL,TEXMFSYSVAR和TEXMFSYSCONFIG.
TEXMFHOME是推荐用来存放个人宏文件和软件包的目录.
其缺省值是~/texmf(Mac下是~/Library/texmf).
与TEXDIR不同,其中包含的~会被不加转换地写进配置文件,因为它能在TEX系统运行时自动被替换为每个用户自己的主目录.
在Unix它会被展开为$HOME,而Windows下展开为%USERPROFILE%.
多加一句:TEXMFHOME和所有的目录树一样,都必须按照TDS组织,否则文件可能会找不到.
TEXMFVAR是用来给每个用户存储大多数运行时缓存数据的.
TEXMFCACHE则是给LuaLATEX和ConTEXtMkIV存储缓存(见第16页的3.
4.
5节);它的默认值是TEXMFSYSVAR,或者如果TEXMFVAR,如果这个目录可以写.
3.
2.
4选项Optionscustomization:uselettersizeinsteadofA4bydefault:[]executionofrestrictedlistofprograms:[X]createallformatfiles:[X]installfont/macrodoctree:[X]installfont/macrosourcetree:[X]createsymlinksinstandarddirectories:[]binariesto:manpagesto:infoto:afterinstall,setCTANassourceforpackageupdates:[X]图8:Options菜单(Unix)图8显示了文本模式的选项菜单.
关于这个菜单的每个选项:uselettersizeinsteadofA4bydefault:缺省的纸张大小选择.
当然如果需要,每份文档都可以并且应该单独设定一个纸张大小.
executionofrestrictedlistofprograms:在TEXLive2010中,默认允许执行一些外部程序.
这(很少的一部分)允许的程序列表在texmf.
cnf中定义.
参见2010版新闻(第9.
1.
7节)以了解更多信息.
createallformatfiles:虽然创建不必要的格式文件会浪费一点时间,也会多占一些磁盘空间,但我们还是建议现在保持这个选项的选定状态,因为如果这次不生成,下次用到的时候格式文件就会在用户个人的TEXMFVAR目录树内生成.
这样每次二进制文件或者断字模式更新的时候,这些格式文件也得不到更新,所以可能会导致它们的不兼容.
installfont/macro…tree:下载安装大部分宏包中的文档和源代码文件.
建议选择.
createsymlinksinstandarddirectories:这个选项(只对Unix有效的)可以省下设定环境变量的步骤.
如果没有选择它,就必须把TEXLive的对应目录添加到PATH,MANPATH和INFOPATH中.
如果要创建符号链接,你需要对这些目标目录的写权限.
这个选项是为了在用户已知的标准目录中创建符号链接设计的,比如/usr/local/bin,这些目录并不包含任何TEX文件.
不要用这个选项来覆盖系统中现有的文件,比如给它指定系统目录.
最保险和推荐的做法还是不要选择这个选项.
afterinstall,setCTANassourceforpackageupdates:从DVD安装时,这个选项被缺省启用,因为通常你会希望在此后通过CTAN安装一年内更新的软件包.
禁用它唯一可能的原因是你只安装了DVD内容的一部分,计划在以后扩展安装.
无论如何,安装程序时和安装后的更新的软件包仓库如果需要可以分别设置,见第3.
3.
1节和第3.
4.
3节.
Windows专有的选项,在高级Perl/Tk界面中显示有:adjustPATHsettinginregistry保证所有程序都可以在它们的搜索路径中找到TEXLive程序目录.
3安装14addmenushortcuts如果选择了,它会在开始菜单中创建一个TEXLive子菜单.
除了'TeXLivemenu'和'Noshortcuts'之外,还有'Launcherentry'这个选项.
这个选项在第4.
1节有详细叙述.
changefileassociationsTheoptionsare'Onlynew'(createfileassociations,butdonotoverwriteexistingones),'All'and'None'.
installTEXworksfrontend如果所有的设置已经齐备,你就可以在文本界面中按下'I',或者图形界面中按下'InstallTeXLive'按钮来开始安装了.
安装完成后,你可以跳至第3.
4节来了解还需要做些什么工作.
3.
3install-tl命令行选项输入>install-tl-help可以列出所有的命令行参数.
你既可以用-也可以用--来指定一个参数.
这里有些比较常见的:-gui尽可能用GUI模式的安装程序.
它需要Tcl/Tk版本8.
5以上.
在MacOSX上和TEXLive的Windows分发中已经满足这个条件了.
原有的-gui=perltk和-gui=wizard选项需要安装了编译进XFT支持的Perl/Tk模块(https://tug.
org/texlive/distro.
html#perltk);如果找不到Perl/Tk,安装程序就会在文本模式下出现.
-no-gui强制使用文本模式安装程序.
-langLL指定安装程序界面的语言,使用标准的(通常是两个两个字符)语言代码.
安装程序会尝试自己判断出合适的语言,如果判断出的语言没有支持就会使用英语替代.
可以运行install-tl--help获得支持的语言列表.
-portable为比如USB盘上便携使用安装.
也可以在文本安装程序中用V命令选择,或者GUI安装程序中选择,参见第4.
2节.
-profileprofile载入安装配置文件file以不需要用户干预的方式完成安装.
安装程序会在安装到的tlpkg子目录中创建一个叫texlive.
profile的文件.
这个文件可以用作参数,在不同的系统下完成完全一致的安装.
或者你也可以使用一个定制的配置文件,一般通过裁剪生成的文件得到,或者空文件,这样安装时会使用所有缺省值.
-repositoryurl-or-directory指定作为来源的软件包仓库,参见下文.
-in-place(补充说明:除非你清楚自己要做什么,否则不要使用这个选项.
)如果你已经有一份用rsync,svn,或者其他方式安装的TEXLive(参见https://tug.
org/texlive/acquire-mirror.
html)那这个选项会使用现有的,只执行必要的安装后操作.
注意tlpkg/texlive.
tlpdb文件会被覆盖,你需要自己备份它.
另外,文件的删除必须手动完成.
所以只在你知道自己在干什么的情况下才用它.
这个选项不能在安装程序界面中选择.
3.
3.
1-repository参数默认的网络软件包安装位置是由http://mirror.
ctan.
org自动选择的CTAN镜像.
如果你需要自己指定,地址可以是以ftp:,http:或file:/起始的URL,或者本地路径.
(如果给定了一个http:或ftp:地址,其末尾的'/'字符和末尾的'/tlpkg'这段都会被忽略.
)比如你可以选择这样的一个CTAN镜像:http://ctan.
example.
org/tex-archive/systems/texlive/tlnet/,当然你应该把ctan.
example.
org/tex-archive替换为具体镜像的域名和特定的顶层CTAN路径(https://ctan.
org/mirrors)维护了一个CTAN的镜像列表).
如果给定的地址在本地磁盘上(或者是路径或者是file:/开头的URL),就会使用指定路径下archive子目录中的压缩文件进行安装.
3.
4安装后的操作安装后可能需要一些额外的操作.
3安装153.
4.
1Unix下的环境变量如果你选择了在标准路径下创建符号连接(在第3.
2.
4节提到),那就不需要设置环境变量了.
否则,在Unix系统中,你应该将自己使用的平台下二进制程序的目录加入搜索路径中.
(在Windows下安装程序会负责这一步.
)每个支持的平台都在TEXDIR/bin下有自己的子目录.
参见图5以了解所有的这些子目录和它们对应的平台.
如果希望man和info能够找到,你还可以把文档的man和Info目录加入其对应的搜索路径中.
在添加PATH后,手册页页可以被自动找到.
对于bash这样的Bourne兼容shell而言,以Intelx86下的GNU/Linux、默认的目录设置为例,需要修改的文件是$HOME/.
profile(或者其他由.
profile载入的文件),应该添加的内容应该类似这样:PATH=/usr/local/texlive/2020/bin/i386-linux:$PATH;exportPATHMANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATH;exportMANPATHINFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH;exportINFOPATH对于csh或者tcsh,需要修改的文件通常是$HOME/.
cshrc,而应该添加的内容类似:setenvPATH/usr/local/texlive/2020/bin/i386-linux:$PATHsetenvMANPATH/usr/local/texlive/2020/texmf-dist/doc/man:$MANPATHsetenvINFOPATH/usr/local/texlive/2020/texmf-dist/doc/info:$INFOPATH如果你已经在你的配置文件里写过了这样的路径设置,那就只需要把TEXLive的这些目录加进去就行了.
3.
4.
2环境变量的全局配置如果你希望在整个系统范围内修改这些变量,或这样系统新增的用户自动继承这些变量,就得自寻方法了,因为不同的系统之间这方面的配置差异太大.
我们的建议是:1)你可能应该看看/etc/manpath.
config这个文件是否存在,如果有的话,添加下面这样的内容:MANPATH_MAP/usr/local/texlive/2020/bin/i386-linux\/usr/local/texlive/2020/texmf-dist/doc/man然后2)检查/etc/environment是否定义了默认的搜索路径和其他的默认环境变量.
在每个(Unix)二进制目录下,我们都会创建一个man符号链接到texmf-dist/doc/man目录.
因为有些man程序,比如MacOSX标准的man就能够自动通过这个链接找到对应的手册页,这样你就不必手工设置手册页路径了.
3.
4.
3DVD安装后的网络更新如果你从DVD安装了TEXLive并希望从网络获取更新,需要在更新了搜索路径(如上一节所述)之后执行这个命令:>tlmgroptionrepositoryhttp://mirror.
ctan.
org/systems/texlive/tlnet这告诉tlmgr从就近的CTAN镜像获取未来更新.
从DVD安装时会默认完成这一步,通过第3.
2.
4节介绍的选项.
如果自动镜像选择出现了问题,你可以从https://ctan.
org/mirrors列表中自己指定一个CTAN镜像.
使用与上述一致的tlnet子目录路径.
3安装163.
4.
4XeTEX和LuaTEX的系统字体配置XeTEX和LuaTEX可以使用任何系统安装的字体,而不只是TEX目录树中的那些.
它们使用类似但不完全一致的方式实现这一功能.
在Windows下TEXLive提供的字体会自动为XeTEX所用,只要通过字体名称就可以了.
在MacOSX下如果需要按字体名称查找则需要额外的步骤,参见MacTEX网页(https://tug.
org/mactex).
如果你在其他Unix系统中安装了xetex软件包,需要把系统按如下配置一番XeTEX才能找到随TEXLive安装的那些字体.
为了进行配置,xetex安装后(不管是初始安装还是后来安装的)都会在TEXMFSYSVAR/fonts/conf/texlive-fontconfig.
conf创建一个必需的配置文件.
要在整个系统中使用TEXLive的字体(假定你有足够的权限),请依照下面的步骤来做:1.
将texlive-fontconfig.
conf文件复制到/etc/fonts/conf.
d/09-texlive.
conf.
2.
运行fc-cache-fsv.
如果你没有足够的权限执行上述操作,或者只需要把TEXLive字体提供给你自己,可以这么做:1.
将texlive-fontconfig.
conf文件复制到~/.
fonts.
conf,其中~是你的主目录.
2.
运行fc-cache-fv.
你可以运行fc-list来查看系统字体的名称.
命令fc-list:familystylefilespacing可以列出一些有趣的信息.
3.
4.
5ConTEXtMarkIV"旧"的ConTEXt(MarkII)和"新的"ConTEXt(MarkIV)应该在TEXLive安装后直接就能运行,而且只要你一直用tlmgr来更新,它不应该需要任何其他的处理.
然而,因为ConTEXtMkIV没有使用kpathsea库,在你手动安装文件(没使用tlmgr)后必须执行一定的设置.
在每次安装后,每个MkIV用户必须执行:context--generate来刷新ConTEXt磁盘缓存数据.
生成的文件会被保存在TEXMFCACHE目录下,在TEXLive中这个目录的默认值是TEXMFSYSVAR;TEXMFVAR.
ConTEXtMkIV会读取TEXMFCACHE提到的所有路径,并写入第一个可写东风路径.
在读取时,最后找到的匹配会被优先选择.
要了解更多信息,参见https://wiki.
contextgarden.
net/Running_Mark_IV.
3.
4.
6集成本地与个人宏文件这在第2.
3节已经顺带提到过了:TEXMFLOCAL目录(它的默认值是/usr/local/texlive/texmf-local或者Windows下的%SystemDrive%\texlive\texmf-local)这个目录就是为了存储面向整个系统的本地字体和宏文件的;而TEXMFHOME目录(其默认值是$HOME/texmf或者%USERPROFILE%\texmf),则是用来存储个人的字体和宏文件的.
这些目录应该在各个TEXLive版本之间共享,每个版本都能看到其内容.
因此不应该把TEXMFLOCAL改得和主TEXLive目录差别太大,否则新的版本出来你又得再改.
对于这两个目录树而言,文件都应该放到合适的TEX目录结构(TDS)子目录中,参见https://tug.
org/tds或者texmf-dist/web2c/texmf.
cnf文件.
比如一个LATEX文档类或者宏包应该放在TEXMFLOCAL/tex/latex或者TEXMFHOME/tex/latex目录下,要不然就是它们的一个子目录下.
TEXMFLOCAL目录需要一个保持更新的文件名数据库,否则新增的文件就无法找到.
你可以使用mktexlsr命令或者TEXLiveManagerGUI,configuration选项卡中的'Reinitfiledatabase'按钮来刷新它.
默认情况下,这些变量的每一个都定义为所示单独的目录.
这不是一个硬性规定.
如果你需要在某些大的宏包的不同版本直接方便地切换,可以维护多个自己的目录树,这通过把TEXMFHOME设置为目录列表实现,大括号包围,逗号分隔:3安装17TEXMFHOME={/my/dir1,/mydir2,/a/third/dir}第7.
1.
5节进一步介绍了括号展开.
3.
4.
7集成第三方字体不幸的是,这是一个非常混乱的问题.
除非你愿意深入TEX安装的细节,否则请不要涉足这个领域.
TEXLive已经包含了很多字体,所以请先查查.
XeTEX或LuaTEX是可行的替代方案(参见第2.
4节),它们能让你使用操作系统的字体而不必将它安装到TEX中.
如果你非得这么做,参见https://tug.
org/fonts/fontinstall.
html,这是我们对整个过程最好的描述.
3.
5测试安装是否成功在完成TEXLive安装之后,自然你会希望试试看它是否正常工作,好让你在以后能够创建优美的文档和字体.
你可能马上需要的是一个用来编辑文件的前端程序.
TEXLive在Windows下只安装了TEXworks(https://tug.
org/texworks),而MacTEX则安装了TeXShop(https://pages.
uoregon.
edu/koch/texshop.
在其他Unix系统下,由你自己选择编辑器.
当然,存在很多选择,有些在下一小节列出了;还可以参见https://tug.
org/interest.
html#editors.
任何纯文本编辑器都可以,不需要专门为TEX设计的.
这个小节后面给出了一些测试系统是否正常工作的基本步骤.
我们这里使用的是Unix命令,在MacOSX和Windows下你更可能是使用图形界面运行这些测试的,不过其原理并无不同.
1.
首先确认你可以执行tex程序:>tex--versionTeX3.
14159265(TeXLive.
.
.
)Copyright.
.
.
D.
E.
Knuth.
.
.
.
如果返回的结果是'commandnotfound'而非版本和版权信息,或者显示了旧版本的信息,很有可能是因为你没有把正确的bin子目录添加到PATH中.
参见第15页关于设置环境变量的说明.
2.
处理一个基本的LATEX文件:>latexsample2e.
texThisispdfTeX3.
14.
.
.
.
.
.
Outputwrittenonsample2e.
dvi(3pages,7484bytes).
Transcriptwrittenonsample2e.
log.
如果无法找到sample2e.
tex或其他什么文件,很可能是因为旧的环境变量或配置文件影响了判断.
我们建议你重置所有TEX相关的环境变量然后重试.
(你可以让TEX报告具体搜索的路径,以便仔细分析出错的原因.
参见第30页的"调试操作"一节以了解更多信息.
)3.
即时预览结果:>xdvisample2e.
dvi#Unix>dvioutsample2e.
dvi#Windows你应该可以看到在新窗口中出现了一篇介绍LATEX基础的有趣文档.
(如果你刚接触TEX系统,还是值得一读的.
)xdvi需要运行在X窗口系统下才能工作,如果没有运行窗口环境或DISPLAY环境变量设置错误,都会得到'Can'topendisplay'这句错误信息.
4.
创建用于打印或显示的PostScript文件:3安装18>dvipssample2e.
dvi-osample2e.
ps5.
创建PDF文件而非DVI,这里采用直接处理.
tex文件输出PDF的方式:>pdflatexsample2e.
tex6.
预览PDF文件:>gvsample2e.
pdf或:>xpdfsample2e.
pdfgv和xpdf现在都不包含在TEXLive中,你必须单独安装它们.
请分别参阅https://www.
gnu.
org/software/gv和https://www.
xpdfreader.
com.
(还有许多其他的PDF查看器.
)Windows下我们推荐SumatraPDF(https://www.
sumatrapdfreader.
org/free-pdf-reader.
html).
7.
除sample2e.
tex外可能会对你有用的标准测试文件:small2e.
tex比sample2e更为简单的文档,供你在遇到问题时尝试减少输入的内容.
testpage.
tex测试你的打印机是否带有预设的偏移量.
nfssfont.
tex打印一份字体表格(proofsheet)以供测试.
testfont.
tex用plainTEX打印字体表格.
story.
tex最经典的(plain)TEX测试文件.
在执行'texstory.
tex'之后,你还要在*提示符下键入'\bye'.
你可以用与我们处理sample2e.
tex文件时相同的方式来处理这些文件.
8.
如果你安装了xetex包,可以按如下步骤测试它能否访问系统字体:>xetexopentype-info.
texThisisXeTeX,Version3.
14….
.
.
Outputwrittenonopentype-info.
pdf(1page).
Transcriptwrittenonopentype-info.
log.
如果你收到"Invalidfontname'LatinModernRoman/ICU'…"这样的错误信息,就说明需要配置系统才能找到TEXLive自带的字体.
参见第3.
4.
4节.
3.
6其他可下载软件的链接如果你还是个TEX新手,或者在编辑TEX或LATEX文档时需要帮助,请访问https://tug.
org/begin.
html寻找引导性的资源.
这里是一些你可能会考虑安装的其他工具的链接.
Ghostscripthttps://ghostscript.
com/Perlhttps://perl.
org/与CPAN中的补充包,https://cpan.
org/ImageMagickhttps://imagemagick.
org,用于图形处理和转换NetPBMhttp://netpbm.
sourceforge.
net,同样用于图形.
面向TEX的编辑器有很广泛的选择,一般依用户个人的口味而定.
这里按字典序列出了一些(部分是Windows才有的).
GNUEmacs在Windows下也有原生版本,参见https://www.
gnu.
org/software/emacs/emacs.
html.
Emacs的AucTEX包的Windows版本在CTAN提供.
AuCTEX的主页在https://www.
gnu.
org/software/auctex.
SciTE在https://www.
scintilla.
org/SciTE.
html提供.
Texmaker是自由软件,在https://www.
xm1math.
net/texmaker提供.
4特殊安装19TeXstudio是Texmaker的一个fork,引入了额外的功能;https://texstudio.
org.
TeXnicCenter是自由软件,在https://www.
texniccenter.
org提供,也随proTEXt发行版附带.
TeXworks是自由软件,在https://tug.
org/texworks提供,也作为TEXLive的一部分只在Windows被安装.
Vim是自由软件,在https://www.
vim.
org提供.
WinEdt是共享软件,在https://tug.
org/winedt或https://www.
winedt.
com提供.
WinShell在https://www.
winshell.
de提供.
关于这类软件包和程序,https://tug.
org/interest.
html有一份更长的列表.
4特殊安装前面的章节描述了基本的安装过程.
这里我们介绍一些特殊的情形.
4.
1用户共享(或跨机器)安装TEXLive的设计可以使它在同一个网络中的不同的系统间共享.
在标准的目录结构下,不需要配置固定的绝对路径:TEXLive程序所需要的文件都能通过都在这些程序自身的相对路径找到.
你可以在$TEXMFDIST/web2c/texmf.
cnf配置文件中看到实际的处理,它包含了类似下面的内容:TEXMFROOT=$SELFAUTOPARENT.
.
.
TEXMFDIST=$TEXMFROOT/texmf-dist.
.
.
TEXMFLOCAL=$SELFAUTOGRANDPARENT/.
.
/texmf-local这就意味着,其它的系统或用户只需要把TEXLive的可执行文件的位置添加到其系统的搜索路径中就可以使用了.
同理,你也可以先把TEXLive安装在本地,然后再把整个安装目录转移到网络上.
至于Windows,TEXLive包含了一个叫tlaunch的启动程序.
它的主窗口的菜单和按钮包括许多TEX相关功能的程序和文档,还可以通过ini定制.
首次使用时,它会进行一些Windows专有的安装后设置,比如给当前用户修改搜索路径并创建文件关联.
因此,在局域网络中可以访问到TEXLive的工作站只需要启动器的快捷菜单就够了.
参见tlaunch手册(texdoctlaunch,或https://ctan.
org/pkg/tlaunch).
4.
2便携(USB)安装-portable安装程序选项(或者文本安装程序的V命令,或对应的GUI选项)创建的是一套在一个独立路径下完全自包含的TEXLive安装,而跳过系统集成.
你可以在USB盘上创建这样的安装,或者在安装后复制到USB盘上.
要使用这样的便携安装来运行TEX,你必须将对应的二进制目录加入终端的搜索路径,如往常一样.
在Windows下,你可以双击安装根目录下的tl-tray-menu来创建一个临时的启动栏菜单,以选择执行一些常见任务,如这个截图所示:'More…'项目解释了如何定制这个菜单.
5TLMGR:管理你的安装20图9:tlshellGUI,显示了Actions菜单(MacOSX)图10:tlmgr的tlcockpitGUI5tlmgr:管理你的安装TEXLive包含一个叫tlmgr的程序,它可以用来管理安装后的系统.
它的功能包括:列出方案(scheme),集合和安装包;安装、升级、备份、恢复、卸载软件包,并且能自动计算依赖关系;查找和列出软件包以及它们的描述;列出、添加和删除不同平台的可执行文件;改变安装选项,比如纸张大小和源文件位置(参见第3.
3.
1节).
5TLMGR:管理你的安装21图11:旧有的tlmgrGUI模式:按下'Load'后的主窗口tlmgr的功能已经完全覆盖了texconfig原来的功能.
考虑到有人已经习惯了原有的界面,我们仍然发行和维护texconfig,现在但我们建议使用tlmgr.
5.
1tlmgr的GUI界面TEXLive包含多个tlmgr的GUI.
图9展示了tlshell,它是用Tcl/Tk编写的,在Windows和MacOSX下直接就能用.
图10展示了tlcockpit,它需要Java版本8或者更高以及JavaFX.
这两个都是单独的安装包.
tlmgr还有一个原生的GUI模式(见图11):>tlmgr-gui但是GUI扩展需要Perl/Tk,而这个模块已经不再包含在TEXLive的WindowsPerl分发中了.
5.
2tlmgr命令行使用示例在初始安装之后,你可以用下面的命令更新系统:>tlmgrupdate-all6有关WINDOWS平台的说明22如果这太激进了一点,先尝试:>tlmgrupdate-all-dry-run或(产生更少输出):>tlmgrupdate-list下面这个更复杂一点的例子从本地目录添加了一个新的软件包集合,用于XeTEX引擎.
>tlmgr-repository/local/mirror/tlnetinstallcollection-xetex它会产生下面的输出(节略部分):install:collection-xetexinstall:arabxetex.
.
.
install:xetexinstall:xetexconfiginstall:xetex.
i386-linuxrunningpostinstallactionforxetexinstall:xetex-def.
.
.
runningmktexlsrmktexlsr:Updating/usr/local/texlive/2020/texmf-dist/ls-R.
.
.
.
.
.
runningfmtutil-sys--missing.
.
.
Transcriptwrittenonxelatex.
log.
fmtutil:/usr/local/texlive/2020/texmf-var/web2c/xetex/xelatex.
fmtinstalled.
如你所见,tlmgr会安装所有依赖的包,也会处理所有包括刷新文件名数据库和重新生成格式文件在内的所有必要的安装后工作.
上面给XeTEX生成了新的格式文件.
要描述一个包(或者集合、安装方案):>tlmgrshowcollection-latexextra会产生这样的输出:package:collection-latexextracategory:Collectionshortdesc:LaTeXsupplementarypackageslongdesc:Averylargecollectionofadd-onpackagesforLaTeX.
installed:Yesrevision:46963sizes:657941k最后也是最重要的,查阅https://tug.
org/texlive/tlmgr.
html这里的完整文档,或者:>tlmgr-help6有关Windows平台的说明6.
1针对Windows的特征在Windows下,安装程序额外地做了以下一些事情:菜单与快捷方式.
在开始菜单上加入了新的'TEXLive'程序菜单,主要是一些GUI程序(如tlmgr、texdoctk和一些文档的菜单.
文件关联.
如果启用,TeXworks和Dviout会成为它们对应文件类型的默认程序,或者在这些文件类型的"用.
.
.
打开"右键菜单中出现.
6有关WINDOWS平台的说明23位图到eps转换器.
许多位图格式会在它们的"用.
.
.
打开"菜单中获得一个bitmap2eps项目.
Bitmap2eps是一个使用sam2p或bmeps的简单脚本.
自动路径调整.
不需要手动配置步骤.
自动设置环境变量.
不再需要手动的配置步骤.
反安装程序.
安装程序为TEXLive创建了'添加/删除程序'条目.
这与TEXLiveManagerGUI的删除按钮相对应.
对于单用户安装,安装程序会在开始菜单创建卸载项目.
写保护.
对于管理员安装,TEXLive的目录会有写保护,至少在TEXLive被安装到NTFS格式的本地磁盘时是这样的.
另外,另一种方式可以参见tlaunch,在第4.
1节有描述.
6.
2Windows上附加的软件为了使安装更加完整,TEXLive需要支持那些Windows机器上不常见的软件包.
TEXLive提供了以下缺失的部分.
这些程序只在TEXLive的Windows版本中提供.
Perl和Ghostscript.
由于Perl和Ghostscript的重要性,TEXLive提供了这些程序的'隐藏'拷贝.
需要这些软件支持的TEXLive程序知道它们的位置,但它们不会通过环境变量和注册表设置来暴露所在的位置.
它们不是完整的安装版,也不会与任何Perl或Ghostscript系统安装程序冲突.
dviout.
另外安装的还包括一款DVI预览程序dviout.
当你第一次使用dviout预览文件时,因为没有安装屏幕显示字体,它将生成字体.
一段时间后,你所使用的大部分字体都将生成,随后,你将很少再看到生成字体的窗口.
你可以从(强烈推荐的)在线帮助中获得更加详细的信息.
TEXworks.
TEXworks是一个集成了PDF阅读器的TEX编辑器.
命令行工具.
与常见的TEXLive二进制文件一起,还安装了一些常见的Unix命令行工具的Windows移植版本.
它们包括gzip、unzip以及来自于poppler套装中的一些工具(pdfinfo,pdffonts,…).
虽然没有提供Windows版本的PDF阅读器,但有许多替代产品,其中之一是SumatraPDF阅读器,可以从https://sumatrapdfreader.
org/获得.
fc-list、fc-cache,…来自于fontconfig库的这些工具有助于XeTEX处理Windows的系统字体.
你可以使用fc-list来确定传递给经XeTEX扩展后的\font命令的字体名称.
如果需要,首先运行fc-cache更新字体信息.
6.
3UserProfile目录相当于主目录Windows下对应于Unix下的主目录的是%USERPROFILE%.
在WindowsVista和以后的系统下,它通常位于C:\DocumentsandSettings\;在WindowsVista和之后的版本下是C:\Users\.
通常情况下,在texmf.
cnf文件和Kpathsea中,~在Windows和Unix下均可以进行合适的展开.
6.
4Windows注册表Windows将几乎所有的配置数据存放在注册表中.
注册表是包含几个主支的一系列分层组织的分支.
对于安装的程序而言,最重要的主支是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE,通常简写为HKCU和HKLM.
注册表的HKCU部分位于用户的主目录(参见6.
3节).
HKLM通常位于Windows目录的子目录中.
在某些情况下,系统信息可以从环境变量获得,但对于其它信息,如快捷方式的位置,则需要访问注册表.
设置永久环境变量也需要访问注册表.
7WEB2C用户指南246.
5Windows权限在较新的Windows版本中,普通用户与管理员是有区别的.
只有管理员能自由访问整个操作系统.

我们努力使得TEXLive的安装不需要管理员权限.
如果安装程序以管理员权限启动,会有选项允许给所有用户安装,如果启用了这个选项,就会给所有用户创建快捷方式,并修改系统搜索路径.
否则,安装程序只为当前用户创建快捷方式,并改变用户搜索路径.
无论管理员状态如何,TEXLive预设的默认根目录总是位于%SystemDrive%下.
对于当前用户安装程序总是要测试,根目录是否可写.
如果用户不是管理员,并且TEX已经存在搜索路径中,则可能会出现问题.
因为有效搜索路径是由系统路径后接用户路径组成,新安装的TEXLive可能永远不会优先运行.
为了保险起见,安装程序为命令提示符创建快捷方式.
在这个快捷方式中,新安装的TEXLive的可执行目录被预设于本地的搜索路径中.
当从这个快捷方式启动命令行任务时,便可以使用新的TEXLive.
如果安装了TEXworks,其快捷方式也将TEXLive加进了搜索路径中,所以它应该不会出现路径问题.
你需要知道的是:即使你以管理员身份登录系统,依旧要求你提供管理员权限.
实际上,是否以管理员身份登录并不是问题所在.
相反,在你希望运行的程序或快捷方式上单击右键,系统通常会给出"以管理员身份执行"这样的选择.
6.
6增加Windows和Cygwin下的最大内存量Windows和Cygwin(参见第3.
1.
4节以了解Cygwin安装细节)的用户可能会在执行特定TEXLive程序时遇到内存不足的情况.
例如asy在你尝试分配一个25,000,000个实数的数组时可能会内存不足,而LuaTEX在你尝试处理一个包含大量字体的文档时可能会内存不足.
对Cygwin,你可以按照Cygwin用户指南(https://cygwin.
com/cygwin-ug-net/setup-maxmem.
html)中的办法增加可用内存量.
对Windows,你必须创建一个文件,例如命名为moremem.
reg,包含如下内容:WindowsRegistryEditorVersion5.
00[HKEY_LOCAL_MACHINE\Software\Cygwin]"heap_chunk_in_mb"=dword:ffffff00然后以管理员身份执行命令regedit/smoremem.
reg.
(如果你只希望修改当前用户而不是整个系统的内存,改用HKEY_CURRENT_USER.
)7Web2C用户指南Web2C是一整套TEX相关程序的集合:TEX本身、METAFONT、MetaPost、BibTEX,等等.
它是TEXLive的核心.
Web2C的主页及最新的手册等都在https://tug.
org/web2c.
我们简单的介绍一下它的历史:最早它是由TomasRokicki在1987年实现的,他开发了第一套将TEX系统的代码转换为C语言代码的系统,基于的是Unix下changefiles的原理,changefiles的工作是HowardTrickey和PavelCurtis完成的.
TimMorgan后来成为了这套系统的维护者,在这期间,软件的名称改为了Web-to-C.
在许多其他贡献者的帮助下,1990年KarlBerry接手了这个工作,到1997年,他把这项工作交给了OlafWeber.
OlafWeber在2006年又把这项工作交还给了Karl.
Web2C系统可以在Unix、32位Windows系统、MacOSX和其他的一些操作系统下运行.
它使用的是Knuth用WEB文学编程语言编写的TEX和其他基本程序的原始代码,将其转换为C源码.
用这种方法处理的核心的TEX程序包括:bibtex维护参考文献.
dvicopy展开DVI中的虚拟字体(virtualfont)引用.
dvitomp将DVI转换为MPX(MetaPost图片).
dvitype将DVI转换为可读文本.
gftodvi生成Generic格式字体的proofsheet.
7WEB2C用户指南25gftopk将Generic格式字体转换为packed格式字体.
gftype将Generic格式字体转换为可读文本.
mf创建字体.
mft以漂亮的方式排版输出METAFONT的代码.
mpost创建技术性插图.
patgen创建断字规则文件.
pktogf将Packed格式字体转换为generic格式字体.
pktype将PK格式转换为可读的文本.
pltotf将纯文本的propertylist转换为TFM格式.
pooltype显示WEB的pool文件.
tangle将WEB转换为Pascal代码.
tex排版.
tftopl将TFM格式转换为纯文本的propertylist格式.
vftovp将虚拟字体格式转换为virtualpropertylist格式.
vptovf将virtualpropertylist格式转换为虚拟字体格式.
weave将WEB转换为TEX.
这些程序的详细功能和调用语法都在其各自软件包的文档中有说明,在Web2C的文档中也有相关介绍.
不过,有些规则对所有这些程序都是通用的,了解这些规则有助于你更好的使用Web2C.
所有的程序都接受这些GNU标准的选项:--help显示基本使用说明.
--version显示版本信息,然后退出.
而大部分都接受:--verbose显示详细的执行过程.
所有的Web2C程序均使用Kpathsea(https://tug.
org/kpathsea)路径搜索库来查找文件,这套库结合环境变量和配置文件的使用来优化大量TEX文件的搜索.
Web2C可以在多于一套的目录树下执行查找,这可以方便维护类似TEX标准发行版和本地版本的扩展这样两套目录树.
为了优化搜索的速度,每个目录树的顶层目录下都有一个ls-R文件,这个文件里包含了所有此目录下文件的名称和对应的相对路径.
7.
1Kpathsea路径搜索我们首先介绍一下Kpathsea库的的通用路径搜索方式.
我们将目录名称称作路径元素,而把用冒号或者分号分隔的路径元素列表称作搜索路径.
搜索路径可能是许多种来源的组合,比如在'.
:/dir'路径下搜索'my-file'这个文件,Kpathsea将逐个尝试路径中的每个元素:首先是.
/my-file,然后是/dir/my-file,并返回找到的第一个结果(或者也可以返回所有的结果).
为了符合所有操作系统下的习惯,Kpathsea在非Unix系统下使用的路径分隔符可能不是冒号(':')和斜杠('/').
在检查一个具体的路径元素p时,Kpathsea首先检查是否有符合p的文件名数据库(见第28页的"文件名数据库")存在,也就是说,是否有数据库正好对应着p的一个前缀.
如果存在,就在数据库中寻找符合的路径后缀.
尽管最简单也最常见的路径元素是目录名称,Kpathsea搜索的路径里还是可以使用其他额外功能的:多层默认值,环境变量名称、配置文件值、用户主目录,以及递归式子目录查找.
所以我们把Kpathsea将搜索路径变换为一个或多个基本目录名的过程称为展开路径元素的过程.
展开的方式按执行的顺序在后续小节里有叙述.
注意,如果搜索的文件给出了绝对路径或者明确的相对路径,即以'/'或'.
/'或'.
.
/'起始,Kpathsea将只检查该文件是否存在.
7WEB2C用户指南267.
1.
1路径的来源搜索路径可能来自许多地方,Kpathsea是按照下面的顺序查找的:1.
用户设置的环境变量,例如TEXINPUTS.
以.
连接某个程序名称的环境变量有更高的优先级,比如若正在运行的程序是'latex',那TEXINPUTS.
latex将比TEXINPUTS优先级更高.
2.
专门针对某个程序的配置文件,比如dvips的config.
ps里出现'S/a:/b'这样一行.
3.
Kpathsea配置文件texmf.
cnf,包含类似'TEXINPUTS=/c:/d'这样的一行(参见下面的解释).
4.
编译时的缺省值.
你可以通过调试选项看到所有的这些值(参见第30页的"调试操作").
7.
1.
2配置文件Kpathsea读入运行时配置文件texmf.
cnf来获得搜索路径和其他定义.
我们用TEXMFCNF搜索路径来查找这些文件,但我们不建议设置这个(或者任何)环境变量来替代系统路径.
作为代替,标准的安装将产生文件.
.
.
/2020/texmf.
cnf.
如果你必须修改缺省值(一般不需要),这是修改的地方.
主配置文件是.
.
.
/2020/texmf-dist/web2c/texmf.
cnf.
你不应该修改后者,因为在发行版本被更新后会丢失修改.
此外,如果只希望把一个个人目录加入特定的搜索路径,设置环境变量是合理的:TEXINPUTS=.
:/my/macro/dir:为保证这个设计可以一直被维护和兼容,在末尾加入一个':'(Windows下用';')来加入系统路径,而不是完全替代系统路径(参见第7.
1.
4节).
另一个选项是使用TEXMFHOME树(参见第3.
2.
3节).
搜索路径里所有的texmf.
cnf文件都会被读入,而先读入的优先级更高.
比如搜索路径是.
:$TEXMF,那么文件.
/texmf.
cnf里面的值要比$TEXMF/texmf.
cnf里边的优先.
以%,要么在行首,要么在空白后面,表示单行注释.
忽略空行.
行末的\作为连接符,即把下一行直接接上.
但保留下一行行首的空白.
所有剩余的行格式如下:variable[.
progname][=]value'='号和空白都是可选的.
(但如果value以'.
'起始,最好的办法是用'='来避免'.
'被识别为程序名称.
)variable(变量)允许包含任何字符,除空白、之外.
不过只用'A-Za-z_'是最保险的.
如果'.
progname'(程序名)存在,则该定义只对正在运行的名叫progname或progname.
exe的程序起作用.
这可以让给不同种类的TEX程序设置不同的搜索路径.
就像字符串一样,value可以包含任何字符.
但是,实际上大部分texmf.
cnf的值都和路径展开有关,而因为展开会用到多种特殊字符(参见第7.
1.
7节),比如大括号和逗号,所以它们不能用作路径名称.
在Unix下value里的';'会被转换为':',这样同一份texmf.
cnf可以同时支持Unix和Windows系统.
这个转换适用于任何值,不仅仅是搜索路径,不过实际上';'也不会在其他值里用到.
$var.
prog的功能在右侧无效,你必须多用一个变量才行.
在读入所有定义后再开始展开,所以你可以引用后边才定义的变量.
展示上面所有内容的一段配置文件如下:TEXMF={$TEXMFLOCAL,!
!
$TEXMFMAIN}TEXINPUTS.
latex=.
;$TEXMF/tex/{latex,generic;}//TEXINPUTS.
fontinst=.
;$TEXMF/tex//;$TEXMF/fonts/afm//%e-TeXrelatedfilesTEXINPUTS.
elatex=.
;$TEXMF/{etex,tex}/{latex,generic;}//TEXINPUTS.
etex=.
;$TEXMF/{etex,tex}/{eplain,plain,generic;}//7WEB2C用户指南277.
1.
3路径展开和Unixshell类似,Kpathsea能够识别搜索路径中的特殊字符.
比如路径~$USER/{foo,bar}//baz,将展开为这样的子目录:在$USER的主目录下的foo或bar目录中,且包含baz文件或目录.
这种展开将在下面解释.
7.
1.
4默认展开如果最高优先级(参见第26页的"路径来源")的搜索路径中包含一个额外的冒号(即前置、后置或连续的冒号),Kpathsea将在此处插入次高优先级的搜索路径.
如果插入的那个路径里也有额外的冒号,同样的步骤将发生在更次以及优先级的路径上.
假设环境变量设置为>setenvTEXINPUTS/home/karl:而texmf.
cnf里的TEXINPUTS值为.
:$TEXMF//tex则用于搜索的最终值为:/home/karl:.
:$TEXMF//tex因为没必要插入多个相同的值,所以Kpathsea只会修改一个额外的':',其他的不变.
它首先检查前置的':',然后是末尾的':',最后是连续的':'.
7.
1.
5大括号展开大括号展开是一项有用的特性,其作用是把v{a,b}w这样的转换为vaw:vbw,允许嵌套使用.
通过把$TEXMF赋值为一个括号列表,可以构造出多套TEX层级结构.
在分发的texmf.
cnf里有下面的定义(简化的例子):TEXMF={$TEXMFVAR,$TEXMFHOME,!
!
$TEXMFLOCAL,!
!
$TEXMFDIST}比如我们可以用它来设置TEX的输入路径:TEXINPUTS=.
;$TEXMF/tex//的时候,检查完当前目录后,依次检查的路径是$TEXMFVAR/tex,$TEXMF/tex,$TEXMFLOCAL/tex和$TEXMFDIST/tex(后两个只在ls-R数据库中搜索).
7.
1.
6子目录展开在路径元素里的目录名称d后面接连使用两个或更多连续的斜杠,表示d的所有子目录:首先是直接处于d下的那些,然后是这些子目录的子目录,依此类推.
每层的目录出现的顺序是不一定的.

如果你在'//'后面还指定了文件名,匹配的将只是那些包含了指定文件的路径.
比如'/a//b'将展开为路径/a/1/b,/a/2/b,/a/1/1/b等等,但不会展开为/a/b/c或/a/1.
可以在单个路径元素里使用多个'//',但出现在路径开头的'//'将被忽略.
7.
1.
7texmf.
cnf文件中的特殊字符简要说明下面的列表总结了Kpathsea配置文件中出现的特殊字符和构成::路径分隔符,在路径的前边或者末尾,或者在中间重复出现时,表示默认的展开方式.

;非Unix系统下的路径分隔符(和:功能一样).
$变量展开.
7WEB2C用户指南28~表示用户的个人主目录.
{.
.
.
}Braceexpansion.
,在路径展开时分隔项目.
//子目录展开(可以出现在除路径开头外的任意位置).
%注释的起始.
\在行末连接下一行的字符,以支持跨行的设置项.
!
!
只在数据库中搜索文件,不搜寻磁盘.
具体哪一个字符会被视为特殊字符还是不会,取决于它使用的上下文.
这些规则在配置文件的多层的解析过程中都会体现(包括解析、展开、搜索,…),所以不能简短地说明.
也没有通用的转义方法,尤其'\'不是texmf.
cnf文件中的"转义字符".
在选择安装使用的目录名时,避免使用这些字符里的任何一个最为保险.

7.
2文件名数据库Kpathsea使用了一些方法来减少搜索时的磁盘访问次数.
尽管如此,在TEXLive的标准安装,或者安装的文件足够多,在各个可能的目录下搜索某个文件仍然可能花上很长时间.
因此,Kpathsea使用一个专门构建的纯文本"数据库"文件,这个文件叫做ls-R,它将文件和目录进行映射,避免对磁盘的大量搜索.
第二个数据库aliases允许你给ls-R中的文件指定其他的名字.
7.
2.
1文件名数据库前边已经解释过,主文件名数据库的名称必须是ls-R.
你可以在每个需要搜索的TEX目录树(缺省是$TEXMF)下放置一个这样的文件.
Kpathsea在TEXMFDBS指定的路径中寻找这些ls-R文件.
推荐使用发行版中包含的mktexlsr脚本来创建和维护'ls-R'文件.
各类'mktex'脚本也可能会间接调用这个脚本.
实际上,这个脚本只是执行下面的命令:cd/your/texmf/root&&\ls-1LAR.
/>ls-R意味着你的系统的ls命令的输出格式必须正确(GNUls是没问题的).
要保证数据库及时更新,最简单的方法是定期通过cron来重建.
如果文件在数据库中找不到,缺省情况下Kpathsea会在磁盘上搜索.
如果某个特定的路径元素是以'!
!
'起始的,就只会在针对这一元素的数据库中查找而不搜索磁盘.
7.
2.
2kpsewhich:独立的路径搜索kpsewhich程序将路径搜索从其他专用程序中独立出来,它可以作为类似find一样的程序,专门在TEX层级结构中定位文件(这在发行版中的'mktex'…脚本中使用得非常多).
>kpsewhichoption…filename…option处的选项可以用'-'也可以用'--'来起始,并接受任何不造成疑义的缩写.
Kpathsea将第一个非选项的参数作为文件名来查找,并返回找到的第一个文件.
它不提供寻找所有相同名称文件的功能(你可以使用Unix的'find'程序来达到这个功能).
下面介绍了一些比较常见的选项.
--dpi=num将解析度设置为num,这个选项只影响'gf'文件和'pk'文件的查找.
为了与dvips兼容,提供'-D'这个同义的参数,默认值是600.
--format=name将查找的文件格式设置为name.
默认情况下是通过文件名来猜测格式的.
对于扩展名有二义性的格式,比如MetaPost支持文件和dvips配置文件,必须以Kpathsea已知的名称指定格式,比如tex或encfiles.
运行kpsewhich--help-formats会显示格式的列表.
7WEB2C用户指南29--mode=string设置模式为string,只影响'gf'和'pk'文件的查找.
默认情况匹配所有的模式.
--must-exist尽一切可能找到文件,包括直接在磁盘上搜寻.
默认情况下为了效率考虑,只检查ls-R数据库里的内容.
--path=string不通过文件名来猜测路径,沿string指出的路径搜索(也使用冒号分隔).
支持'//'和所有常见的展开方式.
'--path'选项和'--format'选项是互斥的.
--progname=name将执行查找的程序名称设为name.
这会通过.
progname特性影响搜索路径.
缺省值是kpsewhich.
--show-path=name显示用于查找name类型文件的路径.
和'--format'选项一样,可以使用扩展名(.
pk,.
vf,等等)也可以使用全名.
--debug=num将调试选项(等级)设置为num.
7.
2.
3使用举例现在我们看看实际使用Kpathsea的例子.
这里是一个简单的搜索:>kpsewhicharticle.
cls/usr/local/texmf-dist/tex/latex/base/article.
cls我们寻找的是article.
cls文件.
因为'.
cls'后缀已经说明了文件的类型,所以我们不需要特别指明查找的是tex类型的文件(也就是要在(TEX源文件目录下查找).
我们在'texmf-dist'的tex/latex/base子目录下找到了这个文件.
与之类似,下列所有文件都顺利找到,因为其扩展名没有二义.
>kpsewhicharray.
sty/usr/local/texmf-dist/tex/latex/tools/array.
sty>kpsewhichlatin1.
def/usr/local/texmf-dist/tex/latex/base/latin1.
def>kpsewhichsize10.
clo/usr/local/texmf-dist/tex/latex/base/size10.
clo>kpsewhichsmall2e.
tex/usr/local/texmf-dist/tex/latex/base/small2e.
tex>kpsewhichtugboat.
bib/usr/local/texmf-dist/bibtex/bib/beebe/tugboat.
bib另外,最后一个是TUGBoat文章的BibTEX参考文献数据库.
>kpsewhichcmr10.
pk.
pk类型的字体位图文件是给dvips或者xdvi这种显示程序提供的.
因为TEXLive里没有预生成的ComputerModern'.
pk'字体,所以没有找到任何内容—TEXLive默认使用Type1版本的.
>kpsewhichwsuipa10.
pk/usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.
600pk而这个字体(Washington大学的一套注音字母表)就需要生成'.
pk'文件了.
我们默认的META-FONT模式是ljfour,基础解析度是600dpi(dotsperinch),所以会得到这样一个文件.
>kpsewhich-dpi=300wsuipa10.
pk一旦指明我们需要寻找的只是300dpi的文件时(-dpi=300),就会发现系统里没有符合要求的文件.
这样dvips或xdvi会使用mktexpk脚本去创建所需的.
pk文件.
7WEB2C用户指南30下面我们将注意力转向dvips的头文件和配置文件.
首先看看最常用的一个,tex.
proprologue文件,然后检查通用配置文件config.
ps和PostScript字体映射文件psfonts.
map—从2004年开始,映射文件和编码文件都在texmf目录树下有其自己的搜索路径了.
因为'.
ps'后缀可能会有二义,我们必须指明意思是dvipsconfig.
>kpsewhichtex.
pro/usr/local/texmf/dvips/base/tex.
pro>kpsewhich--format="dvipsconfig"config.
ps/usr/local/texmf/dvips/config/config.
ps>kpsewhichpsfonts.
map/usr/local/texmf/fonts/map/dvips/updmap/psfonts.
map这样我们可以更仔细地分析一下URWTimes的PostScript支持文件.
依照标准的字体命名方案,这些文件的前缀是'utm'.
首先查询的是配置文件,其中包含的是map文件的名称:>kpsewhich--format="dvipsconfig"config.
utm/usr/local/texmf-dist/dvips/psnfss/config.
utm这个文件的内容是p+utm.
map即指向utm.
map文件,也就是我们下一步要找的.
>kpsewhichutm.
map/usr/local/texmf-dist/fonts/map/dvips/times/utm.
map这个map文件定义了URW集合中的Type1PostScript字体文件名.
内容差不多是下边这样(我们只列出了其中一部分):utmb8rNimbusRomNo9L-Medi.
.
.
kpsewhichutmr8a.
pfb/usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.
pfb现在你可以发现,追寻某个文件的下落是如此方便.
尤其是在你怀疑找到的文件错了的时候,这些功能非常重要,因为kpsewhich只能告诉你找到的第一个文件.
7.
2.
4调试操作有时你可能会需要分析程序是如何解析文件引用的.
Kpathsea提供了多层调试输出来实现这个功能:1stat调用(磁盘上的查询).
在ls-R数据库及时更新的情况下几乎不会有什么输出.
2对散列表的引用(例如ls-R数据库,映射文件,配置文件).
4文件的打开与关闭操作.
8Kpathsea搜索的文件类型的通用路径信息.
有助于寻找针对某一文件的特定路径.

7WEB2C用户指南31debug:startsearch(file=texmf.
cnf,must_exist=1,find_all=1,path=.
:/usr/local/bin/texlive:/usr/local/bin:/usr/local/bin/texmf/web2c:/usr/local:/usr/local/texmf/web2c:/.
:/.
/teTeX/TeX/texmf/web2c:).
kdebug:startsearch(file=ls-R,must_exist=1,find_all=1,path=~/tex:/usr/local/texmf).
kdebug:search(ls-R)=>/usr/local/texmf/ls-Rkdebug:startsearch(file=aliases,must_exist=1,find_all=1,path=~/tex:/usr/local/texmf).
kdebug:search(aliases)=>/usr/local/texmf/aliaseskdebug:startsearch(file=config.
ps,must_exist=0,find_all=0,path=.
:~/tex:!
!
/usr/local/texmf/dvips//).
kdebug:search(config.
ps)=>/usr/local/texmf/dvips/config/config.
pskdebug:startsearch(file=/root/.
dvipsrc,must_exist=0,find_all=0,path=.
:~/tex:!
!
/usr/local/texmf/dvips//).
search(file=/home/goossens/.
dvipsrc,must_exist=1,find_all=0,path=.
:~/tex/dvips//:!
!
/usr/local/texmf/dvips//).
kdebug:search($HOME/.
dvipsrc)=>kdebug:startsearch(file=config.
cms,must_exist=0,find_all=0,path=.
:~/tex/dvips//:!
!
/usr/local/texmf/dvips//).
kdebug:search(config.
cms)=>/usr/local/texmf/dvips/cms/config.
cms图12:寻找配置文件16每个路径元素的目录列表(只在本地磁盘上搜索时有用).
32文件搜索.
64变量的值.
等级-1将启用上述所有选项,实际上这是最方便的设置方法了.
类似地,在dvips程序中设置上述调试选项的组合,你就可以出dvips是从哪里找到它所需的文件的.
另一方面,如果找不到某个文件,调试输出也会显示程序从哪些目录进行了查找,你也可以据此判断出问题出在哪里.
一般而言,因为所有的程序都在其内部调用Kpathsea库,你可以设置KPATHSEA_DEBUG环境变量来选择调试参数,将这个变量设置为上述参数的组合(加法)以获得对应的功能.
(Windows用户请注意:因为在Windows下不容易把所有信息都重定向到固定的文件中,为了方便诊断,你可以临时设置SETKPATHSEA_DEBUG_OUTPUT=err.
log).
让我们以一个简单的LATEX源文件hello-world.
tex为例,其内容如下:\documentclass{article}\begin{document}HelloWorld!
\end{document}这个小文件只使用了cmr10字体,我们可以看看dvips是如何生成PostScript文件的(我们希望使用Type1版本的ComputerModern字体,所以使用了-Pcms参数).
>dvips-d4100hello-world-Pcms-o此时我们将dvips的调试等级4(表示字体路径)和Kpathsea的路径元素展开组合到一起(参见dvips参考手册.
(稍作整理的)输出见图12.
dvips启动后就开始搜寻其需要使用的文件.
首先找到的是texmf.
cnf,它给出了用于进一步查询其他文件的路径,然后找到的是ls-R文件名数据库(用于优化文件搜索速度)和aliases文件(用于创建同一文件的多个别名,比如为较自然的长文件名创建DOS8.
3风格的短别名).
然后dvips去寻找它的通用配置文件config.
ps,接下来查找个人定制文件.
dvipsrc(不过上述例子中并未找到,显示notfound).
最后dvips找到了ComputerModernPostScript字体的配置文件config.
cms(因为执行dvips时使用了-Pcms选项).
这个文件里包含了字体的TEX名称,PostScript名称和文件名的对应关系.
7WEB2C用户指南32>more/usr/local/texmf/dvips/cms/config.
cmsp+ams.
mapp+cms.
mapp+cmbkm.
mapp+amsbkm.
map于是dvips接下来寻找这些文件,再加上固定载入的,通用映射文件psfonts.
map(这个文件里包含常用PostScript字体的映射,参见第7.
2.
3节的最后一部分,讨论了PostScript映射文件的处理).
这时候dvips向用户表示它的存在:Thisisdvips(k)5.
92bCopyright2002RadicalEyeSoftware(www.
radicaleye.
com)然后开始寻找prolog文件texc.
pro:kdebug:startsearch(file=texc.
pro,must_exist=0,find_all=0,path=.
:~/tex/dvips//:!
!
/usr/local/texmf/dvips//:~/tex/fonts/type1//:!
!
/usr/local/texmf/fonts/type1//).
kdebug:search(texc.
pro)=>/usr/local/texmf/dvips/base/texc.
pro找到所需文件后,dvips输出日期和时间,并告知我们它将生成hello-world.
ps文件,需要用到cmr10字体文件,这个字体属于"常驻(resident)的",也就是不需要载入位图文件的字体:TeXoutput1998.
02.
26:1204'->hello-world.
psDefiningfont()cmr10at10.
0ptFontcmr10isresident.
寻找并找到了cmr10.
tfm文件.
然后再次引用了一些prolog文件(此处略去),最终找到了cmr10.
pfb这个Type1字体,并将它包含在输出文件中(见最后一行).
kdebug:startsearch(file=cmr10.
tfm,must_exist=1,find_all=0,path=.
:~/tex/fonts/tfm//:!
!
/usr/local/texmf/fonts/tfm//:/var/tex/fonts/tfm//).
kdebug:search(cmr10.
tfm)=>/usr/local/texmf/fonts/tfm/public/cm/cmr10.
tfmkdebug:startsearch(file=texps.
pro,must_exist=0,find_all=0,.
.
.
kdebug:startsearch(file=cmr10.
pfb,must_exist=0,find_all=0,path=.
:~/tex/dvips//:!
!
/usr/local/texmf/dvips//:~/tex/fonts/type1//:!
!
/usr/local/texmf/fonts/type1//).
kdebug:search(cmr10.
pfb)=>/usr/local/texmf/fonts/type1/public/cm/cmr10.
pfb[1]7.
3运行时选项Web2C另一项有用的特性是可以通过Kpathsea读入的运行时文件texmf.
cnf来控制一系列的内存参数(具体而言是数组的大小).
内存的设置可以在这个文件的第三部分找到.
比较重要的几个设置是:main_memory总的可用内存数,以word为单位,TEX,METAFONT和MetaPost受此限制.
每修改一次都必须重新生成一个新的格式文件.
比如你可以生成一个"巨型"版本的TEX,将其存为hugetex.
fmt.
extra_mem_bot为"大型"TEX数据结构预留的额外空间:boxes,glue,breakpoint等.
如果你使用PICTEX时特别有用.
font_mem_sizeTEX用于存储字体数据的word数.
大致等于载入的所有TFM文件的总和.
hash_extra为存储控制序列而设置的散列表的额外空间.
一般散列表足够存储将近10,000个控制序列.
如果你排版的是一本有大量交叉引用的书籍,这个值可能不够用.
默认的hash_extra是50000.
这项功能并非真正的动态内存和数组分配的替代,但考虑到动态分配在现在的TEX太难实现,才通过这些选项提供了一些灵活性.
8致谢337.
4$TEXMFDOTDIR在上述许多地方,我们使用了多个以.
起始的搜索路径,以优先搜索当前路径,比如TEXINPUTS=.
;$TEXMF/tex//这是一种简化.
我们在TEXLive分发的texmf.
cnf文件使用的是$TEXMFDOTDIR而不是直接用'.
',比如:TEXINPUTS=$TEXMFDOTDIR;$TEXMF/tex//(在分发的文件中,第二个路径元素也比$TEXMF/tex//稍微复杂一点.
但差别不大;而且我们这里讨论的是$TEXMFDOTDIR功能.
)在路径定义中使用$TEXMFDOTDIR而不是直接用'.
'的原因是让它可以被重新定义.
比如一份复杂的文档可能由来自多个子目录的源文件组成.
要支持这种情况你可以把TEXMFDOTDIR设置为.
//,这样这些子目录就都会被搜索到.
(警告:不要默认使用.
//;这个做法一般不常用,而且搜索任意文档的所有子目录有可能不够安全.
)另一个例子是你可能完全不希望搜索当前路径,比如你安排所有的文件都通过具体的路径找到.
那样你可以把$TEXMFDOTDIR设置为如/nonesuch这样不存在的目录.
在我们的texmf.
cnf里设置的$TEXMFDOTDIR的默认值就是'.
'.
8致谢TEXLive是在几乎所有TEX用户组织的协力下完成的.
这个版本由KarlBerry监制.
下面列出了过去和现在主要的贡献者:英国、德国、荷兰和波兰的TEX用户组织(分别为TUG,DANTEe.
V.
,NTG,和GUST),他们为所在地区的TEX社群提供了必备的技术和管理基础设施.
请加入本地的TEX用户组织!
(参见https://tug.
org/usergroups.
html.
)CTAN团队(https://ctan.
org),值得一提的是RobinFairbairns和RainerSchpf.
他们负责分发TEXLive光盘镜像,为软件包更新提供支撑,TEXLive正是基于这些软件包构建的.
NelsonBeebe,他为TEXLive提供了许多平台,自己也进行了详尽的测试,并在参考文献上有无与伦比的贡献.
JohnBowman,他对先进的图形程序Asymptote做了许多修改,使之能在TEXLive中工作.
PeterBreitenlohner和ε-TEX团队,他们创造了未来TEX的稳定基础.
同时特别感谢Peter,他为整个TEXLive中GNUautotools的使用提供了主要的帮助.
Peter在2015年10月去世,我们将持续工作以纪念他.
Jin-HwanCho和整个DVIPDFMx团队,他们创造了这个优秀的DVI输出程序,以及对配置问题及时的回应.
ThomasEsser,如果没有他优秀的teTEX套件,TEXLive根本不可能存在.
MichelGoossens,他一起编写了原始的文档.
EitanGurari,他不知疲倦地改进着的TEX4ht程序用于创建这份文档的HTML版本,年复一年.
Eitan于2009年6月过早地离开了我们,我们希望把这份文档献给它,以志纪念.
HansHagen,他对ConTEXt宏包(https://pragma-ade.
com)做了许多测试和修改,使之能够包含在TEXLive的框架下,并持续推进TEX的开发.
HànThêThành,MartinSchrder,和pdfTEX团队,他们持续不断地改进TEX的功能.
HartmutHenkel,他对pdfTEXLuaTEX等程序的开发起到了重要的贡献.
ShunshakuHirata,起始开发和坚持维护DVIPDFMx.
TacoHoekwater,他对MetaPost和(Lua)TEX(http://luatex.
org)重要的开发使之焕发新的活力.
他还参与了将ConTEXt融入TEXLive、给Kpathsea添加多线程功能,等等许多工作.
KhaledHosny,他对XeTEX,DVIPDFMx和阿拉伯及其他字体的开发都有巨大的贡献.
PaweJackowski,他创建了Windows下的安装程序tlpm,和Tomaszuczak,因为他的tlpmgui被用在了以前的版本.
AkiraKakuto,以他的W32TEX发行版(http://w32tex.
org/)为基础提供了Windows下的二进制文件,以及许多其他的贡献.
JonathanKew,他开发了非凡的XeTEX引擎并花了大量时间和精力集成到TEXLive中.
以及MacTEX安装程序的早期版本,还有我们推荐的前端TEXworks.
9发行历史34HironoriKitagawa,对pTEX和相关的支持进行了大量的工作.
DickKoch,他维护了MacTEX(https://tug.
org/mactex)这个和TEXLive联系非常紧密的发行版本.
ReinhardKotucha,他对TEXLive2008的基础架构和安装程序起到了重要贡献,以及Windows下的研究性工作,getnonfreefonts脚本,等等.
SiepKroonenberg,也因为他对TEXLive2008基础架构和安装程序的重要贡献,尤其是在Windows上.
他还花了大量的时间更新手册,介绍了这些特性.
ClerkMa,对引擎的bug修正和扩展.
MojcaMiklavec,为她在ConTEXt上的工作、编译大量二进制文件和很多其他的工作.
HeikoOberdiek,因为他的epstopdf包和许多其他的工作,压缩巨大的pst-geo数据文件使我们得以包含它们,最重要的还是因为他在hyperref宏包上优秀的工作.
PhelypeOleinik,对2020年在多个引擎上实现组分隔的\input命令,以及更多的工作.
PetrOlak,他非常认真地协调和检查所有的捷克语和斯洛伐克语资料.
ToshioOshima,他提供了Windows下的dviout预览工具.
ManuelPégourié-Gonnard,他对宏包更新、文档改进以及texdoc开发上的努力.
FabricePopineau,他创建了TEXLive最早的Windows支持.
NorbertPreining,他是当前TEXLive基础架构和安装程序的总设计师,还负责协调了Debian版本的TEXLive工作(和FrankKüster一起),还有很多其他的工作.
SebastianRahtz,他是TEXLive的创始者,并维护了它许多年.
Sebastian在2016年3月去世,我们用持续的工作来纪念他.
LuigiScarso,他坚持开发MetaPost,LuaTEX等等许多.
AndreasScherer,他开发了cwebbin,TEXLive使用的CWEB实现.
TomaszTrzeciak,他为Windows开发提供了广泛的帮助.
VladimirVolovich,他很大地帮助解决了许多移植和维护的问题,尤其是令我们能够将xindy包含进来.
StaszekWawrykiewicz,TEXLive的一个主要的测试人员,同时还是许多重要波兰语支持的协调人员:字体、Windows安装,和其他许多工作.
Staszek在2018年2月去世了,我们将继续工作以纪念他.
OlafWeber,他在以前几年对Web2C耐心的维护.
GerbenWierda,他创建和维护了原来的MacOSX支持.
GrahamWilliams,他是TEXCatalogue的发起者.
JosephWright,他为让多个引擎获得相同的primitive功能进行了大量的工作.
HironobuYamashita,对pTEX和相关的支持进行了大量的工作.
二进制版本的编译者:MarcBaudoin(amd64-netbsd,i386-netbsd),KenBrown(i386-cygwin,x86_64-cygwin),SimonDales(armhf-linux),JohannesHielscher(aarch64-linux),AkiraKakuto(win32),DickKoch(x86_64-darwin),NikolaLei(amd64-freebsd,i386-freebsd),HenriMenke(x86_64-linuxmusl),MojcaMiklavec(i386-linux,x86_64-darwinlegacy,i386-solaris,x86_64-solaris,sparc-solaris),NorbertPreining(x86_64-linux).
关于TEXLive编译进程的信息,请查阅https://tug.
org/texlive/build.
html.
这份手册的翻译者:DenisBitouzé&PatrickBideault(法语),CarlosEnriquezFigueras(西班牙语),JiangJiang,JinsongZhao,YueWang,&HelinGai(中文),NikolaLei(塞尔维亚语),MarcoPallante&CarlaMaggi(意大利语),PetrSojka&JanBusa(捷克/斯洛伐克语),BorisVeytsman(俄语),ZofiaWalczak(波兰语),UweZiegenhagen(德语).
TEXLive文档的主页是https://tug.
org/texlive/doc.
html.
当然,最重要的感谢应该致予DonaldKnuth,感谢他发明了TEX,也感谢他将TEX赠与全世界.
9发行历史9.
1过去1993年末荷兰TEX用户组开始为MS-DOS用户开发4AllTEXCD时,我们就开始了相关的讨论,并希望在此时为所有的操作系统提供一个单一的、合理的CD.
当时那是一个过于宏伟的目标,但的确滋生了非常成功的4AllTEXCD,同时TUG技术委员会工作组也开始设计TEX目录结构(https://tug.
org/tds),以指明如何创建一套一致而可控的集合,囊括所有TEX相关的文件.
TDS的完整草案在1995年12月的TUGboat上出版,并初步确定期望的产品将是在CD上出现的范例结构.
你现在使用的这个发行版正是工作组审议的直接结果.
4AllTEXCD的成功也说明如果有一个类似9发行历史35这样的易于使用的系统,对Unix用户肯定很有帮助,这是TEXLive最主要的出发点.
我们在1995年秋天开始尝试构建一个新的CD(基于TDS),并很快发现ThomasEsser的teTEX已经是比较理想的配置,并因为在它构建时就已经考虑了跨文件系统的兼容性问题,也已具有多平台支持.
Thomas同意帮助我们,并在1996年初开始了正式的工作.
第一版是在1996年五月发行的.
到1997年初,KarlBerry完成了Web2C的一个重大的更新版本,将几乎所有ThomasEsser加入teTEX的特性囊括在内,这样我们决定在teTEX的texconfig脚本的辅助下,基于标准的Web2C来制作第二版的CD.
第3版的CD基于OlafWeber完成的Web2C的一个重大修正版本,7.
2.
与此同时,teTEX的一个新版本出现了,TEXLive也包含了其中绝大多数特性.
第4版依照上面的模式进行,使用了新版本的teTEX和新版本的Web2C(7.
3).
感谢FabricePopineau的帮助,系统此时也包括了完整的Windows下的配置.
在第5版(2000年3月)中检查并修正了CD的许多部分,更新了数百个软件包.
软件包的详细说明现在存放在XML文件中.
不过TEXLive5的首要变化还是移除了所有的非自由软件.
TEXLive的所有部分现在都在向DebianFreeSoftwareGuidelines(https://debian.
org/intro/free)兼容的方向改进,我们尽最大努力检查了所有软件包的授权协议,欢迎为我们指出错误.

第6版(2001年7月)更新了许多内容.
最重大的一项是新的安装形式,用户可以更精确地选择所需的软件集合.
与语言相关的集合也重新组织过了,这样一来,选定某个语言集合时会自动安装宏包、字体等文件,并自动设置好language.
dat.
2002年出现的第7版里显著的更新是添加了MacOSX的支持,还有大量各类宏包和程序的更新.
这个版本的一个重要的目标是将源代码重新与teTEX集成,因为在第5和第6版中它们偏离得太远了.
9.
1.
120032003年,在更新和增添持续不断到来的情况下,我们发现TEXLive已经过于庞大,无法在一张CD中容纳,于是将其切分为三套不同的发行版(参见第2.
1节,p.
5).
此外:在LATEX团队的要求下,我们将latex和pdflatex命令改为使用ε-TEX引擎(参见p.
7).
包含了新的LatinModern字体(并推荐使用).
因为不再有人拥有(或主动提供)用于编译新的二进制程序的硬件,去除了AlphaOSF的支持(先前已经去除了HPUX的支持).
Windows下的安装有很大改变,首次提供了基于XEmacs的集成环境.
Windows下重要的辅助性程序(Perl,Ghostscript,ImageMagick,Ispell)现在放在TEXLive的安装目录.
dvips,dvipdfm和pdftex使用的字体映射文件现在通过updmap这套新程序生成,并安装到texmf/fonts/map目录下.
TEX,METAFONT,和MetaPost现在缺省直接输出大多数的输入字符(位置32及其以上)(比如通过\write),包括输出到文件、日志和终端上.
也就是说,不再使用^^标记来转换.
在TEXLive7中是否转换根据系统区域(locale)设置而定,而这一版里locale设置不再影响TEX程序的行为,所以如果你需要^^形式的输出,请将texmf/web2c/cp8bit.
tcx文件改名.
(后续版本将提供更简洁的方式来控制.
)对文档作了大量更新.
最后,因为版本号增长得实在太快,现在简单地使用年份来标识版本:TEXLive2003.
9.
1.
220042004年有许多改变:如果你在本地安装的字体时涉及了.
map或.
enc(附带这种文件的可能性很小)辅助文件,可能需要转移这些文件的位置.
现在根据TEXFONTMAPS变量中的路径设置,只在(所有texmf目录树下的)fonts/map子目录下搜索.
map文件.
与之类似,.
enc文件现在只在fonts/enc目录下搜索,根据ENCFONTS变量中的路径设置.
如果遇到有问题的文件,updmap会提出警告.
关于这种搜索方式的其他信息,请参见https://tug.
org/texlive/mapenc.
html.
因为有人可能更愿意使用MiKTEX而非Web2C系统,TEXCollection现在包含了一套基于MiKTEX的可安装CD,参见第2节(p.
5).
9发行历史36在原来旧版本TEXLive中单一的texmf目录树被分拆为三个:texmf,texmf-dist,和texmf-doc.
参见第2.
2节(p.
5)及各目录下的README文件.
所有TEX输入文件现在统一收集到了texmf*下的tex子目录中,不再分散在各个tex,etex,pdftex,pdfetex目录.
见texmf-dist/doc/english/tds/tds.
html#Extensions.
辅助性脚本(并非直接提供给用户调用的)现在放在texmf*目录树下新的scripts子目录中,并可以通过kpsewhich-format=texmfscripts来搜索.
如果你的程序调用了这些脚本,必须修改路径.
参见texmf-dist/doc/english/tds/tds.
html#Scripts.
几乎所有格式,都用cp227.
tcx这个转换文件将大多数的可见(printable)字符保留下来,而不再使用^^标识来转换这些字符.
具体而言,在位置32–256的字符,加上tab,verticaltab,和formfeed字符都作为可见字符而不再转换.
例外情况是plainTEX(只将位置32–126的字符视为可见),ConTEXt(0–255都视为可见)和与相关的格式.
缺省的情况几乎与TEXLive2003完全一致,但通过更简洁的方式实现,并允许更多定制.
参见texmf-dist/doc/web2c/web2c.
html#TCX-files.
(另外,如果遇到Unicode输入,TEX可能会在显示错误上下文时输出半个字符,因为它是基于字节流来处理输入的.
)pdfetex现在是除(plain)tex外所有格式的默认引擎(当然以latex这种方式运行时它还是生成DVI).
这样一来,至少pdftex的微调排版(microtypographic)技术可以在LATEX,ConTEXt等格式中使用,另外ε-TEX的特性也包含在其中(texmf-dist/doc/etex/base/).
这还说明比以前任何时候都更有必要使用(对plain和LATEX都适用的)ifpdf宏包或其类似代码,因为只检查\pdfoutput或其他原语是否已经定义不再是判断是否处于PDF输出状态的可靠方法.
我们在这一年尽可能地保持向下兼容,但以后即使在输出DVI时\pdfoutput也可能已经定义.
pdfTEX(http://pdftex.
org)新增了许多特性:–可以使用\pdfmapfile和\pdfmapline来在单独文档内指定字体映射文件.
–可以更方便地使用排版微调(Microtypographic)和字体延展(fontexpansion)技术了.
http://www.
ntg.
nl/pipermail/ntg-pdftex/2004-May/000504.
html–原来使用专有格式的配置文件pdftex.
cfg里的选项现在都必须改用TEX原语来设置,通常放在pdftexconfig.
tex里面,不再支持pdftex.
cfg的配置方式.
每次修改pdftexconfig.
tex之后都必须重新生成.
fmt文件.
–参见pdfTEX手册以了解更多信息:texmf-dist/doc/pdftex/manual/pdftex-a.
pdf.
tex(以及mf和mpost)中的\input原语现在支持通过双引号来引用包含空格和特殊字符的文件.
一个典型的例子如下:\input"filenamewithspaces"%plain\input{"filenamewithspaces"}%latex参阅Web2C文档以了解更多信息:texmf-dist/doc/web2c.
encTEX的支持现在已被包含在Web2C中,因而所有TEX程序都可以通过-enc参数启用这一支持—前提是构建好了格式文件.
encTEX提供了对输入输出通用的重新编码功能,实现对Unicode(以UTF-8编码的形式)的完整支持.
参见texmf-dist/doc/generic/enctex/和http://olsak.
net/enctex.
html.
提供了Aleph这套新的TEX引擎,它将ε-TEX和合并到了一起.
关于Aleph的部分信息可以在texmf-dist/doc/aleph/base和https://texfaq.
org/FAQ-enginedev找到.
Aleph的LATEX格式文件称做lamed.
最新发布的LATEX包含了是新版的LPPL授权协议—这一协议已被Debian首肯.
LATEX其他的更新请见texmf-dist/doc/latex/base下的ltnews文件.
包含了一个叫做dvipng的新程序,用于将DVI转换为PNG图像文件.
参见https://ctan.
org/pkg/dvipng.
我们在作者(ClaudioBeccari)的同意下,将cbgreek包含的字体数量减少到中等.
去除了不可见、轮廓和透明版本的字体,这些字体几乎很少用到.
而我们的光盘镜像需要空间.
完整版本当然还是在CTAN提供(https://ctan.
org/pkg/cbgreek-complete).
去掉了oxdvi,改为只使用xdvi.
9发行历史37不再为tex,mf,和mpost程序创建ini和vir开头的命令链接,比如initex.
ini的功能早在几年前就通过-ini命令行参数提供了.
去掉了i386-openbsd平台的支持.
因为在BSDPorts系统中已经包含了tetex软件包,而GNU/Linux和FreeBSD下的二进制版本都已存在,所以志愿者的时间可以花在其他的地方了.
至少在sparc-solaris平台下,你必须设置好LD_LIBRARY_PATH环境变量才能执行t1utils包含的程序.
因为这些程序是使用C++编写的,其运行时库没有固定的位置.
(这一情况并非在2004版中首次出现,但现在才写入文档)与之类似,mips-irix平台下需要用到MIPSpro7.
4运行时库.
9.
1.
320052005年一如往常,宏包和程序都有大量的更新.
底层结构和2004年相比保持了稳定,不过仍然存在一些变化.
引入了新的texconfig-sys,updmap-sys,和fmtutil-sys安装脚本,用于修改系统目录树下的配置.
而原有的texconfig,updmap,和fmtutil则用于修改针对单个用户的文件(放在$HOME/.
texlive2005目录下的).
增加了对应的TEXMFCONFIG和TEXMFSYSCONFIG变量,分别用于设置针对用户和系统的,专门存放配置文件的目录树.
所以你需要将个人使用的fmtutil.
cnf和updmap.
cfg放到合适位置.
不过还有一种方法是在texmf.
cnf里边重新定义TEXMFCONFIG或TEXMFSYSCONFIG变量.
无论如何,这两个值对应的实际目录都必须正确存在.
参见第6页的第2.
3节.
虽然我们在上一年就已经使用了pdfetex作为输出程序,但在它输出DVI格式时会禁用\pdfoutput等原语(primitive).
这一年,我们按照预期计划取消了这一兼容性限制.
所以,如果你的文档里使用了\ifx\pdfoutput\undefined这样的语句来判断是否正在PDF输出模式下,现在就必须修改了.
你可以使用ifpdf.
sty宏包(对plainTEX和LATEX都适用)来判断,或者仿照这个文件里的判断原理自己写一个.
上一年,我们将格式文件的输出改成了和这些文件本身一样的8位字符.
在你需要的情况下,可以使用新的TCX文件empty.
tcx来获得原有的^^表示方式.
例如:latex--translate-file=empty.
tcxyourfile.
tex新增了用于转换DVI为PDF的dvipdfmx程序,这是dvipdfm的一个比较活跃更新的版本(我们仍然提供dvipdfm,但不建议你继续使用).
新增了叫pdfopen和pdfclose的两个程序,用于控制AdobeAcrobat/Reader在不重启程序的情况下重新载入PDF文件.
(其他的PDF阅读器,如xpdf,gv,和gsview,都不会遇到这个问题.
)为了保持一致性,将HOMETEXMF和VARTEXMF环境变量分别更名为TEXMFHOME和TEXMFSYSVAR.
还有一个针对单独用户的TEXMFVAR环境变量可用.
参见上面的第一点.
9.
1.
42006–20072006–2007年,TEXLive的一个重大变化是增加了XeTEX,以xetex和xelatex程序的形式提供.
请参见https://scripts.
sil.
org/xetex.
MetaPost也有可观的更新,并计划在未来实现更多的改进(https://tug.
org/metapost/articles),pdfTEX同样如此(https://tug.
org/applications/pdftex).
TEX.
fmt(缓存格式)文件和用于MetaPost和METAFONT的类似文件现在存储在texmf/web2c的子目录中而不直接放在texmf/web2c目录下(不过考虑到现有的.
fmt文件,直接放置在这个目录下的文件仍然能被搜索到).
子目录的名称是根据当前使用的"引擎"决定的,比如tex或pdftex或xetex.
这个变化不会对日常使用带来任何影响.
(plain)tex程序不再通过读取%&开头的第一行来决定执行何种格式,而遵循纯粹的Knuth风格TEX的传统.
(LATEX和其他所有的程序仍然读取%&开头的行.
)当然,和往常一样,这一年里你能看到成百上千的宏包与程序得到更新.
也和往常一样,进一步的更新请使用CTAN(https://ctan.
org).
9发行历史38从内部角度上看,源代码树现在改为使用Subversion管理,并在我们的主页上提供了到Web界面的链接,用于浏览代码树.
我们希望它能成为未来几年中稳定的开发平台.

老薛主机VPS年付345元,活动进行时。

老薛主机,虽然是第一次分享这个商家的信息,但是这个商家实际上也有存在有一些年头。看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港VPS主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港VPS。如果没有记错的话,早年这个商家是主营个人网站虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

iWebFusion:独立服务器月付57美元起/5个机房可选,10Gbps服务器月付149美元起

iWebFusion(iWFHosting)在部落分享过很多次了,这是成立于2001年的老牌国外主机商H4Y旗下站点,提供的产品包括虚拟主机、VPS和独立服务器租用等等,其中VPS主机基于KVM架构,数据中心可选美国洛杉矶、北卡、本德、蒙蒂塞洛等。商家独立服务器可选5个不同机房,最低每月57美元起,而大流量10Gbps带宽服务器也仅149美元起。首先我们分享几款常规服务器配置信息,以下机器可选择5...

freebsd安装为你推荐
文件夹删不掉文件夹删不掉怎么办有趣的广告比较有趣的广告词有哪些eset最新用户名密码求ESET Smart Security最新用户名和密码百度抢票浏览器手机百度浏览器抢票版根本就没预约抢票。噱头而已!公章制作如何制作公章网站运营我想成为网站运营的人我该学什么??不兼容vivo手机和软件不兼容怎么办?镜像文件是什么什么是文件镜像?什么是镜像文件?xp系统停止服务Windowsxp系统为什么停止服务ejb开发EJB是什么?
抗投诉vps主机 什么是二级域名 中文域名交易中心 泛域名绑定 budgetvm 新秒杀 godaddy主机 vultr美国与日本 英语简历模板word 名片模板psd 南昌服务器托管 嘟牛 华为网络硬盘 空间出租 网站cdn加速 工作站服务器 hinet 流量计费 美国免费空间 卡巴斯基破解版 更多