LyX向けのemf→EPS作成方法(Inkscape利用,一部問題点あり)

はじめに

(´・ω・`)ノ

(´・ω・`)←この人は学会投稿用の原稿などを作成するためにLaTeXのフロントエンドの一つであるLyXを利用しています。

LyX | LyX – 文書プロセッサ

LyX自体はTeXコードをほぼ意識すること無く文書作成をすることが出来るのと複雑な数式でも入力しやすいので愛好しています。 また,画像についてもW○rdなどと同様にクリップボードにあるデータを貼り付けて図を貼ることが出来ます(使ってないけど)。わざわざ,自分でEPSにしなくても良いというのも利点ではないでしょうか。

※emf形式のデータを使う場合はこちらにまとめました。これにともなってこの記事の内容を一部変更しました。

ysharp1117.hatenablog.com

問題点1 -表示できない/PDF出力できない-

しかし,最近のLyXではEPSにしなくてもよいという機能について以下の問題があります。

  • クリップボード上のベクトル画像を文書中でペーストしemf/wmfにして貼り付けるとLyX画面上に表示できない。PDF出力が失敗する。

f:id:y_sharp:20161026105332p:plain

少なくとも現在利用しているLyX 2.2.2ではこの現象が発生します。

対策1 -変換子の修正-

そもそも,何故このような結果になっているのかについてです。LyXは貼り付けた図を裏でEPSに変換してからLyX上に表示する/PDFに出力するという動作を行っています。LyXの[ツール]→[設定]より,設定を開き,[ファイル処理]→[変換子]の中の[Windowsメタファイル -> EPS]という項目を確認します。

f:id:y_sharp:20161026105914p:plain

変換子は[convert -density 300 $$i $$o]となっています。これはconvertというImageMagickのコマンドでwmfをepsに変換することを表しています。

しかし,以下の記事にもあるように最近のImageMagickではconvertコマンドがmagickというコマンドに変更されました。

d.hatena.ne.jp

つまり,convertコマンドをmagickに置き換えればおkです。もし,他でもconvertコマンドを使ったならばそこについても要確認です。

f:id:y_sharp:20161026110726p:plain

この設定を行った後で再読込すると画像の表示&PDF出力ができるようになります。

f:id:y_sharp:20161026110952p:plain

※拡張メタファイル(emf)については別の記事で紹介しているMetafile to EPS Converter(推奨)か後述のInkscapeを使うことをおすすめします。

問題点2 -粗い-

これで,ベクトルデータが貼り付けても利用できるようになったが画像出力が妙に粗い。試しにPDFにしてみるとどうやらベクトル画像ではなくなっている様子。

f:id:y_sharp:20161026111550p:plain

(´・ω・`)せっかくのベクトル画像が台無しに・・・。 以下の記事の記述によるとImageMagickはベクトル画像でもロードのときラスタ形式に変換するらしい。

qiita.com

対策2 -Inkscapeの導入-

これではImageMagickを使う利点はないので何か別の手段でemf→EPSできないか探してみた(もちろんコマンドラインで使えるもの)。 ちょうどよいものとしてInkscapeがあったのでInkscapeを使ってのLyXでのemf→EPSの手順を紹介する。

inkscape.org

手順1 -パスの設定-

LyXからInkscapeにアクセスしやすくするためにパスの設定を行う。先程と同様にして[ツール]→[設定]を開きパスの欄を開く。 この中のPATH接頭辞の先頭にInkscapeを導入したフォルダのパスを追加する。今回の場合は"C:\Program Files\Inkscape"に導入したのでPATHの区切り文字のセミコロン(;)と合わせて[C:\Program Files\Inkscape;]をPATH接頭辞の一番初めに追加して,設定を[適用]する。

f:id:y_sharp:20161026112858p:plain

手順2 -拡張メタファイル(EMF)の変換子の修正-

続いて先程設定したばかりの拡張メタファイル(EMF)の変換子を修正する。手順は対策1のときと同様であるので途中を省略するが変換子を[inkscape -f $$i -E $$o]とする。

f:id:y_sharp:20161026113405p:plain

なお,Windowsメタファイルについてはこの手順ではうまく行かなかったので対策1を行ったまま(ImageMagickのmagickコマンド利用)とした。

手順3 -キャッシュファイルの削除-

ここまでの手順で恐らく問題なくemf→EPSできるようになっている。しかし,LyXは一度emf→EPSしたものについては内部でキャッシュを持ってしまっている。よって,キャッシュ情報を削除する必要がある。 以下の画面の変換子のファイルキャッシュの最大日数を0にして[保存]→LyXを再起動→最大日数を180に戻す,とするとファイルキャッシュが消去される。

f:id:y_sharp:20161026113707p:plain

まとめと残った問題点

一連の手順でLyXで貼り付け機能を利用するのに必要なemf→EPSの設定が出来た。 生成されるEPSの比較のためにemfそのまま貼り付け(上,Inkscape利用)とそのemfをWMF2EPSを用いて変換したもの(下)を並べて出力してみた。

f:id:y_sharp:20161026120431p:plain

この出力から以下の問題点が判明してしまった・・・。

  • フォントが変わっている
  • 一部の文字(多分全角文字)が正常に選択できずテキスト情報が失われる

(´・ω・`)ここまで書いといていうのもアレですが上記の問題を嫌うならばWMF2EPS使って下さい。

コマンドラインから使える,いいemf→EPS変換方法はないものか・・・。

いいemf→EPS変換はMetafile to EPS Converterでどうぞ(2017/01/13追記)。

ysharp1117.hatenablog.com