2016-02-03 4 views
2

Я работаю над шаблоном отчета LaTeX, который автоматически генерирует документ-диаграмму, рисуя фигуры из указанных каталогов и помещая их по одному на слайд.Автоматически сгенерированные слайдеры LaTeX с R/knitr

Вот пример кода, который я использую для этого, как кода фрагмент в моем .Rnw документе:

<<results='asis',echo=FALSE>>= 
suppressPackageStartupMessages(library("Hmisc")) 

# get the plots from the common directory 
Barplots_dir<-"/home/figure/barplots" 
Barplots_files<-dir(Barplots_dir) 

# create a beamer slide for each plot 
# use R to output LaTeX markup into the document 
for(i in 1:length(Barplots_files)){ 
    GroupingName<-gsub("_alignment_barplot.pdf", "", Barplots_files[i]) # strip this from the filename 
    file <- paste0(Barplots_dir,"/",Barplots_files[i]) # path to the figure 
    cat("\\subsubsection{", latexTranslate(GroupingName), "}\n", sep="") # don't forget you need double '\\' because one gets eaten by R !! 
    cat("\\begin{frame}{", latexTranslate(GroupingName), " Alignment Stats}\n", sep="") 
    cat("\\includegraphics[width=0.9\\linewidth,height=0.9\\textheight,keepaspectratio]{", file, "}\n", sep="") 
    cat("\\end{frame}\n\n") 
} 
@ 

Однако недавно я наткнулся на this статьи по Yihui Xie которая включает в себя замечание о cat("\\includegraphics{}") это плохая идея. Есть ли причина для этого, и есть ли лучший вариант?

Чтобы быть ясным, эти цифры генерируются другими программами как часть более крупного трубопровода; генерировать их в документе не вариант, но мне нужен документ, чтобы он мог динамически находить и вставлять их в отчет. Я знаю, что есть некоторые возможности, чтобы сделать это непосредственно из самого LaTeX, но cat «Использование разметки LaTeX, которая мне нужна, была легкой и более гибкой задачей.

ответ

2

cat("\\includegraphics{}") является вероятно быть плохой идеей, если вы из старого Sweave мира (где, возможно, потребуется открыть графическое устройство, нарисовать график, закрыть устройство и cat("\\includegraphics{}")). No kittens will be killed, пока вы понимаете, что делаете. Ваш случай использования кажется мне очень разумным, и у меня нет лучшего подхода.

Смежные вопросы