LoginSignup
22
20

More than 5 years have passed since last update.

LaTeX でサブディレクトリが自動的に探索されるようにする

Last updated at Posted at 2015-10-18

背景

  • 2010 年以降の W32TeX または TeX Live を使っている。
  • 大規模な LaTeX 文書を作成している。1
  • ソースファイル分割を行っていて、かつ大量の画像を使用しているので、文書のコンパイルに必要なファイルが大量にある。
  • そこでファイルを階層ディレクトリに置いて管理したい。

    こんな感じ
    thesis/
    |-- style/
    |   |-- thesis.cls
    |   |-- mytools.sty
    |   |-- tcphaistan.sty
    |   `-- ...
    |-- bib/
    |   |-- thesis.bib
    |   `-- names.bib
    |-- image/
    |   |-- photo/
    |   |   |-- hometown.jpg
    |   |   |-- sayaka28.jpg
    |   |   `-- ...
    |   |-- misc/
    |   |   |-- network-01.png
    |   |   |-- danger-bend.pdf
    |   |   |-- smiling.png
    |   |   |-- sushi.png
    |   |   `-- ...
    |   |-- graph/
    |   |   |-- ex-T13-low-01-c.eps
    |   |   |-- ex-T13-high-01-c.eps
    |   |   `-- ...
    |   `-- ...
    |-- part1-ARE/
    |   |-- graph/
    |   |   |-- ex-T11-base-01.eps
    |   |   `-- ...
    |   |-- bib/
    |   |   `-- ARE.bib
    |   |-- tikz/
    |   |   `-- ARE1-workflow.tex
    |   |-- 00lead-ARE.tex
    |   |-- 10introduction-ARE.tex
    |   |-- 11tex-ARE.tex
    |   |-- 13tikz-ARE.tex
    |   |-- 20advanced-ARE.tex
    |   `-- ...
    |-- part2-SORE/
    |   |-- 00lead-SORE.tex
    |   `-- ...
    |-- part3-QORE/
    |   |-- 00lead-QORE.tex
    |   `-- ...
    |-- 01acknowledge.tex
    |-- 02abstract.tex
    `-- thesis.tex
    
  • ソース中では次のように相対パスでファイルを指定する。

    こんな感じ
    \include{part1-ARE/00lead-ARE.tex}
    \includegraphics[width=1em]{image/misc/sushi.png}
    

問題

  • このままだと、ソース中にディレクトリを記述しているので、文書の編集中にファイルを移動させることが自由にできない。
  • カレントディレクトリとその下位にあるファイルが自動的に探索されるようにしたい。

    • つまり、ソース中ではファイル名しか書かないようにしたい。

      こんな感じ
      \include{00lead-ARE.tex}
      \includegraphics[width=1em]{sushi.png}
      
    • もちろん、同名のファイルを複数置くことはしない前提。

解決法

環境変数 TEXINPUTS.//; という値を指定する。

WIndowsコマンドプロンプトの場合
set TEXINPUTS=.//;
bashの場合
export TEXINPUTS='.//;'

これにより TeX ソースファイル(*.tex*.sty*.cls など)および画像ファイル(*.png*.pdf など)について、カレントから再帰的に探索されるようになる。

同様に、環境変数 BIBINPUTS.//; という値を指定すると、文献データベースファイル(*.bib)について、カレントから再帰的に探索されるようになる。

make 系のツールを使っているのであれば、恐らくそれが持つ環境変数設定の機能を利用できると思われる。

※詳細については以下の記事を参照されたい。

注意点

“ローカルの texmf.cnf”で同様の設定をする(変数 TEXINPUTSBIBINPUTS を設定する)ことで、カレントから再帰的に探索される設定を既定にすることができる。しかし、そのような設定は意図しない副作用を起こす危険性があるので推奨しない


  1. これぐらいの大規模な文書が作れるくらいには LaTeX に習熟しているものとする。 

22
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
20