【问题标题】:Real Time LaTeX? [duplicate]实时乳胶? [复制]
【发布时间】:2010-09-23 14:11:50
【问题描述】:

可能重复:
Is there any way to get real-time compilation for LaTeX?

我正在寻找一个应用程序,在该应用程序中,我可以在一半屏幕上编写纯 LaTeX,而在另一半屏幕上实时查看编译后的文档
这似乎确实是进行 LaTeX 创作的一种显而易见的方式,但看起来没有任何软件能够做到这一点。
LyX 不是我要找的。我想编辑实际的 LaTeX 并实时查看它的渲染。为什么这不是已经在某个地方完成了?

【问题讨论】:

  • 乳胶用户似乎已经学会了接受乳胶的局限性。如果你做复杂的数学运算或用 tikz 画图,你会希望实时更新。下次向真正的数学家询问 tex 以及他/她想要改进的地方。
  • 这是不正确的。 LaTeX 的可用性比当代系统要好得多。事实上,它是唯一幸存的大规模使用的系统。
  • 请注意那些嘲笑 Shy 的目标:实时预览(就像 StackOverflow 一样!)不是意味着所见即所得。所见即所得意味着对您隐藏源代码,以便您正在编辑的内容看起来像最终输出。是的,这对于技术写作来说是一个糟糕的主意。
  • 如果您了解您正在使用的系统,为什么您需要一直查看它?当我写一些标记时,我几乎知道它会是什么样子。
  • 另见stackoverflow.com/questions/1240037/…,我在其中接近了实时乳胶。

标签: compiling


【解决方案1】:

BaKoMa TeX 可以满足您的需求,并且是我所知道的唯一此类解决方案。它在后台进行真正的增量 LaTeX 编译,因此它几乎适用于所有 LaTeX 包(例如用于复杂图表的包)。 LaTeX 系统本身也相当不错(例如,它很早就支持 SVG)。

它最初仅适用于 Windows,但现在也有适用于 Linux 和 Mac 的版本。

不幸的是,它不是免费或开源的,但对我来说,支付许可费是值得的。它比任何其他解决方案都优越,我无法想象回去。据我所知,它是由一位俄罗斯物理学家撰写的,所以我认为价格合理。

顺便说一句,我与 BaKoMa 没有任何关系,只是一个非常快乐的用户。

【讨论】:

  • 看起来现在有支持 Linux 的 BaKoMa 测试版。
  • BaKoMa TeX 如果支持最新的 TeX 编译器,如 PdfTeX 或 LuaTeX,那就太好了。不幸的是,它只支持普通的 TeX/LaTeX。这意味着例如没有对 OpenType 字体和 UTF 字体的 fontspec 包支持。 BaKoMa TeX 的开发似乎已在 2018 年停止。
【解决方案2】:

我推荐latexmk,它带有-pvc 开关(用于“连续预览”),只要源代码更改,就会重新编译(根据需要多次)。如果您有一个自动刷新 pdf 视图的 pdf 查看器(Mac OSX 上的 Skim 会这样做),那么您每次点击保存时都可以看到刷新的预览。

即使没有 -pvc 选项,使用 latexmk 也很好,因为它会根据需要自动编译(包括 bibtex)多次。

已添加:How to set up latexmk and Skim for near realtime LaTeX

补充:这里有一个类似latexmk的东西,用python写的: http://iml.univ-mrs.fr/~beffara/soft/rubber/。 它似乎没有像“连续预览”选项这样的东西,尽管可以添加这样的东西: https://stackoverflow.com/questions/393176/monitor-a-set-of-files-for-changes

请注意那些反对所见即所得的人:

实时预览(就像 StackOverflow 一样!)不是意味着所见即所得。所见即所得意味着对您隐藏源代码,以便您正在编辑的内容看起来像最终输出。是的,对于技术写作来说,这是一个糟糕的主意。 看到实时预览并不能使 LaTeX 所见即所得——您仍在编辑纯文本源。 (请注意,这是 StackOverflow 编辑器的工作方式。)

我不否认您通常不应该担心预览。你甚至可以反对这个功能,理由是它会鼓励坏习惯。我实际上会反对——看到 TeX 实时做出的选择只会让你放心,你可以把排版从你的脑海中抛开,并对 TeX 有信心。

