![LaTeX 可扩展分隔符定义](https://linux22.com/image/294446/LaTeX%20%E5%8F%AF%E6%89%A9%E5%B1%95%E5%88%86%E9%9A%94%E7%AC%A6%E5%AE%9A%E4%B9%89.png)
我正在编写一种新字体(使用 Metafont),并且正在研究 OMX 编码的数学字体。我已经正确定义了可扩展括号的各个部分,并为 TFM 包含了相当简单的连字程序:
extensible oct"060": oct"060",0,oct"100",oct"102";
extensible oct"061": oct"061",0,oct"101",oct"103";
我非常有信心 TFM 文件正确反映了这些连字程序,如 tftopl 的输出所示:
(CHARACTER C 0
(CHARWD R 0.63999)
(CHARHT R 2.4)
(CHARDP R 0.800001)
(VARCHAR
(TOP C 0)
(BOT O 100)
(REP C B)
)
)
(CHARACTER C 1
(CHARWD R 0.63999)
(CHARHT R 2.4)
(CHARDP R 0.800001)
(VARCHAR
(TOP C 1)
(BOT C A)
(REP C C)
)
)
我还编写了一个 LaTeX 包文件,据我从 fntguide.pdf 中得知,它应该可以启用可扩展字符。以下是 MWE,它并没有真正帮助,因为字体文件不可用,但无论如何它还是值得的:
\documentclass{article}
\DeclareMathVersion{drmmath}
\DeclareFontFamily{OMX}{drm}{}
\DeclareFontShape{OMX}{drm}{m}{n}{ <-> drmomx10 }{}
\DeclareSymbolFont{drmmathomx}{OMX}{drm}{m}{n}
\SetSymbolFont{drmmathomx}{drmmath}{OMX}{drm}{m}{n}
\DeclareMathDelimiter{(}{\mathopen}{operators}{"28}
{drmmathomx}{"00}
\DeclareMathDelimiter{)}{\mathclose}{operators}{"29}
{drmmathomx}{"01}
\mathversion{drmmath}
\begin{document}
$$\left(\frac{%
\frac{x^4}{2a\vartheta^{-\gamma}}
}{\frac{\xi_4^\kappa}{\frac{37\alpha^4 +
b}{\frac{3}{4}y^a}}}
\right)$$
$$\left(\frac{2}{3}\right)$$
$$\left(2\right)$$
\end{document}
如果我将“drmmathomx”更改为“largesymbols”,扩展就会起作用;但是,如果我不这样做,它们就不会起作用。字形来自正确的字体;但它们没有扩展。我尽我所能地搜索了可用的文献,但老实说,我不知道这里是什么不起作用。任何关于这个深奥问题的帮助都将不胜感激。
答案1
对于可能遇到类似问题的其他人,我设法研究了一些其他字体文件并发现了问题。
看来我做的一切都正确,只是在 OMX 字体的连字符表中我没有指示 Metafont 将相应的符号关联在一起。因此,相关的连字符条目现在如下所示:
charlist oct"000" : oct"020" : oct"022" : oct"040" : oct"060";
charlist oct"001" : oct"021" : oct"023" : oct"041" : oct"061";
extensible oct"060": oct"060",0,oct"100",oct"102";
extensible oct"061": oct"061",0,oct"101",oct"103";
在 OMX 编码中(我复制它是因为...好吧,因为这是 Knuth 所做的,如果它可以改进,那我的数学水平还不够好),指令将charlist
开括号和闭括号关联在一起;extensible
然后指令告诉 Metafont 在到达oct"060"
和时该做什么oct"061"
,它们是可扩展括号的顶部部分。
现在它起作用了,我的头痛也消失了。真尴尬,这是一件如此简单的事情。