TNFファイル眺め編

TNFファイル眺め編

前回ではテキストファイルからTNFファイルへ変換しました。今回は出てきたTNFファイルの中身を眺めてみます。その前に、PreTNFを入れたテキストファイルは以下の通りです(ここから新規修正したので前回と違う部分もありますが気にしないでください)。

PreTNF
#タイトル#春を待つ
#巻数# 春を待つ
#筆者# SOrow
#筆者:URL# http://north.undo.jp/
#筆者:MAIL# sorow@north.undo.jp
#絵師# 絵師
#絵師:URL# http://north.undo.jp/
#絵師:MAIL# sorow@north.undo.jp
#サークル# SOroom
#協力# スペシャルさん
#協力# スペシャルさん2
#改版履歴# 2018年1月15日 初版
#印刷所# ソロー印刷
#表紙#
#中表紙#
#口絵#
#裏表紙#
#中表紙背景#
#絵師背景#
#目次背景#
#右ページ背景#
#左ページ背景#
#奥付背景#

[正|ただし]

#開始#

!一章
#章# 一

ではこれをTNF変換したものを、早速テキストエディタで開いてみましょう。

TNF
<!-- ■文章情報系タグ -->
<!-- 『目次・奥付』出力がONの場合には、奥付や中表紙に適用されます -->
<title>春を待つ</title><!-- title:タイトル指定 -->
<volume>春を待つ</volume><!-- volume:巻数(1巻・2巻、上巻・下巻などの指定 -->
<writer>SOrow</writer><!-- writer:執筆者指定 -->
<url>http://north.undo.jp/</url><!-- url:執筆者URL -->
<mail>sorow@north.undo.jp</mail><!-- mail:執筆者メールアドレス -->
<circle>SOroom</circle><!-- circle:サークル名指定 -->
<illustrator>絵師</illustrator><!-- illustrator:挿絵提供者 -->
<iurl>http://north.undo.jp/</iurl><!-- iurl:挿絵提供者URL -->
<imail>sorow@north.undo.jp</imail><!--imail:挿絵提供者メールアドレス -->
<printshop>ソロー印刷</printshop><!--printshop:印刷所指定-->

<!--thanks:協力者(12人分まで指定可能) -->
<thanks>スペシャルさん</thanks>
<thanks>スペシャルさん2</thanks>
<!--edition:改版履歴(5個まで指定可能) -->
<edition>2018年1月15日 初版</edition>

<!--rubymap:ルビマッピング-->
<!-- ルビマッピング -->
<rubymap base="正" text="ただし" render="every" balance="off"/>


<!--cover:カバーなど-->

<!--background:背景など-->


<!--fontmap:フォント定義 -->
<fontmap name="m"  file="fonts/ipam.ttf"/>
<fontmap name="g"  file="fonts/ipag.ttf"/>
<fontmap name="i"  file="fonts/liberation-fonts-ttf/LiberationSerif-Italic.ttf" type="ascii"/>

<!--スタイル定義-->
<style>
font.chapter { size:150%; }
font.big     { size:120%; }
font.small   { size:80%; }
strike.dash  { size:5%; type:single; }
strike.wave  { type:wave; }
sideline.line{ type:line; }
</style>

~
<!-- 一章 -->
<index>一</index><page_title>一</page_title><font style="chapter">一</font>~
~

何か増えてる!?
最初の方に先ほどまでのテキストファイルにはなかったものが色々増えていますね。これはTNFファイルへの変換時に、自動的に挿入されます。自分でぽちぽち入力しなくてもいいというのは非常に楽です。

ではタグを一つ一つ眺めていきますが、ここからは説明が多くなるので、面倒になったら後で改めて見ていただく形でも大丈夫だと思います。

まずは文章情報系タグから。

文章情報系タグ
<!-- ■文章情報系タグ -->
<!-- 『目次・奥付』出力がONの場合には、奥付や中表紙に適用されます -->
<title>春を待つ</title><!-- title:タイトル指定 -->
<volume>春を待つ</volume><!-- volume:巻数(1巻・2巻、上巻・下巻などの指定 -->
<writer>SOrow</writer><!-- writer:執筆者指定 -->
<url>http://north.undo.jp/</url><!-- url:執筆者URL -->
<mail>sorow@north.undo.jp</mail><!-- mail:執筆者メールアドレス -->
<circle>SOroom</circle><!-- circle:サークル名指定 -->
<illustrator>絵師</illustrator><!-- illustrator:挿絵提供者 -->
<iurl>http://north.undo.jp/</iurl><!-- iurl:挿絵提供者URL -->
<imail>sorow@north.undo.jp</imail><!--imail:挿絵提供者メールアドレス -->
<printshop>ソロー印刷</printshop><!--printshop:印刷所指定-->

<!--thanks:協力者(12人分まで指定可能) -->
<thanks>スペシャルさん</thanks>
<thanks>スペシャルさん2</thanks>
<!--edition:改版履歴(5個まで指定可能) -->
<edition>2018年1月15日 初版</edition>

これ、PreTNFで英語表記を使っていた方は、相関関係が理解しやすいと思います。私は日本語表記してしまいましたが、それでもそれぞれのタグの後ろに書かれているコメントを見れば、リファレンスでチェックをしなくてものみ込めます。親切。

これを文字に書き起こすと、以下の通り。

PreTNFでこれらを指定していない場合、以下のようなサンプル文字がデフォルトで入ります。

<!-- ■文章情報系タグ -->
<!-- 『目次・奥付』出力がONの場合には、奥付や中表紙に適用されます -->
<title>春を待つ</title><!-- title:タイトル指定 -->
<volume>巻数</volume><!-- volume:巻数(1巻・2巻、上巻・下巻などの指定 -->
<writer>作者</writer><!-- writer:執筆者指定 -->
<url>http://writer.sample.org/</url><!-- url:執筆者URL -->
<mail>writer@sample.org</mail><!-- mail:執筆者メールアドレス -->
<circle>サンプルサークル</circle><!-- circle:サークル名指定 -->
<illustrator>イラストレーター</illustrator><!-- illustrator:挿絵提供者 -->
<iurl>http://illustrator.sample.org/</iurl><!-- iurl:挿絵提供者URL -->
<imail>illustrator@sample.org</imail><!--imail:挿絵提供者メールアドレス -->
<printshop></printshop><!--printshop:印刷所指定-->

<!--thanks:協力者(12人分まで指定可能) -->

<!--edition:改版履歴(5個まで指定可能) -->
<edition>2018年 1月15日 初版</edition>

PreTNFでタイトルなどを指定しなかった場合に入る文字ですね。TNF変換時に入れられます。印刷所と協力は入れなければ何も入りませんが、イラストレーターなどは入るので、不要ならここで削除してしまいます。

続いてルビです。

ルビマッピング

  <!--rubymap:ルビマッピング-->
  <!-- ルビマッピング -->
  <rubymap base="正" text="ただし" render="every" balance="off"/>

一番上に<!--rubymap : ルビマッピング-->というコメントがあります。この下の<rubymap>というタグがルビマッピングだということです。ルビマッピングというのはある文字にルビを振りたい時、その振り方を最初に定義してしまう感じのことです。そんな感じです。
ここではPreTNFで[正|ただし]と書いたものが変換されてます。

閑話休題。<rubymap>タグ内の定義をちょっと細かく見ていくと、

という感じです。

<rubymap base="正" text="ただし" render="every" balance="off"/>

ここでは「正」に「ただし」というルビが振られ、ルビの頻出度renderはevery:常に、balanceはoffと指定されています。

ただしこのrender=頻出度というのは、PreTNFでの[ ]、TNFでの<ruby></ruby>タグで囲っている文字にのみ適応されます。つまり[正]を本文中で一回しか使ってなければ、renderがsectionでもeveryでも、それにしかルビは振られないということです。

ではどういう場面でrenderを使うのか。
それは、ルビを振りたい文字すべてを、PreTNFでは[ ]、TNFでは<ruby></ruby>タグで囲んだ時です。その文字とルビをルビマップで定義して、renderタグで登場頻度を指定しておけば、「section=セクション内で一回だけ」それにルビを振ったり、「every=常に」ルビを振ったりと、手作業でタグを増やしたり減らしたりしなくても、統一して変えられます。

一回文字を全部ルビタグつきで置換してしまえばルビマップで指定するだけで済むので、楽ですね。

次にbalanceについて。これは上述の通り、ルビの長さがベース文字より長い場合にベース文字の間隔をルビの文字に合わせるという機能です。PreTNF→TNF変換においては威沙本体の詳細設定からON・OFFが指定できます。TNFで直接指定してもOKです。
具体的にどういうことかというと、下記の通り。

猛烈分かりづらくてすみません。これは右がbalance="on"で左がbalance="off"です。デフォルトでは右のようにルビの長さに合わせてベース文字が均等割り付けされるようになります。そのためルビが上下にはみ出すことはありません。offにするとはみ出したり改行をまたぐとルビが消えたりしたりします。ただベース文字が詰まってた方が良いという場合には、詳細設定のルビバランスのチェックを外すとoffとなりますし、TNFでも変更が可能です。
ちなみにベース文字が一文字だとbalanceは常にoffとなります。空ける必要がないからですね。バグではないのでご安心ください(しばらく格闘していた奴)。

ルビに関しては、PreTNFで記述していればちゃんと変換されていると思います。そこで記述していなくても、TNFでのルビマッピングと置換で何とかなります。PreTNFでルビタグを入れてるのにルビマッピングがされていない時には、コメントでエラーを知らせてくれもします。
ただルビの細かい調整が必要なことがあらかじめ分かっていれば、TNFでやってしまってもいいかもしれませんね。

カバーなど
<!--cover:カバーなど-->

<!--background:背景など-->

coverはPreTNFで#表紙#や#中表紙#などで画像を指定していれば、それ用に置換されています。口絵と裏表紙も。
background:背景などのタグはPreTNFでの#絵師背景#や#目次背景#などで画像を指定していれば以下略です。背景画像はテンプレートの全部に指定できるようになりました。中表紙だけ被ります。
これをPreTNFで入れるとこんな感じです。

<!--cover:カバーなど-->
<cover src="hyoshi.jpg"/>
<cover type="middle" src="maru/naka.jpg"/>
<frontispiece src="kutie.jpg" />
<cover type="back" src="not.jpg" />

<!--background:背景など-->
<background type="middle" src="www.jpg"/>
<background type="illustrator" src="jnke/jr.jpg"/>
<background type="index" src="jog.jpg"/>
<background type="rightpage" src="migi.jpg"/>
<background type="leftpage" src="hidari.jpg"/>
<background type="publisher" src="oku.jpg"/>

今回例なのでファイル名は適当に入れましたが、使う場合は実存するものを入れてください。その場合のパスはテキストファイルが基準となります。テキストファイルと同じディレクトリのものなら直接画像名を、そこから別のフォルダの中に入っているならフォルダ名と画像名を入力します。日本語を入れるとヤバそうなのでお気をつけください。

次は<!--fontmap : フォント定義-->ついてです。

フォント定義
  <!--fontmap:フォント定義 -->
  <fontmap name="m"  file="fonts/ipam.ttf"/>
  <fontmap name="g"  file="fonts/ipag.ttf"/>
  <fontmap name="i"  file="fonts/liberation-fonts-ttf/LiberationSerif-Italic.ttf" type="ascii"/>

このfontmapタグはルビマッピングと似たようなものです。PreTNFでは定義できないので、TNFならではですね。フォント自体は威沙本体からも設定できますが、本文中のどこかだけ変えたい、という場合にはfontmapで定義する必要があります。その場合のパスは画像と同じようにテキストファイルのあるディレクトリからのアクセスとなります。ただ威沙本体に入っているフォントについては上記の形でアクセスできます。
ここで指定したフォントは、本文中で以下のように使えます。

こんにちは。<font name="g">ここだけゴシックだよん。</font>ゴシック終わったよ。

一部分だけフォントを変えたい場合などご利用ください。

スタイル機能

次はスタイル機能です。

<!--スタイル定義-->
<style>
font.chapter { size:150%; }
font.big     { size:120%; }
font.small   { size:80%; }
strike.dash  { size:5%; type:single; }
strike.wave  { type:wave; }
sideline.line{ type:line; }
</style>

これはデフォルトで挿入されるやつです。TNF変換後のファイルを見てみると、章立てした部分が<font style="chapter"></font>と囲われていたり、ダッシュ「―」が<strike style="dash"> </strike>となっていたり(※本体詳細設定のダッシュ(―)罫線変換ON時)しますが、そこではこの機能が使われています。

これはTNFの既存のタグの要素を、HTMLにおけるCSSのように定義づけられるというものです。フォントの場合フォントマップタグよりも優先されるので、同じ定義名で指定した時はお気付けください。基本的にフォントの種別を定めるならフォントマップタグ、その他のサイズや行間等の数値を細かく定めるのならスタイル機能を使うと見やすいと思います。

使い方としては、まずデフォルトのようにstyleタグで囲んで指定します。表記方法はCSSと同じで、fontなどのタグ名を書き、その後にドット(.)を打って定義名を入力します。そして指定したいサイズやら何やらをsize:150%;みたいな感じで{}内に入力すれば完成です。この時、タグの要素(fontならsizeなど)は存在するだけいくつでも入れられます。それぞれの入力終了時にはコロン(;)を打ちますが、打たなくても読み込んではくれます。続けて別の要素を入力する際に改行しても大丈夫です。

font.chapter { size:150%;
     space:10mm
        color:#669933;
}

試してみたところ、全角スペースを入れた上にコロン抜きでも普通に読み込んでくれました。すごい。そんなにガッチリ構えて入力しなくても大丈夫そうです。でも正しく書いた方が安心かもしれません。

本文で使用する際には、<そのタグの名前 style="定義名">と入力します。
例えばfontタグならば、スタイル機能によって以下の要素をまとめて定義づけられます。

そして上でも書きましたが、PreTNF→TNF変換時に自動的に挿入されるchapter定義は、PreTNFでの章立てのタグが反映されています。

styleタグでこのようにchapterのフォントサイズを150%と定義しているので、PDF変換時に「#章# 一」とした部分のフォントサイズはTNFのfont style="chapterの通り、150%になります。
以下、他のタグについて。

ところで章立て#章#は、以下のTNFに変換されます。

これを、例えばこんな風にすると…

  <fontmap name="g"  file="fonts/ipag.ttf"/>

<style>
font.chapter
{
 name:g
 size:150%;
 space:110%
 color:#669933;
}
font.big     { size:120%; }
font.small   { size:80%; }
strike.dash  { size:5%; type:single; }
</style>

<index>第一章 それが運命と言うのなら</index><page_title>それが運命と言うのなら</page_title>

<font style="chapter">はじまりの時~それが運命と言うのなら<br/></font>


↓PDF変換

この通りに。

ここまで変える必要はまったくありませんが、TNFでどのタグがどの部分を決めているのかを理解するにはいいかもしれません。

最後になりますが、大切なことを。TNFにおいての改行タグは、

この2つです。
<br>はHTMLを知ってる方なら馴染みがあると思いますが、「~」は何だっけこのうにょうにょは、という感じもあります。これはチルダといい、この半角チルダと<br>が威沙TNFにおける改行タグです。ただ半角チルダの方は3つ以上連続すると、3つ目からは改行されず「~」がそのまま表示されるようになるので、3つ以上改行したい場合は<br/>を使わないといけません。また現在TNFでは<br/>タグでもって改行されるのがデフォルトとなっているので、基本的には<br/>で改行していった方がいいと思います。TNF上で加筆修正した時など、文末に入れるのを忘れたら駄目ですね。

眺めるのはここまでにして、次では直接いじっていきます。

TNFファイル出力編 < TNFファイル眺め編 > TNFファイルいじり編