pLaTeXでA5二段組の小説同人誌を作った

・この記事について

 この記事は2019/3/31に開催された第21次ROOT 4 to 5にて発行された拙作の同人誌『オルタのしっぽは今日も元気』のもう一つのあとがきとして作成しております。
 また、読者としては小説同人誌を執筆される方を想定しております。「この部分知っているよ!」という方はその部分を適宜読み飛ばして頂くと幸いです。

なぜLaTeXで同人誌を作ろうと思ったのか?

 組版する上で個人的にWordと和解できないと思ったから
 たったそれだけでした。高専時代にTeXに興味はありはしたものの、結局コードは一行も書くことはありませんでしたorz
 ただしお勧めはしません。割と茨の道でしたので。Wordでも問題ないよ、というのでしたらWordで大丈夫だと思いますし、InDesign導入しているよ、というのでしたらそちらを使っていただけたらと思います。
 どちらかというと、いえ、かなりマニアックな内容ですので、
・自力である程度問題を解決できる
・Linuxでも同人誌執筆したい
・LaTeXに興味がある(重要)
な方は、ぜひ参考にして頂けたら幸いです。
 なお、この記事を参考にして作られた制作物についての文字化け・ズレ等の問題については筆者は一切責任を負いません。作成者の自己責任にてご利用ください。

LaTeXってなあに?

・数式を綺麗に出力できる組版プラットフォーム
・縦書きも可能
・Windows、Linux、macOSなどと幅広いOSで利用可能
・インターネット上からソフトをダウンロードすることで無料で環境構築が可能
・htmlと同じようにテキストにコマンドを書き込み、それをプログラムが解釈してくれるマークアップ言語
 一番下について補足しますが、TeXファイル(中身はテキスト)をTeXプログラムでコンパイルすると、dviという中間ファイル(と考えて大丈夫です)が生成されます。そこから更にdvipsやdvipdfmx等といったプログラムを用いてPostScriptやPDFといった文書形式にとして出力することができます。
 今回はdvipdfmxを用いて最終出力先をPDFにしています。
 今回使用するのはpLaTeXです。もともとのTeXから機能を拡張したLaTeXにさらに日本語化したものpLaTeXです。

筆者の環境

・Windows 7 SP1(そろそろ買い換えなければ……)
・TeX Live 2018
・サクラエディタ
 テキストエディタは正規表現が使用できるものと文字コードと改行コードが変換できるのであれば問題ありません。更に置換できればgood。

TeX Liveの導入

 まずはTeX Liveをインストールしましょう。2019/3/31現在はTeX Live 2018が最新版です。(2019/4/30にTeX Live 2019がリリースされる予定です。)
 Windows8以降やisoイメージをマウントできる場合は、このリンクの "download from a nearby CTAN mirror"からisoイメージをダウンロードしたほうが早いと思われます。
 筆者のようにisoイメージを使えない場合はこのリンクからinstall-tl-windows.exeをダウンロードして実行すると、ネットワーク経由のインストールができます。
 その際、Windowsの場合、管理者権限で実行するとすべてのユーザーにインストールできます。(管理者権限でない場合は現在使用しているユーザーのみ)

このような画面が出てきますのでCustom installを選んでNextを押します。次の画面に切り替わりますのでそのままInstallを選択。少し待ちましょう。

 少し待つとこんな画面が出てきます。管理者権限でない場合は、TEXDIRの変更を要求されますので、変更するには、「TEXDIR」の右の変更をクリック→新しく出てきたウインドウのダイアログのC:\のところにあるChangeをクリック→フォルダを指定することになります。たいていは、C:\Users\ユーザー名 あたりになるでしょう。

 コレクションですが、流石に全部入れるとなると5GB以上になります。全部入れるのがしんどい、という方は「導入対象コレクション」の右の変更ボタンから選択できます。上記の選択ですとおよそ3GBになります。

 設定が完了したら「TeX Liveの導入」を押します。するとインストールが始まります。最低1時間はかかりますので、その間に昼寝するなり、プリンを作るなり、プリンを食べるなりして時間を潰しましょう。
「TeX Live へようこそ!」が出てきましたらインストール完了です。ダイアログを閉じましょう。

