10

我刚刚注意到,如果你在 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 的内部结构引起的,因为复制到记事本也会发生同样的情况。

是否还有更多我们应该注意的问题(尤其是在使用 SO 时,但通常也是如此)?

是什么原因造成的,可以在我们这边解决吗?如果没有,最好的解决方法是什么?

4

3 回答 3

8

将 Mathematica 代码复制到 Usenet Mathematica 组有时会在您的代码中散布各种奇怪的字符(您永远不知道它何时会发生在您身上)。解决方法是:

  1. Cell > Convert To > InputForm然后做一个副本

  2. Edit > Copy As > Plain Text或者Input Text

后者在这种情况下不起作用。您将得到的仍然是数学上不正确的转换。前者似乎确实有效。

更新
如果您在 Mathematica 新闻组的帖子中遇到奇怪的字符(例如,在这里),以下函数将对其进行解码(在我测试的所有情况下)。

translateQuotedPrintable[str_String] := 
  StringReplace[str, {"=" ~~ c1:HexadecimalCharacter~~c2:HexadecimalCharacter :> 
    FromCharacterCode[FromDigits[c1 <> c2, 16], "Math1"],"=" ~~ EndOfLine -> ""}]

只需将整个帖子粘贴在引号之间translateQuotedPrintable[" ... "],帖子就会被清理干净。

出于好奇:您可能在这些 usenet 帖子中看到的编码称为Quoted Printable。它用于将不同于标准 7 位 ASCII 集的字符编码转换为 ASCII。InputForm许多常见的 MMA 符号,如 Rule 符号,如果之前没有通过cs转换为 ASCII,则以这种方式编码。要解码代码,需要知道原始字符集,因为 QP 只产生字符集中的十六进制位置。在 MMA 的情况下,这通常是 Math1。

于 2011-04-15T13:09:35.260 回答
2

将示例复制到电子邮件 ALSO 也失败了,而且——如果它延续到其他示例——对于 Mathgroup、SO 和任何其他基于文本的讨论论坛来说似乎非常糟糕。Copy As>Plain Text 和 Copy As>Input Form 都可以正常工作,但我已经用简单的方法做了数千次,从来不知道它会以这种方式失败,没有奇怪的十六进制字符。

于 2011-04-16T21:40:29.537 回答
0

这是如何设置 MMA 以解决排版中引入的数学歧义的一个很好的例子。(+1)

它失败的原因是您尚未评估原始表达式。当您进行评估时,Mathematica 会正确解析两个块之间的“/”,并且可以(正确地)复制和粘贴输出。

也许世界资源研究所应该这样做,以便“复制”强制解析机制在剪贴板表达式之前发生——即某种“软”评估。想法?

于 2011-04-18T10:57:44.330 回答