如何在macOS中使用iosMath数学库?

时间:2019-01-27 07:01:24

标签: swift macos cocoa latex nsview

我有兴趣能够在我的 macOS项目中键入 LaTeX 以获取格式化的数学输出。我尝试使用著名的iosMath CocoaPod库,并从GitHub上的官方示例Repository中看到了它的工作原理。我在macOS Mojave(10.14)上使用Xcode 10,Swift 4.2。使用此Question的回复中给出的指导,我能够成功地合并该库,并使其在所有iOS项目中使用乳胶成功渲染Mathematical Text。但是它给macOS带来了巨大的冲突和问题。 在我自己的项目中成功安装CocoaPod后,我尝试遵循官方macOS Example中给出的范例进行了多次试验和错误,但均导致失败。 我在描述我尝试做的事情如下:

  • 我们可以看到,示例项目使用了XIB而不是Storyboard,但是在Storyboard中尝试 iOS上相同的代码和机制时,效果很好 。 / li>
  • 按照他们的示例项目中的指导,我尝试了在iOS和macOS上使用“自定义视图”(即分别为UIView和NSView),并将该自定义视图附加到中的自定义类 MTMathUILabel > 中的> Identity Inspector ,然后将其链接到我的代码文件中类型为MTMathUILabel的 IBOutlet 。在iOS上它可以成功运行,但在macOS上却无法运行,即使我在Storyboard的身份检查器中使用 MTMathUIView 自定义类。
  • 根据他们的macOS example File,我在ViewController.Swift中输入了相似代码,如下所示:

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

  • 上面的代码中,我仅以编程方式执行名为MTMathUILabel Variable Code的 ,然后仅打开一个空白窗口,但其中没有任何输出。但是,当我尝试使用IBOutlet变量在 自定义NSView 中打印乳胶(其“属性”检查器中的“自定义类”已设置为MTMathUIView not MTMathUILabel,因为它随后崩溃了),该应用程序再次打开并显示 空白窗口 ,但这次出现以下警告:
  

无法设置(contentViewController)用户定义的受检查属性   在(NSWindow)上:-[NSView setLatex:]:无法识别的选择器发送到   实例0x60000330d7c0

  • 如果在Storyboard的自定义NSView的身份检查器中,我将自定义类设置为 MTMathUIView ,则界面生成器不会崩溃,但不会崩溃也不起作用,如果我将其设置为 MTMathUILabel ,则界面生成器 崩溃 并显示以下错误:< / li>
  

IB Designables:无法呈现MTMathUILabel的实例:代理   引发异常。

  • 但是,在上述情况下(其中Storyboard的Attributes Inspector中的Storyboard的Custom NSView的Custom类已设置为MTMathUILabel),该应用程序可以成功编译,但崩溃后会引发以下运行时错误:
  

线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

如您所见,我已经尝试遵循其官方macOS Sample Project中给出的方法,但是即使他们的 Sample Project成功编译并运行 < / strong>在我的Xcode中。

请使用此 iosMath库 帮助我,因为我真的想使用它,因为它有Beautiful Output功能强大的功能,或者建议其他数学库在真正运行于Swift的macOS上的Mac应用中键入 LaTeX 非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 我没有解决方案,但是可以将iosMath与MacO和  迅速。 我创建了Project LatexPic,并将其添加到原始podfile中。现在,您可以在macOS App的视图控制器中使用它,例如:

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