标签: latexmk

当出现错误时,不要让我手动中止LaTeX编译

正如这里所建议的latexmk那样,只要源更改,就可以方便地连续编译文档.但是,当您处理文档时,通常会出现错误,然后latex在继续之前会发生恐慌并等待用户输入.这可能会非常烦人,特别是最近我latex直接从一个以太网板文件中编译的东西,这会在你输入时不断保存.

如果它无法编译,是否有设置latexlatexmk使其只是中止错误消息?或者,如果有必要,我如何设置某种Expect脚本来自动解除LaTeX的投诉?

(我原以为pdflatex可以选择-halt-on-error诀窍,但显然不是.)

奖金问题:在Mac OSX上浏览是一个不错的pdf查看器,当pdf更改时会自动恢复(与预览不同),除非每当出现乳胶错误时它会再次确认您需要自动清除.Texniscope没有这个问题,但由于其他原因我不得不抛弃Texniscope .有没有办法让Skim始终自动刷新,还是有其他观众可以做到这一点?


增加:latexmk基于这个问题的答案的迷你教程:

  1. 获取latexmk此: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. 将以下内容添加到您的~/.latexmkrc文件中:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    
    Run Code Online (Sandbox Code Playgroud)

    (对于OS X with Skim)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
    Run Code Online (Sandbox Code Playgroud)
  3. 编辑源文件时,foo.tex在终端中运行以下命令:

    latexmk -pvc -pdf foo.tex
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用Skim或其他实时pdf查看器查看foo.pdf.对于Skim,只需查看Skim首选项中的"同步"选项卡,并为编辑器进行设置.

瞧!点击保存foo.tex现在将导致foo.pdf刷新而不触及任何东西.

automation latex prompt expect latexmk

65
推荐指数
2
解决办法
2万
查看次数

如何在emacs中调用latexmk,并跳转到下一个错误

