Skip to content

y-mikou/littlebug

Repository files navigation

Littlebug

1. Littlebug.shとは

littlebug.shは、小説のような日本語テキストとHTMLを相互に変換するためのシェルスクリプトです(内部的にはほぼAWKスクリプト)。

主な機能は以下の2つです。

  1. テキストからHTMLへ変換: 独自のマークアップ記法で書かれたテキストファイル(.txt)を、ウェブブラウザでの閲覧や組版に適したHTMLファイルに変換します。この際、CSS組版に使用するCSSと連携するためのクラス属性/data属性が付与されます。

  2. HTMLからテキストへ変換: 上記で生成されたHTMLファイルから、元のマークアップ記法を復元し、テキストファイル(.txt)として出力します。

2.Vivliostyleの活用について

当スクリプトでのhtml変換(と表示)は、広義には「Vivliostyleを使用したCSS組版」の中に含まれると認識しています。

  1. Vivliostyleツール群と同居するもの:

    Vivliostyle Viewerで対応する拡張表現を回避しない。

    html(とCSS)ファイルで調整された組版データは、Vivliostyle Viewerでの表示とPDF化を前提としています。

  2. Vivliostyleツール群と同居しないもの:

    vfmは機能的に競合ですが、これを使用しません。

    vfmはvivliostyleでの組版に対して汎用的に用意されているものの小説版面の組版については少々機能が不足していること、
    またその一方でvfmを使用しながらvfmで未対応なスタイル(を示すタグ)を直接記載するのは大変面倒くさいことから、
    日本語小説にフォーカスした変換のみを行うマークアップとhtml変換を実現するものが欲しくなり、
    このスクリプトを開発しています。

    基本的にVivliostyle Viewerのみを利用する前提で、そのためのhtmlファイルを作るのがこのスクリプトです。

    CSSは(サンプルは同梱しますが)ユーザーが作成する前提です。

    途中でCreateBookを使用したりその経緯でVivliostyleThemesでテンプレートを用意するなどは可能と思いますが、サポートしません。

3.免責

当スクリプトを使用して発生したいかなる損害についても、当スクリプトの開発者とその関係者は、責任を負いません

当方は日本語横書き小説を前提に文字を書いており、結果として組版自体も横書き小説をCSS組版で行うという珍獣中の珍獣です。このツールはそもそもそうした目的で生まれており、縦書きを前提にする場合にはミスマッチが含まれる可能性があります。

4. 使い方

前提条件

  1. 使用言語(環境):

    linux環境での動作を前提にしています。

    Bash (GUN Bash) がシステムにインストールされている必要があります。

    gawk (GNU Awk) がシステムにインストールされている必要があります。

  2. スタイルについて:

    構造を示すhtmlタグの多くはそれだけではスタイリングを行いません。このスクリプトではhtmlタグを付与はしますが、多くのスタイリング・一部の表示追加についてはスタイル(CSS)との連携を前提にしています。

    それらのスタイルは更に、Vivliostyle Viewerでの表示に最適化されることを前提にします(cssの作り方によっては、この限りではありません)。

    当スクリプトで付与するhtml(とclass)について、縦書きあるいは横書きでしか意味をなさないものも多数あります。そうしたものは除去してもらうか、style側で無視する(なんのstyleもつけない)ように対応してください。

コマンド

  • テキスト (.txt) から HTML (.html) へ変換

    bash littlebug.sh [対象のテキストファイル]

    出力: (対象のテキストファイル名)_tagged.html という名前のファイルが生成されます。

  • HTML (.html) から テキスト (.txt) へ変換

    bash littlebug.sh [対象のHTMLファイル] -t

    出力: (対象のHTMLファイル名)_stripped.txt という名前のファイルが生成されます。


5. マークアップ仕様 (テキスト → HTML)

テキストファイル内で使用できる主なマークアップ記法は以下の通りです。

構造

