将代码从Mathematica复制到其他平台的已知问题?

Sjo*_*ies 10 wolfram-mathematica mathematica-frontend

我刚注意到如果你在MMA(8.0.1/win7-64)中有这个:

在此输入图像描述

然后你把它复制到SO(只是ctrl-c ctrl-v),你得到这个:

(maxY - minY)/stepy/(maxX - minX)/stepx  
Run Code Online (Sandbox Code Playgroud)

这在数学上是等价的.它应该是这样的:

((maxY - minY)/stepy)/((maxX - minX)/stepx)
Run Code Online (Sandbox Code Playgroud)

或者这个(InputForm以上):

((maxY - minY)*stepx)/((maxX - minX)*stepy)
Run Code Online (Sandbox Code Playgroud)

它不是由StackOverflow的内部引起的,因为与NotePad的副本相同.

是否有更多这样的问题(特别是在使用SO时,一般情况下)我们应该注意什么?

是什么导致这种情况,可以在我们这边修好,如果没有,最好的解决办法是什么?

Sjo*_*ies 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 -> ""}]
Run Code Online (Sandbox Code Playgroud)

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

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