是 ?和 ?eqn/roff 中可用的符号?

M.E*_*.E. 9 special-characters unicode roff groff

表示变量属于给定实坐标空间的一组常用符号是?(“元素”,Unicode U+2208)和?(“DOUBLE-STRUCK CAPITAL R”,Unicode U+211D)。

那些是两个符号可用eqntroff和/或groff?我在文档中找不到它们。

编辑:

我已经测试了提供的答案,我可以得到符号?(“ELEMENT OF”,Unicode U+2208),但不是符号?(“DOUBLE-STRUCK CAPITAL 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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

cat test.ms | eqn | groff -ms > test.ps
troff: <standard input>:8: warning: can't find special character 'u211D'
Run Code Online (Sandbox Code Playgroud)

正如在 PS 输出中看到的那样?显示,但是?不是:

输出

我正在使用FreeBSD 12 eqngroff

meu*_*euh 8

如果你想在 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'
Run Code Online (Sandbox Code Playgroud)

您需要.ttf从该列表中挑选出 TrueType 文件(通常的后缀)。

或者,如果您有fc-listttx命令,您可以通过 ttf 字体缓慢搜索字符名称:

fc-list | 
sed -n 's/\.ttf: .*/.ttf/p' |
xargs -l -t ttx -t cmap -o - 2>&1 |
grep  'ttx\|DOUBLE-STRUCK CAPITAL R'
Run Code Online (Sandbox Code Playgroud)

如果找到字形,它将输出文件名和匹配项,例如:

ttx -t cmap -o - /usr/share/fonts/dejavu/DejaVuSansMono.ttf 
      <map code="0x211d" name="uni211D"/><!-- DOUBLE-STRUCK CAPITAL R -->
Run Code Online (Sandbox Code Playgroud)

然后,您可以阅读 Peter Schaffter关于将字体添加到 groff解释。虽然这是为宏编写的,但它通常适用于 groff,尽管您的宏可能不会自动处理一个系列。他方便地提供了一个shell 脚本来为您完成这项工作。由于每个发行版都喜欢将文件放在不同的位置,因此可能需要进行一些调整。mom

然后,您可以将以下内容添加到您的eqnrc,例如:

define @R '"\f[DejaVuR]\[u211D]\fR"'
Run Code Online (Sandbox Code Playgroud)

以下不需要任何新字体:

define in '{type "relation" size +3 \[mo]}'
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 7

groff_char手册页中记录了一组命名字形。我看到\[mo]了?,但没有?。

您可以输入任意字符,其中 where是十六进制数字,因此对于 ?。您还可以使用 UTF-8 输入,即插入 ? 直接地。您可以使用请求为它定义一个名称:[uNNNN]NNNN\[u211D].char

.char \[Real] \[u211D]
Run Code Online (Sandbox Code Playgroud)

我的回答仅涵盖您如何输入字符。我不知道 Groff 使用的字体是否涵盖了这些字符,或者如果没有的话如何教它使用替代字体。