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[" ... "]、投稿がクリーンアップされます。

興味深いことに、これらのユースネットの投稿で見られるエンコーディングはQuoted Printableと呼ばれます。標準の 7 ビット ASCII セットとは異なる文字エンコーディングを ASCII に変換するために使用されます。Rule シンボルなどの多くの一般的な MMA シンボルは、以前にInputFormcs によって ASCII に変換されていない場合、この方法でエンコードされます。コードをデコードするには、元の文字セットを知る必要があります。これは、QP が文字セット内の 16 進数の位置のみを生成するためです。MMA の場合、最も一般的なのは Math1 です。

于 2011-04-15T13:09:35.260 に答える
2

例を電子メールにコピーすることも失敗し、それが他の例に引き継がれる場合、Mathgroup、SO、およびその他のテキストベースのディスカッション フォーラムにとって非常に悪いように思えます。Copy As>Plain Text と Copy As>Input Form はどちらも適切に機能しますが、私は簡単な方法で何千回も実行してきましたが、奇妙な 16 進文字がなければ、このように失敗する可能性があることを知りませんでした。

于 2011-04-16T21:40:29.537 に答える
0

これは、組版で導入された数学的なあいまいさを解決するために MMA がどのように設定されているかを示す良い例です。(+1)

失敗する理由は、元の式をまだ評価していないためです。評価すると、Mathematica は2つのチャンクの間の「/」を正しく解析し、出力を(正しく)コピーして貼り付けることができます。

おそらく、WRI は、'Copy' が式をクリップボードする前に解析メカニズムを強制的に実行するようにする必要があります。つまり、ある種の 'ソフト' 評価です。考え?

于 2011-04-18T10:57:44.330 に答える