Closed doraTeX closed 8 years ago
pstoedit のEMF出力はベジエ曲線が使えず,文字のアウトラインが折れ線のみで構成されるため,仕上がりがひどいガタガタの文字になってしまうのですが,pstoedit のソースを改修することで仕上がり品質を上げることに成功しました。 しかもライブラリ込みで100MB超の Inkscape と異なり,pstoedit はライブラリ込みでもわずか800KB程度で済みました。 これで高品質なEMF出力の目処が立ちました。あとは TeX2img に組み込んで変換ルーチンを実装するだけです。
実装も完了しました。白紙ページを含む場合など,例外的ケースへの対応をこれからテストします。
これは朗報です! Office 2016 の改悪は当面私も確認できないのですが、EMF なら扱えそうですね。CUI 版の場合はどうしましょう? 独自改変版は TeX2img.app にしか存在しないことになりますので、プログラム名が同じだと混同しそうです。
それも想定済みです😏 独自改変版は、eps2emf という独自の名前にしてあります。CUI版は、GUI版に内包された eps2emf をサーチして利用します。したがってEMF出力にはGUI版を /Applications または /Applications/TeXLive 内に置いておく必要があります。
さすがです😄 eps2emf という名前もわかりやすいですね。
EMF出力をサポートした Ver. 2.0.8 beta 1 が完成しました。
このような制約はありますが,それでもEMF出力をサポートする価値はあるでしょう。1. の制約が気に入らず,真になめらかな EMF が欲しい場合は,現状の Inkscape を使う外部ツールで処理すればよいでしょう。
今日はありがとうございました。まだ Mac 版 beta は試していないのですが、脱線中の #56 にコメントしていて思い出したので:pdfiumdraw の場合のような、破線が描画されないようなことは起きていませんかね? たとえば
\begin{tikzpicture}
\draw[dashed](0,0)--(1,0);
\end{tikzpicture}
の場合などに pdfiumdraw で破線が飛んでしまうのですが、eps2emf も内部的に座標拡大しているというお話を伺ったので pdfiumdraw と似た状況ではないかと気になりました。
今日は楽しかったですね。色々直接お話しできて大変有意義でした。
pdfiumdraw の場合のような、破線が描画されないようなことは起きていませんかね? たとえば
「描画されない」わけではありませんが,確かに何かヘンです。
上が変換前のEPS,下が eps2emf で(100倍拡大→100倍縮小を経由しつつ pstoedit にかけた)EMFを Illustrator で開き上下に並べてみたものです。 パスとして認識されている部分の長さは同じですが,破線としての描画のされかたが異なります。
一方,同じEPSとEMFを Office 2011 に貼ってみたところ,EMFの描画のされ方は Illustrator とも異なりました。
このように,EMFの破線というのは,描画のされ方がビューアに依存して大きく変わってしまうようです。EPSの段階で「パスのアウトライン化」をかけることができればよいのですが……。
破線としての描画のされかたが異なります。
おっと、それは pdfiumdraw と同じ現象です。パターンが変わってしまうのですね。以前の調査だと破線のパスを分解するために相当頑張るか Inkscape の機能を使うかが有効でしたが、自動化はどちらも一筋縄ではいかないと思っていました。
過去の調査を再読し,一通り状況を把握しました。 これは確かに現状ではどうしようもないとして諦めるしかなさそうな状況ですね……。
Ver. 2.0.8 beta 1 のアーカイブが壊れているっぽいです。
すみません,差し替えました。
EMF 出力を確認しました。上記3点および破線パターンが変わるという制約はありますが、実用上問題ないレベルだと思います。FAQ に「ベジエの EMF を作るための方法」「破線パターンが変わって困る場合の方法」として、それぞれ「いったん EPS を作って Inkacape ベースの補助ツールで EMF に変換」「いったん EPS に変換して Inkscape で開き、パスの変形を行った EPS を補助ツールで EMF に変換」を解説しておけばよいと思います。
よし,ではそろそろ Ver. 2.0.8 正式リリースですかね。 なお,状況整理のために,Mac版の変換経路の図 を作りました。
リリースよろしくお願いします! 変換経路の図も分かりやすいです。
リリースしておきました。
変換経路の図をアップデートし,補足情報を詳しくしました。Ghostscript が苦手とするタイプの図の話,元のページサイズを維持する場合の処理について加筆。 おそらく正しいと思いますが,なにぶんかなり複雑なので,どこかに認識の誤りがあるかもしれません。
変換経路の図を確認しました。とくに誤りはないと思います。
PDF を Office 2016 で従来どおりとりこめるという話は(私が Office 2016 を持っていないので)確認できていませんが、「EMF の分数とルートの横線が太くなる」という現象は再現しました(下は Illustrator で表示したもの。Word 2011 でも同じ見え方)。
奥村先生のご指摘のほうも備忘録としてここに残しておきます。原因がわからないので対策は保留です。
原因は概ね想像が付きます。うまく出ている部分は,「フォントをアウトライン化することによって得られたパスに囲まれた塗り」の部分です。それに対して太くなっているのは「フォント由来ではないパスの線」です。「破線の見た目がビューアによって変わる」のを含め,おそらく「EMFの『パスの線』の表示はビューア依存」ということなのでしょう。 これを防ぐにはやはり事前に「パスのアウトライン化」をかけておくのが確実でしょうね。 GhostscriptでEPSを出すときに「パスを使わず塗りだけで表現する」ことができればいいのですが……。
Windows版TeX2imgのEMF出力をWindows版Officeに取り込んだときはどうなのでしょう?
では、以下のソースを Win / Mac 両方で処理してみます。少々お待ちください。
\documentclass[fleqn,dvipdfmx]{jsarticle}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
EMF 出力のテストです。
\[
\left( \int _0 ^\infty \frac{\sin x}{\sqrt{x}} dx \right) ^2
= \sum _{k=0} ^\infty \frac{(2k)!}{2^{2k} (k!)^2} \frac{1}{2k+1}
= \prod _{k=1} ^\infty \frac{4 k^2}{4 k^2 - 1}
= \frac{\pi}{2}
\]
破線のテストです。
\begin{tikzpicture}
\draw[dashed](0,0)--(1,0);
\end{tikzpicture}
\end{document}
こちらでもテストしてみましたら,意外な結果が得られました。
上が改良版 pstoedit による出力,下が Inkscape による出力です。 上はフォント由来でない線の部分が太くにじんでしまっているのに対し,下はEPSやPDFと遜色ない美しさです。
やはり上が改良版 pstoedit による出力,下が Inkscape による出力です。 上はフォント由来でない線の部分が太くにじんでしまっているのは相変わらずです。破線の見た目が少し変わっています。
それに対し,Illustrator 上では美しかった下のEMFが,Word 2011 上ではとんでもなくぼけています。 印刷してもこれは同じでした。 Word 2011 / Excel 2011 / PowerPoint 2011 で全て同じでした。 Office 2011 は EMF の扱いが逆に苦手ということでしょうか……?
Inkscape の出力を Office 2016 for Mac に食わせればどうなるかが気になるところですが,未調査です。
出力ファイルを置いておきますので,ぜひWindowsにも食わせてみてください。
Macで Win-EMF.emf を使ってみました。
背景が透明ではなく白塗りになっている
すみません、--transparent を付けるのを忘れていました… その差は無視してください。
Office 上での元のサイズが大きく表示される。
--scale=10 の影響です。画像のサイズ自体を拡大してあります(そのほうがペイントで開いたときに見やすく、端が切れにくいので)。
EMF画像の扱いは難しいですね…… ここに書いてある「emf形式で取り込めばベクター形式で尚且つWindows版とも互換性がある」って大嘘な気がします……。
今度は Win と Mac で行き来させてみました。
これは綺麗ですが、Mac 版 Illustrator が表示できないとのことですね。
あれれ、さっき汚かった Mac-EPS.emf(つまり Inkscape ベースの補助ツール eps2emf.app 使用)が綺麗になっている…
ということは,Windows 版との互換性が高まったという Office 2016 for Mac なら,Inkscape で出力した EPS が綺麗に表示できるのかもしれませんね。 試したみたいものの,クレジットカード必須のサブスクリプション契約の体験版しかなくて体験しにくいです……。
Windows 版との互換性が高まったという Office 2016 for Mac なら,Inkscape で出力した EPS が綺麗に表示できるのかもしれませんね。
かもしれません… PDF がとりこめる・とりこめないとか錯綜していて何が正しいのやら、検証したいとは思いますが私の周囲にも Office 2016 はありません…
先ほど作った PowerPoint ファイルを Win と Mac で行き来させてみると、同一ファイルを見ているにもかかわらず Inkscape で作った EMF の表示が綺麗だったり (on Windows) 汚かったり (on Mac) して厄介です。これまたトラブルの原因ですね。
「emf形式で取り込めばベクター形式で尚且つWindows版とも互換性がある」って大嘘な気がします……。
まったく同意です。
Illustrator では Win-EMF.emf をうまく開けない。
ちなみに下のequation.emfだとどうなります?
前のは,
のですが,今度の equation.emf は,Office でも Illustrator でも開くことすらできませんでした。
拡張子をwmfに変えてみるとどうでしょう?
拡張子をwmfに変えてみるとどうでしょう?
状況は同じでした。
ありがとうございます.「pstoeditはベジェ曲線が使えない」とかいう話から「もしかして:WMF」と想像したのですが,そういうわけではなかったようです.(先ほどのequation.emfは生成したEMFをWMFに変換して,拡張子だけemfにしたものでした.)
Office 2016 for Mac を持っている人のMacをちょっとだけ借りることができたので,試してみました。
というわけで,2011と2016はほとんど変わりませんでした。 違いは,EPSの表示が汚くなったという改悪点だけでしょうか……。
ありがとうございます。Office 2016 でも PDF を綺麗に貼れるらしいことがわかったのが幸いでした。EMF を敢えて選択する必要性がなさそうで良かったです。pstoedit 改変版 eps2emf のほうが(なんか汚いとはいえ)OS 非依存な EMF を作れるので、Inkscape 版 eps2emf.app より気に入っています。
もう一つ改悪点を見つけました。最新版のKeynoteと同様に,貼り付けたPDF画像のアノテーション情報が削除されるようです。 よって,パワポから画像をコピー&ペーストすることでTeX2imgにソース復元することができなくなり,貼り付け前のファイルをとっておく必要が生じます。
結局,幸いにも,Mac版にEMF出力を設けた意義は特になかったということが分かりましたが,まああっても困らないので削除する必要もないでしょう。(例の「斜め書き」みたいなもの?^^;)
その通りです。Ghostscriptで「パスのアウトライン化」をかける方法が見つかった意義は大きいです。 これで見た目がビューアに依存する可能性を極力減らすことができました。
ちなみに、gs9.14 以下でアウトライン化するときも EPS 経由でなく、PostScript の charpath
あたりでゴニョゴニョすれば PDF to PDF にできるんだと思います。gs9.15 で付いた -dNoOutputFonts
は実はユーザからの要望を受けてかなりギリギリのタイミングで追加されたものです。これがなくてもゴニョゴニョすればアウトライン化できる機能を gs は(PostScript インタプリタなので)持っていますし、あれはユーザが使いやすいインタフェースを用意してくれたにすぎないようです。
アッ、EMF 出力で epstopdf で PDF にいったん戻していた理由が、このスレッドで分かりました… PDF にしたときに bbox がリセットされることを使って左下の余白を確保しているのでした… 右上は余白がなくなるけどしょうがないという話でしたね… うわあ😓
EMF の経路だけ独立させたのが仇になりました…
いえ,現状で大丈夫ですよ。
gs 9.15 以上・未満どちらの過程でも,EMF出力においては,最初の一手で pdfTeX によるクロップ処理が入ります。このとき,余白を含めた左下が MediaBox の原点になり,それがその後のEPSへも受け継がれます。EMFの Office への貼り付けにおいては,変換前EPSの %%BoundingBox
の値に関わらず,EPSの座標系の原点を左下,右上は「図版のギリギリの右上」として描画されます。そのため,左下余白は現状のルーチンで確保できます。(右上余白を確保する方法はなさそうです。)
安心しました… 難しいですね。
Mac版 Office 2016 は,Windows版との互換性を向上させた結果,PDFサポートが苦手という特徴まで受け継がれてしまい,PDFサポートが後退してしまったとの話が出ています。 詳細は未確認ですが,Office 2016 for Mac でまともに扱えるベクター形式は EMF だけだという話も聞こえてきます。
現在は100MB超の Inkscape を内包した外部ツールを提供してEMF出力に対応していますが,それ以外の方法でTeX2imgからのEMF直接出力ができればいいですね。
方法を検討してみます。