web-dev-qa-db-ja.com

ラテックス.styファイルをサブディレクトリからロードする方法は?

Texliveの一部ではないいくつかの.sty-filesを使用しており、それらをmain.texのあるフォルダーのサブディレクトリに配置したいと考えています。次の行を使用してパッケージをロードしました。

\usepackage{sty/prettythesis}

これは機能しますが、main.texをxelatexでコンパイルして rubber を使用すると警告が表示されます。

sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)

すべての.sty-files '\ ProvidesPackageコマンドに「sty \」を含めたり、TEXINPUTS環境変数を設定したりせずに、この警告を回避するか、このケースを処理する方法はありますか(main.tex自体からは不可能と思われます) ?

45
Bruno

私はこのスレッドをここに信じています:

まったく同じことについて語っています。つまり、TEXINPUTS環境変数を使用するしかありません。または importパッケージ を使用します。 (注、 ...のimportパッケージにはバリアントがあります... texファイルを含むpg 3。

TEXINPUTSについてもう少し:

お役に立てれば;
乾杯!

編集:\write18を使用してTEXINPUTSパスをtexファイルに直接設定できることを期待しました(-そして、一部のバージョンのLaTeXは--enable-write18を使用します-Shell-escapeを使用して\write18を有効にします。 this)も参照してください-しかし、それは不可能のようです。

"...これは不可能です。..子プロセスの環境変数が設定されていますが、これは親プロセス(TeX)には影響しません。 "( Re:ラテックス内の環境変数TEXINPUTSの設定-comp.text.tex )。

...したがって、今はLinuxでpdflatexを次のように呼び出すだけですbash

TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex

そして、\usepackage{mypackage}ファイルのmyfile.texが直接解決されます。たとえmypackage.styがサブディレクトリにある場合でも、./subdir/mypackage.styと言います。

20
sdaau

Makefileまたはビルドスクリプトでpdflatex(またはlatex)を呼び出す前に、以下の行を単に挿入します。

export TEXINPUTS=".:./sty:"

次に、パッケージを次のように参照します。

\usepackage{prettythesis}
4
Rudy Matela

あなたが発見したように、パッケージをサブディレクトリに入れ(たとえば、./sty/prettythesis.styにあるメインの.texファイルに対して./)、次のようにしてパッケージを呼び出します。

\usepackage{sty/prettythesis}

パッケージは正常にロードされますが、警告が表示されます

sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)

この警告を削除するだけで、.styファイルに小さな変更を加えても問題がない場合は、\ProvidesPackageコマンドを変更して、レポートするパッケージ名を変更するだけです。に

\ProvidesPackage{sty/prettythesis}

負荷を移動する場合は不便ですが、変更の負荷もそれほど悪くありません。

さらに良いのは、標準のTeXパッケージの特定の変更されたバージョンがある場合(たとえば、 このnatbibのパッチ など)、パッケージ名の変更により、パッケージが明確に示されることです。提供し、ファイルを再利用すると、(ほとんどの場合)警告が再表示され、何をしているのかを確実に確認するように求められます。

3
E.P.