表示变量属于给定的实际坐标空间的一组常用符号是∈("ELEMENT OF",Unicode U+211D)和ℝ(“双击大写字母R",Unicode U+211D)。
这两个符号在eqn、troff和/或groff中可用吗?我在文件里找不到。
编辑:
我已经测试了提供的答案,我可以得到符号∈(“元素”,Unicode U+211D),但不能得到符号ℝ(“双击大写字母R",Unicode U+211D)。
具体而言,如果我这样做了:
.TL
Test
.NH
Introduction
.LP
Given an input in subspace \[u211D]:
.EQ
x \[mo] \[u211D] sup 2
.EN
with output estimated value:
.EQ
y hat
.EN我得到以下错误:
cat test.ms | eqn | groff -ms > test.ps
troff: <standard input>:8: warning: can't find special character 'u211D'可以在PS输出中看到∈,但ℝ不是:

我用的是FreeBSD 12 eqn和groff。
发布于 2021-05-06 19:34:36
如果您想在groff中看到像U+211D这样的unicode字符,您需要找到包含它的字体,并将其提供给groff,通常方法是将ttf文件转换为pfa并将其添加到列表中。
一个为您查找一些常见字体的站点是fileformat.info,它显示了大多数DejaVu字体都包含这个字符,例如DejaVu Serif。在Fedora上,这个ttf字体可以从包dejavu-sans-fonts中安装,所以我认为FreeBSD可能有类似的东西。(如果不是,尝试其他匹配的字体之一)。
或者,如果您有fc-match命令,您可以找到您已经拥有的字体文件中的字符:
fc-match -s -f '%{file}\n' ':charset=211D'您需要从这个列表中选择TrueType文件(通常是后缀.ttf)。
或者,如果您有fc-list和ttx命令,您可以在ttf字体中缓慢搜索字符名:
fc-list |
sed -n 's/\.ttf: .*/.ttf/p' |
xargs -l -t ttx -t cmap -o - 2>&1 |
grep 'ttx\|DOUBLE-STRUCK CAPITAL R'如果找到字形,它将输出文件名和匹配,例如:
ttx -t cmap -o - /usr/share/fonts/dejavu/DejaVuSansMono.ttf
<map code="0x211d" name="uni211D"/><!-- DOUBLE-STRUCK CAPITAL R -->然后,您可以阅读Peter关于向groff添加字体的解释。虽然这是为mom宏编写的,但它一般适用于groff,尽管您的宏可能不会自动处理一个系列。他很方便地为你提供了一个外壳脚本来完成这项工作。可能需要进行一些调整,因为每个发行版都喜欢将文件放在不同的位置。
然后,可以将以下内容添加到您的eqnrc中,例如:
define @R '"\f[DejaVuR]\[u211D]\fR"'以下不需要任何新字体:
define in '{type "relation" size +3 \[mo]}'发布于 2021-05-06 07:29:56
groff_char手册页中记录了一组命名的符号。我看到了\[mo]的∈,但没有ℝ。
您可以使用[uNNNN]输入任意字符,其中NNNN是十六进制数字,所以是ℝ的\[u211D]。您也可以使用UTF-8输入,即直接插入ℝ。您可以用.char请求为它定义一个名称:
.char \[Real] \[u211D]我的回答只涉及你如何输入字符。我不知道Groff使用的字体是否涵盖了这些字符,或者如何教它使用替代字体。
https://unix.stackexchange.com/questions/648352
复制相似问题