![使用 alphabeta 和 cfr-lm 加粗希腊字母](https://linux22.com/image/424861/%E4%BD%BF%E7%94%A8%20alphabeta%20%E5%92%8C%20cfr-lm%20%E5%8A%A0%E7%B2%97%E5%B8%8C%E8%85%8A%E5%AD%97%E6%AF%8D.png)
我使用该alphabeta
软件包是为了在文本模式下获得直立的希腊字母。我还想在文本模式下使用粗体和无衬线直立希腊字母。这适用于和computer modern
(latin modern
使用lmodern
)字体,但不适合其他字体。特别是我想使用latin modern
来自的功能更丰富的实现cfr-lm
。
\documentclass{article}
\usepackage{alphabeta}
% \usepackage{lmodern} % <- works just as computer modern
% \usepackage{cfr-lm} % <- different result compared to computer modern
\begin{document}
Ab\Gamma\delta123
\textbf{Ab\Gamma\delta123}
\textsf{Ab\Gamma\delta123}
\end{document}
\textbf
使用 时, 和命令\textsf
对希腊字母没有影响。这里出了什么问题?和cfr-lm
之间的哪部分实现差异破坏了此功能?我该如何修复它?lmodern
cfr-lm
部分修复:当我使用
\DeclareFontFamilySubstitution{LGR}{clm2j}{cmr}
我可以修复粗体字母,但这是正确的前进方式吗?
答案1
没有适用lgrclm2j.fd
于 的希腊字体文件(例如 )cfr-lm
。因此,NFSS 尝试回退到cmr
,这恰好对衬线字体有效(尽管带有警告消息),但对无衬线字体则失败(对 也会失败\ttfamily
)。
您可以执行以下操作:
\documentclass{article}
\usepackage[LGR,T1]{fontenc}
\usepackage{alphabeta}
% \usepackage{lmodern} % <- works just as computer modern
\usepackage{cfr-lm} % <- different result compared to computer modern
\usepackage{substitutefont}
\substitutefont{LGR}{clm2j}{cmr}
\substitutefont{LGR}{clm2js}{cmss}
\begin{document}
Ab\Gamma\delta123
\textbf{Ab\Gamma\delta123}
\textsf{Ab\Gamma\delta123}
\end{document}
这告诉 NFSS 回退到 Computer Modern Roman 和 Computer Modern Sans Serif,这是可行的。
如果你可以使用 LuaLaTeX 或 XeLateX,你可以改用 OpenType New Computer Modern,
\usepackage[default]{fontsetup}