【问题标题】:Flextable table links not linking to my tablesFlextable 表格链接未链接到我的表格
【发布时间】:2022-01-18 20:11:29
【问题描述】:

我使用 Rmarkdown(输出:word_document)在 docx 中生成了表格,带有标题和表格链接。出于某种原因,单击链接会将我带到我的 word 文件的顶部,而不是相关的表格。 这是一些示例代码:#第一次遇到与 rmarkdown 相关的问题,请与我联系

library(officer)
library(flextable)
library(knitr)
library(magrittr)

# set chunks defaults
knitr::opts_chunk$set(echo=FALSE, message=FALSE, warning=FALSE)

#create example df
df1 <- data.frame(col1=c("a","b","c"),
        col2=c("1","2","3"))
df2 <- data.frame(col1=c("d","e","f"),
                  col2=c("4","5","6"))

(链接到表 2)

#create flextable 1
ft1 <- flextable(df1)
ft1 <- set_caption(ft1, "Caption 1.",
                   style = "Table Caption", 
                   autonum = run_autonum(seq_id = "tab",bkm="tab1"))

ft1

(链接到表 1)我按此顺序设置这些链接,希望能让问题更清楚。

#links created using format [(Link)](#tab:tab2)

#second flextable
ft2 <- flextable(df2)
ft2 <- set_caption(ft2, "Caption 2.",
                   style = "Table Caption",
                   autonum = run_autonum(seq_id = "tab",bkm="tab2"))

ft2

如果使用 flextable 可以做到这一点,我可能在某个地方犯了一个小错误,但无法发现它。 到目前为止,这是我发现的唯一一个使用 Rmarkdown 呈现 docx 表输出的函数

请帮忙。

【问题讨论】:

    标签: r-markdown docx flextable


    【解决方案1】:

    我为你做了这个例子:

    ---
    title: "Untitled"
    author: "Your Name"
    date: "December 16, 2021"
    output:
      bookdown::word_document2: default
    ---
    
    ```{r setup}
    library(flextable)
    
    #create example df
    df1 <- data.frame(col1=c("a","b","c"),
            col2=c("1","2","3"))
    df2 <- data.frame(col1=c("d","e","f"),
                      col2=c("4","5","6"))
    ```     
    
    ```{r Table1}
    ft1 <- flextable(df1)
    set_caption(ft1, "I love R language")
    ```    
    \newpage
    
    ```{r Table2}
    ft2 <- flextable(df2)
    set_caption(ft2, "I hope, it loves me too")
    ```       
    \newpage
    
    [(Click, here is the first table)](#tab:Table1)
       
    [(Here is the second)](#tab:Table2)
    

    祝你在学习R的过程中取得好成绩;)


    补充:

    ```{r Table3, tab.cap = "An another table"}
    flextable(df2)
    ```
    
    \newpage
    
    Ok, here is a third table [(Here is the third)](#tab:Table3).
    

    【讨论】:

    • 这并不能解决问题,但它确实很好地突出了问题(我假设这就是你想要的)。谢谢。
    • @Pepper 它工作正常。 Knit with parameters -&gt; knit to word_document2
    • 我仔细检查了代码并再次运行它,并使用正确的输出选项。对我来说仍然不起作用。我认为这可能是我系统上的 office word 设置的问题。不是代码的预期结果,但右键单击链接并将它们手动定位到正确的表是可行的。
    • @Pepper 嗯,我不知道。但这是一个有效的例子。试试这个添加。
    【解决方案2】:

    对于其他可能遇到此问题的人。

    使用上面的 @manro 示例,我通过编辑 YAML 使其工作。

    title: "Untitled"
    author: "Your Name"
    date: "December 16, 2021"
    output:
      officedown::rdocx_document:
        reference_docx: template.docx
    
    library(flextable)
    library(officedown)
    library(officer)
    
    #create example df
    df1 <- data.frame(col1=c("a","b","c"),
            col2=c("1","2","3"))
    df2 <- data.frame(col1=c("d","e","f"),
                      col2=c("4","5","6"))
    
    ft1 <- flextable(df1)
    set_caption(ft1, "I love R language")
    

    \新页面

    ft2 <- flextable(df2)
    set_caption(ft2, "I hope, it loves me too")
    

    \新页面

    并且通过从下面的链接示例中删除 [(Link)](#tab:tab2) 中的“tab:”。

    [(Click, here is the first table)](#tab:Table1)

    [(Here is the second)](#tab:Table2)

    离开我。

    [(Click, here is the first table)](#Table1)

    [(Here is the second)](#Table2)

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2010-10-08
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2012-03-01
    • 2018-06-30
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多