Wolfram mathematica 在多个级别格式化TeXForm
在Mathematica中,格式可用于更改输出格式,如TeXForm、OutputForm或TraditionalForm。 这是一个如何重新定义函数T的TeXForm的示例Wolfram mathematica 在多个级别格式化TeXForm,wolfram-mathematica,design-patterns,Wolfram Mathematica,Design Patterns,在Mathematica中,格式可用于更改输出格式,如TeXForm、OutputForm或TraditionalForm。 这是一个如何重新定义函数T的TeXForm的示例 In[1]:= Format[T[a_], TeXForm] := "\[Del]" a 结果是 In[2]:= TeXForm[T[x]] Out[1]= x \nabla 这是我所期望的。现在在T[T[x]]上应用相同的格式 In[3]:= TeXForm[T[T[x]]] Out[2]= \nabla T(x)
In[1]:= Format[T[a_], TeXForm] := "\[Del]" a
结果是
In[2]:= TeXForm[T[x]]
Out[1]= x \nabla
这是我所期望的。现在在T[T[x]]上应用相同的格式
In[3]:= TeXForm[T[T[x]]]
Out[2]= \nabla T(x)
然而,我想要的输出是
Out[2]= \nabla \nabla x
为什么Mathematica不给出这个输出?我可以改变什么来获得输出?
我试图在Mathematica帮助和堆栈溢出中找到更多关于格式化的信息,但我找不到很多线索。如果不限制使用TeXForm,它将起作用
In[100] := Format[T[a_]] := \[Del] a
In[101] := TeXForm[T[T[x]]]
Out[101]//TexForm =
\nabla \nabla x
既然可以使用,为什么要使用
T
如果你不限制使用TeXForm,它就会起作用
In[100] := Format[T[a_]] := \[Del] a
In[101] := TeXForm[T[T[x]]]
Out[101]//TexForm =
\nabla \nabla x
既然可以使用,为什么要使用
T
失败的原因是
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]
,这更接近您想要的
所以定义
Format[T[a_], TeXForm] := f[T[a]]
使用上面的第二个选择
f[T[a!]]
,您将有一个良好的开端。失败的原因是格式[arg,TeXForm]
模式不会递归地将格式
分布在参数上。这并不罕见。考虑:
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]
,这更接近您想要的
所以定义
Format[T[a_], TeXForm] := f[T[a]]
使用上面的第二个选项
f[T[a\u]]
,您将有一个良好的开端。您可能需要手动进行格式化
myTeX = TeXForm[# /. T -> (Row[{"\[Del]", #}] &)]&;
T[T[a]] //myTeX
\n abla\n abla a您可能需要手动进行格式化
myTeX = TeXForm[# /. T -> (Row[{"\[Del]", #}] &)]&;
T[T[a]] //myTeX
\n abla\n abla a键入以下内容:
Needs["Notation`"]
ESCAPE notation ESCAPE
(或者从加载包时打开的调色板中选择“标记”)
在第一个占位符中,插入
ESCAPE del ESCAPE a_
在第二个占位符中,输入
T[a_]
在符号行的结束括号之前,插入选项
, WorkingForm -> TraditionalForm
现在,您可以尝试以下示例:
T[T[a]]//TeXForm
它应该给你你想要的,除了括号(无论如何,为了在大多数情况下保持你的理智,括号是可取的):
您可以通过查看“Notation/tutorial/options and auxiliaryfunctions”下的帮助文档进一步了解以下内容:
Needs["Notation`"]
ESCAPE notation ESCAPE
(或者从加载包时打开的调色板中选择“标记”)
在第一个占位符中,插入
ESCAPE del ESCAPE a_
在第二个占位符中,输入
T[a_]
在符号行的结束括号之前,插入选项
, WorkingForm -> TraditionalForm
现在,您可以尝试以下示例:
T[T[a]]//TeXForm
它应该给你你想要的,除了括号(无论如何,为了在大多数情况下保持你的理智,括号是可取的):
通过查看“Notation/tutorial/options and auxiliaryfunctions”下的帮助文档,您可能可以进一步了解。我确信OP在他的笔记本中使用了ESCAPE del ESCAPE。当您将结果剪切并粘贴到StackOverflow中时,您将得到\Del表单。???我不认为有任何方法可以获得\Del表单。。。我肯定你键入了ESCAPE del ESCAPE,得到了\[del],这正是我想要的。我猜你一定担心我的文字无法剪切粘贴。很抱歉,为了不知道捷径的读者,我想更详细地描述一下。我确信OP在他的笔记本中使用了ESCAPE del ESCAPE。当您将结果剪切并粘贴到StackOverflow中时,您将得到\Del表单。???我不认为有任何方法可以获得\Del表单。。。我肯定你键入了ESCAPE del ESCAPE,得到了\[del],这正是我想要的。我猜你一定担心我的文字无法剪切粘贴。对不起,为了不知道快捷方式的读者的利益,我想更具描述性。在TeX代码中,我想使用与Mathematica输出不同的符号。在TeX代码中,我想使用与Mathematica输出不同的符号。