SublimeText2 LaTeXTools无法生成pdf

SublimeText2 LaTeXTools无法生成pdf

我在 Ubuntu 14.04LTS 和 TeXLive 2015 上使用带有 LaTeXTools 的 SublimeText2。

当我按下 ctrl+b 时,它会生成.auxdfb_latexmk文件,但没有 pdf。我的问题在之前的帖子中描述过这里。建议的解决方案对我来说不起作用(将构建器更改为简单)。

我还尝试删除.tex文件之外的所有内容并重新编译,结果相同。我尝试了工具-->构建系统-->LaTeX,但得到的结果相同。我尝试了 LaTeXTools 建议中针对特定平台的建议(即删除空格= 'E和引用$pdflatex命令);但它们似乎不起作用。

问题不在于特定文件。当我对我之前编写的 TeX 文件运行 ctrl+b 时,它会显示 pdf;但如果我尝试更改文件,它会显示相同的 pdf(即 pdf 不会更改以反映我在文件中所做的更改)。我假设它使用已编译的 pdf 并且不会编译新的 pdf。

从命令行运行latexmk test.tex -pdf没有问题。

以下是 ST2 控制台的片段:

    <class 'traditionalBuilder.TraditionalBuilder'>
    Welcome to thread Thread-4
    2
    [u'/usr/local/texlive/2015/bin/x86_64-linux/latexmk', u'-cd', u'-e', u"$pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %S %O'", u'-f', u'-pdf', u'test.tex']
    Finished normally
    12
    Exception in thread Thread-4:
    Traceback (most recent call last):
      File ".\threading.py", line 532, in __bootstrap_inner
      File "./makePDF.py", line 164, in run
    IOError: [Errno 2] No such file or directory: u'/home/.../test.log'

编辑响应 ig0774 的建议,以下是 latexmk 的输出

`Stdout:

Latexmk: This is Latexmk, John Collins, 5 February 2015, version: 4.43a.
Latexmk: Changing directory to './'
Rule 'pdflatex': Rules & subrules not known to be previously run:
   pdflatex
Rule 'pdflatex': The following rules & subrules became out-of-date:
  'pdflatex'
------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'q/pdflatex -interaction=nonstopmode -synctex=1  -recorder  "test.tex"/'
------------
Latexmk: applying rule 'pdflatex'...
sh: 1: q/pdflatex: not found
Failure to make 'test.pdf'
Collected error summary (may duplicate other messages):
  pdflatex: (Pdf)LaTeX failed to generate the expected log file 'test.log'
Latexmk: Did not finish processing file 'test.tex':
   (Pdf)LaTeX failed to generate the expected log file 'test.log'
Latexmk: Undoing directory change
Latexmk: Errors, in force_mode: so I tried finishing targets`

改回"command" : ["/usr/local/texlive/2015/bin/x86_64-linux/latexmk", "-cd", "-e", "$pdflatex = '%E -interaction=nonstopmode -synctex=1 %S %O'", "-f", "-pdf"]我得到以下标准输出:

`Stdout:

Latexmk: This is Latexmk, John Collins, 5 February 2015, version: 4.43a.
Latexmk: Changing directory to './'
Rule 'pdflatex': File changes, etc:
   Non-existent destination files:
      'test.pdf'
------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'pdflatex -interaction=nonstopmode -synctex=1 "test.tex"  -recorder '
------------
Latexmk: applying rule 'pdflatex'...
sh: 1: pdflatex: not found
Failure to make 'test.pdf'
Collected error summary (may duplicate other messages):
  pdflatex: (Pdf)LaTeX failed to generate the expected log file 'test.log'
Latexmk: Did not finish processing file 'test.tex':
   (Pdf)LaTeX failed to generate the expected log file 'test.log'
Latexmk: Undoing directory change
Latexmk: Errors, in force_mode: so I tried finishing targets`

答案1

这是一个评论而不是问题,但它太长了,无法放入评论栏。

让我们尝试获取通过 Sublime Text 运行时的输出,latexmk因为它似乎与latexmk从控制台运行不同。为此,我们需要修改 的本地副本makePDF.py

要找到此文件:

  • 在 Sublime Text 中,运行偏好设置:浏览包命令
  • 找到 LaTeXTools 文件夹
  • 在 Sublime Text 中打开makePDF.py(或您选择的编辑器)

要编辑此文件:

  • 转到第 164 行。应该是data = open(self.caller.tex_base + ".log", 'rb').read()
  • 将第 164 行替换为以下代码块:

    content = ['']
    if out is not None:
        content.extend(['Stdout:', '', out.decode('utf-8')])
    if err is not None:
        content.extend(['Stderr:', '', err.decode('utf-8')])
    self.caller.output(content)
    
    try:
        data = open(self.caller.tex_base + ".log", 'rb').read()
    except IOError:
        self.caller.finish(False)
        return
    

注意::所有间距都应为制表符,并且代码应缩进以与注释对齐。

完成此操作后,重新运行编译。它将为您提供输出latexmk。将其发布在这里,我们也许能够更好地诊断问题。


因此,似乎$PATH控制台上的 和$PATHSublime Text 中可见的 不匹配,因此pdflatexSublime Text 路径中不可见。(我假设,由于它是从控制台运行的,所以它pdflatex实际上安装在您的机器上,并且您没有触碰过从中texpath移除的设置)。所以:$PATH

  • 从控制台运行which pdflatex
  • 将包含的文件夹添加pdflatextexpath平台设置位中的设置中LaTeXTools.sublime-settings

尝试重新编译并看看会发生什么。

相关内容