如何自动引用 Tufte 讲义中的数字?
How can I automate reference to figures in Tufte handouts?
我正在尝试使用 R markdown 和 Tufte 讲义输出来生成 pdf 格式的报告。我一直无法使用任何建议的方法在文本中放置图形引用。我希望有人能说明我该怎么做。如果有任何建议,我将不胜感激。
到目前为止,我已经尝试了两种广泛的方法,这两种方法都在 回复中进行了描述。
选项 1:使用 \@ref(fig:chunk-label)
的基本降价方法。这导致 pdf 在图形标题中具有正确的格式,但 in-text 引用是 @ref(fig:fig-margin).
。请参阅脚本下方的图片:
```
---
title: "Markdown example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
```
```{r fig-margin, fig.cap=("MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert the figure reference here \@ref(fig:fig-margin).
此处复制了 pdf 中的图像,但我没有要粘贴的点。希望它是可见的
我尝试了 \@ref(fig:fig-margin)
格式的多种变体,例如删除反斜杠,但无济于事。
选项 2:使用字幕器。在上面 link 的答案选项中,建议将 Captioner 作为解决方案并提供一些代码。
我实现了这个选项,这次得到了正确的内联参考,但是图 1:图上的部分标题是重复的(即它显示为图 1:图 1:MPG 与马力等)。
这是使用 Captioner 方法从 pdf 中提取的图像
```
---
title: "Captioner example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
library(captioner)
# invalidate cache when the tufte version changes
knitr::opts_chunk$set(tidy = FALSE, cache.extra = packageVersion('tufte'))
options(htmltools.dir.version = FALSE)
table_captions <- captioner::captioner()
figure_captions <- captioner::captioner(prefix="Figure.")
fig.cap <- captioner::captioner()
t.ref <- function(label){
stringr::str_extract(table_captions(label), "[^:]*")
}
f.ref <- function(label){
stringr::str_extract(figure_captions(label), "[^:]*")
}
```
```{r fig-margin, fig.cap=figure_captions("fig_one", "MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert experiment ref here `r f.ref("fig_one")`.
如果可能的话,我的偏好是仅使用基本降价方法,但如果唯一的方法是使用 Captioner,那么如果有人可以建议摆脱重复(我确实尝试了一些对设置块中定义的功能进行了调整,但 none 有效。
如有任何建议,我们将不胜感激。 Plan B当然就是手动做。
提前致谢。
我 运行 遇到了与 tufte 讲义 (PDF) 相同的问题,所以我尝试 \ref
和大括号 { }
不带 @-符号,如 rmarkdown 示例 #1 中所建议的 你在上面链接了。似乎有效。
\ref{fig:my_fig}
我发现连字符(我相信在分数下)会导致引用问题。所以 \@ref(fig:fig-margin)
不会起作用,但是 \@ref(fig:figMargin)
会起作用,前提是您将块重命名为 figMargin
.
我正在尝试使用 R markdown 和 Tufte 讲义输出来生成 pdf 格式的报告。我一直无法使用任何建议的方法在文本中放置图形引用。我希望有人能说明我该怎么做。如果有任何建议,我将不胜感激。
到目前为止,我已经尝试了两种广泛的方法,这两种方法都在
选项 1:使用 \@ref(fig:chunk-label)
的基本降价方法。这导致 pdf 在图形标题中具有正确的格式,但 in-text 引用是 @ref(fig:fig-margin).
。请参阅脚本下方的图片:
```
---
title: "Markdown example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
```
```{r fig-margin, fig.cap=("MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert the figure reference here \@ref(fig:fig-margin).
此处复制了 pdf 中的图像,但我没有要粘贴的点。希望它是可见的
我尝试了 \@ref(fig:fig-margin)
格式的多种变体,例如删除反斜杠,但无济于事。
选项 2:使用字幕器。在上面 link 的答案选项中,建议将 Captioner 作为解决方案并提供一些代码。
我实现了这个选项,这次得到了正确的内联参考,但是图 1:图上的部分标题是重复的(即它显示为图 1:图 1:MPG 与马力等)。
这是使用 Captioner 方法从 pdf 中提取的图像
```
---
title: "Captioner example"
date: "`r Sys.Date()`"
output:
tufte::tufte_handout:
citation_package: natbib
link-citations: yes
---
```{r setup, include=FALSE}
library(tufte)
library(captioner)
# invalidate cache when the tufte version changes
knitr::opts_chunk$set(tidy = FALSE, cache.extra = packageVersion('tufte'))
options(htmltools.dir.version = FALSE)
table_captions <- captioner::captioner()
figure_captions <- captioner::captioner(prefix="Figure.")
fig.cap <- captioner::captioner()
t.ref <- function(label){
stringr::str_extract(table_captions(label), "[^:]*")
}
f.ref <- function(label){
stringr::str_extract(figure_captions(label), "[^:]*")
}
```
```{r fig-margin, fig.cap=figure_captions("fig_one", "MPG vs horsepower, colored by transmission."), fig.height=3.5, fig.margin=TRUE, fig.width=3.5, message=FALSE, cache=FALSE}
library(ggplot2)
mtcars2 <- mtcars
mtcars2$am <- factor(
mtcars$am, labels = c('automatic', 'manual')
)
ggplot(mtcars2, aes(hp, mpg, color = am)) +
geom_point() + geom_smooth() +
theme(legend.position = 'bottom')
```
Insert experiment ref here `r f.ref("fig_one")`.
如果可能的话,我的偏好是仅使用基本降价方法,但如果唯一的方法是使用 Captioner,那么如果有人可以建议摆脱重复(我确实尝试了一些对设置块中定义的功能进行了调整,但 none 有效。
如有任何建议,我们将不胜感激。 Plan B当然就是手动做。
提前致谢。
我 运行 遇到了与 tufte 讲义 (PDF) 相同的问题,所以我尝试 \ref
和大括号 { }
不带 @-符号,如 rmarkdown 示例 #1 中所建议的
\ref{fig:my_fig}
我发现连字符(我相信在分数下)会导致引用问题。所以 \@ref(fig:fig-margin)
不会起作用,但是 \@ref(fig:figMargin)
会起作用,前提是您将块重命名为 figMargin
.