blob: 71f4c0ce24c4c18ccfb5ce46a15bd15cb4dcb00d [file] [log] [blame]
% File src/library/tools/man/bibstyle.Rd
% Part of the R package, https://www.R-project.org
% Copyright 2010-2013 R Core Team
% Distributed under GPL 2 or later
\name{bibstyle}
\alias{bibstyle}
\alias{getBibstyle}
\title{Select or Define a Bibliography Style}
\description{
This function defines and registers styles for rendering
\code{\link{bibentry}} objects into \file{Rd} format, for later
conversion to text, HTML, etc.
}
\usage{
bibstyle(style, envir, ..., .init = FALSE, .default = TRUE)
getBibstyle(all = FALSE)
}
\arguments{
\item{style}{
A character string naming the style.
}
\item{envir}{
(optional) An environment holding the functions to implement the style.
}
\item{\dots}{
Named arguments to add to the environment.
}
\item{.init}{
Whether to initialize the environment from the default style \code{"JSS"}.
}
\item{.default}{
Whether to set the specified style as the default style.
}
\item{all}{
Whether to return the names of all registered styles.
}
}
\details{
Rendering of \code{\link{bibentry}} objects may be done using routines
modelled after those used by BibTeX. This function allows environments
to be created and manipulated to contain those routines.
There are two ways to create a new style environment. The easiest
is to set \code{.init = TRUE}, in which case the environment will be
initialized with a copy of the default \code{"JSS"} environment. (This style
is modelled after the \file{jss.bst} style used by the \emph{Journal
of Statistical Software}.) Alternatively, the \code{envir} argument
can be used to specify a completely new style environment.
To find the name of the default style, use \code{getBibstyle()}. To
retrieve an existing style without setting it as the default, use
\code{bibstyle(style, .default = FALSE)}. To modify an existing style,
specify \code{style} and some named entries via \code{...}.
(Modifying the default \code{"JSS"} style is discouraged.) Setting
\code{style} to \code{NULL} or leaving it missing will retrieve the
default style, but modifications will not be allowed.
At a minimum, the environment should contain routines to render each
of the 12 types of bibliographic entry supported by
\code{\link{bibentry}} as well as several other routines
described below.
The former must be named \code{formatArticle},
\code{formatBook}, \code{formatInbook}, \code{formatIncollection},
\code{formatInProceedings}, \code{formatManual},
\code{formatMastersthesis}, \code{formatMisc}, \code{formatPhdthesis},
\code{formatProceedings}, \code{formatTechreport} and
\code{formatUnpublished}. Each of these takes one argument, a single
\code{\link{unclass}}'ed entry from the \code{\link{bibentry}} vector
passed to the renderer, and should produce a single element character
vector (possibly containing newlines).
The other routines are as follows. \code{sortKeys}, a function to
produce a sort key to sort the entries, is passed the original
\code{\link{bibentry}} vector and should produce a sortable vector of
the same length to define the sort order. Finally,
the optional function \code{cite} should have the same argument list
as \code{utils::\link{cite}}, and should produce a citation to be used
in text.
The \code{\link{format}} method for \code{"bibentry"} objects adds a
field named \code{".index"} to each entry after sorting and before
formatting. This is a 1-based index within the complete object that
can be used in styles that require numbering. Although the
\code{"JSS"} style doesn't use numbers, it includes a
\code{fmtPrefix()} stub function that may be used to display them.
See the example below.
}
\value{
\code{bibstyle} returns the environment which has been selected or created.
\code{getBibstyle} returns the name of the default style, or all
style names.
}
\author{
Duncan Murdoch
}
\seealso{
\code{\link{bibentry}}
}
\examples{
\dontshow{options(useFancyQuotes = FALSE)}
refs <-
c(bibentry(bibtype = "manual",
title = "R: A Language and Environment for Statistical Computing",
author = person("R Core Team"),
organization = "R Foundation for Statistical Computing",
address = "Vienna, Austria",
year = 2013,
url = "https://www.R-project.org"),
bibentry(bibtype = "article",
author = c(person(c("George", "E.", "P."), "Box"),
person(c("David", "R."), "Cox")),
year = 1964,
title = "An Analysis of Transformations",
journal = "Journal of the Royal Statistical Society, Series B",
volume = 26,
pages = "211-252"))
bibstyle("unsorted", sortKeys = function(refs) seq_along(refs),
fmtPrefix = function(paper) paste0("[", paper$.index, "]"),
.init = TRUE)
print(refs, .bibstyle = "unsorted")
}
\keyword{ utilties }
\keyword{ documentation }