在任何情况下,有很多时候您确实需要关心(例如处理混乱的方程式,或者在编辑的最后阶段,当您清理坏的换行符等等)并且真正的实时预览可以节省很多时间。

【讨论】:

  • 啊,我想你在我扩展我的答案时添加了这个评论。您认为我现在的回答是否解决了这一点?
  • 我实际上同意你的看法(请注意,我没有在任何地方使用“所见即所得”),所以 +1。我仍然认为让预览始终可见可能会分散注意力,并鼓励不良习惯,但我当然同意你的观点,latexmk 很好,-pvc 很有用。
  • 酷,谢谢 Shreevatsa。我想我们已经达成了大致的共识。当这个问题第一次发布时,很多人都从提问者的喉咙里跳了下来,指责他们不欣赏 LaTeX 优雅的形式和内容分离。似乎大多数人现在都在同一页面上。 LaTeX 源代码的实时编译在最坏的情况下会分散注意力(尽管我个人喜欢它)。这并没有违反 LaTeX 的原则。
  • 关键是自动刷新预览器。 OSX 上的 Skim 为我解决了这个问题。 Preview.app 和 Adob​​e Acrobat 没有。 linux 也有一些应用程序可以做到这一点。不知道窗户。出于所有实际目的,实时预览器可以解决您在现代计算机上处​​理短文档(例如 5-30 页)的所有问题。如果您在没有\include 的情况下排版书籍,它只会再次成为问题。
  • latexmk 的链接似乎被破坏了,它仍然可以通过一些包管理器如 apt 安装
【解决方案3】:

Gummi 比 BaKoMa TeX 更好。它是一个免费的开源程序,用 python 编写,具有实时预览窗格。

