我经常希望看到Mathematica的图形对象的内部表示不是在其中,FullForm
而是在可读性更强InputForm
的情况下,能够通过双击它来选择部分代码并轻松地将这段代码复制到新的输入Cell
中。但默认情况下InputForm
不允许这样做,因为InputForm
默认情况下显示为 a String
,而不是Mathematica的代码。有没有办法InputForm
显示为Mathematica的代码?
我还经常希望看到这样的缩短版本,InputForm
其中所有长的坐标列表都显示为第一个坐标,然后是用 包裹的跳过的坐标值的数量Skeleton
,所有的空Lists
都被删除,所有的数字也被缩短以显示不超过 6 位数字。最好仅将 6 位数字用于坐标,但用于颜色指令,例如Hue
仅显示 2 个有效数字。例如,
Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]},
Filling -> {1 -> {2}}] // ShortInputForm
应该给:
Graphics[GraphicsComplex[{{1.28228`*^-7, 1.28228*^-7}, <<1133>>},
{{{EdgeForm[], Directive[{Opacity[0.2], Hue[0.67, 0.6, 0.6]}],
GraphicsGroup[{Polygon[{{1133, <<578>>}}]}]},
{EdgeForm[], Directive[{Opacity[0.2], Hue[0.67, 0.6, 0.6]}],
GraphicsGroup[{Polygon[{{432, <<556>>}}]}]}}, {{Hue[0.67, 0.6,
0.6], Line[{1, <<431>>}]}, {Hue[0.91, 0.6, 0.6],
Line[{432, <<701>>}]}}}], {AspectRatio -> GoldenRatio^(-1),
Axes -> True, AxesOrigin -> {0, 0},
Method -> {"AxesInFront" -> True},
PlotRange -> {{0, 2*Pi}, {-1., 1}},
PlotRangeClipping -> True,
PlotRangePadding -> {Scaled[0.02], Scaled[0.02]}}]
(注意-0.9999998592131705
转换为-1.
,1.2822827157509358*^-7
转换为1.28228*^-7
并Hue[0.9060679774997897, 0.6, 0.6]
转换为Hue[0.91, 0.6, 0.6]
)。
通过这种方式,我希望得到InputForm
作为Mathematica代码的输出,并且还有一个ShortInputForm
函数可以提供该代码的缩短版本。有谁能够帮助我?
至于问题的第一部分,我找到了一种方法来实现我想要的:
Plot[{Sin[x], .5 Sin[2 x]}, {x, 0, 2 \[Pi]}, Filling -> {1 -> {2}}] //
InputForm // StandardForm