環境
- MacOS (Mojave)
- texlive 2016
前提
- latexmkを使ってタイプセットしている。
はじめに
自分で作ったstyファイルなどをちゃんと読み込んでくれるようにするには、主に以下の2つの方法がある。
- styファイルを、タイプセットするtexファイルと同じディレクトリに入れておく。
- styファイルを、 texlive/texmf-local/tex/latex/ などの適切な場所に配置し、
sudo mktexlsr
を実行しls-R
を更新する。
問題
訳あって上の 2. の方法を使いたくないとする。 (例えばtexソースを共有するときに、相手方にstyファイルのインストールの説明までするのは面倒。)
そういうときは、単に上の 1. の方法をとれば良いのだが、styファイルの数が増えると、ディレクトリが汚くなる。
そこで、サブフォルダを作成してそこにstyファイルたちを入れてみるたくなるが、そうするとstyファイルを見つけられずタイプセットに失敗する。
report/ ├─report.tex └─sty/ ├─mymacro01.sty ├─mymacro02.sty └─mymacro03.sty
解決
カレントディレクトリ以下のサブディレクトリの中もstyファイルを探すように、.latexmkrc
ファイルを編集(or 作成)する。
多分latexmkが使えている人は、homeディレクトリ(例えば /Users/○○ みたいな所)に .latexmkrc
を作成しているはずなので、今までの設定は変えずに、前でも後ろでもどこでもいいので以下の1行
$ENV{'TEXINPUTS'}='.//:' . $ENV{'TEXINPUTS'};
を追加する。
もしstyファイルを入れておくサブディレクトリをstyと決めているのなら
$ENV{'TEXINPUTS'}='./sty//:' . $ENV{'TEXINPUTS'};
と書いてもいい。
また、homeディレクトリに行くのが面倒なら、タイプセットするtexソースと同じディレクトリに .latexmkrc
を作成して、上のコマンドを1行書くだけでもいい。
vscodeの場合
エディタvscodeの拡張機能 LaTeX Workshop
を使ってタイプセットを済ましている人は、 settings.json
のlatex-workshop.latex.tools
に以下のコマンドを追加すれば、上と同じ結果が得られる。
"latex-workshop.latex.tools": [ { "name": "latexmk", "command": "latexmk", "args": [ \\ ここには既にコマンドがいくつか書いてある。 \\ 最初でも最後でもいいので以下の2行を追加する。 "-e", "$ENV{'TEXINPUTS'}='.//:' . $ENV{'TEXINPUTS'}" ] } ]
ただし、既に設定が書いてあるときはカンマ ,
で区切ること!