eqn/roff에 ε 및 ℝ 기호를 사용할 수 있나요?

eqn/roff에 ε 및 ℝ 기호를 사용할 수 있나요?

변수가 주어진 실제 좌표 공간에 속함을 나타내는 일반적인 기호 집합은 ε("ELEMENT OF", 유니코드 U+2208) 및 ℝ("DOUBLE-STRUCK CAPITAL R", 유니코드 U+211D)입니다.

이 두 기호를 eqn, troff및/또는 에서 사용할 수 있습니까 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와 같은 유니코드 문자를 보려면 해당 문자가 포함된 글꼴을 찾아 groff에 글꼴 사양 파일을 제공해야 합니다. 일반적으로 ttf 파일을 pfa로 변환하고 목록에 추가합니다.

일반적인 글꼴을 찾을 수 있는 웹사이트는 다음과 같습니다.파일 형식 정보이는 대부분의 DejaVu글꼴에 이 문자가 포함되어 있음 을 나타냅니다 DejaVu Serif. Fedora에서는 이 ttf 글꼴을 패키지에서 설치할 수 있으므로 dejavu-sans-fontsFreeBSD에도 비슷한 글꼴이 있을 것으로 추측됩니다. (그렇지 않은 경우 일치하는 다른 글꼴 중 하나를 사용해 보세요.)

또는 fc-match다음 명령이 있는 경우 해당 문자가 포함된 기존 글꼴 파일을 찾을 수 있습니다.

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

.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 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호출된 string()을 정의 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

관련 정보