使用R Markdown和TinyTex添加新的书目样式

问题描述 投票:2回答:1

我正在使用R Markdown和TinyTex编写论文,并使用Biblatex进行引用。它可以使用默认的引用样式很好地工作,但是我需要为我要写的期刊添加自定义书目和引用样式。

我需要遵循《语言学统一样式表》,在Github here上有Biblatex实现,其中包含.bbx和.cbx文件。

我已经尝试将这些.bbx和.cbx文件添加到Library/TinyTex/texmf-local/tex/latex/biblatex内部的TinyTex本地副本中。我的YAML标头包括:

output: 
  pdf_document:
    citation_package: biblatex
biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

编织文档时,出现以下错误:

tlmgr search --file --global '/biblatex-dm.cfg'
! Package keyval Error: bibstyle undefined.

我没有biblatex-dm.cfg文件(我也不真正知道这是什么)。根据样式的Github存储库中的常规安装说明,我本可以认为.bbx和.cbx文件就足够了。

我应该将.bbx和.cbx文件放在哪里,以便tlmgr可以找到它们?和/或我需要采取什么其他步骤才能在纸张上使用此样式?

================================================ ====================

更新:问题似乎来自R Markdown使用的Pandoc LaTeX模板。

撇开R Markdown,我创建了一个较小的最小LaTeX示例:

  • main.tex
  • references.bib

main.tex在哪里:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp]{biblatex}

\addbibresource{references.bib}

\begin{document}

Something something \citep{darwin_origin_1859}.

\printbibliography

\end{document}

并且references.bib是:

@book{darwin_origin_1859,
    location = {London},
    title = {On the Origin of Species by Means of Natural Selection},
    publisher = {J. Murray},
    author = {Darwin, Charles},
    date = {1859}
}

我使用命令pdflatexbiberpdflatexpdflatex的顺序成功编译了此示例。因此,看来我的本地TeX安装知道我添加的biblatex-sp-unified.bbxsp-authoryear-comp.cbx文件,可以很好地使用它们。

随后,我使用YAML标头创建了等效的最小R Markdown文档:

title: "Untitled"
output:
  pdf_document:
    citation_package: biblatex
bibliography: references.bib
biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

和正文:

Something something [@darwin_origin_1859].

这次,我从以前收到了相同的旧错误消息:

tlmgr search --file --global '/biblatex-dm.cfg'
! Package keyval Error: bibstyle undefined.

这似乎表明该问题是由Pandoc的LaTeX模板中的某物引起的,但我不知道是什么。

只是为了确认它绝对是Pandoc模板而不是我自己的安装/设置,我编织了上面编织的最小R Markdown示例时生成的.tex文件,并尝试在Overleaf中进行编译(使用biblatex-sp-unified.bbxsp-authoryear-comp.cbx文件已添加)。我重现了相同的错误。

尽管我认为我已经解决了问题,但我仍然非常想了解Pandoc模板中问题的所在和位置。我也很想听听是否有人进行了任何修复(不只是使用其他模板或编写自己的模板)。

r latex r-markdown biblatex tinytex
1个回答
0
投票

这不是一个合适的解决方案,但我发现了一个解决方法。回顾一下,我正在用R Markdown编写文档,我有一种特殊的引用样式,我想将其与biblatex一起使用。我有一个.bbx.cbx文件来定义样式,可以在Github上找到(上面链接)。问题在于文档无法编译,说明书目/引文样式未定义(即使样式文件位于项目文件夹本身中)。

我发现问题是由于我将选项传递给biblatex的方式引起的。在我的YAML标头中,该行:

biblatexoptions: [bibstyle=biblatex-sp-unified, citestyle=sp-authoryear-comp]

被转换为乳胶命令:

\ExecuteBibliographyOptions{bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp}

我不确定为什么,但是当包含此命令时,它会产生我观察到的错误。

[我还发现TeX在.bbx目录中时不知道.cbx~/Library/TinyTex/texmf-local/tex/latex/biblatex文件,根据我的Github安装说明,我希望将它们放置在此目录中。] >

我目前最好的技巧:

[首先,为了获得系统认可的引用样式,我分别将.bbx.cbx文件放在~/Library/TinyTex/texmf-dist/tex/latex/biblatex/bbx~/Library/TinyTex/texmf-dist/tex/latex/biblatex/cbx中。然后,在终端中,我运行了sudo mktexlsr

(或者,仅用于特定文档,.bbx.cbx文件可以简单地通过R Markdown文件保存在项目目录中]

然后,我没有在R Markdown文档的YAML标头中使用biblatexoptions,而是仅将其与citation_package: biblatex结合在一起(没有其他选项)。我还添加了keep_tex: yes。然后,我打开生成的tex文件,找到\usepackage{bibtex}命令并添加所需的选项,因此它显示为\usepackage[bibstyle=biblatex-sp-unified,citestyle=sp-authoryear-comp]{biblatex}

最后,我在终端的tex文件中运行了pdflatexbiber。显然远非理想,但从技术上讲,它将产生所需的输出。

© www.soinside.com 2019 - 2024. All rights reserved.