246 lines
7.7 KiB
EmacsLisp
246 lines
7.7 KiB
EmacsLisp
;;; titleps.el --- AUCTeX style for `titleps.sty' (v1.1.1) -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2016--2022 Free Software Foundation, Inc.
|
|
|
|
;; Author: Arash Esbati <arash@gnu.org>
|
|
;; Maintainer: auctex-devel@gnu.org
|
|
;; Created: 2016-06-22
|
|
;; 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 `titleps.sty' (v1.1.1) from 2016/03/15.
|
|
;; `titleps.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-titleps-section-command-list
|
|
'("part"
|
|
"chapter"
|
|
"section"
|
|
"subsection"
|
|
"subsubsection"
|
|
"paragraph"
|
|
"subparagraph")
|
|
"List of sectioning commands available in \"titleps.sty\".")
|
|
|
|
(defun LaTeX-titleps-section-command-list ()
|
|
"Remove \"chapter\" from variable
|
|
`LaTeX-titleps-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-titleps-section-command-list)
|
|
(remove "chapter" LaTeX-titleps-section-command-list)))
|
|
|
|
(defvar LaTeX-titleps-newpagestyle-regexp
|
|
'("\\\\newpagestyle[ \t\n\r%]*{\\([^}]+\\)}" 1 LaTeX-auto-pagestyle)
|
|
"Match the argument of \"\\newpagestyle\" from titleps.sty.")
|
|
|
|
(add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
|
|
|
|
(TeX-add-style-hook
|
|
"titleps"
|
|
(lambda ()
|
|
|
|
;; Add titleps to the parser.
|
|
(TeX-auto-add-regexp LaTeX-titleps-newpagestyle-regexp)
|
|
|
|
;; Add \<section>title's
|
|
(dolist (sec (LaTeX-titleps-section-command-list))
|
|
(TeX-add-symbols `(,(concat sec "title") 0)))
|
|
|
|
(TeX-add-symbols
|
|
;; 2. Defining Page Styles
|
|
'("newpagestyle"
|
|
(TeX-arg-eval
|
|
(lambda ()
|
|
(let ((ps (TeX-read-string
|
|
(TeX-argument-prompt nil nil "Page style"))))
|
|
(LaTeX-add-pagestyles ps)
|
|
(format "%s" ps))))
|
|
(TeX-arg-conditional (y-or-n-p "With optional global style? ")
|
|
( [ t ] nil)
|
|
( t )))
|
|
|
|
'("renewpagestyle" TeX-arg-pagestyle
|
|
(TeX-arg-conditional (y-or-n-p "With optional global style? ")
|
|
( [ t ] nil)
|
|
( t )))
|
|
|
|
'("sethead"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil)
|
|
( 3 )))
|
|
|
|
'("setfoot"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil)
|
|
( 3 )))
|
|
|
|
'("sethead*" 3)
|
|
'("setfoot*" 3)
|
|
|
|
'("settitlemarks"
|
|
(TeX-arg-eval mapconcat #'identity
|
|
(TeX-completing-read-multiple
|
|
(TeX-argument-prompt nil nil "Level names")
|
|
(LaTeX-titleps-section-command-list))
|
|
","))
|
|
|
|
'("settitlemarks"
|
|
(TeX-arg-eval mapconcat #'identity
|
|
(TeX-completing-read-multiple
|
|
(TeX-argument-prompt nil nil "Level names")
|
|
(LaTeX-titleps-section-command-list))
|
|
","))
|
|
|
|
'("headrule" 0)
|
|
'("setheadrule" "Thickness")
|
|
|
|
'("footrule" 0)
|
|
'("setfootrule" "Thickness")
|
|
|
|
'("makeheadrule" 0)
|
|
'("makefootrule" 0)
|
|
|
|
;; 3. On \markboth and \markleft
|
|
'("setmarkboth" t)
|
|
'("resetmarkboth" 0)
|
|
|
|
;; 4. Headline/footline width
|
|
'("widenhead"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 2 ] nil nil)
|
|
( 2 )))
|
|
|
|
'("widenhead*" 2)
|
|
|
|
'("TitlepsPatchSection"
|
|
(TeX-arg-eval completing-read
|
|
(TeX-argument-prompt nil nil "Sectioning command")
|
|
(LaTeX-titleps-section-command-list)))
|
|
|
|
'("TitlepsPatchSection*"
|
|
(TeX-arg-eval completing-read
|
|
(TeX-argument-prompt nil nil "Sectioning command")
|
|
(LaTeX-titleps-section-command-list)))
|
|
|
|
;; 5. Marks
|
|
'("bottitlemarks" 0)
|
|
'("toptitlemarks" 0)
|
|
'("firsttitlemarks" 0)
|
|
'("nexttoptitlemarks" 0)
|
|
'("outertitlemarks" 0)
|
|
'("innertitlemarks" 0)
|
|
|
|
'("newtitlemark" (TeX-arg-macro "Command name"))
|
|
'("newtitlemark*" (TeX-arg-counter "Variable name"))
|
|
|
|
'("pretitlemark"
|
|
(TeX-arg-eval completing-read
|
|
(TeX-argument-prompt nil nil "Sectioning command")
|
|
(LaTeX-titleps-section-command-list))
|
|
"Text")
|
|
|
|
'("pretitlemark*"
|
|
(TeX-arg-eval completing-read
|
|
(TeX-argument-prompt nil nil "Sectioning command")
|
|
(LaTeX-titleps-section-command-list))
|
|
"Text")
|
|
|
|
'("ifsamemark"
|
|
(TeX-arg-macro "Marks group: \\")
|
|
(TeX-arg-macro "Command: \\")
|
|
2)
|
|
|
|
;; 6. Running heads with floats
|
|
'("setfloathead"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil nil [ nil ] )
|
|
( 4 [ nil ] )))
|
|
|
|
'("setfloatfoot"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil nil [ nil ] )
|
|
( 4 [ nil ] )))
|
|
|
|
'("setfloathead*" 4 [ nil ] )
|
|
'("setfloatfoot*" 4 [ nil ] )
|
|
|
|
'("nextfloathead"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil nil [ nil ] )
|
|
( 4 [ nil ] )))
|
|
|
|
'("nextfloatfoot"
|
|
(TeX-arg-conditional (y-or-n-p "With optional even pages? ")
|
|
( [ 3 ] nil nil nil nil [ nil ] )
|
|
( 4 [ nil ] )))
|
|
|
|
'("nextfloathead*" 4 [ nil ] )
|
|
'("nextfloatfoot*" 4 [ nil ] )
|
|
|
|
;; 7. Extra marks: I'm not clear how the marks commands work;
|
|
;; until then, I ignore them
|
|
)
|
|
|
|
;; Don't increase indent at \ifsamemark:
|
|
(add-to-list 'LaTeX-indent-begin-exceptions-list "ifsamemark" t)
|
|
(LaTeX-indent-commands-regexp-make)
|
|
|
|
(when (and (featurep 'font-latex)
|
|
(eq TeX-install-font-lock 'font-latex-setup))
|
|
(font-latex-add-keywords '(("newpagestyle" "{[{")
|
|
("renewpagestyle" "{[{")
|
|
("settitlemarks" "*{")
|
|
("widenhead" "*[[{{")
|
|
("TitlepsPatchSection" "*{")
|
|
("newtitlemark" "*{")
|
|
("pretitlemark" "*{{")
|
|
("nextfloathead" "*[[[{{{{[")
|
|
("nextfloatfoot" "*[[[{{{{["))
|
|
'function)))
|
|
TeX-dialect)
|
|
|
|
(defvar LaTeX-titleps-package-options
|
|
'(;; 4. Headline/footline width
|
|
"nopatches"
|
|
|
|
;; 5. Marks
|
|
"outermarks" "innermarks" "topmarks" "botmarks"
|
|
|
|
;; 6. Running heads with floats
|
|
"psfloats"
|
|
|
|
;; 7. Extra marks
|
|
"extramarks")
|
|
"Package options for the titleps package.")
|
|
|
|
;;; titleps.el ends here
|