the style rmarkdown references notebook guide definitive biblio and r latex bookdown bibliography

style - ¿Hay alguna manera de agregar bibliografías de capítulos usando bookdown?



references in r markdown (2)

Para obtener una solución específica para el látex, consulte esta publicación , es decir, use la opción natbib para natbib y cargue el paquete chapterbib . Deberá editar la plantilla de bookdown para configurar las opciones requeridas para natbib y decirle a bookdown que use su plantilla personalizada en el yaml. Ver esta publicación para obtener más información sobre la plantilla bookdown.

Juro que vi instrucciones en los documentos de Bookdown para hacer esto con el formato gitbook, pero parece que no puedo encontrarlo ...

EDITAR Fui y miré un viejo proyecto de bookdown mío. Para la salida de gitbook , especifique lo siguiente en _output.yml :

bookdown::gitbook: split_by: chapter split_bib: yes

Lo que (lo adivinaste) dividirá la bibliografía por capítulos. De hecho, me sorprende un poco que Bookdown no admita las opciones equivalentes para bookdown::pdf_book yaml options, pero debería ser bastante fácil de hacer al configurar sectionbib / chapterbib en el preámbulo de LaTeX .

Estoy tratando de escribir mi tesis doctoral con bookdown y estoy utilizando principalmente la salida pdf. He agregado fácilmente una bibliografía al final del documento, pero preferiría tener una bibliografía al final de cada capítulo. He intentado ajustar la salida de .tex con los paquetes de LaTeX que permiten esto, pero esto lucha con los valores predeterminados de libros. ¿Hay alguna forma de adaptar las opciones .yaml para habilitar esto?


Para la salida HTML, el valor predeterminado es utilizar bibliografías por capítulo. Para la salida de PDF, he encontrado que es mejor usar el paquete biblatex LaTeX junto con biber . Como RStudio no sabe acerca de biber, es mejor instalar una herramienta como latexmk y configurar RStudio para usar eso a través de Sys.setenv(RSTUDIO_PDFLATEX = "latexmk") . Es posible que estos programas deban instalarse por separado, por ejemplo, en Debian / Ubuntu / ...

sudo apt-get install texlive-bibtex-extra biber latexmk

Para configurar biblatex la solución provista en https://tex.stackexchange.com/questions/199336/biblatex-reference-both-by-chapter-and-at-the-end-of-the-book es apropiada.

Al final, las siguientes configuraciones son necesarias en _output.yml :

bookdown::pdf_book: citation_package: biblatex

En Index.Rmd :

biblio-style: authoryear biblatexoptions: [refsegment=chapter]

Al final de cada capítulo:

/printbibliography[segment=/therefsegment,heading=subbibliography]

No hay necesidad de escapar de este comando crudo de LaTeX, ya que pandoc ignora dichos comandos para otros formatos de salida.

Uno puede ver la solución completa en

Solución original

Logré obtener bibliografías de capítulos con salida de PDF usando los siguientes pasos:

  • Comience con una copia de https://github.com/rstudio/bookdown-demo
  • Copie <R-library-path>/rmarkdown/rmd/latex/default-1.17.0.2.tex como book.tex al directorio de trabajo
  • actualice book.tex para usar los bibunits paquete LaTeX (dif. abajo)
  • actualice _output.yml para referirse a book.tex como template (dif. abajo)
  • establece las opciones YAML en index.Rmd (dif abajo)
  • agregue código a algunos archivos Rmd para escribir el comando /putbib (más abajo)

Después de estos cambios, se podría producir un archivo PDF, pero todas las referencias faltan, ya que bookdown no conoce los archivos generados por bu?.aux . Después de ejecutar bibtex bu1 y bibtex bu2 , la reproducción del archivo PDF a través de bookdown produjo un PDF con bibliografías de capítulos. Probablemente sea mejor automatizar este paso con Makefile.

Aquí la diferencia entre las plantillas:

$ diff -u /usr/local/lib/R/site-library/rmarkdown/rmd/latex/default-1.17.0.2.tex book.tex --- /usr/local/lib/R/site-library/rmarkdown/rmd/latex/default-1.17.0.2.tex 2017-12-11 19:14:54.643867696 +0100 +++ book.tex 2018-01-16 11:43:46.182542634 +0100 @@ -93,8 +93,11 @@ /fi $endif$ $if(natbib)$ -/usepackage{natbib} +/usepackage[$natbiboptions$]{natbib} /bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +/usepackage{bibunits} +/defaultbibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +/defaultbibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} $endif$ $if(biblatex)$ /usepackage$if(biblio-style)$[style=$biblio-style$]$endif${biblatex} @@ -235,6 +238,7 @@ $endfor$ /begin{document} +/bibliographyunit[/chapter] $if(title)$ /maketitle $endif$

Y la diferencia de los archivos de bookdown-sample :

$ git diff diff --git a/01-intro.Rmd b/01-intro.Rmd index 6b16e73..1a5f9de 100644 --- a/01-intro.Rmd +++ b/01-intro.Rmd @@ -19,3 +19,5 @@ knitr::kable( ``` You can write citations, too. For example, we are using the **bookdown** package [@R-bookdown] in this sample book, which was built on top of R Markdown and **knitr** [@xie2015]. + +`r if (knitr:::is_latex_output()) ''//putbib''` diff --git a/02-literature.Rmd b/02-literature.Rmd index 00745d0..983696e 100644 --- a/02-literature.Rmd +++ b/02-literature.Rmd @@ -1,3 +1,6 @@ # Literature Here is a review of existing methods. +[@R-knitr] + +`r if (knitr:::is_latex_output()) ''//putbib''` diff --git a/_output.yml b/_output.yml index 342a1d6..cc8afb1 100644 --- a/_output.yml +++ b/_output.yml @@ -14,4 +14,5 @@ bookdown::pdf_book: latex_engine: xelatex citation_package: natbib keep_tex: yes + template: book.tex bookdown::epub_book: default diff --git a/index.Rmd b/index.Rmd index 4e21b9d..2fdb813 100644 --- a/index.Rmd +++ b/index.Rmd @@ -7,6 +7,8 @@ output: bookdown::gitbook documentclass: book bibliography: [book.bib, packages.bib] biblio-style: apalike +natbiboptions: sectionbib +graphics: yes link-citations: yes github-repo: rstudio/bookdown-demo description: "This is a minimal example of using the bookdown package to write a book. The output format for this example is bookdown::gitbook."