我想使用latexmk在Emacs中编译我的LaTeX文档.特别是我需要Emacs功能next-error,通常使用Cx`调用,并跳转到文档中的下一个LaTeX错误.

我想打电话latexmk或使用C-x compileAUCTeX C-c C-c.

首先,我开始latexmk使用

$pdflatex = 'pdflatex -interaction=nonstopmode';
Run Code Online (Sandbox Code Playgroud)

选项1:Cx编译

我按下C-x compile并键入latexmk -pdf foo,运行pdflatex.但是next-error,即使*compilation*缓冲区包含错误,也不会跳转到错误:

! Paragraph ended before \author was complete.
<to be read again> 
                   \par 
l.48 
[...]
Compilation exited abnormally with code 12 
Run Code Online (Sandbox Code Playgroud)

如何在第48行自动跳转到此错误?

请注意,解析乳胶输出的这个问题与latexmk直接无关.我刚才也会出现同样的问题C-x compile pdflatex -interaction=nonstopmode foo.

选项2:AUCTeX

如何设置AUCTeX latexmk -pdf而不是pdflatex我的.tex文件?当然,我也想next-error在这里工作.

更新:我开始获得赏金,因为如果这有效,对许多人来说这将是一个很好的工具.我认为如果给出一个解决方案可以让我latexmk在Emacs中轻松编译我的LaTeX文档并使用跳转到错误next-error …

emacs latex build-process auctex latexmk

26
推荐指数
2
解决办法
6742
查看次数

使用latexmk编译XeLaTeX tex文件

如何在Mac OS X上编译XeLaTeXtex文档latexmk

目前我正在运行latexmk job.tex并收到错误:

! 
 ********************************************
 * XeTeX is required to compile this document.
 * Sorry!
 ********************************************.
\RequireXeTeX ...********************************}
                                                  \endgroup \fi 
l.18 \RequireXeTeX

? ^D
! Emergency stop.
\RequireXeTeX ...********************************}
                                                  \endgroup \fi 
l.18 \RequireXeTeX
Run Code Online (Sandbox Code Playgroud)

我TEX文件的第一行是(通过所建议的这个帖子):

% !TEX TS-program = xelatexmk
Run Code Online (Sandbox Code Playgroud)

我尝试过其他人(例如program = xelatex),但无济于事.

latexmk 描述其命令如下:

$ latexmk -commands xelatex job
Commands used by latexmk:
   To run latex, I use "latex %O %S"
   To run pdflatex, I use "pdflatex %O %S"
   ... …
Run Code Online (Sandbox Code Playgroud)

latex latexmk xelatex

23
推荐指数
5
解决办法
2万
查看次数

如何将latexmk绑定到Emacs中的一个键并让它显示错误(如果有的话)

我正在使用AUCTeX,我想绑定一个密钥,例如C-0,执行以下操作:

  1. 保存活动文件而不提示我.
  2. latexmk在没有提示我的情况下运行活动文件.
  3. 如果latexmk遇到任何问题,则显示错误.

我的问题不是如何绑定一个密钥(Tyler在下面的评论中发布了一个链接),但是如何提出一个完成1-3项的功能.


我打电话给Latexmk

(add-hook 'LaTeX-mode-hook (lambda ()
  (push 
    '("Latexmk" "latexmk %s" TeX-run-TeX nil t
      :help "Run Latexmk on file")
    TeX-command-list)))
Run Code Online (Sandbox Code Playgroud)

这是我的.latexmkrc

$pdf_mode = 1;
$recorder = 1;
$latex = 'latex -recorder -halt-on-error -interaction=nonstopmode -shell-escape';
$pdflatex = 'pdflatex -recorder -halt-on-error -interaction=nonstopmode -shell-escape';
Run Code Online (Sandbox Code Playgroud)

我正在使用Emacs 23.3和AUCTeX 11.86.

emacs auctex latexmk

16
推荐指数
1
解决办法
2537
查看次数

是否有LaTeX命令将记录到输出/错误控制台?

我创建了一个LaTeX \todo{}命令,在边缘输出todo音符:

\newcommand\todo[1]{\marginpar{#1}}
Run Code Online (Sandbox Code Playgroud)

但是,我真的想将所有todo笔记的列表输出到输出控制台.我编写了一个简单的python脚本来解析.tex文件来执行此操作,但后来切换到使用latexmk来处理重新编译.我的脚本也没有真正处理\includeonly.

我可以直接写入乳胶内的LaTeX控制台输出吗?

latex pdflatex latexmk

13
推荐指数
2
解决办法
6657
查看次数

Emacs latexmk函数将我抛入空缓冲区

这是如何将latexmk绑定到Emacs中的一个键并让它显示错误(如果有的话)的后续内容.

我正在使用Emacs中的一个函数来编译LaTeX文档,latexmk但它的行为并不像我想要的那样.我使用的功能是一个JouniK.Seppänen提出:

(defun run-latexmk ()
  (interactive)
  (let ((TeX-save-query nil)
        (TeX-process-asynchronous nil)
        (master-file (TeX-master-file)))
    (TeX-save-document "")
    (TeX-run-TeX "latexmk" "latexmk" master-file)
    (if (plist-get TeX-error-report-switches (intern master-file))
        (TeX-next-error t)
      (minibuffer-message "latexmk done"))))

(add-hook 'LaTeX-mode-hook
          (lambda () (local-set-key (kbd "C-0") #'run-latexmk)))
Run Code Online (Sandbox Code Playgroud)

主要的问题是,当我使用该功能时(通过按下C-0),它有时会把我扔进一个名为TeX Live 2011的空缓冲区.

重现此问题的一种方法是尝试编译以下内容(vc.tex不存在并不重要):

\immediate\write18{sh ./vc}
\input{vc}
\documentclass{article}
\begin{document}
\end{document}
Run Code Online (Sandbox Code Playgroud)

另一种再现方式是尝试编译以下内容:

\documentclass{article}
\newcommand{foo}{
\begin{document}
\end{document}
Run Code Online (Sandbox Code Playgroud)

一个小的(装饰性的)问题是迷你缓冲器的高度有时会从一条线扩展到两条线,run-latexmk并且在它运行之后它会弹回到一条线高度.我在找到一个简单的例子来重现这种行为时遇到了问题(我只为非常大的文档复制了它).

我想解决这两个问题.我也有兴趣以其他方式与我在Emacs中与latexmk进行交互.


这是*... output* buffer最后一个示例(缺少结束大括号的示例\newcommand:

Running `latexmk' on `test' with ``latexmk''
Latexmk: This is …
Run Code Online (Sandbox Code Playgroud)

emacs auctex latexmk

10
推荐指数
1
解决办法
4575
查看次数

pdfLaTeX缩微包的字体错误

Ubuntu 10.4LTS我试图使用microtype包中memoir的类的文件,例如像这样:

\usepackage[final,expansion=true]{microtype}
Run Code Online (Sandbox Code Playgroud)

然而,当我试图编译这个(与rubber,latexmk或其他人)我得到这样的错误:

job.tex:72:字体csnameendcsname = rm-lmr10 + 20 at 10.95pt not loadable:未找到度量标准(TFM)文件.

job.tex:72:正文:\ parbox {5in} {Abstract!}

job.tex:72:10.95pt的字体csnameendcsname = rm-lmr10-20无法加载:找不到公制(TFM)文件.

job.tex:72:正文:\ parbox {5in} {Abstract!}

job.tex:80:字体csnameendcsname = rm-lmr10 + 20,10.0pt无法加载:找不到公制(TFM)文件.

