ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

LinuxとPandoc、TeX LiveでMarkDownをPDFに変換しようとしたらいろいろハマった

前回こんな日記を書きました。

ytooyama.hatenadiary.jp

今度はLinuxでそれをやってみようと思いました。 ところがなかなかうまく行かないわけです。

具体的にどんな問題があるかですが、以下の二つの問題があります。

  • Mac版のAdobe Readerで閲覧したドキュメントをコピーペーストしようとすると不要な空白がちょくちょく入る
    • でも、プレビューでは問題ない
  • Mac標準のプレビューで開いて保存するとPDFの目次が消えてしまう

悩ましい問題です。

ちなみに1個目の問題は次のような感じです。閲覧するだけであればそのように見えるので問題ないのですが、PDFからコピーペーストすると次のような感じでちょくちょく空白が入ってしまうようです。ビューのデータは正しいけどテキストデータは壊れているという例ですね。

http_proxy ="http :// proxy.example.com :8080/"
https_proxy =" https :// proxy.example.com :8080/"
controller# vi /etc/glance/glance -api.conf
hostnamectl set -hostname controller
sudo add -apt -repository cloud -archive:newton

2個目の問題はちょっと深刻です。OS X Lion (10.7)以降では「オートセーブ、バージョン、再開」機能が実装されました。保存が自動的かつ定期的に行われるので「あっ、セーブするの忘れた!」といった事故を防いでくれます。

support.apple.com

この機能自体は意味便利な機能です。対応しているアプリケーションであればこの機能はデフォルトで機能します。標準アプリケーションであるプレビューももちろんのこと。

さらにSierraではPDFKitというのが刷新され、iOSのそれと共通化されました。一見良さそうなのですが、iOSという制限のあるOSの上で使うのには十分であるものの、フルデスクトップ環境で使うにはあまりにも貧弱だったようで、次のように正規の手段で発行されたPDFをプレビューアプリで開くと

  • 「オートセーブ、バージョン、再開」機能が働いて自動セーブされる
  • 自動セーブされるとPDFの内容が破壊されて一部の情報が欠落される

という2コンボを喰らいます。今日はこの仕様バグに悩まされました。 Sierraの10.12.2くらいまでおかしくて、10.12.4で主要な問題は修正されましたが、以降のバージョンでも引き続きPDF周りはおかしいという声が多く上がっているようです。

applech2.com applech2.com

全く困ったものです。この問題の回避策は次の通りです。

Adobe Readerを使う

一番真っ先に思いつくと思いますが、残念ながらコピーペースト問題があります。Adobe Readerで表示したPDFコンテンツからコピーしたデータは信頼性がありません。最悪の場合、文字化けしたデータがコピーされることもあります。閲覧、印刷といった本来の使い方であれば問題はありません。

プレビューを使う

プレビューは上記のコピーペースト問題は起きないようです。ただし前にあげた「オートセーブ、バージョン、再開」機能の問題があり、事前に設定を変えておかないとデータが自然に破損します

PDFファイルを読み込んでプレビューでPDFとしてエクスポートするとデータが欠落したPDFファイルを出力するという問題もあります。つまり、Sierra以降のプレビューでPDFを扱うとデータが壊れるという話です。

以下のページの「プレビュー」の項目に書かれている方法で回避できるようです。私は「defaults write com.apple.Preview ApplePersistence -bool no」を設定してしまいました。プレビューで編集作業をほとんどしないのでまあこの設定でも影響ないと思います。

https://oku.edu.mie-u.ac.jp/~okumura/macosx/

他のPDFビューアーを使う

いろいろ調べたら次のページを見つけました。機能が豊富で良い感じです。 Skimでコピーペースト、エクスポート、上書きなどやってみましたが、いずれも問題は起きませんでした。 なので、今後はMacではSkimを使っていこうと思います。

itea40.jp

とりあえず理由がわかったので、LinuxとPandoc、TeX LiveでMarkDownをPDFに変換する方法を、そのうちブログにまとめたいと思います。