diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/graphicx.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/graphicx.el | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/graphicx.el b/elpa/auctex-13.1.3/style/graphicx.el new file mode 100644 index 0000000..0e1e220 --- /dev/null +++ b/elpa/auctex-13.1.3/style/graphicx.el @@ -0,0 +1,332 @@ +;;; graphicx.el --- AUCTeX style file for graphicx.sty -*- lexical-binding: t; -*- + +;; Copyright (C) 2000, 2004, 2005, 2014--2021 by Free Software Foundation, Inc. + +;; Author: Ryuichi Arafune <arafune@debian.org> +;; Created: 1999/3/20 +;; Keywords: tex + +;; This file 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. + +;; This file 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 GNU Emacs; 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 package supports the includegraphics macro in graphicx style. + +;; Acknowledgements +;; Dr. Thomas Baumann <thomas.baumann@ch.tum.de> +;; David Kastrup <David.Kastrup@t-online.de> +;; Masayuki Ataka <masayuki.ataka@gmail.com> + +;;; Code: + +(require 'crm) +(require 'tex) +(require 'latex) + +;; Silence the compiler: +(declare-function font-latex-add-keywords + "font-latex" + (keywords class)) + +(defvar LaTeX-graphicx-key-val-options + '(("bb") + ("bbllx") + ("bblly") + ("bburx") + ("bbury") + ("natheight") + ("natwidth") + ("viewport") + ("trim") + ("hiresbb" ("true" "false")) + ("angle") + ("origin") + ("width" ("\\textwidth" "\\columnwidth" "\\linewidth")) + ("height" ("\\textheight")) + ("totalheight" ("\\textheight")) + ("keepaspectratio" ("true" "false")) + ("scale") + ("clip" ("true" "false")) + ("draft" ("true" "false")) + ("quiet") + ("interpolate" ("true" "false")) + ("alt")) + "Key=value options for graphicx macros.") + +(defvar LaTeX-includegraphics-dvips-extensions + '("eps" "mps" "EPS") + "List of extensions for image files supported by \"dvips\".") + +(defvar LaTeX-includegraphics-pdftex-extensions + '("png" "pdf" "jpe?g" "jbig2" "jb2" "mps" + "PNG" "PDF" "JPE?G" "JBIG2" "JB2") + "List of extensions for image files supported by \"pdftex\" and \"luatex\".") + +(defvar LaTeX-includegraphics-xetex-extensions + '("pdf" "eps" "mps" "ps" "png" "jpe?g" "jp2" "jpf" + "PDF" "EPS" "MPS" "PS" "PNG" "JPE?G" "JP2" "JPF" + "bmp" "pict" "psd" "mac" "tga" "gif" "tif" "tiff" + "BMP" "PICT" "PSD" "MAC" "TGA" "GIF" "TIF" "TIFF") + "List of extensions for image files supported by \"xetex\".") + +(defun LaTeX-arg-graphicx-includegraphics-key-val (optional) + "Insert key-val for optional argument of \\includegraphics macro. +If OPTIONAL is non-nil, insert argument in square brackets. +Temporarily remove \"space\" from `crm-local-completion-map' and +`minibuffer-local-completion-map' in order to be able to insert +spaces conveniently. + +If `TeX-engine' is set to symbol 'default (while +`TeX-PDF-from-DVI' is set to nil) or 'luatex and `TeX-PDF-mode' +is non-nil, add the keys \"page\" and \"pagebox\" to list of +key-val's." + (let ((crm-local-completion-map + (remove (assoc 32 crm-local-completion-map) + crm-local-completion-map)) + (minibuffer-local-completion-map + (remove (assoc 32 minibuffer-local-completion-map) + minibuffer-local-completion-map))) + (TeX-argument-insert + (TeX-read-key-val optional + (if (and (or (and (eq TeX-engine 'default) + (not (TeX-PDF-from-DVI))) + (eq TeX-engine 'luatex) + ;; dvipdfmx can handle page and + ;; pagebox options. + (string= (TeX-PDF-from-DVI) "Dvipdfmx")) + TeX-PDF-mode) + (append '(("page") + ("pagebox" ("mediabox" + "cropbox" + "bleedbox" + "trimbox" + "artbox"))) + LaTeX-graphicx-key-val-options) + LaTeX-graphicx-key-val-options)) + optional))) + +(defun LaTeX-includegraphics-extensions-list () + "Return appropriate extensions for input files to \\includegraphics. +Return value is a list of regexps." + (let ((temp (copy-sequence LaTeX-includegraphics-extensions))) + (cond (;; 'default TeX-engine: + (eq TeX-engine 'default) + (if ;; we want to produce a pdf + (if TeX-PDF-mode + ;; Return t if default compiler produces PDF, + ;; nil for "Dvips" or "Dvipdfmx" + (not (TeX-PDF-from-DVI)) + ;; t if pdftex is used in dvi-mode + TeX-DVI-via-PDFTeX) + ;; We're using pdflatex in pdf-mode + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-pdftex-extensions + temp)) + ;; We're generating a .dvi to process with dvips or dvipdfmx + (progn + ;; dvipdfmx can handle jpeg, pdf and png for image formats. + (unless (and TeX-PDF-mode + (string= (TeX-PDF-from-DVI) "Dvipdfmx")) + (dolist (x '("jpe?g" "pdf" "png")) + (setq temp (delete x temp)))) + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-dvips-extensions + temp))))) + ;; Running luatex in pdf or dvi-mode: + ((eq TeX-engine 'luatex) + (if TeX-PDF-mode + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-pdftex-extensions + temp)) + (progn + (dolist (x '("jpe?g" "pdf" "png")) + (setq temp (delete x temp))) + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-dvips-extensions + temp))))) + ;; Running xetex in any mode: + ((eq TeX-engine 'xetex) + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-xetex-extensions + temp))) + ;; For anything else + (t + (if (and TeX-PDF-mode + (string= (TeX-PDF-from-DVI) "Dvipdfmx")) + ;; dvipdfmx can handle the same image formats as dvips. + (TeX-delete-duplicate-strings + (append LaTeX-includegraphics-dvips-extensions + temp)) + temp))))) + +(defun LaTeX-includegraphics-extensions (&optional list) + "Return appropriate extensions for input files to \\includegraphics. +Return value is a single regexp. +Optional argument LIST if non-nil is used as list of regexps of +extensions to be matched." + (unless list + (setq list (LaTeX-includegraphics-extensions-list))) + (concat "\\." (mapconcat #'identity list "\\'\\|\\.") "\\'")) + +(defvar LaTeX-includegraphics-global-files nil + "List of the non-local graphic files to include in LaTeX documents. +Initialized once at the first time you prompt for an input file. +May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.") + +;; Add the variable to `TeX-normal-mode-reset-list': +(add-to-list 'TeX-normal-mode-reset-list 'LaTeX-includegraphics-global-files) + +(defun LaTeX-includegraphics-read-file-TeX () + "Read image file for \\includegraphics. +Offers all graphic files found in the TeX search path. See +`LaTeX-includegraphics-read-file' for more." + (let ((LaTeX-includegraphics-extensions + (LaTeX-includegraphics-extensions-list))) + (unless LaTeX-includegraphics-global-files + (message "Searching for graphic files...") + (setq LaTeX-includegraphics-global-files + (TeX-search-files-by-type + 'graphics 'global t + LaTeX-includegraphics-strip-extension-flag)) + (message "Searching for graphic files...done")) + (completing-read + "Image file: " + (append + (TeX-search-files-by-type 'graphics 'local t + LaTeX-includegraphics-strip-extension-flag) + LaTeX-includegraphics-global-files) + nil nil nil))) + +(defun LaTeX-includegraphics-read-file-relative () + "Read image file for \\includegraphics. + +Lists all graphic files in the master directory and its +subdirectories and inserts the relative file name. See +`LaTeX-includegraphics-read-file' for more." + (file-relative-name + (read-file-name + "Image file: " nil nil nil nil + (lambda (fname) + (or (file-directory-p fname) + (string-match (LaTeX-includegraphics-extensions) fname)))) + (TeX-master-directory))) + +(defun LaTeX-arg-includegraphics (optional) + "Ask for mandantory argument for the \\includegraphics command." + (let ((image-file (funcall LaTeX-includegraphics-read-file))) + (TeX-argument-insert + (if LaTeX-includegraphics-strip-extension-flag + (replace-regexp-in-string (LaTeX-includegraphics-extensions) + "" + image-file) + image-file) + optional))) + +(TeX-add-style-hook + "graphicx" + (lambda () + (TeX-add-symbols + '("reflectbox" "Argument") + + '("resizebox" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Width") + (append '("\\width" "!") + (mapcar + (lambda (x) (concat TeX-esc (car x))) + (LaTeX-length-list)))) + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Height") + (append '("\\height" "\\totalheight" "\\depth" "!") + (mapcar + (lambda (x) (concat TeX-esc (car x))) + (LaTeX-length-list)))) + "Argument") + + '("resizebox*" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Width") + (append '("\\width" "!") + (mapcar + (lambda (x) (concat TeX-esc (car x))) + (LaTeX-length-list)))) + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Height") + (append '("\\height" "\\totalheight" "\\depth" "!") + (mapcar + (lambda (x) (concat TeX-esc (car x))) + (LaTeX-length-list)))) + "Argument") + + '("rotatebox" (TeX-arg-conditional (member "graphics" (TeX-style-list)) + () + ([ TeX-arg-key-val (("x") ("y") ("origin") ("units")) ])) + "Angle" "Argument") + + '("scalebox" "Horizontal scale" [ "Vertical scale" ] "Argument") + + '("includegraphics" (TeX-arg-conditional (member "graphics" (TeX-style-list)) + (["llx,lly"] ["urx,ury"]) + ([ LaTeX-arg-graphicx-includegraphics-key-val ])) + LaTeX-arg-includegraphics) + + '("includegraphics*" (TeX-arg-conditional (member "graphics" (TeX-style-list)) + (["llx,lly"] ["urx,ury"]) + ([ LaTeX-arg-graphicx-includegraphics-key-val ])) + LaTeX-arg-includegraphics) + + '("graphicspath" t) + + '("DeclareGraphicsExtensions" t) + + '("DeclareGraphicsRule" 4)) + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("reflectbox" "{") + ("resizebox" "*{{{") + ("rotatebox" "[{{") + ("scalebox" "{[{")) + 'textual) + (font-latex-add-keywords '(("includegraphics" "*[[{")) + 'reference) + (font-latex-add-keywords '(("graphicspath" "{") + ("DeclareGraphicsExtensions" "{") + ("DeclareGraphicsRule" "{{{{")) + 'function)) + + ;; Option management + (if (and (LaTeX-provided-package-options-member "graphicx" "dvipdfmx") + (not (eq TeX-engine 'xetex))) + (setq TeX-PDF-from-DVI "Dvipdfmx"))) + TeX-dialect) + +(defvar LaTeX-graphicx-package-options + '("draft" "final" "debugshow" + "hiderotate" "hidescale" "hiresbb" + "setpagesize" "nosetpagesize" "demo" + "dvips" "xdvi" + "dvipdf" "dvipdfm" "dvipdfmx" + "xetex" "pdftex" "luatex" + "dvisvgm" "dvipsone" "dviwindo" + "emtex" "dviwin" "oztex" + "textures" "pctexps" "pctexwin" + "pctexhp" "pctex32" "truetex" + "tcidvi" "vtex") + "Package options for the graphicx package.") + +;;; graphicx.el ends here |