这是对.Rmd文件中如何全局设置书目路径的后续,其中使用knitr/rmarkdown/pandoc的解决方案不适用于Quarto。
我在一个全系统的.bib文件夹中有多个localtexmf文件.我想明确指出,其中一些是在四边形文件中搜索的参考资料。(我不想将每个文件复制到项目文件夹,也不希望指定这些文件的完整绝对路径或相对路径。)
使用knitr/rmarkdown/pandoc,我可以使用:
bibliography:
- references.bib
- "`r system('kpsewhich graphics.bib', intern=TRUE)`"
- "`r system('kpsewhich statistics.bib', intern=TRUE)`"
- "`r system('kpsewhich timeref.bib', intern=TRUE)`"但是,使用Quarto时,会出现一个错误:
Preparing to preview
[1/2] intro.qmd
File r system('kpsewhich graphics.bib', intern=TRUE) not found in resource pathsystem(kpsewhich())命令确实找到控制台中的文件:
> system('kpsewhich graphics.bib')
C:/Users/friendly/Dropbox/localtexmf/bibtex/bib/graphics.bib
[1] 0我怎么才能用Quarto做这件事?Quarto的YAML语法有什么不同吗?还有别的办法吗?
编辑:这可能是与Quarto一起在YAML中使用r function()的一个更普遍的问题。这种设置date:的尝试不会给出错误,但是在呈现的书中会产生无效的日期。
date: "`r format(Sys.time(), '%B %d, %Y')`"[这现在是解决了,使用了@shafee建议的!expr format(Sys.time(), '%B %d, %Y')。
测试PDF
呈现为PDF提供了更多线索,说明为什么即使是!expr解决方案也不能与Quarto一起工作。在控制台里,我得到:
bibliography:
- references.bib
- tag: '!expr'
value: system('kpsewhich graphics.bib'
- intern=TRUE)
- tag: '!expr'
value: system('kpsewhich statistics.bib'
- tag: '!expr'
value: system('kpsewhich timeref.bib'
date:
tag: '!expr'
value: 'format(Sys.time(), ''%B %d, %Y'')'
File intern=TRUE) not found in resource path因此Quarto似乎很难用intern=TRUE选项解析intern=TRUE调用。这好像是个虫子。
发布于 2022-08-08 23:56:42
你能在参考书目yaml键下这样做吗,
- !expr system('kpsewhich graphics.bib', intern=TRUE)我还没有测试过这一点,但我的预感是,由于quarto在yaml中使用不同的语法(请看这里)来计算R-代码,也许这就是为什么它将"`r ...`"中的给定命令视为文件而不是R-代码的原因。
https://stackoverflow.com/questions/73282486
复制相似问题