Известные проблемы с копированием кода из Mathematica на другие платформы? - PullRequest
10 голосов
/ 15 апреля 2011

Я только что заметил, что если у вас это в 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, но также и в целом), о которых нам следует знать?

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

Ответы [ 3 ]

8 голосов
/ 15 апреля 2011

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

2 голосов
/ 17 апреля 2011

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

0 голосов
/ 18 апреля 2011

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

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

Возможно, WRI должен сделать так, чтобы «Копирование» заставляло механизм синтаксического анализа выполняться до обрезания выражения выражения, т. Е. Какой-то «мягкой» оценки. Мысли? * * 1005

...