Cross-referencing bookdown::html_document2 不工作
Cross-referencing bookdown::html_document2 not working
我正在用 Rmarkdown 写一篇论文,我正在使用 bookdown::html_document2
编织输出。 Cross-referencing 图形和表格使用常见的 Bookdown 语法,例如\@ref(tab:example_table)
。 Cross-referencing 章 sections/titles 没有,但是:\@ref(introduction)
不起作用。我将以 ??
结尾,这很奇怪,因为 link 指向正确的标签:/example_path/example_filename.html#introduction
。我正在处理一个文档。
我检查了源代码,章节标题的标签 ID 也正确无误。当我使用 Pandoc 的本机语法引用 section/title 章时,它确实有效:[introduction]
有效。但是,这将打印介绍的标签 section/title 而不是标题本身,因此 'introduction' 而不是带有大写字母 'I' 的 'Introduction'。一个明显的解决方法是使用 [Introduction][introduction]
但这违背了 cross-referencing 在我的情况下的目的。我还尝试给我的章节 sections/titles 自定义标签,但这也行不通。它也不适用于 bookdown::pdf_document2
.
根据 "Authoring Books with R Markdown" 的 this 部分,我使用的语法应该有效,所以我在这里缺少什么?
我正在使用 Pandoc 版本 2.7.3
。
编辑:
删除了 session 信息,因为它与问题无关。
编辑:
@RalfStubner 请求了一个 mre(我应该首先提供 - 感谢 Ralf 的建议!):
---
title: "Document Title"
author: "Jono3030"
date: "Last updated: `r Sys.time()`"
output:
bookdown::html_document2:
number_sections: no
bookdown::pdf_document2:
keep_tex: no
number_sections: no
bookdown::word_document2: default
---
# Introduction
This is the introduction
# Chapter_one
This is chapter one.
# Chapter_two
This is chapter two. Trying to reference the Introduction.
This does not work: \@ref(introduction)
This works: [Introduction][introduction]
This does not result in the title but in the tag: [introduction]
Rendered output
这是我收到的错误消息:
Output created: mre.html
Warning message:
The label(s) introduction not found
但是标签似乎是根据 html:
正确分配的
<div id="introduction" class="section level1">
<h1>Introduction</h1>
<p>This is the introduction</p>
</div>
这是 href:
<p>This does not work: <a href="#introduction"><strong>??</strong></a></p>
<p>This works: <a href="#introduction">Introduction</a></p>
<p>This does not result in the title but in the tag: <a href="#introduction">introduction</a></p>
在创建 mre 的过程中,我还注意到 \@ref(introduction)
如果不禁用部分的编号,行为会有所不同。在那种情况下 \@ref(introduction)
returns 部分的编号,即“1”。
mre:
---
title: "Document Title"
author: "Jono3030"
date: "Last updated: `r Sys.time()`"
output:
bookdown::html_document2: default
bookdown::pdf_document2:
keep_tex: no
number_sections: no
bookdown::word_document2: default
---
# Introduction
This is the introduction
# Chapter_one
This is chapter one.
# Chapter_two
This is chapter two. Trying to reference the Introduction.
This does work - returns number: \@ref(introduction)
This works: [Introduction][introduction]
This does not result in the title but in the tag: [introduction]
Rendered output
R-Markdown/bookdown 中的节标题具有实际文本(例如 Hello World
)和 ID。该 ID 可能是自动的(示例中的 hello-world
)或手动定义的(例如 Hello World {#hello-world-section}
)。有几种交叉引用部分的方法:
\@ref(ID)
,即 \@ref(hello-world)
或 \@ref(hello-world-section)
。如果该部分已编号,这将生成对该部分的数字引用。否则会生成 error/warning。
[section text]
,即[Hello World]
。您可以参考实际文本的部分。节标题的实际文本也将是 link 文本。
[link text][section text]
,即[see above][Hello World]
。您仍然使用部分文本,但使用了备用 link 文本。
[link text](#ID)
,即[see above](#hello-world)
或[see above](#hello-world-section)
。此处您使用的是部分 ID 并指定实际的 link 文本。
请注意,没有指定 ID 并自动获取实际文本的模式!此外,您从不指定 ID 括号,但始终在括号中。
顺便说一句,我找到了 cross-reference a section in the bookdown book quite clear. But since you seem to have misunderstood it, you might be able to suggest an improved wording。
引用 ID 不适用于 ID 中的 _
:例如,{#hello_world}
和 \@ref(hello_world)
不起作用,但 {#helloworld}
和 \@ref(helloworld)
应该没事。
我正在用 Rmarkdown 写一篇论文,我正在使用 bookdown::html_document2
编织输出。 Cross-referencing 图形和表格使用常见的 Bookdown 语法,例如\@ref(tab:example_table)
。 Cross-referencing 章 sections/titles 没有,但是:\@ref(introduction)
不起作用。我将以 ??
结尾,这很奇怪,因为 link 指向正确的标签:/example_path/example_filename.html#introduction
。我正在处理一个文档。
我检查了源代码,章节标题的标签 ID 也正确无误。当我使用 Pandoc 的本机语法引用 section/title 章时,它确实有效:[introduction]
有效。但是,这将打印介绍的标签 section/title 而不是标题本身,因此 'introduction' 而不是带有大写字母 'I' 的 'Introduction'。一个明显的解决方法是使用 [Introduction][introduction]
但这违背了 cross-referencing 在我的情况下的目的。我还尝试给我的章节 sections/titles 自定义标签,但这也行不通。它也不适用于 bookdown::pdf_document2
.
根据 "Authoring Books with R Markdown" 的 this 部分,我使用的语法应该有效,所以我在这里缺少什么?
我正在使用 Pandoc 版本 2.7.3
。
编辑:
删除了 session 信息,因为它与问题无关。
编辑:
@RalfStubner 请求了一个 mre(我应该首先提供 - 感谢 Ralf 的建议!):
---
title: "Document Title"
author: "Jono3030"
date: "Last updated: `r Sys.time()`"
output:
bookdown::html_document2:
number_sections: no
bookdown::pdf_document2:
keep_tex: no
number_sections: no
bookdown::word_document2: default
---
# Introduction
This is the introduction
# Chapter_one
This is chapter one.
# Chapter_two
This is chapter two. Trying to reference the Introduction.
This does not work: \@ref(introduction)
This works: [Introduction][introduction]
This does not result in the title but in the tag: [introduction]
Rendered output
这是我收到的错误消息:
Output created: mre.html
Warning message:
The label(s) introduction not found
但是标签似乎是根据 html:
正确分配的<div id="introduction" class="section level1">
<h1>Introduction</h1>
<p>This is the introduction</p>
</div>
这是 href:
<p>This does not work: <a href="#introduction"><strong>??</strong></a></p>
<p>This works: <a href="#introduction">Introduction</a></p>
<p>This does not result in the title but in the tag: <a href="#introduction">introduction</a></p>
在创建 mre 的过程中,我还注意到 \@ref(introduction)
如果不禁用部分的编号,行为会有所不同。在那种情况下 \@ref(introduction)
returns 部分的编号,即“1”。
mre:
---
title: "Document Title"
author: "Jono3030"
date: "Last updated: `r Sys.time()`"
output:
bookdown::html_document2: default
bookdown::pdf_document2:
keep_tex: no
number_sections: no
bookdown::word_document2: default
---
# Introduction
This is the introduction
# Chapter_one
This is chapter one.
# Chapter_two
This is chapter two. Trying to reference the Introduction.
This does work - returns number: \@ref(introduction)
This works: [Introduction][introduction]
This does not result in the title but in the tag: [introduction]
Rendered output
R-Markdown/bookdown 中的节标题具有实际文本(例如 Hello World
)和 ID。该 ID 可能是自动的(示例中的 hello-world
)或手动定义的(例如 Hello World {#hello-world-section}
)。有几种交叉引用部分的方法:
\@ref(ID)
,即\@ref(hello-world)
或\@ref(hello-world-section)
。如果该部分已编号,这将生成对该部分的数字引用。否则会生成 error/warning。[section text]
,即[Hello World]
。您可以参考实际文本的部分。节标题的实际文本也将是 link 文本。[link text][section text]
,即[see above][Hello World]
。您仍然使用部分文本,但使用了备用 link 文本。[link text](#ID)
,即[see above](#hello-world)
或[see above](#hello-world-section)
。此处您使用的是部分 ID 并指定实际的 link 文本。
请注意,没有指定 ID 并自动获取实际文本的模式!此外,您从不指定 ID 括号,但始终在括号中。
顺便说一句,我找到了 cross-reference a section in the bookdown book quite clear. But since you seem to have misunderstood it, you might be able to suggest an improved wording。
引用 ID 不适用于 ID 中的 _
:例如,{#hello_world}
和 \@ref(hello_world)
不起作用,但 {#helloworld}
和 \@ref(helloworld)
应该没事。