LaTeXで定義関数・指示関数を表す白抜きの”1”を出す

2019-06-06 18:31

mathbb{1}は白抜きにならない

指示関数や定義関数を表す1を出すのに苦労したのでメモ。LaTeXの標準的な環境、つまりamsmath,amssymbなどの標準的なパッケージだけ下ではmathbb{1}しても1は普通に白抜きでない1になる。ちなみにMathjaxでも普通にmathbbしても1は白抜きにならない。

\[ \mathbb{1}_A[x]=\left\{\begin{matrix}1\quad(x\in A)\\0\quad(x\notin A)\end{matrix}\right.\]

ご覧の通り(この見た目はMathjax CDN側の仕様で変わり得るけど)。これだと分からなくもないけど指示関数・定義関数と伝わりにくい。

mathbbm{1}を使う

普通に検索するとこれが出てきます。具体的には以下。

\usepackage{bbm}
\begin{document}
  \begin{equation}
  \mathbbm{1}_A[x]=\left\{\begin{matrix}
    1\quad(x\in A)\\
    0\quad(x\notin A)
  \end{matrix}\right.
  \end{equation}
\end{document}

これでいけるはずだった。実際ちゃんとbbmパッケージをインストールしていればこれで行けるのだが、、、

font u/bbm/m/n/10=bbm10 at 10.0pt not loadable: metric (tfm) file not found.

つまりはbbmパッケージをインストールしてはいるがtfmファイルが見つからないせいで読み込めていない。これはどうしたことだ。これによってLaTeXにパッケージをインストールする基本的な手順を調べることとなった。結論としては適切な場所にbbmパッケージに付随しているメタフォントのソースファイル(.mf)を置くだけなんだが。他のパッケージを入れる時にも役立ちそうなので入れ方そのもをメモしておく。

LaTeXのディレクトリ構造

LaTeXのことで困ったらとりあえずTeX Wikiを見れば怖くない。毎回それで解決しているし。でも毎回毎回いちから読み始めると前提とする知識が足りていなくてイマイチわからない。コマンド類もわりとLinux系のしっかりとしたパッケージマネージャがあっていつでも好きなコマンドを叩ける前提だ。なので手動でやる場合のおぼえがきをこうして書いているわけだが。

手動でやる場合の必勝法

ディレクトリ構造を理解すること。まずtexmf-distというディレクトリを探そう。これがそもそもどこにあるかはLaTeXをどこにインストールしたかによるので決まった場所は無くユーザによる。でもその横にtexmf-localというディレクトリがほぼ必ずあるはず。これら2つのディレクトリは基本的に同じディレクトリ構造をしていることがポイント。dist以下に置くべきファイルはlocal以下の同じ相対位置に置いても正しく動作する。これを理解することが必勝法。

パッケージ関連ファイルを置く場所

基本的に手動でパッケージなどを追加する際はtexmf-local以下に全てのファイルを配置することをオススメする。texmf-distの方は基本的にいじらない。なぜかというと、手動で入れたパッケージがうまく動作しなかったのでやっぱり消そう、って場合などに自分で置いたファイルと元からあったファイルの区別がつかない。インストール方法などの解説ページでdist以下に置けと言われたら迷わずlocal以下の同じ場所におく。このlocalに置く場合に面倒なのは置くべきディレクトリが最初は作成されていないこと。このせいで結局dist以下に置いてしまったりする。この場合は注意してdist以下の構造をマネしながらlocal以下にディレクトリを作っていく。

bbmのインストール

以上を踏まえてhttps://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/bbm.htmlのページを参考にbbmパッケージを正しくインストールする。基本的にはその通りにやるだけ。ただしdistlocalに読み替える。

結果として自分の環境ではbbm.insをlatexした後にできたファイルは正しい場所に配置していたがbbm以下のmfファイル群を正しい場所に配置できていないことが分かった。これらの正しい配置場所は

texmf-local/fonts/source/public/bbm/

だ。直下のfontsディレクトリは無かったので順番に作っていった。これで目的のファイルをコンパイルすると何やらtfmを探している感じの出力は出るがただしくタイプセットされてPDFが完成する。

以上