Dear all, Is there an elegant way to add citations of packages when using Sweave? Ideally I'd like a function which creates a Bibtex-file with the packagenames as keys. The idea is to use \cite{packagename} or \cite{R} in LaTeX. I know you can get the Bibtex entry with toBibtex(citation("packagename")). But after updating R or a package one needs to update the bib-file too. When trying to automate this I came up with the code below. It generates a Bibtex-file, but without keys for each item. So I have to add those manually. Another problem is that I get multiple entrys for R it self. Suggestions are welcome. Thierry sink("Rpackages.bib") tmp <- sapply(.packages(), function(x){ entry <- toBibtex(citation(x)) if(class(entry) == "Bibtex"){ print(entry) } else { tmp <- sapply(entry, print) } }) sink() ------------------------------------------------------------------------ ---- ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance Gaverstraat 4 9500 Geraardsbergen Belgium tel. + 32 54/436 185 Thierry.Onkelinx op inbo.be www.inbo.be To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is door een geldig ondertekend document. The views expressed in this message and any annex are purely those of the writer and may not be regarded as stating an official position of INBO, as long as the message is not confirmed by a duly signed document.
On Thu, 23 Oct 2008, ONKELINX, Thierry wrote:> Dear all, > > Is there an elegant way to add citations of packages when using Sweave? > Ideally I'd like a function which creates a Bibtex-file with the > packagenames as keys. The idea is to use \cite{packagename} or \cite{R} > in LaTeX. > > I know you can get the Bibtex entry with > toBibtex(citation("packagename")). But after updating R or a package one > needs to update the bib-file too. When trying to automate this I came up > with the code below. It generates a Bibtex-file, but without keys for > each item. So I have to add those manually. Another problem is that I > get multiple entrys for R it self. > > Suggestions are welcome. >Thierry, How 'bout: cite.by.name <- function(x){ res <- toBibtex(citation(x)) if (is.list(res)) res <- res[[1]] res[1] <- sub("{",paste("{",x,sep=''),res[1],fixed=TRUE) res }> cite.by.name("MASS")@Book{MASS, title = {Modern Applied Statistics with S}, author = {W. N. Venables and B. D. Ripley}, publisher = {Springer}, edition = {Fourth}, address = {New York}, year = {2002}, note = {ISBN 0-387-95457-0}, url = {http://www.stats.ox.ac.uk/pub/MASS4}, }>Then sapply( .packages(TRUE), function(x) try( cite.by.name(x) ) ) should be close to what you want. HTH, Chuck> Thierry > > sink("Rpackages.bib") > tmp <- sapply(.packages(), function(x){ > entry <- toBibtex(citation(x)) > if(class(entry) == "Bibtex"){ > print(entry) > } else { > tmp <- sapply(entry, print) > } > }) > sink() >[snip] Charles C. Berry (858) 534-2098 Dept of Family/Preventive Medicine E mailto:cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901