【问题标题】:Cross-reference figure in a separate Rmarkdown (PDF) file单独的 Rmarkdown (PDF) 文件中的交叉引用图
【发布时间】:2018-07-15 05:01:18
【问题描述】:

我正在处理一个项目,其中包含两个单独的 .Rmd 文件,它们是同一项目的一部分。一个文件主要包含文本和方程式,另一个文件包含图形/图表。是否可以将第二个文件中的数字交叉引用到第一个 .Rmd 文件中?

File_1.Rmd

以下公式彻底改变了汽车制造业。它根据汽车的重量预测汽车每加仑行驶的里程数。

$$
mpg = f(wt)
$$

公式如图\@ref(fig:File_2.Rmd:plot)所示。

File_2.Rmd

```{r plot}
ggplot(mtcars, aes(wt, mpg)) +
geom_point()
```

两个文件的输出都是bookdown::pdf_document2

【问题讨论】:

    标签: r r-markdown bookdown cross-reference


    【解决方案1】:

    是的,这是可能的。

    为此,您必须使用块标签使用块选项fig.cap(例如```{r foo, fig.cap = "some title"})设置图形标题。这样做会在用于生成 PDF 输出的 LaTeX 文档中的图形环境中添加标题和标签。这个图形环境的标签将是块标签。

    在您的参考文献中必须使用前缀fig。请注意,无需在标签中包含包含您所指图形的 .Rmd 文件的名称:\@ref(fig:foo) 就足够了。

    使用您的示例,以下应该有效:

    File_1.Rmd

    以下公式彻底改变了汽车制造业。它根据汽车的重量预测汽车每加仑行驶的里程数。

    $$
    mpg = f(wt)
    $$
    

    公式如图\@ref(fig:plot)所示。

    File_2.Rmd

    ```{r plot, fig.cap = "some title"}
    ggplot(mtcars, aes(wt, mpg)) +
    geom_point()
    ```
    

    查看 bookdown 包的documentation 以获得更详细的说明。

    【讨论】:

    • 我实际上知道交叉引用是如何工作的。但在我看来,您所做的是交叉引用 在同一个 .Rmd 文件中而不是在单独文件中的图。还是我错过了什么?
    • 这是我在我的 bookdown 项目中一直使用多个 .Rmd 文件交叉引用的方式,并且它有效。或许我们在这种情况下对分离这个词有不同的理解?在我的示例中,File_1.Rmd 包含 YAML 标头以及示例代码和对 File_2.Rmd 中的绘图的引用,这是属于同一 bookdown 项目的单独文档。
    • 我想我在工作中缺少的是建立一个 bookdown 项目。我会努力的。
    • 我也对这个答案感到困惑。您在 File_1.Rmd 中的何处指定要在 File_2.Rmd 中找到块 plot
    • 如我的回答中所述,我不这样做,因为它没有必要。 bookdown 在生成.tex 文档(然后用于生成PDF 文件)之前合并所有.Rmd 文件的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2023-02-01
    • 2019-02-26
    • 1970-01-01
    • 2021-12-23
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多