縦書き表示のKindle書籍にぶら下げインデントを実装する一法

作家・医者・バッタ──小説家標榜医の猪股です。

最近は新作の執筆も佳境を迎え、前作「七刄会演義」のようにFire推敲を重ねながら完成に向けての歩みを着々と進めているところです。

さて、今回はFire推敲──出版前の書籍ファイルをKindle書籍としてFireタブレットで閲覧しながらの推敲――をしていく上で新たに問題となったことを解決するための一つの方法についての記事エントリです。

おさらいですが、出版前の書籍ファイルは以下のプロセスでFireタブレットなどで閲覧可能です。

  1. 書籍ファイルを.txtファイルで作成する
  2. でんでんコンバーターで.epubファイルに変換する
  3. Send to KindleでKindleライブラリにアップロードする
  4. FireタブレットのKindleアプリで読む(推敲する)

Fire推敲することで、出版前の書籍を執筆ソフト上で眺めているだけでは気づかないミスや言葉の綾などを見つけられるのでおすすめです(当ブログ別エントリもご参照ください)。

縦書き書籍にぶら下げインデントを実装したい

さて、今回の作品では文芸レトリックとして、途中で脚本風に読ませる部分があります。

脚本風というのはこの場合、話者の名前が行頭に表示され、その下に空白を挟んでセリフが表示されるもののことです。また、そのセリフが数行に渡った場合は、セリフ2行目以降の文頭が1行目の文頭と同様の箇所で揃うようにする、というものです。

早い話が、以下のように表示できるようにしたい、ということです。

Kindle Previewer3で表示させた縦書き・ぶら下げインデントによるセリフ

小説執筆ソフト上でこれを実現する手法のことを「ぶら下げインデント」というようです。

現在執筆中の作品の脚本風部分をFire推敲していくにあたり、このぶら下げインデントを(txtファイルやepubファイルを経由した)Kindle実機上で再現することが大きな課題となりました。

なぜなら、epub化にあたっては、文章データの入ったtxtファイルは、文字と空白のみで構成されたプレーンなテキストでなくてはなりません。これにはぶら下げインデントなどのスタイルを持たせることができないのです。

となれば、でんでんコンバーターを使わない、つまりtxtファイル以外のデータファイルにぶら下げインデント(のスタイル)をもたせるか、あるいはでんでんコンバーターを使う際に、txtファイルとは別のファイル(style.css)にスタイルをもたせるかで、実現できるかどうか試してみました。

試行錯誤した結果をご紹介していきます。

ぶら下げインデントを設定したWordファイルをSend to Kindleする

まずは、前者側、つまり標準機能でぶら下げインデントが実装可能なWordでやってみることにしました。

詳細は他に譲りますが、Wordでルーラーを表示させて、セリフ2行目の文頭にカーソルを置いて、ルーラー上のぶら下げインデント用のマーカーを移動させて、2行目の始まり位置をセリフ1行目文頭に合わせる(適宜、別のインデントマーカーを移動させる)などで、意図した脚本風のレイアウトが実装できます。

そのWordファイルをSend to Kindleすると、Kindleライブラリに登録されて、各種デバイス上のKindleアプリで閲覧可能となりますし、それで確かに、ぶら下げインデントの設定が活かされた表示とはなります。

しかし、こうして作成したKindle書籍は横書き表示になってしまいます。

実際のKDP出版のプロセスを通す場合は、KDPサイト側で「縦書き表示」に指定できるところがあるため、最終的には縦書き表示の作品を出版することは問題ないのですが、私のニーズは、KDP出版前の状態でFireタブレットなどの実機で表示されるKindle書籍が縦書きでぶら下げインデントが実装された状態で推敲がしたい、ことであるため、Wordファイルを利用したやり方では無理そうだと判断しました。

ぶら下げインデントとして機能するstyle.cssファイルを作る

というわけで、もう一方のやり方、つまりでんでんコンバーターでepub化する際に、テキストファイルとは別のファイルに、ぶら下げインデントのスタイルをもたせる、つまり、「style.css」ファイルを利用する方法に取り組んでみました。

前提として、でんでんコンバーターによるepub化においては、文章データの入ったtxtファイルと一緒にstyle.cssファイルをアップロードしてepub変換することで、文章レイアウトに任意のスタイルシートが設定された書籍表示が可能となっています。

今回用いるstyle.cssファイルの用意の仕方は、完全な我流となってしまうため紹介するのが恥ずかしいのですが、一つの方法としてご理解ください。

  1. まず、なんでもいいので、でんでんコンバーターでepubファイルを作ります。
  2. そのepubファイルを解凍ソフトで解凍します。
  3. 解凍したファイルの中に、style.cssというファイルがあるのでこれを利用します(その他のファイルは廃棄して構わない)

このstyle.cssファイルが、でんでんコンバーターで出力されるepubファイルに共通のスタイルシートですので、このスタイルシートファイルの中身を書き加えて、脚本のセリフ風のぶら下げインデントを実装しましょう。

具体的には、

  1. セリフ話者の名前が他の行に対して数文字分、飛び出していること
  2. セリフ話者の名前が表示領域に収まるように会話の行全体を1と同じ文字数分だけ下げること(縦書きの場合は画面下に、横書きの場合は画面右側に)

が実現できれば十分だと考えました。つまり、

  1. text-indent というタグ(要素)にマイナスの数値をもたせて、文章1行目を(縦書きの場合は画面上へ、横書きの場合は画面左へ)飛び立たせる
  2. margin-top というタグ(要素)で段落全体を(1行目文頭を飛び立たせた分だけ)下げる
  3. div タグを使って、小説テキスト側でぶら下げインデントのスタイルが適用されてほしい部分の指定する

こうすることで、(小説の中の一部分にだけ)ぶら下げインデントによる脚本風表示が可能となると考えました。

これをHTML記法で表すと以下のようになります(style.cssの数値は1行目を飛び出させる分の任意の文字数)。

【小説txtファイル側】

<div>
<p>登場人物1 せりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふ……</p>
<p>登場人物2 せりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふせりふ……</p>
</div>
【style.css側】

div p{
  text-indent: -6rem;
  margin-top: 6rem;
}

このHTMLで記述されたテキストファイルとstyle.cssファイルを一緒にでんでんコンバーターで(縦書き表示の指定をした)epub化し、Send to Kindleすることで、晴れてKindleアプリで閲覧できる小説が、縦書きで、かつ脚本のセリフ風に表示されるようになりました。

我ながら、目標が達成された喜びとは裏腹に、「絶対にもっとスマートなやり方があるはずだよなあ」という思いを禁じえません。

ただ、今回の私がグーグル検索をしまくった範囲では、これ以上ないしはこれ以外の方法は残念ながら見つかりませんでした。

同じようなニーズのある人にとって、とりあえずの応急処置的なやり方として、認識いただき、少しでも皆さんの参考になれば幸いです。

もっといいやり方があるよ、という方はぜひ、拙者のツイッター宛にリプライくだされば望外の喜びです。

今後とも宜しくお願いいたします。