粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

TexStudioとSumatraPDFで快適Texライフ!

Ver2:2017年1月(やりたくない作業をサボるため)
そこそこ閲覧数があるようなので写真を追加しました。

Ver3:2018年8月
注意書きとLatexmkの項を追加

注意書き

本記事はWindows環境で最も簡単と思われるTex環境構築法を紹介していますが,用途や目的に寄っては必要ないかもしれません。

  • 最新版ディストリビューションにアクセスしたい方(そこそこ詳しい人) → TexLiveがオススメ
  • 簡単にTexを使ってレポートをかいてみたい。(超初心者) → インストール不要のオンラインエディタから試してもいいかも

環境構築しないでTexを使う (sharelatex VS Overleaf) - 粗大メモ置き場

記事の要点

  • TexStudioを使おう
  • SumatraPDFのinverse searchで快適texライフを!
  • その際のよくある間違いをメモしました

TexStudioを使おう

TexStudioは高機能かつカッコイイtexエディタです。
f:id:ossyaritoori:20160211125304p:plain

TexStudioをおすすめする理由

  • 図をドラッグアンドドロップで貼れる。表などもGUIで貼れたりと初学者に優しい。
  • コマンドの補完がデフォルトで強い。
  • レイアウトがかっこ良く見やすく,作業が捗る。

とりあえず公式サイトからダウンロードして
以下の記事のようにセットアップしましょう。(記事終了)
TeXstudio/設定/Windows - TeX Wiki

2018年3月追記:設定ファイルを追加しました。
以下のプロファイルをDLすることで多くの箇所の設定をスキップできます。

gsviewなどのバージョン等の番号には気を使う必要がありますが。

TexStudioの基本設定

pLatexコンパイルするための設定について解説します。


右上の[オプション]→[TexStudioの設定]を押して次のような画面を出しましょう。

f:id:ossyaritoori:20160630173716p:plain
まずは,左下の「高度なオプションの表示」というところをチェックしてください。

ここではまず
主に左メニューの「コマンド」と「ビルド」をカスタマイズします。

「コマンド」のメインの設定箇所は黄色で引いたようになります。
f:id:ossyaritoori:20170129014416p:plain
☆が必須項目,◯は追加項目です。

「ビルド」では以下の通り。
f:id:ossyaritoori:20170129015323p:plain
必須項目は最上部だけです。

最低限の必須項目

上で出した2つの図の☆の所に該当します。

「コマンド」メニュー

  • オプション→Texstudioの設定→コマンド→「LaTex」の項目を「platex.exe -synctex=1 -interaction=nonstopmode %.tex」に変更
  • オプション→Texstudioの設定→コマンド→「PdfLatex」の項目を「C:\w32tex\bin\pdflatex.exe -synctex=1 -interaction=nonstopmode %.tex」に変更

「ビルド」メニュー

  • オプション→Texstudioの設定→ビルド→「ビルド&表示」の項目を「txs:///dvi-pdf-chain」に変更

追加でやっておくこと

上記の◯印の部分をやっておくのがおすすめです。
主に,

  • pbibtex を用いた参考文献の管理
  • SumatraPDFを用いたtexとPDFの連携

が目的です。

フォント,表示関係

テーマやフォントについては以下の2つを主にやればいいです。
「一般」設定
f:id:ossyaritoori:20170129015716p:plain
「エディタ」設定
f:id:ossyaritoori:20170129020042p:plain

その他にも「詳細なエディタ設定」を開いたり,

  • オプション→Texstudioの設定→「高度なオプションの表示」にチェック(左下)→詳細なエディタ設定→ハック/回避策→「最適なディスプレイオプションの自動選択」をオフ→「描画モード」を「Qt」に

「構文の強調表示」のところで

などしておくと見やすいでしょう。

SumatraPDF と連携しよう

SumatraPDFはフリーのPDF閲覧ソフトです。
Texとの連携においてよく使われます。
Download Sumatra PDF - a free reader

PDFの更新を逐次表示に反映できること,次に述べるinverse searchという機能を使えるおかげで選ばれているようです。

最も使いやすいと思われるのがこの機能。
PDFで「ここを直したいな」とい所をダブルクリックすればすぐにTexファイルの該当箇所へ飛んでくれます。

設定方法

インストールの後,SumatraPDFを開きます。
左上の 設定→オプション→逆順検索コマンドラインの欄に以下のように記述しましょう。

"C:\Program Files (x86)\TeXstudio\texstudio.exe" "%f" -line %l

f:id:ossyaritoori:20160630173754p:plain
texstudioで「ファイル名」という名のファイルの「L行目」を開けというコマンドになってますね。
Pathがあっているかきちんと確認しましょう。

