如何使用Swift渲染Xetex

时间:2018-01-03 08:17:53

标签: swift bash cocoa latex xetex

我正在使用Swift 4.0处理Cocoa应用程序,我正在尝试使用xetex编译器渲染LaTeX。我的应用程序的主要内容是它应该能够使用不同的.ttf来渲染,这就是为什么我认为我需要xetex(甚至是luaLaTeX)。

这是我尝试的内容

  1. 我考虑使用基于云的LaTeX渲染器,因此我不必担心为每个系统安装Xetex但这并不是很好,因为我只能找到付费服务在Node.js中这样做,我认为我不能使用。

  2. 接下来,我假设用户已经按照指令在线下载xetex,我使用/ Library / TeX / texbin / xetex命令通过Process()进行系统调用,这几乎有效,但Xcode抱怨安全给我留言

  3. keyword

    我可以做任何已知的解决方法吗?如果我能以某种方式将xetex编译器与我的应用程序捆绑在一起,我认为这会很好,但我不知道如何做这样的事情。

    相关代码

    由Process()

    调用的compileLatex.sh的内容
    compileLatex.sh: line 3: /Library/TeX/texbin/xetex: Operation not permitted

    调用bash脚本的ViewController的内容。

    #!/bin/bash
    
    /Library/TeX/texbin/xetex "$1"
    open "$2"
    

    对于我应该使用的变通方法或最佳实践的任何建议表示赞赏。谢谢!

    更新:我刚刚了解了Cocoa项目的project.entitlements文件,因此通过将Sandbox模式切换为关闭,我能够执行系统调用并克服let file = "TemplateMODIFIED.tex" if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { var env = ProcessInfo.processInfo.environment var path = env["PATH"] as! String path = "/Library/TeX/texbin:" + path env["PATH"] = path let task = Process() task.launchPath = "/bin/bash" task.environment = env task.arguments = [dir.path + "/compileLatex.sh", dir.path + "/TemplateMODIFIED.tex", dir.path + "/TemplateMODIFIED.pdf"] task.launch() } 错误。所以我能够让它工作,但我仍然不满意这个解决方案,因为用户必须在使用此应用程序之前下载并安装xetex。

0 个答案:

没有答案