編輯 (cfr)

編輯 (cfr)

我收到了 的错误报告ebgaramond-maths。虽然从某种意义上说,这个问题显然是由我的包引起的,但我不清楚除了扩展文档中的声明或在 中进行设置之外,我是否还能做些什么\Huge。(\bfseries在这种情况下,这自然是无效的。)

文档已经指出 OML 编码中缺少字符,并指出这是字体的限制,而不是软件包的限制。这是真的。

我不太明白的是,在这种情况下,LaTeX 不会生成非常有用的关于缺失字符的警告。警告会写入日志文件,但并不是很有用:

Missing character: There is no ( in font EBGaramond12-Italic--oml-ebgaramond!
Missing character: There is no * in font EBGaramond12-Italic--oml-ebgaramond!

是针对以下代码生成的警告:

\documentclass{article}

\usepackage{ebgaramond-maths}

\begin{document}

    $\leftharpoonup \rightharpoonup$

\end{document}

这会生成一个空白页。在较长的文档中,很难看出哪些符号实际上缺失了。(我猜在编码槽位置方面存在对应关系,但很少有用户会看到这一点或知道如何跟进,即使我的猜测是正确的。)

出现空白页的原因是ebgaramond-maths必须声明 EBGaramond 的替代品letters,并且当 LaTeX 无法在字体中找到字符时,它不会像无法找到字体本身那样回退到其他字体。(至少,我认为这是正在发生的事情。)

如此ebgaramond-maths神奇地使字符消失,就像缺少字符的文本字体会使字母和文本符号消失一样:没有包,符号就会出现;有了包,符号就会消失。

我不确定我能做什么或应该做什么。毕竟,最合适的解决方法取决于用户的其他字体配置(例如,如果其他东西用于数学)。虽然newtxmath建议用于积分和括号,但这最终取决于用户,并且将其他字体中的符号作为其一部分绘制肯定是不合适的ebgaramond-maths

针对此类问题,建议采取什么政策/做法/应对措施?

答案1

在理想情况下,这种情况不应该发生。如果字体是 OML 编码的,那么它应该有\leftharpoonup,如果没有,\leftharpoonup那么它应该采用不同的编码。

但世界并不总是理想的,任意从其他地方引入字符有点武断,并且声明一个新的编码 OML2 或其他什么,并声明要使用的所有数学运算可能比你想要的更彻底的改变,并且必然与某些东西不兼容。

textcomp包具有类似的问题,因为 TS1 编码在实践中并未得到广泛支持,并且具有包选项来声明 TS1 编码的某些子集(并将不在该子集中的命令定义为错误)。

根据 OML 中缺少的字符数,我可能会将它们定义为错误

\def\leftharpoonup{\PackageError{ebgaramond-maths}{No \string\leftharpoonup}{use ...}}

关于什么的一些选择......例如,您可以使用包选项将它们从其他字体中拉入,或者建议一些包来重新定义它们而不覆盖其余的letters插槽或......

編輯 (cfr)

这是我最终使用的代码,至少目前是这样:

% The following symbols are missing and should give errors
\gdef\ebgaramond@maths@help{%
  EBGaramond does not provide this symbol.\MessageBreak
  If you are using the recommended setup with newtxmath\MessageBreak
  you can use \string\re@DeclareMathSymbol{}{}{}{} to take it from another font.\MessageBreak
  For example, to take symbols from Computer Modern:\MessageBreak
  \expandafter\noexpand\string\DeclareSymbolFont{cmletters}{OML}{cmm} {m}{it}\MessageBreak
  Then a specific symbol, such as \string\leftharpoonup, can be defined as follows:\MessageBreak
  \expandafter\noexpand\string\re@DeclareMathSymbol{\string\leftharpoonup}{\mathrel}{cmletters}{"28}}

% Warning based on David Carlisle's answer at http://tex.stackexchange.com/a/214524/
\newcommand*{\ebgaramond@maths@dim}{\leftharpoonup,\leftharpoondown,\rightharpoonup,\rightharpoondown,\triangleright,\triangleleft,\star,\partial,\flat,\natural,\sharp,\smile,\frown,\vec,\t}
\@for \xx:=\ebgaramond@maths@dim \do {%
  \expandafter\edef\xx{\noexpand\PackageError{ebgaramond-maths}{No \expandafter\string\xx}{\ebgaramond@maths@help}}}

相关内容