我刚注意到如果你在MMA(8.0.1 / win7-64)中有这个:
然后你把它复制到SO(只是ctrl-c ctrl-v),你得到这个:
(maxY - minY)/stepy/(maxX - minX)/stepx
在数学上不等同。它应该是这样的:
((maxY - minY)/stepy)/((maxX - minX)/stepx)
或者这个(上面的InputForm
):
((maxY - minY)*stepx)/((maxX - minX)*stepy)
这不是由StackOverflow的内部引起的,因为与NotePad的副本相同。
我们应该注意更多这样的问题(特别是在使用SO时,一般情况下)吗?
导致这种情况的原因是什么,可以在我们这边修复,如果没有,那么最好的解决办法是什么?
答案 0 :(得分:8)
将Mathematica代码复制到Usenet Mathematica组有时会在您的代码中散布各种奇怪的字符(您永远不知道它何时会发生在您身上)。解决方法是:
Cell > Convert To > InputForm
然后复制
Edit > Copy As > Plain Text
或Input Text
后者在这种情况下不起作用。它仍然是一个数学上不正确的转换,你会得到。前者确实有效。
<强>更新强>
如果您在Mathematica新闻组中的帖子中遇到奇怪的字符(例如,如here中所述),则以下函数将对其进行解码(在我测试的所有情况下)。
translateQuotedPrintable[str_String] :=
StringReplace[str, {"=" ~~ c1:HexadecimalCharacter~~c2:HexadecimalCharacter :>
FromCharacterCode[FromDigits[c1 <> c2, 16], "Math1"],"=" ~~ EndOfLine -> ""}]
只需将整个帖子粘贴到translateQuotedPrintable[" ... "]
中的引号之间,帖子就会被清理掉。
对于好奇:您在这些usenet帖子中看到的编码称为Quoted Printable。它用于将不同于标准7位ASCII设置的字符编码转换为ASCII。许多常见的MMA符号(如规则符号)如果之前未通过InputForm
cs转换为ASCII,则以这种方式进行编码。要解码代码,需要知道原始字符集,因为QP只产生字符集中的十六进制位置。在MMA的情况下,这通常是Math1。
答案 1 :(得分:2)
将示例复制到电子邮件也失败了,而且 - 如果它延续到其他示例 - 对于Mathgroup,SO和任何其他基于文本的讨论论坛来说似乎非常糟糕。复制为&gt;纯文本和复制为&gt;输入表格都正常工作,但我已经成功地完成了数千次,并且从未知道它会以这种方式失败,没有奇怪的十六进制字符。
答案 2 :(得分:0)
这是如何设置MMA以解决排版中引入的数学模糊性的一个很好的例子。 (1)
它失败的原因是你还没有评估原始表达式。评估时,Mathematica会正确解析两个块之间的“/”,并且可以正确地复制和粘贴输出。
也许WRI应该这样做,以便'复制'强制解析机制在剪辑表达之前发生 - 即某种“软”评估。想法?