日本語LaTeXでamsthmのproof環境をなんとかする

2016/2/23 修正 \blacksquareを$で囲みました

最近積極的に更新しています。

今回は、amsthmのproof環境についてです。 \usepackage{amsthm}すると勝手に定義されるこいつですが、なかなかカスタマイズがしづらくて厄介です。

デフォルトでは、italic体のProof.から始まり白抜きの四角のQEDマークで終わります。 これを証明.に変えるには、

\renewcommand{\proofname}{\bf{証明}}

で、もしもQEDを黒い四角に変えたいなら、

\renewcommand{\qedsymbol}{$\blacksquare$}

とすればできます。ここまではよく知られています。

しかしこの方法では、証明.のドットがitalicで残ってしまいます。 気になる方も中にはいるでしょう。 これを変えるのは大変です。 例えば

tex.stackexchange.com

には、\makeatletterとかいうよくわからないものを使った解決法が載っています。 しかしこんなよくわからないものは使いたくない、ということで、thmtoolsを使った解決法を思いつきました。

私の方法はこうです。

% proofの再定義
\declaretheoremstyle[
  spaceabove=6pt, spacebelow=6pt,
  headfont=\bfseries\sffamily,
  notefont=\bfseries\sffamily,
  notebraces={}{},
  postheadspace=1em,
  numbered=no,
  qed=$\blacksquare$
]{myproof}
\declaretheorem[title=証明, style=myproof]{myproof}
\renewenvironment{proof}{\begin{myproof}}{\end{myproof}}

(2016/2/23 pTeX系で動かなかったため更新)

新しくmyproof環境を定義して、proofをそれで置き換えています。 この方法の利点は、シンプルで、かつカスタマイズもしやすいことです。 headfontやnotefontは、お好みで\bfseriesだけにしてもいいでしょう。 詳しくはthmtoolsのドキュメントを参照のこと。

というわけで、皆さんthmtoolsを使いましょう。

LaTeXでベクトルなどに用いる\bm

LaTeXでベクトルを太字表記したい時、bm, mathbf, boldmathなどいくつかの方法があります。 どれを使うべきなのでしょうか。

結論から言えば、bmを使うのがオススメです。\usepackage{bm}と書いておけば、\bm{x}などという風に使えます。 このとき、\usepackage{bm}は、\usepackage{newtxmath}など数式フォントを変えるパッケージよりに書いておく必要があります。 こうしないと、後述する不具合が起きます。
一応他のものも見ておきますと、\mathbfは使うとRoman体(斜体じゃない奴)の太字になってしまうため、あまり好まれないでしょう。 また、boldmathを使うのは面倒で、あまりメリットはないでしょう。

なお調べると、

d.hatena.ne.jp

のような記事が出てきますが、ここにはbmは良くないと書かれています。 しかし、これは数式フォントを変えるパッケージよりにbmを読み込んでいると起きる問題です。 前述したように、それよりに書いておけば、何の問題もありません。

ためらわずにbmを使いましょう。

vimtexの自動タイプセットが止まらない

前の記事では、 vimtexを紹介しました。

vimtexにほとんど不満はないのですが、唯一問題なのが、 自動タイプセットがVimを閉じたあとも動き続けてしまうことがある、ということです。
vimtexでは'll'でタイプセットが開始し、以後ファイルに変更があれば勝手にタイプセットを行ってくれます。 しかし、この状態で':q'などで終了すると、このプロセスだけが残り続けてしまうことがあります。 いつでもなるわけではなく、再現条件は良く分かりません。

対処法です。

ps aux | grep latex

とすれば、それらしきプロセスが見つかるので、killすればおしまいです。

ps aux | grep latex | grep VIM

とかしておけば、さらに絞り込めます。 あとは、pgrepやpkillなんかも使えます。

pgrep -f latex

とすれば、上の結果のPIDだけが表示されます。 もしこの結果が目的のものだけなら、

pkill -9 -f latex

でkillできます。 他のも混じっていたら、あきらめてPIDを指定してkillしましょう。

以上です。

vimtex

VimLaTeXを書く時に使うプラグインvimtex についてです。

