文庫本作成データ生成ツール 朱鷺魅

彼方 修(tabito@din.or.jp)


ことのはじまり… 概要 制限事項 使用方法 必要なもの 記述例 生成されるもの タグ一覧 予定 使用条件・注意点・配布などについて

ことのはじまり…

…2002年の夏……
外では強い日差しが黒塗りのアスファルトを焼き焦がしていた…
相も変らぬ、街中の夏の光景…

あるビルの一室で、一人の男が暇そうにしていた……
……普通の一般社会人なら仕事をしているはずであろう時間に……

……それはともかく……夏の祭典を控え、出すものは一応出来ているもの(未完結)のそれを出す方法を決めていなかった。
既に一月足らずという時点で……

できれば文庫サイズの本を出したい…けれどもオフセット印刷は高い(某印刷所で50ページ30部で350Kオーバー)、といってもコピー誌では文庫のサイズである縦書きA6版のデータを作成するのは非常に厄介である。
というのもA6という用紙は一般には市販されていないし、コピーにはあるはずも無い、A4紙を4分割すればA6であるが、両面に対して4ページ×2のデータを生成するという技がいる。
途中での文書修正や調整のことを考えると、とてもそこらのワープロやテキストエディタでは太刀打ちできない。

そこで男が思いついたのはPostScriptであった。
PostScriptで座標を直接指定することによって文字列を配置し、A4両面に対する8ページ分の文庫サイズデータが作れるのではないかと…
ちょうど手元にAdobeのAcrobatがあり、これでPSファイルからPDFを生成すれば何処でも印刷可能

そういうわけで急遽作成したツールがこの『朱鷺魅』であった。


概要

簡単に言ってしまうと文庫判のコピー誌(正確に言うとプリンタ誌)を作成するという、めちゃめちゃ目的が偏ったツールです(笑)。
もしかするとオフセットで文庫を出す前のテスト出力としてもつかえるかもしれませんが……

A4用紙からA6文庫を作るためのデータ(PostScriptファイル)を生成します。
具体的にはA4用紙を横半分で切り、二つ折りにして重ねるという「平綴じ」のデータを生成します。
また、PC上での閲覧向けの文庫見開きタイプのデータを生成することも出来ます。
(未実装ですが、普通のコピー誌のような袋綴じモードも実装する予定です。)
perlで記述されており、当方ではFreeBSD付属のperl5.00xとWindowsのActivePerlで動作を確認しています。
朱鷺魅の独自形式TNF(Tokimi Novel Format)でデータを与えることにより、PSファイルを出力します。
以下のような機能があります。
・ほぼフルオートの文字列配置
・フォントの拡大縮小
・ルビ配置(配置方法は自動制御)
・ページ番号出力
・簡単ですが禁則処理も一応行なっています。
TNF形式はタグで動作を指定する方式です。(但し現在の形式はかなりいい加減な実装しているので記述にかなり戸惑うでしょう)

制限事項

基本的に本文に半角文字(アルファベット・数値記号など)は使用できません。(フォントなどの問題です。半角用の実装は一応してありますが、まともに動作しません。)
ただし、一部タグの設定値には半角を使用することは出来ます。(というか半角しか駄目ですけど…(笑))


使用方法

> perl Tokimi.pl -f 文章(tnf)ファイル名.tnf
で動作します。
この場合、文章ファイル名.psという出力ファイルと、Tokimi.logという動作ログファイルが生成されます。
ファイル形式はP Type(印刷向け)として生成されます。 オプションには以下のようなものが設定できます。
-f filename入力ファイル名を指定します。必須オプションで無い場合には-hオプションと同じ動作をします。
-n P|N 出力形式を指定します。P Typeは印刷向け(両面印刷・8ページ生成)N Typeは閲覧向け(丁度文庫本見開き分)となっています。
-o filename出力ファイル名を指定します。無い場合には入力ファイル名から.tnfを取って代わりに.psをつけた名前になります。
-l filenameログファイル名を指定します。無い場合にはデフォルトのTokimi.logに出力されます。
-s filename各種設定(フォント種別・デフォルトのフォントのサイズなど)を定義する設定ファイル名を指定します。現在は未実装です。
-h 指定出来るオプションの一覧を表示します。-fオプションを指定しなかった場合にも出力されます。


