我正在用 Rmarkdown 写论文,但其中混入了很多 LaTeX。当我编译文档时,我的所有引文都显示正常,但表格中的引文显示为 [?]。我测试了不同类型的表格,但即使是一个非常简单的表格也无法显示引文:
---
bibliography: library.bib
csl: conservation-biology.csl
output: pdf_document
---
\begin{center}
\begin{tabular}{ c c c }
cell1 & cell2 & \cite{Saunders2007} \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{center}
我也尝试过使用 Rmarkdown 的引用格式来代替\cite{}
: [@Saunders2007]
,但是显示的结果未格式化。
我是否遗漏了引用表格内部时应该做的事情?
答案1
该表格基于 LaTeX。在表格环境中使用 Rmarkdown 永远行不通,因为它无法识别 Rmarkdown。使用 LaTeX 引用是合乎逻辑的想法,但是,LaTeX 引用的工作方式与 Rmarkdown 引用的工作方式不同。这是一个 Rmarkdown 文档,不提供任何有关 LaTeXtables 的说明。如您所见,YAML 标头提供了 Rmarkdown 引用说明:
---
bibliography: library.bib
csl: conservation-biology.csl
---
指定参考书目文件 (.bib) 和引文样式 (.csl)。引文由 pandoc 读取(knitr 使用它来将 .rmd 文件转换为 .md 文件),并在 .md 文件中转换为纯文本。要获取 latex/pdf 文档,需要使用 pdflatex 将 .md 文件进一步转换为 .tex 文件。Rmarkdown 引文 [@Saunders2007] 现在以纯文本形式编写。
最好使用 LaTeX 引文\cite{Saunders2007}
,因为这将被识别为 LaTeX,因此 LaTeX 会尝试查找引文。但是,没有为 LaTeX 引文提供参考库。为此,需要\bibliography{library}{}
在文档底部写入。
但是,我们希望引用样式相同。我在这里使用 conservation-biology.csl。不幸的是,latex/bibtex 不使用 .csl 文件,而是使用 .bst 文件(使用\bibliographystyle{stylename}
在文档底部使用)。因为可用的 .csl 文件比 .bst 多得多(检查这由于 Rmarkdown 有大量的 .csl repo,所以你特定的 Rmarkdown 引用样式不太可能也能以 .bst 文件的形式找到。
当然,您可以编写自己的 .bst 文件,但对于表格中包含的引用数,手写它们可能更容易。要确保它们出现在参考文献列表中,请使用以下命令:
---
nocite: |
@Saunders2007
...
答案2
也可以直接在 markdown 中创建表格,以供 pandoc 引用参考。
---
bibliography: library.bib
csl: conservation-biology.csl
output: pdf_document
---
| col1 | col2 | ref |
|-------|-------|---------------|
| cell1 | cell2 | @Saunders2007 |
| cell4 | cell5 | cell6 |
| cell7 | cell8 | cell9 |
答案3
在 Rmarkdown 中,引用由 pandoc 生成。因此它不会识别临时的“Latex 引用”样式。在您的表中,您处于 Latex 环境中,因此 Pandoc 引用样式也无法被识别...
当然有一种方法可以在 Rstudio 中直接实现它,但为了理解你的问题,你可以keep_tex
在 yaml 序言中添加选项,并在末尾添加调用 BibTeX
---
output:
pdf_document:
keep_tex: yes
---
\begin{center}
\begin{tabular}{ c c c }
cell1 & cell2 & \cite{Saunders2007} \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{center}
\bibliographystyle{chicago}
\bibliography{library.bib}
编译 Rmd 生成 .tex 文件进而这个 .tex 文件与 pdflatex。这样应该可以