執筆支援システム Re:VIEWでPDF用の索引を作る

Re:VIEWで索引作成

Re:VIEWで索引作成

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

WSL Ubuntu18.04に執筆支援システム Re:VIEWをインストール

WSL Ubuntu18.04にTeXをインストール

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コマンドを利用して索引を作成します。

Re:VIEW索引作成の概要

Re:VIEW索引作成の概要

原稿に埋め込んだマークアップから索引語を抽出して、一定の順序に並べて整列します。索引語を整列するためには、その索引語の「読み」が必要となります。読みは、読み方辞書や形態素解析により判定し、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を作成しました。

Re:VIEW PDF

Re:VIEW PDF

紙の書籍で見るような格好いいスタイルではありませんが索引も作成しました。

PDF索引1

PDF索引1

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

紙の書籍のような格好いいスタイルの索引を作成しました。

PDF索引2

PDF索引2

読み方判定

索引をよく見ると「固定レイアウト」という索引語が「り」の索引分類に現れています。これは、「固定レイアウト」は漢字で読み方が不明なのが原因です。

形態素解析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

「固定レイアウト」という索引語が「こ」の索引分類に現れました。

PDF索引3

PDF索引3

まとめ

Re:VIEWのPDFビルドで索引を作成することができました。形態素解析(MeCab)を使用せずに、読み方辞書により索引を作成しました。TeXに不慣れのでMendexの使用経験も無かったので索引のスタイル設定を調べるのに手間取りました。

Re:VIEWは、PDFビルダでTeXを利用して索引付きのPDFを簡単に作成できるので素晴らしいシステムです。