job.tex:80:正文:... box {11cm} {\noindent {}保留所有权利.}

job.tex:80:字体csnameendcsname = rm-lmr10-20 10.0pt无法加载:找不到公制(TFM)文件.

job.tex:80:正文:... box {11cm} {\noindent {}保留所有权利.}

注意,我遗漏了许多可能正在交互的代码,但导致此错误的一个活动行是包含该microtype包.

我使用的是\usepackage{lmodern}\usepackage[T1]{fontenc},但是当我离开那些出了问题依然存在,并且字体名称相应地从改变lmr10为默认cm10.

这段代码很容易在Mac OS X上与TeXShop一起使用,但它似乎在Ubuntu上没有用(很容易).我只是不知道如何在Ubuntu上设置字体来解决这个问题,我非常有必要输入如何解决这样的错误.

谢谢.

布赖恩

ubuntu fonts latex pdflatex latexmk

3
推荐指数
1
解决办法
5073
查看次数

在Emacs + AUCtex下一次性命令编织和latexmk

我想使用一个AUCtex命令编织AND latexmk Knitr文档.我不知道如何在lisp中编码,而网络搜索没有发现这样的事情.

我有一些接近的东西.需要为latexmk更改文件的扩展名.任何帮助将不胜感激.

以下行是我的.emacs文件.

(add-hook 'LaTeX-mode-hook (lambda () (push '
  ("KnitrLaTeX" "Rscript -e \"library(knitr)\; knit('%s')\" && latexmk -pdf %s" 
   TeX-run-TeX nil t :help "Run knitr and latexmk on file") 
   TeX-command-list)))
Run Code Online (Sandbox Code Playgroud)

当我运行时C-c C-c (KnitrLaTeX),emacs运行以下命令:

Running `KnitrLaTeX' on `slides.Rnw' with ``Rscript -e "library(knitr); knit('slides.Rnw')" && latexmk -pdf slides.Rnw''
Run Code Online (Sandbox Code Playgroud)

哪个错了.它应该读"... && latexmk -pdf slides.tex"

提前致谢.

emacs auctex latexmk knitr

3
推荐指数
1
解决办法
711
查看次数

Sublime Text 3 LaTeXTools插件无法在Ubuntu上编译

我一直是Sublime Text的LaTeXTools插件的粉丝.但是,作者最近更新了插件,它将不再构建我的LaTeX文档.我想知道是否有其他人有这个问题,知道如何解决它?这是我得到的完整控制台输出:

[Compiling /home/tingley/Dropbox/testtex.tex]

TraditionalBuilder: Invoking latexmk... 

COULD NOT COMPILE!

Attempted command:latexmk -cd -e $pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %S %O' -f -pdf testtex.tex
Build engine: Traditional Builder
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 13.10上使用Sublime Text 3和TeXLive.我可以使用以下命令手动编译文档并生成PDF:

pdflatex ~/Dropbox/testtex.tex
Run Code Online (Sandbox Code Playgroud)

不过,我希望能够在Sublime中轻松完成这项工作.我已经尝试运行"更新LaTeXTools并迁移设置",以及通过包控制删除并重新安装插件.

谢谢!

plugins latex latexmk sublimetext sublimetext3

2
推荐指数
1
解决办法
6235
查看次数

如何在 Linux 中隐藏 pdflatex 生成的额外/辅助文件

我看过这个类似问题的答案,建议使用latexmk -cpdflatex -aux-directory=/some/temp/dir <additional options>。我更喜欢后者,因为您可以创建子目录而无需重复删除和生成文件。当前,此选项“仅在 (pdf)latex 的 MiKTeX 版本上实现”。另一方面,前一种方法似乎不能正常工作。我在 Visual Studio Code 中使用LaTeX Workshop,它默认使用latexmk. 为了添加-c标志,我创建了以下收据:

"latex-workshop.latex.tools": [
        {
            "name": "latexmk -c",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "-c",
                "%DOC%"
            ]
        }
      ],

    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk -c",
            "tools": [
              "latexmk -c"
            ]
        }
      ]
Run Code Online (Sandbox Code Playgroud)

如果我首先从乳胶源文件创建 pdf 文件,然后-c为下一次编译添加标志,它会正确删除附加文件。但是,如果您想第一次编译(当没有可用的pdf或辅助文件时),它不会生成任何pdf文件,我应该考虑删除该-c标志。即使您已经拥有 pdf 文件及其关联文件,一旦您从文件夹中仅删除 pdf 文件,也会出现同样的问题。是否有一种有效的方法可以在 Linux(或 vscode)中隐藏此类辅助文件(通过删除它们或最好将它们放在子文件夹中)?

latex pdflatex latexmk tex-live visual-studio-code

2
推荐指数
2
解决办法
2817
查看次数