目標: URL を使用して、YAML フロント マター内のドキュメントを指定することができます。要素csl
に対しても同じことができるようにしたいと考えています。bibliography
質問:これは可能ですか?
動機:作業ディレクトリ内のファイルへの直接リンクとは対照的に、これらの要素に URL を使用すると、更新時に 1 つの中央の場所に簡単に同期できる公開ファイル.csl
とファイルを組み込むことで、ドキュメント レンダリング ワークフローの再現性が向上します (警告.bib
: 複製者がインターネットに接続している限り)。
最適ではない代替案:.bib
およびファイルを作業ディレクトリに含めて、.csl
それらがプロジェクトにバンドルされたままになるようにすることもできます。その後、オフラインでも利用できます。このアプローチには 2 つの欠点があります。
.bib
これにより、コンピューター上にとファイルの多数のコピーが.csl
作成されます (レンダリングするドキュメントがあるプロジェクトごとに 1 つのコピー)。- ファイルは参照マネージャーを介して自動的に生成される
.bib
ため、参照マネージャーと.bib
ファイル間の同期を壊さずに (異なるプロジェクトの) 複数の場所に配置することはできません。
デモンストレーション:
csl
要素の URL を使用した実際の例を次に示します (ecology.csl
公式の Citation Style Language 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
.csl
ファイルへの URL を含む正常にレンダリングされた PDF の画像
これは、私の Dropbox に格納されてbibliography
いる同じファイルへのパブリック Web リンクで要素を埋めようとしている、機能しない例です。reprex_library.bib
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
マニュアルによると、YAML 要素は意図的に「CSL スタイル ファイルのパスまたは URL」にすることが許可されているようですが、要素csl
はbibliography
「使用する書誌ファイルのパスまたはパスの YAML リスト」にしかできません。
ワークフローのこれらの部分に関連していることが判明した場合に備えて、この質問に pandoc および pandoc-citeproc タグを追加しました。