LaTeXによる小説組版法(初級)

この記事は、LaTeXで小説を組版するにはどうすればよいかを具体的に解説するものである。理論的な話は最小限に留め、主として実践的な話題を取り上げる。つまり、具体的にどう手を動かせばLaTeXで小説が組版できるのかを解説する。

コンピュータおよびLaTeXの初心者でも読めるように配慮したつもりだが、LaTeXの知識ゼロだと厳しいかもしれない。

なお、以下の方法はあくまでも初心者向けの簡易的方法1であり、私が普段LaTeXで組版している実際の現場の方法とはかなり異なる。

電撃文庫の再現

雛形ファイルの用意

具体例として、LaTeXで電撃文庫のデザインで組版してみよう。といっても商用フォントが手元にない限り完全再現はできないので、大体同じようなデザインを作るだけであるが。

まず、以下をnovelstyle.styという名前で保存する。スタイルファイル内の記述の意味は、一応コメント文で書いておいた。

\NeedsTeXFormat{pLaTeX2e}
\ProvidesPackage{novelstyle}

\RequirePackage[Q=11.5,H=19,W=42,L=17,addten=2mm,headsep=5mm,tate]{hanmen}% hanmen.styは自作のパッケージ。これでざっくりと版面を設計する。なお現在はこんなことをせずに、素直にjlreq.clsを用いるのが標準的な方法だと思われる。
\RequirePackage[deluxe]{otf}% フォントの多書体化。
\RequirePackage{plext}% plextは縦組み時に有用なパッケージ(なおutbook.clsなどの縦書き専用クラスを用いる場合には自動的に読み込まれる)。
\RequirePackage{pxrubrica}% pxrubricaはルビ振りに必要なパッケージ。
\RequirePackage{fancyhdr}% ヘッダー・フッターの改造に便利なパッケージ。

%
%% header & footer
%
\fancyhf{}% ヘッダー・フッターの初期化
\def\nvlsty@nombre{\textit{\thepage}}% ページ番号を出力するときは\thepageと書く。
\def\nvlsty@booktitle{ここにタイトルを書く}
\fancyhead[RE]{\vspace*{0pt}\scriptsize\nvlsty@nombre}
\fancyhead[LO]{\vspace*{0pt}\footnotesize\nvlsty@nombre\hskip1zw\scriptsize\nvlsty@booktitle}

%
%% \tcy
%
% LaTeXの解説書では、縦中横に\rensujiを使うこととされているが、
% \rensujiだと無駄なアキが入ってしまいベタ組みできない。
% そこで、ここでは新たに\tcyを定義する。
\chardef\nvlsty@zenkakuSpace=\jis"2121\relax
\def\tcy#1{%
    \nvlsty@zenkakuSpace\kern-1zw\relax
    \leavevmode\hbox to 1zw{%
        \centering\rensuji*{#1}%
    }%
    \kern-1zw\nvlsty@zenkakuSpace
}

