如何使用Swift渲染Xetex

我正在使用Swift 4.0开发Cocoa应用程序,并且我正在尝试使用xetex编译器呈现LaTeX。 我的应用程序的主要画面是它应该能够使用不同的.ttf来渲染,所以我相信我需要xetex(甚至是luaLaTeX)。

这是我的尝试

  • 我考虑使用基于云的LaTeX渲染器,这样我就不必担心为每个系统安装Xetex,但是这并没有很好地实现,因为我只能在Node.js中找到这样做的付费服务,我想我可以使用。

  • 接下来,我假设用户遵循了一条指令,在线下载xetex,并使用/ Library / TeX / texbin / xetex命令通过Process()调用了系统调用,这几乎可以工作,但Xcode对安全性给我的信息抱怨

  • compileLatex.sh: line 3: /Library/TeX/texbin/xetex: Operation not permitted

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

    相关代码

    由Process()调用的compileLatex.sh的内容

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

    调用bash脚本的ViewController的内容。

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

    任何建议或者我应该使用的解决方法或最佳实践表示赞赏。 谢谢!

    更新:我刚刚了解了Cocoa项目的project.entitlements文件,因此通过将Sandbox模式切换为关闭状态,我可以执行系统调用并克服Operation not permitted错误。 所以我能够使它工作,但我仍然不完全满意这个解决方案,因为用户必须在使用这个应用程序之前下载并安装xetex。

    链接地址: http://www.djcxy.com/p/33447.html

    上一篇: How Can I Render Xetex Using Swift

    下一篇: Cleanthesis TeX Theme wont create pdf