* style/cleveref.el: New file. --- Hello, This patch adds a new style file for cleveref support. I've included support for the most used cleveref macros, a new argument function that prompts the user for a series of labels and package options.
Changes since v1: * Fontification support. * Rename -multiple-labels function to be cleveref specific. * Use TeX-completing-read-multiple to get mutiple labels off the user, rather than prompting them in a loop. * Add less commonly used macros and declare them as expert macros. Any comments welcome. Matt Changelog Entry: 2014-10-13 Matthew Leach <[email protected]> * style/cleveref.el: New file. Makefile.in | 2 +- style/cleveref.el | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 style/cleveref.el diff --git a/Makefile.in b/Makefile.in index efdc405..583b6e7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -134,7 +134,7 @@ STYLESRC = style/prosper.el \ style/acronym.el style/xparse.el style/fancyvrb.el \ style/tabulary.el style/fontspec.el style/unicode-math.el \ style/luacode.el style/metalogo.el style/english.el \ - style/exercise.el style/plext.el + style/exercise.el style/plext.el style/cleveref.el STYLEELC = $(STYLESRC:.el=.elc) CLEANFILES = $(AUCELC) $(STYLEELC) $(MULEELC) diff --git a/style/cleveref.el b/style/cleveref.el new file mode 100644 index 0000000..755239d --- /dev/null +++ b/style/cleveref.el @@ -0,0 +1,103 @@ +;;; cleveref.el --- Style hook for the `cleveref.sty' package. + +;; Copyright (C) 2014 Free Software Foundation, Inc. + +;; Author: Matthew Leach <[email protected]> +;; Maintainer: [email protected] +;; Created: 13/10/2014 + +;; 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 + +(defun TeX-arg-cleveref-multiple-labels (optional &optional prompt definition) + "Prompt for a series of labels completing with known labels. +If OPTIONAL is non-nil, insert the resulting value as an optional +argument, otherwise as a mandatory one. Use PROMPT as the prompt +string. If DEFINITION is non-nil, add each chosen label to the +list of defined labels." + (let* ((labels (TeX-completing-read-multiple + (TeX-argument-prompt optional prompt "Keys") + (LaTeX-label-list))) + (labels-string (mapconcat 'identity labels ","))) + (when definition + (apply 'LaTeX-add-labels labels)) + (TeX-argument-insert labels-string optional optional))) + +(TeX-add-style-hook + "cleveref" + (lambda () + (TeX-add-symbols + '("cref" TeX-arg-cleveref-multiple-labels) + '("Cref" TeX-arg-cleveref-multiple-labels) + '("crefrange" (TeX-arg-label "Key (first)") (TeX-arg-label "Key (last)")) + '("Crefrange" (TeX-arg-label "key (first)") (TeX-arg-label "Key (last)")) + '("cpageref" TeX-arg-cleveref-multiple-labels) + '("Cpageref" TeX-arg-cleveref-multiple-labels) + '("cpagerefrange" (TeX-arg-label "Key (first)") (TeX-arg-label "Key (last)")) + '("Cpagerefrange" (TeX-arg-label "Key (first)") (TeX-arg-label "Key (last)")) + '("cref*" TeX-arg-cleveref-multiple-labels) + '("Cref*" TeX-arg-cleveref-multiple-labels) + '("crefrange*" (TeX-arg-label "Key (first)") (TeX-arg-label "Key (last)")) + '("Crefrange*" (TeX-arg-label "Key (first)") (TeX-arg-label "Key (last)")) + '("namecref" TeX-arg-label) + '("nameCref" TeX-arg-label) + '("lnamecref" TeX-arg-label) + '("namecrefs" TeX-arg-label) + '("nameCrefs" TeX-arg-label) + '("lnamecrefs" TeX-arg-label) + '("labelcref" TeX-arg-cleveref-multiple-labels) + '("labelcpageref" TeX-arg-cleveref-multiple-labels)) + + ;; These macros aren't used particularly often during the course of + ;; normal referencing. + (TeX-declare-expert-macros + "cleveref" + "namecref" "nameCref" "lnamecref" "namecrefs" "nameCrefs" + "lnamecrefs" "labelcref" "labelcpageref") + + ;; Fontification + (when (and (fboundp 'font-latex-add-keywords) + (fboundp 'font-latex-set-syntactic-keywords) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("cref" "*{") + ("Cref" "*{") + ("crefrange" "*{{") + ("Crefrange" "*{{") + ("cpageref" "{") + ("Cpageref" "{") + ("cpagerefrange" "{{") + ("Cpagerefrange" "{{") + ("namecref" "{") + ("nameCref" "{") + ("lnamecref" "{") + ("namecrefs" "{") + ("nameCrefs" "{") + ("lnamecrefs" "{") + ("labelcref" "{") + ("labelcpageref" "{")) + 'reference) + ;; For syntactic fontification, e.g. verbatim constructs. + (font-latex-set-syntactic-keywords))) + LaTeX-dialect) + +(defvar LaTeX-cleveref-package-options + '("capitalise" "nameinlink" "noabbrev" "poorman") + "Package options for the cleveref package.") + +;;; cleveref.el ends here. -- 2.1.2 _______________________________________________ auctex-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/auctex-devel
