pandoc 中 latex 块的参考引用

pandoc 中 latex 块的参考引用

在我的 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 代码中提供它。要测试它,请“按原样”运行示例。

第三种方法是使用natbibbiblatex引用方法。在这种情况下,列出参考文献并格式化引用是 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没有引用和参考,它们也会生成引用和参考 。@doenocite

注意:有时 pandoc 并不清楚什么是 markdown,什么是其他不应触及的标记语言。最好以这种方式包含 LaTeX 部分:

```{=latex}

\begin{whatever}
\end{whatever} 

```

相关内容