rmarkdown 中 Latex 图形标题内的引用

rmarkdown 中 Latex 图形标题内的引用

我无法将引文放在图片标题中。我在 rmarkdown 中编写文档,使用 markdown 引文[@bibtexCitationkey],但使用 LaTeX 来处理图片和表格。我希望能够将引文放在图片和表格标题中,但我尝试了以下方法,但没有成功。

---
title: "Table tests"
csl: harvard-cite-them-right.csl  
output:
  pdf_document: default
  word_document: default
  html_document: default
header-includes:
- \usepackage{graphicx}
- \graphicspath{ {./figs&tabs/} }

bibliography: library.bib
---

\begin{figure}[h]
\begin{center}
\includegraphics{gr1_lrg.jpg}
\caption {Caption text [@Levin2013] or caption text \cite{Levin2013}}

\label{f:ckd}
\end{center}
\end{figure}

这将产生:标题文本@Levin2013 或标题文本 [?]

在 markdown 格式的引用在文档的其余部分中起作用,我的 .bib 没有问题

答案1

注意:

  1. 似乎您还需要 HTML 和 Word 输出,但 Rmarkdowm 中的 LaTeX 代码仅对 PDF 输出有用,否则将被省略。使用它可能不是一个好主意?

  2. Rmarkdown 里面的 LaTeX 命令或环境都是通过 LaTeX 规则来解析的。所以[@Levin2013]里面的\caption{}不是一个引用,只是纯文本。

  3. Rmarkdown 中的参考书目默认由 处理pandoc-citeproc,因此即使在 LaTeX 版本中,bibliograhy 也不是\bibliography命令,甚至\printbibliography 也不是thebibliography带有 \bibitems 的命令,而只是直接带有 的参考文献\hypertarget,因此\cite-like 命令与之无关。

  4. 您可以强制使用真正的 bibtex 或 biblatex 书目,但即便如此,上述内容也适用,并且您不能在 markdown 中自由嵌套 LaTeX,也不能在 LaTeX 中自由嵌套 markdown。

  5. R chunks 是制作图形和表格的另一种方法,但增加了文件导出方式的另一层复杂性,因此您不能直接在里面使用 markdown 或 LaTeX,fig.cap尽管有一些技巧可以做到这一点(参见示例)。

  6. 交叉引用在基本方面受到限制rmarkdown,但它是 rmarkdown 的一个有趣扩展,它避免了在图形中使用 和/或 命令bookdown 的需要 ,这仅适用于 PDF 输出。\label{}\ref{}

  7. 虽然不常见,但有时在复杂的文档中,Rmarkdown 内部对 LaTeX 代码的识别会非常失败。然后会被视为纯文本,从而导致致命的错误和麻烦。

考虑到这一点,有几个选项,一个是原始 LaTeX 浮点数,但它应该是最后一个选项,并且没有 markdown:


姆韦


MimimalWorkingExample.Rmd

---
linkcolor: blue
bibliography: /usr/local/texlive/2020/texmf-dist/bibtex/bib/msc/biblio.bib
output:
  bookdown::pdf_document2:
    keep_tex: yes
    toc: no
    citation_package: biblatex
biblio-style: authoryear
biblatexoptions: maxbibnames=9
---

(ref:rudolph) *nice* cite: [@Lam94].

I recommend the figure \@ref(fig:foo) method: 

```{r foo, fig.cap= 'Caption \\emph{with} *very* (ref:rudolph)', echo=F, fig.align = 'center', out.width='10%'}

 knitr::include_graphics("/usr/local/texlive/2020/texmf-dist/tex/latex/mwe/example-image-a.png")
```

You can use also the figure \@ref(fig:bah) method:

![Caption text [@Lam94](\#fig:bah)](example-image-b.png){width=10%}

But I do not recommend the figure \ref{baz} method:

\begin{figure}[h]\centering 
\includegraphics[width=.1\linewidth]{example-image-c}
\caption {Caption text \autocite{Lam94}.\label{baz}}
\end{figure}

相关内容