その他の導入

 TeX LiveにはTeXworksが入っており、そのままでもLaTeXは書けますが、より便利にtexファイルを作成できるTeX Studioがお勧めです。
 ダウンロードはこのリンクからできます。

 Windowsでサクラエディタを使う場合はこのリンクからダウンロードのページを飛び、Ver2.x系(Unicode版)をダウンロードしましょう。
 あと、ここから正規表現ライブラリbregonig.dllをダウンロードしてサクラエディタのsakura.exeと一緒のフォルダに入れましょう。

TeXstudioの設定

 オプション→TeXStudioの設定→コマンドのLaTeXのところの設定を以下のように変更します。

ptex2pdf.exe -l -ot -no-guess-input-enc -kanji=utf8 -synctex=1 -interaction=nonstopmode %.tex 

 ptex2pdf.exeはtexファイルをplatexでdviに変換することと、dvipdfmxでdviをpdfに変換することを一気に行います。ちなみに -l でplatexを指定しており、これが -u になるとuplatex処理になるので注意。

 後、一応DviPdfのところの設定が

dvipdfmx.exe %.dvi

になっていることを確認しておきましょう。

下準備その1(クラスファイルの準備)

 以下、必要であればsudoもしくは管理者権限にて操作すること。
 また、Windowsでは拡張子が表示されるようにしておくこと。
 また、texlive/year(2018)/ をTEXDIRと記載します。
 これから使うものを一気に用意しましょう。

 まずはTEXDIR/texmf-dist/tex/platex/base/ のフォルダより、tbook.clsを探してTeXworksもしくはTeXstudioで開きます。tbook.clsは縦書きの本を作る際に使うクラス、雛形を用意してくれるファイルになります。
とりあえず、

\ProvidesClass{mybook} %mybook部分は任意の名前をつける

 この部分の行を探して{}内を改変しましょう。とりあえず英数字のみで名付けるのが吉です。
 TeXでは%より右に書かれた文字はコメントとして扱い、実際のコンパイル時には読み込まれません。コメントをつけたり、コメントアウトしてコードを働かせないようにする役割ができますので覚えておきましょう。
以降使いますので。
 改変したファイルは({}内につけた名前).clsとして、同じ場所……ではなく、texlive/texmf-local/tex/latex/のフォルダの中に入れましょう。以下、mybookというクラス名を付けたという形で記事を進めます。

下準備その2(フォントファイル)

次に、フォントを用意しましょう。ヒラギノ、游書体、IPAex、小塚書体といったフォントはTeXLive側の設定にて簡単に変えることができます。
こちらでは説明しませんのでTeXWikiのこの記事を参考に設定していただければと思います。
 今回は好きな日本語フォントを使う、という場合を想定します。今回は源暎こぶり明朝を使います。
 下準備としては、源暎こぶり明朝のページからzipをダウンロードして、解凍を行い、そのフォルダ内のフォントファイル、拡張子が.ttfのものをtexmf-local/fonts/truetype/public/ のフォルダ内に入れます。(途中であてはまるフォルダ名がない場合は作成しましょう)
 設定につきましては、後述します。

下準備その3(パッケージの導入)

TeXliveには有り難いことにデフォルトのパッケージが大量に用意されています。パッケージを用いることで版面設定や、画像を扱うことといった、様々なことが簡便に行えるようになります。
 もちろん、新しくパッケージを導入したり、作成したりすることができます。版面の設定にはgeometryというパッケージが有名ですが、縦書き用の構成には使えないという弱点を抱えています。そのため、とても有難いことに、九州大学文藝部LaTeX研究会が作成した、縦書き用の版面も使えるhanmen.sty (スタイルファイル=パッケージ)がありますので、それを導入します。
 ここのダウンロードリンクに飛び、hanmen.styをtexmf-local/tex/latex/ に保存します。zipでダウンロードするよりも右のRawボタンを右クリックして、名前を付けてリンク先を保存したほうが手っ取り早いと思います。

 お疲れ様です。一通りのファイルの用意は終わりました。最後に、コマンドプロンプトorターミナルを開いて

mktexlsr

しましょう。これで追加したファイルが使えるようになります。

