首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针织品sanitize_fn警告通过knit2pdf将地块放入乳胶中

针织品sanitize_fn警告通过knit2pdf将地块放入乳胶中
EN

Stack Overflow用户
提问于 2018-05-10 17:45:37
回答 1查看 69关注 0票数 0

我正在使用调用knit2pdf的驱动程序脚本动态生成R中的pdf报告。我的报告源是.Rnw文件中的latex,调用如下:

代码语言:javascript
复制
knit2pdf("source.Rnw",output=paste0(fname,".tex"),quiet=T)

fname不包含任何点。

source.Rnw包含:

代码语言:javascript
复制
<<setup, echo=FALSE >>=
opts_chunk$set(fig.path=tempfile(tmpdir="work",pattern=fname,fileext=".pdf"))
@
<<custom-dev, echo=FALSE >>=
my_pdf<-function(file,width,height) {
  pdf(file,width=5,height=2)
}
@
<<plot, echo=FALSE, results="asis", dev="my_pdf", fig.ext="pdf">>=
# A ggplot chart
print(g) 
@

这些报告都很好,但是下面的警告是从sanitize_fn中生成的:

图路径中的点替换为_ ("work/fname_pdfplot")

很明显,冒犯。来自opts_chunk中的fileext。但是,如果我将该fileext更改为"_pdf",则报告中根本没有得到这个图,而latex会抛出一个文件(fname_pdfket-1)没有找到的错误。

关于如何(a)正确地做到这一点,所以没有警告,或者(b)这样做,就像我这样做,但压制这个特别的警告?

编辑1:

这里是一个不使用fileext的source.Rnw的工作示例。这似乎更接近了,因为现在由于放置work\fname而出现错误.在包含图形(而不是work/fname)中.,如果我将反斜杠更改为适当的斜杠,则编译非常干净。

tempfile正在返回work\fname.,所以我的修复方法可能只是重新转义那些反斜杠(或者用正斜杠替换它们)。这是不是我早就该知道的事了?

代码语言:javascript
复制
\documentclass[titlepage]{article}
\usepackage[utf8]{inputenc}
\usepackage[headheight=36pt, foot=24pt, top=1in, bottom=1in, left=1in, right=1in, landscape]{geometry}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage{fancyhdr}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{float}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{microtype}
\usepackage{libertine}
\usepackage{parskip}
\usepackage{environ}
\usepackage{preview}
\usepackage[labelformat=empty]{caption}
\usepackage{amssymb}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{picture}
\usepackage{needspace}
\usepackage{adjustbox}
\usepackage{graphicx}
\pagestyle{fancy}
\raggedbottom
\renewcommand\familydefault{\sfdefault}
\newcommand{\helv}{%
\fontfamily{phv}\fontseries{m}\fontsize{8}{10}\selectfont}
\newcommand{\mycopyright}{\helv Copyright.}
\cfoot{\mycopyright}
\rhead{\textbf{\Sexpr{firstname} \Sexpr{lastname}} \\ \Sexpr{oafr} to \Sexpr{eoafr} \\ Page \thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancypagestyle{fancytitlepage}
{
\fancyhf{}
\cfoot{\mycopyright}
\rhead{}
\renewcommand{\headrulewidth}{0pt}
}
\linespread{1.2}
\usepackage{sectsty}
\allsectionsfont{\sffamily}
\partfont{\centering}

\makeatletter
\newcommand{\sectbox}[1]{%
\noindent\protect\colorbox{gray!40}{%
\@tempdima=\hsize
\advance\@tempdima by-2\fboxsep
\advance\@tempdima by-2\fboxrule
\protect\parbox{\@tempdima}{%
\smallskip
% extra commands here
\centering
#1\smallskip
}}}
\newcommand{\subsectbox}[1]{%
\noindent\protect\colorbox{gray!20}{%
\@tempdima=\hsize
\advance\@tempdima by-2\fboxsep
\advance\@tempdima by-2\fboxrule
\protect\parbox{\@tempdima}{%
\smallskip
% extra commands here
#1\smallskip
}}}
\makeatother
\sectionfont{\sectbox}
\subsubsectionfont{\subsectbox}
\makeatletter
\newcommand\cellwidth{\TX@col@width}
\makeatother


\newlength\foo
\NewEnviron{recipe}{%
\begin{adjustbox}{minipage=\linewidth,gstore totalheight=\foo, gobble}
\BODY
\end{adjustbox}
\needspace{\foo}
\BODY%
}


<<setup, echo=FALSE >>=
opts_chunk$set(fig.path = tempfile(tmpdir="work",pattern=fname))
@


\hyphenpenalty=100000

\begin{document}
\raggedbottom
\setlength{\parskip}{0pt}


<<custom-dev,echo=FALSE>>=
wkld_pdf<-function(file,width,height) {
  pdf(file,width=5,height=2)
}
@

<<wkld, echo=FALSE, results='asis',fig.align="center",dev="wkld_pdf",fig.ext="pdf">>=
if (!is.na(wkld.team) | !is.na(wkld.res)) {
  g<-pltr$workload.chart(wkld.team,wkld.res,firstname)
  print(g)
}
@


\end{document}

在上面的示例中,正确地创建了文件work\fname61c28cd1a0尴尬-1.pdf,但是生成的tex有:

代码语言:javascript
复制
{\centering \includegraphics[width=\maxwidth]{work\fname61c28cd1a0awkld-1} 

}

因此找不到它。

EN

回答 1

Stack Overflow用户

发布于 2018-05-14 16:12:16

似乎忽略fileext是有效的(并且很可能将其设置为_pdf )来删除警告。

还需要用一个/替换由tempfile生成的\,以防止从生成的包含图形调用中发出另一个警告,就像在链中的某个位置,\被计算到。这样做是有效的:

代码语言:javascript
复制
opts_chunk$set(fig.path = gsub('\\\\','/',tempfile(tmpdir="work",pattern=fname)))

谢谢你帮我找到那个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50278630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档