EQN(1)

명칭
eqn - troff 용의 수식 포매터

서식
eqn [-rvCNR] [-d cc] [-T name] [-M dir] [-f F] [-s n] [-p n] [-m n] [ files... ]

명령행 옵션과 파라미터의 사이에, 공백을 두는 것이 가능합니다.

해설
본메뉴얼에서는, groff 문서 포맷 시스템의 일부이다 GNU 버젼의 eqn 에 붙어 기술합니다. eqn (은)는, troff 에의 입력 파일에 파묻히고 있는 수식에 관한 기술을 컴파일 해, troff 하지만 해석할 수 있는 인스트럭션열로 변환합니다. 통상, groff 에 -e 오프 숀을 지정하는 것으로, 본프로그램은 실행됩니다. 문법은 UNIX 의 eqn (와)과 매우 닮고 다니고 있습니다. GNU eqn 의 출력은 UNIX 의 troff 로 처리할 수 없기 때문에, GNU troff 를 이용할 필요가 있습니다. 명령행에 파일명이 지정되지 않았던 경우는, 표준 입력으로부터 읽어들입니다. 파일명으로서 - (을)를 지정했을 경우도 표준 입력으로부터 읽어들입니다.

eqn (은)는, 우선 -M 옵션으로 지정된 디렉토리를, 다음에 /usr/share/tmac, /usr/share/tmac (을)를, 마지막에 표준 매크로 디렉토리 /usr/share/tmac (역주: 중복 하고 있습니다만 원문 대로입니다)(으)로부터 eqnrc (을)를 검색해, 만약 존재하면 입력 파일의 처리에 앞서 읽기를 실시합니다. -R 옵션을 사용하는 것으로, 이 동작을 금지할 수 있습니다.

GNU eqn 는 neqn 의 기능의 모든 것을 제공하는 것이 아닙니다. 저해상도의 타입 라이터와 같은 기기를 (단순한 입력에 대해서는 충분하다 것입니다만) 서포트하지 않습니다.

옵션

-C  직후에 공백 캐릭터나 개행이 아닌 캐릭터가 계속된다 .EQ (와)과 .EN (을)를 해석합니다.

-N  단락 캐릭터로부터 다음의 단락 캐릭터까지의 사이에 개행이 오는 것을 금지합니다. 잘못해 닫는 (분)편의 단락 문자를 적고 잊었을 경우도, 이후의 처리가 올바르게 행해질 가능성이 높아집니다.

-v  버젼 번호를 표시합니다.

-r  사이즈를 1 개만 축소합니다.

-mn 최저의 포인트 사이즈를 n (으)로 합니다. eqn (은)는 하부 와, 슈퍼 스크립트를 n 보다 작은 사이즈로 하지 않습니다.

-Tname
    name 그리고 지정된 기기용의 출력을 실시합니다. 실제는, name (와)과 말하는 값 1 의 매크로가 정의될 뿐입니다. 보통은 eqnrc 그리고 이 정의된 매크로에 의해 출력 기기에 어울리는 설정이 이루어집니다. 디폴트의 출력 기기는 ps 입니다.

-Mdir
    디폴트의 디렉토리 /usr/share/tmac 보다 먼저 지정한 디렉토리 dir 의 eqnrc 를 찾습니다.

-R  eqnrc 파일을 읽어들이지 않습니다.

-fF gfont F 명령와 등가입니다.

-sn gsize n 명령와 등가입니다. 이 옵션은 사용해야 하는 것이 아닙니다. eqn 는, 통상, 수식이 등장한 위치의 포인트 사이즈에 수식의 사이즈를 대면시킵니다.

-pn 위 뒤따라, 첨자가 인접하는 텍스트보다 n 포인트 작아지도록(듯이) 해 eqn (은)는 인접하는 텍스트의 70% 의 사이즈가 되도록(듯이) 조절합니다.

