Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use a knitr inline expression in the title of a latex document?

Tags:

r

latex

knitr

I'd like to use a Knitr/Sweave in-line call (\Sexpr{}) in the title of a LaTeX document, after the \begin{document} command but before the \maketitle command. The in-line R code would extract one or two pieces of information from an R data-frame created early in the R script I'm embedding in LaTeX.

I have a couple of Knitr chunks that create a data.frame from which I derive the information I want to put in the Title. I've tried placing these chunks between LaTeX's \begin{document} call and the \title code, like this:

\documentclass
[LaTex Preamble]
\begin{document}
[%% Knitr chunks that initialize an R data-frame]
\title \Sexpr{--a snippet of R code that extracts an element from the data-frame --}
\maketitle
... (rest of the LaTeX document)

and I've also tried putting the Knitr chunks in the preamble to the LaTeX code before \begin{document} statement.

But in Knitr seems to ignore code (other than initialization) that is placed ahead of the \maketitle call in LaTeX, so the in-line snippets included the title look like errors to Latex and it halts output.

I can't find any information in the Knitr documentation on including in-line code in the Title of a LaTeX document.

Any ideas?


OK: Found the solution thanks to the hint from @ben-bolker below. Ben uses the formatting of R chunks before output to an RNW file (in a 2-step Knitr process: latex -> rnw -> pdf) . But I'm compiling the LaTeX file to PDF in one-step without going to an RNW file from inside TeXShop (on Mac OSX). I found that I could get Ben's example to work using the RNW delimiters (<<>>=) and one-step compiling. But I couldn't mix the usual LaTeX chunk-delimiters (%%begin.rcode and %% end.rcode) and the RNW in-line statement hook (\Sexpr{}). The latter didn't work no matter how I fiddled with it. Eventually I found that the correct in-line hook for LaTeX is \\rinline{}.

It's not very clear in the Knitr documentation that this is the required format for LaTeX and I found it eventually mainly thanks to Ben's example. Best, Peter


Update 2 ... and then there's RTFM (or the 'cheat sheet' in this case): http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf

like image 836
Peter W Gallagher Avatar asked Oct 05 '12 12:10

Peter W Gallagher


People also ask

How do you define a title in latex?

You can define a title for your document using \title{} and then create the title itself using \maketitle . You can also add other information such as the author(s) and the date, e.g. Note the use of \today to automatically insert the date you created the document.

Which latex command will you use to give a suitable title to your article?

The \maketitle command generates a title on a separate title page - except in the article style, where the title normally goes at the top of the first page. Information used to produce the title is obtained from the following declarations, which should precede the \maketitle command.


1 Answers

Hmm. The following file works for me:

\documentclass{article}
<<echo=FALSE>>=
x <- 5
@ 
\title{The number is \Sexpr{x^2}}
\begin{document}
\maketitle

Some stuff
\end{document}

with knitr version 0.8 on Ubuntu 10.04, via knit2pdf("knitr_title.Rnw") ... enter image description here

like image 154
Ben Bolker Avatar answered Oct 21 '22 17:10

Ben Bolker