Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change to another bibliography style in Bookdown

I want to another bibliography style instead of apalike in Bookdown, and when I changed to nature which is number style, and built the book, it prompted me,

����: Failed to build the bibliography via bibtex
Please delete bookdown.Rmd after you finish debugging the error.
ִֹͣ��

Exited with status 1.

Is there a solution? There are some Chinese character in the title author and description, is this the reason?

The YAML header

--- 
title: "title"
author: "aa"
date: "`r Sys.Date()`"
documentclass: ctexbook
bibliography: [book.bib]
biblio-style: nature
link-citations: yes
colorlinks: yes
lot: no
lof: no
geometry: [b5paper, tmargin=2.5cm, bmargin=2.5cm, lmargin=3.5cm, rmargin=2.5cm]
site: bookdown::bookdown_site
description: "dd。"
github-repo: yihui/bookdown-chinese
#cover-image: images/cover.jpg
---

Session:

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=Chinese (Simplified)_China.936  LC_CTYPE=Chinese (Simplified)_China.936   
[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C                              
[5] LC_TIME=Chinese (Simplified)_China.936    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] shiny_1.1.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.16     rstudioapi_0.7   xml2_1.2.0       knitr_1.20       magrittr_1.5     xtable_1.8-2    
 [7] R6_2.2.2         rlang_0.2.0      bibtex_0.4.2     plyr_1.8.4       httr_1.3.1       stringr_1.3.1   
[13] tools_3.5.0      xfun_0.1         miniUI_0.1.1     htmltools_0.3.6  yaml_2.1.19      assertthat_0.2.0
[19] rprojroot_1.3-2  digest_0.6.15    bookdown_0.7     RefManageR_1.2.0 later_0.7.2      promises_1.0.1  
[25] curl_3.2         evaluate_0.10.1  mime_0.5         rmarkdown_1.9    stringi_1.1.7    compiler_3.5.0  
[31] citr_0.2.0       backports_1.1.2  lubridate_1.7.4  jsonlite_1.5     httpuv_1.4.3    
like image 742
Minyi Han Avatar asked May 30 '18 03:05

Minyi Han


2 Answers

  • Download your .csl file from https://www.zotero.org/styles?q=nature and copy it to the root of your project.
  • Set in _output.yml citation_package: none
  • Add in all formats (gitbook, pdf_book, epub_book) in _output.yml the line pandoc_args: [ "--csl", "your-csl-file.csl" ]
  • Delete or comment out in index.Rmd the line biblio-style: apalike

See for the full procedure use csl-file for pdf-output in bookdown

like image 94
petzi Avatar answered Nov 17 '22 00:11

petzi


You specify the bibtex style nature.bst, but that is not available on your system. Neither can I find it on CTAN. A search on CTAN gives two things:

  • The nature package which includes naturemag.bst
  • The biblatex-nature package which adds nature like citations to biblatex

So either use

 biblio-style: naturemag

or (prefered, see below) switch to biblatex using

bookdown::pdf_book:
  citation_package: biblatex

in _output.yml. In both cases you have to make sure that the required TeX packages are installed. This depends on the TeX distribution. In my case (TeXLive packaged for Debian) this meant

sudo apt-get install texlive-publishers texlive-bibtex-extra

For TeXLive proper or TinyTeX you can use on the command line:

tlmgr install nature
tlmgr install biblatex-nature

For TinyTeX you can also do this within R:

library(tinytex)
tlmgr_install('nature')
tlmgr_install('biblatex-nature')

See the maintenance section for more details.

Unfortunately only the bbilatex solution is compatible with the default citation commands produced by bookdown. One probably could change insert LaTeX commands for the citations, but that would make producing other formats more complicated. In addition, biblatex is "the way to go" for many bibliography questions in LaTeX ...

like image 36
Ralf Stubner Avatar answered Nov 16 '22 23:11

Ralf Stubner