数式ありでメモを書くことが多くて,
誰のパソコンでもすぐに数式ありでメモを書けるようにさっと環境構築したかったので,
できるだけシンプルな構成で,できるだけ便利にしたかった.
最初はmarkdown的なもので書きたいと思って,Re:VIEWを試してみたが,
数式と表を手こずってしまい,冷静になるとtex
で書けば良い気がしてきた,という経緯.
TL;DR
- Docker Imageを持ってくる
sudo docker pull eisoku9618/kuroiwa_dockefiles_for_latexmk
- 下記の
main.tex
と.latexmkrc
を現在のディレクトリに作る - ビルドする
sudo docker run -it --rm -v `pwd`:/tmp eisoku9618/kuroiwa_dockefiles_for_latexmk /bin/sh -c "cd /tmp; latexmk -pvc main.tex"
evince .tmp/main.pdf
-
main.tex
を編集すると,自動でビルドが走って,.tmp/main.pdf
が自動で更新される
\documentclass[a4paper, 12pt, oneside, openany, uplatex]{jsbook}
%% 多くの人が使っているから使う
\usepackage{amsmath, amssymb}
%% for vector and matrix
\usepackage{bm}
%% for index:こうしないと日本語が文字化けする
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
%% bmパッケージをchapter名やsection名で使う場合に必要なおまじない
\pdfstringdefDisableCommands{\renewcommand*{\bm}[1]{#1}}
%% for noto font
\usepackage[noto-otc]{pxchfon}
\title{モダンな\LaTeX 環境}
\author{Your Name}
\date{\today}
\begin{document}
\maketitle
\frontmatter
\chapter{Preface}
ここにはPrefaceを書きます.
\tableofcontents
\mainmatter
\chapter{ちゃぷたー}
ここには本文を書きます.
引用は\cite{hoge, fuga}です.
\section{セクション}
ここはセクションになります.
\begin{equation}
\sum_{i=1}^{10} i = 55
\end{equation}
\section{セクション名にベクトル$\bm{a}$が登場する}
セクション名にベクトルが登場する場合は,上のようにbmコマンドを再定義する必要があります.
\appendix
\chapter{付録的なもの}
\bibliographystyle{unsrt}
\begin{thebibliography}{2}
\bibitem{hoge} Hoge Taro, "a b c d", 2017
\bibitem{fuga} Fuga Taro, "e f g h", 2018
\end{thebibliography}
\end{document}
#!/usr/bin/env perl
$latex = 'uplatex -halt-on-error -file-line-error %O %S';
$out_dir = '.tmp';
$bibtex = 'upbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'upmendex %O -o %D %S';
$max_repeat = 5;
$pdf_mode = 3;
$pvc_view_file_via_temporary = 0;
# $pdf_previewer = "evince";
$pdf_previewer = "ls"; # beacause we use latexmk in a docker container
詳細
Dockerfile について
sudo docker pull eisoku9618/kuroiwa_dockefiles_for_latexmk
で持ってくるimageは以下が元ネタになっている.
ポイントは以下.
- Ubuntuのversionを18.04にしている
- TeX Live 2017が使える
- latexmkをインストールしている
-
.tex
→.dvi
→.pdf
の変換を良い感じにやってくれる - latexrunも良いし,latexrunの方が使っていた時期も長いが,最近は設定ファイルの少なさ的にlatexmkを使っている
-
- notoフォントをインストールしている
- モダンっぽい
.latexmkrc
について
ググると詳しく分かる.
ただ,out_dir
について触れている日本語記事は見つけられなくて,英語記事を読んでいたらたまたま知った.
途中生成物を別ディレクトリに出力してくれるので,ls
したときに見やすくなるしgitで管理しやすくなるので,オススメ.
ビルドについて
.tex
を編集したら勝手に.pdf
も更新して欲しいという話があるが,それもlatexmk
がやってくれる.
latexmk main.tex
だと1回こっきりのビルドになって,latexmk -pvc main.tex
だと.tex
を更新する度にビルドしてくれる.
.latexmkrc
のout_dir
を.tmp
に設定しているので,main.pdf
は.tmp
以下に出来る.
docker run
について
sudo docker run --rm -v `pwd`:/tmp eisoku9618/kuroiwa_dockefiles_for_latexmk /bin/sh -c "cd /tmp; latexmk -pvc main.tex"
を詳しく説明すると
-
--rm
:終了した時にコンテナを削除してくれる.これを付けないと,コンテナがどんどんできちゃって良くないので,基本付ける. -
-v from:to
:ローカルのfrom
のパスにあるものをコンテナ内のto
のパスにマウントする.ローカルにある.tex
をコンテナに持って行って,コンテナでビルドした.pdf
をローカルに持ってくる,という用途
Future Work
理由がよく分からないが,latexmk -pvc
にしていると,C-c
でコンテナを止めようとしても止まらない.
ので,sudo docker ps
して起動しているコンテナIDを調べて,sudo docker stop 調べたID
で止める必要がある.
2018/07/04 追記 dockerのoptionに-it
を付けることで解決した!