【问题标题】:Cross-references in RMarkdown for Word documentsRMarkdown for Word 文档中的交叉引用
【发布时间】:2018-09-14 15:33:22
【问题描述】:

我正在编写一个 Rmd 文件,该文件将被编入 Word 中的报告。 我正在尝试为一个图形创建一个标签,并对其进行交叉引用,如下所示:

如图\ref{fig:TotalCarStock}等所示。

```{r TotalCarStock, echo=FALSE, fig.cap="Forecasted versus actual car stock", out.width = '100%'}
knitr::include_graphics("C:/Usr/WP vehicle stock/TotalCarStock.jpg")
```

我在这里看到的所有讨论都表明这在创建 pdf 文档时可以正常工作,但我希望将我的 Rmd 文件“编织”到 Word 文档中。 Word 文档已正确创建,但标签和交叉引用保持空白。

【问题讨论】:

    标签: r label r-markdown


    【解决方案1】:

    @LaurentFrankx 终于找到了解决办法:如果在YAML header的output行中使用bookdown::word_document2:而不是word_document,就可以得到如下结果。

    ---
    title: "VHS Report"
    author: "Laurent Franckx"
    date: "14 September 2018"
    output: 
      bookdown::word_document2:
      fig_caption: yes
    #pdf_document: default
    ---
    
    As illustrated in Figure \@ref(fig:TotalCarStock), etc, etc. However, `out.width = '100%'` in an R chunk cannnot be specified when we want to produce a `.docx` output, because `out.width = '100%'` is used for creating `.pdf` outcome.
    
    ```{r TotalCarStock, echo=FALSE, fig.cap="Forecasted versus actual car stock"}
    knitr::include_graphics("https://i.stack.imgur.com/JlNbf.png")
    ```
    

    bookdown::word_document2: 和其他***_document2 函数由@Yihui 创建。我们可以在官方guidebook 中看到它们的用法。这些使我们能够放置自动编号,如here 中所述。

    进一步的定制,我们可以参考标题为Happy collaboration with Rmd to docx的文章。虽然本文介绍了如何使用word_document 配置格式,但这些提示在更新后的函数word_document2 中仍然有效且有用。

    【讨论】:

    • 太棒了!这确实解决了问题。非常感谢。只是出于好奇,你在哪里找到这个? (我只是使用了RStudio提供的默认header)
    • @LaurentFranckx 很抱歉我的回复晚了,但我很高兴听到你的成功!我编辑了答案并添加了word_document2的来源。
    • 很好的答案,它奏效了。然而! - 参考名称不喜欢下划线。我只是花了很长时间试图找出它为什么不起作用。我使用了fig:Total_Car_Stock{r Total_Car_Stock...,(或我的文档中的等效项)不起作用,但fig:TotalCarStock {r TotalCarStock... 出于某种原因确实有效。有谁知道这是为什么?
    • 也为我工作!
    【解决方案2】:

    根据创建者@Yihui的the Rmarkdown guide\@ref(figure's label)应该用来指代一个数字。因此,您可以使用\@ref(fig:TotalCarStock),而不是\ref{fig:TotalCarStock},如下所示:

    如图\@ref(fig:TotalCarStock)等所示。

    在编织.docx.pdf.html 时,符号\@ref(figure's/table's label) 可用于引用图像、图形或表格。

    【讨论】:

    • 其实我已经尝试过实现了。然后我得到以下输出:“如图@ref{fig:TotalCarStock} 所示,预测的汽车库存远高于实际汽车库存”
    • 我监督了一个基本解决方案:您的文件路径可能需要修复。目前,您的文件路径为C:/Usr/WP vehicle stock/TotalCarStock.jpg,其中包含一些` `(空格)。这似乎导致了问题。如果可能,您能否重命名路径以使文件路径没有空格? (例如C:/Usr/WP-vehicle-stock/TotalCarStock.jpg)我认为-(连字符)比_(下划线)更方便,因为有时TeX引擎无法读取带有下划线的路径。虽然我知道你想要一个 .docx 输出,但据我所知,使用 - 是更安全的方式。
    • 我已经修改了这个,把问题依旧。当我使用 ggplot2 创建直接在 R 块中创建的图形时,也会出现这种情况。实际上,即使我的图形标题也不包含数字。所以我认为问题可能出在开头:---标题:“VHS报告”作者:“Laurent Franckx”日期:“2018年9月14日”输出:word_document:fig_caption:是#pdf_document:默认---跨度>
    • @LaurentFranckx 正如您已经注意到的,关键在于您的 YAML 标头。我添加了另一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多