可以在 Rmarkdown 中使用带有参考文献的尾注吗?

可以在 Rmarkdown 中使用带有参考文献的尾注吗?

我正在完成一篇草稿文章,以 PDF 格式提交给同行评审。我最初使用 Rmarkdown 撰写论文,并附上包含引文的脚注,但现在我需要将脚注转换为尾注。似乎没有明确的 Rmarkdown 转换,所以我不得不使用以下格式的 LaTex 代码:

\endnote{我不考虑 Y 空间滞后模型,因为这些模型很难解释 [@Ruttenauer2019],并且结果中的任何空间自相关都将被捕获在 SDEM 或 SEM 中的误差项中 [@LeSage2014]。}

不幸的是,引文不再正确呈现,只是出现在文本中,(i.e., @Ruttenauer2019)而不是正确包含在引文中。我发现这个解释描述了为什么使用此 LaTex 格式时引用不再起作用。

我看到两种可能的解决方案:(1) 我使用传统的 ^[ ] 格式 Rmarkdown 并且它们呈现为尾注或 (2) 如何让 LaTex 以某种方式读取我的引用?

有人有什么想法吗?

以下是 YAML 的示例和尾注问题的精简版本。我觉得没有明确的解决方案很奇怪,因为尾注很常见,通常包含引文:


---
  title: "Paper title"
author: 
  - Kasey Zapatka^[University of California, Berkeley, 410 Social Sciences Building, Berkeley, CA 
date: " `r format(Sys.time(), '%B %d, %Y')`"
csl: ASA_format.csl
output:
  bookdown::pdf_document2:
  toc: no
fig_caption: yes
latex_engine: xelatex
keep_tex: true
geometry:
  - top=1in
- bottom=1in
- right=1in
- left=1in
bibliography: "references/manuscript.bib"
link-citations: yes
mainfont: Times New Roman
fontsize: 12pt
header-includes:
  - \usepackage{rotating}
- \usepackage{setspace}
- \newcommand{\beginsupplement}{\setcounter{table}{0}  \renewcommand{\thetable}{A\arabic{table}} \setcounter{figure}{0} \renewcommand{\thefigure}{A\arabic{figure}}}
- \usepackage{lineno}
- \setlength\parindent{24pt}
- \usepackage{fancyhdr}
- \usepackage{caption}
- \usepackage{enotez}
abstract: |
  
  abstract text...
  
---
  
\pagenumbering{gobble}
\pagebreak

\fancyhf{} 
\renewcommand{\headrulewidth}{0pt} 
\rfoot{\thepage}
\pagestyle{fancy}
\pagenumbering{arabic}
\doublespacing
  
Sample text  \endnote{While there is an important distinction... I support this approach [@Ruttenauer2019]}. 


\newpage
\singlespacing

\printendnotes

答案1

第一个问题:把苹果和橘子混在一起。Rmarkdown/Quarto 代码在某种程度上可以包含一些 LaTeX 代码。LaTeX 可以包含 LaTeX 和纯文本。结束点。 [@foo]在 a 中使用\endnote{}与在 a 中使用是同一个问题\mbox{},或者只是输入\mbox{*foo*}并期望foo以草书形式,但您将获得,*foo*因为在 LateX 命令中,星号只是星号,而不是 markdown 标记。同样,\mbox{[@foo]}将只产生[@foo],而不是引用。但您可以\mbox{\autocite{foo}}在 Rmarkdown 中使用。苹果和苹果混合得很好。

第二个问题:默认 cite-methodciteproc,可以使用bibtex文件,但[@foo]不能导出到\cite{foo}\autocite{foo}。 导出为原始文本或超链接文本,避免运行bibtex或biber,因此应该使用natbibbiblatex方法使用latex引用命令。

第三个问题:CLS 样式可以与 citeproc 一起使用,但不能与 bibtex 或 biblatex 一起使用。最近citation-style-languagelatex 包允许使用 CLS 样式,但 Quarto 对此包不明确,因此您可以通过header-includes和 use使用它\cite{foo},但不能[@foo],或者继续使用 bibtex 或 biblatex 样式。

第四个问题:至少,对于 Quarto 文档,您可以使用下面的 MWE 设置 \autocite{foo},但出于某种原因,不能单独使用。如果在正文中的 或形式中也引用了相同的参考文献,甚至在 YAML 标头中的指令中也\endnote{}引用了相同的参考文献,它就会起作用。 [@foo]\autocite{foo}nocite

总之:您可以\autocite在尾注中使用,但没有 CLS 和一些其他限制:


笔记:使用扩展名 .qmd 作为示例,因为标题是为较新的 Quarto 格式设置的,而不是较旧的 Rmarkdown。


姆韦

---
format: 
  pdf:
    cite-method: biblatex
bibliography: foo.bib
biblio-style: apa
keep-tex: true
nocite: |
  @knitr2014, @knitr2015,  
header-includes:
- \usepackage{enotez}
---

```{r,echo=F}
knitr::write_bib(file="foo.bib",c("knitr"))
```
 
Foo [@R-knitr]. 
\endnote{An end note \autocite{knitr2014}}
\endnote{And another note \autocite{knitr2015}}


\printendnotes

或者,使用 CLS 样式,但不使用引用 markdown 语法:

---
format: pdf
link-citations: true
pdf-engine: lualatex
keep-tex: true
header-includes:
- \usepackage{citation-style-language}
- \cslsetup{style = apa}
- \addbibresource{foo.bib}
- \usepackage{enotez}

---

```{r,echo=F}
knitr::write_bib(file="foo.bib",c("knitr"))
```
Foo \cite{R-knitr} 
\endnote{An end note \cite{knitr2014}}
\endnote{And another note \cite{knitr2015}}

\printendnotes

\printbibliography

这个管理得很好,引用仅嵌套在尾注中,输出几乎相同,但引用链接不仅是年份,还有作者,\printbibliography不能采用 biblatex 的选项,ISBN 未打印,可能还有其他几个不同之处,所以请自己评估每种方法的优缺点。

相关内容