Re:VIEWで索引を作る
2019年4月、Re:VIEWでPDF用の索引を作成する方法を調べました。環境は、Windows10 WSLにインストールしたUbuntu18.04.2です。TeXは、TeX Live 2018をインストールしています。Re:VIEWのバージョンは、3.1.0です。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic
$ review version 3.1.0
Amazonから『最強の電子書籍執筆ツール Re:VIEW解説』を出版しました。
索引の使い方
索引の作成は、PDFビルダ(TeX)でのみサポートしています。
公式サイトのドキュメントに「索引の使い方」という説明があります。
【注意】
- LaTeX の mendex コマンドの実装に依存しているため、 現時点では英語または日本語以外の挙動は不明です。
- LaTeX ビルダ以外のビルダでは、埋め込んだ索引を利用する手法を提供していません。後述のヒントを参照してください。
- LaTeX ビルダでの索引生成機能は、デフォルトで無効にしています。設定 YAML ファイルで明示的に有効にする必要があります。
この説明に従って各種設定を行うことによって、PDF索引を作成することができました。
索引語の埋め込み
索引とは、書籍中に出現する語句などを容易に探し出せるように一定の順序に並べてその所在を明確にしたものです。索引として登録する索引語を@<idx>マークアップ、または@<hidx>マークアップで記述して埋め込みます。索引は、この索引語を抽出・整列して作成します。
@<idx>は「索引文字列」を索引に登録して紙面にも現れます。それに対して、@<hidx>は「隠し索引文字列」を索引に登録しますが、紙面には現れません。「隠し索引文字列」は、索引語を“<<>>”で区切ることにより次のように階層化した索引(最大3階層)を作成できます。
- “索引語”
- “親索引語<<>>子索引語”
- “親索引語<<>>子索引語<<>>孫索引語”
サンプル原稿
次のようなサンプル原稿を作成します。
= 索引
== EPUBとは
電子出版コンテンツの形式を標準化するために、
電子書籍フォーマット@<kw>{EPUB,Electronics Publication}
が誕生しました。
== レイアウト
@<hidx>{固定レイアウト型}
@<hidx>{リフロー型}
@<idx>{EPUB}は
@<b>{固定レイアウト型}と@<b>{リフロー型}があります。
: 固定レイアウト型
紙の書籍のようにレイアウトが固定している形式です。
画面サイズの異なる電子書籍端末(デバイス)で表示しても同じように見えます。
ピンチ操作で画面を拡大・縮小することができます。
: リフロー型
電子書籍端末(デバイス)の文字サイズや行間ピッチの設定により、
画面サイズに合わせて行の折り返しなどの表示を自動的に調整する形式です。
1画面内の文字数が流動的に増減し表示された内容が結果的にページとなり、
紙の書籍のようなページの概念がありません。
== カタログ構成
@<hidx>{カタログ構成 <<>> PREDEF: 前付け }
@<hidx>{カタログ構成 <<>> CHAPS: 本編 }
@<hidx>{カタログ構成 <<>> POSTDEF: 後付け }
@<hidx>{PREDEF: 前付け }
@<hidx>{CHAPS: 本編 }
@<hidx>{POSTDEF: 後付け }
本文の章立て構成は、
catalog.yml構成ファイルで記述します。
カタログ構成ファイルを@<table>{configuration_catalog_file}に示します。
//table[configuration_catalog_file][カタログ構成ファイル]{
項番 セクション 意味
--------------------------------------
1 PREDEF: 前付け
2 CHAPS: 本文
3 APPENDIX: 付録
4 POSTDEF: 後付け
//}
索引作成の概要
LaTeXビルダでは、LaTeXの索引作成用のmemdexコマンドを利用して索引を作成します。
原稿に埋め込んだマークアップから索引語を抽出して、一定の順序に並べて整列します。索引語を整列するためには、その索引語の「読み」が必要となります。読みは、読み方辞書や形態素解析により判定し、LaTeXのmemdexコマンドで読み順に整列して索引を作成します。Re:VIEWにおいては、形態素解析エンジンのMeCabを使用しますので、別途インストールが必要です。
LaTeXビルダでの索引生成機能は、デフォルトで無効です。索引生成機能を使用する場合は、config.yml設定ファイルのmakeindex:パラメーターにより有効に設定します。
・・・
pdfmaker:
# 索引を作成するか。trueで索引作成が有効
makeindex: true
・・・
MeCabと索引作成
PDFビルドで、索引を作成します。
$ rake pdf review-pdfmaker config.yml INFO: compiling chapter01.tex WARN: review-pdfmaker: compile error in chapter01.tex (ReVIEW::ApplicationError) WARN: review-pdfmaker: chapter01.re:0: error: not found MeCab INFO: compiling index.tex WARN: review-pdfmaker: compile error in index.tex (ReVIEW::ApplicationError) WARN: review-pdfmaker: index.re:0: error: not found MeCab ERROR: review-pdfmaker: compile error, No PDF file output. rake aborted! Command failed with status (1): [review-pdfmaker config.yml...] lib/tasks/review.rake:96:in `block in ' Tasks: TOP => pdf => book.pdf (See full trace by running task with --trace)
「not found MeCab」エラーが発生しました。形態素解析エンジンのMeCabをインストールしていませんでした。
形態素解析エンジンMeCabは、読み方判定を行うものです。しかし、「読み」の判定は万能ではありません。例えば、短い単語は音読み・訓読みの違いで期待どおりとはならない場合があります。また、専門用語は読みを正しく解釈できない場合が多いです。
MeCabによる形態素解析は、デフォルトで使用する設定となっています。今回は、形態素解析を使用しない設定にします。config.yml設定ファイルのmakeindex_mecab:パラメーターをnullとします。
・・・
pdfmaker:
# 索引を作成するか。trueで索引作成が有効
makeindex: true
# MeCabによる索引読み探索を使うか
makeindex_mecab: null
・・・
PDFビルドで、索引を作成します。
$ rake pdf review-pdfmaker config.yml INFO: compiling chapter01.tex INFO: compiling index.tex INFO: extractbb cover-a5.ai cover.jpg INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: mendex -f -r -I utf8 __REVIEW_BOOK__ INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
次のようなPDFを作成しました。
紙の書籍で見るような格好いいスタイルではありませんが索引も作成しました。
PDF索引のスタイル
索引ページのスタイルは、mendexコマンドのデフォルトのスタイルで作成します。索引のスタイルを変更するときは、スタイルファイル(拡張子 .ist)を作成して、config.yml設定ファイルのmakeindex_sty:パラメーターでスタイルファイルを指定します。
・・・
pdfmaker:
# 索引を作成するか。trueで索引作成が有効
makeindex: true
# 索引作成コマンドのスタイルファイル
makeindex_sty: myindex.ist
# MeCabによる索引読み探索を使うか
makeindex_mecab: null
・・・
myindex.istのスタイルを作成します。
delim_0 "\\quad\\hfill"
delim_1 "\\quad\\hfill"
delim_2 "\\quad\\hfill"
symbol_flag 1
symbol "記号/数字"
heading_flag 1
letter_head 2
heading_prefix "{\\vbox{\\hbox to \\linewidth{\\gtfamily\\bfseries\\large "
heading_suffix "\\ \\hskip\\fill}\\vskip2pt\\hrule}}\\nopagebreak\n"
下記にスタイルパラメーターの意味を示します。mendexコマンドやスタイルの詳しい情報は、オンラインマニュアルを参照してください。
項番 | パラメーター | 説明 |
---|---|---|
1 | delim_0 | 親エントリーと最初のページ番号の間の区切り文字列 |
2 | delim_1 | 子エントリーと最初のページ番号の間の区切り文字列 |
3 | delim_2 | 孫エントリーと最初のページ番号の間の区切り文字列 |
4 | symbol_flag | 数字・記号の頭文字の出力フラグ (1:する、0:しない) |
5 | symbol | 数字・記号の頭文字として出力する文字列 |
6 | heading_flag | 頭文字の出力フラグ (0:しない、1:英大文字、-1:英小文字) |
7 | letter_head | 日本語の頭文字の出力フラグ (0:しない、1:カタカナ、2:ひらがな) |
8 | heading_prefix | 頭文字の前に付けるコマンド文字列 |
9 | heading_suffix | 頭文字の後に付けるコマンド文字列 |
$ rake pdf review-pdfmaker config.yml INFO: compiling chapter01.tex INFO: compiling index.tex INFO: extractbb cover-a5.ai cover.jpg INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: mendex -f -r -I utf8 -s /sample-index/myindex.ist INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
紙の書籍のような格好いいスタイルの索引を作成しました。
読み方判定
索引をよく見ると「固定レイアウト」という索引語が「り」の索引分類に現れています。これは、「固定レイアウト」は漢字で読み方が不明なのが原因です。
形態素解析MeCabによる「読み」の判定を使用しない設定としています。MeCabを利用せずに読み方辞書により読み方判定を行うようにします。
読み方辞書は、デフォルトで使用しない設定となっています。読み方辞書を使用する場合は、config.yml設定ファイルのmakeindex_dic:パラメーターにより使用する辞書のパス名を設定します。読み方辞書に“myindex.dic”を登録します。
・・・
pdfmaker:
# 索引を作成するか。trueで索引作成が有効
makeindex: true
# 索引作成コマンドのスタイルファイル
makeindex_sty: myindex.ist
# 索引作成コマンドの辞書ファイル
makeindex_dic: myindex.dic
# MeCabによる索引読み探索を使うか
makeindex_mecab: null
・・・
読み方辞書は、1列目に熟語、2列目に読みを列挙したスペース(または、タブ)区切り形式のテキストファイルです。
固定 こてい
PDFビルドで、索引を作成します。
$ rake pdf review-pdfmaker config.yml INFO: compiling chapter01.tex INFO: compiling index.tex INFO: extractbb cover-a5.ai cover.jpg INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: mendex -f -r -I utf8 -s /sample-index/myindex.ist -d /sample-index/myindex.dic __REVIEW_BOOK__ INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex INFO: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
「固定レイアウト」という索引語が「こ」の索引分類に現れました。
まとめ
Re:VIEWのPDFビルドで索引を作成することができました。形態素解析(MeCab)を使用せずに、読み方辞書により索引を作成しました。TeXに不慣れのでMendexの使用経験も無かったので索引のスタイル設定を調べるのに手間取りました。
Re:VIEWは、PDFビルダでTeXを利用して索引付きのPDFを簡単に作成できるので素晴らしいシステムです。