在knitr chunk中减少命令和输出之间的空间

时间:2016-01-18 23:42:38

标签: r latex knitr

我在knitr使用LaTeX,并且代码块和输出的开头回显的命令之间似乎有很多空格:

enter image description here

用于此的LaTeX代码如下:

  \begin{knitrout}\scriptsize
  \definecolor{shadecolor}{rgb}{1, 1, 1}\color{fgcolor}\begin{kframe}
  \begin{alltt}
  \hlstd{> }\hlstd{lda_test_pred} \hlkwb{<-} \hlkwd{predict}\hlstd{(lda_fit,} \hlkwc{newdata} \hlstd{= seg_test)}
  \hlstd{> }\hlkwd{library}\hlstd{(pROC)}
  \hlstd{> }
  \hlstd{> }\hlstd{lda_roc} \hlkwb{<-} \hlkwd{roc}\hlstd{(}\hlkwc{response} \hlstd{= seg_test}\hlopt{$}\hlstd{Class,}
  \hlstd{+ }               \hlkwc{predictor} \hlstd{= lda_test_pred}\hlopt{$}\hlstd{posterior[,} \hlstr{"PS"}\hlstd{],}
  \hlstd{+ }               \hlcom{## we need to tell the function that the _first_ level}
  \hlstd{+ }               \hlcom{## is our event of interest}
  \hlstd{+ }               \hlkwc{levels} \hlstd{=} \hlkwd{rev}\hlstd{(}\hlkwd{levels}\hlstd{(seg_test}\hlopt{$}\hlstd{Class)))}
  \hlstd{> }\hlstd{lda_roc}
  \end{alltt}
  \begin{verbatim}

  Call:
  roc.default(response = seg_test$Class, predictor = lda_test_pred$posterior[,     "PS"], levels = rev(levels(seg_test$Class)))

  Data: lda_test_pred$posterior[, "PS"] in 346 controls (seg_test$Class WS) < 664 cases (seg_test$Class PS).
  Area under the curve: 0.874
  \end{verbatim}
  \begin{alltt}
  \hlstd{> }\hlcom{# plot(exRoc print.thres = .5)}
  \end{alltt}
  \end{kframe}
  \end{knitrout}

alltt的结尾和verbatim的开头之间生成空格。对于此示例,部分差距是呼叫输出之前的空行。

关于如何在knitr中调整此问题的任何想法(不影响段落之间的任何间距等)?

1 个答案:

答案 0 :(得分:8)

按照此处的建议

control vertical space before and after verbatim environment?

并在文档中添加以下行:

\usepackage{etoolbox} 
\makeatletter 
\preto{\@verbatim}{\topsep=0pt \partopsep=0pt } 
\makeatother

有关详细信息,请查看answer