更改默认 metafont 的模式/分辨率(就像直接从 pdflatex 调用时一样)

更改默认 metafont 的模式/分辨率(就像直接从 pdflatex 调用时一样)

当我使用 metafont 字体时,pdflatex 会调用mf来生成 pk 字体文件。我想更改创建 pk 文件的分辨率。

如果我没记错的话,调用堆栈是: pdflatexkpsewhichmktexpkmf-nowin

正如这里报道的那样http://tug.org/texinfohtml/kpathsea.html#Glyph-lookupkpsewhich应该调用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

在文档的开头。

如果您想要全局设置,请遵循以下几个步骤。

  1. mktex.cnf根据您的需求创建一个文件

    : ${MT_FEATURES=appendonlydir:varfonts}
    : ${MODE=ljfzzz}
    : ${BDPI=1200}
    
  2. 将其复制为/usr/local/texlive/texmf-local/web2c/mktex.cnf

  3. 复制默认文件pdftexconfig.tex/usr/local/texlive/2016/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex更改行

    \pdftexpkresolution=600
    

    \pdftexpkresolution=1200
    
  4. 将修改后的文件保存在/usr/local/texlive/texmf-local/tex/generic/tex-ini-files/pdftexconfig.tex

  5. 跑步mktexlsr

  6. 跑步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 二进制文件。

相关内容