为什么 _output.yml 阻止我移动 bookdown::pdf_book() 中的引用?
Why does _output.yml prevent me from moving references in bookdown::pdf_book()?
这个问题的最高投票答案 How to move the bibliography in markdown/pandoc 表示,您可以通过在引用应该出现的位置添加 <div id="refs"></div>
来控制 rmarkdown/pandoc 中引用的位置。如果 _output.yml 包含 pdf_book 输出,这在 bookdown 包的 pdf_book 格式中不起作用。一个例子是包含两个文件的目录:
_output.yml
bookdown::gitbook:
bookdown::pdf_book:
latex_engine: xelatex
citation_package: natbib
keep_tex: yes
index.Rmd
---
title: "An example"
author: "Me"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
documentclass: book
bibliography: [packages.bib]
biblio-style: apalike
link-citations: yes
---
# Prerequisites
```{r include=FALSE}
# automatically create a bib database for R packages
knitr::write_bib(c(
.packages(), 'bookdown'
), 'packages.bib')
```
I want references *here*
<div id="refs"></div>
# Introduction
We are using the **bookdown** package [@R-bookdown].
调用 bookdown::render_book(output_format = 'bookdown::pdf_book')
会创建一个 pdf 文件,该文件在文档末尾有引用,而不是在 <div id="refs"></div>
指定的位置。相反,调用 bookdown::render_book(output_format = 'bookdown::gitbook')
会将引用放置在指定位置。
如果我删除 _output.yml 或删除 pdf_book 部分,
_output.yml
bookdown::gitbook:
然后 运行 bookdown::render_book(output_format = 'bookdown::pdf_book')
将引用放在正确的位置。
我的包版本信息是:
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042), RStudio 1.4.1103
Locale:
LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252
LC_MONETARY=English_Canada.1252 LC_NUMERIC=C
LC_TIME=English_Canada.1252
Package version:
assertthat_0.2.1 base64enc_0.1.3 bookdown_0.21.6 callr_3.5.1
cli_2.3.0 compiler_4.0.3 crayon_1.4.1 curl_4.3
desc_1.2.0 digest_0.6.27 evaluate_0.14 glue_1.4.2
graphics_4.0.3 grDevices_4.0.3 highr_0.8 htmltools_0.5.1.1
jsonlite_1.7.2 knitr_1.31 magrittr_2.0.1 markdown_1.1
methods_4.0.3 mime_0.10 pkgbuild_1.2.0 prettyunits_1.1.1
processx_3.4.5 ps_1.5.0 R6_2.5.0 remotes_2.2.0
rlang_0.4.10 rmarkdown_2.7.1 rprojroot_2.0.2 rstudioapi_0.13
stats_4.0.3 stringi_1.5.3 stringr_1.4.0 tinytex_0.29
tools_4.0.3 utils_4.0.3 withr_2.4.1 xfun_0.21
yaml_2.2.1
为什么在其他方面有效的 _output.yml 会阻止我更改引用的位置?有没有我可以添加到 _output.yml 的选项,使 pdf_book 尊重 <div id="refs"></div>
?
来自我在 Github https://github.com/rstudio/bookdown/issues/1082#issuecomment-811026589
上发布的答案
使用 ID refs
的 div 更改参考书目位置,如 https://bookdown.org/yihui/rmarkdown-cookbook/bibliography.html#include-appendix-after-bibliography is a Pandoc citation processor feature. See https://pandoc.org/MANUAL.html#placement-of-the-bibliography
中所述
使用 Pandoc 的 citeproc
是 pdf_document()
和 pdf_book()
的默认设置,但是在您的输出文件 _output.yml
中,您明确地将 citation_package
更改为natbib
表示 bookdown::pdf_book
格式。
当您调用 bookdown::render_book(output_format = 'bookdown::pdf_book')
时,根据您测试的情况,会发生这种情况
- 如果格式在
_output.yaml
中定义,它将使用那里定义的配置并使用 natbib
- 如果格式未在
_output.yaml
中定义,它将使用格式的默认配置,并且将使用 --citeproc
。
在第二种情况下,您只能控制 ID 为 refs
的 div 的参考书目位置。
您只需根据需要更改 citation_package:
,如果您想使用 Pandoc 处理器的引文功能,则删除该字段。
这个问题的最高投票答案 How to move the bibliography in markdown/pandoc 表示,您可以通过在引用应该出现的位置添加 <div id="refs"></div>
来控制 rmarkdown/pandoc 中引用的位置。如果 _output.yml 包含 pdf_book 输出,这在 bookdown 包的 pdf_book 格式中不起作用。一个例子是包含两个文件的目录:
_output.yml
bookdown::gitbook:
bookdown::pdf_book:
latex_engine: xelatex
citation_package: natbib
keep_tex: yes
index.Rmd
---
title: "An example"
author: "Me"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
documentclass: book
bibliography: [packages.bib]
biblio-style: apalike
link-citations: yes
---
# Prerequisites
```{r include=FALSE}
# automatically create a bib database for R packages
knitr::write_bib(c(
.packages(), 'bookdown'
), 'packages.bib')
```
I want references *here*
<div id="refs"></div>
# Introduction
We are using the **bookdown** package [@R-bookdown].
调用 bookdown::render_book(output_format = 'bookdown::pdf_book')
会创建一个 pdf 文件,该文件在文档末尾有引用,而不是在 <div id="refs"></div>
指定的位置。相反,调用 bookdown::render_book(output_format = 'bookdown::gitbook')
会将引用放置在指定位置。
如果我删除 _output.yml 或删除 pdf_book 部分,
_output.yml
bookdown::gitbook:
然后 运行 bookdown::render_book(output_format = 'bookdown::pdf_book')
将引用放在正确的位置。
我的包版本信息是:
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042), RStudio 1.4.1103
Locale:
LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252
LC_MONETARY=English_Canada.1252 LC_NUMERIC=C
LC_TIME=English_Canada.1252
Package version:
assertthat_0.2.1 base64enc_0.1.3 bookdown_0.21.6 callr_3.5.1
cli_2.3.0 compiler_4.0.3 crayon_1.4.1 curl_4.3
desc_1.2.0 digest_0.6.27 evaluate_0.14 glue_1.4.2
graphics_4.0.3 grDevices_4.0.3 highr_0.8 htmltools_0.5.1.1
jsonlite_1.7.2 knitr_1.31 magrittr_2.0.1 markdown_1.1
methods_4.0.3 mime_0.10 pkgbuild_1.2.0 prettyunits_1.1.1
processx_3.4.5 ps_1.5.0 R6_2.5.0 remotes_2.2.0
rlang_0.4.10 rmarkdown_2.7.1 rprojroot_2.0.2 rstudioapi_0.13
stats_4.0.3 stringi_1.5.3 stringr_1.4.0 tinytex_0.29
tools_4.0.3 utils_4.0.3 withr_2.4.1 xfun_0.21
yaml_2.2.1
为什么在其他方面有效的 _output.yml 会阻止我更改引用的位置?有没有我可以添加到 _output.yml 的选项,使 pdf_book 尊重 <div id="refs"></div>
?
来自我在 Github https://github.com/rstudio/bookdown/issues/1082#issuecomment-811026589
上发布的答案使用 ID refs
的 div 更改参考书目位置,如 https://bookdown.org/yihui/rmarkdown-cookbook/bibliography.html#include-appendix-after-bibliography is a Pandoc citation processor feature. See https://pandoc.org/MANUAL.html#placement-of-the-bibliography
使用 Pandoc 的 citeproc
是 pdf_document()
和 pdf_book()
的默认设置,但是在您的输出文件 _output.yml
中,您明确地将 citation_package
更改为natbib
表示 bookdown::pdf_book
格式。
当您调用 bookdown::render_book(output_format = 'bookdown::pdf_book')
时,根据您测试的情况,会发生这种情况
- 如果格式在
_output.yaml
中定义,它将使用那里定义的配置并使用natbib
- 如果格式未在
_output.yaml
中定义,它将使用格式的默认配置,并且将使用--citeproc
。
在第二种情况下,您只能控制 ID 为 refs
的 div 的参考书目位置。
您只需根据需要更改 citation_package:
,如果您想使用 Pandoc 处理器的引文功能,则删除该字段。