我正在尝试构建一个遵循最佳实践的项目目录组织结构。调整这个结构,我的项目结构的一部分如下所示:
myproject
myproject/code/r/main.r
myproject/report/main.tex
问:我应该告诉我的 R 输出去哪里?是否有一个普遍接受的最佳实践,即最不易损坏、最模块化、最直观等?
我看到了一些选择:
myproject/code/r/
。在这种情况下main.tex
将包括类似 的语句\includgraphics{../code/r/output.pdf}
。但这似乎很笨拙。main.tex
真的应该“知道” 吗../code/r/
?myproject/code-output
。在这种情况下main.tex
将包括类似 的内容\includgraphics{../code-output/output.pdf}
。main.r
将包括类似 的语句pdf("../../code-output/output.pdf")
。目前这是我首选的方法。将其输出“放入”可以合理“查看”main.r
的目录中似乎合乎逻辑。main.tex
myproject/report/img
。在这种情况下main.tex
将包括类似 的内容\includgraphics{./img/output.pdf}
。main.r
将包括类似 的语句pdf("../../report/img/output.pdf")
。我不喜欢这种方法,原因与上面的“1.”相同:在这种情况下,似乎不应该main.r
“知道”\report\img
。
我不是程序员,但可能做了很多这样的事。所以,我很好奇程序员是如何看待这类事情的。欢迎大家发表自己的看法!
答案1
是否存在普遍接受的最佳实践
再次没有最佳实践。这适用于所有 LaTeX,所以请不要再要求最佳实践 ;-)
我不是程序员
如果你使用 R 和 TeX,那么你就是一名程序员 :-)
总的来说,我认为您的所有建议都很好。建议将文档与数据文件分开,因为 LaTeX 喜欢生成大量辅助文件。虽然有--output-directory
您链接的帖子中提到的选项,但许多编辑器并不知道这一点,默认情况下将输出文件放在输入/当前目录中。因此,关于 LaTeX 文件的经验法则是为每个文档使用一个专用目录。如果您想从多个源编译多个版本,则这些版本应该进入不同的输出目录。
关于图片和其他数据输入文件:(1)和(2)理论上可能会导致问题,因为可以禁用从父目录读取文件(这在接收不受信任输入的批处理环境中可能是有意义的)。我通常选择(1)和(3)的组合,让数据处理工具将其输出放在与输入相同的目录中(或类似目录),然后添加指向 LaTeX 目录中数据/图片文件的符号链接。我认为这种方法结合了(1)和(3)的优点:数据处理工具不需要知道它的输出用于 TeX 文档,而文档不需要知道数据来自哪里。所以在你的情况下,我会添加一个myproject/report/img/output.pdf
指向的符号链接../../code/r/output.pdf
。