本文の執筆

 頑張って書きましょう。ここで使うテキストエディタは何でも良いです。文字コードや改行コードは気にせずに執筆しやすいものがベターです。ただし全角スペースが出力できるものであること。これが唯一の条件になります。
 筆者はiPadではiA writerを、AndroidではDropboxのテキストエディタを使用しています。

本文の変換

 このように、本文が完成しましたら、変換します。以下、サクラエディタで説明します。改行コードがCRLFの場合、置換(サクラエディタではCtrl+R)のウインドウにて、

 このように設定し、すべて置換します。\r\nはCRLFの改行コード、\\\\nの変換は行の後ろに\\を付けて\n(LF)で改行することを示しています。正規表現にチェックすることを忘れないようにしましょう。

 変換しましたら、作業フォルダに保存しましょう。名前は日本語が入っていても問題ありません。拡張子は.texにすること、文字コードをUTF-8にすること、改行コードをLF(UNIX)にすること、この3点を忘れずに行いましょう。

pLaTeXの雛形作成

 いよいよ、pLaTeXにて組版に入ります。TeXstudioを立ち上げ、ファイルから新規作成を押し、以下のコードを記入しましょう。

\documentclass[twocolumn,a5paper]{mybook} %A5の二段組でmybookの設定を適用する

\begin{document}
     やっとここまで来たよ…… %ここに本文を書く
\end{document}

 ファイル→名前を付けて保存を押し、先程の本文のtexファイルと同じフォルダに保存しましょう。名前はmasterあたりが良いと思われます。
 この記事では大元の組版を行うこのファイルをmaster.texとして話を勧めます。
 とりあえず出力してみましょう。緑の2つ重なった三角のボタンを押しましょう。pdfが出力されて、左の方にビューワーとして出るはずです。もちろんビューワー内で拡大縮小、移動できます。拡大すると、「やっとここまで来たよ……」が縦書きで現れます。無事に出てきましたら問題なくコンパイルできています。
 LaTeXでは、\begin{document} ... \end{document} の間に出力する本文を書く形式となっています。それより上の部分につきましては、プリアンブルと呼ばれる出力の各種設定を行う部分となっております。
 以上、これから設定を行います。

用紙サイズを変更及び出力する

 一度でも同人誌を入稿したことがある方なら知らない人は殆どいないと思いますが、塗り足しを指定されることが多々あります。(端まで届く文字や絵がなければ原寸でOKなところもありますが)
 そこで、用紙サイズを変更するには、クラスファイルを改変します。mybook.clsを開いて、以下の場所を変更します。
(検索はTeXworks、TeXstudioともにCtrl+Fでできます。検索しやすいのはTeXworksの方かな、と思います。)

\DeclareOption{a5paper}{\setcounter{@paper}{2}%
  %\setlength\paperheight {210mm}    %元のサイズはコメントアウトしておきます
  %\setlength\paperwidth  {148mm}}
  \setlength\paperheight {216mm}     % 210mm + 3mm * 2
  \setlength\paperwidth  {154mm}}    % 148mm + 3mm * 2

 上記の場合は塗り足しが各3mmの場合です。5mmの塗り足しが要求されたときは元のサイズから10mm足したサイズにしましょう。
 もちろん、元のサイズに戻すときはコメントアウトするところを入れ替えれば簡単に戻すことができます。

 用紙サイズの出力ですが、このままですと正常なサイズで出力されない可能性があります。このため、プリアンブルに以下のように記述します。

\usepackage{bxpapersize}

 これで、用紙サイズが正常に出力できるようになります。

フォントの設定

 日本語フォントは前述のとおり、源暎こぶり明朝を用います。
 日本語ファイルを簡単に用いることができる、pxchfonパッケージを用います。プリアンブルに以下のコードを記述します。

\usepackage[deluxe]{otf}
\usepackage[noalphabet, unicode]{pxchfon}
\setminchofont[0]{フォントのファイル名.ttf} %明朝体のフォントを指定できます

 もちろん、.ttfはOpentypeのフォントでしたら.otfになります。
 ちなみに、noalphabetをalphabetにすることで従属欧文が使えるようになりますが、仕様により等幅になってしまいますので、微妙な感じになってしまうかと思います。今回の同人誌は英字は従属欧文を用いています。
 欧文フォントも用意しましょう。今回は簡単に設定できるLatin Modernを使います。これもプリアンブルに以下のように書き込みます。

