テキストファイルの書き方

テキストファイルの書き方
txtnovel では、テキストファイルに設定や本文を記述して、それを元に組版を行います。

テキストファイルの中身は、大きく分けて「設定部分」と「本文部分」の2つに別れています。

テキストファイル先頭から @start-body; までが設定部分、
@start-body; から @end-body; またはファイル終端までが本文部分となります。

(設定部分)
@start-body;
(本文部分)
@end-body;

設定部分と本文部分では、記述方法が少し異なります。
共通のルール
以下は、設定部分と本文部分で共通となる書き方です。

エンコーディングテキストファイルは、UTF-8 で保存してください。
それ以外の文字エンコーディングには対応していません。
改行コードLF、CR、CR+LF のいずれでも構いません。
タブ文字タブ文字は、すべての状況で常に無視され、文字としては扱われません。
インデントとして使うことができます。
異体字UTF-8 テキスト内で Unicode の異体字がある場合、異体字の文字として対応します。
1行コメント行頭に # がある場合は、行末までコメントとして扱われ、スキップされます。

※行の途中にある場合、コメントとしては扱われません。
※行頭にタブしかない場合、タブは文字として扱われないので、タブの後の '#' はコメントになります。

# コメント
(タブ...)# コメント
あああ#これは通常文字になる
複数行コメント/* から */ で囲まれた間(複数行含む)は、コメントして扱われます。
行の途中でも有効です。
/* */ を通常の文字として扱いたい場合は、\ を使ってください。

※本文中では、/* */ の後の改行は、通常通り改段落として扱われるので、注意してください。

/* ここは
複数行コメント */
文中でも/*コメント*/使えるよ
/* 本文中、複数行コメントのあとの改行は改段落になるので、
   必要であれば、バックスラッシュで改行を無効にする */\
通常文字\ (バックスラッシュまたは円記号) の後に続く1文字は、テキスト内のすべての状況において、常に通常の1文字として扱われます。
(構文に関する文字として扱われない)

たとえば、行頭に '#' があって、これをコメントとして扱わずに文字として扱いたい場合、\# と記述します。

\#コメントではない
\@cmd コマンドとして扱わない
改行の無視行末に \ がある場合('\' の後に改行がある場合)、直後の改行を無視して、次の行の先頭と繋げます。
長い文で行を区切りたい場合や、本文中において、改行を改段落として扱いたくない場合に使います。

title:タイトルを\
一旦区切る。;
ファイルパスフォントや画像などでファイルパスを指定する際、絶対パスまたは相対パスで指定できます。
相対パスの場合は、コマンドの引数で指定されたテキストファイルが存在するディレクトリが基準となります。

[例] ../test.txt を引数で指定して実行した場合、../ が基準位置となるので、ファイル内で test.png と指定されていれば、実際には ../test.png が読み込まれます。
サンプル
以下のような形で記述していきます。

# 用紙
@paper{ size:a6; bleed:3; }
# フォント定義
@font[base] {
  file: font.otf;
  size: 9pt;
}
# レイアウト定義
@layout[base]{
  @line{ len:40w; num:16; feed:1.7w; }
}

# 本文の開始
@start-body;
ここから本文
@r[漢かん字じ]@gr[形式|フォーマット]
改行は改段落。
@np;
改ページ。本文コマンドの後に ';' があると、直後の改行を改段落にしない。