【问题标题】:Sublime text build system - how to auto open pdfsSublime 文本构建系统 - 如何自动打开 pdf
【发布时间】:2014-05-06 21:57:56
【问题描述】:

我按照此处提供的说明(How to create a shortcut for user's build system in Sublime Text?)在 xelatex 中编译乳胶文档,除此之外,我还希望它像使用 latexmk 一样在编译后自动打开 pdf,我该如何实现呢?该文档构建得很好,但我每次都必须手动打开它。

【问题讨论】:

  • 你是在linux还是windows下做这个?您可以尝试从 python 调用脚本(.bat 或 .sh)在创建 pdf 后打开它。
  • 这篇文章应该可以帮助您在 Python 中为 Windows 和 OS X 实现这一点:stackoverflow.com/questions/434597/…
  • 谢谢,我稍后看看,现在有点忙。至于操作系统,我在 Windows 上

标签: latex sublimetext3 xelatex


【解决方案1】:

这是CompileWithXelatexCommand 实现的扩展,它可以在我的默认 PDF 查看器中成功打开 PDF。

import sublime, sublime_plugin
import os
import time

class CompileWithXelatexCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if '/usr/texbin' not in os.environ['PATH']:
            os.environ['PATH'] += ':/usr/texbin'

        base_fname = self.view.file_name()[:-4]
        pdf_fname = base_fname + ".pdf"
        self.view.window().run_command('exec',{'cmd': ['xelatex','-synctex=1','-interaction=nonstopmode',base_fname]})

        tries = 5
        seconds_to_wait = 1
        while tries > 0:
            if os.path.isfile(pdf_fname):
                break
            time.sleep(seconds_to_wait)
            seconds_to_wait *= 2
            tries -= 1

        os.system("open " + pdf_fname)

需要轮询循环;否则,打开调用可能会在 PDF 生成之前发生。通过run_command 同步执行一系列命令可能有更简洁的方法。

我现在无法访问 Windows,但是从 this post 您可能只需将 "open " 更改为 "start "。 PATH 初始化逻辑要么需要被消除,要么需要调整。

【讨论】:

  • 太棒了!它似乎工作得很好(它编译并打开pdf),但我仍然在崇高的“输出写在xe.pdf(1页)上得到这个警告。写在xe.log上的成绩单。xelatex:无法识别的选项`-syntex = 1 '" 所以因为它不会影响任何东西,但这有什么问题?我只是按照您的建议更改了 open 开始。
  • 我的错误。它应该是-synctex=1(带有'c')。立即编辑帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多