【问题标题】:knitr's kframe producing errors in LaTex, no shadecolor for code chunksknitr 的 kframe 在 LaTex 中产生错误,代码块没有 shadecolor
【发布时间】:2014-06-27 18:49:38
【问题描述】:

我正在使用 R 的 knitr 和 LaTeX 创建一个 pdf。技术中心为构建输出错误提供“!未定义的控制序列”。技术中心指出带有 \begin{kframe} 和 \end{kframe} 的行是有问题的行。

删除 kframe 环境可以解决构建输出中的错误,但即使删除了 kframe 环境,文档也不会显示代码块的阴影颜色。

我更新了我的 MikTex 包和 knitr。该文件的序言包括 \usepackage{framed}; \usepackage{xcolor} 似乎不会影响问题。更改 knitr 背景选项并不能解决问题。

这是我在 Rnw 文件中的文档的序言(knitr 添加到此):

\documentclass{article}
\usepackage{Sweave}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[margin = 0.5in]{geometry}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{marvosym}
\usepackage{paralist}
\usepackage{framed}
\usepackage{url}
\usepackage{xcolor}
\usepackage{array}

\renewcommand\qedsymbol{\Squarepipe}

\title{title changed for question}
\author{author changed for question}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{corollary}[theorem]{Corollary}

\newenvironment{definition}[1][Definition]{\begin{trivlist}
    \item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\newenvironment{conjecture}[1][Conjecture]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\begin{document}

谢谢!

【问题讨论】:

    标签: r latex knitr


    【解决方案1】:

    kframe 环境应该在您的 Latex 序言中定义。例如在 help(knit) 中可见的示例中定义了它

     library(knitr)
     (f = system.file("examples", "knitr-minimal.Rnw", package = "knitr"))
     knit(f)  # compile to tex
    

    查看生成的文档knitr-minimal.tex可以看到kframe环境的定义:

    \usepackage{framed}
    \makeatletter
    \newenvironment{kframe}{%
     \def\at@end@of@kframe{}%
     \ifinner\ifhmode%
      \def\at@end@of@kframe{\end{minipage}}%
      \begin{minipage}{\columnwidth}%
     \fi\fi%
     \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
     \colorbox{shadecolor}{##1}\hskip-\fboxsep
         % There is no \\@totalrightmargin, so:
         \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
     \MakeFramed {\advance\hsize-\width
       \@totalleftmargin\z@ \linewidth\hsize
       \@setminipage}}%
     {\par\unskip\endMakeFramed%
     \at@end@of@kframe}
    \makeatother
    

    将此添加到您的乳胶序言中可能会解决问题。当您从 knitr 生成完整的 pdf 文档时,这当然会得到照顾。只有当您使用 knitr 生成 Latex 片段时才会出现问题,然后在更大的 Latex 文档中重用。

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 2014-10-28
      • 1970-01-01
      • 2017-07-07
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2014-01-27
      相关资源
      最近更新 更多