Ry0 Note

ガジェットレビューと技術メモ

Sublime Text 2でTeXの文書を作成(Ubuntu 14.04)

そろそろ卒論を書かないといけない時期ですね

卒論を書かないと!

こんばんは。本日はSublime TextでTeXをコンパイルするための設定手順の記事です。そろそろ本気で卒論を書かないといけない時期になってきたので、ちょっとでも快適に文章が書けるようにしたいと思います。

Package Control経由で「LaTeXTools」をインストール

前提条件としてTeXがUbuntuにインストールしてあることと、Sublime Text 2にはPackage Controlが導入済みであることです。TeXに関しては当方の環境ではTeX Live 2014をマニュアルでインストールしている状態で検証しております。

さっそくLaTeXToolsをインストール

Ctrl+Shift+Pでコマンドパレットを呼び出して、Package Control: Install Packageと入力。もしくはinstallと入力しても候補の一番頭に出ると思います。

そして「LaTeXTools」と入力して、インストール。

ちょこっと修正

インストールが完了したら、少しファイルをいじります。~/.config/sublime-text-2/Packages/LaTeXTools/builders/traditionalBuilder.py18行目から20行目をコメントアウトします。

traditionalBuilder.py
1
2
3
DEFAULT_COMMAND_LATEXMK = ["latexmk", "-cd",
        "-e", "$pdflatex = '%E -interaction=nonstopmode -synctex=1 %S %O'",
        "-f", "-pdf"]

コメントアウトしたあとの下の行に新たに追加します。

traditionalBuilder.py
1
2
3
4
5
6
7
8
9
10
11
# DEFAULT_COMMAND_LATEXMK = ["latexmk", "-cd",
#         "-e", "$pdflatex = '%E -interaction=nonstopmode -synctex=1 %S %O'",
#         "-f", "-pdf"]

DEFAULT_COMMAND_LATEXMK = ["latexmk", "-cd",
     "-e", "$latex = 'uplatex %O -interaction=nonstopmode -synctex=1 %S'",
     "-e", "$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B'",
     "-e", "$bibtex = 'upbibtex %O %B'",
     "-e", "$makeindex = 'makeindex %O -o %D %S'",
     "-e", "$dvipdf = 'dvipdfmx %O -o %D %S'",
     "-f", "-norc", "-gg", "-pdfdvi"]

とある学会用テンプレートの適用したときに上のレシピだとうまくいかなかったので今は以下のものを使ってます。

traditionalBuilder.py
1
2
3
4
5
6
DEFAULT_COMMAND_LATEXMK = ["latexmk", "-cd",
                "-e", "$latex='platex -kanji=utf8 -guess-input-utf8 -synctex=1 -interaction=nonstopmode %S'",
                "-e", "$bibtex = 'jbibtex'",
                "-e", "$dvipdf = $dvipdf='dvipdfmx -f ptex-ipaex.map %S'",
                "-e", "$dvips = 'pdvips'",
                "-e", "$pdf_mode = 3"]

コマンドオプションは下記のサイトを参照しました。
ある日、昨日までうまく使えてたのにぜんぜんコンパイルが通らん!ってなったときは大抵、LaTeXToolsが更新され、このファイルを上書きしてしまいデフォルトの状態になっています。面倒ですが、その都度この変更をしてください。

【2014-3-12以降版】Mac Sublime Text2 or Sublime Text3 で Tex 導入の初歩から

これで設定はほぼ完了です。

実際に試してみる

コンパイルの仕方はCtrl+Bで。うまくいけばUbuntu標準のPDFビューアーのevinceが開くはず。任意のタイミングで開く場合、Ctrl+L,Vでも開けます。

なんかメッセージでエラー出てんだけど!

私の環境だけかもしれませんが、文字エンコードに関するエラーを吐くので、ちょっとこのエラーで検索してみるとありました。

! LaTeX Error: Encoding scheme `encoding’ unknown. †

\DeclareFontFamily や \fontencoding などを用いた際に, 指定したエンコーディング名 encoding が未定義である場合のエラーメッセージです.
→ まず,エンコーディング名が正しいかどうかを確認してください. 正しければ,\DeclareFontEncoding を用いてエンコーディング encoding の宣言を行ってください.

jarticle, jreport, jbook を使用していて ! LaTeX Error: Encoding scheme `JY1’ unknown. と表示される場合は
jarticle の場合は

\documentclass{ujarticle}

jreport の場合は

\documentclass{ujreport}

jbook の場合は

\documentclass{ujbook}

のように upLaTeX で使用するクラスファイルに変更します.

ということで、私はjarticleを宣言していましたので、これをujarticleにすることでエラーが消えました!よかったよかった。

SyncTeXを使ったinverse searchが使えない?

LaTeXToolsのレポジトリのREADMEによるとevince上で表示された任意の場所をCtrlを押しながら左クリックで該当しているTeXのソースの箇所にジャンプする機能があります。しかし、これがうまくいかずに四苦八苦しました。めげずにじっくりとレポジトリのissuesを眺めているとありました。さすがです。

inverse search stopped working in evince #232

issuesに従って~/.config/sublime-text-2/Packages/User/LaTeXTools.sublime-settingsの修正します。変更する箇所は54行目

LaTeXTools.sublime-settings
1
2
// "sublime": "sublime-text",
"sublime": "subl",

Sublime Textのパスをsublで通していたのが問題でした。日本のサイトではシンボリックリンクをsublで作成するように解説しているサイトが多い気がするので、盲点でした。これでうまくいきました。

おわりに

最後のinverse searchに関しては、なっかなかできなくて諦めかけていた機能で、ちゃんと動くようになったのでよかったです。 これでしっかり卒論が書ける気がします。 本日は以上です。最後までありがとうございました。