使用 bookdown,必须一组 number_sections: true in _output.yml 用于交叉引用部分?

Using bookdown, must one set number_sections: true in _output.yml for cross referencing sections?

我可以使用 Bookdown 呈现 HTML 本书,但交叉引用部分失败。

不过我可以让它工作。首先,我将进行交叉引用。

编辑 2020 年 9 月 20 日 12:15 pst 以响应更多 repex 的请求

我的章节标题是这样的:

# Getting Articles {#getArt} 

不同章节的交叉引用是这样的,文字摘录:

you'll need to walk through the steps found in the Getting Articles section \@ref(getArt) )

此参考在 _output.yml 的 number_sections: true 时有效,但在 number_sections: false

时无效

结束编辑

在我的 _output.yml 中,我有以下代码;最后一行的评论是我的问题:

bookdown::gitbook:
 css: style.css
 toc_depth: 4
 number_sections: true    # if true, cross reference section labels render correctly

如果我设置 number_sections true 那么我可能会正确地交叉引用部分,就像这样,它显示为“...在获取文章部分 2”:

Jay Efran (2007) (to obtain this article, you’ll need to walk through the steps found in the Getting Articles section 2 )

但是如果我的 _output.yml 看起来像这样:

bookdown::gitbook:
 css: style.css
 toc_depth: 4
 number_sections: false   

我得到以下信息(注意“??”):

Jay Efran (2007) (to obtain this article, you’ll need to walk through the steps found in the Getting Articles section ?? )

根据Yuhui's bookdown text, section 2.6,它说明了以下关于交叉引用和“??”的内容:

When a referenced label cannot be found, you will see two question marks like ??, as well as a warning message in the R console when rendering the book.

但是我不知道该怎么办。显然,交叉引用存在并且正确工作,但仅在 _output.yml 条件下 number_sections: 设置为 true

有解决办法吗?

这不起作用的原因是 bookdown 将 \@ref(getArt)(其中 getArt 是您的部分的 ID)转换为该部分的 link 并设置该部分数字作为 link 文本。对于 HTML 输出,大致如下所示:

<a href="chapter_title.html#getArt">2</a>

(参见 GitHub 上的 source

如果设置 number_sections: false 则没有章节编号,因此 link 文本为“??”。在这方面,文档有些不准确(因为引用存在并且 link 确实有效)。

解决方法是手动为部分 header 分配一个 ID 并像这样引用它:

You'll need to walk through the steps found in the 
[Getting Articles section](#getArt).
    
# Getting Articles {#getArt}