ods
ods copied to clipboard
Mac の preview や acrobat で PDF ファイルを開くとエラーダイアログが出たり、クラッシュしたりすることがある
Java 版で報告を受けましたが、自分の環境で試してみたところ C++ 版にも同様の問題があるようです。
今のところ Ubuntu や Windows では、再現していないようです。
もし、同様の症状が出ている方や、直し方のわかる方がいれば教えてください。
私の環境(Windows10)では、Acrobat Reader DC で開くと「文章を読み取り中に問題が発生しました(135)。」のメッセージが表示され、表示できないページも見受けられます。例えば ods-cpp.pdf の24ページから61ページは表示されません。
また、同じファイルを TeXworks で確認すると、表示できるものの図中の日本語部分が空白になっています。
SumatraPDF では問題なく表示できているようです。
そこで、ローカルにコンパイル環境を用意して IPAex フォントを埋め込んでみたところ、
Acrobat Reader DC やTeXworks でも正常に表示できるようになりました。
埋め込みフォントが原因では? と思われますが如何でしょうか。
@icm7216
Windows での再現調査と修正方法案をお知らせいただき、ありがとうございます。
Mac OSX でも、Acrobat Reader DC で開いたときはお知らせいただいたものと同じエラーダイアログが表示されます。Preview で開くと、Texworks で開いた場合のように図中の日本語部分が空白になります。
埋め込みフォントが実際の原因かどうかまだ自分では判断はついていませんが、https://texwiki.texjp.org/?PDF%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9#v9136148 などを見ても、基本的にはフォントを埋め込んだ方が良さそうですね。特に、問題が発生しなくなるようでしたらぜひ採用したいです。
もし、フォントを埋め込むように修正したソースコードをお持ちでしたら、Pull Request を作成していただくことはできますでしょうか?
@spinute さん、今回の再現調査ではフォント埋め込みのためのソースコードへの修正は行っておりません。フォントの埋め込みは TeX 環境側での指定となっています。 また、ソースコードに対して行った内容は、コンパイルをエラーを無くすための幾つかのファイルのコピーペーストに留まっています。
TeX 環境によっての違いもあるのかと思われますので、参考として再現調査に使用した環境の作成手順を以下に示します。少し長くなりますがご容赦ください。
Open Data Structures 日本語版pdfの作成手順
作業環境
- Host OS: Windows 10 64bit
- VirtualBox 5.2.16
- Guest OS: Ubuntu 18.04 LTS 64bit
- TeXLive2017
作業環境の準備
VirtualBoxにUbuntu Desktop環境を作成
Ubuntu 18.04 LTSのISOイメージを取得してインストール
VirtualBox Guest Additionsをインストール
依存パッケージをインストール
$ sudo apt install build-essential
- Guest AdditionsのCDイメージを挿入して実行
- Guest AdditionsのCDイメージを取り出し
- Ubuntuを再起動
UbuntuにTeX Liveをインストール
ftp://tug.org/historic
から TeXLive 2017 のISOイメージを取得
- ftp://tug.org/historic/systems/texlive/2017/
今回は、Host側(Windows10)にダウンロードしておいたISOイメージを使用しました。
GUIメニューでISOファイルをマウント後 TeX Live2017をインストール
$ cd /media/$USER/TeXLive2017
$ sudo ./install-tl
... (snip) ...
Actions:
<I> start installation to hard disk
<P> save installation profile to 'texlive.profile' and exit
<H> help
<Q> quit
Enter command: I
パスを通す
$ echo 'export PATH="/usr/local/texlive/2017/bin/x86_64-linux:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
インストール完了確認
$ $ tex --version
TeX 3.14159265 (TeX Live 2017)
kpathsea version 6.2.3
Copyright 2017 D.E. Knuth.
There is NO warranty. Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.
コンパイル環境の準備
ここからが本題です。 Open Data Structures 日本語版のTeXソースからpdfを作成します。
依存パッケージをインストール
$ sudo apt install ipe inkscape gnuplot git lua5.1 default-jdk libcanberra-gtk-module
IPAフォントをインストール
$ sudo apt install fonts-ipafont fonts-ipaexfont
$ fc-cache -fv
pdftkはsnap版を入れます(Ubuntu 18.04のパッケージから削除されたそうです。*1)
sudo snap install pdftk
Open Data Structuresのソースを取得
$ cd ~
$ git clone https://github.com/spinute/ods.git
$ cd ods
現在のブランチを確認(作業対象はjaブランチです)
$ git branch -a
* ja
remotes/origin/HEAD -> origin/ja
remotes/origin/advanced
remotes/origin/aupress
remotes/origin/courseware
remotes/origin/gh-pages
remotes/origin/ja
remotes/origin/master
remotes/origin/nicehtml
コンパイルに欠如しているファイルの調整
本文内の図のコンパイル時にods-colors.sty
を見失っているようなので、ローカルの texmf にコピーします。
$ mkdir -p ~/texmf/tex/latex/ods
$ cp ja/ods-colors.sty ~/texmf/tex/latex/ods/
$ sudo mktexlsr
ja/images/
に不足しているファイルをlatex/images/
からコピーします。
$ cp ~/ods/latex/images/tree3-thick.svg ~/ods/ja/images/
$ cp ~/ods/latex/images/cc-by.pdf ~/ods/ja/images/
$ cp ~/ods/latex/figs/makeepss ~/ods/ja/figs/
gnuplot と Tikz が連携するために必要なファイルのシンボリックリンクを~/texmf
に作成します。
$ cd ~/texmf/tex/latex
$ ln -s /usr/share/texmf/tex/latex/gnuplot ~/texmf/tex/latex/gnuplot
$ sudo mktexlsr
埋め込みフォントの指定
埋め込みフォントの CURRENT が ipaex になっていることを確認します。
$ kanji-config-updmap-user status
CURRENT family for ja: ipaex
Standby family : ipa
CURRENT が ipaex でない場合はIPAexに設定します。
$ kanji-config-updmap-user ipaex
コンパイル
~/ods/ja
ディレクトリでコンパイルを行います。
cd ~/ods/ja
make clean
make
コンパイルに成功すると、IPAex フォントが埋め込まれた日本語訳版のpdfが~/ods/ja
に生成されます。
参考
texlive 2019 (texlive 2018 以降は、default encode が utf8 になったバージョンなのです。) platex から、uplatex に LaTeX の Engine を変更して、IPAex font の組み込んだpdfの生成に成功しました。手元の android tablet の perfect viewer でちゃんと見えるのを確認しました。
変更理由
uplatexに変更した理由は、「高」という字が、platex 2019では、エラーになったからです。
実施方法
Debian GNU/Linux buster で、texlive を extra を含めて一式をインストールします。(私はいろいろ知らないので、ipetoipe や upbibtex 関係のマクロを後から追加導入しました。)
kanji-config-updmap を指定します。
本スレッドのissueに書いてある情報を土台にして、engineだけ切り替えています。
https://github.com/yabuki/ods
に差分を置いてあります。
環境
Debian GNU/Linux buster --- texliveのパッケージは、extraも含めて必要でした。
yabuki@Odayla:~/scm/git/ods/ja$ uplatex --version e-upTeX 3.14159265-p3.8.1-u1.23-180901-2.6 (utf8.uptex) (TeX Live 2019/dev/Debian) kpathsea version 6.3.1/dev ptexenc version 1.3.7/dev Copyright 2018 D.E. Knuth. There is NO warranty. Redistribution of this software is covered by the terms of both the e-upTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the e-upTeX source. Primary author of e-upTeX: Peter Breitenlohner.
yabuki@Odayla:~$ dpkg -l texlive* | grep -e '^ii'
ii texlive 2018.20181214-1 all TeX Live: A decent selection of the TeX Live packages
ii texlive-base 2018.20181214-1 all TeX Live: Essential programs and files
ii texlive-bibtex-extra 2018.20181214-1 all TeX Live: BibTeX additional styles
ii texlive-binaries 2018.20181218.49446-1 amd64 Binaries for TeX Live
ii texlive-font-utils 2018.20181214-1 all TeX Live: Graphics and font utilities
ii texlive-fonts-extra 2018.20181214-1 all TeX Live: Additional fonts
ii texlive-fonts-extra-links 2018.20181214-1 all TeX Live:
ii texlive-fonts-recommended 2018.20181214-1 all TeX Live: Recommended fonts
ii texlive-lang-chinese 2018.20181214-1 all TeX Live: Chinese
ii texlive-lang-cjk 2018.20181214-1 all TeX Live: Chinese/Japanese/Korean (base)
ii texlive-lang-japanese 2018.20181214-1 all TeX Live: Japanese
ii texlive-lang-korean 2018.20181214-1 all TeX Live: Korean
ii texlive-lang-other 2018.20181214-1 all TeX Live: Other languages
ii texlive-latex-base 2018.20181214-1 all TeX Live: LaTeX fundamental packages
ii texlive-latex-extra 2018.20181214-1 all TeX Live: LaTeX additional packages
ii texlive-latex-recommended 2018.20181214-1 all TeX Live: LaTeX recommended packages
ii texlive-luatex 2018.20181214-1 all TeX Live: LuaTeX packages
ii texlive-pictures 2018.20181214-1 all TeX Live: Graphics, pictures, diagrams
ii texlive-plain-generic 2018.20181214-1 all TeX Live: Plain (La)TeX packages
yabuki@Odayla:~$ dpkg -l ipe | grep -e '^ii'
ii ipe 7.2.7-3 amd64 drawing editor for creating figures in PDF or PS formats
yabuki@Odayla:~$ dpkg -l pdftk | grep -e '^ii'
ii pdftk 2.02-5 amd64 transitional package for pdftk, a tool for manipulating PDF documents
yabuki@Odayla:~$ dpkg -l pdftk-java | grep -e '^ii'
ii pdftk-java 3.0.2-1 all pdftk port to java - a tool for manipulating PDF documents
pdftkの実体は、pdftk-javaに移行した。(なので、transitional packageになっている)
他にも本スレッドで言及されているパッケージはインストールしているが、上記は ubuntu と Debian buster では状況が違うので言及した。次にでる ubuntu であれば、Debian buster とも同じ時期のsidからのforkから開発されるので、似たような手順でいけると思う。
html生成
Makefile に書いてあるhtml生成ですが、生成テストしたら、images.pdfがないといってIO Errorになってしまいます。imageディレクトリを含めて、Makefile を見ましたが良くわかりませんでした。pdf生成できたら、html生成は out of scope でいい感じでしょうか? 必要であれば、別issue建てます。
@yabuki さん、 @icm7216 さん
エラーの修正方法やコンパイル情報、texlive の更新情報など、色々教えていただきましてありがとうございます!
今やっている出版後に届いたフィードバックを原稿に反映する作業が終わり次第、最新のものをビルドしてウェブサイトに置き直すので、その際に参考にさせて頂く予定です。
HTML 生成は、本家(英語版)では動いていたようですが、日本語版ではまだ成功したことがないです...。もし HTML ファイルが上手く生成できるなら便利だとは思ったので、色々触ってみたり latex2html 以外のソフトも試してみたりしたのですが、簡単には HTML ファイルを作れませんでした。
@icm7216 さん
https://github.com/spinute/ods/issues/56#issuecomment-413606896 は、今ある中で一番丁寧に書かれているビルド手順だと思います。 README からコメントにリンクを貼る、または wiki にビルド手順として移してもよろしいでしょうか?
@spinute さん、ありがとうございます。 #56 (comment)のビルド手順の記述の件ですが、ご自由にお使いください。
役立つかわかりませんが、他のフォントの埋め込み手順などのメモもございます。