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(从我):
- 有用的向导插入表,引用,引用
- 双向支持
- 有用的键盘快捷键
- 自动完成单词(特别有用于参考)
- 定义你自己的指示