Edited at

Org-mode で書いたファイルから A5 縦書き二段組の PDF を生成するツール

More than 3 years have passed since last update.

リポジトリは https://github.com/BooksThere/ox-novel にあります。

README.org から ox-qmd(http://qiita.com/0x60df/items/3cde67967e3db30d9afe) を使って生成したものがこれです。


何が出来るのか

Org-mode で小説を書くと 1 コマンドで A5 サイズ縦書き二段組の PDF が生成できる。


使い方


準備


ox-novel.el を用意する。

ox-novel.el を Emacs からロード可能な場所に配置して、 init.el など、開始時に読み込まれる場所で

(require 'ox-novel)


uplatex を使えるようにする。

必要なのは

- uplatex

- dvipdfmx

というコマンドが使えるようになっていること。

私は Mac で Drag & Drop UpTeX を使って環境を整えました。他の環境では試してませんごめんなさい。


利用法


  1. Org-mode で小説を書く。どのように書くかは下にあるサンプルを参照。

  2. ファイルを開いた状態で C-c C-e n o する。

  3. pdf がエクスポートされて、ついでに開く(開きたくない場合は C-c C-e n p)。


推奨設定


ワードラップ機能をオフにする

word-wrapnil にしておくことをおすすめします。init.el あたりに以下の文言を追加しておきましょう。

(setq word-wrap nil)

何故かは、 word-wrap の on/off を切り替えてみればわかると思います。

Emacs の性質上、ワードラップ機能がオンだと、長い行の表示上の折り返しが、文頭にあるスペース(あるいはタブ)で一旦行なわれることになるからです。

例えば今の一文が、本来は次のように表示されて欲しいのに

  Emacs の性質上、ワードラップ機能がオンだと、長い行の表示上の折り

返しが、文頭にあるスペース(あるいはタブ)で一旦行なわれることになる
からです。

以下のように表示されてしまうからです。


Emacs の性質上、ワードラップ機能がオンだと、長い行の表示上の折り返
しが、文頭にあるスペース(あるいはタブ)で一旦行なわれることになるか
らです。

最初の一行(に見えるもの)は空白のみで改行文字すらないので、扱いが非常に面倒です。


サンプル


sample.org

こんな感じに書きます。タイトルとか著者名とかの設定は普通の org-mode っぽい感じ。

#+TITLE: Sample:サンプル小説

#+SUBTITLE: Org-mode で記述された小説が如何様な PDF になるのか。
#+AUTHOR: 本田そこ
#+PUBLISHER: そこそこ
#+PUBLISHED: 平成 28 年 4 月 12 日
#+EDITION: 初版
#+OPTIONS: toc:0 size:small sec-prefix:"*"

* 第一章
これより *第一章* を開始。

** 第一節

サンプルテキスト。

** 第二節

サンプルテキストその 2。

* 第二章

これからは第二章。

** 第一節

このようにして[[かんじ][漢字]]にルビを振ることも可能。


sample.pdf

タイトルページと奥付は横書きです。これは私の趣味です。

縦横選択もいつか出来るようにしたいですが、プライオリティ低めです。ごめんなさい。

<./sample.pdf>


書き方

基本的に普通の Org-mode ですが、文字装飾は今のところ

- 太字

- verbatim

の二種類のみ対応しています。適宜増やします。圏点欲しいんですが、記法をどうするか悩み中です。Org-mode に新たな記法を追加するのは避けたいんですよね、大仕事になりそうなので。

他の書き方についてはざっくばらんにやります。とりあえずルビ振りについては書いておきます。


ルビ振り

[[かな][仮名]]

という書き方をすればルビが振れます。

Org-mode の設定が初期状態のままだと編集時には 仮名 と表示されます。マウスオーバすると振られたルビがポップアップするので便利と言えば便利です。

が、ルビ編集がちょっと面倒なので、必要ならば以下のようにして記入した通りに表示することも出来ます。

(org-toggle-link-display)

で括弧付き表示か省略表示かを切り替え可能で、

(setq org-descriptive-links nil)

を実行すれば、どういう状態からであっても括弧付き表示になります。

org-toggle-link-displayM-x org-toggle-link-display と実行できるので、扱いが楽なのはこっちでしょうか。

他の .org ファイル編集時にも反映されるのでお好みでどうぞ。


設定出来る項目

(大抵の場合)ファイル冒頭にある #+hoge 系のやつです。


タイトル #+TITLE:

本のタイトルを設定します。指定しないとファイル名が使われるので、設定しておきましょう。

長いとはみ出ます。私の LaTeX 力の問題で、自動改行はされません。


サブタイトル #+SUBTITLE:

タイトルページと奥付の両方に表示されます。どちらもタイトルより少し小さめの文字で表示されます。設定しない場合、空白が残ったりはしないので、付けるか否かはお好きに。

タイトル同様、改行はされません。お気を付けください。


著者名 #+AUTHOR:

#+AUTHOR: の後に著者名を記述可能。これは、タイトルページと奥付に表示されます。指定しなかった場合、デフォルトのユーザ名が使われるので、 P.N. とそれを使い分けている場合はご注意を。


発行元 #+PUBLISHER:

発行元の設定。例えばサークル名などにお使いください。


連絡先 #+ADDRESS:

その名の通りです。改行には対応していないので、短かめにお願いいたします。


発行日 #+PUBLISHED:

発行された日です。特にフォーマットが指定されているわけではないので、どう書くかは自由です。

何版目かの情報は別途設定できます。


エディション #+EDITION:

何版何刷目なのかの情報を設定すると良い感じです。これもフォーマットはありません。御自由に。


印刷元 #+PRINTER:

どこで印刷されるのか、されたのかを設定します。奥付には「印刷 hoge」という形式で印字されます。


他、 #+OPTIONS: で指定可能なもの


目次生成の有無 toc

toc:1 などとすると、目次が生成される。今のところ意味があるのは nil, 0, 1 のみ。1 以上の数を設定しても 1 と同じ見た目になる。

デフォルト値は nil で目次なし。章のみの目次を作るときには 0 を指定すればよい。


文字サイズ size

small, normal, large の三種類から選べる。デフォルト値は normal


節名の prefix

各節の先頭に共通の文字を追加できます。

よくある使い方としては、節名を空文字列にして * を共通の prefix にする、とかでしょうか。

Org-mode のオプションの仕様上、半角スペースが使えないので注意してください。


TIPS


インクルード機能を使ってファイルを分割

Org-mode は #+INCLUDE: で別の .org ファイルをインクルードできる。

エクスポートする時はそれらのファイルの中身が挿入されてから処理されるので、例えば各章毎にファイルを分けてそれらを #+INCLUDE: すると、1 ファイルあたりの大きさを小さく出来てよい感じになる。

こんな感じ。

#+TITLE: Include Sample

#+AUTHOR: 本田そこ
#+PUBLISHED: 2016/04/12

#+INCLUDE: "prelude.org" :minlevel 1
#+INCLUDE: "chapter1.org" :minlevel 1
#+INCLUDE: "chapter2.org" :minlevel 1
#+INCLUDE: "afterword.org" :minlevel 1

:minlevel オプションで、インクルードするファイルのヘッドラインレベルを指定。意味がわからない場合、各章のファイルは * 章名 から始めて、:minlevel 1 を指定しておけばよい。

これは Org-mode に元からあるオプションなので、調べれば情報は出てきます。