Как использовать математическую библиотеку iosMath в macOS? - PullRequest
0 голосов
/ 27 января 2019

Меня интересует возможность набирать LaTeX , чтобы получить форматированный математический вывод в моих проектах MacOS .Я пытался использовать знаменитую библиотеку iosMath CocoaPod, а также видел ее работу на их официальных примерах Repository на GitHub.Я использую Xcode 10, Swift 4.2 на MacOS Mojave (10.14).Используя руководство, данное в ответе на этот Вопрос , я смог успешно включить библиотеку и заставить ее визуализировать Математический текст , используя латекс в любых проектах iOS успешно.Но это дает большие конфликты и проблемы в macOS. После успешной установки CocoaPod в моем собственном проекте Я попытался следовать парадигме , приведенной в их официальном примере macOS , с несколькими пробами и ошибками, но все это привело к сбою.Я описываю все, что я пытался, следующим образом:

  • Как мы видим, в примерах проектов использовались XIB вместо раскадровок, но при испытании того же кода и механизмов на iOS вРаскадровки работают просто отлично .
  • В соответствии с инструкциями, приведенными в их примерах проектов, я пробовал использовать пользовательский вид как на iOS, так и на macOS (т.е. UIView и NSView соответственно) и прикрепил этот пользовательский видпользовательский класс MTMathUILabel в Identity Inspector в Раскадровка И затем, конечно, связал его с IBOutlet типа MTMathUILabel в моем файле кода,Он успешно работает в случае iOS, но не работает в macOS. Даже когда я использую MTMathUIView Пользовательский класс в Identity Inspector of Storyboard.
  • В соответствии с их файлом примера macOS Я набрал аналогичный код в моем ViewController.Swift, как указано ниже:

</p>

<code>var mathViewCode: MTMathUILabel = MTMathUILabel()
    @IBOutlet weak var mathViewIB: MTMathUILabel!
    override func viewDidLoad() {
        super.viewDidLoad()

        mathViewIB.latex = "\\lim_{x\\to\\infty}\\left(1 + \\frac{k}{x}\\right)^x = e^k"
        mathViewCode.latex = "\\int_{-\\infty}^{\\infty} \\! e^{-x^2} dx = \\sqrt{\\pi}"

        self.view.addSubview(mathViewCode)
    }
</code>

  • Когда из Код выше Я выполняю только программно с именем MTMathUILabel Variable Code, затем просто пустое окно открывается без какого-либо вывода в нем.Но когда я пытаюсь использовать переменную IBOutlet для печати латекса в Custom NSView (чей Custom Class в Инспекторе атрибутов был установлен в MTMathUIView , а не MTMathUILabel, потому что тогдапроисходит сбой) приложение снова открывается с пустым окном , но на этот раз со следующим предупреждением:

Не удалось установить (contentViewController) пользователяопределенное проверенное свойство в (NSWindow): - [NSView setLatex:]: нераспознанный селектор, отправленный экземпляру 0x60000330d7c0

  • Если в инспекторе удостоверений Storyboard для настраиваемого NSView я установил для настраиваемого класса значение MTMathUIView , тогда Интерфейсный Разработчик Не Сбой , но он также не работает, и если я установлю его на MTMathUILabel затем Интерфейсный Разработчик Сбои со следующей ошибкой:

IB Designables: Не удалось отобразить экземпляр MTMathUILabel: Агент бросилисключение.

  • Однако в вышеприведенном сценарии (где для настраиваемого класса настраиваемого NSView Storyboard в инспекторе атрибутов установлено значение MTMathUILabel) приложение успешно компилируется, но после сбоя выдает следующую ошибку во время выполнения:

Поток 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)

Как видите, я пытался следовать подходам, приведенным в ихофициальный пример проекта macOS , но в моем случае ничего не работает, хотя их пример проекта успешно компилируется и хорошо запускается в моем Xcode.

Пожалуйста, помогите мне с этим Библиотека iosMath , потому что я действительно хочу использовать его из-за его Прекрасного вывода и замечательные функции или, пожалуйста, предложите какую-нибудь другую библиотеку математики набрать LaTeX в моих приложениях Mac, которые действительно работают на macOS с Swift . Огромное спасибо Заранее !!

1 Ответ

0 голосов
/ 02 февраля 2019

Я столкнулся с той же проблемой.У меня нет решения, но есть возможность использовать iosMath с MacOs и swift.Я создал свой проект LatexPic и добавил его в исходный подфайл.Теперь вы можете использовать его в приложении MacOS в контроллере представления, например:

let latexlabel = MTMathUILabel()

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .white

    self.view.addSubview(latexlabel)
    latexlabel.backgroundColor = .white
    latexlabel.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
    latexlabel.latex = "\\frac{2}{3}"

    }

Podfile:

workspace 'iosMath.xcworkspace'
install! 'cocoapods', :deterministic_uuids => false

target 'iosMathExample' do
  project 'iosMath.xcodeproj'
  pod 'iosMath', :path => './'
end

target 'iosMathTests' do
  project 'iosMath.xcodeproj'
  pod 'iosMath', :path => './'
end

target 'MacOSMath' do
  project 'MacOSMath.xcodeproj'
  pod 'iosMath', :path => './'
end

target 'LatexPic' do
    use_frameworks!
    project 'LatexPic.xcodeproj'
    pod 'iosMath', :path => './'
end
...