潘多克';在RStudio中将RMarkdown转换为PDF时,s环境CSLReference未定义
尝试创建引用时(对于pandoc版本2.8.0.1和R版本3.6.1),将RMarkdown文件编织成PDF(在RStudio版本1.2.1335中)失败。(例如,编织到HTML时不会发生这种情况。) 这是一个小的代表,例如在RMarkdown:潘多克';在RStudio中将RMarkdown转换为PDF时,s环境CSLReference未定义,r,latex,r-markdown,knitr,pandoc,R,Latex,R Markdown,Knitr,Pandoc,尝试创建引用时(对于pandoc版本2.8.0.1和R版本3.6.1),将RMarkdown文件编织成PDF(在RStudio版本1.2.1335中)失败。(例如,编织到HTML时不会发生这种情况。) 这是一个小的代表,例如在RMarkdown: --- title: "Rep. Ex. for 'LaTeX Error: Environment cslreferences undefined'" output: pdf_document: default bibliography: rep
---
title: "Rep. Ex. for 'LaTeX Error: Environment cslreferences undefined'"
output:
pdf_document: default
bibliography: report.bib
---
```{r generate-bibtex-file, include=FALSE}
knitr::write_bib(file = "report.bib", prefix = "")
```
# Used R version
R 3.6.1 [@base]
# References
编织此产品作为最终输出(在我的机器上):
“C:/PROGRA~1/Pandoc/Pandoc”+RTS-K512m-RTS RepEx.utf8.md——到latex——从标记+自动链接\u裸\u URI+tex\u数学\u单反斜杠——输出RepEx.tex——模板“C:\Users\gcb7\Documents\R\win library\3.6\R标记\rmd\latex\default-1.17.0.2.tex”——高亮显示风格探戈——pdf引擎pdflatex——变量图形=是——lua过滤器“C:/Users/gcb7/Documents/R/win-library/3.6/rmarkdown/rmd/lua/pagebreak.lua”--lua过滤器“C:/Users/gcb7/Documents/R/win-library/3.6/rmarkdown/rmd/lua/latex-div.lua”--变量“geometry:margin=1in”--变量“compact title:yes”--过滤器“C:/PROGRA~1/Pandoc/Pandoc citeproc.exe”
输出文件:RepEx.knit.md
!LaTeX错误:环境cslreferences未定义
这似乎是在最近对pandoc 2.8.0.1进行了更新之后开始的,我刚刚在2.8中发现,cslreferences环境中似乎做了一些更改(但到目前为止,pandoc讨论版或相应的github bug跟踪器上似乎没有出现任何更改)
有什么想法吗?根据您链接的发行说明,
cslreferences
是在2.8版中引入的,包括在pandoc模板中对该环境的适当定义。但是,Rmarkdown正在使用自己的模板(C:\Users\gcb7\Documents\R\win library\3.6\rmarkdown\rmd\latex\default-1.17.0.2.tex
,在您的情况下),它没有此定义。这已在C.f.GitHub上修复
一种解决方法是将复制到Rmarkdown模板的本地副本,并通过模板
字段指定该副本
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newenvironment{cslreferences}%
{\setlength{\parindent}{0pt}%
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces}%
{\par}
或
通过标题包含或类似内容,将结果tex
文件添加到文件中。或者,如果安装了RStudio,也可以使用RStudio附带的pandoc
。这可以通过将/bin/pandoc/
预先添加到路径
,可能在.Renviron
中,使其特定于R
一切都未经测试,因为我没有pandoc 2.8…在使用ISDOWN时出现了相同的问题。
这让人困惑,因为Ralf(adding\newenvironment{cslreferences})的解决方案已经包含在disdown的template.tex文件表单中
过了一会儿,我发现:
改变
\newenvironment{cslreferences}%
\newenvironment{CSLReferences}%
解决了这个问题
特别是,如果您在Isdown中也遇到此问题,则必须在template.tex文件中更改this。
template.tex中的部分应如下所示:
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newenvironment{CSLReferences}%
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
{\par}
$endif$
正如所描述的那样
似乎默认的Pandoc模板也使用了\newenvironment{CSLReferences},因为版本2.11()可能相关,谢谢!是的,我想,但是这个例子是/没有可复制的,当我发布我的问题时,与Pandoc的关系还没有建立(并且由于声誉不足,我不允许发表评论),目前还没有解决方案。这个问题几个月前已经报告()了,我已经解决了。您没有提供xfun::session_信息('rmarkdown'))
,但我猜您没有使用最新版本的rmarkdown。顺便说一句,因为您使用的是RStudio,所以不需要单独安装Pandoc——当前版本的RStudio捆绑了一个较低版本的Pandoc,这不会产生此问题。如果您必须自己安装Pandoc,您可以安装Pandocremotes::install\u github('rstudio/rticles')更新rticles
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newenvironment{CSLReferences}%
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
{\par}
$endif$