txt2odf は、Web小説などのプレーンテキストから、ワープロソフトなどで開ける ODT(OpenDocument Text)ファイルを生成するためのコマンドラインツールです。
カクヨム記法のルビや傍点に対応しており、見出しの構造化、縦書き・横書きのレイアウト設定、スマートフォン向けに特有の「空行の整理」などを自動で行い、書籍化やPDF出力の前段階となる綺麗な原稿ファイルを簡単に作成できます。
- カクヨム記法のサポート:
|漢字《かんじ》(ルビ)や《《強調》》(傍点)の自動解析・変換。 - テンプレートによるスタイル制御: JSON形式のテンプレートで、ページサイズ(A4, A5など)、縦書き/横書き、フォント、行送り、傍点の表現方法(太字、ルビ、ODF標準プロパティ)を設定できます。
- 空行の自動処理(書籍フォーマット化): スマホ向け小説によくある「段落ごとの単一の空行」のみを自動で削除し、シーン区切りのための複数空行は圧縮して残すなど、書籍向けのレイアウトへ自動で整理します。
- 複数ファイルの結合と章立て: リストファイル(
.txt)を用いることで、複数のテキストファイルを順番に結合し、大見出し・小見出しを自動で挿入できます。
- Python 3.9 以上 (標準的な機能のみを使用しているため、Python 3系であればほぼ動作しますが、一部の型アノテーションの仕様により 3.9 以上を推奨します)
odfpy>= 1.4.1
- リポジトリをクローンまたはダウンロードします。
- 以下のコマンドで依存ライブラリ(
odfpy)をインストールしてください。
pip install -r requirements.txt以下のコマンド形式で実行します。
python main.py -i <リストファイル.txt> -f <テンプレートファイル.json> -o <出力ファイル.odt>実行例:
python main.py -i ./txt/list.txt -f ./template/a5_vertical.json -o ./output.odt各種設定ファイルの詳しい書き方については、docs/ フォルダ内のマニュアルを参照してください。
- リストファイル フォーマットガイド (docs/input_list_format.md)
- 変換するテキストファイルの指定方法や、見出し(章・節)の構造化の書き方を解説しています。
- テンプレートJSON フォーマットガイド (docs/template_json_format.md)
- 見た目(フォントやレイアウト)の設定や、空行処理の細かいモードについて解説しています。
このソフトウェアは MIT License のもとで公開されています。
本プロジェクトは以下のサードパーティ製ライブラリを使用しています。
- odfpy - Apache License 2.0 (GPL 2.0 とのデュアルライセンスから Apache 2.0 を選択して適用しています)
私のスタイルが行間を基本的に空けないスタイルのため blank_lines はほぼテストされていません😅
custom は当初いろんな空行除去ができたらいいかなくらいで正規表現にしていたんですが、副作用が強すぎるかも。いや、分かる人が触るからいいのかな、たぶん、きっと😅
縦書きは鬼門😥