使编织可选

时间:2014-01-13 15:20:26

标签: r latex knitr

在撰写论文时,我通常使用knitr来嵌入我在R中生成的表格和图表。所有这些对我来说都非常好用。然而,我的一些共同作者并不热衷于这个工作流程,而是更愿意将knitrknitr的交互留给我,并专注于编写他们的部分,而不必费心去做R代码。他们也更不用安装R,RStudio和各种软件包。

那么,有没有办法用嵌入式{{1}}块排版LaTeX文档而不必先通过R运行它们?换句话说,是否有一种方法可以在排版过程中简单地忽略块(或者用虚拟表/图来替换它们)?

1 个答案:

答案 0 :(得分:2)

更新:修订说明here

这不能回答确切的问题,但可能是用例。我最近遇到了类似的挑战:我想在一个.rnw文件中结合写作和分析,但我的合作者不想使用R / RStudio / GitHub / LaTeX。

所以我决定通过Dropbox与他们分享我的git repo的子文件夹。此文件夹包含三个.docx文件:introduction.docxmethods.docxdiscussion.docx(我在.rnw文件中编写结果部分)。唯一的问题是他们在写作时必须使用一些非常基本的LaTeX,例如\subsection{heading}用于标题,\cite{key}用于引用,``quotes'',转义\%,\ $和\& ;

返回.rnw文件,我将.docx个文件转换为.txt

system("textutil -convert txt introduction.docx")

然后将文件扩展名从.txt重命名为.tex

file.rename("introduction.txt", "introduction.tex")

然后在R代码块之外,我用.tex文件调用:

\input{introduction}

我向GitHub发布了small example

\documentclass{article}
\makeatletter
\renewcommand{\@biblabel}[1]{\quad#1.}
\makeatother
\date{}
\bibliographystyle{plain}

\begin{document}

\begin{flushleft}
{\Large
\textbf{My Title}
}
\end{flushleft}

\section{Introduction}
% do not write in this section...let collaborators write in introduction.docx

<<intro, include=FALSE>>=
# assumes wd set to root folder collaborate
# convert docx to txt
  system("textutil -convert txt introduction.docx")
# rename txt to tex
  file.rename("introduction.txt", "introduction.tex")
@

% pull in introduction.tex
\input{introduction}

\section{Methods}
<<methods, include=FALSE>>=
  system("textutil -convert txt methods.docx")
  file.rename("methods.txt", "methods.tex")
@

\input{methods}

\section{Results}

<<results>>=
  dat <- data.frame(x=runif(30, 0, 30))
  mean <- mean(dat$x, na.rm=TRUE)
@

The mean is \Sexpr{round(mean, 1)}.

\section{Discussion}
<<discussion, include=FALSE>>=
  system("textutil -convert txt discussion.docx")
  file.rename("discussion.txt", "discussion.tex")
@

\input{discussion}

\bibliography{example.bib}
\end{document}