2014-05-06 105 views
3

我遵循這裏提供的說明(How to create a shortcut for user's build system in Sublime Text?)在xelatex編譯乳膠文件,最重要的是,我也希望它在編譯後自動打開pdf就像latexmk一樣,如何我可以做到嗎?該文件構建得很好,但我必須每次手動打開它。崇高的文本生成系統 - 如何自動打開pdf

+1

你在linux或windows上做這個嗎?你可以嘗試從python調用scritp(.bat或.sh)來創建它後打開pdf。 – jspurim

+1

這篇文章應該可以幫助你在Python和OS X中實現Python:https://stackoverflow.com/questions/434597/open-document-with-default-application-in-python –

+0

謝謝,我將有一個稍後再看,現在我有點忙。至於操作系統,我在windows – cgnx

回答

4

下面是對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初始化邏輯將需要被淘汰或調整。

+0

太棒了!它似乎工作得很好(它編譯並打開pdf),但我仍然在崇高的「輸出寫在xe.pdf(1頁)上的這個警告。 寫在xe.log上的腳本。 xelatex:無法識別的選項'-syntex = 1'「,因爲它不影響任何東西,但是那有什麼問題?我只是按照你的建議改變了開始。 – cgnx

+0

我的錯誤。它應該是'-synctex = 1'(帶有'c')。現在編輯帖子。 –

+1

現在我沒有問題了,謝謝! – cgnx