我如何使 Sweave 逐字块居中?

我如何使 Sweave 逐字块居中?

我有一个非常简单的 sweave 块,包含两行,如下所示:

<<results=verbatim>>==
quantile(foo$bar)
@

我怎样才能使这个元素居中?我尝试过拥抱这个块,但\begin{center}没有成功。

答案1

默认情况下,逐字环境的宽度等于文本宽度。因此您无法将其居中:行尾的空格包含在行内。

幸运的是,内部Sweave.sty使用了fancyvrb包。 Sweave定义了三个环境,分别为输入、输出和代码,使用fancyvrb方式如下:

\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}

现在fancyvrb有几种环境。其中一种对您有帮助的环境是BVerbatim:将文本放入一个框中,该框的宽度默认等于文本最长行的宽度。生成的框可以居中。

因此,以下内容有效:

\documentclass{article}
\usepackage{Sweave}
\pagestyle{empty}
\DefineVerbatimEnvironment{Soutput}{BVerbatim}{}
\begin{document}
\noindent\rule{\textwidth}{.1pt} % To show centering
\begin{center}
<<>>==
2+3
@
\end{center}
\end{document}

我们将 重新定义SoutputBVerbatim,输出现在居中:

在此处输入图片描述

请注意,本例中只有输出居中。要使输入居中,Sinput也请重新定义。

相关内容