1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EPS を PGF ソースに変換する Docker コンテナを作る

Last updated at Posted at 2019-12-30

昨年,ラムダノートの鹿野さんが,TeXConf 2018 および TeX & LaTeX Advent Calendar 20184日目の記事で,モダンな TeX 環境における EPS ファイルの活用法について述べておられました。

この記事中で,eps2pgf というツールが紹介されていました。

同じことを考える人はいるもので、すでにeps2pgfというJava製の変換ツールを作っている人が過去にいました(参考)。 現在はSourceforgeにポストされているもののソースもない状態で、メンテもされてなさそうなんですが、とりあえずダウンロードして使ってみるとそれなりに満足のいく結果が得られました。

この eps2pgf というツールは,10年以上前の Java 製ツール(更新日付を見ると2008年8月でした)ですが,現在は Status: Abandoned となっており,開発は長らく停止しているようです。Apache ライセンスではありますがソースは行方不明です。

ただ,今でも結構使えるありがたいツールではあります(EPS を PGF ソースに変換できると何が嬉しいのかは鹿野さんの記事を参照)。とはいえこのためだけに JVM をインストールするのも面倒なので,JVM とこのツールをパッキングした Docker コンテナを作ってみました。

Java の Docker イメージとしてどれを選ぶか?

Docker Hub には,Java (JRE, JDK) のイメージが公式なやつだけでもたくさんあり,どれを選べばよいか迷ってしまいます。次の記事にそれぞれの特徴や選択基準がわかりやすくまとめられていました。

今回は,

  • 10年以上前の Java 製ツールを動かしたいだけであるから,Java のバージョンは最新でなくて問題ない。
  • JDK は不要,JRE だけでOK。
  • だからできるだけサイズが小さいものを選びたい。

というわけで,

  • Alpine Linux ベース
  • OpenJDK
  • Java 8
  • JRE のみ
  • ファイルサイズは 84.9 MB(2019年12月現在)と軽量

である openjdk:8-jre-alpine を選びました。

使い方

完成したイメージは Docker Hub に doratex/eps2pgf としてアップロードしてあるので,

$ docker pull doratex/eps2pgf

とすれば pull できます。

コンテナ内では /workdir が作業ディレクトリとなるので,それをカレントディレクトリと bind マウントして使うのを想定しています。

alias eps2pgf="docker run --rm \
  --mount type=bind,src=\"\$(pwd)\",dst=/workdir \
  doratex/eps2pgf"

などとエイリアスを設定しておくと楽でしょう。Docker イメージの ENTRYPOINT として eps2pgf.jar のラッパースクリプトを指定してありますので,このエイリアスが設定されている下で

$ eps2pgf tiger.eps -o tiger.pgf

などとすれば,EPS 図版を PGF ソースに変換できます。

マニュアル

オリジナルの eps2pgf.jar のマニュアルは,SourceForge のレポジトリのアーカイブから入手できます。Docker コンテナ内の /eps2pgf/doc/ にも収録されていますので,

$ docker run --rm \
  --mount type=bind,src="$(pwd)",dst=/workdir \
  --entrypoint /bin/cp \
  doratex/eps2pgf \
  -p /eps2pgf/doc/eps2pgf_manual.pdf .

などとしてカレントディレクトリに取り出すこともできます。

Dockerfile

このイメージを作成するために用意した Dockerfile は以下の通りです。

Dockerfile
FROM openjdk:8-jre-alpine

LABEL maintainer="doraTeX <taylorkgb [at] gmail.com>"

WORKDIR /workdir

RUN apk upgrade --update && \
    mkdir /eps2pgf && \
    cd /eps2pgf && \
    wget -q https://excellmedia.dl.sourceforge.net/project/eps2pgf/Eps2pgf/Eps2pgf%200.7.0/eps2pgf-0.7.0.zip && \
    unzip eps2pgf-0.7.0.zip && \
    rm eps2pgf-0.7.0.zip && \
    cd /usr/local/bin && \
    printf "%s\n" \
      "#!/bin/sh" \
      "java -jar /eps2pgf/eps2pgf.jar \"\$@\"" \
      > eps2pgf && \
    chmod +x eps2pgf

ENTRYPOINT ["eps2pgf"]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?