VimLaTeXプラグインには、Vim-LaTeX (LaTeX-Suite)やLaTeX-Boxといったものもありますが、違いを見ていきましょう。
まずVim-LaTeXは一番歴史が古いようで、入力支援などの機能は一番多そうです。しかし機能が多すぎて、分かりにくいのは否めません。
次に、LaTeX-Boxとvimtexについて。この二つは似ています。Forkというわけではないようですが、vimtexはLaTeX-Boxを基にしています。なので、LaTeX-Boxでできることは、だいたいvimtexでもできます。機能も必要なものは揃っているので、現在ではvimtexを使っておけば問題ないでしょう。 なおvimtexは以前はvim-latexという名前だったようですが、LaTeX-Suiteと紛らわしいということで改名したようです。

さて、使い方を軽く。まずvimtexではlatexmkを使用するので、使っていなければ設定しておきましょう。 インストールは例によってNeoBundleなどで。私は以下のような設定をしています。

" vimtex
let g:tex_flavor='latex'
let g:vimtex_latexmk_options = '-pdfdvi'
let g:tex_conceal = ''
let g:vimtex_imaps_enabled = 0
" viewer
let g:vimtex_view_general_viewer
\ = '/Applications/Skim.app/Contents/SharedSupport/displayline'
let g:vimtex_view_general_options = '@line @pdf @tex'
autocmd FileType tex syntax spell toplevel

2, 3行目は必須です(pTeX+dvipdfmxを使っているなら)。viewerの1-3行目のやつは、MacでSkimを使っている場合の設定です。あとはお好みで。
ちなみに'let g:vimtex_imaps_enabled = 0'というのは、vimtexが勝手に設定してくれるinsertモードのmapをオフにするオプションです。 ギリシャ文字の入力などが入ってます。 これについてはauctex.vimあたりの設定を適当にコピーしてきて、 'after/ftplugin/vim.tex'にコピーして使ったほうが、自分でカスタマイズもしやすいと思います。

これで、例えばleaderが'\'なら、\llでタイプセット、\lvでSkimが開いてプレビューできます。 この設定なら、synctexを用いて\lvでVim側と同じ場所に移動できますし、 Skimも設定しておけば、Skim上でCmd-Shift-EnterでVimの同じ箇所に移動できます。 これを有効にするには、Skimの環境設定の「同期する」でMacVimを選びます。
さらに\llでタイプセットを開始すると、以後ファイルを変更するたびに自動でタイプセットが行われます。 とても快適です。

ただ、この自動タイプセットが正常に終了してくれないときがあり、その対処法について次の記事で説明します。 それでは。

LaTeXのhyperrefパッケージのbookmarksopenオプション

LaTeXハイパーリンクを使うための、hyperrefパッケージについてです。

hyperrefでは、PDFの"しおり"を用いて目次をつけることができます。これが文字化けしないようにする方法などは、hyperref - TeX Wikiを参照のこと。

問題は、このしおりについてのオプション"bookmarksopen"です。これはPDFを開いたときに、デフォルトでしおりのツリーを開いておくかどうかを制御するオプションです。しかしこのオプションは、upLaTeX + dvipdfmxという環境では動作しないようです。

対処法としては、LuaLaTeXを使えばきちんと動作します。結局pTeX系では動作していないので、あまり解決にはなっていないのですが。

こういったことがあると、LuaLaTeXに移行したくなりますが、まだ問題も多いです。まず、LuaLaTeXで日本語を扱うにはLuaTeX-jaを用いるのですが、このタイプセットが遅い。しかもMacにおいては、El Capitanに更新するとヒラギノフォントのファイル形式が変更されてしまい、現在のTeX Live 2015のLuaLaTeXでは、ヒラギノを扱うことができません(参考:TeX界の El Capitan 迎撃戦記 - TeX Alchemist Online)。

しかしLuaLaTeXのメリットは多いですし、早いところ移行したいものですね。

スマホ版Fate/snの容量

調べても、誰も書いてる人がいなかったので。AndroidFate/stay nightの容量です。

セイバールートのみのときは、私は調べてませんが、1.2GBぐらいみたいですね。UBWダウンロード後の容量は、2.66GBでした。そして、HFダウンロード後は、3.12GBです。

どれもアプリ全体の容量です。UBWが大きくて、HFは意外に小さいですね。

何かの参考になれば。

Vimに乗り換えた

久しぶりの更新です。ほぼ1年近く経ってしまったのですね。

長らくEmacsを使っていましたが、Vimに乗り換えました。理由は、

  • Vimが流行っているらしいから
  • Emacsは重い
  • Emacsのパッケージマネージャ(elpa, cask)が使いにくい
  • Emacsに飽きた

あたりです。まあ大した理由ではない。

また気が向いたらvimtexとかのパッケージについて書きます。それでは。