如何在 knitr 中省略评论和消息时删除空白页

如何在 knitr 中省略评论和消息时删除空白页

我正在使用以下代码来创建一个情节,我想省略消息、评论和警告以及情节之外的所有其他内容。

\documentclass{article}
\usepackage{pdflscape}
\pagestyle{empty}
\begin{document}

\begin{landscape}

<<echo=FALSE, message=FALSE, comment=NA, warning=FALSE>>=
x1 <- runif(10)
y1 <- runif(10)
x2 <- runif(10)
y2 <- runif(10)
x <- cbind(x1,x2)
y <- cbind(y1,y2)
plot(y ~ x)
@

\end{landscape}
\end{document}

在情节之前创建了一个空白页。我认为与景观相关的某些东西会创建空白页。有什么方法可以摆脱它吗?非常感谢!

答案1

如果您的图像太大(无法容纳由\textwidth和定义的文本块\textheight),则会导致出现框溢出警告,启动分页符并滚动到后续页面。如果文档构造的默认行为导致此溢出,则以下操作将负责丢弃第一页(始终):

\documentclass{article}
\usepackage{graphicx,atbegshi,pdflscape}% http://ctan.org/pkg/{graphicx,atbegshi,pdflscape}
\AtBeginShipout{\ifnum\value{page}=1\AtBeginShipoutDiscard\fi}
\pagestyle{empty}
\begin{document}
\begin{landscape}
  \includegraphics[height=1.1\textheight]{example-image-a}
\end{landscape}
\end{document}

atbegshi提供\AtBeginShipoutDiscard丢弃当前存储的页面并应执行\AtBeginShipout。我们测试计数器的值page,如果为 1,则丢弃该页面。尽管图像过大导致输出了两页,但上述文档仍生成单个页面。


如果你只是偶尔遇到这个问题,并且想自动执行该过程,则应使用lastpage包裹跟踪文档中的最后一页。如果最后一页不是 1,则丢弃第一页。以下是对此的看法:

\documentclass{article}
\usepackage{graphicx,atbegshi,pdflscape}% http://ctan.org/pkg/{graphicx,atbegshi,pdflscape}
\usepackage{lastpage,refcount}% http://ctan.org/pkg/{lastpage,refcount}
\newcounter{lastpage}
\AtBeginShipout{%
  \setcounterpageref{lastpage}{LastPage}
  \ifnum\value{page}=1\relax
    \ifnum\value{lastpage}>1\AtBeginShipoutDiscard\fi\fi}
\pagestyle{empty}
\begin{document}
\begin{landscape}
  \includegraphics[height=1.1\textheight]{example-image-a}
\end{landscape}
\end{document}

refcount包裹通过允许分配来弥补引用和计数器之间的差距前者到后者。

我用过graphicx以便\includegraphics放置超大比例的图像。您的使用knitr将类似,但可能不需要此包。

相关内容