Help us understand the problem. What is going on with this article?

TeXのコマンドが実行できるDockerイメージを作成する

More than 1 year has passed since last update.

TL;DR

  • TeXのコンパイルができるDockerイメージ(Dockerfile)を作ります
    • Dockerサーバが動く環境ならば,環境非依存で実行できます
    • 論文を書くときなどに便利です

Dockerfile

  • ubuntuベースで,texliveと関連のパッケージをapt-getコマンドでインストールするDockerfileを作成します
    • パッケージマネージャ(ubuntuなのでapt)を使って,TeXに関するパッケージをインストールします
    • aruneko/texliveを参考に,/texsrcをマウントできるようにしており,コンテナのコマンド実行時にTeXファイル群を渡せるようにしています
    • インストールするパッケージはQiita Ubuntu 18.04 LTS に LaTeX をインストールを参考にしました
Dockerfile
FROM ubuntu:18.04
LABEL maintainer YOSHIMI Masato <myoshimi@DOMAIN_NAME>

ENV DEBIAN_FRONTEND noninteractive

RUN set -xe && \
    apt-get -y update && \
    apt-get install -y \
        make \
        texlive-lang-cjk \
        xdvik-ja \
        texlive-fonts-recommended \
        texlive-fonts-extra && \
    apt autoremove -y && \
    apt-get clean

RUN mkdir /texsrc
WORKDIR /texsrc

VOLUME /texsrc

CMD ["/bin/bash"]
  • docker buildコマンドでDockerfileをビルドします.この記事では名前をtexlive-dockerとします
# Dockerfileがあるディレクトリにてコマンド実行
# 名前はtexlive-dockerとする
docker build -t texlive-docker .

# イメージが作られたか確認
docker images | grep texlive-docker

テスト

  • 以下のsample.texとref.bibを作成します.
    • LaTeX入門/最初の例にある,文豪による小説の一文に,bibtexによる参考文献の管理と参照を追加しています
    • 2つのファイルは同じディレクトリに置きます
sample.tex
\documentclass{jsarticle}
\begin{document}

吾輩は猫である。名前はまだ無い\cite{Soseki1905}。

どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所で
ニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。

\bibliography{ref.bib}
\bibliographystyle{junsrt}

\end{document}
ref.bib
@book{Soseki1905,
    author="夏目漱石",
    title="吾輩ハ猫デアル",
    publisher="大倉書店",
    year=1905,
}

TeXコンパイル

  • sample.tex,ref.bibファイルがあるディレクトリ上で,docker runコマンドでTeXコンパイルを実行します
    • 参考文献ファイル(ref.bib)があるので,platexpbibtexplatexplatexdvipdfmxの計5つのコマンドを実行します
    • エラーが出なければ,当該ディレクトリ上に,sample.pdfが作成されています
docker run --rm -v ${PWD}:/texsrc texlive-docker platex sample.tex
docker run --rm -v ${PWD}:/texsrc texlive-docker pbibtex sample
docker run --rm -v ${PWD}:/texsrc texlive-docker platex sample.tex
docker run --rm -v ${PWD}:/texsrc texlive-docker platex sample.tex
docker run --rm -v ${PWD}:/texsrc texlive-docker dvipdfmx sample
  • 以下のようなpdfが出力されていれば成功です
    • 01_ss.jpg

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away