Table和图cross-reference警官R
Table and Figure cross-reference officer R
我希望能够cross-reference一个table或者word文档中的图使用官R包。
到目前为止我遇到过这些材料,但他们似乎没有解决方案:
https://davidgohel.github.io/officer/articles/word.html#table-and-image-captions
和一个类似的问题
add caption to flextable in docx
在这两个中,我只能插入 2 级标题 header 而不是真正的 table 标题。
我希望能够在 Word 中执行的操作是插入 -> Cross-reference 并转到参考类型:Table 并在那里查看我的标题。现在我只能看到编号项下的标题。
Officer 或其他地方是否存在此功能?
在文字中,table 数字使用 { SEQ \@ arabic }
模式,但对它们的引用使用 { REF bookmark \h }
。我们可以使用它来制作可以引用 SEQ 字段的新代码。
代码:
ft <- regulartable(head(iris)) # create flextable
str <- paste0(' REF ft \h ') # create string to be used as reference to future bookmark
doc <- read_docx() %>%
body_add_par('This is my caption' , style = 'Normal') %>% # add caption
slip_in_seqfield(str = "SEQ Table \@ arabic",
style = 'Default Paragraph Font',
pos = "before") %>% # add number for table
body_bookmark('ft') %>% # add bookmark on the number
slip_in_text("Table ",
style = 'Default Paragraph Font',
pos = "before") %>% # add the word 'table'
body_add_flextable(value = ft, align = 'left') %>% # add flextable
body_add_break() %>% # insert a break (optional)
slip_in_text('As you can see in Table',
style = 'Default Paragraph Font',
pos = 'after') %>% # add the text you want before the table reference
slip_in_seqfield(str = str,
style = 'Default Paragraph Font',
pos = 'after') %>% # add the reference to the table you just added
slip_in_text(', there are a lot of iris flowers.',
style = 'Default Paragraph Font',
pos = 'after') %>% # add the rest of the text
print('Iris_test.docx') # print
希望这对您有所帮助:)
郑重声明,您现在可以使用 {crosstable}
包中的一些辅助函数来更轻松地完成此操作。
免责声明:我是该软件包的开发人员,这些功能受到 @morgan121 的回答的高度启发。谢谢摩根!
这是一个例子:
library(officer)
library(crosstable)
library(ggplot2)
options(crosstable_units="cm")
ft = regulartable(head(iris))
my_plot = ggplot(data = iris ) +
geom_point(mapping = aes(Sepal.Length, Petal.Length))
doc = read_docx() %>%
body_add_title("Dataset iris", 1) %>%
body_add_normal("Table \@ref(table_iris) displays the 6 first rows of the iris dataset.") %>%
body_add_flextable(ft) %>%
body_add_table_legend("Iris head", bookmark="table_iris") %>%
body_add_normal("Let's add a figure as well. You can see in Figure \@ref(fig_iris) that sepal length is somehow correlated with petal length.") %>%
body_add_figure_legend("Relation between Petal length and Sepal length", bookmark="fig_iris") %>%
body_add_gg2(my_plot, w=14, h=10, scale=1.5)
print(doc , 'Iris_test.docx')
有关 https://danchaltiel.github.io/crosstable/articles/crosstable-report.html 的更多信息。
与 morgan121 的代码一样,您必须 select MS Word 中的所有文本并按两次 F9 以使数字正确更新。
我希望能够cross-reference一个table或者word文档中的图使用官R包。
到目前为止我遇到过这些材料,但他们似乎没有解决方案: https://davidgohel.github.io/officer/articles/word.html#table-and-image-captions 和一个类似的问题 add caption to flextable in docx
在这两个中,我只能插入 2 级标题 header 而不是真正的 table 标题。
我希望能够在 Word 中执行的操作是插入 -> Cross-reference 并转到参考类型:Table 并在那里查看我的标题。现在我只能看到编号项下的标题。
Officer 或其他地方是否存在此功能?
在文字中,table 数字使用 { SEQ \@ arabic }
模式,但对它们的引用使用 { REF bookmark \h }
。我们可以使用它来制作可以引用 SEQ 字段的新代码。
代码:
ft <- regulartable(head(iris)) # create flextable
str <- paste0(' REF ft \h ') # create string to be used as reference to future bookmark
doc <- read_docx() %>%
body_add_par('This is my caption' , style = 'Normal') %>% # add caption
slip_in_seqfield(str = "SEQ Table \@ arabic",
style = 'Default Paragraph Font',
pos = "before") %>% # add number for table
body_bookmark('ft') %>% # add bookmark on the number
slip_in_text("Table ",
style = 'Default Paragraph Font',
pos = "before") %>% # add the word 'table'
body_add_flextable(value = ft, align = 'left') %>% # add flextable
body_add_break() %>% # insert a break (optional)
slip_in_text('As you can see in Table',
style = 'Default Paragraph Font',
pos = 'after') %>% # add the text you want before the table reference
slip_in_seqfield(str = str,
style = 'Default Paragraph Font',
pos = 'after') %>% # add the reference to the table you just added
slip_in_text(', there are a lot of iris flowers.',
style = 'Default Paragraph Font',
pos = 'after') %>% # add the rest of the text
print('Iris_test.docx') # print
希望这对您有所帮助:)
郑重声明,您现在可以使用 {crosstable}
包中的一些辅助函数来更轻松地完成此操作。
免责声明:我是该软件包的开发人员,这些功能受到 @morgan121 的回答的高度启发。谢谢摩根!
这是一个例子:
library(officer)
library(crosstable)
library(ggplot2)
options(crosstable_units="cm")
ft = regulartable(head(iris))
my_plot = ggplot(data = iris ) +
geom_point(mapping = aes(Sepal.Length, Petal.Length))
doc = read_docx() %>%
body_add_title("Dataset iris", 1) %>%
body_add_normal("Table \@ref(table_iris) displays the 6 first rows of the iris dataset.") %>%
body_add_flextable(ft) %>%
body_add_table_legend("Iris head", bookmark="table_iris") %>%
body_add_normal("Let's add a figure as well. You can see in Figure \@ref(fig_iris) that sepal length is somehow correlated with petal length.") %>%
body_add_figure_legend("Relation between Petal length and Sepal length", bookmark="fig_iris") %>%
body_add_gg2(my_plot, w=14, h=10, scale=1.5)
print(doc , 'Iris_test.docx')
有关 https://danchaltiel.github.io/crosstable/articles/crosstable-report.html 的更多信息。
与 morgan121 的代码一样,您必须 select MS Word 中的所有文本并按两次 F9 以使数字正确更新。