[LaTeX]大量の画像のbbファイルをまとめて生成する
TeXに画像を挿入する時、ebbコマンドで各画像にbbファイルってのを作らないといけない。
(2019/12/12 追記: 今のTeXではわざわざbbファイルを用意する必要がないとのことで、改めて環境を見直そうとしたら、なぜか今度はbbファイル作らなくてもコンパイルが通った。なんでぇ?)
でもこのコマンドって画像ごとに走らせる必要があるから、大量に画像があるといちいち実行するのがめんどくさいのね。
ここは情工らしく、自動化させようではないか!
ということで作ったソースコードがこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/env python # coding:UTF-8 ################################################## # このファイルは必ず、bbファイルを生成したいディレクトリに # 置いて実行すること! # (ebbにはファイルのフルパスを渡すことができない) ################################################## import os import subprocess EBB_DIR = os.path.dirname(os.path.abspath(__file__)) for root, dirs, files in os.walk(EBB_DIR): for file in files: if file[-4:] == '.png': proc = subprocess.Popen(['ebb', file]) proc.wait() |
最初はebbにファイルのフルパスを渡そうとしてたんだけど、そうするとエラーが出て実行できなかった。
ebb: Not writing to /Users/ユーザー/Documents/png/image.bb (openout_any = p).
ebb:fatal: Unable to open output file: /Users/ユーザー/Documents/png/imgae.bb
Stack ExchangeのTeXフォーラムによると、ebbには画像の相対パスを渡さないといけないらしい。
Texのファイル保護システムの仕様でこうなってるらしい。
mkbb.pyをpngが入っているディレクトリにおいて、ファイル名だけ渡すようにしたら無事bbファイルを生成できるようになった。
ちなみにこのソースコードではpngファイルについてのみbbファイルを生成するようになってるので、jpgとかにも生成させたい時は17行目あたりをいじって対応させてみてほしい。
この記事へのコメントはこちら