一から始めてみる威沙でPDF


TNFファイル眺め編


前回ではテキストファイルからTNFファイルへ変換しました。今回は出てきたTNFファイルの中身を眺めてみます。早速テキストエディタで開いてみましょう。



何か増えてる!?
最初の方に先ほどまでのテキストファイルにはなかったものが色々増えていますね。これはTNFファイルへの変換時に、自動的に挿入されます。自分でぽちぽち入力しなくてもいいというのは非常に楽です。
※TNFではタグを使用するので、<>で囲うと色が変わる機能のあるテキストエディタを使うと見やすいです。上の画像ではHTML編集モードで表示しています。
ちなみにPreTNFを入れたテキストファイルとの比較すると…。


タグ祭りですね。

ちなみにpart2・何も書かれていないテキストファイルをTNFに変換した場合、

じゃん。
縮小したので見づらいですが、PreTNFで何も指定せず目次・奥付付与した時に出てくる情報と同じであると分かります(改版履歴は指定しなければその時変換した日時が出力されます)。つまり<!--から始まるコメントで書かれている通り、そこをいじれば奥付・中表紙で何を表示するかを決められるのです。

ではタグを一つ一つ眺めていきましょう。まずは文章情報系タグから。



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

タイトル:<title></title>
巻数(上下編なども):<volume></volume>
作者の名前:<writer></writer>
作者のサイトのURL:<url></url>
作者のメルアド:<mail></mail>
サークル名:<circle></circle>
絵師の名前:<illustrator></illustrator>
絵師のサイトのURL:<iurl></iurl>
絵師のメルアド<imail></imail>
印刷所:<printshop></printshop>
発行日・改訂日:<edition></edition>
スペシャルサンクス:<thanks></thanks>

…何か頭に入ってきませんね。まあPreTNFで指定してる部分はTNFに反映されますし、ここでは要らない部分だけ削除してしまえばいいと思います。

続いての眺める部分。



見づれーよ!
すみません、画像に説明をねじ込みすぎました。ここから先はちょっと説明が多くなるので、とりあえず最後の方まで読み飛ばしても大丈夫です。

まず一番上に<!--rubymap : ルビマッピング-->というコメントがあります。この下の<rubymap>というタグがルビマッピングだということです。ルビマッピングというのはある文字にルビを振りたい時、その振り方を最初に定義してしまう感じのことです。そんな感じです。
ここではPreTNFで[正|ただし]と書いたものが変換されてます。
※このルビマッピングの変換は、威沙本体の各種設定タブ内「詳細設定」でオンオフできます。
※この左側、「テキスト変換設定」部分の「ルビマッピング」のチェックを外すとPreTNFで指定したマッピングがTNF変換されません。「ダッシュ〜」のチェックを外すとダッシュが罫線に変換されません。この辺のチェックを外す必要のある状況は……何でしょうかね。普通に使ってる分にはこのままでいいと思います。
閑話休題。<rubymap>タグ内の定義をちょっと細かく見ていくと、
base="〜":ルビを振りたい文字=ベース文字。
text="〜":ルビ。
render"〜":ルビの頻出度(登場機会)。section,page,every,firstのどれかを入れる。
balance"〜":ルビのベース文字のバランス。on,offのどちらか。onにするとルビのベース文字の間隔を変える。

という感じです。上の画像の、

<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=常に」ルビを振ったりと、手作業でタグを増やしたり減らしたりしなくても、統一して変えられます。
一回文字を全部ルビタグつきで置換してしまえばルビマップで指定するだけで済むので、楽ですね。
※rubymapタグのrender(頻出度)におけるsection.page,every,firstの意味は、
・section:セクション内で1回のみ登場
・page:ページ内で1回のみ登場
・every:常に登場
・first:文中で1回登場
となっています。
TNFリファレンスの使用例ではoneという指定が使われていますが、これはfirstの表記間違いのようです。

ルビに関しては、PreTNFで記述していればちゃんと変換されていると思います。そこで記述していなくても、TNFでのルビマッピングと置換で何とかなります。細かい調整が必要なことがあらかじめ分かっていれば、TNFでやってしまってもいいかもしれませんね。
※ちなみにcover:カバーなどのタグはPreTNFで#表紙#や#中表紙#などで画像を指定していれば、それ用に置換されています。口絵と裏表紙も。
※background:背景などのタグはPreTNFでの#絵師背景#や#目次背景#などで画像を指定していれば以下略です。背景画像はテンプレートの全部に指定できるようになりました。中表紙だけ被ります。
次は<!--fontmap : フォント定義-->ついてです。



このfontmapタグはルビマッピングと似たようなものです。PreTNFでは定義できないので、TNFならではですね。またここでのfileとtype、つまりフォントの種類を変える定義はfontmapタグでしか行えません。そのためどこかの部分でフォントを変えたい場合には、あらかじめ上記のようにfontmapで定義しておきましょう。

この下は通常版20160317版より搭載された新機能、スタイル機能となっています。



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

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



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

本文で使用する際には、<そのタグの名前 style="定義名">と入力します。

例えばfontタグならば、スタイル機能によって以下の要素をまとめて定義づけられます。
name:fontmapで定義づけたname="〜"を入力することで、フォントの種類をそれに変えられる。
size:サイズ。指定は%の他にpt,inch,Qが使える。
space:行間指定。指定した次の行から適用。fontタグ内で改行がないと適用されない。
color:色変更。#FFFFFF形式。webサイトのようにカラフルにできる。

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


<style>
font.chapter { size:150%; }
</style>

#章 一

<index>一</index><pagetitle>一</pagetitle><font style="chapter">一</font>

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

font.bigPreTNFタグの協調「;」。威沙本体の各種設定タブ内「詳細設定」の「強調サイズ」の%がsize:〜%の数値に反映される。
font.small:PreTNFの定義はないので、本文内の文字を小さくしたい時、<font style="small">小さくしたい文字</font>と囲う感じで使う。このサイズも%,pt,inch,Qで指定できる。
strike.dash:一本の取り消し線。「―(ダッシュ)」を綺麗に表示するためのもの。テキストからTNFに自動的に変換されるので、太さを変えたい時はこれをいじると良い。
stike.wave:波線の取り消し線。PreTNFに定義はないので、本文中の文字に波線の取り消し線を加えたい時、<strike style="wave">波線の取り消し線を振りたい文字</strike>と囲う感じで使う。
sideline.linePreTNFの「'〜〜'(傍線)」。指定すれば変換される。
画像上で下の二つが抜けている場合がありますが、こちらの都合で抜いただけで、通常版威沙2016/04/04以降の変換では正しく付与されます。

ところで章立ての変換。画像に書きましたが、見づらいのでここにも書いておきます。

<index>〜</index>:目次ページに表示する章の文字。
<page_title>一</page_title>:左ページのノンブル横に表示する章の文字。
<font style="chapter">〜</font>:章立てした文字にスタイルタグで定義したchapterの設定を反映させている。

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

<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においての改行タグは、

<br/>
~

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

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

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

トップへ戻る