사용법
여기에서는, GNU eqn 와 Unix eqn 의 차이만을 해설합니다.

GNU eqn 의 새로운 특징의 대부분은,TeX 에 근거하고 있습니다. 이하에는, 몇개의 TeX 와 GNU eqn 의 차이를 기술되어 있습니다. 만약, 당신이 TeX 를 모른다면, 무시해도 서로 지장있습니다.

  자동 스페이싱

eqn (은)는, 수식안의 부분 각각 대해 형태를 주어, 그 형태를 이용해 수식 안의 부분의 사이의 간격을 갖춥니다. 이용할 수 있는 형태에는 이하의 것이 있습니다.

ordinary
    1이나 x (와)과 같은 통상의 캐릭터

operator
    Σ (와)과 같이 큰 연산 기호

binary
    + (와)과 같은, 2 항연산자

relation
    = (와)과 같은 관계 기호

opening
    (와 같은 괄호 개시 기호

closing
    )(와)과 같은 괄호 종료 기호

punctuation
    , (와)과 같은 구두점 기호

inner
    괄호 내부에 포함된 부분식

suppress
    오트마틱스페이싱에 의한 위치 보정을 억제한다

식안의 항의 형태는, 이하에 나타내는 2 개의 방법의 어느 쪽인지로 지정됩니다.

