我正在使用Swift 4.0处理Cocoa应用程序,我正在尝试使用xetex编译器渲染LaTeX。我的应用程序的主要内容是它应该能够使用不同的.ttf来渲染,这就是为什么我认为我需要xetex(甚至是luaLaTeX)。
我考虑使用基于云的LaTeX渲染器,因此我不必担心为每个系统安装Xetex但这并不是很好,因为我只能找到付费服务在Node.js中这样做,我认为我不能使用。
接下来,我假设用户已经按照指令在线下载xetex,我使用/ Library / TeX / texbin / xetex命令通过Process()进行系统调用,这几乎有效,但Xcode抱怨安全给我留言
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。