Li::Feel

りとるす的雑記帳。

LaTeXにAtomを組み合わせて執筆をラクにする

LaTeXを使っているとTeXShopなどのシンプルなツールだとなかなかしんどいことが多数あります。そこで、自分のLaTeX原稿執筆環境をテキストエディタAtomで整えた話をメモ代わりに書いていきます。

LaTeXを入れる

まずはLaTeXを入れます。これがないと話が始まらない。 Windowsの場合はこちらの記事が詳しそうです。latexパッケージさえ入ってしまえばあとはパッケージの設定等次第です。

qiita.com

Macの場合は普通にMacTeXを入れます。難しいことは何もありません。 普通にググって出てきたパッケージをインストールするだけですが、わからん人はこれを見るといいかもしれないです。

qiita.com

目指す環境

f:id:litols0816:20171218223148p:plain こんな見た目の環境を目指します。 機能として備えるのは以下のとおり。普通のエディタで書くよりもだいぶラクに書けるようになります。

  • ファイル一覧(Atomのプロジェクト機能)
  • セクション一覧(開いているTeXスクリプトの節一覧を表示する。クリックするとジャンプ)
  • セーブで自動コンパイル
  • SyncTeX(出力pdfをクリックするとクリックした部分のTeXスクリプトにジャンプする)
  • シンタックスハイライト
  • オートコンプリート

やりかた

ひたすら以下のパッケージをインストールするだけです。

節一覧

latex-treeパッケージをインストールします。 このパッケージをインストールして、Package -> LaTex Tree -> Toggle Tree ViewをクリックするとDocument Tree(節一覧)が出るようになります。

セーブで自動コンパイルとSyncTeX

latexpdf-viewをインストールします。 この記事が詳しいです。

qiita.com

latexパッケージは、latexmkというLaTeX用のビルドツールを使ってPDF出力を作成するものです。 Control+Option+Bでビルド、Control+Option+Cでクリーンアップができます。 おすすめは設定で「Build on Save」にチェックを入れておくことです。 これによって、上記ショートカットを入力しなくても保存するだけでビルドが走るようになります。

pdf-viewはよくこの話で出てくるSkimと同様にSyncTexに対応しており、Atom内のタブとしてPDFを開けるので大変重宝しています。 しかも、latexパッケージのビルドが成功したら自動で開くようになっています。

シンタックスハイライト

language-latexをインストールするだけです。

オートコンプリート

latexerをインストールします。 このパッケージでは、LaTeXの文法の補完はもちろんですが、\refなどをするときに指定するラベルの補完、bibtexに入れた参考文献の補完ができたりします。

LaTeX使うにあたっての小技

これでLaTeXを書く環境は揃いましたが、いくつか快適に書くにあたり小技があったりします。TeX芸感がすごい。

refの図〜〜とか表〜〜をいちいち入力しないようにする

リファレンスでいちいち図\ref{fig:hoge}とか書いていくのが変換の手間もあってわりとしんどいので、自分で新しいLaTeXコマンドを作ってさくっと書けるようにしています。 \begin{document}の前に以下のように書きます。

% リファレンス系便利コマンド
\newcommand{\figref}[1]{図~\ref{#1}}
\newcommand{\tabref}[1]{表~\ref{#1}}
\newcommand{\secref}[1]{\ref{#1}~節}
\newcommand{\chapref}[1]{\ref{#1}~章}

urlを途中で自動改行できるようにする

urlパッケージを用いてURLを論文に張り込むのは主にOSSのツールの引用などで使うことが多いですが、こいつが意外と上手く動作してくれないせいで、ダブルカラムだと収まってくれないことがあります。

そこで、\usepackageしたあとにこんな文を書きます。

%URLのタイプセット
\usepackage{url}
% -- URLの途中で改行するようにする
\makeatletter
\g@addto@macro{\UrlBreaks}{\UrlOrds}
\makeatother

まとめ

以上、LaTeXの環境をAtomで整えたり、LaTeXの地味な小技を紹介しました。 明日あたりに擬似コードの書き方でもまとめて投げるかもしれません。