Skip to content

コマンドライン書式

Takayuki YATO edited this page Jan 11, 2019 · 2 revisions

コマンドライン書式

satysfi [<オプション>]... <入力ファイル名>
  • オプションと入力ファイル名の間の順序は任意です。
  • 入力ファイル名は必須です。また、特に.satyなどの拡張子は補われません
  • 実際には入力ファイル名は複数指定できるようですが、現状では、最後の1個以外は無視されるようです。

オプション引数

-help/--help ヘルプメッセージの表示

以下のヘルプメッセージを端末(標準出力)に出力して直ちに終了します。

  -o  Specify output file
  --output  Specify output file
  -v  Prints version
  --version  Prints version
  --full-path  Displays paths in full-path style
  --debug-show-bbox  Outputs bounding boxes for glyphs
  --debug-show-space  Outputs boxes for spaces
  -t  Stops after type checking
  --type-check-only  Stops after type checking
  -b  Use bytecode compiler
  --bytecomp  Use bytecode compiler
  --text-mode  Set text mode
  --markdown  Pass Markdown source as input
  -help  Display this list of options
  --help  Display this list of options

-v/--version バージョンの表示

バージョン情報を端末(標準出力)に出力して直ちに終了します。

  SATySFi version 0.0.3

-o/--output 出力ファイル名の指定

例えば、-o /tmp/duck.pdf を指定すると /tmp/duck.pdf に出力されます。

  • 既定では入力ファイル名の拡張子(最後の.以降の部分)を.pdfに変えたものが出力ファイル名となります。
  • テキスト出力モード(--text-mode指定)では出力ファイル名指定は必須です。

t/--type-check-only 型検査のみを行う

入力ファイルに書かれたコードを型検査して、その式の型が判明した時点で、その型を表示して終了します。

例えば、answer.saty

42

とだけ書いて、satysfi -t answer.saty を実行すると、端末出力の最後は以下のようになります。

……(略)
  reading 'answer.saty' ...
  type check passed. (int)

すなわち、42int型であることがわかります。この要領で、いろいろな値の型を調べることができます。

入力
42 int
42. float
`42` string
{42} inline-text
set-font-size length -> context -> context
(6 * 9, 42mm) int * length
set-font Kana (string * float * float -> context -> context
(/') length -> length -> float

また、例えば stdjabook パッケージを読みこんだ時に定義される \figure コマンドの型を調べたい場合は、

@require: stdjabook
command \figure

と書いた入力ファイルを-t付きでコンパイルすると、次のように表示されます。

……(略)
  type check passed. ([string?; inline-text; block-text] inline-cmd)

※ブロックコマンド(+pなど)にはこの方法は使えないようです。

--debug-show-bbox グリフのバウンディングボックスを表示

出力中の全てのグリフ(フォントの字形)について、そのバウンディングボックスを枠で明示してPDFに出力します。例えば、通常は次のような出力が得られる場合:

元の出力

--debug-show-bboxを付けると以下の出力が得られます。

debug-show-bbox付きの出力

--debug-show-space 空白のボックスを表示

組版結果として生じる空きについて、それのある位置に枠を出力します。例えば、前項で用いた例の場合、--debug-show-spaceを付けると以下の出力が得られます。

debug-show-space付きの出力

--debug-show-spaceの枠は--debug-show-bboxのものと比べて線幅がかなり太いですが、実際の「空きの境界」は線幅の中央の位置であることに注意。

空きの境界

--full-path ファイル名をフルパスで表示する

コンパイル中の過程表示の端末出力において、通常はファイルはパス無しのファイル名で示されます。例えば入力ファイル名がdoc/something.satyの場合、過程表示は以下のようになります。

 ---- ---- ---- ----
  target file: 'something.pdf'
  dump file: 'something.satysfi-aux' (will be created)
  parsing 'something.saty' ...
  parsing 'stdjabook.satyh' ...
  parsing 'pervasives.satyh' ...
……(略)
 ---- ---- ---- ----
  output written on 'something.pdf'.

ところが--full-path付きでコンパイルした場合は、次のように、ファイルが全てフルパス名で表示されるようになります。

 ---- ---- ---- ----
  target file: '/home/me/doc/something.pdf'
  dump file: '/home/me/doc/something.satysfi-aux' (will be created)
  parsing '/home/me/doc/something.saty' ...
  parsing '/home/me/.satysfi/dist/packages/stdjabook.satyh' ...
  parsing '/home/me/.satysfi/dist/packages/pervasives.satyh' ...
  parsing '/home/me/.satysfi/dist/packages/gr.satyh' ...
……(略)
 ---- ---- ---- ----
  output written on '/home/me/doc/something.pdf'.

-b/--bytecomp バイトコンパイラの使用

-bオプションはSATySFiの動作を「純粋なインタプリタ方式」から「中間コードへコンパイルする方式」に変更します。これにより多少(大量の計算が発生する文書では大いに)動作が速くなるはずです。

--text-mode テキスト出力モード

--text-mode <形式設定名>が指定された場合、SATySFiは“組版”内容をPDFではなくテキストで出力する動作に切り替わります。この機能を利用すると、例えば、SATySFi文書をHTML形式やLaTeX形式に変換することが可能になります。(それなんてMacrodown?)

テキスト出力モードの詳細については、「SATySFiのテキスト出力モードのプロトタイプ」の記事を参照してください。

--markdown Markdown文書の入力

--markdown <体裁指定名>が指定された場合、入力ファイルをSATySFi言語ではなくMarkdown(の方言※)のソースとして読み取り、それをSATySFiの組版機能を用いてPDF文書に変換します。

※元祖Markdownの機能の中では「画像挿入」と「HTMLタグ直接記述」が非対応です。

<体裁指定名>はMarkdownの各要素をどのようなSATySFiのコマンドで“実装”するかを決めるものであり、その設定内容は<体裁指定名>.satysfi-mdというファイルに記述されます。SATySFiの標準配布にはmdjaという体裁指定が既に用意されているので、取りあえずは、次のようにしてMarkdownをPDFに変換できます。

satysfi --markdown mdja some-doc.md 

Markdown入力機能の詳細については、「SATySFiによるMarkdown文書からのPDF出力」の記事を参照してください。

Clone this wiki locally