Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

citr addin not working with absolute paths #69

Open
rreareyes opened this issue Apr 20, 2020 · 2 comments
Open

citr addin not working with absolute paths #69

rreareyes opened this issue Apr 20, 2020 · 2 comments
Labels

Comments

@rreareyes
Copy link

When calling the addin to insert citations, while having an absolute path to a .bib file in the bibliography field from the YAML header, this error is returned in the console:

Error in FUN(X[[i]], ...) : 
  file 'C:/Documents/C:/Documents/References/r-references.bib' does not exist

Example:

---
title             : "The title"
shorttitle        : "Title"

author: 
  - name          : "First Author"
    affiliation   : "1"
    corresponding : yes    # Define only one corresponding author
    address       : "Postal address"
    email         : "my@email.com"

affiliation:
  - id            : "1"
    institution   : "Wilhelm-Wundt-University"

authornote: |

abstract: |

keywords          : "keywords"
wordcount         : "X"

bibliography      : ["C:/Documents/References/r-references.bib"]

floatsintext      : no
figurelist        : no
tablelist         : no
footnotelist      : no
linenumbers       : yes
mask              : no
draft             : no

documentclass     : "apa6"
classoption       : "man"
output            : papaja::apa6_pdf
---

I already tried installing the latest version directly from github, I'm running version 0.3.2

Thanks for your help!

@kbvernon
Copy link

kbvernon commented May 13, 2020

Controlling relative paths with here::here() as in

  bibliography: "`r here::here('folder/bibliography.bib')`"

also fails for the same reason. (Excellent package, btw.)

@kbvernon
Copy link

kbvernon commented May 19, 2020

Not sure when @crsh will be around to answer this, but it looks like a simple workaround (haven't tested this yet!) may be to change the global citr options:

bib <- <<path to your bib>>

options(citr.bibliography_path = bib,
        citr.update_bib = bib)

And make sure you have the same path set in your YAML.

Assuming that works, it may be that the fix for this is to access the bibliography through rmarkdown::metadata$bibliography in citr::.onLoad().

I was wrong about the fix. It looks like the problem occurs in citr::get_bib_from_yaml(), which is defined in the script for citr::insert_citation(), way down on lines 784-802. Specifically, this bit of code:

absolute_bib_file <- sapply(
  file.path(rmd_path, yaml::yaml.load(yaml_front_matter)$bibliography)
  , tools::file_path_as_absolute
)

The file.path adds the rmd_path, which is the path to the directory where the rmarkdown is saved. This is being added to the file path in the YAML, hence C:/Documents/C:/Documents/... in the above example.

tools::file_path_as_absolute should add rmd_path by default if the bibliography is in the same folder as the rmarkdown document, so including file.path(rmd_path, yaml...) seems unnecessary. Just

absolute_bib_file <- sapply(
  yaml::yaml.load(yaml_front_matter)$bibliography,
  tools::file_path_as_absolute
) 

should work. That said, tools::file_path_as_absolute is also applied to the result of citr::get_bib_from_yaml() on line 120, so I'm not sure it's really doing anything useful in the get_bib function. I'm still pretty new to Github, but when I learn how to do pull requests, I might suggest removing that line from the function.

@crsh crsh added the bug label Jul 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants