utils::citation() offers the option auto=(NULL|TRUE) to obtain the 
citations for a package from the package
DESCRIPTION file or a CITATION file, as described below:

|auto|

a logical indicating whether the default citation auto-generated from 
the package 'DESCRIPTION' metadata should be used or not, or |NULL| 
(default), indicating that a 'CITATION' file is used if it exists, or an 
object of class |"packageDescription 
<http://127.0.0.1:11936/library/utils/help/packageDescription>"| with 
package metadata (see below).

This presents a problem when citation() is used in functions such as 
bibtex::write.bib() and
knitr::write_bib(), because the "base" package is treated specially in 
citation() and does not
allow auto=TRUE

 > citation("base",auto=TRUE)
Error in citation("base", auto = TRUE) :
   broken installation, no CITATION file in the base package.
 >

This is a strange and misleading message, since the base package, 
presumably by design
has no CITATION file.  It requires a workaround in functions like 
knitr::write_bib when given
a list of packages,

     bib = sapply(x, function(pkg) {
         cite = citation(pkg, auto = if (pkg == "base")
             NULL
         else TRUE)
         entry = toBibtex(cite)
         entry[1] = sub("\\{,$", sprintf("{R-%s,", pkg), entry[1])
         gsub("", "", entry)
     }, simplify = FALSE)


Is there some reason why citation() can't simply ignore auto=TRUE 
(perhaps with a message)
for the base package?


-- 
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept. & Chair, Quantitative Methods
York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA


        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to