%
%% \xobeylines
%
% これは、空行をあけなくても段落分けできるようにする工夫。
% 参考:https://hakuoku.github.io/agakuTeX/tutorial/4_1linebreak/(ちなみにここに出てくるxsceyさんというのは当研究会メンバーです)
% 本文中、\xobeylinesと書けば、空行をあけなくても段落が変わる。
% \disobeylinesと書けば、LaTeX記法通り、空行をあけないと段落が変わらないようになる。
% ただし、併用するパッケージによってはいろいろ弊害が出る場合があるので、素直に空行によって段落分けしたほうが無難かもしれない(実際私も、普段は空行で段落分けしている)。
{\catcode`\^^M=\active
    \gdef\xobeylines{\catcode`\^^M\active \def^^M{\par\leavevmode}}%
    \global\def^^M{\par\leavevmode}%
}
\def\disobeylines{\catcode`\^^M=5 }
\let\disxobeylines=\disobeylines
\AtBeginDocument{\xobeylines}%% 本文開始直後から\xobeylinesが適用されるようにする。

%
%% 全角アキ
%
% 疑問符などの後に全角空白文字「 」を使ってアキを作ると、疑問符が行末に来たとき空白が行頭に出てしまって都合が悪い。
% そこで、全角アキは以下のマクロで作る必要がある。
\newcommand{\zenkakuaki}{\hskip1zw plus .125zw minus 0.03125zw}
% 二分アキ・四分アキなども、以下のマクロを使って出力する。
\newcommand{\nibusibuaki}{\hskip.75zw plus .125zw minus 0.03125zw}
\newcommand{\nibuaki}{\hskip.5zw plus .125zw minus 0.03125zw}
\newcommand{\sibuaki}{\hskip.25zw plus .125zw minus 0.03125zw}


%
%% 値の調整
%
\tbaselineshift=.3zw%% 欧文出力位置の調整
% 以下は、余計な空白が入らないようにするための設定。
\parindent=0pt
\parskip=0pt
\parsep=0pt
\partopsep=0pt
% 以下は、禁則処理を抑制するためのもの。
% 参考:『よくわかるLaTeX小説 All You Need Is LaTeX』(http://p-act.sakura.ne.jp/PARALLEL_ACT/LaTeX-Dojin/)
% ウィドウ処理などを厳密にやりすぎると商業出版の組み方に似せられないので、
% ここでは禁則処理を抑制しておく。
\clubpenalty=0
\widowpenalty=0
\jcharwidowpenalty=0
\displaywidowpenalty=0
\prebreakpenalty\jis"2147=10000  % 5000 ’
\postbreakpenalty\jis"2148=10000 % 5000 “
\prebreakpenalty\jis"2149=10000  % 5000 ”
\inhibitxspcode`〒=2
\prebreakpenalty\jis"2133=10000
\prebreakpenalty\jis"2134=10000
\prebreakpenalty\jis"2135=10000
\prebreakpenalty\jis"2136=10000
\prebreakpenalty`ー=0
\prebreakpenalty`ぁ=0
\prebreakpenalty`ぃ=0
\prebreakpenalty`ぅ=0
\prebreakpenalty`ぇ=0
\prebreakpenalty`ぉ=0
\prebreakpenalty`っ=0
\prebreakpenalty`ゃ=0
\prebreakpenalty`ゅ=0
\prebreakpenalty`ょ=0
\prebreakpenalty\jis"246E=0     %ゎ
\prebreakpenalty`ァ=0
\prebreakpenalty`ィ=0
\prebreakpenalty`ゥ=0
\prebreakpenalty`ェ=0
\prebreakpenalty`ォ=0
\prebreakpenalty`ッ=0
\prebreakpenalty`ャ=0
\prebreakpenalty`ュ=0
\prebreakpenalty`ョ=0
\prebreakpenalty\jis"256E=0     %ヮ
\prebreakpenalty\jis"2575=0     %ヵ
\prebreakpenalty\jis"2576=0     %ヶ
\prebreakpenalty\jis"2139=0     %々(←これに関しては禁則処理を抑制しないほうが読みやすいかも)

% \endinputはスタイルファイルの末尾に記すおまじない。\endinputの後には何を記述しても無視される。
\endinput

 

次に、以下の文字列をnovel.texという名で保存する。これが雛形ファイルとなる。

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
(ここに本文を書く)
\end{document}

最後に、hanmen.styもダウンロードしておく。

以上のファイルはすべて同じフォルダに入れておく。

PDFファイルの生成

さて、あとは先程の雛形ファイルをPDF化できれば、ひとまずは成功である。

コンピュータに詳しい人なら、PDF化は容易であろう。しかし、コンピュータに不慣れな人にはこれが難しく感じられるはずである。

そこで、簡単にPDF化する方法として、以下のものを勧めたい(なお、以下の方法はWindows限定)。

次の文字列をtex2pdf.batという名で保存する2

cd %~dp0
uplatex novel
dvipdfmx novel

このtex2pdf.batを、novel.texと同じフォルダに入れておく。あとは、tex2pdf.batをダブルクリックすると、見事PDFファイルが生成されるはずである。

本文の書き方

上で、novel.texというファイルを作った。それをここに再掲する。

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
(ここに本文を書く)
\end{document}

基本

(ここに本文を書く)の部分に本文を書けばよい。たとえば以下のように書く。

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
 吾輩は猫である。名前はまだ無い。
 どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。
\end{document}

通常のLaTeX記法であれば、段落毎に空行を挟む必要があるが、小説を書くときにそのようなLaTeX記法で書くと台詞が連続する場合などに入力しづらい。そこで、novelstyle.styでは、空行を挟まずとも段落分けできるようにしてある。つまり、Wordなどで書くときとほぼ同じ感覚で本文を書けばよい。

ただし、再度注意するが、これは簡易的方法であって常用はおすすめできない3。LaTeXに慣れた後は、やはり段落毎に空行を挟むという通常のLaTeX記法を用いるのが最善である。

ルビ

ルビを振りたいときは、ルビマクロが使える。

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
 \ruby{吾輩}{わが|はい}は猫である。名前はまだ無い。
 どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番\ruby{獰悪}{どう|あく}な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。
\end{document}

ルビマクロの使い方は、「LaTeX 文書で“美しい日本の”ルビを使う ~pxrubrica パッケージ~」を参照せよ。

縦中横

縦中横が使いたいときは、\tcyマクロが使える4

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
 \ruby{吾輩}{わが|はい}は猫である。名前はまだ無い。
 \tcy{12}時だ。そろそろお昼にしよう\tcy{!!}
\end{document}

疑問符・感嘆符の後の空白

最後に、ちょっと面倒だが、疑問符・感嘆符の後の全角空白は、\zenkakuakiに置換する。

\documentclass[uplatex,dvipdfmx,a6paper,papersize]{jsbook}
\usepackage{novelstyle}
\begin{document}
 \ruby{吾輩}{わが|はい}は猫である!名前はまだ無い\tcy{!!}{\zenkakuaki}無いのである!
\end{document}

だけは、直後に全角空白を入れないで記述しておくと、PDF化の際に自動的に全角アキを挿入してくれる(なおアキが不要なときは「あ!\<と言った」のように\<を挿入する)。しかし、\tcy{!!}の直後には\zenkakuakiが必ず要る。

まとめ

上で見たように、LaTeXで小説を組版するのはそんなに難しいことではない。誰でもできることである。

ただし、レイアウトを変更したり、扉ページを作ったりは少し難しいので、ここでは解説しなかった。後日、中級編を執筆する予定なので、そこで解説できればと思っている。

追記中級編を執筆しました。


  1. なぜこれが簡易的方法なのかと言うと、例えば全角空白を用いてインデントを表現していたりするからだ。全角空白を用いてインデント代わりにするのは、組版の規則を考えると本当はよくない(このやり方だと、段落によってインデント量にわずかな差がうまれる危険がある)。また、本当はスタイルファイルではなくクラスファイルを作ったほうがよい(なお、ここで紹介しているスタイルファイルをクラスファイルに仕立て直すことはそれほど難しくはない)。 ↩︎

  2. ファイル名は末尾に.batがあれば何でもよいが、ここでは “tex to pdf” という意味でtex2pdf.batという名にした。 ↩︎

  3. \xobeylinesには色々な弊害があるのでグローバルに使用するのは本来避けるべきである(局所的に環境内で使うぶんには弊害は少ないであろう)。本記事で\xobeylinesを紹介したのは、あくまで「LaTeXでも実はある程度WYSIWYGっぽいことができる」とか「テキストで書いていた小説をそのままTeXファイルとして保存するだけで簡易的にPDF化することができる」とかということを示唆したかったからにすぎない。(ZR氏のツイートの言う「LaTeX者☺に\xobeylinesを雑に勧めている勢」と呼ばれる集団のメンバーとして本記事およびその作者が想定されていそうだったので、改めて注意喚起を記しておきました。なお本記事ではつねづね、\xobeylinesを紹介こそしていますが推奨は一切してきておりません。) ↩︎

  4. 縦中横を実現するマクロとしては、plextパッケージですでに\rensujiが提供されている。しかし、\rensujiを直接使うとどうやら無駄に\xkanjiskipが挿入されてしまうようなので、ここでは独自に\tcyというマクロを使うこととした。なお\tcyを定義するのではなく、「!と? - 縦中横ふたたび」に書かれているような仕方で\rensujiを再定義するという方法もある。また、jlreq.clsを使う場合には\tatechuyokoというマクロがすでに定義されているのでこれを使えばよい。 ↩︎

schedule 2017年2月26日
update 2023年1月15日
local_offer #LaTeX #DTP