diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/titletoc.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/titletoc.el | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/titletoc.el b/elpa/auctex-13.1.3/style/titletoc.el new file mode 100644 index 0000000..c0ac512 --- /dev/null +++ b/elpa/auctex-13.1.3/style/titletoc.el @@ -0,0 +1,198 @@ +;;; titletoc.el --- AUCTeX style for `titletoc.sty' (v1.6) -*- lexical-binding: t; -*- + +;; Copyright (C) 2016, 2018, 2020 Free Software Foundation, Inc. + +;; Author: Arash Esbati <arash@gnu.org> +;; Maintainer: auctex-devel@gnu.org +;; 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 `titletoc.sty' (v1.6) from +;; 2011/12/15. `titletoc.sty' is part of TeXLive. + +;;; Code: + +(require 'tex) +(require 'latex) + +;; Silence the compiler: +(declare-function font-latex-add-keywords + "font-latex" + (keywords class)) + +(defvar LaTeX-titletoc-section-command-list + '("part" + "chapter" + "section" + "subsection" + "subsubsection" + "paragraph" + "subparagraph" + "figure" + "table") + "List of sectioning commands available in \"titletoc.sty\". +Other environments producing a \"Table of ENVIRONMENT\" (figure, +table) are also available in this variable.") + +(defun LaTeX-titletoc-section-command-list () + "Remove \"chapter\" from variable +`LaTeX-titletoc-section-command-list' and return the remainder. +Removal is based on the return value of function +`LaTeX-largest-level'." + (if (< (LaTeX-largest-level) 2) + (symbol-value 'LaTeX-titletoc-section-command-list) + (remove "chapter" LaTeX-titletoc-section-command-list))) + +;; Setup for \contentsuse: +(TeX-auto-add-type "titletoc-contentsuse" "LaTeX") + +(defvar LaTeX-titletoc-contentsuse-regexp + '("\\\\contentsuse{\\([^}]+\\)}" + 1 LaTeX-auto-titletoc-contentsuse) + "Matches the argument of \\contentsuse from titletoc package.") + +(defun LaTeX-titletoc-auto-prepare () + "Clear `LaTeX-auto-titletoc-contentsuse' before parsing." + (setq LaTeX-auto-titletoc-contentsuse nil)) + +(defun LaTeX-titletoc-auto-cleanup () + "Move parsed arguments of \"\\contentsuse\" to the variable +`LaTeX-titletoc-section-command-list'." + (when (LaTeX-titletoc-contentsuse-list) + (make-local-variable 'LaTeX-titletoc-section-command-list) + (dolist (content (mapcar #'car (LaTeX-titletoc-contentsuse-list))) + (add-to-list 'LaTeX-titletoc-section-command-list content)))) + +(add-hook 'TeX-auto-prepare-hook #'LaTeX-titletoc-auto-prepare t) +(add-hook 'TeX-auto-cleanup-hook #'LaTeX-titletoc-auto-cleanup t) +(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) + +(TeX-add-style-hook + "titletoc" + (lambda () + + ;; Add titletoc to the parser + (TeX-auto-add-regexp LaTeX-titletoc-contentsuse-regexp) + + (TeX-add-symbols + ;; Basic macros + ;; \dottedcontents{<section>}[<left>]{<above-code>} + ;; {<label width>}{<leader width>} + '("dottedcontents" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Sectioning command") + (LaTeX-titletoc-section-command-list)) + [ TeX-arg-length "Left margin" ] 3) + + ;; \titlecontents{<section>}[<left>]{<above-code>} + ;; {<numbered-entry-format>}{<numberless-entry-format>} + ;; {<filler-page-format>}[<below-code>] + '("titlecontents" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Sectioning command") + (LaTeX-titletoc-section-command-list)) + [ TeX-arg-length "Left margin" ] + (TeX-arg-conditional (y-or-n-p "With optional below code argument? ") + (4 [nil]) + (4))) + + ;; \titlecontents*{<section>}[<left>]{<above-code>} + ;; {<numbered-entry-format>}{<numberless-entry-format>} + ;; {<filler-page-format>}[<separator>] + '("titlecontents*" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Sectioning command") + (LaTeX-titletoc-section-command-list)) + [ TeX-arg-length "Left margin" ] + (TeX-arg-conditional (y-or-n-p "With optional separator argument? ") + (4 [nil]) + (4))) + + ;; \contentsmargin[<correction>]{<right>} + '("contentsmargin" [ "Correction" ] "Right margin") + + '("thecontentslabel" 0) + + '("thecontentspage" 0) + + '("contentslabel" [ "Format" ] (TeX-arg-length "Space")) + + '("contentspage" [ "Format" ]) + + '("contentspush" t) + + ;; Check if newfloat.el is loaded and any new environment is + ;; defined with it. titletoc.sty can also be used to customize + ;; new environments defined with newfloat.sty. As a prerequisite, + ;; the environments must be introduced to titletoc.sty with + ;; \contentuse{ENV} and then can be used as argument to \titlecontents. + '("contentsuse" + (TeX-arg-eval + (lambda () + (let ((name (if (and (member "newfloat" (TeX-active-styles)) + (LaTeX-newfloat-DeclareFloatingEnvironment-list)) + (completing-read + (TeX-argument-prompt nil nil "Name of contents") + (mapcar #'car + (LaTeX-newfloat-DeclareFloatingEnvironment-list))) + (TeX-read-string + (TeX-argument-prompt nil nil "Name of contents"))))) + (make-local-variable 'LaTeX-titletoc-section-command-list) + (add-to-list 'LaTeX-titletoc-section-command-list name) + (format "%s" name)))) + "File extension") + + ;; 6.3. Partial TOC's + '("startcontents" [ "Name" ]) + + '("stopcontents" [ "Name" ]) + + '("resumecontents" [ "Name" ]) + + '("printcontents" [ "Name" ] "Prefix" "Start level" t) + + ;; 6.4. Partial lists + '("startlist" [ "Name" ] "List") + + '("stoplist" [ "Name" ] "List") + + '("resumelist" [ "Name" ] "List") + + '("printlist" [ "Name" ] "Prefix" t) ) + + ;; Fontification: We only add macros which are used at top level; + ;; most of macros definded above are intended to be used in + ;; arguments of \dottedcontents or \titlecontents + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("dottedcontents" "{[{{{") + ("titlecontents" "*{[{{{[[[") + ("contentsmargin" "[{") + ("contentsuse" "{{")) + 'function)) ) + TeX-dialect) + +(defvar LaTeX-titletoc-package-options + '("leftlabels" "rightlabels" "dotinlabels") + "Package options for the titletoc package.") + +;;; titletoc.el ends here |