bibtext references not processing in bookdown - r-markdown

I have a bookdown document that cites other documents using a bibtex bibliography file. It appears to no process at all, since the output (both gitbook format and pdf) don't translate the actual citation to a reference. The output always copies the plain text of the citation, not the actual reference, like this:
Here's a minimal reproducing example, which I build using:
Rscript -e 'bookdown::render_book("index.Rmd", "bookdown::gitbook")'
index.Rmd:
---
title: "test"
site: "bookdown::bookdown_site"
documentclass: book
bibliography: test.bib
biblio-style: apalike
link-citations: true
# toc: yes
# toc_depth: 2
---
# Introduction {#ch:intro}
Conference publication takes the lead role in describing innovative research,
while journals are often delegated to archival purposes [#vrettas15:conferences].
```{r echo=FALSE}
sessionInfo()
```
test:bib:
#article{vrettas15:conferences,
title = {Conferences versus journals in computer science},
author = {Vrettas, George and Sanderson, Mark},
journal = {Journal of the Association for Information Science and Technology},
volume = 66,
number = 12,
pages = {2674--2684},
year = 2015,
publisher = {Wiley Online Library}
}
_bookdown.yml:
rmd_files: [
"index.Rmd",
]
new_session: no
bookdown::gitbook:
split_bib: no

It turns out to be due to the too low version of Pandoc. A version 1.19.x or higher should fix the problem.

Related

Difference in PDFs when manually generated with Knit-Button vs rmarkdown::render() - e.g. section numbers not always included

I try to generate multiple reports (1 per group) with rmarkdown::render(), but it produces no section numbers.
I use the following file-structure for this in case you want to reproduce the sample (I tried to simplify each file and use only necessary code to reproduce the error):
*) groups.R: defines groups and subgroups in a nested list (all groups stored in a list and each group is a list itself)
groups <- list(
list(c("subgroup1","subgroup2"),"maingroup1"),
list(c("subgroup3","subgroup4"),"maingroup2")
)
*) main.Rmd: template for the reports
---
output:
pdf_document:
number_sections: true
classoption: a4paper
geometry: left=2cm,right=1cm,top=1.5cm,bottom=1cm,includeheadfoot
fontfamily: helvet
fontsize: 11pt
lang: en
header-includes:
- \usepackage{lastpage}
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyhf{}
- \fancyhead[R]{\fontsize{9}{11} \selectfont \leftmark}
- \fancyhead[L]{\fontsize{9}{11} \selectfont Special report xxx}
- \fancyfoot[R]{\fontsize{9}{0} \selectfont Page \thepage\ of
\pageref{LastPage}}
---
```{r setup, include = FALSE}
knitr::opts_chunk$set(echo =
FALSE,comment=NA,warning=FALSE,message=FALSE)
```
\thispagestyle{empty}
\tableofcontents
\newpage
\setcounter{page}{1}
# Introduction
Some text...
```{r results="asis"}
source("graphics.R")
```
*) graphics.R: generates graphics for each subgroup (sections/section numbers are produced with cat() for each subgroup)
load("actgroup.RData")
source("template_graphics.R")
for (g in 1:length(act.group[[1]][[1]])) {
subgroup.name <- act.group[[1]][[1]][g]
cat("\\clearpage")
cat("\n# ",subgroup.name, "\n")
template_graphics(cars)
cat("\n\n")
cat("\\clearpage")
template_graphics(iris)
cat("\n\n")
cat("\\clearpage")
template_graphics(airquality)
cat("\n\n")
cat("\\clearpage")
cat("\n")
}
*) template_graphics.R: template for plotting
template_graphics <- function(data) {
plot(data)
}
*) loop.R: used for generating all reports as PDF - 1 per group
setwd("YOUR DIRECTORY HERE")
library(rmarkdown)
source("groups.R")
for(i in 1:length(groups)) {
act.group = list(groups[[i]])
save(act.group,file="actgroup.RData")
rmarkdown::render("main.Rmd",
output_format=pdf_document(),
output_file=paste0("Special Report ",act.group[[1]][[2]],".pdf"),
output_dir="~/Reports")
}
The problem is, that the final documents do not show the section numbers. When I knit manually in main.Rmd (pressing knit-Button), the section numbers are printed.
Version rmarkdown::render
Version knit-Button
I thought that pressing the knit-Button also starts the rendering-process with rmarkdown::render()? So it's surprising that the reports are not identical?
In advance I installed tinytex::install_tinytex(). The used latex-packages in main.Rmd were automatically installed during the first time rendering.
I am not sure what the problem is. I use R 4.1.0 and RStudio 2022.02.2.
Thanks for your help!!
The behaviour of pdf_document() as the output-format in rmarkdown::render caused the missing section-numbers.
In my YAML-header in main.Rmd I chose to keep the section numbers with number_sections: true. If this should also be rendered when using rmarkdown::render, it has to be an argument in the function:
pdf_document(number_sections=TRUE)
The code of loop.R produces now pdfs with section numbers:
library(rmarkdown)
source("groups.R")
for(i in 1:length(groups)) {
act.group = list(groups[[i]])
save(act.group,file="actgroup.RData")
rmarkdown::render("main.Rmd",
output_format=pdf_document(number_sections=TRUE),
output_file=paste0("Special Report ",act.group[[1]][[2]],".pdf"),
output_dir="~/Reports")
}
More information on pdf_document() can be found here:
https://pkgs.rstudio.com/rmarkdown/reference/pdf_document.html
Alternatively, fill in just a text-reference as output-format: output_format="pdf_document". When set like this, the options of the YAML-Header are not overwritten and the numbers are also included.

