首页 > 解决方案 > 将 bib2gls 与 rmarkdown 一起使用无法呈现词汇表

问题描述

我想bib2gls在我的 rmarkdown 文档中使用 latex 包在我编织到 pdf 文档时插入 .bib 文件中的首字母缩略词列表。

不起作用:

使用 .bib 文件存储我的首字母缩写词。例子:

abbreviations.bib 文件:

@abbreviation{ecoli, 
short={E.~coli},
long={Escherichia coli}
}


@abbreviation{raustralis ,
short ={R.~ australis},
long={Rickettsia australis}
}

序言.tex

% fixes problem with glossaries causing mathspec
% to return an error asking for amsmath to be loaded first    
\makeatletter 
\let\RequirePackage\original@RequirePackage
\let\usepackage\RequirePackage
\makeatother

% using bib2gls
\usepackage[record,abbreviations,style=index]{glossaries-extra}
\setabbreviationstyle{long-short}
\GlsXtrLoadResources[src={abbreviations},selection={all}]

rmarkdown 文件:

---
output: 
  pdf_document:
    latex_engine: xelatex
    includes:
      in_header: preamble.tex
title: "mwe"

---

## R Markdown

This is the first instance \gls{ecoli}, \gls{raustralis}. This is the second instance: \gls{ecoli}, \gls{raustralis}.

\printunsrtglossary[title={Abbreviations},type=abbreviations]

我编织 rmarkdown 文档时的输出如下所示: 在此处输入图像描述

什么有效:

删除\GlsXtrLoadResources[src={abbreviations},selection={all}]我的条目并将其添加到序言中。

% using bib2gls
\usepackage[abbreviations,style=index]{glossaries-extra}
\setabbreviationstyle{long-short}
\newabbreviation{ecoli}{E.~coli}{Escherichia coli}
\newabbreviation{raustralis}{R.~australis}{Rickettsia australis}

在此处输入图像描述

如果可能,我想在第一种方法中使用单独的 .bib 文件。除非在 R 中有更好的方法来执行此操作。会话信息如下:

R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252  

标签: latexr-markdownknitr

解决方案


问题是bib2gls需要运行一个额外的程序,该程序从bib文件中提取词汇表条目,但rmarkdown不知道这一点。一般来说,如果你想在 LaTeX 方面做一些更复杂的事情,很有可能latexmk已经知道如何去做。我不确定是否是这种情况,参见https://tex.stackexchange.com/questions/400325/latexmkrc-for-bib2gls。但是,您可以尝试使用

```{r echo=FALSE}
Sys.setenv(RSTUDIO_PDFLATEX = "latexmk")
```

推荐阅读