Mathematica:如何防止评估In [-1]?

时间:2011-02-17 09:18:22

标签: wolfram-mathematica

当我尝试使用In[-1]在Wolfram Mathematica 5.2中获取最后一个输入表达式时,我得到了评估输出:

In[1]:= On[In]
2 + 2
In[-1]

Out[2]= 4

During evaluation of In[1]:= In::trace: In[-1] --> In[$Line-1]. >>

During evaluation of In[1]:= In::trace: In[$Line-1] --> In[2]. >>

During evaluation of In[1]:= In::trace: In[2] --> 2+2. >>

Out[3]= 4

如何以未评估的形式获取输入表达式?

2 个答案:

答案 0 :(得分:4)

您可以尝试InString[]

In[1]:= 2 + 2
Out[1]= 4

In[2]:= InString[-1]
Out[2]= "\\(2 + 2\\)"

答案 1 :(得分:4)

这是另一种方式:

In[1]:= 2 + 2
With[{line = $Line - 1}, HoldForm[In[line]] /. DownValues[In]]

Out[1]= 4

Out[2]= 2+2

修改

此方法无法与Unevaluated

一起使用
In[1]:= Unevaluated[2 + 2]
With[{line = $Line - 1}, HoldForm[In[line]]] /. (DownValues[In])
Out[1]= Unevaluated[2 + 2]
Out[2]= 2 + 2

我打开了separate question on this