Известные проблемы с копированием кода из Mathematica на другие платформы?

Я только заметил, что если у вас это в MMA (8.0.1/win7-64):

enter image description here

и вы скопируете его в 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, но и вообще), о которых мы должны знать?

Что вызывает это, можно ли это зафиксировать на нашей стороне, а если нет, то что лучше всего работает?

Ответ 1

Копирование кода Mathematica в группу Usenet Mathematica иногда рассеивает всевозможные странные символы в вашем коде (вы никогда не знали, когда это произойдет с вами). Обходной путь был бы следующим:

  • Cell > Convert To > InputForm, а затем сделайте копию

  • 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. Многие общие символы MMA, такие как символ правила, кодируются таким образом, если ранее не были преобразованы в ASCII на InputForm cs. Чтобы декодировать код, нужно знать исходный набор символов, потому что QP дает только шестнадцатеричную позицию в наборе символов. В случае MMA это чаще всего будет Math1.

Ответ 2

Копирование примера на адрес электронной почты ТАКЖЕ завершается неудачно, и что - если оно переносится на другие примеры - кажется очень плохо для Mathgroup, SO и любого другого текстового дискуссионного форума. Скопировать как > Обычный текст и Копировать как > Форма ввода работает нормально, но я делал это легко, тысячи раз, и никогда не знал, что это может потерпеть неудачу таким образом, БЕЗ странных шестнадцатеричных символов.

Ответ 3

Это хороший пример того, как MMA настроен для решения математической двусмысленности, введенной при наборе текста. (+1)

Причина, по которой это не удается, заключается в том, что вы еще не оценили исходное выражение. Когда вы оцениваете, Mathematica правильно разбирает "/" между двумя кусками, и выход можно скопировать и вставить (правильно).

Возможно, WRI должен сделать так, чтобы "Копировать" заставляло механизм синтаксического анализа происходить до того, как клип-портировать выражение, т.е. какую-то "мягкую" оценку. Мысли?