DockerでGhostscript対応LaTeX環境構築

# はじめに

普段はmacメインだけれども、在宅勤務で久々にWindows環境を使っています。
Windows環境にも論文執筆のためのLaTeX環境を導入しようと思いましたが、面倒なのでDocker上に構築することにしました。

調べてみると、既にQiitaに記事を書いてくださっている方がいました。

[DockerでらくらくLaTeX環境構築](https://qiita.com/Shitimi_613/items/9706d57fb7bc17cbed0e)

しかし、EPS画像を含む英語論文をpdflatexしようとしたところうまくいきませんでした。

本記事では上記記事で紹介されているDockerイメージをGhostscript対応に拡張した環境を構築していきます。
などと大仰なことを書いていますが、作成したDockerイメージは公開しているので、これをpullしてくるだけです。

## 2021/07/15追記

M1 macでも動くように、TeXLive 2021以降でイメージを刷新しました。

```bash
docker pull pman0214/alpine-texlive-ja-epspdf 
```

すれば、Intel macでもM1 macでも同様に動作します。
追記した現在はTeXLive 2021が最新です。
pman0214/alpine-texlive-ja-epspdf:2021は圧縮サイズで約520MBです。

# 検証環境

以下の2つの環境で検証しています。

* Docker version 19.03.8, build afacb8b with macOS 10.15.4 on Mac mini (2018)
* Docker version 19.03.8, build afacb8b with Windows 10 Education version 2004 (build 19041.264) on Intel NUC

# 導入方法

Dockerはあらかじめインストールしておきましょう。
あとはDockerイメージをpullしてくるだけです。

```bash
docker pull pman0214/alpine-texlive-ja-epspdf 
```

取得しているDockerイメージはここで公開しているものです。

[pman0214/alpine-texlive-ja-epspdf](https://hub.docker.com/r/pman0214/alpine-texlive-ja-epspdf)

上記記事で紹介されている[paperist/alpine-texlive-ja](https://hub.docker.com/r/paperist/alpine-texlive-ja/)にGhostscriptとepstopdfを追加しています。
[paperist/alpine-texlive-ja](https://hub.docker.com/r/paperist/alpine-texlive-ja/)にGhostscriptとepstopdfを直接インストールしようとしたところ、TeXLiveのバージョンが古いためにインストールできませんでした。
このためTeXLive2020で新たにDockerイメージを作りました。

現時点での最新バージョンpman0214/alpine-texlive-ja-epspdf:2020は圧縮サイズで約610MBです。

# 使い方

docker pullした後は以下の例のようにdockerコンテナを起動して各種texコマンドを実行してください。

```bash
docker run --rm -it -v $PWD:/app pman0214/alpine-texlive-ja-epspdf latexmk main.tex
```

## 試しに使ってみる
今回はEPSファイルを参照しているダミーtexファイルを使います。
EPSファイルも含めてGistに置いてあるので、これを取得して使います。

[pdflatex with eps testing](https://gist.github.com/pman0214/efc8b8dc168badd42b79679c81f8a53f)

```main.tex
%#!pdflatex main.tex
\documentclass[twocolumn]{article}
\usepackage{graphicx}

\title{Test Report}
\author{pman0214}

\begin{document}
\maketitle
\section{Introduction}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec in justo
semper, sagittis elit vel, eleifend arcu.
Phasellus accumsan id ipsum non varius.
Suspendisse nec nulla nunc.
Pellentesque rutrum commodo lacinia.
Sed molestie ullamcorper tellus, in aliquet mauris egestas non.
Maecenas sed lectus ac neque eleifend fermentum.
Donec id purus felis.
Nam ornare sagittis ullamcorper.

Donec commodo enim nec leo tincidunt varius.
Aliquam vulputate sit amet nibh nec facilisis.
Aliquam lobortis nec urna vel convallis.
Fusce facilisis libero leo, sed pretium dui imperdiet id.
Duis in est et nunc molestie vestibulum vel eget nunc.
Suspendisse potenti.
Mauris scelerisque magna at ex scelerisque, vel tempus turpis eleifend.
Phasellus efficitur elementum ex vel ultrices.
Sed eget arcu magna.
Maecenas dignissim imperdiet lorem, sit amet gravida lorem bibendum at.
Aenean non blandit metus, id viverra velit.
Integer ut sapien sapien.
Sed quam nisi, vehicula quis nunc ullamcorper, molestie accumsan augue.

\begin{figure}[bt]
 \centering
 \includegraphics[width=.8\hsize]{dummy.eps}
 \caption{Dummy figure}
\end{figure}
\end{document}
```

Gistから取得したZipファイルを展開したディレクトリに入り、以下を実行すればEPS画像を含むmain.pdfが出力されます。

```bash
docker run --rm -it -v $PWD:/workdir pman0214/alpine-texlive-ja-epspdf latexmk main.tex
```

# おわりに

本記事では、eps画像を含むtexファイルをタイプセットしてPDFを生成できる環境をDockerを用いて構築しました。
新しいmacを導入する際もこれを使うと導入が楽で幸せになれそうです。