diff options
| author | mattkae <mattkae@protonmail.com> | 2022-06-07 08:23:47 -0400 | 
|---|---|---|
| committer | mattkae <mattkae@protonmail.com> | 2022-06-07 08:23:47 -0400 | 
| commit | bd18a38c2898548a3664a9ddab9f79c84f2caf4a (patch) | |
| tree | 95b9933376770381bd8859782ae763be81c2d72b /elpa/auctex-13.1.3/style/pstricks.el | |
| parent | b07628dddf418d4f47b858e6c35fd3520fbaeed2 (diff) | |
| parent | ef160dea332af4b4fe5e2717b962936c67e5fe9e (diff) | |
Merge conflict
Diffstat (limited to 'elpa/auctex-13.1.3/style/pstricks.el')
| -rw-r--r-- | elpa/auctex-13.1.3/style/pstricks.el | 880 | 
1 files changed, 0 insertions, 880 deletions
diff --git a/elpa/auctex-13.1.3/style/pstricks.el b/elpa/auctex-13.1.3/style/pstricks.el deleted file mode 100644 index 6a6707f..0000000 --- a/elpa/auctex-13.1.3/style/pstricks.el +++ /dev/null @@ -1,880 +0,0 @@ -;;; pstricks.el --- AUCTeX style for the `pstricks' package.  -*- lexical-binding: t; -*- - -;; Copyright (C) 2007-2022  Free Software Foundation, Inc. - -;; Author: Holger Sparr <holger.sparr@gmx.net> -;; Maintainer: auctex-devel@gnu.org -;; Created: 2007-06-14 -;; 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: -;; -;; AUCTeX style file for PSTricks -;; -;; Support for basic PSTricks macros and their arguments. Separate -;; history variables for point, angle, ... arguments. -;; -;; Parameter input completion together with input completion for certain -;; parameters (e.g. linestyle, linecolor and the like). -;; -;; There is a PSTricks-specific support for adding new parameters to -;; existing parameter lists or changing existing ones in optional -;; macro arguments.  You might want to make those available through -;; key bindings by using something like -;; (define-key LaTeX-mode-map (kbd "C-c p a") -;;   'LaTeX-pst-parameter-add) -;; (define-key LaTeX-mode-map (kbd "C-c p c") -;;   'LaTeX-pst-parameter-change-value) -;; in a personal style file for PSTricks. - -;;; History: -;; -;; 14/06/2007 rewrite of pstricks.el based on Jean-Philippe Georget's -;;            pstricks.el version found on <URI: -;;            https://www.emacswiki.org/emacs/pstricks.el> - -;;; TODO: -;; -;; -- Use alist or hash-table for parameter input -;; -- Add more regularly used PSTricks macros -;; -- Prevent errors in AUCTeX modes other than LaTeX mode. -;; -- Check if the functionality for adding and changing parameters -;;    can be generalized. - -;;; Code: - -(require 'tex) -(require 'latex) -(eval-when-compile -  (require 'cl-lib)) - -;;; General Functions - -(defun TeX-arg-compl-list (list &optional prompt hist) -  "Input a value after PROMPT with completion from LIST and HISTORY." -  (let ((first (car list))) -    (if (and first (listp first)) -        (let ((func (nth 0 first)) -              (prompt (concat (or (nth 1 first) prompt) ": ")) -              (compl (nth 2 first)) -              (hist (or (nth 3 first) hist)) -              (crm-separator (nth 4 first)) -              res) -          (setq list (cdr list)) -          (cond ((eq func #'completing-read-multiple) -                 (setq res (funcall func prompt list nil compl nil hist)) -                 (mapconcat #'identity res crm-separator)) -                ((eq func #'completing-read) -                 (setq res -                       (funcall func prompt list nil compl nil hist))))) -      (completing-read (concat prompt ": ") list nil nil nil hist)))) - -;; XXX: Show default value in prompt.  Perhaps extend -;; `TeX-argument-prompt' to do that. -(defun LaTeX-pst-what (what prompt default &optional arg) -  "Ask for WHAT with PROMPT with DEFAULT. -The corresponding lists LaTeX-pst-<what>-\\(list\\|history\\) -have to exist. - -\(Used to define functions named LaTeX-pst-<what>.\))" -  (let ((list (intern (concat "LaTeX-pst-" what "-list"))) -        (hist (intern (concat "LaTeX-pst-" what "-history")))) -    (if (not arg) -        (setq arg (TeX-arg-compl-list (symbol-value list) prompt hist))) -    (if (string= arg "") -        default -      (add-to-list list arg) -      arg))) - -(defun LaTeX-pst-input-int (prompt arg) -  "Return number as string asked for with PROMPT if no number -passed with ARG." -  (unless (numberp arg) -    (setq arg (read-number (concat prompt ": ") 2))) -  (number-to-string arg)) - -(defun LaTeX-pst-enclose-obj (symbol op cl) -  "Enclose string returned by the `funcall' SYMBOL in OP and CL -character." -  (let ((str (funcall symbol))) -    (if str (insert (char-to-string op) str (char-to-string cl))))) - -(defun LaTeX-package-parameter-value (param pname) -  "Ask for possible value of parameter PARAM given as string -available through package name PNAME and return \"param=value\"." -  (add-to-list (intern (concat "LaTeX-" pname "-parameters-name-list")) -               param) -  ;; select predefined set -  (let* ((cregexp -          (symbol-value -           (intern (concat "LaTeX-" pname -                           "-parameters-completion-regexp")))) -         (bregexp -          (symbol-value (intern (concat "LaTeX-" pname -                                        "-parameters-boolean-regexp")))) -         (parlist (cond -                   ((string-match cregexp param) -                    (intern (concat "LaTeX-" pname "-" -                                    (match-string 0 param) "-list"))) -                   ((string-match bregexp param) -                    'LaTeX-pst-boolean-list))) -         val compl) -    ;; ask for value -    (setq val (TeX-arg-compl-list -               (symbol-value parlist) -               (concat "(Press TAB for completions) " param) -               (intern (concat "LaTeX-" pname -                               "-parameters-value-history")))) -    ;; FIXME: This looks broken.  `compl' is never set and unless "" -    ;; is added to parlist (at least in the Boolean case), the prompt -    ;; shown by `TeX-arg-compl-list' will be incorrect. -    (if (and (not compl) parlist) (add-to-list parlist val)) -    (if (string= val "") "" (concat param "=" val)))) - -(defun LaTeX-package-parameters-pref-and-chosen (param pname noskip) -  "Set values for elements of PARAM from package PNAME and -further explicitly typed in parameters and return a comma -separated list as string." -  (let ((allpars "") -        (fask (intern (concat "LaTeX-" pname "-parameter-value"))) -        tpara parval) -    (when param -      (while param -        (setq tpara (pop param)) -        (setq parval (funcall fask tpara)) -        (setq allpars -              (concat allpars -                      (if (or (string= "" allpars) (string= "" parval)) -                          "" ",") parval)))) -    ;; ask for parameter names as long as none is given -    (when noskip -      (while -          (not -           (string= -            "" -            (setq tpara -                  (completing-read -                   "Parameter name (RET to stop): " -                   (symbol-value (intern -                                  (concat "LaTeX-" pname -                                          "-parameters-name-list"))) -                   nil nil nil (intern -                                (concat "LaTeX-" pname -                                        "-parameters-name-history")))))) -        (setq parval (funcall fask tpara)) -        ;; concat param=value with other ones -        (setq allpars -              (concat allpars -                      (if (or (string= "" allpars) (string= "" parval)) -                          "" -                        ",") -                      parval)))) -    (add-to-list -     (intern (concat "LaTeX-" pname "-parameters-history")) allpars) -    allpars)) - -(defun LaTeX-package-parameters (optional pname preparam param) -  "Ask for parameters and manage several parameter lists for -package PNAME" -  (let ((fask (intern -               (concat "LaTeX-" pname "-parameters-pref-and-chosen"))) -        (hlist (intern (concat "LaTeX-" pname "-parameters-history"))) -        (nlist -         (symbol-value -          (intern (concat "LaTeX-" pname "-parameters-name-list"))))) -    ;; -    (when (and preparam (listp preparam)) -      (setq preparam (funcall fask preparam))) -    ;; -    (setq param -          (TeX-completing-read-multiple -           (concat -            "Params (use <Up,Down> for history or RET for choices): ") -           nlist nil nil nil hlist)) -    ;; -    (if (not param) -        (setq param (funcall fask nil t)) -      (setq param (car (symbol-value hlist)))) -    (TeX-argument-insert -     (if (or (string= "" preparam) (eq preparam nil)) -         param -       (concat preparam (if (string= "" param) "" (concat "," param)))) -     optional))) - -;;; Points -(defvar LaTeX-pst-point-list (list "0,0") -  "A list of values for point in pstricks.") - -(defvar LaTeX-pst-point-history LaTeX-pst-point-list -  "History of values for point in pstricks.") - -(defun LaTeX-pst-point () -  "Ask for a point and manage point list." -  (LaTeX-pst-what "point" -                  (concat "Point (default " (car LaTeX-pst-point-history) ")") -                  (car LaTeX-pst-point-history))) - -(defun LaTeX-pst-point-in-parens (_optional) -  "Enclose point in parentheses." -  (LaTeX-pst-enclose-obj 'LaTeX-pst-point ?\( ?\))) - -;;; Angles -(defvar LaTeX-pst-angle-list (list "0") -  "A list of values for angle in pstricks.") - -(defvar LaTeX-pst-angle-history nil -  "History of values for angle in pstricks.") - -(defun LaTeX-pst-angle () -  "Ask for a angle and manage angle list" -  (LaTeX-pst-what "angle" -                  (concat "Angle (default " (car LaTeX-pst-angle-list) ")") -                  (car LaTeX-pst-angle-list))) - -;;; Extension in one Direction -(defvar LaTeX-pst-extdir-list (list "1") -  "A list of values for extdir in pstricks.") - -(defvar LaTeX-pst-extdir-history nil -  "History of values for extdir in pstricks.") - -(defun LaTeX-pst-extdir (descr) -  "Ask for a extdir and manage extdir list" -  (LaTeX-pst-what "extdir" -                  (concat descr " (default " (car LaTeX-pst-extdir-list) ")") -                  (car LaTeX-pst-extdir-list))) - -;;; Relative Points -(defvar LaTeX-pst-delpoint-list nil -  "A list of values for delpoint in pstricks.") - -(defvar LaTeX-pst-delpoint-history nil -  "History of values for delpoint in pstricks.") - -;;; Arrows -(defvar LaTeX-pst-arrows-list -  '("->" "<-" "<->" ">-<" ">-" "-<" "<<->>" "<<-" "->>" "|-|" "|-" "-|" -  "|*-|*" "[-]" "[-" "-]" "(-)" "(-" "-)" "*-*" "*-" "-*" "0-0" "0-" -  "-0" "c-c" "c-" "-c" "C-C" "C-" "-C" "cc-cc" "cc-" "-cc" "|<->|" "|<-" -  "->|" "|<*->|*" "|<*-" "->|*" "-") -  "A list of values for arrows in pstricks.") - -(defvar LaTeX-pst-arrows-history nil -  "History of values for arrows in pstricks.") - -;; XXX: Better ask for arrow start and end separately? -;; `LaTeX-pst-arrows-list' is not exhaustive. -(defun LaTeX-pst-arrows () -  "Ask for a arrow type and manage arrow type list" -  (or (LaTeX-pst-what "arrows" "Arrow type" nil) "")) - -;;; Dots -(defvar LaTeX-pst-dotstyle-list -  '((completing-read "Dot style" nil LaTeX-pst-dotstyle-history) -    "*" "o" "+" "|" "triangle" "triangle*" "square" "square*" "pentagon" -    "pentagon*") -  "A list of values for dotstyle in pstricks.") - -(defvar LaTeX-pst-dotstyle-history nil -  "History of values for dotstyle in pstricks.") - -;;; Reference Point -(defvar LaTeX-pst-refpoint-list -  '((completing-read "Reference point" t LaTeX-pst-refpoint-history) -    "l" "r" "t" "tl" "lt" "tr" "rt" "b" "bl" "br" "lb" "rb" "B" "Bl" -    "Br" "lB" "rB") -  "A list of values for refpoint in pstricks.") - -(defvar LaTeX-pst-refpoint-history nil -  "History of values for refpoint in pstricks.") - -(defun LaTeX-pst-refpoint () -  "Ask for a refpoint and manage refpoint list" -  (LaTeX-pst-what "refpoint" "Reference point" nil)) - -;;; Color - -;; FIXME: Still used? -(defvar LaTeX-pst-color-history nil -  "History of values for color in pstricks.") - -;;; Others without History in Completion - -(defvar LaTeX-pst-style-list -  '((completing-read "Defined Style" t)) -  "A list of values for user defined styles in pstricks.") - -;;; Parameters - -(defvar LaTeX-pst-parameters-history nil -  "History of values for parameters in pstricks.") - -(defvar LaTeX-pst-parameters-value-history nil -  "History of parameter values in pstricks.") - -(defvar LaTeX-pst-basic-parameters-name-list -  '("arcsep" "arcsepA" "arcsepB" "arrowinset" "arrowlength" "arrows" -    "arrowscale" "arrowsize" "border" "bordercolor" "boxsep" -    "bracketlength" "cornersize" "curvature" "dash" "dimen" "dotangle" -    "dotscale" "dotsep" "dotsize" "dotstyle" "doublecolor" "doubleline" -    "doublesep" "doubleset" "fillcolor" "fillstyle" "framearc" -    "framesep" "gangle" "gridcolor" "griddots" "gridlabelcolor" -    "gridlabels" "gridwidth" "hatchangle" "hatchcolor" "hatchsep" -    "hatchsepinc" "hatchwidth" "hatchwidthinc" "header" "labelsep" -    "liftpen" "linearc" "linecolor" "linestyle" "linetype" "linewidth" -    "rbracketlength" "ref" "runit" "shadow" "shadowangle" "shadowcolor" -    "shadowsize" "showgrid" "showpoints" "style" "subgridcolor" -    "subgriddiv" "subgriddots" "subgridwidth" "swapaxes" "tbarsize" -    "trimode" "unit" "xunit" "yunit") -  "A list of parameter names in pstricks.") - - -(defvar LaTeX-pst-boolean-list '("true" "false") -  "List of binary values for key=value completion.") - -;; XXX: Colors can actually be given as [-]<color>[!<num>]. -(defvar LaTeX-pst-color-list -  '("black" "darkgray" "gray" "lightgray" "white" -    "red" "green" "blue" "cyan" "magenta" "yellow") -  "List of colors predefined in PSTricks.") - -(defvar LaTeX-pst-fillstyle-list -  '("none" "solid" "vlines" "vlines*" "hlines" "hlines*" "crosshatch" -    "crosshatch*" "boxfill") -  "List of fill styles defined in PSTricks.") - -;; From PSTricks: PostScript macros for Generic TeX, User's Guide, -;; Timothy Van Zandt, 25 July 2003, Version 97. -;; FIXME: Provide separate variables tailored to the different macros. -(defvar LaTeX-pst-basic-parameters-list -  '(;; Dimensions, coordinates and angles -    ("unit") -    ("xunit") -    ("yunit") -    ("runit") -    ;; Basic graphics parameters -    ("linewidth") -    ("linecolor" LaTeX-pst-color-list) -    ("fillstyle" LaTeX-pst-fillstyle-list) -    ("fillcolor" LaTeX-pst-color-list) -    ("arrows" LaTeX-pst-arrows-list) -    ("showpoints" LaTeX-pst-boolean-list) -    ;; Lines and polygons -    ("linearc") -    ("framearc") -    ("cornersize" ("relative" "absolute")) -    ("gangle") -    ;; Arcs, circles and ellipses -    ("arcsepA") -    ("arcsepB") -    ("arcsep") -    ;; Curves -    ("curvature") -    ;; Dots -    ("dotstyle" ("*" "o" "Bo" "x" "+" "B+" "asterisk" "Basterisk" "oplus" -                 "otimes" "|" "B|" "square" "Bsquare" "square*" "diamond" -                 "Bdiamond" "diamond*" "triangle" "Btriangle" "triangle*" -                 "pentagon" "Bpentagon" "pentagon*")) -    ("dotsize") -    ("dotscale") -    ("dotangle") -    ;; Grids -    ("gridwidth") -    ("gridcolor" LaTeX-pst-color-list) -    ("griddots") -    ("gridlabels") -    ("gridlabelcolor" LaTeX-pst-color-list) -    ("subgriddiv") -    ("subgridwidth") -    ("subgridcolor" LaTeX-pst-color-list) -    ("subgriddots") -    ;; Plots -    ("plotstyle" ("dots" "line" "polygon" "curve" "ecurve" "ccurve")) -    ("plotpoints") -    ;; Coordinate systems -    ("origin") -    ("swapaxes" LaTeX-pst-boolean-list) -    ;; Line styles -    ("linestyle" ("none" "solid" "dashed" "dotted")) -    ("dash") -    ("dotsep") -    ("border") -    ("bordercolor" LaTeX-pst-color-list) -    ("doubleline" LaTeX-pst-boolean-list) -    ("doublesep") -    ("doublecolor" LaTeX-pst-color-list) -    ("shadow" LaTeX-pst-boolean-list) -    ("shadowsize") -    ("shadowangle") -    ("shadowcolor" LaTeX-pst-color-list) -    ("dimen" ("outer" "inner" "middle")) -    ;; Fill styles -    ("hatchwidth") -    ("hatchsep") -    ("hatchcolor" LaTeX-pst-color-list) -    ("hatchangle") -    ("addfillstyle" LaTeX-pst-fillstyle-list) -    ;; Arrowheads and such -    ("arrowsize") -    ("arrowlength") -    ("arrowwinset") -    ("tbarsize") -    ("bracketlength") -    ("rbracketlength") -    ("arrowscale") -    ;; Parameters -    ("linetype") -    ;; Graphics objects -    ("liftpen") -    ;; Placing and rotating whatever -    ("labelsep") -    ;; Axes -    ("labels" ("all" "x" "y" "none")) -    ("showorigin" LaTeX-pst-boolean-list) -    ("ticks" ("all" "x" "y" "none")) -    ("tickstyle" ("full" "top" "bottom")) -    ("ticksize") -    ("axesstyle" ("axes" "frame" "none")) -    ;; Framed boxes -    ("framesep") -    ("boxsep") -    ("trimode" ("*" "U" "D" "R" "L")) -    ;; Nodes -    ("href") -    ("vref") -    ("radius") -    ;; Node connections -    ("nodesep") -    ("arcangle") -    ("angle") -    ("arm") -    ("loopsize") -    ("ncurv") -    ("boxsize") -    ("offset") -    ;; Node connections labels: I -    ("ref") -    ("nrot") -    ("npos") -    ("shortput" ("none" "nab" "tablr" "tab")) -    ;; Node connection labels: II -    ("tpos") -    ;; Attaching labels to nodes -    ("rot") -    ;; Mathematical diagrams and graphs -    ("mnode" ("R" "r" "C" "f" "p" "circle" "oval" "dia" "tri" "dot" "none")) -    ("emnode" ("R" "r" "C" "f" "p" "circle" "oval" "dia" "tri" "dot" "none")) -    ("name") -    ("nodealign" LaTeX-pst-boolean-list) -    ("mcol" ("l" "r" "c")) -    ("rowsep") -    ("colsep") -    ("mnodesize") -    ;; ... -    ) -  "List of keys and values for PSTricks macro arguments.") - -(defvar LaTeX-pst-parameters-name-list -  LaTeX-pst-basic-parameters-name-list -  "A list of all parameters with completion.") - -(defvar LaTeX-pst-parameters-name-history nil -  "History of parameter names in pstricks.") - -(defvar LaTeX-pst-parameters-completion-regexp -  "\\(arrows\\|linestyle\\|fillstyle\\|color\\|trimode\\|dotstyle\\|\\<style\\)" -  "Regexp for `string-match'ing a parameter.") - -(defvar LaTeX-pst-parameters-boolean-regexp -  "\\(doubleline\\|shadow\\>\\|show[a-zA-Z]+\\)" -  "Regexp for `string-match'ing a parameter.") - -(defun LaTeX-pst-parameter-value (param) -  "See documentation of `LaTeX-package-parameter-value'." -  (LaTeX-package-parameter-value param "pst")) - -(defun LaTeX-pst-parameters-pref-and-chosen (param &optional noskip) -  "See documentation of `LaTeX-package-parameters-pref-and-chosen'." -  (LaTeX-package-parameters-pref-and-chosen param "pst" noskip)) - -;; FIXME: This is likely only a transitional function used until all -;; macros got their calls to `TeX-arg-key-val' with tailored parameter -;; lists. -(defun LaTeX-pst-parameters (optional) -  "Prompt for general parameters of a PSTricks argument." -  (TeX-arg-key-val optional LaTeX-pst-basic-parameters-list)) - -;;; Macros -(defun LaTeX-pst-macro-psarc (_optional &optional _arg) -  "Return \\psarc arguments after querying." -  (let ((arrows (LaTeX-pst-arrows)) -        (pnt (if current-prefix-arg nil (LaTeX-pst-point)))) -    (insert (if arrows (format "{%s}" arrows) "") -            (if pnt (format "(%s)" pnt) "") -            "{" (LaTeX-pst-extdir "Radius") "}{" (LaTeX-pst-angle) "}{" -            (LaTeX-pst-angle) "}"))) - -(defun LaTeX-pst-macro-pscircle (_optional &optional _arg) -  "Return \\pscircle arguments after querying." -  (insert "(" (LaTeX-pst-point) "){" (LaTeX-pst-extdir "Radius") "}")) - -(defun LaTeX-pst-macro-rput (_optional &optional _arg) -  "Return \\rput arguments after querying." -  (let ((refpoint (LaTeX-pst-refpoint)) -        (rotation (if current-prefix-arg (LaTeX-pst-angle) nil))) -    (insert (if refpoint (concat "[" refpoint "]") "") -            (if rotation -                (concat "{" rotation "}") -              "") "(" (LaTeX-pst-point) ")"))) - -(defun LaTeX-pst-macro-uput (_optional &optional _arg) -  "Return \\uput arguments after querying." -  (let ((dist (LaTeX-pst-extdir "Distance")) -        (refpoint (LaTeX-pst-refpoint))) -    (insert (if dist (concat "{" dist "}") "") -            (if refpoint -                (concat "[" (LaTeX-pst-refpoint) "]") -              "[]") -            "{" (LaTeX-pst-angle) "}(" (LaTeX-pst-point) ")"))) - -(defun LaTeX-pst-macro-multirputps (_optional &optional _arg) -  "Return \\multirput or \\multips arguments after querying." -  (let ((refpoint (LaTeX-pst-refpoint)) -        (rotation (if current-prefix-arg (LaTeX-pst-angle) nil)) -        (pnt (LaTeX-pst-point)) -        (dpnt (LaTeX-pst-what "delpoint" "Increment (default 1,1)" "1,1")) -        (repi (LaTeX-pst-input-int "Repetitions" nil))) -    (insert (if refpoint (format "[%s]" refpoint) "") -            (if rotation (format "{%s}" rotation) "") -            "(" pnt ")(" dpnt "){" repi "}"))) - -(defun LaTeX-pst-macro-psline (_optional &optional _arg) -  "Return \\psline or \\ps[ce]?curve[*] arguments after querying." -  (let ((arrows (LaTeX-pst-arrows)) -        (pnt1 (LaTeX-pst-point)) -        (pnt2 (LaTeX-pst-point))) -    (insert (if arrows (format "{%s}" arrows) "") "(" pnt1 ")" ) -    (while (and (not (string= pnt2 "")) (not (string= pnt1 pnt2))) -      (insert "(" pnt2 ")") -      (setq pnt1 pnt2) -      (setq pnt2 (LaTeX-pst-point))))) - -(defun LaTeX-pst-macro-psdots (_optional single) -  "Return \\psdot[s]? arguments after querying." -  (let* ((pnt1 (LaTeX-pst-point)) -         (pnt2 (if single pnt1 (LaTeX-pst-point)))) -    (insert "(" pnt1 ")") -    (while (and (not (string= pnt2 "")) (not (string= pnt1 pnt2))) -      (setq pnt1 pnt2) -      (insert "(" pnt1 ")") -      (setq pnt2 (LaTeX-pst-point))))) - -(defun LaTeX-pst-macro-parabola (_optional &optional _arg) -  "Return \\parabola arguments after querying." -  (let ((arrows (LaTeX-pst-arrows))) -    (insert (if arrows (format "{%s}" arrows) "") -            "(" (LaTeX-pst-point) ")(" (LaTeX-pst-point) ")"))) - -(defun LaTeX-pst-macro-pnt-twolen (_optional prompt1 prompt2) -  "Return point and 2 paired lengths in separate parens as arguments." -  ;; insert \psellipse[*]?, \psdiamond or \pstriangle  arguments -  (let ((pnt (if current-prefix-arg nil (LaTeX-pst-point)))) -    (insert (if pnt (format "(%s)" pnt) "") -            "(" (LaTeX-pst-extdir prompt1) "," -            (LaTeX-pst-extdir prompt2) ")"))) - -(defun LaTeX-pst-macro-psbezier (_optional &optional _arg) -  "Return \\psbezier arguments after querying." -  (let ((arrows (LaTeX-pst-arrows)) -        (pnt1 (LaTeX-pst-point)) -        (pnt2 (LaTeX-pst-point)) -        (pnt3 (LaTeX-pst-point))) -    (insert (if arrows (format "{%s}" arrows) "") -            "(" pnt1 ")(" pnt2 ")") -    (while (not (string= pnt2 pnt3)) -      (insert "(" pnt3 ")") -      (setq pnt2 pnt3) -      (setq pnt3 (LaTeX-pst-point))))) - -(defun LaTeX-pst-macro-pspolygon (_optional &optional _arg) -  "Return \\pspolygon arguments after querying." -  (let ((pnt1 (LaTeX-pst-point)) -        (pnt2 (LaTeX-pst-point)) -        (pnt3 (LaTeX-pst-point))) -    (insert "(" pnt1 ")(" pnt2 ")") -    (while (not (string= pnt2 pnt3)) -      (insert "(" pnt3 ")") -      (setq pnt2 pnt3) -      (setq pnt3 (LaTeX-pst-point))))) - -(defun LaTeX-pst-macro-psframe (_optional &optional _arg) -  "Return \\psframe arguments after querying." -  (let ((pnt1 (if current-prefix-arg nil (LaTeX-pst-point))) -        (pnt2 (LaTeX-pst-point))) -    (insert (if pnt1 (format "(%s)" pnt1) "") "(" pnt2 ")"))) - -(defun LaTeX-pst-macro-psgrid (_optional &optional _arg) -  "Return \\psgrid arguments after querying." -  (let* ((cpref (if current-prefix-arg (car current-prefix-arg) 0)) -         (pnt1 (if (> cpref 4) (LaTeX-pst-point) nil)) -         (pnt2 (if (> cpref 0) (LaTeX-pst-point) nil)) -         (pnt3 (if (> cpref 0) (LaTeX-pst-point) nil))) -    (insert (if pnt1 (format "(%s)" pnt1) "") -            (if pnt2 (format "(%s)(%s)" pnt2 pnt3) "")))) - -(defun LaTeX-pst-macro-newpsobject (&optional _arg) -  "Return \\newpsobject arguments after querying." -  (insert "{" (TeX-read-string "New PSObject Name: ") "}" -          ;; FIXME: It would be better to use something more confined -          ;; than `TeX-symbol-list'. -          "{" (completing-read "Parent Object: " (TeX-symbol-list)) -          "}")) - -;;; Environments -(defun LaTeX-pst-env-pspicture (env) -  "Create new pspicure environment." -  (let ((opt (multi-prompt-key-value -              (TeX-argument-prompt t "Options" nil) -              '(("showgrid") ("shift")))) -        (p0 (LaTeX-pst-what "point" "Lower left (default 0,0)" "0,0")) -        (p1 (LaTeX-pst-what "point" "Upper right (default 1,1)" "1,1")) -        corn) -    (setq corn (concat (unless (string= "" opt) (format "[%s]" opt)) -                       (if (string= "0,0" p0) "" (format "(%s)" p0)) -                       "(" p1 ")")) -    (LaTeX-insert-environment env corn))) - -;;; Self Parsing --  see (info "(auctex)Hacking the Parser") -(defvar LaTeX-auto-pstricks-regexp-list -  '(("\\\\newps\\(object\\){\\([a-zA-Z]+\\)}{\\([a-zA-Z]+\\)}" (1 2 3) -     LaTeX-auto-pstricks) -    ("\\\\newps\\(fontdot\\){\\([a-zA-Z]+\\)}" (1 2) -     LaTeX-auto-pstricks) -    ("\\\\newps\\(style\\){\\([a-zA-Z]+\\)}" (1 2) -     LaTeX-auto-pstricks) -    ("\\\\define\\(color\\){\\([a-zA-Z]+\\)}{\\(rgb\\|cmyk\\)}" (1 2 3) -     LaTeX-auto-pstricks) -    ("\\\\new\\(rgb\\|hsb\\|cmyk\\)\\(color\\){\\([a-zA-Z]+\\)}" (2 3 1) -     LaTeX-auto-pstricks)) -  "List of regular expressions to extract arguments of \\newps* macros.") - -(defvar LaTeX-auto-pstricks nil -  "Temporary for parsing \\newps* definitions.") - -(defun LaTeX-pst-cleanup () -  "Move symbols from `LaTeX-auto-pstricks' to `TeX-auto-symbol'." -  (mapcar -   (lambda (list) -     (let ((type (car list))) -       (cond ((string= type "object") -              (setq TeX-auto-symbol -                    (cons (list (nth 1 list) -                                (cl-caddr (assoc (nth 2 list) -                                                 (TeX-symbol-list)))) -                          TeX-auto-symbol))) -             ((string= type "fontdot") -              (add-to-list 'LaTeX-pst-dotstyle-list (nth 1 list) t)) -             ((string= type "style") -              (add-to-list 'LaTeX-pst-style-list (nth 1 list) t)) -             ((string= type "color") -              (add-to-list 'LaTeX-pst-color-list (nth 1 list) t) -              ;; FIXME: Why is an entry with "-" in front added? -              (add-to-list 'LaTeX-pst-color-list -                           (concat "-" (nth 1 list)) t))))) -   LaTeX-auto-pstricks)) - -(defun LaTeX-pst-prepare () -  "Clear `LaTeX-auto-pstricks' before use." -  (setq LaTeX-auto-pstricks nil)) - -(add-hook 'TeX-auto-prepare-hook #'LaTeX-pst-prepare t) -(add-hook 'TeX-auto-cleanup-hook #'LaTeX-pst-cleanup ) -(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) - -;;; Additional Functionality -(defun LaTeX-pst-parameters-add (&optional arg) -  "With ARG as prefix-argument insert new parameter\(s\) behind -nearest backward LaTeX macro in brackets. Without ARG add -parameter\(s\) to the already existing ones at the end of the -comma separated list. Point has to be within the sexp to modify." -  (interactive "P") -  (let ((newpara  (LaTeX-pst-parameters-pref-and-chosen nil t)) -        (regexp "\\(") end check) -    (if arg -        (progn -          (re-search-backward "\\\\\\([a-zA-Z]\\)") -          (forward-word 1) -          (insert-pair nil ?\[ ?\])) -      (up-list 1) -      (backward-char 1) -      (save-excursion -        (setq end (point)) -        (up-list -1) -        (while (re-search-forward "\\([a-zA-Z]+\\)=" end 'limit) -          (setq regexp (concat regexp -                               (match-string-no-properties 1) "\\|"))) -        (setq regexp (concat (substring regexp 0 -1) ")")) -        (setq check (string-match regexp newpara)))) -    (when newpara -      (insert (if arg "" ",") newpara) -      (when check -        (message -         "At least one Parameters appears twice. PLEASE CHECK!"))))) -;; FIXME: Only define a key for this once it is a general-purpose -;; facility, i.e. not just for pstricks but all types of macros. -;; (define-key LaTeX-mode-map "\C-c\C-x\C-a" 'LaTeX-pst-parameters-add) - -(defvar LaTeX-pst-value-regexp -  "\\([-!.a-zA-Z0-9]*\\s\\?[-!.a-zA-Z0-9]+\\)" -  "Expression matching a parameter value.") - -(defun LaTeX-pst-parameter-remove-value () -  "Remove value of current parameter and return parameter name." -  (re-search-backward -   (concat "\\(\\s(\\|,\\)[a-zA-Z]+\\([a-zA-Z]\\|=\\|=" -           LaTeX-pst-value-regexp "\\)")) -  (re-search-forward "\\([a-zA-Z]+\\)=") -  (let ((para (match-string-no-properties 1))) -    (re-search-forward LaTeX-pst-value-regexp) -    (delete-region (match-beginning 1) (match-end 1)) -    para)) - -(defun LaTeX-pst-parameter-change-value () -  "Replace parameter value with a new one." -  (interactive) -  (let* ((para (LaTeX-pst-parameter-remove-value)) -         (symb -          (when (and -                 (string-match -                  LaTeX-pst-parameters-completion-regexp para) -                 (boundp -                  (intern -                   (concat "LaTeX-pst-" (match-string 0 para) "-list")))) -            (intern (concat "LaTeX-pst-" (match-string 0 para) -                            "-list"))))) -    (insert (TeX-arg-compl-list (symbol-value symb) "New Value" -                                'LaTeX-pst-parameters-value-history)))) -;; FIXME: Only define a key for this once it is a general-purpose -;; facility, i.e. not just for pstricks but all types of macros.  (See -;; also `LaTeX-pst-parameters-add'.  Note that a parameter change -;; should better be made available through a `C-u' prefix of the -;; binding for the function doing the parameter addition.) -;; (define-key LaTeX-mode-map "\C-c\C-x\C-v" 'LaTeX-pst-parameter-change-value) - -(TeX-add-style-hook - "pstricks" - (lambda () -   (unless (or (member "pst-pdf" TeX-active-styles) -               (eq TeX-engine 'xetex)) -     ;; Leave at user's choice whether to disable `TeX-PDF-mode' or -     ;; not.  Instead set up `TeX-PDF-from-DVI' option so that AUCTeX -     ;; takes dvips+ps2pdf route when `TeX-PDF-mode' is enabled. -     ;; (TeX-PDF-mode-off) -     (setq TeX-PDF-from-DVI "Dvips")) -   (mapc #'TeX-auto-add-regexp LaTeX-auto-pstricks-regexp-list) -   (LaTeX-add-environments -    '("pspicture" LaTeX-pst-env-pspicture) -    "overlaybox" "psclip") -   (TeX-add-symbols -    '("AltClipMode" 0) '("DontKillGlue" 0) '("KillGlue" 0) -    '("NormalCoor" 0) '("SpecialCoor" 0) '("PSTricksLoaded" 0) -    '("PSTricksOff" 0) '("altcolormode" 0) '("pslinecolor" 0) -    '("pslinestyle" 0) '("pslinetype" 0) '("pslinewidth" 0) -    '("pslabelsep" 0) '("radian" 0) '("psunit" 0) '("psrunit" 0) -    '("psxunit" 0) '("psyunit" 0) -    '("arrows" (TeX-arg-eval LaTeX-pst-arrows)) -    '("clipbox" ["Border"] t) -    '("closedshadow" [LaTeX-pst-parameters]) -    '("openshadow" [LaTeX-pst-parameters]) -    "closepath" "code" "coor" "curveto" "degrees" "dim" "endpsclip" -    "file" "fill" "grestore" "gsave" "lineto" "movepath" "moveto" -    "mrestore" "msave" "newpath" "rcoor" "rcurveto" "rlineto" "rotate" -    "scale" "stroke" "swapaxes" "translate" -    '("newcmykcolor" "Name" "Quadruple") -    '("newrgbcolor" "Name" "Triple") '("newhsbcolor" "Name" "Triple") -    '("newgray" "Name" "Value") -    '("newpsobject" LaTeX-pst-macro-newpsobject LaTeX-pst-parameters) -    '("newpsstyle" "New PSStyle Name" LaTeX-pst-parameters) -    '("newpsfontdot" "New PSDot Name" ["Factors"] -      "Fontname" "Character Number (Hex)") -    '("parabola" [LaTeX-pst-parameters] LaTeX-pst-macro-parabola) -    '("parabola*" [LaTeX-pst-parameters] LaTeX-pst-macro-parabola) -    '("psarc" [LaTeX-pst-parameters] LaTeX-pst-macro-psarc) -    '("psarc*" [LaTeX-pst-parameters] LaTeX-pst-macro-psarc) -    '("psarcn" [LaTeX-pst-parameters] LaTeX-pst-macro-psarc) -    '("pswedge" [LaTeX-pst-parameters] LaTeX-pst-macro-psarc) -    '("psbezier" [LaTeX-pst-parameters] LaTeX-pst-macro-psbezier) -    '("psbezier*" [LaTeX-pst-parameters] LaTeX-pst-macro-psbezier) -    '("pscbezier" [LaTeX-pst-parameters] LaTeX-pst-macro-pspolygon) -    '("pscircle" [LaTeX-pst-parameters] LaTeX-pst-macro-pscircle) -    '("psccurve" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("psccurve*" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("pscurve" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("pscurve*" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("pscustom" [LaTeX-pst-parameters]) -    '("psdiamond" [LaTeX-pst-parameters] -      (LaTeX-pst-macro-pnt-twolen "Width" "Height")) -    '("pstriangle" [LaTeX-pst-parameters] -      (LaTeX-pst-macro-pnt-twolen "Width" "Height")) -    '("psdot" [LaTeX-pst-parameters] (LaTeX-pst-macro-psdots t)) -    '("psdots" [LaTeX-pst-parameters] (LaTeX-pst-macro-psdots nil)) -    '("psecurve" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("psecurve*" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("psellipse" [LaTeX-pst-parameters] -      (LaTeX-pst-macro-pnt-twolen "Radius x" "Radius y")) -    '("psellipse*" [LaTeX-pst-parameters] -      (LaTeX-pst-macro-pnt-twolen "Radius x" "Radius y")) -    '("psframe" [LaTeX-pst-parameters] LaTeX-pst-macro-psframe) -    '("psframe*" [LaTeX-pst-parameters] LaTeX-pst-macro-psframe) -    '("psframebox" [LaTeX-pst-parameters] t) -    '("pscirclebox" [LaTeX-pst-parameters] t) -    '("psdblframebox" [LaTeX-pst-parameters] t) -    '("psdiabox" [LaTeX-pst-parameters] t) -    '("psovalbox" [LaTeX-pst-parameters] t) -    '("psshadowbox" [LaTeX-pst-parameters] t) -    '("pstribox" [LaTeX-pst-parameters] t) -    '("psscalebox" "Scaling Factor(s)" t) -    '("psscaleboxto" LaTeX-pst-point-in-parens t) -    '("psgrid" [LaTeX-pst-parameters] LaTeX-pst-macro-psgrid 0) -    '("psline" [LaTeX-pst-parameters] LaTeX-pst-macro-psline) -    '("psoverlay" t) -    '("pspolygon" [LaTeX-pst-parameters] LaTeX-pst-macro-pspolygon) -    '("pspolygon*" [LaTeX-pst-parameters] LaTeX-pst-macro-pspolygon) -    '("psset" LaTeX-pst-parameters) -    '("pssetlength" TeX-arg-macro "Length") -    '("psaddtolength" TeX-arg-macro "Length") -    '("degrees" ["Full Circle"]) -    '("qdisk" LaTeX-pst-point-in-parens "Radius") -    '("qline" LaTeX-pst-point-in-parens LaTeX-pst-point-in-parens) -    "pslongbox" "psrotatedown" "psrotateleft" "psrotateright" -    '("rput" LaTeX-pst-macro-rput t) -    '("rput*" LaTeX-pst-macro-rput t) -    '("cput" [LaTeX-pst-parameters] -      (TeX-arg-eval LaTeX-pst-angle) LaTeX-pst-point-in-parens t) -    '("uput" LaTeX-pst-macro-uput t) -    '("multirput" (LaTeX-pst-macro-multirputps t) t) -    '("multips" (LaTeX-pst-macro-multirputps nil) t))) - TeX-dialect) - -(defvar LaTeX-pstricks-package-options -  '("97" "plain" "DIA" "vtex" "distiller" "noxcolor") -  "Package options for pstricks.") - -;;; pstricks.el ends here  | 
