645 lines
16 KiB
EmacsLisp
645 lines
16 KiB
EmacsLisp
;;; jurabib.el --- AUCTeX style for the `jurabib' package -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2004-2021 Free Software Foundation, Inc.
|
|
|
|
;; Author: Ralf Angeli <angeli@iwi.uni-sb.de>
|
|
;; Maintainer: auctex-devel@gnu.org
|
|
;; Created: 2004-10-05
|
|
;; Keywords: tex
|
|
|
|
;; This file is part of AUCTeX.
|
|
|
|
;; AUCTeX is free software; you can redistribute it and/or modify it
|
|
;; under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation; either version 3, or (at your option)
|
|
;; any later version.
|
|
|
|
;; AUCTeX is distributed in the hope that it will be useful, but
|
|
;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
;; General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with AUCTeX; see the file COPYING. If not, write to the Free
|
|
;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
;; 02110-1301, USA.
|
|
|
|
;;; Commentary:
|
|
|
|
;; This file adds support for the `jurabib' package.
|
|
|
|
;; Currently only the citation-related commands are supported. Feel
|
|
;; free to complete the support and send the result to the AUCTeX
|
|
;; mailing list. But be aware that the code can only be included if
|
|
;; you assign the copyright to the FSF.
|
|
|
|
;;; Code:
|
|
|
|
(require 'tex)
|
|
(require 'tex-style)
|
|
|
|
;; Silence the compiler:
|
|
(declare-function font-latex-add-keywords
|
|
"font-latex"
|
|
(keywords class))
|
|
|
|
(defvar reftex-cite-format-builtin)
|
|
|
|
(TeX-add-style-hook
|
|
"jurabib"
|
|
(lambda ()
|
|
;; Taken from natbib.el and adapted.
|
|
(let ((citecmds
|
|
'(("cite" . 2) ("cite*" . 2)
|
|
("citetitle" . 2) ("fullcite" . 2)
|
|
("citet" . 1) ("citealt" . 1)
|
|
("citep" . 2) ("citealp" . 2)
|
|
("citeauthor" . 2) ("citeyear" . 2)
|
|
("footcite" . 2) ("footcite*" . 2)
|
|
("footcitetitle" . 2) ("footfullcite" . 2)
|
|
("footcitet" . 1) ("footcitealt" . 1)
|
|
("footcitep" . 2) ("footcitealp" . 2)
|
|
("footciteauthor" . 2) ("footciteyear" . 2))))
|
|
;; Add these symbols
|
|
(apply
|
|
#'TeX-add-symbols
|
|
(mapcar
|
|
(lambda (cmd)
|
|
(cond
|
|
((= (cdr cmd) 0)
|
|
;; No optional arguments
|
|
(list (car cmd) #'TeX-arg-cite))
|
|
((= (cdr cmd) 1)
|
|
;; Just one optional argument, the post note
|
|
(list
|
|
(car cmd)
|
|
'(TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil)
|
|
#'TeX-arg-cite))
|
|
((= (cdr cmd) 2)
|
|
;; Pre and post notes
|
|
(list
|
|
(car cmd)
|
|
'(TeX-arg-conditional TeX-arg-cite-note-p (natbib-note-args) nil)
|
|
#'TeX-arg-cite))))
|
|
citecmds))
|
|
;; Special cases
|
|
(TeX-add-symbols
|
|
;; FIXME: Completing read for field.
|
|
'("citefield" ; \citefield[]{}{}
|
|
(TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil)
|
|
"Field" TeX-arg-cite)
|
|
'("footcitefield" ; \footcitefield[]{}{}
|
|
(TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil)
|
|
"Field" TeX-arg-cite))
|
|
|
|
;; Make an entry in TeX-complete-list
|
|
(add-to-list
|
|
'TeX-complete-list
|
|
(list
|
|
(concat "\\\\\\("
|
|
(mapconcat (lambda (x) (regexp-quote (car x)))
|
|
(append citecmds
|
|
'(("citefield") ("footcitefield"))) "\\|")
|
|
"\\)\\(\\[[^]\n\r\\%]*\\]\\)*{\\([^{}\n\r\\%,]*,\\)*"
|
|
"\\([^{}\n\r\\%,]*\\)")
|
|
4 'LaTeX-bibitem-list "}"))
|
|
|
|
;; Add further symbols
|
|
(TeX-add-symbols
|
|
'("citefullfirstfortype" 1)
|
|
'("citenotitlefortype" 1)
|
|
'("citeswithoutentry" 1)
|
|
'("citetitlefortype" 1)
|
|
'("citeworkwithtitle" 1)
|
|
'("nextcitefull" 1)
|
|
'("nextcitenotitle" 1)
|
|
'("nextcitereset" 1)
|
|
'("nextciteshort" 1)
|
|
'("jurabibsetup" 1))
|
|
|
|
;; Fontification
|
|
(when (and (featurep 'font-latex)
|
|
(eq TeX-install-font-lock 'font-latex-setup))
|
|
(font-latex-add-keywords '(("cite" "*[[{")
|
|
("citetitle" "[[{")
|
|
("fullcite" "[[{")
|
|
("citet" "[{")
|
|
("citealt" "[{")
|
|
("citep" "[[{")
|
|
("citealp" "[[{")
|
|
("citeauthor" "[[{")
|
|
("citeyear" "[[{")
|
|
("footcite" "[[{")
|
|
("footcite*" "[[{")
|
|
("footcitetitle" "[[{")
|
|
("footfullcite" "[[{")
|
|
("footcitet" "[{")
|
|
("footcitealt" "[{")
|
|
("footcitep" "[[{")
|
|
("footcitealp" "[[{")
|
|
("footciteauthor" "[[{")
|
|
("footciteyear" "[[{")
|
|
("citefield" "[{{")
|
|
("footcitefield" "[{{"))
|
|
'reference)
|
|
(font-latex-add-keywords '(("citeswithoutentry" "{")
|
|
("nextcitefull" "{")
|
|
("nextcitenotitle" "{")
|
|
("nextcitereset" "{")
|
|
("nextciteshort" "{"))
|
|
'function)
|
|
(font-latex-add-keywords '(("citenotitlefortype" "{")
|
|
("citetitlefortype" "{")
|
|
("jurabibsetup" "{"))
|
|
'variable))
|
|
|
|
;; Tell RefTeX (Thanks, Carsten)
|
|
(when (and LaTeX-reftex-cite-format-auto-activate
|
|
(fboundp 'reftex-set-cite-format))
|
|
;; Check if RefTeX supports jurabib.
|
|
(if (assoc 'jurabib reftex-cite-format-builtin)
|
|
;; Yes, use the provided default.
|
|
(reftex-set-cite-format 'jurabib)
|
|
;; No, set it by hand.
|
|
(reftex-set-cite-format
|
|
'((?\C-m . "\\cite{%l}")
|
|
(?c . "\\cite[?][]{%l}")
|
|
(?t . "\\citet{%l}")
|
|
(?p . "\\citep{%l}")
|
|
(?e . "\\citep[e.g.][?]{%l}")
|
|
(?s . "\\citep[see][?]{%l}")
|
|
(?u . "\\fullcite{%l}")
|
|
(?i . "\\citetitle{%l}")
|
|
(?a . "\\citeauthor{%l}")
|
|
(?e . "\\citefield{?}{%l}")
|
|
(?y . "\\citeyear{%l}")
|
|
(?f . "\\footcite{%l}")
|
|
(?F . "\\footcite[?][]{%l}")
|
|
(?l . "\\footfullcite{%l}"))))))
|
|
|
|
;; FIXME: The following list is the edited output of
|
|
;; `TeX-auto-generate' which probably includes internal macros of
|
|
;; jurabib. Unfortunately the macros which should be accessible to
|
|
;; the user are not fully documented at the time of this writing.
|
|
;; But instead of including only the limited part which is
|
|
;; documented we rather give the user a bit too much. The list
|
|
;; should be reduced when there is proper documentation, though.
|
|
(TeX-add-symbols
|
|
'("Wrapquotes" 1)
|
|
'("apyformat" 1)
|
|
'("artnumberformat" 1)
|
|
'("artvolnumformat" 2)
|
|
'("artvolumeformat" 1)
|
|
'("artyearformat" 1)
|
|
'("bibAnnote" 1)
|
|
'("bibAnnoteFile" 1)
|
|
'("bibAnnotePath" 1)
|
|
'("bibEIMfont" 1)
|
|
'("bibIMfont" 1)
|
|
'("bibYear" 1)
|
|
'("bibedformat" 1)
|
|
'("bibedinformat" 1)
|
|
'("bibenf" 5)
|
|
'("biblenf" 5)
|
|
'("bibnf" 5)
|
|
'("bibnumberformat" 1)
|
|
'("bibrenf" 5)
|
|
'("bibrlenf" 5)
|
|
'("bibrnf" 5)
|
|
'("biburlfont" 1)
|
|
'("edfont" 1)
|
|
'("formatarticlepages" ["argument"] 2)
|
|
'("fsted" 1)
|
|
'("fullnameoxfordcrossref" 1)
|
|
'("incolledformat" 5)
|
|
'("jbArchPages" 1)
|
|
'("jbPages" 1)
|
|
'("jbannoteformat" 1)
|
|
'("jbapifont" 1)
|
|
'("jbarchnameformat" 1)
|
|
'("jbarchsig" 2)
|
|
'("jbartPages" 1)
|
|
'("jbartcrossrefchecked" ["argument"] 1)
|
|
'("jbauthorindexfont" 1)
|
|
'("jbbibargs" 5)
|
|
'("jbbibyearformat" 1)
|
|
'("jbcitationoyearformat" 1)
|
|
'("jbcitationyearformat" 1)
|
|
'("jbcrossrefchecked" ["argument"] 1)
|
|
'("jbedafti" 1)
|
|
'("jbedbyincollcrossreflong" 1)
|
|
'("jbedbyincollcrossrefshort" 1)
|
|
'("jbedbyincollcrossrefshortnoapy" 1)
|
|
'("jbedbyincollcrossrefshortwithapy" 1)
|
|
'("jbedition" 1)
|
|
'("jbeditorindexfont" 1)
|
|
'("jbendnote" 1)
|
|
'("jbflanguage" 1)
|
|
'("jbincollcrossref" 2)
|
|
'("jbisbn" 1)
|
|
'("jbissn" 1)
|
|
'("jbnote" 2)
|
|
'("jborganizationindexfont" 1)
|
|
'("jbpagesformat" 1)
|
|
'("jbprformat" 1)
|
|
'("jbrealcitation" 2)
|
|
'("jbshortarchformat" 1)
|
|
'("jbshortsubarchformat" 1)
|
|
'("jbsy" 1)
|
|
'("jbtiafed" 1)
|
|
'("lookatfortype" 1)
|
|
'("nobibliography" 1)
|
|
'("nocitebuthowcited" 1)
|
|
'("numberandseries" 2)
|
|
'("pageadd" 1)
|
|
'("pernumberformat" 1)
|
|
'("pervolnumformat" 2)
|
|
'("pervolumeformat" 1)
|
|
'("peryearformat" 1)
|
|
'("revnumberformat" 1)
|
|
'("revvolnumformat" 2)
|
|
'("revvolumeformat" 1)
|
|
'("revyearformat" 1)
|
|
'("snded" 1)
|
|
'("textitswitch" 1)
|
|
'("translator" 3)
|
|
'("volumeformat" 1)
|
|
"Bibbfsasep"
|
|
"Bibbfsesep"
|
|
"Bibbstasep"
|
|
"Bibbstesep"
|
|
"Bibbtasep"
|
|
"Bibbtesep"
|
|
"Bibchaptername"
|
|
"Bibetal"
|
|
"Edbyname"
|
|
"IbidemMidName"
|
|
"IbidemName"
|
|
"NAT"
|
|
"OpCit"
|
|
"Reprint"
|
|
"SSS"
|
|
"Transfrom"
|
|
"Volumename"
|
|
"addtoalllanguages"
|
|
"afterfoundersep"
|
|
"aftervolsep"
|
|
"ajtsep"
|
|
"alsothesisname"
|
|
"aprname"
|
|
"augname"
|
|
"bibBTsep"
|
|
"bibJTsep"
|
|
"bibPageName"
|
|
"bibPagesName"
|
|
"bibaesep"
|
|
"bibaldelim"
|
|
"bibaltformatalign"
|
|
"bibandname"
|
|
"bibanfont"
|
|
"bibansep"
|
|
"bibapifont"
|
|
"bibapyldelim"
|
|
"bibapyrdelim"
|
|
"bibarchpagename"
|
|
"bibarchpagesname"
|
|
"bibardelim"
|
|
"bibartperiodhowcited"
|
|
"bibatsep"
|
|
"bibauthormultiple"
|
|
"bibbdsep"
|
|
"bibbfsasep"
|
|
"bibbfsesep"
|
|
"bibbstasep"
|
|
"bibbstesep"
|
|
"bibbtasep"
|
|
"bibbtesep"
|
|
"bibbtfont"
|
|
"bibbtsep"
|
|
"bibbudcsep"
|
|
"bibces"
|
|
"bibchapterlongname"
|
|
"bibchaptername"
|
|
"bibcite"
|
|
"bibcolumnsep"
|
|
"bibcommenthowcited"
|
|
"bibcontinuedname"
|
|
"bibcrossrefcite"
|
|
"bibcrossrefciteagain"
|
|
"bibeandname"
|
|
"bibedformat"
|
|
"bibefnfont"
|
|
"bibeimfont"
|
|
"bibelnfont"
|
|
"bibenf"
|
|
"bibfnfmt"
|
|
"bibfnfont"
|
|
"bibhowcited"
|
|
"bibibidfont"
|
|
"bibidemPfname"
|
|
"bibidemPmname"
|
|
"bibidemPnname"
|
|
"bibidemSfname"
|
|
"bibidemSmname"
|
|
"bibidemSnname"
|
|
"bibidempfname"
|
|
"bibidempmname"
|
|
"bibidempnname"
|
|
"bibidemsfname"
|
|
"bibidemsmname"
|
|
"bibidemsnname"
|
|
"bibimfont"
|
|
"bibincollcrossrefcite"
|
|
"bibincollcrossrefciteagain"
|
|
"bibjtfont"
|
|
"bibjtsep"
|
|
"bibleftcolumn"
|
|
"bibleftcolumnadjust"
|
|
"bibleftcolumnstretch"
|
|
"biblenf"
|
|
"biblnfmt"
|
|
"biblnfont"
|
|
"bibnf"
|
|
"bibnotcited"
|
|
"bibpagename"
|
|
"bibpagesname"
|
|
"bibpagesnamesep"
|
|
"bibpldelim"
|
|
"bibprdelim"
|
|
"bibrevtfont"
|
|
"bibrightcolumn"
|
|
"bibrightcolumnadjust"
|
|
"bibrightcolumnstretch"
|
|
"bibsall"
|
|
"bibsdanish"
|
|
"bibsdutch"
|
|
"bibsenglish"
|
|
"bibsfinnish"
|
|
"bibsfrench"
|
|
"bibsgerman"
|
|
"bibsitalian"
|
|
"bibsnfont"
|
|
"bibsnorsk"
|
|
"bibsportuguese"
|
|
"bibsspanish"
|
|
"bibtabularitemsep"
|
|
"bibtfont"
|
|
"bibtotalpagesname"
|
|
"biburlprefix"
|
|
"biburlsuffix"
|
|
"bibvolumecomment"
|
|
"bibvtfont"
|
|
"bothaesep"
|
|
"bpubaddr"
|
|
"byname"
|
|
"citetitleonly"
|
|
"citeyearpar"
|
|
"commaename"
|
|
"commaname"
|
|
"dateldelim"
|
|
"daterdelim"
|
|
"decname"
|
|
"diffpageibidemmidname"
|
|
"diffpageibidemname"
|
|
"edbyname"
|
|
"edbysep"
|
|
"editionname"
|
|
"editorname"
|
|
"editorsname"
|
|
"enoteformat"
|
|
"etalname"
|
|
"etalnamenodot"
|
|
"febname"
|
|
"fifthedname"
|
|
"firstedname"
|
|
"footcitetitleonly"
|
|
"formatpages"
|
|
"foundername"
|
|
"fourthedname"
|
|
"fromdutch"
|
|
"fromenglish"
|
|
"fromfinnish"
|
|
"fromfrench"
|
|
"fromgerman"
|
|
"fromitalian"
|
|
"fromnorsk"
|
|
"fromportuguese"
|
|
"fromspanish"
|
|
"herename"
|
|
"howcitedprefix"
|
|
"howcitedsuffix"
|
|
"ibidem"
|
|
"ibidemmidname"
|
|
"ibidemname"
|
|
"idemPfedbyname"
|
|
"idemPfname"
|
|
"idemPmedbyname"
|
|
"idemPmname"
|
|
"idemPnedbyname"
|
|
"idemPnname"
|
|
"idemSfedbyname"
|
|
"idemSfname"
|
|
"idemSmedbyname"
|
|
"idemSmname"
|
|
"idemSnedbyname"
|
|
"idemSnname"
|
|
"idemmidname"
|
|
"idemname"
|
|
"idempfedbyname"
|
|
"idempfname"
|
|
"idempmedbyname"
|
|
"idempmname"
|
|
"idempnedbyname"
|
|
"idempnname"
|
|
"idemsfedbyname"
|
|
"idemsfname"
|
|
"idemsmedbyname"
|
|
"idemsmname"
|
|
"idemsnedbyname"
|
|
"idemsnname"
|
|
"incollinname"
|
|
"inname"
|
|
"inseriesname"
|
|
"janname"
|
|
"jbCheckedFirst"
|
|
"jbFirst"
|
|
"jbFirstAbbrv"
|
|
"jbJunior"
|
|
"jbLast"
|
|
"jbNotRevedNoVonJr"
|
|
"jbNotRevedNoVonNoJr"
|
|
"jbNotRevedOnlyLast"
|
|
"jbNotRevedVonJr"
|
|
"jbNotRevedVonNoJr"
|
|
"jbPAGES"
|
|
"jbPageName"
|
|
"jbPages"
|
|
"jbPagesName"
|
|
"jbRevedFirstNoVonJr"
|
|
"jbRevedFirstNoVonNoJr"
|
|
"jbRevedFirstOnlyLast"
|
|
"jbRevedFirstVonJr"
|
|
"jbRevedFirstVonNoJr"
|
|
"jbRevedNotFirstNoVonJr"
|
|
"jbRevedNotFirstNoVonNoJr"
|
|
"jbRevedNotFirstOnlyLast"
|
|
"jbRevedNotFirstVonJr"
|
|
"jbRevedNotFirstVonNoJr"
|
|
"jbVon"
|
|
"jbactualauthorfnfont"
|
|
"jbactualauthorfont"
|
|
"jbaddtomakehowcited"
|
|
"jbaensep"
|
|
"jbafterstartpagesep"
|
|
"jbannotatorfont"
|
|
"jbapifont"
|
|
"jbarchnamesep"
|
|
"jbarchpagename"
|
|
"jbarchpagesname"
|
|
"jbartPages"
|
|
"jbatsep"
|
|
"jbauthorfnfont"
|
|
"jbauthorfont"
|
|
"jbauthorfontifannotator"
|
|
"jbauthorinfo"
|
|
"jbbeforestartpagesep"
|
|
"jbbfsasep"
|
|
"jbbfsesep"
|
|
"jbbookedaftertitle"
|
|
"jbbstasep"
|
|
"jbbstesep"
|
|
"jbbtasep"
|
|
"jbbtesep"
|
|
"jbbtfont"
|
|
"jbbtitlefont"
|
|
"jbcitationyearformat"
|
|
"jbcrossrefchecked"
|
|
"jbdisablecitationcrossref"
|
|
"jbdoitem"
|
|
"jbdonotindexauthors"
|
|
"jbdonotindexeditors"
|
|
"jbdonotindexorganizations"
|
|
"jbdotafterbibentry"
|
|
"jbdotafterendnote"
|
|
"jbdy"
|
|
"jbedbyincollcrossrefcite"
|
|
"jbedbyincollcrossrefciteagain"
|
|
"jbedition"
|
|
"jbedseplikecite"
|
|
"jbeimfont"
|
|
"jbfirstcitepageranges"
|
|
"jbfootnoteformat"
|
|
"jbfootnotenumalign"
|
|
"jbfulltitlefont"
|
|
"jbhowcitedcomparepart"
|
|
"jbhowcitednormalpart"
|
|
"jbhowsepannotatorfirst"
|
|
"jbhowsepannotatorlast"
|
|
"jbhowsepbeforetitle"
|
|
"jbhowsepbeforetitleae"
|
|
"jbhowsepbeforetitleibidemname"
|
|
"jbignorevarioref"
|
|
"jbimfont"
|
|
"jbindexbib"
|
|
"jbindexonlyfirstauthors"
|
|
"jbindexonlyfirsteditors"
|
|
"jbindexonlyfirstorganizations"
|
|
"jbindextype"
|
|
"jblookforgender"
|
|
"jbmakeinbib"
|
|
"jbmakeinbiblist"
|
|
"jbmakeindexactual"
|
|
"jbnotsamearch"
|
|
"jbonlyforbib"
|
|
"jbonlyforcitations"
|
|
"jbonlyforfirstcitefullbegin"
|
|
"jbonlyforfirstcitefullend"
|
|
"jborgauthorfont"
|
|
"jboyearincitation"
|
|
"jbpagename"
|
|
"jbpagenamenodot"
|
|
"jbpages"
|
|
"jbpagesep"
|
|
"jbpagesname"
|
|
"jbpagesnamesep"
|
|
"jbsamearch"
|
|
"jbsamesubarch"
|
|
"jbsamesubarchindent"
|
|
"jbshorttitlefont"
|
|
"jbshowbibextralabel"
|
|
"jbssedbd"
|
|
"jbsubarchsep"
|
|
"jbsuperscripteditionafterauthor"
|
|
"jbtitlefont"
|
|
"jbts"
|
|
"jburldef"
|
|
"jbuseidemhrule"
|
|
"jbyear"
|
|
"jbyearaftertitle"
|
|
"julname"
|
|
"junname"
|
|
"jurthesisname"
|
|
"marname"
|
|
"mastersthesisname"
|
|
"mayname"
|
|
"nofirstnameforcitation"
|
|
"noibidem"
|
|
"noidem"
|
|
"nopage"
|
|
"novname"
|
|
"numbername"
|
|
"octname"
|
|
"ofseriesname"
|
|
"opcit"
|
|
"organizationname"
|
|
"origPAGES"
|
|
"origartPages"
|
|
"origbibces"
|
|
"origcrossref"
|
|
"origpages"
|
|
"osep"
|
|
"phdthesisname"
|
|
"reprint"
|
|
"reprintname"
|
|
"reviewbyname"
|
|
"reviewname"
|
|
"reviewofname"
|
|
"samepageibidemmidname"
|
|
"samepageibidemname"
|
|
"secondedname"
|
|
"sepname"
|
|
"sndecmd"
|
|
"snded"
|
|
"sndeditorname"
|
|
"sndeditorsname"
|
|
"technicalreportname"
|
|
"testnosig"
|
|
"textandname"
|
|
"texteandname"
|
|
"theHlvla"
|
|
"theHlvlb"
|
|
"theHlvlc"
|
|
"theHlvld"
|
|
"theHlvle"
|
|
"theHlvlf"
|
|
"theHlvlg"
|
|
"theHlvlh"
|
|
"theHlvli"
|
|
"theHlvlj"
|
|
"theHlvlk"
|
|
"theHlvll"
|
|
"thedname"
|
|
"thirdedname"
|
|
"trans"
|
|
"transby"
|
|
"transfrom"
|
|
"updatename"
|
|
"updatesep"
|
|
"urldatecomment"
|
|
"volname"
|
|
"volumename"
|
|
"volumeofname"))
|
|
TeX-dialect)
|
|
|
|
;;; jurabib.el ends here
|