\usepackage{lmodern}
\usepackage[T1]{fontenc}

 これでフォントの設定が完了しました。
 この方法の場合、フォントは埋め込まれますので、特段埋め込みの設定は別途用意する必要はありません。

二段組の版面設定

hanmenパッケージを用いて設定します。

\setlength{\columnsep}{2zw} %段組間を全角2文字
\usepackage[Q=13,H=21,W=54,L=22,ko=2.625truemm,te=3.5truemm,footskip=3zw,tate]{hanmen}

 まず、デフォルトの二段組だとやや段組の間が狭いので段組の間を全角2文字に設定しています。
 そして、フォントサイズ13級、行送り21歯、横22行、縦26文字、小口側に2.625mmずらす、縦3.5mm上にずらす、フッターは文章文字より全角3文字下に配置するという設定がhanmenパッケージよりなされます。
 もちろん各自で変更できますので、好きな版面設計をしていただければと思います。
 実は、フォントサイズと行送りにつきましては、TeXの仕様により実際の設定サイズより少し小さく出力されます。気になるのでしたらテスト印刷して微調整しましょう。
 今回の小口の設定は文字の表裏重なるようにゴリ押ししています。これでおそらく1行分ずれるはず。
 二段組の場合、W(全角文字数)の設定には注意が必要です。Wについては通しで算出されるため、1段目+段組間+2段目となります。つまり今回の場合は26+2+26=54となります。

フッターの設定

 デフォルトではヘッダーにページ番号が振られています。そのままでもよいのでしたら何もしなくても良いのですが、フッターにページ番号を振る場合はfancyhdrを使いましょう。

\usepackage{fancyhdr}
\setlength{\headwidth}{\textheight}
\pagestyle{fancy} %fancyhdrの設定を適用
\lfoot[]{\thepage} %偶数ページは右下にページ番号
\cfoot{}
\rfoot[\thepage]{} %奇数ページは左下にページ番号

\renewcommand{\headrulewidth}{0pt} %罫線を消すおまじない

 もちろん、fancyhdrでヘッダーの設定もできます。これは各々検索してみてはいかがでしょうか。

縦中横の設定

 半角数字を本文中にこのまま入力していきますと、英数字のように90度横に倒れてしまいます。倒れないようにするために、縦中横の設定をします。
こちらよりコードを拝借しています。

