>From 2366c380729a59a75fdf80aff4a422a1eb323e03 Mon Sep 17 00:00:00 2001 From: Arash Esbati Date: Sat, 26 Sep 2015 00:12:40 +0200 Subject: [PATCH 5/5] Add new style subcaption.el. * Makefile.in (STYLESRC): Add new style. * style/subcaption.el: New file. --- ChangeLog | 4 ++ Makefile.in | 2 +- style/subcaption.el | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 style/subcaption.el diff --git a/ChangeLog b/ChangeLog index 8695c91..a4cfa2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2015-09-25 Arash Esbati + * Makefile.in (STYLESRC): Add new style. + + * style/subcaption.el: New file. + * style/caption.el (LaTeX-caption-key-val-options): Fix values of hypcap-key. (LaTeX-caption-update-key-val-options): Add support for subcaption.el if loaded. diff --git a/Makefile.in b/Makefile.in index 5b689b1..9846055 100644 --- a/Makefile.in +++ b/Makefile.in @@ -152,7 +152,7 @@ STYLESRC = style/prosper.el \ style/mnras.el style/environ.el style/polyglossia.el \ style/vwcol.el style/textpos.el style/transparent.el \ style/fontenc.el style/Alegreya.el style/gloss-italian.el \ - style/AlegreyaSans.el + style/subcaption.el style/AlegreyaSans.el STYLEELC = $(STYLESRC:.el=.elc) diff --git a/style/subcaption.el b/style/subcaption.el new file mode 100644 index 0000000..8223c91 --- /dev/null +++ b/style/subcaption.el @@ -0,0 +1,158 @@ +;;; subcaption.el --- AUCTeX style for `subcaption.sty' (v1.1-100) + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Arash Esbati +;; Maintainer: address@hidden +;; Created: 2015-09-19 +;; 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 `subcaption.sty' (v1.1-100) from +;; 2015-09-15. `subcaption.sty' is part of TeXLive. + +;;; Code: + +(defvar LaTeX-subcaption-key-val-options + '(("subrefformat" ("default" "empty" "simple" "brace" "parens"))) + "Key=value options for subcaption package. This key takes the +same values as \"labelformat\" from caption package.") + +(defun LaTeX-arg-subcaption-subcaption (optional &optional star prompt) + "Query for the arguments of \\subcaption incl. a label and +insert them. If STAR is t, then do not query for the lof entry +and \\label and insert only a caption." + (let ((lof (unless star + (TeX-read-string + (TeX-argument-prompt t prompt "List entry")))) + (caption (TeX-read-string + (TeX-argument-prompt optional prompt "Sub-caption")))) + (LaTeX-indent-line) + (when (and lof (not (string-equal lof ""))) + (insert LaTeX-optop lof LaTeX-optcl)) + (insert TeX-grop caption TeX-grcl) + (unless star + (LaTeX-newline) + (LaTeX-indent-line) + (TeX-insert-macro "label")))) + +(defun LaTeX-arg-subcaption-subcaptionbox (optional &optional star prompt) + "Query for the arguments of \\subcaptionbox incl. a label and +insert them. If STAR is t, then do not query for a \\label and +insert only a caption." + (let ((caption (TeX-read-string + (TeX-argument-prompt optional prompt "Sub-caption")))) + (LaTeX-indent-line) + (insert TeX-grop caption) + (unless star (TeX-insert-macro "label")) + (insert TeX-grcl)) + (let* ((width (completing-read (TeX-argument-prompt t prompt "Width") + (mapcar (lambda (elt) (concat TeX-esc (car elt))) + (LaTeX-length-list)))) + (inpos (when (and width (not (string-equal width ""))) + (completing-read (TeX-argument-prompt t prompt "Inner position") + '("c" "l" "r" "s"))))) + (cond (;; 2 optional args + (and width (not (string-equal width "")) + inpos (not (string-equal inpos ""))) + (insert (format "[%s][%s]" width inpos))) + (;; 1st opt. arg, 2nd empty opt. arg + (and width (not (string-equal width "")) + (string-equal inpos "")) + (insert (format "[%s]" width))) + (t ; Do nothing if both empty + (ignore))))) + +(TeX-add-style-hook + "subcaption" + (lambda () + ;; Run style hook for caption.el + (TeX-run-style-hooks "caption") + + ;; Make "subrefformat" available in key-vals of caption.el: + (setq LaTeX-caption-key-val-options-local + (append LaTeX-subcaption-key-val-options + LaTeX-caption-key-val-options-local)) + + (TeX-add-symbols + ;; Basic commands + '("subcaption" (LaTeX-arg-subcaption-subcaption)) + '("subcaption*" (LaTeX-arg-subcaption-subcaption t)) + '("subcaptionbox" ["List entry"] (LaTeX-arg-subcaption-subcaptionbox) t) + '("subcaptionbox*" (LaTeX-arg-subcaption-subcaptionbox t) t) + '("subref" TeX-arg-ref) + ;; \subref* is only available with hyperref.sty loaded, we don't + ;; check if hyperref.el is loaded and make it available directly. + '("subref*" TeX-arg-ref) + '("phantomcaption" 0) + '("phantomsubcaption" 0)) + + ;; The next 2 macros are part of the kernel of caption.sty, but we + ;; load them within subcaption.el. + (TeX-add-symbols + '("DeclareCaptionSubType" + [TeX-arg-eval + completing-read (TeX-argument-prompt t nil "Numbering scheme") + '("arabic" "roman" "Roman" "alph" "Alph" "fnsymbol")] + (TeX-arg-eval + completing-read (TeX-argument-prompt nil nil "Type") + '("figure" "table"))) + + '("DeclareCaptionSubType*" + [TeX-arg-eval completing-read + (TeX-argument-prompt t nil "Numbering scheme") + '("arabic" "roman" "Roman" "alph" "Alph" "fnsymbol")] + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Type") + '("figure" "table")))) + + ;; The subfigure & subtable environments + (LaTeX-add-environments + '("subfigure" LaTeX-env-minipage) + '("subtable" LaTeX-env-minipage)) + + ;; Introduce env's to RefTeX if loaded + (when (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments + `(("subfigure" ?f ,LaTeX-figure-label "~\\ref{%s}" caption) + ("subtable" ?t ,LaTeX-table-label "~\\ref{%s}" caption)))) + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("subcaption" "*[{") + ("subcaptionbox" "*[{[[{") + ("phantomcaption" "") + ("phantomsubcaption" "")) + 'textual) + (font-latex-add-keywords '(("subref" "*{")) + 'reference) + (font-latex-add-keywords '(("DeclareCaptionSubType" "*[{")) + 'function)) ) + LaTeX-dialect) + +(defun LaTeX-subcaption-package-options () + "Prompt for package options for the subcaption package." + (TeX-read-key-val t + (append LaTeX-subcaption-key-val-options + LaTeX-caption-key-val-options))) + +;;; subcaption.el ends here -- 2.5.2