type t e
    식안의 항으로 e (을)를 포함하는 것을, 형태 t 이라고 지정합니다. t (은)는, 상술의 형태중에서 지정합니다. 예를 들어, times 하

        type "binary" \(mu

    (이)라고 정의됩니다. 매크로 전개를 막기 위해서(때문에) 쿼-팅 하는 이외는, 형태의 이름은 쿼트 할 필요는 없습니다.

chartype t text
    쿼트되어 있지 않은 캐릭터의 그룹은, 개개의 캐릭터에 분할되어 각각의 캐릭터의 형태가 검색됩니다. 이 변경으로, 각 몬지에 도착해, 각각 격납되고 있는 캐릭터의 형태가 변경됩니다. 이 지정 방법에서는, text 에 있는 캐릭터는, 형태 t (을)를 가지게 됩니다. 예를 들면

        chartype "punctuation" .,;:

    그렇다고 하는 지정은, .,;: 그렇다고 하는 캐릭터가, 각각 구두점 기호형을 가지는 것을 지정 합니다. 이후, 식안에 이러한 캐릭터가 출현했을 경우는, 구두점 기호로서 처리됩니다. 형 t (은)는, letter (이)나 digit 그렇다고 하는 지정도 가능합니다. 이 경우 chartype (은)는, 캐릭터의 폰트의 형태를 변경합니다. 자세한 것은, 폰트 서브 섹션을 봐 주세요.

  새로운 원시적

e1 smallover e2
    이것은 over (와)과 닮아 있습니다; smallover 하 e1 및 e2 의 사이즈를 작게 합니다; 또 e1 및 e2 (와)과 분수의 선과의 사이의 수직폭도 작아집니다. over 원시적은 TeX 의 디스플레이 스타일의 \over 원시적에 대응합니다; smallover (은)는 비디스플레이 스타일의 \over 에 대응합니다.

vcenter e
    e (을)를 수식축 (math axis)에 맞추어 수직 방향으로 센터링 합니다. 수식축은 수직 위치이며, 이것에 맞추어 + 나 - 라고 하는 캐릭터는 센터링 됩니다; 또 분수의 선의 수직 위치로도 됩니다. 예를 들면, sum (은)는 이와 같이 정의되고 있습니다.

        { type "operator" vcenter size +5 \(*S }

e1 accent e2
    e2 (을)를 e1 위의 엑센트로 합니다. e2 (은)는 소문자의 레터에 대해서 적정한 높이에 있으면(자) 가정합니다; e2 (은)는, e1 하지만 소문자의 레터보다 캐릭터의 높이가 높기도 하고 낮거나 하는 경우에는, 필요에 따라서 하부에 이동됩니다. 예를 들면 hat (은)는 이와 같이 정의되고 있습니다.

        accent { "^" }

    dotdot, dot, tilde, vec, dyad 도 accent 원시적을 이용해 정의되고 있습니다.

e1 uaccent e2
    e2 (을)를 e1 아래의 엑센트로 합니다. e2 (은)는 아래에 돌출하지 않은 소문자에 대해서 적정한 높이에 있으면(자) 가정합니다; e2 (은)는, e1 하지만 아래에 쑥 내밀고 있는 경우, 하부에 이동됩니다. utilde 하 uaccent (을)를 사용해 정의되고 있어 baseline하의 tilde 엑센트가 됩니다.

split "text"
    단순한

        text

    (와)과 같은 효과입니다만, text (은)는 쿼트 되고 있기 (위해)때문에 매크로 전개의 대상이 되지 않습니다; text (은)는 개개의 캐릭터에 분할되어 각각의 캐릭터의 사이에 공백이 조정됩니다.

nosplit text

        "text"

    (와)과 같습니다만, text (은)는 쿼트되어 있지 않기 때문에 매크로 전개의 대상이 됩니다; text (은)는 개개의 캐릭터에 분할되지 않고, 각각의 캐릭터의 사이의 공백도 조정되지 않습니다.

e opprime
    prime 의 변형이며, e 의 오퍼레이터로서 작용합니다. A opprime sub 1 (와)과 같은 경우, opprinme 는 prime (와)과는 다른 결과가 됩니다: opprime 그럼 1 (은)는 prime 캐릭터의 바로 밑에 삽입되어 A 의 첨자가 됩니다 (수식판조의 형식과 같이). 한편, prime 그럼 1 (은)는 prime 캐릭터의 첨자가 됩니다. opprime 하지만 전을 뒤따른다고 하는 일은, bar (와)과 under 하지만 전을 뒤따르는 것과 같은 일입니다만, 후자는 accent, uaccent 이외의 다른 모든 캐릭터보다 높아집니다. 쿼트되어 있지 않은 텍스트중에서는, 최초의 캐릭터는 아니다 ' 하 opprime (으)로서 다루어집니다.

special text e
    troff(1) 매크로 text (을)를 사용해, e (으)로부터 새로운 오브젝트를 생성합니다. 매크로가 불려 가면(자), 캐릭터 라인 0s 하 e 의 출력을 보관 유지합니다. 또 숫자 레지스터 0w, 0h, 0d, 0skern, 0skew (은)는 각각 e 의 폭, 높이, 깊이, 첨자의 kerning, skew를 보관 유지합니다 (오브젝트의 subscript kern (이)란, 오브젝트중의 첨자가 어느 정도 삽입되는지를 나타냅니다; 오브젝트의 skew (이)란, 오브젝트상의 엑센트가 오브젝트의 중앙에서 우측으로 향해 어느 정도 떨어져 배치되는지를 나타냅니다). 매크로는 0s (을)를 수정하는 것으로써, 현재 위치에 있어서의 바람직한 결과를 출력해, 이 오브젝트의 폭의 분만큼 현재의 수평 위치를 증가시킵니다. 숫자 레지스터는, 결과에 대응하도록(듯이) 수정되고 있을 필요가 있습니다.

    예를 들면, 수식을 `지우는'구조를, 기울기선을 수식상에 그리는 일에 의해 실현되는 경우를 생각해 봅시다.

        .EQ
        define cancel 'special Ca'
        .EN
        .de Ca
        .ds 0s \Z'\\*(0s'\v'\\n(0du'\D'l \\n(0wu -\\n(0hu-\\n(0du'\v'\\n(0hu'
        ..

    이상의 결과로부터, 식 e (을)를 cancel { e } 에 의해 지울 수가 있습니다.

    다음은 보다 복잡한 구조에 의해, 식의 주위에 상자를 그립니다:

        .EQ
        define box 'special Bx'
        .EN
        .de Bx
        .ds 0s \Z'\h'1n'\\*(0s'\
        \Z'\v'\\n(0du+1n'\D'l \\n(0wu+2n 0'\D'l 0 -\\n(0hu-\\n(0du-2n'\
        \D'l -\\n(0wu-2n 0'\D'l 0 \\n(0hu+\\n(0du+2n''\h'\\n(0wu+2n'
        .nr 0w +2n
        .nr 0d +1n
        .nr 0h +1n
        ..

  커스터마이즈
수식의 외관은 많은 파라미터에 의해 제어합니다. 이러한 파라미터는 set 명령로 설정합니다.

set p n
    파라미터 p (을)를 값 n (으)로 설정합니다; n (은)는 정수입니다. 예를 들면,

        set x_height 45

    (은)는, eqn 에 대해서 x 의 높이는 0.45 em 이다고 지시합니다.

    파라미터를 이하에 나타냅니다. 특히 기술이 없는 경우는, 값은 em 의 100 분의 1 을 의미합니다. 이하의 기술은 정의적이지 않게 설명적으로 되도록(듯이) 의도하고 있습니다.

    minimum_size
        eqn (은)는 이것보다 작은 포인트 사이즈의 세팅을 실시하지 않습니다. 값은 포인트로 지정합니다.

    fat_offset
        fat 원시적은 수식을 볼드로 하기 위해서(때문에), 수식의 카피를 2 회 거듭하고 쳐 합니다. 거듭하고 쳐 할 때에 늦추는 수평폭이 이 값입니다.

    over_hang
        분수의 선의 길이는, 분자 혹은 분모의 넓은 (분)편의 폭에 이 값을 2 배가 된 길이를 더한 길이됩니다; 바꿔 말하면(자), 분자와 분모는 적어도 이 값만 오바항 합니다.

    accent_width
        bar 인가 under 하지만 단일 캐릭터에 대해서 적용되었을 경우, 선의 길이는 이 값이 됩니다. 통상, bar 및 under (은)는 적용 대상의 오브젝트의 폭에 동일한 길이의 선을 생성합니다; 그러나 단일 캐릭터의 경우, 이것으로는 대체로의 경우선이 너무 긴 것처럼 보여 버립니다.

    delimiter_factor
        left 및 right 원시적으로보다 생성되는 신장성이 있는 딜리미터는 높이로 깊이를 가집니다. 딜리미터가 괄은 있는 부분식이 축으로 대해 최대한 신장 하는 길이의 2000 분의 1 을 단위로 하는 이 파라미터로 나타낸 값은, 딜리미터의 높이로 깊이의 최저치를 줍니다.

    delimiter_shortfall
        left 및 right 원시적으로보다 생성되는 신장성이 있는 딜리미터는 높이로 깊이를 가집니다. 딜리미터가 괄은 있는 부분식이 축으로 대해 최대한 신장 하는 길이의 2000 분의 1 을 단위로 하는 이 파라미터로 나타낸 값은, 딜리미터의 높이로 깊이의 차이의 최저치가 됩니다.

    null_delimiter_space
        분수의 전후에 이만큼의 수평 공백이 삽입됩니다.

    script_space
        첨자, 슈퍼 스크립트의 폭이 이만큼 늘려집니다.

    thin_space
        구두점 기호의 뒤에 이만큼의 공백이 자동적으로 삽입됩니다.

    medium_space
        2 항연산자의 전후에 이만큼의 공백이 자동적으로 삽입됩니다.

    thick_space
        관계 연산자의 전후에 이만큼의 공백이 자동적으로 삽입됩니다.

    x_height
        x 와 같이 위에 돌출한 부분이 없는 레터의 높이.

    axis_height
        + 나 - 라고 했다 캐릭터의 센터 위치가 baseline에 대해서 어느 정도 높은가를 나타냅니다. 사용하고 있는 폰트에 대해서 적절한 값을 사용하는 것이 중요합니다.

    default_rule_thickness
        \(ru 캐릭터의 굵기, \D escape sequence에 의해 생성되는 수평선의 굵기를 지정합니다.

    num1
        over 명령은 분자를 최저 이 값만 위로 이동합니다.

    num2
        smallover 명령은 분자를 최저 이 값만 위로 이동합니다.

    denom1
        over 명령은 분모를 최저 이 값만 아래로 이동합니다.

    denom2
        smallover 명령은 분모를 최저 이 값만 아래로 이동합니다.

    sup1
        통상 슈퍼 스크립트는 최저 이 값만 위로 이동합니다.

    sup2
        슈퍼 스크립트중 혹은 상한중의 슈퍼 스크립트, 혹은 smallover 에 있어서의 분자는, 최저 이 값만 위로 이동합니다. 이 값은 통상 sup1 보다 작습니다.

    sup3
        분모중 혹은 평방근중의 슈퍼 스크립트, 혹은 첨자 혹은 하한은, 최저 이 값만 위로 이동합니다. 통상 sup2 보다 작습니다.

    sub1
        통상 첨자는 최저 이 값만 아래로 이동합니다.

    sub2
        첨자와 슈퍼 스크립트의 양쪽 모두가 있는 경우, 첨자는 최저 이 값만 아래로 이동합니다.

    sup_drop
        슈퍼 스크립트의 baseline는, 슈퍼 스크립트가 세트 되는 오브젝트의 상부 에 대해서, 이 값보다 아래가 될 것은 없습니다.

    sub_drop
        첨자의 baseline는, 첨자가 세트 되는 오브젝트의 하부 에 대해서, 적어도 이 값보다 아래가 됩니다.

    big_op_spacing1
        상한의 baseline는, 상한이 세트 되는 오브젝트의 상부 에 대해서 적어도 이 값보다 위가 됩니다.

    big_op_spacing2
        하한의 baseline는, 하한이 세트 되는 오브젝트의 하부 에 대해서 적어도 이 값보다 아래가 됩니다.

    big_op_spacing3
        상한의 하부는, 상한이 세트 되는 오브젝트의 상부 에 대해서 적어도 이 값보다 위가 됩니다.

    big_op_spacing4
        하한의 상부는, 하한이 세트 되는 오브젝트의 하부 에 대해서 적어도 이 값보다 아래가 됩니다.

    big_op_spacing5
        이것으로 지정되는 공백이 상한상 및 하한하에 부가됩니다.

    baseline_sep
        열 또는 행렬의 각 행의 baseline가 얼마나 떨어져 있는지를 지정합니다. 대체로의 경우, 이 값은 num1 (와)과 denom1 의 화에 동일합니다.

    shift_down
        열 또는 행렬의 맨 위의 baseline 및 맨 밑의 baseline의 중간점이, 축으로부터 얼마나 내리고 있는지를 지정합니다. 대체로의 경우, 이 값은 axis_height 에 동일합니다.

    column_sep
        행렬의 렬간에 더해지는 공백의 길이를 지정합니다.

    matrix_side_sep
        행렬의 양단에 더해지는 공백의 길이를 지정합니다.

    draw_lines
        이 값이 비0의 경우, 선을 긋는 경우에 \D escape sequence를 사용해, \l escape sequence와 \(ru 캐릭터는 사용하지 않게 됩니다.

    body_height
        이 값을 식의 높이가 넘은 만큼만, 해당식을 포함한 행의 전의 공백에 더해집니다 ( \x를사용합니다). 기본값은 85 입니다.

    body_depth
        이 값을 식의 깊이가 넘은 만큼만, 해당식을 포함한 행의 뒤의 공백에 더해집니다 ( \x를사용합니다). 기본값은 35 입니다.

    nroff
        이 값이 비 0 의 경우에는, ndefine 하 define (와)과 같이 행동해, tdefine (은)는 무시됩니다. 이 값이 0 의 경우는 tdefine 하 define (와)과 같이 행동해, ndefine (은)는 무시됩니다. 기본값은 0 입니다 (전형적으로는 eqnrc 파일에 의해, ascii, latin1, utf8, cp1047 디바이스의 경우, 이 값은 1 으로 변경됩니다).

    이러한 파라미터의 역할에 관한보다 정확한 기술은 The TeXbook 의 Appendix H 에 기재되어 있습니다.

  매크로
매크로는 인수를 취할 수가 있습니다. 매크로가 인수 첨부로 불렸을 경우, 매크로 보디에서는, $n 다만 n (은)는 1 에서 9 는, n번째의 인수로 옮겨집니다; 인수가 n 보다 적은 경우, 무와 옮겨놓을 수 있습니다. 왼쪽 괄호를 포함한 말로, 왼쪽 괄호보다 전의 말의 부분이 define 명령로 정의되고 있는 말은, 인수 첨부의 매크로 호출로서 인식됩니다; 왼쪽 괄호에 계속되는 복수의 캐릭터는, 대응하는 오른쪽 괄호의 범위까지, 콤마로 단락지어진 인수로서 다루어집니다; 네스트 한 괄호내의 콤마에서는 인수는 단락지어지지 않습니다.

sdefine name X anything X
    define 명령을 닮아 있습니다만, 인수 첨부로 불렸을 경우 name (은)는 인식되지 않습니다.

include "file"
    file 의 내용을 짜넣습니다. file 안의 행으로, .EQ 혹은 .EN 그리고 시작되는 행은 무시됩니다.

ifdef name X anything X
    name 하지만 define 그리고 정의되고 있는 경우 (또는 name 하지만 출력 디바이스이기 위해서(때문에) 자동적으로 정의되고 있는 경우), anything (을)를 처리합니다; 그렇지 않은 경우는 anything (을)를 무시합니다. X 하 anything 에 포함되지 않는 캐릭터이면 뭐든지 상관하지 않습니다.

  폰트
eqn (은)는 통상 적어도 2 개의 폰트를 식세트에 사용합니다: 즉, 레터에는 이탤릭을, 그 외에는 낭만을 사용합니다. 기존의 gfont 명령은, 이탤릭 폰트로서 사용되는 폰트를 변경합니다. 기본값은 I 입니다. 낭만 폰트로서 사용되는 폰트는 새롭다 grfont 명령로 변경합니다.

grfont f
    낭만 폰트를 f (으)로 설정합니다.

italic 원시적은 gfont 에 의해 세트 된 현재의 이탤릭 폰트를 사용합니다; roman 원시적은 grfont 에 의해 세트 된 현재의 낭만 폰트를 사용합니다. 또 gbfont 명령라고 하는 새로운 커멘드도 있어, bold 원시적이어 사용되는 폰트를 변경합니다. 식중에서 폰트를 변경하는데 roman, italic, bold 원시적 밖에 사용하지 않는 경우, 모든 식중의 폰트를 변경하는데는 gfont, grfont, gbfont 명령을 사용하는 것만으로 끝납니다.

어느 캐릭터를 레터 (이탤릭으로 세트 되는 것)로서 취급하는지를, 이미 가리켰다 chartype 명령로 지정할 수 있습니다. letter 타입은 캐릭터를 이탤릭 타입으로 세트 되도록(듯이) 합니다. digit 타입은 캐릭터를 낭만 타입으로 세트 되도록(듯이) 합니다.

관련 파일
/usr/share/tmac/eqnrc 초기화 파일

버그
문중에 출현하는 식은, 행의 선두에서의 캐릭터 사이즈로 설정됩니다.

관련 항목
groff(1), troff(1), groff_font(5), The TeXbook