build议build立乳胶系统?

我试图找出最好的乳胶制造系统。

目前,我使用latex-makefile ,在vim中编辑,并在Okular或gv中查看更改。 主要的问题是它有时会隐藏我的错误,我必须手动运行乳胶。 主要优点是它可以完成我所需要的所有迭代,并且简单地提供pdf和ps。

如果你有经验

  • 乳胶-MK
  • VIM乳胶
  • 的kile
  • LYX
  • 是MiKTEX
  • 乳胶的Makefile
  • 最终的乳胶makefile
  • 橡胶
  • 任何其他我没有遇到

你会推荐他们吗?为什么?为什么不呢?

我刚刚试用了latexmk。 如果你这样做

latexmk -pvc file.tex 

然后它会自动预览(默认为DVI)。

  • 处理依赖关系
  • DVI,PS或PDF
  • 迭代好。
  • 非常可configuration,请参阅man latexmk

缺点:

  • 它不会压缩错误,这是非常有用的(解决方法:分别使用橡胶信息)
  • man文件中的错误:“有时,一个查看器(gv)会在其创build开始之后但文件完成之前尝试读取更新的.ps或.pdf文件。解决方法:手动刷新(或重新打开)显示。 如果它通过一个临时的.pdf文件来build立它,会更好,以避免这种情况。
  • 不是非常用户友好。

在考虑所有这些选项一段时间后,我已经解决了以下解决scheme。

  • 设置vim在我input时连续写入 。
  • 在后台运行一个脚本不断build立,刷新PDF文件。 latexmk几乎已经足够好了,只不过它build在原地,在okular(我的观察者)的糟糕时间重新加载。

该脚本可在https://github.com/pbiggar/texbuild上find

使用rubber-info从日志文件中获取错误和警告。 上面的脚本将日志文件保存在t.log中。 在vim中:

 autocmd FileType tex set makeprg=rubber-info\ t.log autocmd FileType tex set errorformat=%f:%l:\ %m 

我自己没有用过,但是我听说橡胶是一个很好的select。

从他们的网站:

橡胶是一个程序,其目的是处理与编辑乳胶文件相关的所有任务。 这包括编译文档本身,当然还有足够的时间来定义所有的引用,并运行BibTeX来pipe理书目引用。 还包括自动执行dvips以生成PostScript文档,以及使用pdfLaTeX生成PDF文档。

好的,所以这个问题有点老了,但是当我search到“latex build system”的时候就出现了,所以我想我会加两分钱。 我尝试了基于Makefile的解决scheme,但发现输出有点冗长和笨拙。 我想有人可能已经build立了乳胶的scons扩展,但惊喜地发现,scons已经本身支持乳胶! 所有你需要做的是创build一个SConsctruct文件,像这样:

 env = Environment() env.PDF(target="report.pdf", source="report.tex") 

build立刚刚运行scons report.pdf 。 Scons会自动构buildreport.tex包含的.tex文件,处理书目并执行重复构build以解决所有引用 – 简单!

您可以用相同的方式创buildDVI和PS文件。 有关这些build设者的更多信息,请查看http://www.scons.org/doc/2.0.1/HTML/scons-user/a8524.html

有关scons(更换产品)的更多信息,请参阅http://www.scons.org/

我使用Eclipse和TexEcplise附件来编辑我的TeX文件。 它具有LaTeX的语法高亮显示。 当你要求预览一个未被修改和已经编译好的tex文件时,它会在查看器中打开这个文件。 当tex文件被修改时,它会在查看之前编译tex文件。 它做了必要的迭代,但只在需要的时候。

另一个优点是所有的错误和警告都被汇总在一个框中,并且在tex文件中被突出显示! 这是TexEclipse主页的屏幕截图 。

我正在尝试橡胶一段时间。 我将在这里浓缩结果:

  • 橡胶会自动将.eps文件转换为.pdf的pdfdlatex。 但是,它似乎只为includegraphicsmacros做这个。 如果你有自己的macros,它不会。
  • 橡胶信息是伟大的,这是魔术。 这肯定比我在看错误消息和线路时看到的更好。 而且你实际上并不需要使用橡胶来build立使用它。
  • 似乎不知道什么时候停止迭代,往往会提早停止。
  • 它覆盖你的PDF,因为它build立,这是恼人的(它没有一个很好的function,从它build立在临时文件中的latex-makefile)。

我在tex.stackexchange上使用Scons发布了一个详细的答案。

基本上,你把它放在一个名为SConstruct的文件中:

 # make sure scons finds tex executables: import os env = Environment(ENV=os.environ) # target and source: pdf_output = env.PDF(target='main.pdf', source='main.tex') # make sure that the pdf is reloaded properly (eg, in Skim) env.Precious(pdf_output) 

您可以简单地通过运行来构buildpdf

 scons 

令人惊讶的是 ,scons将检测main.tex文件中包含的文件以及参考书目文件中的变化!

我想使用您在最终答案中发布的脚本。

不幸的是,它并没有与我的设置(MacVim与vim-latexsuite,脱脂作为查看器和XeTeX)。 我也使用向前search(即使用Vim中的\ ls将跳转到打开的查看器中的PDF文档中的对应点)的function。

