summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/harvard.el
blob: 6373af36f5adcdc9a10c9b7c6f11d48fc517689b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
;;; harvard.el --- Support for Harvard Citation style package for AUCTeX.  -*- lexical-binding: t; -*-

;; Copyright (C) 1994, 1997, 2005, 2012, 2014, 2020 Free Software Foundation, Inc.

;; Author: Berwin Turlach <statba@nus.edu.sg>
;; Maintainer: auctex-devel@gnu.org
;; 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.

;;; Code:

(require 'tex)
(require 'latex)

(TeX-add-style-hook
 "harvard"
 (lambda ()

   (LaTeX-add-environments
    '("thebibliography" LaTeX-env-harvardbib ignore))

   (TeX-add-symbols
    "harvardand"
    '("citeasnoun"
      (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
      TeX-arg-cite)
    '("possessivecite"
      (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
      TeX-arg-cite)
    '("citeaffixed"
      (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
      TeX-arg-cite "Affix")
    '("citeyear"
      (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
      TeX-arg-cite)
    '("citename"
      (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
      TeX-arg-cite)
    '("citationstyle"
      (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu"))))
    '("citationmode"
      (TeX-arg-eval completing-read "Citation mode: "
                    '(("full") ("abbr") ("default"))))
    '("harvardparenthesis"
      (TeX-arg-eval completing-read "Harvardparenthesis: "
                    '(("round") ("curly") ("angle") ("square"))))
    '("bibliographystyle"
      (TeX-arg-eval
       completing-read "Bibliography style: "
       '(("agsm") ("apsr") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands") ("econometrica")))
      ignore)
    '("harvarditem" [ "Short citation" ]
      "Complete citation" "Year" TeX-arg-define-cite))

   (setq TeX-complete-list
         (append '(("\\\\citeasnoun\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
                    1 LaTeX-bibitem-list "}")
                   ("\\\\citeasnoun{\\([^{}\n\r\\%,]*\\)" 1
                    LaTeX-bibitem-list "}")
                   ("\\\\possessivecite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
                    1 LaTeX-bibitem-list "}")
                   ("\\\\possessivecite{\\([^{}\n\r\\%,]*\\)" 1
                    LaTeX-bibitem-list "}")
                   ("\\\\citename\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
                    1 LaTeX-bibitem-list "}")
                   ("\\\\citename{\\([^{}\n\r\\%,]*\\)" 1
                    LaTeX-bibitem-list "}")
                   ("\\\\citeaffixed\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
                    1 LaTeX-bibitem-list "}")
                   ("\\\\citeaffixed{\\([^{}\n\r\\%,]*\\)" 1
                    LaTeX-bibitem-list "}")
                   ("\\\\citeaffixed{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
                    2 LaTeX-bibitem-list)
                   ("\\\\citeyear\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)"
                    1 LaTeX-bibitem-list "}")
                   ("\\\\citeyear{\\([^{}\n\r\\%,]*\\)" 1
                    LaTeX-bibitem-list "}")
                   ("\\\\citeyear{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)"
                    2 LaTeX-bibitem-list))
                 TeX-complete-list))

   (setq LaTeX-auto-regexp-list
         (append '(("\\\\harvarditem{\\([a-zA-Z][^%#'()={}]*\\)}{\\([0-9][^, %\"#'()={}]*\\)}{\\([a-zA-Z][^, %\"#'()={}]*\\)}" 3 LaTeX-auto-bibitem)
                   ("\\\\harvarditem\\[[^][\n\r]+\\]{\\([a-zA-Z][^%#'()={}]*\\)}{\\([0-9][^, %\"#'()={}]*\\)}{\\([a-zA-Z][^, %\"#'()={}]*\\)}" 3 LaTeX-auto-bibitem)
                   )
                 LaTeX-auto-regexp-list))

   (setq LaTeX-item-list
         (cons '("thebibliography" . LaTeX-item-harvardbib)
               LaTeX-item-list))

   ;; Tell RefTeX
   (when (and LaTeX-reftex-cite-format-auto-activate
              (fboundp 'reftex-set-cite-format))
     (reftex-set-cite-format 'harvard)))
 TeX-dialect)

(defun LaTeX-env-harvardbib (environment &optional _ignore)
  "Insert ENVIRONMENT with label for harvarditem."
  (LaTeX-insert-environment environment
                            (concat TeX-grop "xx" TeX-grcl))
  (end-of-line 0)
  (delete-char 1)
  (delete-horizontal-space)
  (LaTeX-insert-item))

;; Analog to LaTeX-item-bib from latex.el
(defun LaTeX-item-harvardbib ()
  "Insert a new harvarditem."
  (TeX-insert-macro "harvarditem"))

(defvar LaTeX-harvard-package-options '("full" "abbr" "default"
                                        "agsmcite" "dcucite" "round"
                                        "curly" "angle" "square" "none")
  "Package options for the harvard package.")

;; harvard.el ends here