我的问题是将 knitr Sweave 代码块的逐字输出包含在脚注中。BVerbatim 环境 (幻想VRB) 为我提供了我想要的格式。(注意:需要在序言后面的某个位置放置 \VerbatimFootnotes。)使用 chunk 选项,results='asis'
代码以 \begin{Sinput} ... \end{Sinput} 分隔。有没有办法确保这些不会出现,或者忽略它们?文章末尾有一个例子。
如果我将输出直接包含在脚注中,无论是使用results='asis'
还是results='markup'
,格式都会很乱,代码会显示为正常大小,即使我有size='footnotesize'
一个块选项。我当然可以承认失败,并将代码直接包含在 BVerbatim 环境中,同时存在打印的代码不能保证是执行的代码的风险。
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\VerbatimFootnotes
<<setup, echo=FALSE>>=
render_listings()
@
<<install-pkg, echo=FALSE, eval=FALSE>>=
repos <- "http://cran.csiro.au"
install.packages('httr', repos=repos)}
@
To install the package {\em httr}, execute
the code in the footnote.\footnote{
\begin{BVerbatim}[baseline=t]
<<install-pkg, eval=FALSE, echo=TRUE, results="asis">>=
@
\end{BVerbatim}
}
\end{document}
答案1
下面的做法比较笨拙,但是却达到了我想要的效果
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\VerbatimFootnotes
\newcommand*\FancyVerbStopString{'zzz'}
<<setup, echo=FALSE>>=
render_listings()
@
<<install-pkg, echo=FALSE, eval=FALSE>>=
repos <- "http://cran.csiro.au"
install.packages('httr', repos=repos)}
@
To install the package {\em httr}, execute
the code in the footnote.\footnote{
\begin{BVerbatim}[baseline=t, firstline=2, lastline=3]
<<install-pkg-fn, eval=FALSE, echo=TRUE, highlight=FALSE, results="asis">>=
<<install-pkg>>
'zzz'
@
\end{BVerbatim}
}
\end{document}
的效果第一行=2是删除 \begin{Sinput}。可以指定最后一行=3删除 \end{Sinput}。但是,为了自动使用,这需要一种计算代码行数的机制。因此使用
\newcommand*\FancyVerbStopString{'zzz'}
当然,任何字母数字字符串都可以代替“zzz”