Как я могу использовать URL для библиографического элемента YAML в документе RMarkdown?
Цель: я могу использовать URL для указания csl
для моего документа в рамках моей темы YAML, и я хотел бы иметь возможность сделать то же самое для bibliography
элемент.
Вопрос: возможно ли это?
Мотивация: использование URL-адресов для этих элементов, в отличие от прямых ссылок на файлы в моем рабочем каталоге, повышает воспроизводимость моего рабочего процесса рендеринга документов путем включения общедоступных .csl
а также .bib
файлы, которые также легко синхронизируются с одним центральным местоположением по мере их обновления (предостережение: если у репродуктора есть подключение к Интернету).
Неоптимальная альтернатива: альтернативой может быть включение .bib
а также .csl
файлы в рабочем каталоге, гарантируя, что они остаются в комплекте с проектом. Тогда они также доступны в автономном режиме. У этого подхода есть 2 недостатка:
- Это приведет ко многим копиям
.bib
а также.csl
файлы на моем компьютере (копия для каждого проекта, в котором у меня есть документ для рендеринга) -
.bib
файл генерируется автоматически с помощью менеджера ссылок и поэтому не может быть помещен в несколько мест (для разных проектов) без нарушения синхронизации между менеджером ссылок и.bib
файл.
Демонстрация:
Вот рабочий пример использования URL для csl
элемент (ecology.csl
файл напрямую из официального репозитория GitHub языка цитирования:
reprex_library.bib
@Misc{Chang2015,
Title = {shiny: Web Application Framework for R. R package version 0.12.1},
Author = {Chang, W. and Cheng, J. and Allaire, JJ. and Xie, Y. and McPherson, J. },
Year = {2015},
Type = {Computer Program},
Url = {http://CRAN.R-project.org/package=shiny}
}
@Article{RCoreTeam,
Title = {R: A Language and Environment for Statistical Computing},
Author = {{R Core Team}},
Year = {2015},
Type = {Journal Article},
Url = {http://www.R-project.org}
}
reprex_paper_bib-direct_csl-link.Rmd
---
title: 'My Title'
author: "Me me me me!"
output: pdf_document
bibliography: reprex_library.bib
csl: https://raw.githubusercontent.com/citation-style-language/styles/master/ecology.csl
---
Application written in the R programming language [@RCoreTeam] using the Shiny framework [@Chang2015].
# REFERENCES
Который успешно с этим выводом:
processing file: reprex_paper_bib-direct_csl-direct.Rmd
|.................................................................| 100%
ordinary text without R code
/usr/local/bin/pandoc +RTS -K512m -RTS reprex_paper_bib-direct_csl-direct.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output reprex_paper_bib-direct_csl-direct.tex --template /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rmarkdown/rmd/latex/default-1.17.0.2.tex --highlight-style tango --pdf-engine pdflatex --variable graphics=yes --variable 'geometry:margin=1in' --filter /usr/local/bin/pandoc-citeproc
output file: reprex_paper_bib-direct_csl-direct.knit.md
Output created: reprex_paper_bib-direct_csl-direct.pdf
Изображение успешно отрендеренного PDF с URL на .csl
файл
Вот нерабочий пример, пытаясь заполнить bibliography
элемент с общедоступной веб-ссылкой на тот же reprex_library.bib
файл хранится в моем Dropbox:
reprex_paper_bib-link_csl-link.Rmd
---
title: 'My Title'
author: "Me me me me!"
output: html_document
bibliography: https://dl.dropboxusercontent.com/s/3e601ma7ji9iu9z/reprex_library.bib
csl: https://raw.githubusercontent.com/citation-style-language/styles/master/ecology.csl
---
Application written in the R programming language [@RCoreTeam] using the Shiny framework [@Chang2015].
# REFERENCES
Что нарушает этот вывод:
|.................................................................| 100%
ordinary text without R code
/usr/local/bin/pandoc +RTS -K512m -RTS reprex_paper_bib-link_csl-link.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output reprex_paper_bib-link_csl-link.tex --template /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rmarkdown/rmd/latex/default-1.17.0.2.tex --highlight-style tango --pdf-engine pdflatex --variable graphics=yes --variable 'geometry:margin=1in' --filter /usr/local/bin/pandoc-citeproc
processing file: reprex_paper_bib-link_csl-link.Rmd
output file: reprex_paper_bib-link_csl-link.knit.md
Could not find bibliography file: https://dl.dropboxusercontent.com/s/3e601ma7ji9iu9z/reprex_library.bib
Error running filter /usr/local/bin/pandoc-citeproc:
Filter returned error status 1
Error: pandoc document conversion failed with error 83
Execution halted
Это мое R
информация о сессии:
> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.2 backports_1.1.2 magrittr_1.5 rsconnect_0.8.5 rprojroot_1.3-2
[6] htmltools_0.3.6 tools_3.4.2 rticles_0.4.1 yaml_2.1.16 Rcpp_0.12.13
[11] stringi_1.1.5 rmarkdown_1.8.7 knitr_1.18 stringr_1.2.0 digest_0.6.14
[16] evaluate_0.10.1
Я не знаю, является ли это ошибкой или предполагаемым поведением. Если это предназначено, я не уверен почему. Любая помощь будет принята с благодарностью!
Редактировать:
Из дальнейшего чтения, возможно, это намеренное поведение pandoc-citeproc
который вызывается в процессе вязания с использованием --filter /usr/local/bin/pandoc-citeproc
От pandoc-citeproc
руководство, похоже, что csl
Элемент YAML намеренно может быть "путем или URL-адресом файла стиля CSL", тогда как bibliography
Элементом может быть только "путь или список путей YAML используемых файлов библиографии".
Я добавил теги pandoc и pandoc-citeproc к этому вопросу на случай, если он окажется связанным с этими частями рабочего процесса.
1 ответ
Кажется, работает, чтобы загрузить файл в коде. Я положил образец документа в Untitled.Rmd
, то работает это работает:
---
title: 'My Title'
author: "Me me me me!"
output: html_document
bibliography: Untitled_files/reprex.bib
csl: https://raw.githubusercontent.com/citation-style-language/styles/master/ecology.csl
---
Application written in the R programming language [@RCoreTeam] using the Shiny framework [@Chang2015].
```{r}
dir.create("Untitled_files")
download.file("https://dl.dropboxusercontent.com/s/3e601ma7ji9iu9z/reprex_library.bib", "Untitled_files/reprex.bib")
```
# REFERENCES
Имя каталога Untitled_files
магия для Untitled.Rmd
: за foo.Rmd
, foo_files
каталог, который будет очищен после вязания Есть, вероятно, обстоятельства, когда knitr
создам его, а потом мой dir.create
приведет к предупреждению, но это необходимо в этом простом примере.