この記事について
自分が卒業論文を書いていたときに使っていた執筆環境がけっこう便利だと思ったので共有してみようと思いました。
参考になれば幸いです。
Macで日本語で文章を書くことを前提としています。(uplatexとupbibtexを使います)
英語での執筆にも対応できるので適宜変更してください。
この記事を読んでできること
-
.tex
から.pdf
への自動コンパイル/プレビュー - 「、」「。」から「,」「.」への自動変換
- 引用(
bibtex
)、章立て(chapter
やsection
など)の自動補完 - スニペット(
equation
やtable
など)の充実
-> 卒業論文のテンプレート
brewの導入
まず準備としてHomebrewというMacのパッケージマネジャーをインストールします
ターミナルで以下の1行を実行すればOK
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brewで必要なものをインストール
brew install ghostscript imagemagick
brew caskで必要なものをインストール
アプリ | 説明 |
---|---|
Atom | Github製のエディタ |
BasicTex | 最小限のLatex環境パッケージ(MacTexをインストール済みの方は不要) |
Skim | 高機能PDFビュアー |
もう既にAtomやSkimがインストールがされていたり、MacTexがインストール済みの方は必要なものだけをインストールしてください。
どれもインストールされていない方は以下の1行のターミナルで実行してください。
brew cask install atom skim basictex --appdir=/Applications
Atomの設定
Atomにはパッケージといって独自の機能を追加する仕組みがあります。
Atomでインストールするパッケージ
Atomで、[Preferences]/[Settings] -> [Install]と進んで、以下の2つのパッケージをインストールします
パッケージ | 説明 |
---|---|
language-latex | latexのシンタックスハイライトとスニペット |
latexer | 引用や章立ての自動補完 |
ターミナルで以下の1行を実行しても上記のパッケージをインストールすることができます
apm install language-latex latexer
ここまで
equation
やtable
などのスニペット補完と参照の自動補完ができるようになりました。
Skimの設定
次にSkimの設定をします。[Preferences] -> [Sync]でまずファイル更新の監視を有効にします。
しかし、これだけだとtexファイルの更新のたびに「更新しますか?」というダイアログが出てしまうので、以下の1行をターミナルで実行して自動更新させるようにします
defaults write -app Skim SKAutoReloadFileUpdate -boolean true
uplatexのインストール、設定
latex
やplatex
、xelatex
でもそれぞれ用途にあった環境を使えばいいのですが、
ここでは日本語の処理をUnicodeで行なうように拡張されたplatex
であるuplatex
を使いたいと思います。
basictexをインストールしただけだと、uplatexやupbibtexが使えないので追加でパッケージをダウンロードします
sudo tlmgr update --self --all
sudo tlmgr install uplatex latexmk collection-langjapanese
フォント埋め込み
以下のサイトが役に立ちます。
- TeXShop + MacTeX / UpTeX でのヒラギノ フォントの埋め込み
- TeX Live/Mac - TeX Wiki
- MacTeX 2016 のインストール&日本語環境構築法 (El Capitan 以前/以後両対応) - TeX Alchemist Online
- TeX界の El Capitan 迎撃戦記 - TeX Alchemist Online
まとめると
cd /usr/local/texlive/2016basic/texmf-dist/scripts/cjk-gs-integrate
sudo perl cjk-gs-integrate.pl --link-texmf --force
sudo mktexlsr
sudo kanji-config-updmap-sys hiragino-elcapitan-pron
latexmk
latexmk
はその名の通り、latex
のmake
を担ってくれるコマンドです
そのコマンドの設定ファイルが.latexmkrc
というファイルです
(rc
はrun commands
の略のようです。* linux - What does the 'rc' in .bashrc, etc. mean? - Super User)
latexmk
により、tex
からpdf
の自動更新ができるようになります。
.latexmkrcの作成、設定
【GUI】
任意のテキストエディタを開いて、以下の~/.latexmkrc
のスクリプトをコピーして、.latexmkrc
という名前でホームディレクトリに保存してください。(ホームディレクトリはDocumentsとかDesktopとかいうディレクトリがあるところです)
【CUI】
以下の~/.latexmkrc
のスクリプトをコピーして、
pbpaste > ~/.latexmkrc
を実行します。
#!/usr/bin/env perl
$latex = 'uplatex -synctex=1 -halt-on-error %O %S';
$bibtex = 'upbibtex %O %B';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex -U %O -o %D %S';
$max_repeat = 5;
$pdf_mode = 3; # generates pdf via dvipdfmx
# Prevent latexmk from removing PDF after typeset.
# This enables Skim to chase the update in PDF automatically.
$pvc_view_file_via_temporary = 0;
# Use Skim as a previewer
$pdf_previewer = 'open -a /Applications/Skim.app'; # Skimの場所を指定する
$latex
内のuplatexをplatexやxelatexにすることでコンパイルの指定ができます
「、」「。」の変換
論文を書くとき句読点は全角の「,」「.」で書かなければいけない(?)のですが、Google日本語入力で設定を変更したりすると普段LINEやTwitterなどを使うときに不便です。その都度設定を変更するのも面倒です。
~/.latexmkrc
ではグローバルな設定を行なうのですが、.tex
が置いてあるディレクトリに.latexmkrc
を置くとディレクトリ内の設定が優先されます。
全てのtexファイルで句読点変換をしたいとは限らないので、句読点自動変換をしたいディレクトリだけ変換のスクリプトを書いた.latexmkrc
を入れるといいと思います。
sed
というコマンドを使って、tex
ファイルの中身の「、」「。」を「,」「.」に変換しています。
#!/usr/bin/env perl
$latex = "find . -type f -name '*.tex' | xargs sed -i '' -e 's/、/,/g' -e 's/。/./g'; uplatex -synctex=1 -halt-on-error %O %S";
.
├── .latexmkrc
└── sample.tex
latexmkの使い方
ここまでできたらあともう少しです。
コンパイル
ただコンパイルしてpdfを出力するだけ
latexmk sample.tex
閲覧
コンパイルしてpdfを確認する
latexmk -pv sample.tex
監視(自動更新)
ターミナルで以下の1行を打つと、Atomでtexファイルに更新があるたびにpdfの更新が行なわれます。
latexmk -pvc sample.tex
クリーン
中間生成ファイルを削除したいときに使います。
latexmk -C sample.tex
まとめ
これでMacでAtomを使ったTeXの執筆環境が整ったと思います。
自分が文章を書くときは、まずAtomでディレクトリを開き、そのあと監視を行なうコマンドを打ちます
cd (texファイルがあるディレクトリ)
atom .
latexmk -pvc hoge.tex
補足について
ここまでである程度の環境が揃ったと思うのですが、texのプロジェクトについて思うことや付け足したいことをメモとして残しておきます。
ディレクトリ構成
1つのディレクトリに全てのファイルを置いておくのは小さいプロジェクトでは不便ではないと思いますが、
卒論など章や節の多くなるプロジェクトだと目的のファイルを見つけるのが面倒になります。
なので、序論、先行研究、手法、実験、結論ごとにディレクトリを分けると見通しがよくなります。
これはさすがにやりすぎかもしれませんが、適宜自分にあった粒度で調整してください。
章ごとや節ごとにディレクトリを分けるとgit管理もしやすくなります。
.
├── .gitignore
├── .latexmkrc
├── Makefile
├── backmatter
│ ├── acknowledgement.tex
│ └── main.tex
├── conclusion
│ ├── hoge.tex
│ ├── main.tex
│ └── piyo.tex
├── experiment
│ ├── hoge.tex
│ ├── main.tex
│ └── piyo.tex
├── fig
├── frontmatter
│ ├── abstract.tex
│ └── main.tex
├── introduction
│ ├── main.tex
│ ├── motivation.tex
│ ├── objective.tex
│ ├── organization.tex
│ └── preface.tex
├── main_bibliography.bib
├── method
│ ├── hoge.tex
│ ├── main.tex
│ └── piyo.tex
├── misc
├── related-research
│ ├── hoge.tex
│ ├── main.tex
│ └── piyo.tex
├── thesis.sty
└── thesis.tex
latexerの設定
latexerでは\ref
や\cite
内の文字列を自動補完してくれるのですが、デフォルトでは補完候補の検索範囲は元ファイルと同階層のファイルのみです。
なので、ファイルの先頭に
%!TEX root = ./thesis.tex
or
%!TEX root = ../thesis.tex
のように元のファイルを指定する必要があります。
サンプルプロジェクト
Makefile
以下のようなMakefileを作っておくとlatexmkのコマンドを覚えておかなくても
make watch
やmake clean
とするだけで所望の処理を行なうことができます。
INPUT=thesis.tex
OUTPUT=thesis
// VIEWER=open -a /Applications/Skim.app
all:
latexmk -jobname=$(OUTPUT) $(INPUT)
clean:
latexmk -CA -jobname=$(OUTPUT) $(INPUT)
find . -name *.aux -delete
find . -name *.log -delete
rm *.bbl
view:
latexmk -pv -jobname=$(OUTPUT) $(INPUT)
watch:
latexmk -pvc -jobname=$(OUTPUT) $(INPUT)
画像の埋め込み
texに画像を埋め込むときは、eps
に変換しないといけないと言われますが、最近ではそのままpdf埋め込みで良いようです。
@zr_tex8rさんからコメントをいただきました。
以下のように、pngでもjpgでもそのまま読み込めるようです。
\includegraphics[width=4cm]{image.png}
次の区切り線まで読み飛ばしてください
pngやjpgをpdfに変換するには、ImageMagickを使います。
brew install imagemagick
convert hoge.png hoge.pdf
画像があるディレクトリに移動して、
以下のコマンドを実行すればフォルダ内全ての画像を変換できます。
for img in $(ls)
convert $img $(basename $img $(echo ${img#*.}))pdf
【実行例】
mediabb
画像を埋め込むときにいちいちサイズ指定をするのはめんどくさいのでmediabbというパッケージを使います。
- LaTeX:Bounding Boxなしでpdfを読み込むためのstyファイル(転載) – HimaJew Blog
- 超簡単!TeXにpdf形式の図を挿入する方法 - しろかい!
- dvipdfmx で mediabb できない件(1) - マクロツイーター
Skimを使わずにAtomだけでPDFプレビューまで完結させる方法
- pdf-view
というパッケージを追加でインストールします
しかし、そのままだと日本語の表示ができないので、
~/.atom/packages/pdf-view/node_modules/pdfjs-dist/build にある pdf.js の適当なところ(27行目くらい)に、以下の2行を追加する。
PDFJS.cMapUrl = "../cmaps/";
PDFJS.cMapPacked = true;
(Atomでplatex->dvipdfmxチェーンを実装する話 | 愛のらくがき帳)
上記の設定を追加します。
Tables Generator
このサイトはGUIで表を作るとlatexやmarkdownの書式に合わせてテキストを書き出してくれるのでとても便利です。
参考
- Atom - TeX Wiki
- Latexmk - TeX Wiki
- atomで快適LaTeX編集環境 - ayihiscope
- AtomでTexする(Mac) - Qiita
- Ochiailab Tips: AtomエディタでさいつよのLaTeX環境を構築する
- Mac の Atom で Latex - Qiita
- MacにBasicTexで最小限のTex環境構築 - Qiita
- Auto-refresh and mac os
- Atom | 愛のらくがき帳
- 日本人のための LaTeX タブー集 ~画像読込編~ - Qiita
- OS X El CapitanでTeX環境をゼロから構築する方法 - Qiita
- OS X (El-Capitan) に最小限の LaTeX 環境を構築 - Qiita
- El Capitanの前TeX環境を消してTeX Live 2015をインストールしてみた | icchi's blog
- MacでのTeX環境設定メモ – Ki_chi@Blog
- Latexmkから学ぶPDF化までの処理の流れ - Qiita
- Mac OS X El Capitan に LaTeX インストール | 澍法雨
- upTeX,upLaTeX - TeX Wiki
- upLaTeXを使おう [電脳世界の奥底にて]
- 天地有情 [LaTeX][LuaLaTeX] PDF「日本語しおり」の作り方 ~備忘録~
- El Capitan に LaTeX 環境を作る - Qiita
- 卒論/修論/博論のためのモダンな LaTeX の書き方 - 情報系大学院生のWebメモ
- 卒論・修論をLaTeXで書いて情弱から脱却を計るためのチェック項目16+α - けつあご日記
@tuvistavie Danielさんのプロジェクトを大変参考にさせていただきました。
長くなってしまったので補足を別記事に分けるかもしれません。