最近一次更新后,LatexTools 现在支持 Linux 下的 Okular。这最终使它对我的写作工具设置有用。
LatexTools 为 pdf 文件提供了 pdf 查看器在生成过程中,但这对于我的工作流程来说仍然存在问题。
Okular 会在文件内容发生变化时更新它们。因此,在文件完全编译之前,它无法显示任何内容。实际上,您无法在后台编译文档,同时在查看器中阅读文档。
是否有任何简单的解决方案可以强制 LatexTools 仅“发布”完整的 pdf 文件而不是更改用于预览的确切文件?
答案1
我找到了一个令人满意的解决方案。这个想法的要点是使用 latexMk 编译具有临时作业名称(如“temp”)的 tex 文件。完成后,复制或重命名生成的temp.pdf
文件temp.synctex.gz
以匹配原始文档名称。
LatexTools 通过自定义构建设置LaTeXTools.sublime-settings
(首选项->包设置->LaTeXTools->设置-用户)来实现此功能。
首先,改变原来的设置
"builder": "traditional"
到
"builder": "script"
然后,在 下"builder_settings"
找到您的操作系统。相应的条目不应包含任何内容。对于 Linux,请将
"linux" : {
// See README or third-party documentation
}
到
"linux" : {
"script_commands": [
"latexmk -pdf -pdflatex=\"pdflatex -interaction=nonstopmode -shell-escape\" -f -jobname=temp $file_name",
"cp temp.pdf $file_base_name.pdf",
"cp temp.log $file_base_name.log",
"cp temp.synctex.gz $file_base_name.synctex.gz"
]
}
请注意,必须安装 latexmk 并可从 bash 访问才能使其正常工作。根据您的文档,latexmk 的必要参数可能有所不同。例如,您可能-shell-escape
出于安全原因想要删除。
该解决方案的唯一缺点是 LatexTools 的清理功能(Ctrl-l、backspace)不会删除临时文件。
答案2
处理此问题最简单的方法是关闭 Okular 的自动重新加载,可以通过以下方式完成设置 ->
配置 Okular并取消选中文件更改时重新加载文档. 如果取消选中该设置,LaTeXTools 将构建您的文档,并且仅在编译完成后更新 Okular。