我正在使用R的knitr和LaTeX创建一个pdf。技术中心为构建输出错误提供“!未定义的控制序列”。技术中心表示带有\ begin {kframe}和\ end {kframe}的行是有问题的行。
删除kframe环境可解决Build Output中的错误,但即使删除kframe环境,文档也不会为代码块显示shadecolor。
我更新了我的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}
谢谢!
答案 0 :(得分:0)
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 文档中重复使用。