これを使うことによってPDFをダブルクリックすることで該当するTexの行に飛ぶことができます。
はかどりますね。

設定のところに逆順検索コマンドラインがない?

バージョンに依ってはデフォルトで表示しないようになっていることもあるようです。

その場合は「詳細設定」を開いて出るtxtファイルに「EnableTeXEnhancements」という項目があればそれをtrueにして,
なければそのまま以下の文を追加してください。

EnableTeXEnhancements = true

その後,以下のような文章を追加すれば完了です。

InverseSearchCmdLine = "C:\Program Files (x86)\TeXstudio\Texstudio.exe" "%f" -line %l

規定のビューワーの代わりにSumatraPDFを使う

SumatraPDFを使うと内部のビューワーは正直邪魔なので

  • コマンド→外部PDFビューワーに「"c:/Program Files/SumatraPDF/SumatraPDF.exe" -reuse-instance %.pdf」と記述。
  • ビルド→PDFビューワー のところを「txs:///view-pdf-external」に変更。

こうすることでSumatraPDFをデフォルトで使うことができます。
あ,もちろんPathには注意してください。

コンパイル後に編集している部分を自動的に表示

さらにforward searchというのもあって

先ほどの外部PDFビューワーに
「"C:\Program Files\SumatraPDF\SumatraPDF.exe" -reuse-instance -inverse-search """"C:\Program Files (x86)\TeXstudio\texstudio.exe""" """%%f""" -line %%l" "?am.pdf" -forward-search "?c:am.tex" @」
と呪文を唱えることで,コンパイル時にカーソルのある行のPDFがダイレクトで表示されるようになります。

Latexmkを用いた自動コンパイル追記

Latexmkを用いることでソースの変更を自動で検知してコンパイルさせることができます。


Windowsの場合はまずはPerl環境(StrawberryPerlなど)をインストールします。
[Perl] オススメ「Strawberry Perl」を使ってみよう!! | マリンロード


以下の様な.latexmkrcというファイルをhomeか作業ディレクトリに入れた後,
「latexmk -pvc hoge.tex」のようにhogeというtexファイルを監視するコマンドを実行します。

$latex          = 'platex -kanji=utf8 --shell-escape -halt-on-error 
-guess-input-enc -synctex=1 -interaction=nonstopmode %S';
$latex_silent   = 'platex -kanji=utf8 -halt-on-error -guess-input-enc 
-synctex=1 -interaction=batchmode %S';
$dvipdf         = 'dvipdfmx %O -o %D %S';
$bibtex         = 'pbibtex -kanji=utf8 %B';
$makeindex      = 'mendex %O -o %D %S';
$max_repeat     = 5;
$pdf_mode       = 3;
# prevent latexmk from removing PDF after typeset,
#$pvc_view_file_via_temporary = 0;
if (-f 'C:/Program Files/SumatraPDF/SumatraPDF.exe') {
 $pdf_previewer = '"C:/Program Files/SumatraPDF/SumatraPDF.exe" 
 -reuse-instance';
} elsif (-f 'C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe') {
 $pdf_previewer = '"C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" 
 -reuse-instance';
} else {
 $pdf_previewer  = '"C://Program Files (x86)//Adobe//Reader 11.0//
 Reader//AcroRd32.exe" /n %S';
}

inverse searchなどの連携 がうまくいかない人のためのチェックリスト

texstudioのPathはあっているか?

間違った場所を指定していれば当然動きません。コマンドラインにコピペしてみて動作を確認するのもありですね。

SumatraPDFに逆順検索のコマンド書く欄がない!

設定→詳細設定を開いて出てくるテキストを見てください。
「 EnableTeXEnhancements = false 」という記述があった場合,「 EnableTeXEnhancements = true 」と書きなおしてください。

hoge.synctex」ファイルが存在するか?

SyncTexというのはPDFとTex間の連携を取るためのファイルです。
このファイルが生成されていない場合は
オプション→Texstudioの設定→コマンド→「LaTex」の項目が「platex.exe -synctex=-1 -interaction=nonstopmode %.tex」となっているか確認してください。
それでもダメならSyncTexを一から入れ直す必要があります。
僕はこれで一回ハマってしまいました。

結論

総括として,この記事は個人的メモなのでわかりにくいかと思います。
最後のチェックリストはちょっぴり親切かも?ってくらい。

最悪,後半のsumatraPDFを無視して美しさだけを目当てにTexStudioを使ってみてくれればいいです。
あと,latexmkを使ってtex文の変更を自動で検知してバックグラウンドでコンパイルなんてのもありますが
その辺はまた今度紹介する気になったら紹介します。

私的メモが誰かの役に立つかもしれないことを願って。。。