当我使用 metafont 字体时,pdflatex 会调用mf
来生成 pk 字体文件。我想更改创建 pk 文件的分辨率。
如果我没记错的话,调用堆栈是:
pdflatex
→ kpsewhich
→ mktexpk
→mf-nowin
正如这里报道的那样http://tug.org/texinfohtml/kpathsea.html#Glyph-lookup,kpsewhich
应该调用mktexpk
来生成缺失的字体,这与mktexpk
不是 texmf.cnf 中的 shell_escape_commands 之一的事实相符。
为了更改发送到 mf 的模式和分辨率选项,我尝试修改 mktex.cnf,但没有成功(为了以防万一,还尝试了 config.ps;我还确保 kpsewhich 找到的是修改后的文件,而不是其他文件)。
我的目标是 1200 dpi 的 ljfzzz;有人知道如何将这些设置为默认设置吗?
另外,我应该如何调用 kpsewhich 以便它生成 pk 文件?(当然,当 pk 文件尚不存在时)
MWE-pdflatex 以下内容:
\documentclass{article}
\usepackage{shuffle}
\begin{document}
$\shuffle$
\end{document}
(如果您已经有了 shuffle10.600pk 文件,请最终将其删除)
答案1
最简单的方法是添加
\pdfpkmode{ljfzzz}
\pdfpkresolution=1200
在文档的开头。
如果您想要全局设置,请遵循以下几个步骤。
mktex.cnf
根据您的需求创建一个文件: ${MT_FEATURES=appendonlydir:varfonts} : ${MODE=ljfzzz} : ${BDPI=1200}
将其复制为
/usr/local/texlive/texmf-local/web2c/mktex.cnf
复制默认文件
pdftexconfig.tex
并/usr/local/texlive/2016/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex
更改行\pdftexpkresolution=600
到
\pdftexpkresolution=1200
将修改后的文件保存在
/usr/local/texlive/texmf-local/tex/generic/tex-ini-files/pdftexconfig.tex
跑步
mktexlsr
跑步
fmtutil-sys --byengine pdftex
不幸的是所有步骤都不可避免,因为pdftex
默认以 启动\pdfpkresolution=72
,所以必须在格式中为该参数设置一个合适的值。
这是可以改进的领域。例如,\pdfpkresolution
可以根据kpathsea
变量而不是来设置 的默认值72
。这样可以避免在 中添加值pdftexconfig.tex
,因此只需更改mktex.cnf
并设置 的值texmf.cnf
即可。因此只需要步骤 1、2 和 5。
在 GNU/Linux 机器上的 vanilla TeX Live 上进行了测试。请注意,您应该具有超级用户权限,并注意超级用户 shell 路径指向正确的 TeX Live 二进制文件。