2013-04-14 3 views
6

Мне было интересно, есть ли простой способ реализовать рендеринг математических уравнений в приложении iOS. Это не должно быть интерактивным. Все, что он должен делать, это отобразить уравнение традиционными способами, поэтому, когда пользователь имеет дело со сложными уравнениями, ему становится легче следовать.Render Math Equations in iOS

ex. 2^(2/(6^(1/2))) дает: Example output

Wolfram Alpha делает это вместе с другими приложениями, которые я видел. Он также не должен иметь дело с переменными.

+1

Посмотрите на это: http://stackoverflow.com/questions/2907045/drawing-formulas-with-quartz-2d –

+0

@Tom, SirKaydian хочет _easy_ образом, а формулы рисования с Quartz2D - это, как говорит Брэд , «не тривиальное начинание». – foundry

+1

@ RichardJ.RossIII, я бы не рассматривал это как дубликат, связанный с вами вопрос был задан в 2010 году, а в 2011 году, до появления MathML на iOS5 – foundry

ответ

3

UIWebView может отображать mathML с iOS5. Ваш пример:

<math title="2^(2/(sqrt(6))" xmlns="http://www.w3.org/1998/Math/MathML"> 
    <mstyle mathcolor="blue" fontfamily="sanserif" displaystyle="true"> 
    <msup> 
     <mn>2</mn> 
     <mrow> 
     <mfrac> 
      <mn>2</mn> 
      <mrow> 
      <msqrt> 
       <mrow> 
       <mn>6</mn> 
       </mrow> 
      </msqrt> 
      </mrow> 
     </mfrac> 
     </mrow> 
    </msup> 
    </mstyle> 
</math> 

Это будет отображаться в UIWebView на iOS.

Есть JavaScript библиотеки, которые можно преобразовать для вас - например mathjax могут принимать ASCIIMath ввод, например как в этом примере 2^(2/(SQRT (6))

Существует хорошее обсуждение этих вопросов здесь Tradeoff between LaTex, MathML, and XHTMLMathML in an iOS app?

+0

Но здесь не хватает шага - вам понадобится библиотека для преобразования «простого» уравнения из '2^(2/(6^(1/2)))' в его эквивалент MathML. –

+0

@ RichardJ.RossIII Я только изменил 6^(1/2) на sqrt (6) - первый сделает «правильно», положив «0.5» на верхний индекс 6. Это человеческое авторское решение, как и все (и, возможно, mathjax сделает это с символом sqrt в любом случае, я не пытался) ... – foundry

1

Для простых выражений наиболее простым способом является использование HTML и отображение выражения в UIWebView. Это будет работать особенно хорошо, если часть выражения другого содержимого также может отображаться с использованием HTML.

+1

Сложность этого заключается в том, что на старых устройствах могут быть медленные решения на JavaScript, а UIWebViews обычно неизвестны за их хорошие следы памяти. Эти ограничения сменились новыми устройствами, но я по-прежнему не рекомендую сходить с ума с помощью UIWebViews. –

+0

@ RichardJ.RossIII Согласен. С другой стороны, использование веб-представления намного проще, чем погружение в Core Text и создание собственной библиотеки для обработки математики. Javascript действительно не должен быть фактором, если вы не захотите использовать библиотеку Javascript, чтобы помочь в рендеринге. – Caleb