必要なもの

perlの実行環境のほかに必要なものです。
Jcode.pm お約束ですが、内部でコード変換及びコード生成を行なっているので必須です。
Acrobat これがないとPSファイルからPDFを生成できません。まあ、PostScript対応プリンタに直接PSファイルを投げるという手段もありますが、Acrobatを利用したほうがプレビューが可能なので楽だと思います。
GhostScriptAcrobatの代わりにGhostScriptを使用して閲覧・印刷する方法です。しかし、フォントの品質はAcrobatでPDF変換後の方がいいです。ただ、こちらのほうが太めになっているので読みやすいかもしれません。このツールを試しに使用する場合には良いと思います。


記述例

TNF

ぶっちゃけた話、改行を~に置き換えるだけ動作します。
エスケープシーケンスが指定できるエディタなどで、[\n]→[~\n]等と指定すればよいでしょう。
但し、文字コードはEUCを使用してください。(現在は内部で変換処理を行なっていないので)

例:
<page_title>タイトル</page_title>
<fontsize>11</fontsize>タイトル<fontsize>default</fontsize>
~
本文~
<ruby>本文|ほんぶん</ruby>~
<margin>7</margin>
本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文<double>!?</double>~
<margin>default</margin>

出力例

次に並べたのは実際にイベントで配布した本の作成データ(TNF)から生成したものです。
   『夢の残照1話から』
残照TNFファイル
P TypeのPSファイル
P TypeのPDFファイル
N TypeのPSファイル
N TypeのPDFファイル


生成されるもの

生成されたPSファイルはAcrobatで変換すればPDFとして参照できますが、無い場合はGhostScriptを利用するという手段もあります。 GhostScript・GhostViewのインストールの仕方は、google等で検索すればいくらでも出てくるので省略(投げやり)
P Type(印刷向け)の場合以下のように表示されるでしょう。

P Type 用紙一枚目


3 Page




2 Page




7 Page




6 Page



P Type 用紙二枚目


1 Page




4 Page




5 Page




8 Page



以下、三枚目に10, 11, 14, 15 Page、四枚目に9, 12, 13, 16 Page…と続きます。


N Type(閲覧向け)の場合は、
P Type 用紙一枚目


2 Page




1 Page



P Type 用紙二枚目


4 Page




3 Page



以下、三枚目に5, 6 Page、四枚目に7, 8 Page…と続きます。


P Typeの場合、このデータを両面印刷し、横に真中で切って(縦も切ってもいいですが)二つ折りにすれば、8ページの文庫サイズの本が出来上がることが分かるでしょう。

但し、印刷についてはかなり試行錯誤が必要になります。 悲しいことにプリンタはPDFを見たままのそのままに印刷はしてくれないのです。 プリンタはその性能に合わせて上下左右に要らぬ調整をかけてしまうため思うように印刷できません。 これは各自でがんばってください(お)。 最悪、スクリプト自身に調節を入れることもやむ無しかもしれません。

また、プリンタで原本を出して増産はコピーで…というのも間違いなく止めた方がいいです。 というのもコピー機の両面印刷機能は精度というものに関しては殆ど絶望的です。 (わたし(達)も某コピー屋でかなりがんばりましたが、結果は散々たるものでした。) 素直にプリンタですべて印刷することをお勧めします。 両面印刷タイプのレーザプリンタでしたら文句無いですが、片面やインクジェットでもいいでしょう。(わたしは最初インクジェットで挑戦しました。)

