Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
潘多克';在RStudio中将RMarkdown转换为PDF时,s环境CSLReference未定义_R_Latex_R Markdown_Knitr_Pandoc - Fatal编程技术网

潘多克';在RStudio中将RMarkdown转换为PDF时,s环境CSLReference未定义

潘多克';在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

尝试创建引用时(对于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: 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$