Citations not generating in RMarkdown

new to Stackoverflow, and relatively new to writing documents in RMarkdown. I have most other things down, however, I cannot generate citations and the bibliography in RMarkdown. For the example code below, I have used the \cite{REFNAME} as well as [#REFNAME] syntax. The [#REFNAME] will not even let the document be generated, the \cite{} generates the document but the citation is [?] and the reference is not after the #References section.
I have looked through this site and I cannot get suggested fixes to work. I am hoping that the error I am showing after the code sections will tell someone what the error really is.
---
title: "Title for my document"
date: "`r format(Sys.Date(), '%d %B, %Y')`"
output:
pdf_document:
fig_caption: yes
keep_tex: true
number_sections: true
geometry: margin=0.5in
header-includes: \usepackage{float}
urlcolor: blue
bibliography: bibliography_file.bib
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
knitr::knit_hooks$set(mysize = function(before, options, envir) {
if (before)
return(options$size)
})
```
text written \cite{neil_increasing_2008} more text written
# References
My .bib file entry looks like this
#article{neil_increasing_2008,
title = {Increasing incidence of legionellosis in the {United} {States},
1990-2005: changing epidemiologic trends.},
volume = {47},
journal = {Clinical Infectious Diseases},
author = {Neil, K. and Berkelman, R.},
year = {2008},
pages = {591--599}
}
The error is:
Warning message: LaTeX Warning(s): Citation `neil_increasing_2008'
on page 1 undefined on input lin There were undefined references.
If I use the [#neil_increasing_2008] as opposed to the \cite{} then the following error is generate, and it does not generate the document either
pandoc-citeproc: Cannot decode byte '\x87':
Data.Text.Internal.Encoding.Fusion.streamUtf8: Invalid UTF-8 stream
pandoc.exe: Error running filter pandoc-citeproc Filter returned error
status 1 Error: pandoc document conversion failed with error 83
Execution halted

rmarkdown: yaml references to bibliography

In rmarkdown/bibliography, how can I convert a bunch of YAML encoded references into one of the files formats accepted by the bibliography?
I am currently using:
references:
- id: fenner2012a
title: One-click science marketing
author:
- family: Fenner
given: Martin
container-title: Nature Materials
volume: 11
URL: 'http://dx.doi.org/10.1038/nmat3283'
DOI: 10.1038/nmat3283
issue: 4
publisher: Nature Publishing Group
page: 261-263
type: article-journal
issued:
year: 2012
month: 3
and would like to use:
bibliography: bibliography.???
Turns out I needed to copy the references into a .yaml file. AND to add
---
references:
at the start of the file and --- at the end of the file

Attaching Mendeley .bib to RMarkdown

EDIT: Fixed first problem, but now I've got a different one.
I have been attempting to attach a bibliography generated by Mendeley to an RMarkdown document, but it's yielding a font error. I'm following instructions found here.
Here's the error:
[WARNING] Missing character: There is no  in font [lmroman12-
regular]:mapping=tex-text;!
[WARNING] Missing character: There is no  in font [lmroman12-
regular]:mapping=tex-text;!
[WARNING] Missing character: There is no  in font [lmroman12-
regular]:mapping=tex-text;!
[WARNING] Missing character: There is no  in font [lmroman12-
regular]:mapping=tex-text;!
Here is what my YAML looks like:
title: "Title"
author: "Author"
header-includes: \usepackage{setspace}\doublespacing
output:
pdf_document:
latex_engine: xelatex
fontsize: 12pt
bibliography: bib.bib
Here's a sample of the bib output from Mendeley:
#article{Bandelj2012,
abstract = {abstract {\textcopyright} The Author(s) 2012.},
author = {Bandelj, N. and Mahutga, M. C.},
doi = {10.1177/0020715212465097},
file = {:path/Bandelj, Mahutga - 2012 - Structures of globalization Evidence
from the worldwide network of bilateral investment treaties (1959-
2009).pdf:pdf},
isbn = {0020-7152},
issn = {0020-7152},
journal = {International Journal of Comparative Sociology},
number = {2},
pages = {95--123},
title = {{Structures of globalization: Evidence from the worldwide network of
bilateral investment treaties (1959-2009)}},
url = {http://cos.sagepub.com/cgi/doi/10.1177/0020715212465097},
volume = {54},
year = {2012}
}
Anyone have any tips on how to fix this? Any help greatly appreciated! Happy to provide more information.
I honestly don't have the answer but I see you haven't got any in a forthweek, so maybe I can help a bit. I had other problems when trying to use a .bib generated by Mendeley with Rmarkdown and found this as a way to fix the .bib file generated by Mendeley. It didn't fix my issue but maybe you could give it a try.
Since it didn't help me, I am moving to zotero, maybe that manager will create an appropiate .bib.

break a slide of reveal.js (xaringan) when it's long

I'm actually using xaringan, but it uses reveal.js, so it should be the same.
I have a slide which prints bibliography using RefManageR, and I'd like to use as many slides as needed:
---
```
{r results = "asis", echo = FALSE}
PrintBibliography(bib, .opts = list(check.entries = FALSE, sorting = "ynt"))
```
---
I guess I'm looking for some type of allowframebreaks, but I couldn't manage to find one.
Xaringan uses remark.js, not reveal.