全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 LATEX论坛
2873 1
2014-11-20
TeX 发展了若干年,各种字体,宏包的数目已经非常地多了,比如你看现在的 CTeX 完整版安装完后就已经超过 1GB 大小了,而 TeXLive 光盘已经要使用 DVD 了。这么多的文件,各个 tex 编译程序如何找到它们就成了个大问题,总不能一个目录一个目录地搜索吧。
TeX 用户组织(TUG)发明了 Web2C/Kpathsea 系统,用于自个发布的 TeXLive 发行版。这个系统基本思路是:所有 tex 相关文件按照 TeX 目录结构标准(TDS)放在若干个 TEXMF 目录里面,然后所有 tex 程序比如 tex.exe,pdftex.exe,xetex.exe 在编译的时候如果需要寻找任何文件,都通过 kpathsea.dll 运行库查询文件所在的位置。当然,你也可以自己运行 kpsewhich.exe 程序手动查询某个文件所在的位置。
kpathsea 当然不会傻到一个目录目录的去查找文件,它是根据 tds 目录结构,按照文件的扩展名去相应的目录查找。比如你需要寻找 article.cls 文件,运行下列命令
kpsewhich article.cls时,kpathsea 发现这个文件是 latex 的文档类文件,所以只去各个 TEXMF 目录的 tex\latex 子目录里查找这个文件。然后返回文件所在的位置。

我们之前说 TEXMF 目录有不止一个,比如你打开 TeXLive 的安装目录,可以看到 texmf,texmf-dist,texmf-var 等等子目录,这些都是 TEXMF 目录。所以现在还得明白的是,kpathsea 怎么才能知道 TEXMF 目录都有哪些,分别在什么位置呢?实际上 kpathsea 运行的时候,首先要去寻找一个叫做 texmf.cnf 的文件,这个文件记录了各个 TEXMF 所在的位置。
那么,kpathsea 又要去哪些地方寻找 texmf.cnf 文件呢?在 kpathsea 中,以 $SELFAUTOLOC、$SELFAUTODIR 和 $SELFAUTOPARENT 变量分别表示 kpathsea 所在目录、kpathsea 所在目录的上一级目录和 kpathsea 所在目录的上两级目录。默认情况下, kpathsea 按照如下顺序查找 texmf.cnf 文件:
{$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}这种写法是 kpathsea 的简写,需要解释一下:花括号里面用逗号隔开的几个路径段表示要挨个试,括号与括号或者路径段放在一起表示两者连接起来组成新的路径;而特殊的是,括号内的最前或最后可能有一个逗号,这表示最前面或最后面有一个空路径段。这种简写法多半很雷人,那么我们把这个表示法的完整展开式按顺序写一下吧:
$SELFAUTOLOC;$SELFAUTODIR;$SELFAUTOPARENT;$SELFAUTOLOC/share/texmf-local/web2c;$SELFAUTODIR/share/texmf-local/web2c;$SELFAUTOPARENT/share/texmf-local/web2c;$SELFAUTOLOC/texmf-local/web2c;$SELFAUTODIR/texmf-local/web2c;$SELFAUTOPARENT/texmf-local/web2c;$SELFAUTOLOC/share/texmf/web2c;$SELFAUTODIR/share/texmf/web2c;$SELFAUTOPARENT/share/texmf/web2c;$SELFAUTOLOC/texmf/web2c;$SELFAUTODIR/texmf/web2c;$SELFAUTOPARENT/texmf/web2c;找到了 texmf.cnf 一切就都顺利了。最后,这些 TEXMF 所在的位置也可以通过环境变量设置,而且这样设置的优先级最高。
还有,CTeX 以及它所包含 MiKTeX 不使用 web2c/kpathsea 系统,TeXLive 和 W32TeX 使用。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-11-21 12:50:09
问下版主,论坛插入latex的时候怎么弄成行内的而不是行间的啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群