要素 マークアップ HTMLタグ / class 説明
セクション 行頭に § <section class="ltlbg_section">
<h2 class="ltlbg_section_name">
章や節の区切りとしての大段落。
特殊セクション 行頭に §§ <section class="ltlbg_section_sukebe">
<h2 class="ltlbg_section_name">
特殊なセクション。変換時に§§§に変換される。用途はクラス名から察してください。逆変換で§§に復元されます。
地の文 行頭全角スペースの行とその連続 <p class="ltlbg_desciption">
<div class="ltlng_discript-group">
通常の形式小段落とその塊を示す中段落。
会話文 行頭が , , の行とその連続 <p class="ltlbg_bracket">
<div class="ltlng_bracket-group">
会話や思考などの形式小段落とその塊を示す中段落。
中段落について
「せりふ1」
「せりふ2」
「せりふ3」
 地の文あああああ
 地の文いいいいい
 地の文ううううう
「せりふ4」

という構造の文章は、以下の3つの中段落(を示すdiv)に分割されます。

「せりふ1」
「せりふ2」
「せりふ3」

 地の文あああああ
 地の文いいいいい
 地の文ううううう

「せりふ4」

文字装飾・特殊記号

効果 マークアップ HTMLタグ / class 説明
ルビ |親文字《ルビ》 <ruby class="ltlbg_ruby-mono, -same, -long, -short"> 親文字とルビの文字数でクラスが変動。
圏点(傍点) 《《文字》》 <ruby class="emphasis"> 文字に圏点()を振る。
太字 **文字** <span class="ltlbg_bold"> 太字で表示。
縦中横 ^文字^ <span class="ltlbg_tcy"> 縦書き時に半角英数記号(3文字まで)を横向きに並べる。
回転 [^文字^] <span class="ltlbg_rotate"> 1文字を回転させる(styleで指定)。
1文字幅化 [-文字-] <span class="ltlbg_wdfix"> 1文字分の幅に収める。!!など1文字と見做したい記号や、曖昧幅を持つ文字への対応に利用
強制合字 [%[AB]%] <span class="ltlbg_forceGouji1">
<span class="ltlbg_forceGouji2">
2文字を1文字分の幅に詰め込むCSSを適用するためのタグを付与します。
スケベ濁点 文字の後に <span class="ltlbg_dakuten"> 直前の文字に濁点を付ける。
キチガイ半濁音 文字の後に <span class="ltlbg_handakuten"> 直前の文字に半濁点を付ける。
踊り字 /\ or <span class="ltlbg_odori1"></span><span class="ltlbg_odori2"></span> 繰り返し記号「〱」に変換。
水平線 --- <span class="ltlbg_hr"></span> 罫線を表示。
改ページ [newpage] <div class="ltlbg_newpage"></div> 強制的に改ページ。
全角スペース   <span class="ltlbg_wSp"></span> 全角幅のスペースタグに変換。
半角スペース <span class="ltlbg_sSp"></span> 半角幅のスペースタグに変換。

6. HTML → テキスト変換について

-tオプションを使用することで、littlebug.shが生成したHTMLファイル(*_tagged.html)から、元のマークアップ記法テキストを復元できます。

この逆変換は、多くのマークアップ記法を正しく復元しますが、完全な可逆処理ではありません。元のテキストと意味的に等価なテキストを出力することを目的としています。

可逆な変換(正しく復元されるもの)

  • 本ドキュメントの「5. マークアップ仕様」に記載されているほとんどの記法(ルビ、圏点、太字など)

不可逆な変換(元に戻らない、または変化するもの)

  • 空行: 変換処理の過程で空行はすべて削除されます。逆変換後も復元されません。
  • 不要なスペース: 行末や閉じ括弧の前など、文脈的に不要と判断された半角・全角スペースは自動的に除去され、復元されません。
  • 記号の正規化: 以下の記号は、テキスト→HTML変換時に特定の文字に統一されます。この変換は元に戻りません。
    • 連続するは1つにまとめられます。
    • !!, !?, ?!, ?? は、1文字幅の半角ペア(!!, !?, ?!, ??)に変換されます。

About

一定程度規則に沿ったただのテキストにHTML表示可能な加工を施す。あるいはそれを除去してただのテキストに戻す。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors