How to write an if-then statement in LaTeX using the value of an R variable in knitr/Sweave

夙愿已清 提交于 2019-12-21 02:44:56

问题


I am currently using knitr along with R 3.0.2 and RStudio in order to produce a LaTeX report. My report is typed up as a .Rnw file, and compiled using the knit2pdf function.

I would like to use an if-then formulation in LaTeX in order to create a separate section, but have the if-then condition use the value of a variable from R (let's call it CreateOptionalSection).

Is this possible? If so, how can I refer to the R variable in the .tex document?


回答1:


Add \usepackage{comment} to the preamble of your latex file.

At the line before the optional section starts, do

<<startcomment, results='asis', echo=FALSE>>=
if(!CreateOptionalSection){
  cat("\\begin{comment}")
}
@

At the line after the optional section ends, do

<<endcomment, results='asis', echo=FALSE>>=
if(!CreateOptionalSection){
  cat("\\end{comment}")
}
@



回答2:


You can do it directly in R code in your .Rnw file, using cat to paste the section. Here is an example, when x > 0 it creates section 1, when x < 0 it creates section 2:

\documentclass{article}

\begin{document}
<<condition, include=FALSE, echo=FALSE>>=
x<- rnorm(1)
if(x>0){
  text <- "\\section{Section 1}
  This is new section 1"
  }else{
  text <- "\\section{Section 2}
  This is new section 2"
  }
@
Testing the code: the result of x (which here was \Sexpr{x}) will determine the section.
<<print, results='asis', echo=FALSE>>=
cat(text)
@

\end{document}

This will give you:



来源:https://stackoverflow.com/questions/22305444/how-to-write-an-if-then-statement-in-latex-using-the-value-of-an-r-variable-in-k

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!