在我的 markdown 文档中,我有一个带标题的复杂乳胶表,我想在其中添加参考。
The table can be seen below...
\begin{table}[ht]
\captionof{table}{Some complex table \protect\hyperlink{ref-doe}{(Doe et al., 2011}}
\label{tbl:complexTable}
\centering
\begin{tblr}{
...
}
\end{table}
Table [@tbl:complexTable] shows...
我tablenos
通常能够引用该论文,Table: Some complex table [@doe]
并且在转换为 pdf 时,@doe
参考文献会在参考书目章节中列出。但是由于参考文献位于 latex 块内,因此它不会显示在参考书目章节中。我该如何解决这个问题?
答案1
---
format: pdf
link-citations: true
references:
- type: article-journal
id: doe
author:
- family: Doe
given: D. D.
issued:
year: 2011
title: 'Very foo and too munch foo'
container-title: Journal of Foo
volume: 171
issue: 2
page: 737--778
nocite: |
@doe
---
The table can be seen below...
\begin{table}[h]
\caption{Some complex table \protect\hyperlink{ref-doe}{(Doe, 2011)}}
\label{tbl-complexTable}
\centering
\begin{tabular}{|c|}\hline x\\\hline\end{tabular}
\end{table}
<!-- A @doe markdown cite. -->
### References
::: {#refs}
:::
如果您使用 导出参考文献citeproc
,则参考文献将作为文本添加到 LaTeX 导出中,而引文中只是指向项目的超链接。bibtex 或 biber 程序没有真正的引文命令可供处理。
从 markdown 的角度来看,LaTeX 部分不存在,因此如果 markdown 中没有任何部分@doe
,则没有任何内容可以链接,也没有任何内容可以引用。在 LaTeX 部分中,您添加的链接指向任何地方,而不是包含引用和参考的命令。至少有三种方法可以解决这个问题:
可以简单地在 markdown 部分的某个地方添加 @doe
或[@doe]
。这将使目标成为可能,因此指向任何地方的链接现在都可以正常工作。唯一的问题可能是您除了标题之外不想要其他链接。在示例中,此“额外引用”在 HTML 注释中被停用。如果您想测试它,请将 HTML 注释转换为纯文本,然后删除指令nocite
,这是第二种方法:
在 YAML 标头中使用nocite
您可以包含不想在文本中提及的引用。这将创建没有链接的目标,但您可以在 LaTeX 代码中提供它。要测试它,请“按原样”运行示例。
第三种方法是使用natbib
或biblatex
引用方法。在这种情况下,列出参考文献并格式化引用是 bibtex 或 biber 程序的外部业务,而 pandoc 只是洗手不干。您将需要 bibtex (.bib) 格式的参考文献,并指定引用方法,至少在 YAML 标头中添加:
bibliography: references.bib # or whatever.bib
citation-method: natbib # or biblatex (default is citeproc)
natbib 和 biblatex 方法将保留@doe
或[@doe]
作为真正的 LaTeX 引用命令(而不仅仅是超链接),并且还会在文档末尾保留一些 LaTeX 命令来打印参考文献,因此您无法在导出的 LaTeX 代码中读取参考文献的文本,而只能在 PDF 中读取。也就是说,不要将引用导出为,而是将\protect\hyperlink{target}{text}
其保留为真正的引用命令,例如 \textcite{doe} 或 \autocite{doe}(取决于引用样式和)。在每种情况下,主 markdown 文本中生成的命令都是您必须手动转换为表格标题的内容,即使markdown 文本或标题中citation-method
没有引用和参考,它们也会生成引用和参考 。@doe
nocite
注意:有时 pandoc 并不清楚什么是 markdown,什么是其他不应触及的标记语言。最好以这种方式包含 LaTeX 部分:
```{=latex}
\begin{whatever}
\end{whatever}
```