2019-8-10, by Careone
最近debian 9 升级到 debian 10. 因为之前运行过
apt-get autoremove , 可能无意中删除了不少孤立的 DEB 包,导致 LYX 编译 PDF (使用 xelex)
时,总是提示某些宏包文件找不到(如: ctexbook.sty ,ctexart.sty , ctexrep.sty 这几个宏包找不到)。
网上查了一些资料,提到一种解决方法:就是在当前用户目录下,
新建一个指定文件名的目录 /home/xxx/texmf/tex/latex/commonstuff/
然后把缺少的 xxx.sty 都放到这个目录下。
经验证,这种方法确实可行,有效。
后来,有空仔细研究了一下 tex/latex 相关的软件包和目录结构,发现还有两种其它解决方案:
1. 就是上面方案的优化版本。其实,只要保证宏包文件 xxx.sty 放在
/home/xxx/texmf/tex/ 目录下就行了。
当然,如果是这个目录的子目录下,或者是多级子目录下,都是可行的。
2. 把宏包文件 xxx.sty 放在系统目录 /usr/share/texmf/
或者 /usr/share/texlive/texmf-dist/ 下,
(或者这两个目录的下级子目录下),再打开对应目录下的 ls-R 清单文件
(实际上就是一个文本文件,用 ls-1R 命令可以得到) ,把添加的宏包文件 xxx.sty 按相同的格式写入
ls-R 文件。再运行 xelatex xxx.tex, 即可成功编译。
=============================
说明1:上面的目录和 ls-R 文件,需要以 root 用户,或者 sudo , su 命令来操作。
说明2:上面提到的两个 ls-R 文件,实际上都是符号链接,对应的真实文件分别是:
代码: 全选
/usr/share/texlive/texmf-dist/ls-R -> /var/lib/texmf/ls-R-TEXLIVEDIST
/usr/share/texmf/ls-R -> /var/lib/texmf/ls-R-TEXMFMAIN
示例:/usr/share/texlive/texmf-dist/ls-R 文件的原始内容示例
--------------
代码: 全选
./tex/latex/ctex:
config
ctexart.cls
ctex-article.def
ctexbeamer.cls
ctex-beamer.def
ctexbook.cls
ctex-book.def
ctex-c5size.clo
ctexcap.sty
ctex-cs4size.clo
ctexheading.sty
ctexhook.sty
ctexpatch.sty
ctexrep.cls
ctex-report.def
ctexsize.sty
ctexspa.def
ctex.sty
ctxdoc.cls
如果我们把自己的宏包文件 xxx.sty xxx.cls, xxx.cfg, xxx.def 放在新目录
/usr/share/texlive/texmf-dist/custom/ 下,即:
代码: 全选
/usr/share/texlive/texmf-dist/custom/xxx.sty
/usr/share/texlive/texmf-dist/custom/xxx.cls
/usr/share/texlive/texmf-dist/custom/xxx.cfg
/usr/share/texlive/texmf-dist/custom/xxx.def
/usr/share/texlive/texmf-dist/ls-R
中,添加下面的内容:
---------------
代码: 全选
./custom/:
xxx.sty
xxx.cls
xxx.cfg
xxx.def
保存。然后运行 xelatex xxx.tex ,即可编译 PDF。