10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

楽にDockerで日本語Pandocする

Last updated at Posted at 2022-07-19

いろいろな方法があるかも知れないが、学習コストを支払う余裕がなく、もともと知識もないため細かいことがしたいわけでもなく、なおかつ3年後でも再利用できるようなロバストそうな方法を求めた結果、公式のDockerイメージに追加で日本語関連をインストールするのが楽だろうという結論。

公式のDockerに日本語関連パッケージを入れる

こんな感じのDockefileを作ることにした。まるで何もしていない。tlmgrで日本語のパッケージ入れているだけ。

Dockerfile
FROM "pandoc/latex"
LABEL maintainer="kojix2 <piyo@piyo.com>"
RUN apk --update --no-cache add make msttcorefonts-installer fontconfig && \
    update-ms-fonts && \
    fc-cache -f && \
    tlmgr update --self --all && \
    tlmgr install collection-langjapanese
  1. Pandoc公式はUbuntu版のDockerも公開しているが、なぜかうまく動作しなかった。また、Alpine版が数日前にアップデートされていたのに対して、Ubuntu版はアップデートが数ヶ月前で、メンテナンス状況がいまいちのように思えたので、Alpine版を使うことにした。
  2. tlmgr コマンドが動作するので雑に collection-langjapanese を入れる。
  3. Pandocコマンドを直打ちすると長くなるので、MakefileでPandocコマンドを動かしているが、Alpineさんは最小限なので make は付属していない。自分で入れる必要がある。

適当にビルド

docker build -t kojix2/pandoc-japanese .

素の状態ではentrypointがpandocコマンドになっている。

docker run --rm kojix2/pandoc-japanese --version
pandoc 2.18
Compiled with pandoc-types 1.22.2, texmath 0.12.5, skylighting 0.12.3,
citeproc 0.7, ipynb 0.2, hslua 2.1.0
Scripting engine: Lua 5.3
User data directory: /root/.local/share/pandoc
Copyright (C) 2006-2022 John MacFarlane. Web:  https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.

このままでは不便な場合もある。
コマンドでシェルに入りたい場合、エントリーポイントをshに上書きする。

docker run --rm --entrypoint="sh" -v $(pwd):/data -it kojix2/pandoc-japanese

これでシェル上で操作できる。最初からmakeを呼びたいときは、shではなくmakeを指定してやればよい。

docker run --rm --entrypoint="make" -v $(pwd):/data -it kojix2/pandoc-japanese

Gitlab CIで動かしたい場合は、

.gitlab-ci.yml
  image:
    name: "pandoc/latex"
    entrypoint: ["/bin/sh", "-c"]
  script:
    - apk --update add make
    - tlmgr update --self --all
    - tlmgr install collection-langjapanese
    - make # MakefileからPandocを呼ぶ

みたいにしておけばいいらしい。
ちなみにMakefileはこんな感じにしてみた。

# ファイルの配置
.
├── hoge-huga-piyo.bib
├── hoge-huga-piyo.md
└── Makefile
Makefile
PANDOC = pandoc
ENGINE = lualatex

NAME   = hoge-huga-piyo

SOURCE = $(NAME).md
BIBTEX = $(NAME).bib
TARGET = $(NAME).pdf

$(TARGET): $(SOURCE) $(BIBTEX)
	$(PANDOC) $(SOURCE) -o $(TARGET) -C --pdf-engine=$(ENGINE) -V linkcolor=blue -V documentclass=ltjsarticle -V luatexjapresetoptions=fonts-noto-cjk

all: clean $(TARGET)

clean:
	rm -f $(TARGET)

引用文献もちゃんと載るようだ。
この記事は以上です。

参考文献:

10
6
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
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?