Function: org-cite-basic-export-citation
org-cite-basic-export-citation is a byte-compiled function defined in
oc-basic.el.gz.
Signature
(org-cite-basic-export-citation CITATION STYLE _ INFO)
Documentation
Export CITATION object.
STYLE is the expected citation style, as a pair of strings or nil. INFO is the export communication channel, as a property list.
Source Code
;; Defined in /usr/src/emacs/lisp/org/oc-basic.el.gz
(defun org-cite-basic-export-citation (citation style _ info)
"Export CITATION object.
STYLE is the expected citation style, as a pair of strings or nil. INFO is the
export communication channel, as a property list."
(let ((has-variant-p
(lambda (variant type)
;; Non-nil when style VARIANT has TYPE. TYPE is either
;; `bare' or `caps'.
(member variant
(pcase type
('bare '("bare" "bare-caps" "b" "bc"))
('caps '("caps" "bare-caps" "c" "bc"))
(_ (error "Invalid variant type: %S" type)))))))
(pcase style
;; "author" style.
(`(,(or "author" "a") . ,variant)
(let ((caps (member variant '("caps" "c"))))
(org-cite-basic--format-author-year
citation
(lambda (p c s) (org-cite-concat p c s))
(lambda (prefix author _ suffix)
(org-cite-concat
prefix
(if caps (org-cite-capitalize author) author)
suffix))
info)))
;; "noauthor" style.
(`(,(or "noauthor" "na") . ,variant)
(let ((bare? (funcall has-variant-p variant 'bare)))
(org-cite-basic--format-author-year
citation
(lambda (prefix contents suffix)
(org-cite-concat
(unless bare? "(")
prefix
contents
suffix
(unless bare? ")")))
(lambda (prefix _ year suffix)
(org-cite-concat prefix year suffix))
info)))
;; "nocite" style.
(`(,(or "nocite" "n") . ,_) nil)
;; "text" and "note" styles.
(`(,(and (or "text" "note" "t" "ft") style) . ,variant)
(when (and (member style '("note" "ft"))
(not (org-cite-inside-footnote-p citation)))
(org-cite-adjust-note citation info)
(org-cite-wrap-citation citation info))
(let ((bare (funcall has-variant-p variant 'bare))
(caps (funcall has-variant-p variant 'caps)))
(org-cite-basic--format-author-year
citation
(lambda (p c s) (org-cite-concat p c s))
(lambda (p a y s)
(org-cite-concat p
(if caps (org-cite-capitalize a) a)
(if bare " " " (")
y
(and (not bare) ")")
s))
info)))
;; "numeric" style.
;;
;; When using this style on citations with multiple references,
;; use global affixes and ignore local ones.
(`(,(or "numeric" "nb") . ,_)
(pcase-let ((`(,prefix . ,suffix) (org-cite-main-affixes citation)))
(org-export-data
(org-cite-concat
"(" prefix (org-cite-basic--citation-numbers citation info) suffix ")")
info)))
;; Default ("nil") style.
(`(,_ . ,variant)
(let ((bare (funcall has-variant-p variant 'bare))
(caps (funcall has-variant-p variant 'caps)))
(org-cite-basic--format-author-year
citation
(lambda (p c s)
(org-cite-concat (and (not bare) "(") p c s (and (not bare) ")")))
(lambda (p a y s)
(org-cite-concat p (if caps (org-cite-capitalize a) a) ", " y s))
info)))
;; This should not happen.
(_ (error "Invalid style: %S" style)))))