![让 pdflatex 在与 LaTeX 源文件相同的目录中查找字体](https://linux22.com/image/292800/%E8%AE%A9%20pdflatex%20%E5%9C%A8%E4%B8%8E%20LaTeX%20%E6%BA%90%E6%96%87%E4%BB%B6%E7%9B%B8%E5%90%8C%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%AD%97%E4%BD%93.png)
我有一个使用 pdflatex 渲染的文档,该文档使用了一些各种“奇怪的”(即通常不包含在标准 TeX 发行版中的)字体。如果能够将这些字体与文档捆绑在一起,我会很方便,这样就可以轻松地在其他机器上渲染,而无需安装这些额外的软件包。假设我的目录结构如下所示:
mydocument.tex
texmf/
doc/
enc/
map/
opentype/
tex/
tfm/
type1/
vf/
我是否可以在文档标题中添加一个命令,指示 pdflatex 在文档旁边的目录中搜索字体?这比将该目录的内容复制到我想要呈现文档的每台机器上的任何位置要texmf
方便得多。~/texmf
/usr/share/texmf
编辑:
作为测试,我尝试加载字体Gillius
。以下是我的 TeX 代码,它指示我的文档使用此字体:
\renewcommand*\familydefault{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[default]{gillius}
我尝试pdflatex
使用以下命令运行:TEXMFHOME=./texmf pdflatex invoice.tex
,该命令似乎基本有效 - 至少,文件gillius.sty
已正确定位到字体。但是,它似乎无法找到字体的文件texmf/tfm/
- 也就是说,这是我收到的错误:
$ TEXMFHOME=./texmf pdflatex invoice.tex
[... omitted for brevity ...]
(./texmf/tex/T1GilliusADF-LF.fd)
kpathsea: Running mktextfm GilliusADF-Regular-lf-t1
/usr/share/texmf/web2c/mktexnam: Could not map source abbreviation G for GilliusADF-Regular-lf-t1.
/usr/share/texmf/web2c/mktexnam: Need to update /usr/share/texmf-dist/fonts/map/fontname/special.map?
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GilliusADF-Regular-lf-t1
This is METAFONT, Version 2.718281 (TeX Live 2012)
kpathsea: Running mktexmf GilliusADF-Regular-lf-t1
! I can't find file `GilliusADF-Regular-lf-t1'.
<*> ...nonstopmode; input GilliusADF-Regular-lf-t1
Please type another input file name
! Emergency stop.
<*> ...nonstopmode; input GilliusADF-Regular-lf-t1
Transcript written on mfput.log.
grep: GilliusADF-Regular-lf-t1.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input GilliusADF-Regular-lf-t1' failed to make GilliusADF-Regular-lf-t1.tfm.
kpathsea: Appending font creation commands to missfont.log.
! Font T1/GilliusADF-LF/m/n/10=GilliusADF-Regular-lf-t1 at 10.0pt not loadable:
Metric (TFM) file not found.
<to be read again>
relax
l.91 \begin{document}
?
我已经验证了文件pdflatex
提及确实存在,位于./texmf/tfm/GilliusADF-Regular-lf-t1.tfm
。是否还有其他环境变量控制文件pdflatex
搜索的位置*.tfm
?
答案1
通常,TEXMFHOME
应遵循 TDS(Texmf 目录标准)。如果您将各种字体目录(、、、、和)放在下,enc
那么您所做的应该可以正常工作。map
opentype
tfm
type1
vf
texmf/fonts/
你可能能够修改标准变量TFMFONTS
、T1FONTS
、OPENTYPEFONTS
等,以便保持目录结构不变。但是,它们应该设置为什么并不那么明显(您希望保持常用目录仍可访问)。而且更改它们全部会很麻烦。每种字体文件类型都有一个(搜索texmf.cnf
所有可能性),并且名称并不总是很明显(TEXFONTMAPS
对于映射文件、ENCFONTS
对于编码文件)。
答案2
假设 bash 或者类似的 shell:
TEXMFHOME=./texmf pdflatex mydocument
应该有效