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:[EMAIL PROTECTED]                  UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to