我在 $HOME/texmf 下本地安装了字体,运行后texhash
一切似乎都正常:
> kpsewhich mtpro2.map
/home/mafp/texmf/fonts/map/dvips/mtpro2/mtpro2.map
> kpsewhich mt2exe.tfm
/home/mafp/texmf/fonts/tfm/pctex/mtpro2/mt2exe.tfm
> kpsewhich mt2exe.pfb
/home/mafp/texmf/fonts/type1/pctex/mtpro2/mt2exe.pfb
然后我就跑了
> updmap --enable Map=mtpro2.map
updmap is using the following updmap.cfg files (in precedence order):
/etc/texmf/web2c/updmap.cfg
/usr/share/texmf/web2c/updmap.cfg
updmap is using the following updmap.cfg file for writing changes:
/etc/texmf/web2c/updmap.cfg
/etc/texmf/web2c/updmap.cfg unchanged. Map files not recreated.
updmap: Updating ls-R files.
这听起来有点可疑,我猜它应该使用 TEXMFHOME 下的 updmap.cfg。事实上,使用字体翻译一个简单的测试文件会得到
> pdflatex mtpro2test
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/TeX Live for SUSE Linux)
restricted \write18 enabled.
entering extended mode
(./mtpro2bug.tex
LaTeX2e <2011/06/27>
Babel <3.9f> and hyphenation patterns for 78 languages loaded.
(/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size10.clo))
(/home/mafp/texmf/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/home/mafp/texmf/tex/latex/amsmath/amstext.sty
(/home/mafp/texmf/tex/latex/amsmath/amsgen.sty))
(/home/mafp/texmf/tex/latex/amsmath/amsbsy.sty)
(/home/mafp/texmf/tex/latex/amsmath/amsopn.sty))
(/home/mafp/texmf/tex/latex/mtpro2/mtpro2.sty) (./mtpro2test.aux) [1{/usr/share/
texmf/fonts/map/pdftex/updmap/pdftex.map}] (./mtpro2test.aux)
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 2+0/600 --dpi 1200 mt2exe
mktexpk: don't know how to create bitmap font for mt2exe.
mktexpk: perhaps mt2exe is missing from the map file.
kpathsea: Appending font creation commands to missfont.log.
)
!pdfTeX error: pdflatex (file mt2exe): Font mt2exe at 1200 not found
==> Fatal error occurred, no output PDF file produced!
我在这里遗漏了什么?
答案1
TEXMFHOME
对于没有超级用户权限或更准确地说没有写权限的人来说,安装字体应该是最后的手段TEXMFLOCAL
。
环境变量TEXMFLOCAL
指向
/usr/local/texlive/texmf-local
在“vanilla” TeX Live 安装上,
/usr/local/share/texmf
在 TeX Live/Debian 上。我不知道它在 SuSE Linux 上指向什么,但这并不重要,因为 shell 命令
kpsewhich --var-value=TEXMFLOCAL
总会给出正确答案。
从 2013 年版本开始,TeX Live 使用略有不同的机制来构建pdftex.map
或updmap
。updmap-sys
三棵树中的每一棵TEXMFMAIN
,TEXMFLOCAL
和都可以在子目录下TEXMFHOME
有一个文件,建议的程序是将地图文件添加到相关文件中;因此,而不是一个应该updmap.cfg
web2c
updmap.cfg
updmap(-sys) --enable Map=mtpro2.map
附加线
Map mtpro2.map
到所选updmap.cfg
文件,然后运行updmap
或updmap-sys
没有參數。
因此,对于用户的唯一添加,该行应附加到
$(kpsewhich --var-value=TEXMFHOME)/web2c/updmap.cfg
(我假设是 Bash shell),而对于更好的方法(如果有人有写入权限TEXMFLOCAL
),该行应该附加到
$(kpsewhich --var-value=TEXMFLOCAL)/web2c/updmap.cfg
然后updmap
在第一种情况下运行,sudo updmap-sys
在第二种情况下运行(或者仅从updmap-sys
超级用户 shell 运行,取决于您的操作系统特性)。
当然,所有字体相关的文件都将使用适当的树进行安装。绝不用于TEXMFDIST
安装 TeX Live 中未包含的字体。
TEXMFLOCAL
为什么尽可能使用更好?因为当tlmgr
(vanilla TeX Live)或操作系统特定的包管理器对涉及字体包的 TeX Live 进行更新时,它们将运行updmap-sys
当然不会使用的updmap.cfg
文件TEXMFHOME
(这只会引用用户特定的文件root
)。
因此,任何参加跑步的人updmap
都会有他们的pdftex.map
档案未更新,因此updmap
应定期手动运行,以反映对主要、分发管理updmap.cfg
文件可能发生的更改。始终使用updmap-sys
(带有附加字体TEXMFLOCAL
)可避免此问题。请注意,TEXMFLOCAL
更新永远不会触及,并将按原样用于 TeX Live 的未来版本。
安装某些后来出现在主发行版中的东西总是有风险的TEXMFLOCAL
(例如,我在安装 STIX 字体时就遇到过这种情况)。
无论如何,我的建议是只使用原始 TeX Live,即使是在 Debian、Fedora、SuSE 或其他系统上。
答案2
只需在终端中输入
sudo updmap-sys
就是这样。我花了几个小时解决这个问题,因为我尝试了许多解决方案,但都没有用,而上面的命令才有效。我不是 LaTeX 的专业人士,只是一个中级用户,所以不知道很多细节,但我理解的是:
它的作用是读取updmap.cfg
文件并重新创建地图文件。因此,您想要通过以下命令创建的文件:
updmap-sys --enable Map=xxx.map
被创造出来!!
答案3
对于 SuSE 用户:您应该检查TEXMFVAR
中的定义/etc/texmf/web2c/texmf.conf
。它可能指向 中定义的系统范围目录TEXMFSYSVAR
。您应该将其更改为TEXMFHOME
:
TEXMFVAR = ${TEXMFHOME}
然后以非 root 用户身份使用updmap
即可按照广告宣传完成工作。