从一个由大型多文件Sweave项目衍生出来的书、论文或报告中校对PDF

10

我非常喜欢可重复性研究。 我经常使用make、Sweave、LaTeX和R来生成大量的研究报告(即许多Sexpr()命令以及大量的图表)。

显然,R CMD Sweave会在编译时发现R代码块中的某些错误。 但是生成的PDF仍可能包含不良结果。 我有一些策略来校对这些文档,但我也很想从其他SO用户那里学习。

问题:

  1. 在生成基于大型多文件Sweave项目的PDF时,是否有任何与校对和质量控制相关的技巧?
  2. 您在生成的PDF中遇到的最常见错误是什么?
  3. 您如何高效地确定生成的PDF中的错误?
  4. 您如何高效地在PDF和Rnw源之间切换?
3个回答

4
我不确定这是否符合您的需求,但如果您使用emacs,auctex和emacs speaks statistics,则可以减少大部分这些问题。它们都可以在Linux仓库中获得,并且Windows有一个预编译的二进制可用。http://vgoulet.act.ulaval.ca/en/emacs/windows/ Emacs的主要优点是您可以在一个窗口中拥有R控制台,在另一个窗口中拥有tex源代码。在.Rnw文件中,Emacs将适当地突出显示LaTeX和R,这确实有助于我发现错误。您还可以评估R代码的小区域,并在TeX中预览表格和其他对象。虽然它肯定需要一些学习曲线,但我已经使用它约一个月了,它已经使我的可重复研究效率提高了约50%。一旦掌握了某些键绑定,它们就非常直观,另一个优点是Emacs为几乎每种编程语言提供模式,这意味着学习如何使用它所花费的时间将一次次回报自己。
具体而言: 1)Emacs通过语法突出显示并预览区域来帮助格式特定表格以您想要的方式,没有漏行或标签。 2)通常我会在文档的多个阶段中开发我的统计分析,因此会出现拼写错误和缺少包的错误。 3)Emacs将检测到任何编译错误,并且可以在编译整个文档之前单独测试R代码。 4)如果您使用sweave命令(Alt+m,s),然后编译为LateX ctrl c(通常需要两次以获得正确的标签和Bibtex),另一个ctrl c将打开PDF进行查看(不幸的是,默认情况下它不会在emacs中打开,但我想有人已经制作了启用此功能的软件包或脚本)。
我确信其他人可以提供更多有关emacs在这种工作中的有用性的示例,正如我所说,我刚开始使用它(但它比我使用过的所有其他tex和R程序都要好 - Technix center,kile,texmaker)。
我不建议那些不了解R和LaTeX的人使用它,但是如果您掌握了它们,它将使您的效率提高数倍。

它真的很......ebib看起来不错,但我一直遇到一些设置问题。 - richiemorrisroe
Emacs、Auctex和ESS听起来很不错。我目前正在调整使用Vim和r-vim插件的工作流程。它可以完成你提到的很多功能(Rnw语法高亮;R缓冲区;将代码发送到R等),但并非全部;我使用make运行sweave、latex和文档查看器。 - Jeromy Anglim
我曾经考虑过vim(基于你的博客和其他原因),但最终选择了Emacs,因为a)lisp听起来很酷,b)ESS支持更多的统计语言(BUGS,JAGS和SAS),我希望我的工具能够更长久地保持有用。 - richiemorrisroe
我同意。当涉及到统计和LaTeX时,Emacs有一些很棒的卖点。 - Jeromy Anglim

3
很好的问题。一个人所看到的问题很大程度上取决于他所做的工作。对我来说,最常见的非R问题是拼写错误、图表不协调、方程式中的错误等等。
我发现最可靠、平台无关和高效的错误捕捉策略是频繁地导出为PDF。先做一点工作,然后检查一下。再做一点工作,再次检查。但是对于大型项目来说,这样做可能会有些麻烦。像cacheSweave这样的工具可以帮助解决这个问题。总之,如果你在各个地方工作了2个小时,然后出现了错误,那么试图追踪错误就不是什么乐趣了。
对于大型项目,在第287个代码块(或其他某个位置)出现错误时,停下来把R代码分离开来会有所帮助。从上下文中,我通常可以找出错误的位置并快速导航到那里。另一个选择是给代码块命名,但是谁想要想出591个名称呢?
对于方程/数学问题,具有内联预览功能的编辑器很有帮助。LyX和AUCTeX都有这个功能。这样,如果你错过了某个斜杠或逗号,那么你会立即知道,因为预览会出错。这节省了我无数的时间。
LyX中没有内联图像预览(由Sweave生成),但Org-mode有。出于同样的原因,这是一个非常强大的优势。
现在我没有其他LaTeX错误了,因为LyX是WYSIWYM;它会自动生成LaTeX。Org-mode在这方面也很好。AUCTeX和ESS有一些工具可以帮助解决问题,并且还不错(Rstudio看起来类似)。我没有太多使用Eclipse等等工具的经验。
有些问题很难注意到,除非仔细研究日志,比如一个URL(或表格等)跑到了页面外面。频繁导出PDF并检查工作是最好的方法,除了让另一组眼睛进行同行评审之外。
顺便说一下,LyX用aspell检查非LaTeX标记的拼写错误。

1
顺便提一下,当你问起如何在PDF和Rnw源文件之间移动时,据我所知,PDF+Rnw没有反向DVI搜索(请纠正我,有人)。但是使用像LyX这样的工具,PDF和.lyx文件本质上是相同的。如果你在一个文件中找到了问题,那么在另一个文件中也会找到它。 - G. Jay Kerns
Duncan Murdoch正在开发Rnw反向搜索的alpha软件:http://r-forge.r-project.org/projects/sweavesearch。我还没有尝试过。 - Jeromy Anglim

1

我不确定你所说的“校对”具体指什么,但我发现在LaTeX中使用大量\marginpar语句来记录未来修复的任何问题通常很有效。另一种方法是使用良好的PDF阅读器在最终PDF中放置注释,但如果重新编译,则这些注释会消失。

对于我们这些因使用Emacs而导致永久性手部问题的人(不开玩笑!),Sweave的基于GUI的选项是Eclipse。它可以设置为单击编译Sweave,进行适当的代码高亮显示,并具有常见的IDE功能。 Eclipse还通过一个软件包提供拼写检查,这有助于校对。不确定是否可以将拼写检查器设置为仅校对LaTeX部分,这将是理想的。

RStudio也是一个新但有趣的选择。


谢谢。我倾向于在源代码中使用类似\todo{fix this}的东西来记录需要修复的内容。我曾经使用StatET和Eclipse一段时间,非常喜欢它们,但现在更喜欢Vim。Vim包含拼写检查功能,并且可以设置语法方法以在R代码块和Sexpr'{}中禁用拼写检查。R-Studio看起来是一个很有前途的工具,尽管此时此刻我更愿意将所有东西带入最喜欢的编辑器而不是使用特定于R的工具。我想知道R-Studio是否会支持具有多个Rnw文件的文档,以及何时支持。 - Jeromy Anglim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接