强制 LatexTools 仅在完成编译后才输出 pdf

强制 LatexTools 仅在完成编译后才输出 pdf

最近一次更新后,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。

相关内容