Как визуализировать формулу в WPF или WinForms

Мне нужно иметь способ нарисовать математическую формулу в Windows Forms или WPF. Некоторый контроль «FormulaTextBox» будет именно тем, что мне нужно.

Я не спрашиваю о полной реализации LaTEX, но, по крайней мере, что-то помимо возможностей RichTextBox, с разделительными линиями, квадратными корнями и т. Д.

PS C # настолько силен. Метод рисования формул с C # (.NET) должен быть с нами!

Были найдены решения:

  1. Это решение использует библиотеку MathTex (MimeTex в прошлом) для генерации gif-файлов из строк типа TeX.
    Минусы :

    • Нет версии Windows, поддерживаемой и протестированной в библиотеке. В этой статье рассматриваются утечки памяти и другие проблемы, которые могут возникнуть из-за этого. Нужно настроить и поддерживать версию Windows самостоятельно.

    • Общий подход имеет неестественный дизайн для winforms или WPF. Хотя он может поместиться в Интернете, он выглядит далеко не столь оптимальным для winforms.

    • От примера статьи многое можно сделать до реального рабочего контроля (всегда есть что-то делать, но я хотел бы получить более готовое решение)

Вот список вариантов, вытащил из нескольких веб-страниц в Интернете, а также несколько похожих вопросов по SO

  • WPF-Math , библиотека WPF для отображения разметки TeX, связанной с математикой.
  • gNumerator – это элемент управления WinForms, который отображает MathML . Это родной C #, но, похоже, довольно старый.
  • Math Expressions , коммерческий элемент управления WinForms для отображения и редактирования математических уравнений. Примечание.
  • Существует неофициальный порт JMathTex для управления C # WPF
  • Версия Windows для редактора LaTex Lyx использует встроенную библиотеку MikTex, на которую вы можете взглянуть. Я где-то упоминал, что пакет tex4ht отображает математические уравнения на изображения
  • MimeTex / MathTex , как вы уже упоминали
  • Вы также можете использовать элемент управления WebBrowser и просто локально включать одну из многих библиотек javascript для рендеринга LaTex.
  • Вы можете заложить работу в Microsoft Word ( пример – требуется, чтобы пользователи установили MS Word! )

Возможно, вы можете использовать API Wolfram Alpha для извлечения изображений.

Если вам нужно что-то помимо возможностей RichTextBox для рендеринга pie, divisions и корней sqr и т. Д., Вы можете просто использовать WebBrowserControl (s) в качестве текстового поля. Затем, чтобы отобразить формулу, вы можете использовать методы, показанные на этой веб-странице, сохранить ее на рабочем столе и открыть html-файл:

http://www.wjagray.co.uk/maths/ASCIIMathTutorial.html

Очевидно, вам понадобится специальный синтаксис (или специальные кнопки калькулятора), чтобы ввести формулу, и я угадываю, глядя на файл customisations.js, управляющий этой веб-страницей, и вы тоже можете составить свой собственный список операторов и функций.

Вот что я сделал бы, если ни одно из специальных решений .NET не будет работать для вас:

Это немного взломанный, но он будет работать, и ваши пользователи не будут знать разницу. Загрузите библиотеку Mathjax . Когда ваш пользователь входит в уравнение, вы можете преобразовать уравнение в LaTex или MathML. Затем вы берете LaTex или MathML и генерируете HTML-файл, который ссылается на Mathjax, и отображает файл в вашем маленьком окне WebBrowser (действительный как для WinForms, так и для WPF). Это не должно требовать подключения к Интернету.

Как я уже сказал, ваши пользователи не будут более мудрыми.

Давайте будем гением компьютера.