我正在完成一篇草稿文章,以 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-method
是citeproc
,可以使用bibtex文件,但[@foo]
不能导出到\cite{foo}
或\autocite{foo}
。 导出为原始文本或超链接文本,避免运行bibtex或biber,因此应该使用natbib
或biblatex
方法使用latex引用命令。
第三个问题:CLS 样式可以与 citeproc 一起使用,但不能与 bibtex 或 biblatex 一起使用。最近citation-style-language
latex 包允许使用 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 未打印,可能还有其他几个不同之处,所以请自己评估每种方法的优缺点。