52 jpdfbookmarks を試す (PDFの目次)

PDF 文書には、目次 (しおり) が入っていて欲しい。 「目次」は bookmark とも言うみたいだけれど、 bookmark は別の意味にも使われることがあって、 混乱気味だ (例えば Skim や macOS のプレビューでは、目次とブックマークは違う… ここで紹介する jpdfbookmarks では「目次」の意味で bookmark と言っている)。


LATEX で PDF を生成するときは、自動的に目次を作ることも出来るけれど、 スキャンして作った PDF や、 人からもらった PDF には目次が入っていない場合があって、 目次の入力・編集が出来るソフトウェアが欲しい。

Adobeの Arobat では、ごく当然出来るのだけれど、 人気のある Skim では出来なくて、なかなか悩ましい。 個人的には、目次づくりと OCR のために Acrobat を使っているけれど、 Acrobat を購入したのが古くて (64ビット・アプリケーションではないので)、 Catalina では動かない。 Acrobat の Update のためだけに Adobe にお金払うのも… 今のところ、 Catalina をインストールできない古い Mac で作業することでしのいでいるけれど、 いつまでもそれは続けられないだろうし、何とかしたい。


少し脱線。

某会議の資料は PDF 文書で配布されるのだけれど、 目次なしで渡されていたのを無理を言って、 目次を入れるようにしてもらったことがある (会議中は「次は○○ページ」と言ってくれるけれど、 後で見るときにすごく面倒なので)。 担当者が変わったせいか、また入らなくなったけれど、どうしようかな。 以前はそうしていた、他の会議の資料では目次が入っている、 という論法で行こうか…


もっと脱線。

東京大学出版会の基礎数学シリーズは Maruzen eBook にあるけれど、 目次がすごく貧弱。章はあるけれど、節はない。 せっかく内容は充実しているのに、使い勝手が残念レベルになっている。 改善して欲しい…


本題に戻って、目次 (しおり、bookmark) を入力・編集するソフトウェアとして、 JPdfBookmarks というのが古くからある。

jpdfbookmarks-2.5.2.zip を展開すると、 jpdfbookmarks-2.5.2 というディレクトリィが現われる。

sudo mv jpdfbookmarks-2.5.2 /usr/local/share
cd /usr/local/bin
sudo ln -s /usr/local/share/jpdfbookmarks-2.5.2/link_this_in_linux_path.sh jpdfbookmarks
sudo ln -s /usr/local/share/jpdfbookmarks-2.5.2/link_this_in_linux_path_cli.sh jpdfbookmarks_cli
のようにすれば良い、という説明が書いてある (jpdfbookmarks は GUI, jpdfbookmarks_cli は CUI, cli は command line interface の略)。 しかし、これは Linux 向けの手順で、Mac でこうすると、 jpdfbookmarks を起動しようとしたとき
readlink: illegal option -- f
のようなエラーが発生する。Linux では、 readlink はいわゆる GNU の readlink だけれど、 Mac の/usr/bin/readlink はそうでなくて、 -f というオプションはない、ということだそうだ。

ネットを見ると、シェル・スクリプトを書くことで、 /usr/bin/readlink で済ませる方法が載っている。 なるほどと思うけれど、人に勧めるときトラブリそうなので、 GNU の readlink を使うことにした (安直すぎる?)。 readlink は coreutils に入っている (sed みたいに単独でインストールできると良いのだけど)。 MacPorts で次の1行コマンドでインストール可能である。
sudo port install coreutils
これで /opt/local/bin/greadlink, /opt/local/libexec/gnubin/readlink がインストールされる。

このどちらかを /usr/bin/readlink の代わりに呼ぶようにすれば良い。

方法1 現象数理学科 Mac では、 PATH の先頭付近に ~/bin があるはずだから
ln -s /opt/local/libexec/gnubin/readlink ~/bin
とリンクを張れば良いはず。

方法2 greadlink を呼ぶように /usr/local/bin/jpdfbookmarks, /usr/local/bin/jpdfbookmarks_cli を書き換える。 15行目あたり。
$ diff jpdfbookmarks.org jpdfbookmarks
15c15
< PATH_TO_TARGET=`readlink -f $0`
---
> PATH_TO_TARGET=`greadlink -f $0`

安直なインストール手順まとめ     現象数理学科 Mac 向け。 jpdfbookmarks-2.5.2 が展開出来たとして
sudo mv jpdfbookmarks-2.5.2 /usr/local/share
cd /usr/local/bin
sudo ln -s /usr/local/share/jpdfbookmarks-2.5.2/link_this_in_linux_path.sh jpdfbookmarks
sudo ln -s /usr/local/share/jpdfbookmarks-2.5.2/link_this_in_linux_path_cli.sh jpdfbookmarks_cli
sudo port install coreutils
ln -s /opt/local/libexec/gnubin/readlink ~/bin

使い勝手についてはまた後日。

桂田 祐史
2020-04-20