我在 Ubuntu 14.04LTS 和 TeXLive 2015 上使用带有 LaTeXTools 的 SublimeText2。
当我按下 ctrl+b 时,它会生成.aux
和dfb_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
控制台上的 和$PATH
Sublime Text 中可见的 不匹配,因此pdflatex
Sublime Text 路径中不可见。(我假设,由于它是从控制台运行的,所以它pdflatex
实际上安装在您的机器上,并且您没有触碰过从中texpath
移除的设置)。所以:$PATH
- 从控制台运行
which pdflatex
- 将包含的文件夹添加
pdflatex
到texpath
平台设置位中的设置中LaTeXTools.sublime-settings
。
尝试重新编译并看看会发生什么。