#r #latex #knitr
#r #Латекс #knitr
Вопрос:
Я использую 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}
renewcommandqedsymbol{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}
Спасибо!
Ответ №1:
Среда kframe должна быть определена в вашей преамбуле latex. Это определено, например, в примере, видимом в справке (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}{%
defat@end@of@kframe{}%
ifinnerifhmode%
defat@end@of@kframe{end{minipage}}%
begin{minipage}{columnwidth}%
fifi%
defFrameCommand##1{hskip@totalleftmargin hskip-fboxsep
colorbox{shadecolor}{##1}hskip-fboxsep
% There is no \@totalrightmargin, so:
hskip-linewidth hskip-@totalleftmargin hskipcolumnwidth}%
MakeFramed {advancehsize-width
@totalleftmarginz@ linewidthhsize
@setminipage}}%
{parunskipendMakeFramed%
at@end@of@kframe}
makeatother
Добавление этого в вашу преамбулу latex может решить проблему. Об этом, конечно, позаботятся, когда вы создаете полные PDF-документы из knitr. Это проблема только при использовании knitr для генерации фрагментов Latex, которые позже повторно используются в больших документах Latex.