しかし、どうしてもコピー機で…という場合に備えてP2 Typeを実装する予定です。
これはP TypeとN Typeの中間のようなもので、両面を使用せずに片面だけのP Typeを生成し、2つ折にするだけで本になる普通のコピー誌モードです。 (実装は簡単なのですが、面倒なので後回ししています。要望があればすぐに実装しますけど…)

N Typeは文庫本見開きに対応しています。

タグ一覧

現在実装しているタグの一覧です。
タグ名称はすべて小文字で記述してください。
~は半角で指定することを意味しています。また、〜は全角です。
タグ 動作
~ 改行します。通常の改行コードは初期処理で削除されます。
最低限、改行コードを~に変更してください。
<page_title>タイトル</page_title> 奇数ページのページ番号の横にページタイトルを埋め込みます。(N Type時は偶数)
(ページタイトルが変更されるのは)通常は章が変わったときだと思いますのでnewpageを行なった直後に挿入したほうが思った場所でタイトルが変更できると思います。
<ruby>ベース文字|ルビ文字<ruby> ベース文字に対してルビを振ります。ルビの振り方は自動配置されます。
<margin>~<margin> 行間の大きさを調節します。これで指定された以降その値で行間が取られます。defaultを指定すると戻ります。
<fontsize>~</fontsize> フォントサイズを設定します。<margin>~</margin>と同じ実装なので、defaultで戻ります。
<newpage>~</newpage> 新しいページへ移ります。指定された値分ページを進めますが、ページの途中で1を指定した場合には、次のページに移ることになります。挿絵ページには<newpage>2</newpage>等として2つあけるようにしたほうが良いと思います。
<img>~</img> イメージをアスペクトル比を保ったまま文章領域に合わせて最大化して挿入します。このタグが現れたページに挿入してしまうので、newpageタグと組み合わせて新規ページを開く必要があると思います。ファイル形式はEPSのみに対応しているのでフリーソフトなどを利用して変換してください。
<double>〜</double> !?などを一つに納めるためのタグです。数値2桁を横並べにするという使い方も出来るでしょう。2文字以上指定しても無視されます。


予定

今のところ以下のようなものを実装しようとしています。
・P2 Type実装
・目次生成
・設定ファイル読み込み
・PostScriptのマクロ化(現状全くマクロ化していないので…)
・まともなタグ実装(現状はかなりいい加減なので…)

使用条件・注意点・配布などについて

使用条件

このプログラムを使用して作品などを作られた場合において、メールなどによりご一報ください。
使用状況が知りたいだけなので、事後報告で結構です。使用においてはそれ以外の条件は特にありません。
また、このツールを使用して作成されたデータについての配布制限はありません。


注意点

バグ報告・ご意見がありましたら、メールなどでお知らせください。
当然ながらこのプログラムは無保証です。
このプログラムを使用した場合の物的・精神的損害は一切関知いたしませんのでご了承ください。


(ツール自身の)配布などについて

このツールの再配布などは著作表示が削除されない限りにおいては了承無しに配布されて構いません。
但し、別サイトへの再掲載については、出来るだけ一次配布アーカイブそのままでお願いします。
改造された場合については、その旨をきちんと明記し、もとの著作名などが残っている限りにおいて、再配布に制限を設けません。(改造内容をフェードバックしていただけるとなおありがたいですが…)
但し、改造された内容についてはこちらにフィードバックされた場合を除いて、一切関知しません。
また無いとは思いますが、雑誌などの掲載時にはご一報ください。


PS.
 誰か、PostScript及びそのフォントの扱い方を教えてください。(涙)
 (これの資料が無いために自由なフォント選択などが実装できていないので…)



ダウンロード

以下のファイルをダウンロードして使用してください。
朱鷺魅スクリプトファイル(2002/11/20)


戻る PngCounter $Id: index.html,v 1.5 2003/02/03 13:37:21 tabito Exp $