LoginSignup
0
0

More than 5 years have passed since last update.

数式ありのレポートや本をモダンに書く

Last updated at Posted at 2018-03-14

数式ありでメモを書くことが多くて,
誰のパソコンでもすぐに数式ありでメモを書けるようにさっと環境構築したかったので,
できるだけシンプルな構成で,できるだけ便利にしたかった.

最初はmarkdown的なもので書きたいと思って,Re:VIEWを試してみたが,
数式と表を手こずってしまい,冷静になるとtexで書けば良い気がしてきた,という経緯.

TL;DR

  1. Docker Imageを持ってくる
    • sudo docker pull eisoku9618/kuroiwa_dockefiles_for_latexmk
  2. 下記のmain.tex.latexmkrcを現在のディレクトリに作る
  3. ビルドする
    • sudo docker run -it --rm -v `pwd`:/tmp eisoku9618/kuroiwa_dockefiles_for_latexmk /bin/sh -c "cd /tmp; latexmk -pvc main.tex"
  4. evince .tmp/main.pdf
  5. main.texを編集すると,自動でビルドが走って,.tmp/main.pdfが自動で更新される
main.tex
\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}
.latexmkrc
#!/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を更新する度にビルドしてくれる.
.latexmkrcout_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を付けることで解決した!

0
0
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
0
0