2011-12-06 17 views
1

Mathematicaでは、TeXForm、OutputForm、TraditionalFormなどの出力フォーマットを変更するためにFormatを使用することができます。 これは1が関数T.TeXForm複数のレベルで

In[1]:= Format[T[a_], TeXForm] := "\[Del]" a 

のTeXFormを再定義することができる方法の例です。結果は、これは私が期待したものである

In[2]:= TeXForm[T[x]] 
Out[1]= x \nabla 

です。今すぐ[T [X]] Tに同じフォーマットを適用

In[3]:= TeXForm[T[T[x]]] 
Out[2]= \nabla T(x) 

しかし、私は希望の出力は

Out[2]= \nabla \nabla x 

なぜMathematicaは、この出力を与えるものではありませんか?これを出力としてどのように変更できますか? Mathematicaのヘルプとスタックオーバーフローで書式設定に関する詳細を調べようとしましたが、多くの手がかりを見つけることができませんでした。

答えて

2

手動でフォーマットすることができます。

myTeX = TeXForm[# /. T -> (Row[{"\[Del]", #}] &)]&; 

T[T[a]] //myTeX 
\n abla \n abla a
4

TeXFormに制限しないとうまくいくでしょう。あなたがDelを使用することができるとき

In[100] := Format[T[a_]] := \[Del] a 

In[101] := TeXForm[T[T[x]]] 
Out[101]//TexForm = 
      \nabla \nabla x 

なぜTを使うのか?

In[7] := Del[a] 
Out[7] = ∇a 

In[8] := TeXForm[Del[Del[a]]] 
Out[8]//TeXForm = 
     \nabla \nabla a 
+0

TeXコードでは、Mathematicaの出力とは異なる記号を使いたいと思います。 – sjdh

2

これが失敗した理由は、Format[arg, TeXForm]パターンが再帰的に引数の上にFormatを配布していないということです。これは珍しいことではありません。

Clear[f]; 
f[T[a_]] := "\[Del]" a; 

f[T[T[a]]] = "\[Del]" T[a]が得られますが、

Clear[f]; 
f[T[a_]] := "\[Del]" f[a]; 

は、あなたが望むものに近いf[T[T[a]]] = ("\[Del]")^2 f[a]を得られます。考えてみましょう。

したがって、上記のf[T[a_]]の2番目の選択肢を使用して

Format[T[a_], TeXForm] := f[T[a]] 

を定義し、あなたは良いスタートを切ったことでしょう。

0

次のように入力します。

Needs["Notation`"] 
ESCAPE notation ESCAPE 

(またはあなたがパッケージを読み込むときに開くパレットから "表記法" を選択します)最初のプレースホルダで を挿入

ESCAPE del ESCAPE a_ 

2番目のプレースホルダに「

」と入力します。表記ラインの閉じ括弧の前
T[a_] 

、今、あなたはあなたの例試みることができるオプション

, WorkingForm -> TraditionalForm 

を挿入します。

T[T[a]]//TeXForm 

をし、それは括弧を除いて、何をしたいあなたを与える必要があります(とにかく、ほとんどの場合、あなたの正気を維持するためにお勧めします):

\nabla (\nabla a) 

"Notation/tutorial/OptionsAndAuxiliaryFunctions"のヘルプ文書を見て、さらに進むことができるかもしれません。

+0

OPは彼のノートブックでESCAPE del ESCAPEを使用したと確信しています。カットして結果をStackOverflowに貼り付けると、\ Delフォームが得られます。 –

+0

???私は\ Delフォームを取得する方法はないと思います...私はESCAPE del ESCAPEとタイプし、\\ [Del]を得たと思います。私はあなたが何とか私のテキストをカットアンドペーストできないことを心配していると思います。申し訳ありませんが、私はショートカットを知らないかもしれない読者の利益のために説明的になりたかったです。 – Jens