我有以下组合系统用于编写Knitr和LaTeX的报告,
示例.Rnw代码如下所示,我的问题是在“图1:测试”下面创建了一个文本字符串“latticeknitrstatsgraphicsgrDevicesutilsdatasetsmethodsbase”。我想知道如何摆脱它。
\documentclass[letterpaper]{article}
\title{An example}
\author{Me}
\date{\today{}}
<<setup, include=FALSE, cache=FALSE>>=
knit_hooks$set(myPackage = function(before, options, envir){
if(before)
library(lattice) else NULL
})
@
\begin{document}
\maketitle
\newpage
\section{My section 1}
\begin{figure}
\caption{Test}\label{fig:GofBase}
<<myPackage=TRUE, echo=FALSE, results='asis', cache=TRUE, fig.show='hold', fig.align='center', warning=FALSE>>=
xyplot(rnorm(100)~rnorm(100))
@
\end{figure}
\end{document}
答案 0 :(得分:1)
由于问题的定义不是很明确,而最小的例子并不是绝对的&#34; minimal&#34;,这里有一个改进的版本:
为什么以下最小示例会在输出中添加latticeknitrstatsgraphicsgrDevicesutilsdatasetsmethodsbase
之类的字符串?
\documentclass{article}
<<setup>>=
knit_hooks$set(myPackage = function(before, options, envir){
if(before) library(lattice)
})
@
\begin{document}
<<myPackage=TRUE>>=
xyplot(rnorm(100)~rnorm(100))
@
\end{document}
这与lattice
无关,而且它不是knitr
chunk hooks的特殊功能。
当chunk hook返回一个字符值时,该值包含在输出中:
在knitr中,钩子也可用于将文本插入输出。为此,钩子函数必须返回一个字符结果。 [knitr: hooks]
在这种情况下,钩子没有明确的返回值。因此,返回if()
的返回值。 if()
依次返回library
返回的值:
if
返回已计算表达式的值,如果没有,则返回NULL
(如果没有其他值,则可能会发生这种情况)。 [见?"if"
]
最后:
library
返回(无形)附加包列表[请参阅?libray
]
首先,这个例子并不是很好。没有理由使用chunk hook加载包。如果需要lattice
,则应将其加载到setup
块中。
但是可能存在类似的块挂钩 有用的情况。然后,解决方案是明确返回NULL
:
knit_hooks$set(myPackage = function(before, options, envir){
if(before) library(lattice)
return(NULL)
})
答案 1 :(得分:0)
这是一个最低限度更改版本,#34;适用于我&#34; (也来自RStudio)
<table class="data">
<thead>
<tr>
<th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobNumber"/></th>
<th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobName"/></th>
<th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobDescription"/></th>
<th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobType"/></th>
</tr>
</thead>
<% int i = 1; %>
<tbody>
<logic:iterate id="job" name="jobListe" type="com.abc.model.sp.job.JobVO">
<bean:define id="pk" name="job" property="primaryKey"/>
<bean:define id="rowClass">
<%=job.equals(serviceProtokollDRS.getSelectedJob()) ?
"mark" : Globalerie.EVEN_OR_ODD[i]%>
</bean:define>
<tr class="<bean:write name="rowClass"/>" id="<bean:write name="pk"/>"
onclick="javascript:Job.select('<bean:write name="pk"/>');">
<td><bean:write name="job" property="jobNummer"/></td>
<td><bean:write name="job" property="jobName"/></td>
<td><bean:write name="job" property="desc"/></td>
<td><bean:write name="job" property="type"/></td>
</tr>
<% i = 1 -i; %>
</logic:iterate>
</tbody>
</table>
我在第一个块中添加了\documentclass[letterpaper]{article}
\title{An example}
\author{Me}
\date{\today{}}
<<setup, include=FALSE, cache=FALSE, echo=FALSE>>=
knit_hooks$set(myPackage = function(before, options, envir){
if(before)
library(lattice) else NULL
})
@
\begin{document}
%\SweaveOpts{concordance=TRUE}
\maketitle
\newpage
\section{My section 1}
\begin{figure}
\caption{Test}\label{fig:GofBase}
<<myPackage=TRUE, echo=FALSE, cache=FALSE, fig.show='hold', fig.align='center', warning=FALSE>>=
print(xyplot(rnorm(100)~rnorm(100)))
@
\end{figure}
\end{document}
,并从第二个块中删除了echo=FALSE
。