branch: main commit efc1355ca3cea1b48c08bda2759bfb6030146d73 Author: Arash Esbati <ar...@gnu.org> Commit: Arash Esbati <ar...@gnu.org>
Deal with list of new environment names * style/thm-restate.el ("thm-restate"): Adjust accordingly. * style/thmtools.el (LaTeX-thmtools-declaretheorem-list-clean): New function to deal with comma separated list of newly defined environments. (LaTeX-thmtools-auto-cleanup) (LaTeX-thmtools-listoftheorems-key-val-options, "thmtools"): Use new function. --- style/thm-restate.el | 13 +++++-------- style/thmtools.el | 33 +++++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/style/thm-restate.el b/style/thm-restate.el index 709be107..124c8ba6 100644 --- a/style/thm-restate.el +++ b/style/thm-restate.el @@ -1,6 +1,6 @@ ;;; thm-restate.el --- AUCTeX style for `thm-restate.sty' (v66) -*- lexical-binding: t; -*- -;; Copyright (C) 2018--2022 Free Software Foundation, Inc. +;; Copyright (C) 2018--2025 Free Software Foundation, Inc. ;; Author: Arash Esbati <ar...@gnu.org> ;; Maintainer: auctex-devel@gnu.org @@ -35,11 +35,8 @@ (require 'latex) ;; Silence the parser: -(declare-function LaTeX-thmtools-declaretheorem-list - "thmtools" ()) -(declare-function font-latex-add-keywords - "font-latex" - (keywords class)) +(declare-function LaTeX-thmtools-declaretheorem-list-clean "thmtools" ()) +(declare-function font-latex-add-keywords "font-latex" (keywords class)) ;; Setup for macro names defined with ;; \begin{restatable*?}[<Heading>]{<env-name>}{<macro name>}: @@ -112,7 +109,7 @@ (LaTeX-ntheorem-newtheorem-list)) (LaTeX-ntheorem-newtheorem-list)) ;; Environments defined with \declaretheorem - (LaTeX-thmtools-declaretheorem-list))) + (LaTeX-thmtools-declaretheorem-list-clean))) "Environment") LaTeX-env-thmrestate-restatable) @@ -132,7 +129,7 @@ (LaTeX-ntheorem-newtheorem-list)) (LaTeX-ntheorem-newtheorem-list)) ;; Environments defined with \declaretheorem - (LaTeX-thmtools-declaretheorem-list))) + (LaTeX-thmtools-declaretheorem-list-clean))) "Environment") LaTeX-env-thmrestate-restatable))) TeX-dialect) diff --git a/style/thmtools.el b/style/thmtools.el index cb4837af..69be5465 100644 --- a/style/thmtools.el +++ b/style/thmtools.el @@ -1,6 +1,6 @@ ;;; thmtools.el --- AUCTeX style for `thmtools.sty' (v0.72) -*- lexical-binding: t; -*- -;; Copyright (C) 2018--2023 Free Software Foundation, Inc. +;; Copyright (C) 2018--2025 Free Software Foundation, Inc. ;; Author: Arash Esbati <ar...@gnu.org> ;; Maintainer: auctex-devel@gnu.org @@ -27,6 +27,15 @@ ;; This file adds support for `thmtools.sty' (v0.72) from 2020/08/01. ;; `thmtools.sty' is part of TeXLive. +;; With this release, the mandatory argument of \declaretheorem accepts +;; a list of environment names, so one can define similar theorems at +;; once, e.g., \declaretheorem{lemma, proposition, corollary}[...]. +;; Then, the parser adds the entry "lemma, proposition, corollary" to +;; `LaTeX-auto-thmtools-declaretheorem'. The function +;; `LaTeX-thmtools-declaretheorem-list-clean' returns a cleaned version +;; of parsed elements which should be used instead of auto-generated +;; `LaTeX-thmtools-declaretheorem-list'. + ;;; Code: ;; Silence the compiler: @@ -66,6 +75,17 @@ 1 LaTeX-auto-thmtools-declaretheorem) "Matches the argument of \\declaretheorem from thmtools package.") +(defun LaTeX-thmtools-declaretheorem-list-clean () + "Clean entries returned by function `LaTeX-thmtools-declaretheorem-list'. +Return an alist with the name of parsed entries as single element of +each sub-list." + (let (envs) + (dolist (newthm (mapcar #'car (LaTeX-thmtools-declaretheorem-list))) + (if (string-match-p "," newthm) + (setq envs (append (split-string newthm "[^[:alnum:]]+" t) envs)) + (push newthm envs))) + (mapcar #'list (sort envs #'string<)))) + (defun LaTeX-thmtools-auto-prepare () "Clear `LaTeX-auto-thmtools-*' before parsing." (setq LaTeX-auto-thmtools-declaretheoremstyle nil @@ -73,7 +93,7 @@ (defun LaTeX-thmtools-auto-cleanup () "Process parsed elements from thmtools package." - (dolist (newthm (mapcar #'car (LaTeX-thmtools-declaretheorem-list))) + (dolist (newthm (mapcar #'car (LaTeX-thmtools-declaretheorem-list-clean))) (LaTeX-add-environments `(,newthm LaTeX-thmtools-env-label)))) (add-hook 'TeX-auto-prepare-hook #'LaTeX-thmtools-auto-prepare t) @@ -153,8 +173,9 @@ If OPTIONAL is non-nil, also insert the second argument in square brackets. PROMPT replaces the standard one for the second argument." (let ((env (TeX-read-string - (TeX-argument-prompt optional prompt "Environment")))) - (LaTeX-add-environments `(,env LaTeX-thmtools-env-label)) + (TeX-argument-prompt optional prompt "Environment(s)")))) + (LaTeX-add-thmtools-declaretheorems env) + (LaTeX-thmtools-auto-cleanup) (TeX-argument-insert env optional))) (defun LaTeX-thmtools-listoftheorems-key-val-options () @@ -172,7 +193,7 @@ argument." (LaTeX-ntheorem-newtheorem-list)) (mapcar #'car (LaTeX-ntheorem-newtheorem-list))) ;; thmtools version is called \declaretheorem: - (mapcar #'car (LaTeX-thmtools-declaretheorem-list))))) + (mapcar #'car (LaTeX-thmtools-declaretheorem-list-clean))))) `(("title") ("ignore" ,thms) ("ignoreall" ("true" "false")) @@ -265,7 +286,7 @@ RET in order to leave it empty.") (LaTeX-ntheorem-newtheorem-list)) (mapcar #'car (LaTeX-ntheorem-newtheorem-list))) ;; thmtools version is called \declaretheorem: - (mapcar #'car (LaTeX-thmtools-declaretheorem-list)))) + (mapcar #'car (LaTeX-thmtools-declaretheorem-list-clean)))) "Environment(s)")) '("listtheoremname" 0))