\usepackage{plext}
\makeatletter
\chardef\nvlsty@zenkakuSpace=\jis"2121\relax
\newcommand{\tcy}[1]{\relax
	\nvlsty@zenkakuSpace\kern-1zw\relax
	\leavevmode\hbox to 1zw{\relax
		\centering\rensuji*{#1}\relax
	}\relax
	\kern-1zw\nvlsty@zenkakuSpace
}
\makeatother
以上をプリアンブルなどに書いておく。使いかたは至ってかんたんで、\tcy{12}時、のようにすればよい。
   LaTeXによる小説誌制作のヒント 2017/10/12 文藝部LATEX研究会

 実際に出力するとこうなります。

ルビの設定

 ルビにはpxrubricaのパッケージを使います。使うにはもちろんプリアンブルに

\usepackage{pxrubrica}

しましょう。

 これについてはまず、コードと出力例を挙げます。

\hspace{0.025zw}\jruby[m]{全呪解放}{ぜん|しゅ|かい|ほう}。\jruby[m]{加減}{か|げん}は\jruby{無}{な}しだ。\jruby[m]{絶望}{ぜつ|ぼう}に\jruby{挑}{いど}むがいい。『\jruby[g]{噛み砕く死牙の獣}{クリード・コインヘン}』\tcy{!!}\\
 \jruby[m]{全呪解放。加減は無}{ぜん|しゅ|かい|ほう|||げん||な}しだ。\jruby[m]{絶望に挑}{ぜつ|ぼう||いど}むがいい。『\jruby[g]{噛み砕く死牙の獣}{クリード・コインヘン}』\tcy{!!}\\
 \jruby{全呪解放。加減は無しだ。絶望に挑}{ぜん|しゅ|かい|ほう||か|げん||||||ぜつ|ぼう||いど}むがいい。『\jruby[g]{噛み砕く死牙の獣}{クリード・コインヘン}』\tcy{!!}

 デフォルトですとモノルビになります。モノルビは文字の区切りをパイプで区切ると振り分けられます。もちろん空白はパイプの間に何も入れなければ問題ありません。オプションに[g]を指定するとグループルビになります。グループルビは指定した文字全体にまとめてルビを振るのでパイプは必要ありません。
 \hspace{0.025zw}は、LaTeXでは最初の段落に空白が入るのですが、どうも中途半端ですのでこれでゴリ押ししています。2行目以降は強制改行で全角スペースを用いて調整するのが簡単かと思われます。特に小説ですと会話文で改行後の段落なしの「」が出る場面が多発する場合があるはずですので。

別ファイルの本文を出力する

 前にmaster.texと別のファイルで本文を用意したと思います。これをLaTeX文章に反映させるには、\begin{document} ... \end{document}内にて

\input{ファイル名} %.texは不要。もちろんmaster.texと同じフォルダに入れておきましょう。

これを書くだけです。今回はプリン.texを以下のように記述しています。
(ファイル名は日本語で問題ありません)

\hspace{0.025zw}プリンプリンプリンぷりんぷりんプリンプリンプリンぷりんぷりんプリンプリンプリンぷりんぷりん\\
 プリンプリンプリンぷりんぷりん\\
 プリンプリンプリンぷりんぷりん

最初の行はLaTeXのほうが段落の空白を作るため、段落の全角スペースを削除しています。もちろん、本文の方の全角スペースをそのままにして、LaTeXの方で段落の空白を作らない方法でも構いません。この場合は、\inputの前に、

\noindent %段落の空白を作らないようにする

を記述しましょう。
 \hspace{0.025zw}の内容は前述の通りですが、どうもLaTeXでは最初の全角スペースの空きが少ないので\noindentを使っていても必要です。
(入稿のときには実は気づいていなかったという)

出力例はこちら。

見出しをつける

 いくつかの短編をまとめる際には必要なはずです。もちろん、長編でも章区切り、節区切りはあるかと思います。
 LaTeXでは章や節の配置を行えます。今回は節を用います。
 使い方は本文内に

\section*{節の名前}

をその後に続く文章の前に入れるだけです。ちなみに*が無いと親切に○○節もしくは数字が振られますので要注意。
 節の後の空白設定として、二段組ですと上段と下段の行の位置がズレるのが気になる場合があります。この場合は

\vspace{0.053in} %節タイトル含めてちょうど2行分の空白になるはず

とゴリ押ししてやりましょう。

目次をつくる

 LaTeXには目次作成機能があります。章やタイトルをひとまとめにして目次ページを作ってくれます。
 作り方は、本文中に

\tableofcontents %目次をつくるよ!

するだけ。簡単でしょう?
 ところがどっこい、そのまま出力しても何も出力されません。なぜなら、\section*といった節番号が振られないものについてはLaTeXは目次としてはそのまま覚えてもらえません。
 では、覚えてもらうにはどうすれば良いのか?それには、\section*の行の下にこれを書きます。

\addcontentsline{toc}{section}{節の名前} %目次として記録する

 簡単に言うと節を目次に記録してもらう命令です。これがあることでやっと目次が現れる……というわけでもありません。2回コンパイルする必要があります。1回目のコンパイルでLaTeXはtocというところに目次の一覧表を用意します。2回目のコンパイルでそのtocという場所から目次を作成しています。つまり、修正した後も2回コンパイルする必要があることになります。

 やっと目次が現れました。ですがどうもこんな感じです。

 まず、ドットが左に寄っていること。次に一段組になって空白が目立つ上に参照がしにくいことが問題と感じるはずです。特に題名が短い場合は顕著な問題となります。
 以上、2つをを解決していきますが、どちらもmybook.clsを触っていきます。

 まずはドットが左に寄っている問題を解決します。これは、半角の.(ドット)で列を埋めていることが原因です。mybook.clsから、以下の部分を探して変更します。

\def\@dottedtocline#1#2#3#4#5{%
 %中略
     \leaders\hbox{$\m@th \mkern \@dotsep mu・\mkern \@dotsep mu$}% %ここの半角ドットを全角ドットに変える
 %後略

次に、一段組設定を解除して二段組にする方法ですが、これまたmybook.clsを探して以下の場所をコメントアウトします。

\newcommand{\tableofcontents}{%
  %\if@twocolumn\@restonecoltrue\onecolumn %この行と
  %\else\@restonecolfalse\fi               %この行と
  \chapter*{\contentsname
    \@mkboth{\contentsname}{\contentsname}%
  }\@starttoc{toc}%
  %\if@restonecol\twocolumn\fi             %この行をコメントアウト
}

 これで二段組で点が中央に打たれるかと思います。

 また、目次ページは奇数ページしか作られないことがデフォルトになっています。(偶数ページになる場合は空白ページを作ってしまう)
 これを回避するには、これまたmybook.clsで以下の部分を探してコメントアウトします。

\newcommand{\chapter}{%
  %\if@openleft \cleardoublepage \else                      %この
  %\if@openright \cleardoublepage \else \clearpage \fi \fi  %3行を
  %\thispagestyle{jpl@in}%                                  %コメントアウト
  \global\@topnum\z@
  \@afterindenttrue
%後略

 これで、偶数ページにも目次が作れるようになります。

改ページあれこれ

\\ %強制改行
\newpage %二段組の下に行く
\clearpage %新しいページに移る
\cleardoublepage %改ページ後、偶数ページの場合はそのページを空白ページで飛ばして奇数ページに移る

 次のうち、\cleardoublepageは空白ページを出力する場合があります。その場合、ページ番号も出力されませんので、ノンブルが全ページ必要なことが多い同人誌の場合は困ることになります。よって使用は非推奨となります。
 また、二段組で空白の上段を作る場合、\clearpageの下にそのまま\newpageを書いた場合、それが反映されずに上段から文章を書き出してしまいます。
 これを避けるためには、空の文章\mbox{}を用いて記述します。

\clearpage 
\mbox{} \clearpage %ページ番号だけが書かれたページを作成する

\mbox{} \newpage   %上段が空のまま下段に移行する

表紙

 普通に諦めてCLIP STUDIO PAINT EX使いました。
 iPadで表紙が作りました。

奥付

LaTeXで同人誌を作る際のTips@makisyu より拝借しました。

\vspace*{\stretch{1}}
\begin{flushright}
	\begin{minipage}{0.8\hsize}
		\begin{description}
			\item{タイトル:}オルタのしっぽは今日も元気
			\item{発行者:}朝霧 粉山
			\item{発行元:}十三十千
			\item{発行日:}二〇一九年三月三十一日
			\item{連絡先:} %メールアドレスは本誌のみ
			\item{Twitter:}Temporal\_Tower
			\item{pixiv:}1065071
			\item{印刷所:}株式会社ポプルス 様
		\end{description}
	\end{minipage}
\end{flushright}

あとがきのあとがき

 以上、『オルタのしっぽは今日も元気』のあとがきのとして、pLaTeXで同人誌作成のTips集となります。
 TeXLiveインストールから同人誌入稿まで1ヶ月という怒涛のペースにて、雛形づくりに悪戦苦闘しておりました。やはり目次の設定が一番面倒であったかなという印象です。その次はフォントですね。
 (技術系以外の)同人誌作成にしては使う人は少ないと思われるLaTeXでの小説系同人誌の作成ですが、この記事がきっかけで1人でLaTeXで同人誌を作成する人が増えたら良いなと考えております。
 サポート及び投げ銭は大歓迎です。
 最後になりましたが、この長い記事をここまで読んでくださってありがとうございました。またLaTeX関連の記事を書くかもしれませんのでその際はどうぞよろしくお願いします。

サポートして頂くと推し事やFGOのモチベが上がります。記事といった形で還元できるように努めてまいりますのでどうぞよろしくお願いします。