+
+mixedFontLabel <-
+ function(..., sep = " ", italic = NULL, bold = NULL, parenthesis = NULL,
+ always.upright = c("sp.", "spp.", "ssp."))
+{
+ x <- list(...)
+ n <- length(x)
+ sep <- rep(sep, length.out = n - 1L)
+
+ if (!is.null(italic)) {
+ for (i in italic) {
+ y <- x[[i]]
+ s <- ! y %in% always.upright
+ y[s] <- paste("italic('", y[s], "')", sep = "")
+ x[[i]] <- y
+ }
+ }
+
+ if (!is.null(bold)) {
+ for (i in bold) {
+ y <- x[[i]]
+ s <- logical(length(y))
+ s[grep("^italic", y)] <- TRUE
+ y[s] <- sub("^italic", "bolditalic", y[s])
+ y[!s] <- paste("bold('", y[!s], "')", sep = "")
+ x[[i]] <- y
+ }
+ }
+
+ if (!is.null(parenthesis))
+ for (i in parenthesis)
+ x[[i]] <- paste("(", x[[i]], ")", sep = "")
+
+ res <- x[[1L]]
+ for (i in 2:n)
+ res <- paste(res, "*'", sep[i - 1L], "'*", x[[i]], sep = "")
+ parse(text = res)
+}