>From 404860f4a5f485eafecb8a2572dc9e44d153b402 Mon Sep 17 00:00:00 2001 From: Arash Esbati Date: Sun, 8 Mar 2015 18:19:12 +0100 Subject: [PATCH 3/3] New style for geometry.sty. * Makefile.in (STYLESRC): Add new style. * style/geometry.el: New file. --- ChangeLog | 4 ++ Makefile.in | 2 +- style/geometry.el | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 style/geometry.el diff --git a/ChangeLog b/ChangeLog index 1393042..1811387 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ * Makefile.in (STYLESRC): Add new style. + * style/geometry.el: New file. + + * Makefile.in (STYLESRC): Add new style. + * style/caption.el: New file. * Makefile.in (STYLESRC): Add new style. diff --git a/Makefile.in b/Makefile.in index d165fd4..c3568af 100644 --- a/Makefile.in +++ b/Makefile.in @@ -145,7 +145,7 @@ STYLESRC = style/prosper.el \ style/newtxtext.el style/newtxttt.el style/minted.el \ style/wrapfig.el style/relsize.el style/currvita.el \ style/tcolorbox.el style/color.el style/expl3.el \ - style/enumitem.el style/caption.el + style/enumitem.el style/caption.el style/geometry.el STYLEELC = $(STYLESRC:.el=.elc) ifeq (@preview_enabled@,yes) diff --git a/style/geometry.el b/style/geometry.el new file mode 100644 index 0000000..d263183 --- /dev/null +++ b/style/geometry.el @@ -0,0 +1,150 @@ +;;; geometry.el --- AUCTeX style for `geometry.sty' (v5.6) + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Arash Esbati +;; Maintainer: address@hidden +;; Created: 2015-02-21 +;; 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 `geometry.sty' (v5.6) from 2010/09/12. +;; `geometry.sty' is part of TeXLive. + +;;; Code: + +(defvar LaTeX-geometry-always-key-val-options + '(("layout") ("layoutwidth") ("layoutheight") ("layoutsize") + ("layouthoffset") ("layoutvoffset") ("layoutoffset") ("hscale") + ("vscale") ("scale") ("width") ("totalwidth") ("height") ("totalheight") + ("total") ("textwidth") ("textheight") ("text") ("body") ("lines") + ("includehead") ("includefoot") ("includeheadfoot") ("includemp") + ("includeall") ("ignorehead") ("ignorefoot") ("ignoreheadfoot") + ("ignoremp") ("ignoreall") ("heightrounded") ("hdivide") ("vdivide") + ("divide") ("left") ("lmargin") ("inner") ("right") ("rmargin") + ("outer") ("top") ("tmargin") ("bottom") ("bmargin") ("hmargin") + ("vmargin") ("margin") ("hmarginratio") ("vmarginratio") ("marginratio") + ("ratio") ("hcentering") ("vcentering") ("centering") ("twoside") + ("asymmetric") ("bindingoffset") ("hdivide") ("vdivide") ("divide") + ("headheight") ("head") ("headsep") ("footskip") ("foot") ("nohead") + ("nofoot") ("noheadfoot") ("footnotesep") ("marginparwidth") ("marginpar") + ("marginparsep") ("nomarginpar") ("columnsep") ("hoffset") ("voffset") + ("offset") ("twocolumn") ("onecolumn") ("twoside") ("textwidth") + ("textheight") ("reversemp") ("reversemarginpar")) + "Key=value options always available for geometry macros.") + +(defvar LaTeX-geometry-preamble-key-val-options + '(("paper" ("a0paper" "a1paper" "a2paper" "a3paper" "a4paper" + "a5paper" "a6paper" "b0paper" "b1paper" "b2paper" + "b3paper" "b4paper" "b5paper" "b6paper" "c0paper" + "c1paper" "c2paper" "c3paper" "c4paper" "c5paper" + "c6paper" "b0j" "b1j" "b2j" "b3j" "b4j" "b5j" "b6j" + "ansiapaper" "ansibpaper" "ansicpaper" "ansidpaper" + "ansiepaper" "ansiapaper" "ansibpaper" "ansicpaper" + "ansidpaper" "ansiepaper")) + ("papername" ("a0paper" "a1paper" "a2paper" "a3paper" "a4paper" + "a5paper" "a6paper" "b0paper" "b1paper" "b2paper" + "b3paper" "b4paper" "b5paper" "b6paper" "c0paper" + "c1paper" "c2paper" "c3paper" "c4paper" "c5paper" + "c6paper" "b0j" "b1j" "b2j" "b3j" "b4j" "b5j" "b6j" + "ansiapaper" "ansibpaper" "ansicpaper" "ansidpaper" + "ansiepaper" "ansiapaper" "ansibpaper" "ansicpaper" + "ansidpaper" "ansiepaper")) + ("a0paper") ("a1paper") ("a2paper") ("a3paper") ("a4paper") ("a5paper") + ("a6paper") ("b0paper") ("b1paper") ("b2paper") ("b3paper") ("b4paper") + ("b5paper") ("b6paper") ("c0paper") ("c1paper") ("c2paper") ("c3paper") + ("c4paper") ("c5paper") ("c6paper") ("b0j") ("b1j") ("b2j") ("b3j") + ("b4j") ("b5j") ("b6j") ("ansiapaper") ("ansibpaper") ("ansicpaper") + ("ansidpaper") ("ansiepaper") ("ansiapaper") ("ansibpaper") ("ansicpaper") + ("ansidpaper") ("ansiepaper") ("screen") ("paperwidth") ("paperheight") + ("papersize") ("landscape") ("portrait") + ("driver" ("dvips" "dvipdfm" "pdftex" "vtex" "xetex" "auto" "none")) + ("dvips") ("dvipdfm") ("pdftex") ("xetex") ("vtex") ("verbose") + ("reset") ("mag") ("truedimen") ("pass") ("showframe") ("showcrop")) + "Key=value options allowed only in the preamble for geometry macros.") + + +;; Needed for auto-parsing. +(require 'tex) + +;; Setup for \savegeometry: +(TeX-auto-add-type "geometry-savegeometry" "LaTeX" "geometry-savegeometries") + +(defvar LaTeX-geometry-savegeometry-regexp + '("\\\\savegeometry{\\([^}]+\\)}" + 1 LaTeX-auto-geometry-savegeometry) + "Matches the argument of `\\savegeometry' from `geometry' +package.") + +(defun LaTeX-geometry-auto-prepare () + "Clear `LaTeX-auto-geometry-savegeometry' before parsing." + (setq LaTeX-auto-geometry-savegeometry nil)) + +(add-hook 'TeX-auto-prepare-hook #'LaTeX-geometry-auto-prepare t) + +(TeX-add-style-hook + "geometry" + (lambda () + + ;; Add geometry to the parser. + (TeX-auto-add-regexp LaTeX-geometry-savegeometry-regexp) + + ;; geometry commands: + (TeX-add-symbols + '("geometry" + (TeX-arg-eval TeX-read-key-val nil + (append LaTeX-geometry-preamble-key-val-options + LaTeX-geometry-always-key-val-options))) + '("newgeometry" + (TeX-arg-key-val LaTeX-geometry-always-key-val-options)) + + '("restoregeometry" 0) + + '("savegeometry" + (TeX-arg-eval + (lambda () + (let ((name (TeX-read-string "Name: "))) + (LaTeX-add-geometry-savegeometries name) + (format "%s" name))))) + + '("loadgeometry" + (TeX-arg-eval + (lambda () + (completing-read "Name: " + (LaTeX-geometry-savegeometry-list)))))) + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("geometry" "{") + ("newgeometry" "{") + ("savegeometry" "{") + ("loadgeometry" "{")) + 'function))) + LaTeX-dialect) + +(defun LaTeX-geometry-package-options () + "Prompt for package options for the geometry package." + (TeX-read-key-val t + (append LaTeX-geometry-preamble-key-val-options + LaTeX-geometry-always-key-val-options))) + +;;; geometry.el ends here -- 2.3.1