表格环境中的引用不起作用

表格环境中的引用不起作用

我正在用 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。这样应该可以

相关内容