51

texliveの一部ではないいくつかの.styファイルを使用していて、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自体からは不可能と思われる)を設定したりせずに、この警告を防止したり、このケースを処理したりする方法はありますか? ?

4

4 に答える 4

23

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

まったく同じことについて話します。つまり、唯一の選択肢はTEXINPUTS環境変数を使用することです。またはインポートパッケージを使用します。(パッケージには、 3ページのtexファイルを含むバリアントがあることに注意してくださいimport。 )

TEXINPUTSについてもう少し:

お役に立てれば;
乾杯!

 

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

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

...だから、今私は次のようpdflatexにLinuxを呼び出します。bash

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

そして、それはファイル内で直接解決さ\usepackage{mypackage}myfile.texます-たとえmypackage.styサブディレクトリにあるとしても、例えば./subdir/mypackage.sty

于 2010-12-19T13:01:59.587 に答える
6

あなたが発見したように、パッケージをサブディレクトリに置き(たとえば、のメインファイル./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のパッチなど)がある場合、パッケージ名の変更は、それが提供しているパッケージを明確に示し、再利用する場合はファイルを作成すると、(ほとんどの場合)警告が再表示され、自分が何をしているかを確認するように促されます。

于 2016-08-23T17:21:31.353 に答える
5

/システムの環境を変更せずにTeXファイルでそれを行うことができます(各ディレクトリの末尾のスラッシュを忘れないでください)。

\makeatletter
\def\input@path{{../one-directory/}{../another-directory/}}
\makeatother

\documentclass{myclass} 
\usepackage{mypackage}

ただし、この方法は移植性のために推奨されない場合があります。他の回答が述べているように、「正しい」方法は、TEXINPUTSlatexを呼び出す前にシステム環境で変数を設定することです。Windowsでは次のようになります(バッチファイルに配置できます)。

set TEXINPUTS=../one-directory/;../another-directory/;%TEXINPUTS%
pdflatex myfile.tex
于 2020-04-25T05:15:49.027 に答える
4

makefileまたはビルドスクリプトでpdflatex(またはlatex)を呼び出す前に、以下の行を入力してください。

export TEXINPUTS=".:./sty:"

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

\usepackage{prettythesis}
于 2014-02-25T13:16:49.677 に答える