2013-04-14 2 views
6

Zastanawiam się, czy istnieje prosty sposób implementacji renderowania równań matematycznych w aplikacji na iOS. To nie musi być interaktywne. Wszystko, co powinno zrobić, to wyświetlać równanie w tradycyjny sposób, więc gdy użytkownik ma do czynienia ze złożonymi równaniami, ułatwia to obserwację.Renderowanie równań matematycznych w iOS

np. 2^(2/(6^(1/2))) daje: Example output

Wolfram Alpha robi to wraz z innymi aplikacjami, które widziałem. Nie musi też zajmować się zmiennymi.

+1

Spójrz na to: http://stackoverflow.com/questions/2907045/drawing-formulas-withquq-2d –

+0

@ Tom, SirKaydian chce łatwego sposobu, a rysowanie formuł z Quartz2D jest, jak Brad odpowiada , "nie jest to banalne przedsięwzięcie" .. – foundry

+1

@ RichardJ.RossIII, nie uważam tego za duplikat, twoje powiązane pytanie zadano w 2010 r. w 2011 r., przed pojawieniem się MathML na iOS5 – foundry

Odpowiedz

3

UIWebView może wyświetlać mathML od iOS5. Twój przykład:

<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> 

Spowoduje to wyświetlenie w UIWebView na iOS.

Istnieją bibliotek JavaScript, które można przekształcić na ciebie - np mathjax może zaakceptować ASCIIMath wejściowe takie jak ten przykład 2^(2/(sqrt (6))

Jest dobry omówienie tych kwestii tutaj Tradeoff between LaTex, MathML, and XHTMLMathML in an iOS app?

+0

Ale brakuje tu kroku - będziesz potrzebować teraz biblioteki do konwersji "prostego" równania z '2^(2/(6^(1/2))) na jego odpowiednik w języku MathML. –

+0

@ RichardJ.RossIII Zmieniłem tylko 6^(1/2) na sqrt (6) - pierwszy z nich wyrenderuje "poprawnie", wstawiając "0,5" do indeksu górnego 6. To jest ludzka decyzja autorska tak bardzo jak cokolwiek (i być może mathjax zrenderowałby to z symbolem sqrt, nie próbowałem) ... – foundry

1

W przypadku prostych wyrażeń najprościej jest najprawdopodobniej użyć HTML i wyświetlić wyrażenie w UIWebView. To zadziała szczególnie dobrze, jeśli część wyrazu innej treści może być wyświetlana przy użyciu HTML.

+1

Trudność polega na tym, że rozwiązania JavaScript mogą działać wolno na starszych urządzeniach, a interfejsy UIWeb generalnie nie są znane dla ich dobrych śladów pamięci. Te ograniczenia zostały zmniejszone w przypadku nowych urządzeń, ale nadal nie polecam szaleć z UIWebViews. –

+0

@ RichardJ.RossIII Zgadzam się. Z drugiej strony, korzystanie z widoku internetowego jest dużo łatwiejsze niż nurkowanie w Core Text i pisanie własnej biblioteki do renderingu matematycznego. JavaScript naprawdę nie musi być czynnikiem, chyba że zdecydujesz się użyć biblioteki JavaScript, aby pomóc w renderowaniu. – Caleb