如何在 MikTex 2.9 中安装日文 dmjhira 字体?
我正在尝试执行与上述问题中提到的相同任务。我的目标是在我的 latex 文件中生成平假名“yo”字符。现在,我正在尝试一个小的测试代码,它正是上述问题的解决方案中的一个
\documentclass{book}
\begin{document}
abc
\font\maljapanese=dmjhira at 2ex
\maljapanese \char"48
\end{document}
我正在尝试使用 TeXstudio 和 PdfLaTeX 编译器来编译它。我得到了以下日志文件,其中我在文件路径中使用 <---> 隐藏了一些个人信息。
- makepk-日志
2022-12-04 21:35:19,271-0500 INFO miktex-makepk - this process (16864) started by pdflatex in directory D:\Local Drive\<Univ>\<sem>\Math R\Documents\Set-2\Test with command line: miktex-makepk --verbose dmjhira 517 600 0+517/600
2022-12-04 21:35:19,273-0500 INFO miktex-makepk - running on Windows 10.0.22621
2022-12-04 21:35:19,275-0500 INFO makepk - Trying to make PK font dmjhira at 517 DPI...
2022-12-04 21:35:19,279-0500 INFO makepk - The METFAONT mode is: ljfour
2022-12-04 21:35:19,281-0500 INFO makepk - Running miktex-makemf.exe...
2022-12-04 21:35:19,281-0500 INFO makepk - running: miktex-makemf.exe --miktex-disable-maintenance --miktex-disable-diagnose --verbose dmjhira
2022-12-04 21:35:19,281-0500 INFO miktex-makepk.core - start process: miktex-makemf.exe --miktex-disable-maintenance --miktex-disable-diagnose --verbose dmjhira
2022-12-04 21:35:19,611-0500 INFO makepk - Running miktex-ttf2pk.exe...
2022-12-04 21:35:19,611-0500 INFO makepk - running: miktex-ttf2pk.exe --miktex-disable-maintenance --miktex-disable-diagnose -q -t dmjhira
2022-12-04 21:35:19,611-0500 INFO miktex-makepk.core - start process: miktex-ttf2pk.exe --miktex-disable-maintenance --miktex-disable-diagnose -q -t dmjhira
2022-12-04 21:35:20,043-0500 FATAL miktex-makepk - PK font dmjhira could not be created.
2022-12-04 21:35:20,043-0500 FATAL miktex-makepk - PK font dmjhira could not be created.
2022-12-04 21:35:20,043-0500 FATAL miktex-makepk - Info:
2022-12-04 21:35:20,043-0500 FATAL miktex-makepk - Source:
2022-12-04 21:35:20,043-0500 FATAL miktex-makepk - Line: 0
2022-12-04 21:35:20,051-0500 INFO miktex-makepk - this process (16864) finishes with exit code 1
- makemf-日志
2022-12-04 21:35:19,533-0500 INFO miktex-makemf - this process (5260) started by miktex-makepk in directory C:\Users\<name>\AppData\Local\Temp\mik38448 with command line: miktex-makemf.exe --miktex-disable-maintenance --miktex-disable-diagnose --verbose dmjhira
2022-12-04 21:35:19,533-0500 INFO miktex-makemf - running on Windows 10.0.22621
2022-12-04 21:35:19,537-0500 FATAL miktex-makemf - The dmjhira source file could not be found.
2022-12-04 21:35:19,537-0500 FATAL miktex-makemf - The dmjhira source file could not be found.
2022-12-04 21:35:19,537-0500 FATAL miktex-makemf - Info:
2022-12-04 21:35:19,537-0500 FATAL miktex-makemf - Source:
2022-12-04 21:35:19,537-0500 FATAL miktex-makemf - Line: 0
2022-12-04 21:35:19,545-0500 INFO miktex-makemf - this process (5260) finishes with exit code 1
我只为一个用户安装了 MiKTeX,最终安装在
C:\Users\<name>\AppData\Local\Programs\MiKTeX
这是迄今为止我所尝试过的。
- 在任务菜单中刷新字体映射文件
- 使用 updmap.exe 等命令
C:\Users\<name>\AppData\Local\Programs\MiKTeX\miktex\bin\x64
- 尝试在管理员模式下运行 MiKTeX 控制台或 cmd 时执行相同操作。
- 当使用 TeXstudio 中的 XeLaTeX 编译器而不是 PdfLaTeX 时,该文件会进行编译,这也很奇怪。
最后,不管日志中显示什么,我正在运行最新版本的 Windows 11,并且正在使用 Surface Pro 9。
我也怀疑这可能是某种 Windows 权限错误?不过,我只是不确定出了什么问题。同样,makeidx 包对我来说也不起作用。它显示错误,如未找到 main.ind,并且在工作目录中文件夹 main.ind 也从未生成。
答案1
您需要正确安装cjk-fonts
MiKTeX 包并更新系统,特别是地图文件。
在 TeX Live 中这些字体位于wadalab
,但显然 MiKTeX 只提供包含它们的一个包。
设置完成后,您需要修改选择字体的代码,因为声明\font
应该绝不可直接在 LaTeX 中使用(您获得的代码适用于纯 TeX)。
如果 type1 字体映射文件不好(在当前的 MiKTeX 中似乎是这种情况),您可以在 LaTeX 文档中添加一行,至少直到修复错误为止。
\pdfmapline{+dmjhira dmjhira <dmjhira.pfb}
\documentclass{book}
\DeclareFontFamily{U}{dmjhira}{}
\DeclareFontShape{U}{dmjhira}{m}{n}{
<-> dmjhira
}{}
\DeclareFontSubstitution{U}{dmjhira}{m}{n}
\newcommand{\yo}{{\usefont{U}{dmjhira}{m}{n}\symbol{"48}}}
\begin{document}
abc \yo\ def
\end{document}
但是,这些字体的边界框很大,这可能会干扰分页和行距。
\documentclass{book}
\DeclareFontFamily{U}{dmjhira}{}
\DeclareFontShape{U}{dmjhira}{m}{n}{
<-> s*[0.95] dmjhira
}{}
\DeclareFontSubstitution{U}{dmjhira}{m}{n}
\newcommand{\yo}{%
\raisebox{0.2\depth}[\fontcharht\font`A][0.1\depth]{%
\usefont{U}{dmjhira}{m}{n}\symbol{"48}%
}%
}
\begin{document}
\fboxsep=0pt\fboxrule=0.1pt
\fbox{A}\fbox{\yo}\fbox{b}
abc \yo\ def
\end{document}
使用此代码,字符的大小会缩小 5%,稍微升高,但边界框会固定。
答案2
您可以使用以下代码获取平假名“yo”,该代码取自Johnson-Freyd 和 Scheimbauer 的论文现在也出现了在 nlab 上。我不明白这段代码,但它对我来说在 Overleaf 中有效。我认为它不需要安装 dmjhira 字体。
\usepackage[utf8]{inputenc}
\DeclareFontFamily{U}{min}{}
\DeclareFontShape{U}{min}{m}{n}{<-> udmj30}{}
\newcommand\yo{\!\text{\usefont{U}{min}{m}{n}\symbol{'207}}\!}`
答案3
到目前为止,所有答案都讨论了如何加载传统的 8 位字体。如果您的出版商或教授仍然要求您使用 PDFTeX,您可能需要这样做,但我建议您在可以的情况下使用带有 Unicode 和桌面字体的现代工具链。这可以解决许多难题。
这是从 Harano Aji Mincho(CTAN 提供的字体)加载 よ 的 MWE。它演示了如何在文本、粗体文本和数学中使用该符号。
\documentclass{article}
\tracinglostchars=3
\usepackage{amsmath}
\usepackage{fontspec}
\defaultfontfeatures[HaranoAjiMincho]{
Renderer=HarfBuzz,
Script=Kana,
Scale=MatchUppercase,
UprightFont=*-Light,
BoldFont=*-Medium,
Extension=.otf
}
\newfontfamily\kanafont{HaranoAjiMincho}
\DeclareRobustCommand\yo{\textup{\kanafont よ}}
\begin{document}
The Hirigana for \textit{yo} is {\yo}.
\section*{The Yoneda Embedding \yo}
The Yoneda embedding is \(\yo(\mathcal{K})\).
\end{document}
为了能够在源代码中使用文字よ字符,请添加以下行:
\usepackage{newunicodechar}
\newunicodechar{よ}{\yo}