此外,我的文档不叫做thesis.tex (大惊喜,不是论文)。 因此我做了一些我想分享的configuration工作。 注意,我的技能是可怕的。

 #!/bin/bash set -x ulimit -t 10 # sometimes pdflatex gets stuck if [ "$1" = "" ]; then echo "No target name specified" exit 1 fi TARGET=$1 SOURCE=$1.tex TMPSOURCE=_$TARGET.tex TMPTARGET=_$TARGET while [ 1 ]; do # Compile a different file ($TMPSOURCE.pdf) so that it doesn't reload mid-compile cp $SOURCE $TMPSOURCE # better than running pdflatex manually, as this wont rebuild if there's nothing there. latexmk -pdf -silent $TMPTARGET > /dev/null # For rubber-info cp $TMPTARGET.log $TARGET.log if [ -e $TMPTARGET.pdf ]; then # Check the compile succeeded first # No output file yet. [ ! -e $TARGET.pdf ] HASNOPDF=$? # ignore if it's unchanged. # OS X diff doesn't consider binary files. Single-line output, return value 2 diff $TARGET.pdf $TMPTARGET.pdf OUTPUTDIFFERS=$? if [ $HASNOPDF -eq 0 -o $OUTPUTDIFFERS -ne 0 ]; then # Do NOT RM since Skim cannot deal with this. cp $TMPTARGET.pdf $TARGET.pdf fi fi sleep 1 # give it time to be killed by a CTRL-C done 

这会编译一个临时文件并将其复制回给出的任何名称(而不是像脚本一样)。 脚本的用法:

 ./scriptname project 

其中project是TeX文件的名称,没有文件扩展名。

我也改变了rubber-info行:

 autocmd FileType tex exe "set makeprg=rubber-info\\ _" . expand("%:t:r") . ".log" 

因为可执行文件的名称是硬编码的,所以我需要修补我的latexmk以使用XeTeX。

不幸的是,当我在完成一个语句之前保存了我的文档时,这仍然会破坏输出的PDF文件,因为latexmk似乎总是生成一个PDF文件,即使出错了 – 它的返回码始终为0。

(为了说明这一点,说我只是把emph{input到我的文档中并保存它,后台脚本会立即编译文档,并且失败,但是它仍然会产生一个(大部分是空的)输出文件。

此外,向前search不再正常工作; 它基本上跳到了文档中的一个错误的地方。 我怀疑这与我在编译之前复制文档有关。

所以,这仍然是一个完全不能令人满意的解决scheme,尽pipe我还没有在MacVim中input连续的保存。

(这是一个正在进行的工作)

我正在尝试vim-latexsuite。 它基本上将vim变成一个用于胶乳的IDE。

学习曲线:

  • 非常不直观,但在教程后,似乎确定。
  • 它重新定义了我喜欢的一些键,我似乎无法修复它们。

自动完成:

  • 使用一些内置的macros更简单
  • 添加<< + >>到用户macros是非常烦人的。
  • 用“等replace“是很好的,直到你想要”出于某种原因,那么它就是一个挫败的练习。
  • 它的自动完成也可能很烦人。 我必须重新编程自己的乳胶工作。

构build系统:

  • 可怕
  • quickfix不起作用 – 它经常把我放在错误的文件中
  • 当胶乳报告错误,并且结果分成两行时,它不会检测到它。

AUCTEX和预览乳胶与Emacs的另一种select。

您也可以让emacs打开生成的dvi或pdf文件,如果您为该缓冲区启用自动还原模式,每次重新编译文档时都会显示更改。

“更好”是一个非常相对的术语…你还想做什么? 看起来这个makefile处理了很多东西,这让我希望在工作中运行一个* nix而不是windows …如果有更多东西需要使用makefile处理,为什么不把它们添加进去呢?

为了使其“更好”,你需要提供更多关于你在做什么的细节。

例如,您可以用grepparsing.log文件,search错误或警告,将它们转储到另一个文件中,然后打开新文件,以便读取错误。

这一切都取决于你想做什么…

我将MikTeX与TeXnicCenter结合使用。 它为我的目的正常工作。 我从来没有系统隐藏错误或警告。 自定义构build脚本很容易创build和configuration。

ltx声称是乳胶包装,以加快乳胶文件的汇编。 我不能让它工作,虽然(一些问题initex)。

我一直在使用latex-makefile 。 如果你正在尝试使用编辑 – 编译 – 预览循环的话,它是相当不错的:

  • 几乎为零configuration。
  • build立.ps或.pdf。
  • 处理所有必要的迭代。 我从字面上不得不写什么别的。
  • 相当强大,但偶尔错误和警告也会被打乱。
  • 它不会杀死旧的pdf,直到新的build立。
  • 它构build了其他文件,如从gnuplot生成eps。 我没有发现这个非常有用的。
  • 作者对function请求做出快速响应。
  • 我可以很容易地复制latexmk的优点:

     while [ 1 ]; do /usr/bin/make; done 

一些缺点:

  • 它只允许通过dvi – > ps – > pdf生成pdf,而不是直接通过pdftex。
  • 它的错误输出与标准胶乳不一样,所以vim不会移动到正确的行。
  • 它并不总是重新编译bibtex和其他非tex源的变化。
  • 如果我删除一个文件,它不会删除依赖关系,没有一个make clean。

看看TeXMaker 。 🙂

function(来自wiki):

  • 在线拼写检查。
  • 一个用于编写LaTeX源文件的unicode编辑器(语法高亮显示,撤消重做,searchreplace,拼写检查…)
  • 可以用鼠标inputLaTeX标签和math符号
  • 文档和章节模板
  • LaTeX相关的程序可以启动
  • BibTeX数据库pipe理
  • 大纲或“结构视图”
  • 在LaTeX编译期间的日志文件和“逐步”编译器发现的源错误的能力
  • 一个集成的LaTeX到HTML转换工具

function(从我):

  • 有用的向导插入表,引用,引用
  • 双向支持
  • 有用的键盘快捷键
  • 自动完成单词(特别有用于参考)
  • 定义你自己的指示