2011-01-24 12 views
1

私の個人的なパッケージのほとんどは、単一のmファイルです、例えばFoo.mですが、通常はFoo/Foo.mになります。 Fooディレクトリにもメモがあります。パッケージはちょうど<<Foo`でロードすることができるようにするには、次のように私はFoo/init.mのものが含まれます。Mathematica:単純なパッケージの自動init.mファイルを作ることは可能ですか

With[{packagename="Foo"}, 
    [email protected]@{ 
    [email protected][packagename<>"`"], 
    packagename<>".m"}] 

これは限り私は新しいパッケージにinit.mをコピーするときpackagenameを更新することを忘れないよう正常に動作しますが、そこにある場合、私は思っていましたこの単純なケースのために完全に再利用可能なinit.mを作成する方法は?

完全性のために、私は実装の名前を変更したくありませんimplementation.m

+0

ですから、インクルードが自己意識のロードディレクトリのことができます何かをしたいです。そうですか? –

答えて

3

私はあなたの質問を理解することは非常によく分からないが、ここでとにかく推測です...

あなたの最初の行に

packagename = StringDrop[DirectoryName[$Input], -1] 

ような何かを試してみましたか?

編集:今後の参考のため

ヤヌスのテストの後、それが正しい表現であることになった:

packagename=StringDrop[$Input,-2] 
+0

にスポット!私は 'NotebookFilename'に似た何かをブラウズしていたが、それを見つけることはできなかった。ありがとう! – Janus

+0

a)$ Inputがフルパスに設定されておらず、b) 'Foo/init.m'を読むとき' $ Input == Foo.m'という 'Get'に与えられたパスのようです。 。したがって、 'packagename = StringDrop [$ Input、-2]'にする必要があります。 – Janus

+0

@Janusありがとう!それはうまくいった!私は正しい表現で私の答えを編集しました。 –

関連する問題