doraTeX / TeX2img

TeX2img for macOS
https://tex2img.tech
Other
26 stars 2 forks source link

TikZのパターンがSVG化の際に欠ける #64

Closed doraTeX closed 8 years ago

doraTeX commented 8 years ago

現象

次のソースを TeX2img でSVG化すると,パターンが欠ける。

\documentclass[dvipdfmx]{article}
\usepackage{tikz}
\usetikzlibrary{patterns}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\filldraw[pattern = north east lines] (0,0) rectangle (5,5);
\end{tikzpicture}
\end{document}

# 原因

~~#34 で,mudraw の最新バージョン対応のために -l オプションを外したことが原因。 TeX2img.app に内包されている旧バージョンの mudraw は -l オプションを受け入れる。#34 の改修前のように,-l を付けておけば,パターンも無事に保持される。~~

# 対策

GUI版については,.app に内包されている旧バージョンの mudraw を使っているので,-l を付けるように戻せばよいだろう。 CUI版については,

とするのが最善か?

# 検討事項

新バージョンの mudraw でも旧バージョンの -l に相当することはできないものか?

aminophen commented 8 years ago

あけましておめでとうございます。本年もよろしくお願いいたします。

時間が空いてしまいましたが、SVG への対応については

SVG を「PDF 生成経路に続いて“パッチ適用 mudraw”に通す」ほうがわかりやすいと思いました。

確かに,pdftops の極めてデリケートな性質に依存するよりも,それによってこの問題を根本的に解決することができれば,それに越したことはありませんね。

Mac での mudraw のビルドに成功したら教えてください……😓

Mac 版の mudraw のビルドと変換経路を元に戻すという話だった気がしましたので、mudraw のビルドを試してみました。Lion 環境で素朴に mupdf-1.7a-source.tar.gz を展開して

$ cd mupdf-1.7a-source
$ make build=release NOX11=yes

とすると一応ビルドは通るみたいです。できた mudraw を otool で見ると依存ライブラリは

でした(ということは port には依存していないようだが、libcrypto がまずい…? どうすればよいのでしょう)。ソースに abenori さんのパッチ svg-device.patch をあてればパターンの translate が直るということのようです。なお、mupdf-1.8-source.tar.gz で同じことをやろうとするとなぜか X11 を無効にできず、Makerules の HAVE_X11 ?= yes のところを no に変えて

# Mac OS X doesn't have pkg-config so we hard code paths.
else ifeq "$(OS)" "MACOS"

HAVE_X11 ?= no
HAVE_GLUT ?= yes

としたらビルドは通りました。(mutool というのしかできませんが、単に mudraw の機能が mutool に統合されただけですので、リネームまたはシンボリックリンクで mudraw にできます)。

ちなみに、PDF → PDF の文字アウトライン化を PostScript 藝で試そうとしましたが、どうもうまくいきません。素直に考えれば showtrue charpath fill に再定義すればよいはずなのですが、(EPS の冒頭への追記ならうまくいく場合もありますが)PDF への作用はできないようでした。

doraTeX commented 8 years ago

あけましておめでとうございます。 昨年は大変お世話になりました。本年も TeX2img をよろしくお願いします。

さて,mupdf のビルド法の調査ありがとうございます。 お陰様で,こちらでもビルドに成功し,Ver. 2.1.5 beta 9 が完成しました。

新機能

これで,SVGパターン塗り問題が一気に解決したのではないでしょうか。😄 まだテストが不十分なので,要テストですが。

aminophen commented 8 years ago

Ver. 2.1.5 beta 9 を試しました。libcrypto がなくなって軽くなったのでよかったです😃 SVGZ 形式での出力、~ が入った入出力パス、文字情報パネルの改善は確認しました。

結局、本トピックで経路としては変わったのは EMF だけということですね。アウトライン化 PDF / SVG のパターン塗りが gs9.15 未満でたまにビットマップ化されるのは対処が面倒だし、Win/Mac ともにしょうがないということで。

mupdf のパッチ版が translate 修正に成功しているかどうか今手元ではわかりません… 後で出来たSVG を Windows に持っていってチェックします…(ビルド済み dmg で配布されている Inkscape 0.91 が Lion でクラッシュ&MacPorts のは依存ライブラリ libvisio-0.1 のビルドで落ちる😥)

abenori commented 8 years ago

2 * sdev->tiles->step.y

というところがいい加減(特に根拠無し)なので,きちんと考えた方が良いかもしれないです.たぶん塗りつぶし一つ一つの高さぴったりにするのが良いのですが,sdev->tiles->step.yはそれよりちょっと小さい気がしています.

doraTeX commented 8 years ago

ちなみに,前回 mupdf のビルドができなかったのは,El Capitan で OpenSSL のヘッダファイルが提供されなくなったことが原因だったようです。 今回は,Snow Leopard を入れた仮想マシン上でビルドすることで成功しました。

doraTeX commented 8 years ago

なお,あべさんのおっしゃっていた

とりあえずmupdf\source\pdf\pdf-on-run.cのTILEの#defineを外してやるとタイルの繰り返しを展開してたくさんのパスとして処理してくれるようになるようです.

この方法でやると,パターンがアウトライン化されて,斜線のつなぎ目が綺麗になりますね。 その代わり,ファイルサイズが激増します。

パターンのアウトライン化をしない場合

2016-01-08 11 31 29

パターンのアウトライン化をした場合

2016-01-08 11 31 42

これらの結果は,Safari, Chrome, Firefox のいずれでも同様でした。

どちらがよいでしょうか……。

aminophen commented 8 years ago

PDF / PS のパターンは本来 SVG のパターンへと変換されるべきで、MuPDF がパターンの分割をバグ認定したうえで修正したのは妥当でしょう。これを昔のものに戻すのは良くないと思います。

doraTeX commented 8 years ago

なるほど,そうでした。 では,テスト結果も概ね問題なさそうですので,そろそろ Ver. 2.1.5 のリリースと行きましょうか。

aminophen commented 8 years ago

端が微妙に切れるのは大した問題ではないと思います。(もしかするとこれと関係?)というわけでリリースよろしくお願いします。