TeX 명령을 실행할 수 있는 Docker 이미지 만들기

TL;DR


  • TeX 컴파일이 가능한 Docker 이미지(Dockerfile)를 만듭니다
  • Docker 서버가 실행되는 환경이면 환경 독립적으로 실행할 수 있습니다.
  • 논문을 쓸 때 유용합니다.


  • Dockerfile


  • ubuntu 기반에서 apt-get 명령으로 texlive 및 관련 패키지를 설치하는 Dockerfile을 만듭니다.
  • 패키지 관리자 (ubuntu이므로 apt)를 사용하여 TeX 관련 패키지를 설치합니다.

  • 있는 고양이/테 xぃゔぇ을 참고하여 /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에 의한 참고 문헌의 관리와 참조를 추가하고있다
  • 두 파일은 같은 디렉토리에 있습니다.


  • 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 컴파일을 실행합니다.
    platex , pbibtex , platex , platex , dvipdfmx 의 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가 출력되고 있으면 성공입니다


  • 참고


  • Dockerhub aruneko/texlive
  • Qiita Ubuntu 18.04 LTS에 LaTeX 설치
  • LaTeX 입문/첫 번째 예
  • 좋은 웹페이지 즐겨찾기