Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 在多个级别格式化TeXForm_Wolfram Mathematica_Design Patterns - Fatal编程技术网

Wolfram mathematica 在多个级别格式化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)

在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)
然而,我想要的输出是

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输出不同的符号。