gpt4 book ai didi

r - knitr:如何将子 .Rnw 文档与(相对)图形路径一起使用?

转载 作者:行者123 更新时间:2023-12-04 18:06:19 26 4
gpt4 key购买 nike

我有 parent 和 child Rnw文档。子文档位于子文件夹 children 中, IE。

+-- parent.Rnw
+-- children
+-- child.Rnw
+-- figure
+-- test.pdf

现在我想创建(边距)图 test.pdf从子文档内部使用 pdf函数并将其放入文件夹 figurechildren文件夹(即 figure 的本地 child.Rnw 文件夹)。

parent.Rnw
\documentclass{article}
\begin{document}
I am the parent
<<child, child='children/child.Rnw'>>=
@
\end{document}

child.Rnw
<<parent, echo=FALSE, cache=FALSE>>=
knitr::set_parent("../parent.Rnw")
@

I am the child doc.

<<>>=
pdf("figure/test.pdf")
plot(1:10)
dev.off()
@

\marginpar{ \includegraphics[width=\marginparwidth]{figure/test.pdf} }

编译时 child.Rnw一切正常。 figure/test.pdf的路径对子文档是正确的,但在编译父文档时则不正确。那么它必须是 children/figure/test.pdf .

问题:怎样才能有正确的子编译路径 父文档?

最佳答案

对我来说,以下解决方案是合适的:
在子文档的顶部,我定义了一个函数,该函数根据文档是否作为子文档运行来调整相对路径:

# rp: a relative path
adjust_path <- function(path_to_child_folder, rp)
{
is.child <- knitr:::child_mode()
function(rp)
{
if (is.child)
rp <- file.path(path_to_child_folder, rp)
rp
}
}

现在,我们提供函数 adjust_path 的从父级到子级文档的路径。 .
ap <- adjust_path("children")

该函数返回一个新函数,可用于调整子文档中的相对路径。现在我们可以写
\includegraphics[width=\textwidth]{\Sexpr{ap("figure/test.pdf")}} 

如果作为子文档或独立文档运行,路径将是正确的。

关于r - knitr:如何将子 .Rnw 文档与(相对)图形路径一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com