【问题标题】:Cross-reference a python code chunk in Rmarkdown with reticulate使用网状交叉引用 Rmarkdown 中的 python 代码块
【发布时间】:2021-12-07 06:04:50
【问题描述】:

我有一个 Rmarkdown 文档,其中包含一些使用 reticulate 库的 python 代码块。代码完美执行输出;但是,我将如何使用其标签交叉引用文本中生成的图?我正在使用bookdown::pdf_documents2 等,并且使用标准\@ref(fig:my-plot) 对R 块的内联引用没有问题。

MWE 是:


```{python, my-plot}
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.arange(10)
plt.figure()
plt.plot(x, y)
plt.show()
```

如图\@ref(fig:my-plot)....


我尝试过不添加块类型(无花果等)

我知道我可以将图像保存到文件中并将其包含在knitr 中作为后续的 R 块,但最好单独通过 python 块来完成。

【问题讨论】:

  • 您可以保存绘图,然后使用简单的 Markdown 引用它,而无需使用语法![caption](myplot.png) 的代码块。好像你已经读过this resource。这表示您的代码块中还需要一个fig.cap 选项,但是您已经说过您尝试过
  • 谢谢,丹尼尔。是的,我当前的解决方法是将保存的绘图包含在带有标签的单独 R 块中 - 允许交叉引用在整个文档中保持正确的编号,例如,图 1.1 等。单个块的好处是 PDF image 是为 PDF 输出创建的,而 png 是为 HTML 创建的,所以如果可以的话,那将是理想的。

标签: python r r-markdown reticulate


【解决方案1】:

正如丹尼尔在问题 cmets.再次尝试这个,我可以在所有 HTML、PDF 和 word 输出中完美地交叉引用 python 块。更新后的 MWE 是:

```{python, my-plot, fig.cap="My Caption"}
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.arange(10)
plt.figure()
plt.plot(x, y)
plt.show()
```

如图\@ref(fig:my-plot)...


YAML 标头中的每个输出都需要不同的 bookdown:: 选项。对于 PDF (bookdown::pdf_document2)、word (bookdown::word_document2) 和 Rmdformats,在我的情况下,可以选择 use_bookdone: true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2021-12-23
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多