knitr:块中的代码意外包装
knitr: code in chunks gets wrapped unexpectedly
在使用 knit2pdf() 和 LaTeX 的 beamer 演示中,我有时
发现块中的代码被包装了,即使我已经设置了
tidy=FALSE
全球。例如,这个块:
\item Fit this using \func{glm}:
<<berk-logit2, size='footnotesize'>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq, family = "binomial")
@
显示如下:
请注意,所有三行都是换行的,就像在段落模式中一样。代码块中的缩进行使用空格,而不是制表符。
当我查看生成的 .tex 文件时,没有什么奇怪的,就是给 alltt
的行看起来没问题。
\item Fit this using \func{glm}:
\begin{knitrout}\footnotesize
\definecolor{shadecolor}{rgb}{1, 0.961, 0.933}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlstd{berkeley} \hlkwb{<-} \hlkwd{as.data.frame}\hlstd{(UCBAdmissions)}
\hlstd{berk.logit2} \hlkwb{<-} \hlkwd{glm}\hlstd{(Admit} \hlopt{==} \hlstr{"Admitted"} \hlopt{~} \hlstd{Dept} \hlopt{+} \hlstd{Gender,}
\hlkwc{data} \hlstd{= berkeley,} \hlkwc{weights} \hlstd{= Freq,} \hlkwc{family} \hlstd{=} \hlstr{"binomial"}\hlstd{)}
\end{alltt}
\end{kframe}
\end{knitrout}
大多数其他块都会生成格式正确的输出。例如,
<<mice-tab, size='footnotesize' >>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
给出:
这可能是什么原因造成的?我的设置很复杂,所以我没有 MWE,但如果我知道要查找的内容会很有帮助。
您可能在幻灯片上使用了 fragile
框架选项,其中的换行效果符合预期。
设置 \begin{frame}[fragile]
会产生您为 mice-tab
块显示的正确结果:
\documentclass{beamer}
\begin{document}
<<echo = FALSE>>=
library(knitr)
opts_chunk$set(size = "footnotesize",
eval = FALSE,
tidy = FALSE)
@
\begin{frame}[fragile]
With fragile:
<<berk-logit2-fragile>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq,
family = "binomial")
@
<<mice-tab-fragile>>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
\end{frame}
\begin{frame}
Not fragile:
<<berk-logit2>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq,
family = "binomial")
@
<<mice-tab>>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
\end{frame}
\end{document}
在使用 knit2pdf() 和 LaTeX 的 beamer 演示中,我有时
发现块中的代码被包装了,即使我已经设置了
tidy=FALSE
全球。例如,这个块:
\item Fit this using \func{glm}:
<<berk-logit2, size='footnotesize'>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq, family = "binomial")
@
显示如下:
请注意,所有三行都是换行的,就像在段落模式中一样。代码块中的缩进行使用空格,而不是制表符。
当我查看生成的 .tex 文件时,没有什么奇怪的,就是给 alltt
的行看起来没问题。
\item Fit this using \func{glm}:
\begin{knitrout}\footnotesize
\definecolor{shadecolor}{rgb}{1, 0.961, 0.933}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlstd{berkeley} \hlkwb{<-} \hlkwd{as.data.frame}\hlstd{(UCBAdmissions)}
\hlstd{berk.logit2} \hlkwb{<-} \hlkwd{glm}\hlstd{(Admit} \hlopt{==} \hlstr{"Admitted"} \hlopt{~} \hlstd{Dept} \hlopt{+} \hlstd{Gender,}
\hlkwc{data} \hlstd{= berkeley,} \hlkwc{weights} \hlstd{= Freq,} \hlkwc{family} \hlstd{=} \hlstr{"binomial"}\hlstd{)}
\end{alltt}
\end{kframe}
\end{knitrout}
大多数其他块都会生成格式正确的输出。例如,
<<mice-tab, size='footnotesize' >>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
给出:
这可能是什么原因造成的?我的设置很复杂,所以我没有 MWE,但如果我知道要查找的内容会很有帮助。
您可能在幻灯片上使用了 fragile
框架选项,其中的换行效果符合预期。
设置 \begin{frame}[fragile]
会产生您为 mice-tab
块显示的正确结果:
\documentclass{beamer}
\begin{document}
<<echo = FALSE>>=
library(knitr)
opts_chunk$set(size = "footnotesize",
eval = FALSE,
tidy = FALSE)
@
\begin{frame}[fragile]
With fragile:
<<berk-logit2-fragile>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq,
family = "binomial")
@
<<mice-tab-fragile>>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
\end{frame}
\begin{frame}
Not fragile:
<<berk-logit2>>=
berkeley <- as.data.frame(UCBAdmissions)
berk.logit2 <- glm(Admit == "Admitted" ~ Dept + Gender,
data = berkeley, weights = Freq,
family = "binomial")
@
<<mice-tab>>=
data(Mice, package="vcdExtra")
mice.tab <- xtabs(Freq ~ litter + treatment + deaths, data=Mice)
ftable(litter + treatment ~ deaths, data=mice.tab)
@
\end{frame}
\end{document}