eqn/roffにεとℝ記号を使用できますか?

eqn/roffにεとℝ記号を使用できますか?

変数が与えられた実際の座標空間に属することを表す一般的なシンボルのセットは、ε("ELEMENT OF", Unicode U+2208) と ℝ("DOUBLE-STRUCK CAPITAL R", Unicode U+211D) です。

これら2つの記号は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

次のエラーが発生します。

cat test.ms | eqn | groff -ms > test.ps
troff: <standard input>:8: warning: can't find special character 'u211D'

PS出力からわかるように、εは表示されますが、ℝは表示されません。

グローブ出力

私はとFreeBSD 12 eqnを使用していますgroff

答え1

groffでU + 211DなどのUnicode文字を表示するには、その文字を含むフォントを見つけてgroffにフォント仕様ファイルを提供する必要があります。通常、ttfファイルをpfaに変換してリストに追加します。

一般的なフォントを見つけることができるウェブサイトは次のとおりです。ファイル形式情報これは、ほとんどのDejaVuフォントにこの文字が含まれていることを示しますDejaVu Serif。 Fedoraはこのttfフォントをパッケージからインストールできるので、dejavu-sans-fontsFreeBSDにも同様のフォントがあると推測されます。 (そうでない場合は、一致する他のフォントのいずれかを試してください。)

または、fc-match次のコマンドがある場合は、その文字を含む既存のフォントファイルを見つけることができます。

fc-match -s -f '%{file}\n' ':charset=211D'

.ttfこのリストからTrueTypeファイル(通常はサフィックス)を選択する必要があります。

fc-listまたは、コマンドがある場合は、次のようにしてttxttfフォントから文字名をゆっくりと検索できます。

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 Schaffterの記事を読んでください。説明する~についてgroffにフォントを追加。これはマクロ用に書かれていますが、mom通常はgroffで動作します。マクロがそれを処理できない可能性があります。家族自動的に。彼は便利に提供したシェルスクリプトあなたのために働いています。各ディストリビューションはファイルを別の場所に保存するのが好きなので、いくつかの調整が必要な場合があります。

その後、以下を追加できますeqnrc。たとえば、次のようになります。

define @R '"\f[DejaVuR]\[u211D]\fR"'

次に、新しいフォントは必要ありません。

define in '{type "relation" size +3 \[mo]}'

答え2

名前付きグリフセットは、次の場所に記録されます。groff_charマニュアルページ。 εは見えますが、\[mo]ℝは見えません。

16進数の任意の文字を入力できます(例:ℝ)。 UTF-8入力を使用することも可能です。つまり、ℝを直接挿入してください。以下を使用して名前を定義できます。[uNNNN]NNNN\[u211D].char必要:

.char \[Real] \[u211D]

私の答えは文字を入力する方法にのみ関連しています。 Groffが使用するフォントにこれらの文字が含まれているかどうか、それ以外の場合は代替フォントを使用するように教える方法がわかりません。

答え3

完全性を期すために、デフォルトの troff/groff でもこれを行う方法は次のとおりですeqn

troffコマンドを使用して、幅の一部である\hローカルの水平移動を後で実行できます。0.83mまあ。一つまあ組版のための一般的な単位で、mフォントの文字幅に似ています。したがって、我々は他のRでRを打つことができます。

The R\h'-.83m'R space 1.

読みやすくするには、このシーケンスで.ds呼び出される文字列()を定義myrealし、次のようにインスタンス化できます\*[myreal]

.ds myreal R\h'-.83m'R
The \*[myreal] space 2.

では、左に50/100移動してeqn水平に移動できます。back 50まあしたがって、必要がありますR back 50 Rが、ローマフォントも使用したいので、マクロを定義することをお勧めしますmyreal

.EQ
define myreal 'roman { R back 50 R }'
delim $$
.EN

その後、使用してください。インライン区切り文字$$(開始と終了)を定義すると、テキストと方程式からマクロを呼び出すことができます。

Given an input in subspace $myreal$:
.EQ
x \[mo] myreal sup 2
.EN

ここに画像の説明を入力してください。


しかし、最終的にeqnがfat再生コマンドにオフセットを与えるという事実を発見しました。フォントサイズによっては、パラメータを使用する必要がありますfat_offset(単位はems / 100)。上記の例では、次のものも使用できます。

.EQ
set fat_offset 15
x \[mo] fat roman R sup 2
.EN

関連情報