[编辑:Gummi 目前在这里维护:https://github.com/alexandervdm/gummi]

【讨论】:

  • @Andrioid 不适合大文件吗?如果有,有多大(根据经验)?
  • 字母、注释和单独的图表都可以。对于报告或更大的文件,我建议不要这样做。我也不确定 Gummi 如何处理多个文件。如有疑问,请尝试一下。
  • 事实上,Gummi 今天不能处理多个文件。但是使用 [ctan.org/tex-archive/macros/latex/contrib/subfiles 子文件],Gummi 变得非常好。
  • 它缺少 BaKoMa 最重要的功能,它只是单向的,没有交互性,你不能直接在右侧面板(结果)上写,也不能在那里修改。
【解决方案4】:

当正在显示的文件发生更改时,许多 PDF 和 DVI 查看器会自动更新其显示。因此,例如,人们使用 LaTeX 的一种常见方式是让他们的 LaTeX 编辑器在屏幕的一半上,另一个是查看器,每隔几分钟左右在他们的编辑器上点击“排版”。可以将您的系统设置为允许单击显示输出中的某个点以转到编辑器中的相应点,反之亦然。

Source

现在你可以做什么,如果你想避免每隔几分钟点击“排版”的步骤,就是让一个脚本在后台运行,每隔几秒编译一次你的 LaTeX 文件.您必须牢记以下几点:

  • 编译 LaTeX 文件可能需要一两秒钟,并且可能需要多次编译才能正确获取所有引用。

  • 1234563中止编译(最好是在-nonstopmode下开始编译),出现错误时,确保现有的PDF/DVI文件没有被修改。

除此之外,这样的脚本或多或少都有效。 (我很久以前写过并且正在使用。)输出将在几乎不到一个句子的输入时间内更新。

[编辑:正如斯蒂芬指出的那样,OS X 的“纹理”可以做到这一点。 its website

我们重新引入了流行的交通灯,这是一种纹理工具,可在您键入时不断地向您显示文档的 TeX 状态。如果灯是绿色的,TeX 很高兴;如果指示灯变红,则有问题。修好后,灯又变绿了。 (TeX 工作时,灯光会变黄,但 Textures 的速度非常快,你几乎看不到它。)
而且正如他所指出的,它并不是真的那么有用。]

我放弃它的原因是因为这真的不是使用 LaTeX 的正确方法。 LaTeX的整个point是为了让你在输入文件时不用担心格式问题;只需使用正确的 semantic 标记(段落、部分、小节)输入它,然后将演示文稿留给 LaTeX。不得不同时担心演示和内容是非常分心和毫无意义的;如果你打算这样做,你不妨使用 Word!只有在清楚地知道要排版的内容后才能进行排版。

【讨论】:

  • 我不同意你的最后一段。请参阅下面的答案。
  • 好的,我想达到我不担心格式的地步,只需专注于内容并正确输入所有内容,然后返回并修复任何问题。不幸的是,问题是,如果我要编写 10 页的 LaTeX 而不编译,我保证会有一些小错误阻止它编译,并且来自 LaTeX 的错误消息通常不是甚至在出现多个错误时都接近于引用正确的位置,因此调试将花费相当长的时间。你是如何克服这个问题的?
  • @process91 自从我广泛使用 LaTeX 已经有一段时间了,但我不记得“来自 LaTeX 的错误消息通常甚至没有接近引用正确位置”的经历:也许你可以在这个网站上单独询问一个关于如何在出现多个错误时进行调试的问题,并描述您的体验。
【解决方案5】:

回答你的第二个问题:

因为它不是预期的使用方式。 LaTeX 不是(!)所见即所得系统。它是一个文档布局系统。因此,您使用一些次要的布局指令编写文本(在低端电传终端中),而其他人(高端机器上的 tex 子系统)正在生成(编译)准备打印的论文。

所以你只关注你的内容,而不是外观。

这背后的想法是,您不像专业打印机(人,而不是机器)那样擅长打印(设置字母)的艺术(!),所以您所做的所有格式化都可能是专业意义上的错误。 Tex 的实现考虑了专业打印机的知识。

【讨论】:

  • 大多数同行评审期刊都提供了一个 tex 模板,用于重新调整其布局,因此您可以提交与其书本格式完全相同的可打印 pdf。
  • 其他接受 LaTeX tarbals 作为输入并自动处理它们。您可以在一个小时内取回“证明”!
  • 印刷是一门手艺,没有人愿意透露它的秘密。例如,如果您查看 Adison-Wesley 的书籍,它们看起来不错,并且在各种书籍中都有共同的感觉。这种外观背后的数字(距离、空格、字体大小)是他们成功的商业秘密之一。
  • 我认为那些反对所见即所得的人没有抓住重点。请参阅下面的答案。
【解决方案6】:

作为对 ShreevatsaR 的回应,即 LaTeX 不是所见即所得,同时考虑演示和内容是没有意义的,有时演示和内容是不可分离的:尝试在研究期刊中输入占据四分之一页的多行 \equation两列格式,或输入数据表。迟早你将不得不修正这些错别字,并且需要在演示文稿和内容之间反复引用以使其正确。另一个地方是您有页数或字数限制,并且您试图兼顾含义和文档长度。我认为能够立即看到编辑的效果非常有用。

话虽如此,正如已经指出的那样,明智地使用 makefile、xdvi 或 gv 以及您最喜欢的编辑器(我的是 vim)使得需要一个单独的程序来为 LaTeX 实现所见即所得的效果是多余的。

【讨论】:

    【解决方案7】:

    作为 vim 用户,我从未使用过它,但是有一个 emacs 扩展程序可以做类似的事情,它被称为 preview-latex

    HTH

    【讨论】:

    • 如果我理解正确,它只适用于公式。不是整个文档。
    • 不,这只是 IIRC 的一个示例,它适用于一切。
    • 在我当前的设置中,它在 emacs 中显示公式、表格和标题。当我在这样一个项目上移动光标时,我可以切换到编辑它以便显示源代码,然后返回。
    【解决方案8】:

    在 OS-X 之前,我们在 Mac 上使用 Textures。虽然它的用途非常有限。尝试困难的公式时很好,但在写作时则不然,正如 Shreevatsa 已经注意到的那样。

    在现代机器上编译延迟并不是绝对必要的,但这需要在 TeX 引擎中进行大手术。

    您可能想看看 TeXmacs,它更加 WYSIWYG。

    【讨论】:

      【解决方案9】:

      我曾经使用whizzytex,这是一个用于 Emacs 的包,它使用 advi 进行预览。

      它已经在 Debian 和 Ubuntu 中使用了很长一段时间了。它可能无法与现有的所有 LaTeX 包完美交互,但它可以很好地将 Emacs 中的光标与预览窗格中的光标连接起来。

      这确实不是 100% 所见即所得的 emacs 编辑器,但它确实在您键入时提供实时预览更新,并且预览窗口是交互式的。只需确保您的 LaTeX 始终处于可编译状态(YaTeX 提供了一组宏来帮助维护此属性)。

      (我现在只使用带有 YaTeX 的 emacs 和每次保存/编译时都会更新的 Evince pdf 查看器)

      【讨论】:

        【解决方案10】:

        TeXworks 可能是您正在寻找的解决方案。它打开两个窗口:一个是用于输入 LaTeX 代码的文本编辑器,另一个是获取实时更新的 PDF/DVI 查看器。它还可以使用 SyncTeX,以便您可以单击 PDF 文档,文本编辑器将跳转到生成您单击的输出的代码。

        您可以通过TeXLive 2008 conference 观看 TeXworks 的视频演示。

        【讨论】:

        • 我对此表示赞同(感谢您的链接!)但 TeXworks 并没有真正进行实时预览,就像 TeXShop 所做的那样——您仍然必须自己每隔几分钟点击一次“排版”。这就是为什么我提到了让脚本经常自动编译的技巧。
        【解决方案11】:

        因为大型(ish)文档的 LaTeX 至少需要几毫秒才能编译。我发现(以及我现在正在使用的)最好的解决方案是每隔几秒使用一次 Kile 和快速预览(Alt-1)。如果您使用 evince 或一些类似的 DVI/PDF 查看器,它只会更新您正在查看的任何页面,这使我可以进行更改并几乎立即(几乎实时)查看它们。

        Lytha 是绝对正确的,但我发现如果不使用我所有的(通常是错误的)语法运行编译器十几次来查看结果,我很难学习 LaTeX 的语法。

        【讨论】:

          【解决方案12】:

          LED (http://www.latexeditor.org/) 自带分屏模式。
          它仍然不是实时的,但是您可以根据需要随时点击编译键;)

          【讨论】:

            【解决方案13】:

            好主意。这并不理想,但正如人们指出的那样,自己制作这样的东西是可能的。这是我在 Windows 上所做的(并使用了一段时间):

            你需要什么:

            1. 一个文本编辑器,可以在每次文档更改时执行一个操作
            2. 重新编译 LaTeX 的快速方法
            3. 可以快速重新加载文档的查看器。

            我使用gVim 作为文本编辑器,latexdaemon 作为编译引擎,Sumatra 作为 PDF 查看器。

            1. 在 Vim 中,发出命令 :au! CursorHoldI,CursorHold <buffer> silent! :update 使其在每次停止输入时自动保存文档。还:set updatetime=800 设置超时,之后保存发生低值。

            2. latexdaemon 将在每次更改文档时以有效的方式自动编译文档。在文件的开头使用以下内容使其生成 PDF:

              %Daemon> ini=pdflatex
              

              或者直接以latexdaemon -ini=pdflatex开头。

            3. Sumatra 每次更改文件都会自动重新加载文件,并且不会锁定 PDF(因此无需先关闭 Sumatra 即可重新编译)。

            食谱将为您提供几乎实时的预览,但设置起来需要一些努力,而且并非没有问题。例如,您可能不想连续自动保存,以防您想恢复到早期版本。

            这方面有很多需要改进的地方,但我已经使用了一段时间(在阅读了您的问题之后),并且认为将食谱放在这里可能对其他人也有用。

            因为我很懒,所以我只是把所有设置成一个 .bat 文件:

            @start C:\Path\To\Sumatra\SumatraPDF.exe %1.pdf
            @start latexdaemon -ini=pdflatex %1.tex
            @gvim -c ":au! CursorHoldI,CursorHold <buffer> silent! :update" -c ":set updatetime=800" %1.tex
            

            【讨论】:

            • 请注意:如果有人开始使用它并对其进行改进,请告诉我有关改进的信息。
            • 你能做一个一步一步的指导吗?我想尝试一下(作为 vim 用户的初学者。)
            • 我想通了,但问题是 sumatraPDF 似乎没有自动更改。
            【解决方案14】:

            BaKoMa 不是“免费”的,它仅适用于 Windows,但它是我遇到的最接近的 WYSIWYG LaTeX 编辑器。

            我个人更喜欢 LyX 的 WYSIWYM 方法,而不是 BaKoMa 的 WYSIWYG 方法......

            你为什么不直接Google呢?

            【讨论】:

              【解决方案15】:

              几年前我读过 Knuth 的一次采访,他提到这种事情是他的工作方式。我模糊且可能不准确的记忆是他会在 Emacs 中编辑原始的 TeX 或 Latex 代码,保持另一个窗口打开,查看器会通过一个脚本更新,该脚本会在源文件更改时注意到这一点。 (C-x C-s 而不是每次击键后 - 但仍然经常这样做。)

              显然,这不是对您问题的真正答案,但对于那些说“不要那样做!”的仇恨者来说,这是值得考虑的事情。

              【讨论】:

              • 你有引文吗?我在 Stackoverflow 的答案中看到太多垃圾错误归咎于 Knuth :p [而且 Knuth 当然不会使用 LaTeX。]
              • 没有。我读过几篇采访;最近的一个系列是去年 CACM 的一个系列,但我不认为是这样。 (虽然它可能是。)我确信总体情况,但正如我所说,细节不太可能都是正确的。
              【解决方案16】:

              WhizzyTeX 与 Active-DVI 可以完全满足您的需求。它的网站可能对功能更清楚一点,但我已经使用过它,而且效果很好。此外,尽管看起来有点过时,但它得到了积极的维护; the documentation 本周更新。

              【讨论】:

                【解决方案17】:

                尚未准备好迎接黄金时段,但Gliimpse project 似乎是一种非常有前途的方法,可以很好地处理潜在问题(同时拥有源代码和最终结果)。

                基本上,这个想法是您在编辑器中按下 alt 键,然后编辑器转换到最终(编译)结果,直到您松开键并返回到 Latex '源代码'。

                页面上的演示和视频令人印象深刻。

                在codinghorror 博客上有一个很好的post

                【讨论】:

                  【解决方案18】:

                  大部分都是很好的答案。这对我自己很有用。 只是关于 Kile 和 (Alt-1) 的小评论(见上文 Stefan Mai)。 如果我稍后使用 (Alt-1),我必须使用 (Alt-Tab) 回去进行编辑。 这不是很方便。 更好的方法是将 Kile 放在屏幕的一半(右|左)或(上|下)。 将 dvi 查看器放到屏幕的另一半,然后使用 (Alt-2)。 您将留在 Kile 编辑器中,并且 dvi-viewer 将被更新。 这对我来说是实时的。 不幸的是,它只对 Linux 用户有用。 但我想这样的事情可以在 Windows 中使用“Texmaker”来完成。 附言Emacs 非常适合编程、LaTex 等,但是很难学。

                  【讨论】:

                    【解决方案19】:

                    【讨论】:

                      【解决方案20】:

                      只需使用 Emacs for Windows + latex-preview (auctex)。它对我有用:)

                      【讨论】:

                        【解决方案21】:

                        关于 LaTeX 的“非所见即所得”,我可以指出a previous question 及其一些答案,这提出了一些有趣的观点。 (该链接现在指向该页面的存档版本,该版本已被关闭并作为题外话删除,但仍然包含有用的想法。)

                        特别是,LaTeX 文件是对您正在撰写的文档的逻辑而非物理描述这一事实导致了一些有用的功能,如上述问题/答案中所述:使用 cmets、缩进作为本着与其他语言没有什么不同的精神,使事情变得更清洁、更易读等等。

                        【讨论】:

                          【解决方案22】:

                          这是一个糟糕的期望。因为它违反了 TeX 系统的原则之一:

                          视觉属性不能与逻辑结构混在一起

                          您正在寻找一个半WYSIWYG 系统,就像大多数流行的 HTML 编辑器一样。 WYSIWYG 和 LaTeX 词就像 Hokey 和花样滑冰 :-) LaTeX 和所有基于 TeX 的系统都不能也不想成为 WYSIWYG。

                          【讨论】:

                            【解决方案23】:

                            回答你的第二个问题,为什么这不是已经在某个地方完成了? 它已经在某个地方完成了,很久以前。查看Scientific Word,假设您不介意商业应用程序。它可以满足您的需求,并且他们提供 30 天试用版。

                            注意:我自己不使用这个程序,但我很多年前就听说过,它似乎符合您的标准。

                            正如许多其他受访者所评论的那样,大多数 LaTeX 用户似乎对没有实时所见即所得编辑器感到满意。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2019-01-02
                              • 2015-01-20
                              • 2010-10-20
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多