auctex-11.87/0000755000000000000000000000000012056205161011517 5ustar rootrootauctex-11.87/install-sh0000755000000000000000000001272610251674353013543 0ustar rootroot: # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 auctex-11.87/latex.el0000644000000000000000000063557612054744545013220 0ustar rootroot;;; latex.el --- Support for LaTeX documents. ;; Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2003, ;; 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software ;; Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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 provides AUCTeX support for LaTeX. ;;; Code: (require 'tex) (require 'tex-style) ;;; Syntax (defvar LaTeX-optop "[" "The LaTeX optional argument opening character.") (defvar LaTeX-optcl "]" "The LaTeX optional argument closeing character.") ;;; Style (defcustom LaTeX-default-style "article" "*Default when creating new documents." :group 'LaTeX-environment :type 'string) (defcustom LaTeX-default-options nil "Default options to documentstyle. A list of strings." :group 'LaTeX-environment :type '(repeat (string :format "%v"))) (make-variable-buffer-local 'LaTeX-default-options) (defcustom LaTeX-insert-into-comments t "*Whether insertion commands stay in comments. This allows using the insertion commands even when the lines are outcommented, like in dtx files." :group 'LaTeX-environment :type 'boolean) (defun LaTeX-newline () "Start a new line potentially staying within comments. This depends on `LaTeX-insert-into-comments'." (if LaTeX-insert-into-comments (cond ((and (save-excursion (skip-chars-backward " \t") (bolp)) (save-excursion (skip-chars-forward " \t") (looking-at (concat TeX-comment-start-regexp "+")))) (beginning-of-line) (insert (buffer-substring-no-properties (line-beginning-position) (match-end 0))) (newline)) ((and (not (bolp)) (save-excursion (skip-chars-forward " \t") (not (TeX-escaped-p))) (looking-at (concat "[ \t]*" TeX-comment-start-regexp "+[ \t]*"))) (delete-region (match-beginning 0) (match-end 0)) (indent-new-comment-line)) (t (indent-new-comment-line))) (newline))) ;;; Syntax Table (defvar LaTeX-mode-syntax-table (copy-syntax-table TeX-mode-syntax-table) "Syntax table used in LaTeX mode.") (progn ; set [] to match for LaTeX. (modify-syntax-entry (string-to-char LaTeX-optop) (concat "(" LaTeX-optcl) LaTeX-mode-syntax-table) (modify-syntax-entry (string-to-char LaTeX-optcl) (concat ")" LaTeX-optop) LaTeX-mode-syntax-table)) ;;; Sections (defun LaTeX-section (arg) "Insert a template for a LaTeX section. Determine the type of section to be inserted, by the argument ARG. If ARG is nil or missing, use the current level. If ARG is a list (selected by \\[universal-argument]), go downward one level. If ARG is negative, go up that many levels. If ARG is positive or zero, use absolute level: 0 : part 1 : chapter 2 : section 3 : subsection 4 : subsubsection 5 : paragraph 6 : subparagraph The following variables can be set to customize: `LaTeX-section-hook' Hooks to run when inserting a section. `LaTeX-section-label' Prefix to all section labels." (interactive "*P") (let* ((val (prefix-numeric-value arg)) (level (cond ((null arg) (LaTeX-current-section)) ((listp arg) (LaTeX-down-section)) ((< val 0) (LaTeX-up-section (- val))) (t val))) (name (LaTeX-section-name level)) (toc nil) (title (if (TeX-active-mark) (buffer-substring (region-beginning) (region-end)) "")) (done-mark (make-marker))) (run-hooks 'LaTeX-section-hook) (LaTeX-newline) (if (marker-position done-mark) (goto-char (marker-position done-mark))) (set-marker done-mark nil))) (defun LaTeX-current-section () "Return the level of the section that contain point. See also `LaTeX-section' for description of levels." (save-excursion (max (LaTeX-largest-level) (if (re-search-backward (LaTeX-outline-regexp) nil t) (- (LaTeX-outline-level) (LaTeX-outline-offset)) (LaTeX-largest-level))))) (defun LaTeX-down-section () "Return the value of a section one level under the current. Tries to find what kind of section that have been used earlier in the text, if this fail, it will just return one less than the current section." (save-excursion (let ((current (LaTeX-current-section)) (next nil) (regexp (LaTeX-outline-regexp))) (if (not (re-search-backward regexp nil t)) (1+ current) (while (not next) (cond ((eq (LaTeX-current-section) current) (if (re-search-forward regexp nil t) (if (<= (setq next (LaTeX-current-section)) current) ;Wow! (setq next (1+ current))) (setq next (1+ current)))) ((not (re-search-backward regexp nil t)) (setq next (1+ current))))) next)))) (defun LaTeX-up-section (arg) "Return the value of the section ARG levels above this one." (save-excursion (if (zerop arg) (LaTeX-current-section) (let ((current (LaTeX-current-section))) (while (and (>= (LaTeX-current-section) current) (re-search-backward (LaTeX-outline-regexp) nil t))) (LaTeX-up-section (1- arg)))))) (defvar LaTeX-section-list '(("part" 0) ("chapter" 1) ("section" 2) ("subsection" 3) ("subsubsection" 4) ("paragraph" 5) ("subparagraph" 6)) "List which elements is the names of the sections used by LaTeX.") (defun LaTeX-section-list-add-locally (sections &optional clean) "Add SECTIONS to `LaTeX-section-list'. SECTIONS can be a single list containing the section macro name as a string and the the level as an integer or a list of such lists. If optional argument CLEAN is non-nil, remove any existing entries from `LaTeX-section-list' before adding the new ones. The function will make `LaTeX-section-list' buffer-local and invalidate the section submenu in order to let the menu filter regenerate it. It is mainly a convenience function which can be used in style files." (when (stringp (car sections)) (setq sections (list sections))) (make-local-variable 'LaTeX-section-list) (when clean (setq LaTeX-section-list nil)) (dolist (elt sections) (add-to-list 'LaTeX-section-list elt t)) (setq LaTeX-section-list (sort (copy-sequence LaTeX-section-list) (lambda (a b) (< (nth 1 a) (nth 1 b))))) (setq LaTeX-section-menu nil)) (defun LaTeX-section-name (level) "Return the name of the section corresponding to LEVEL." (let ((entry (TeX-member level LaTeX-section-list (lambda (a b) (equal a (nth 1 b)))))) (if entry (nth 0 entry) nil))) (defun LaTeX-section-level (name) "Return the level of the section NAME." (let ((entry (TeX-member name LaTeX-section-list (lambda (a b) (equal a (nth 0 b)))))) (if entry (nth 1 entry) nil))) (defcustom TeX-outline-extra nil "List of extra TeX outline levels. Each element is a list with two entries. The first entry is the regular expression matching a header, and the second is the level of the header. See `LaTeX-section-list' for existing header levels." :group 'LaTeX :type '(repeat (group (regexp :tag "Match") (integer :tag "Level")))) (defun LaTeX-outline-regexp (&optional anywhere) "Return regexp for LaTeX sections. If optional argument ANYWHERE is not nil, do not require that the header is at the start of a line." (concat (if anywhere "" "^") "[ \t]*" (regexp-quote TeX-esc) "\\(appendix\\|documentstyle\\|documentclass\\|" (mapconcat 'car LaTeX-section-list "\\|") "\\)\\b" (if TeX-outline-extra "\\|" "") (mapconcat 'car TeX-outline-extra "\\|") "\\|" TeX-header-end "\\|" TeX-trailer-start)) (defvar LaTeX-largest-level nil "Largest sectioning level with current document class.") (make-variable-buffer-local 'LaTeX-largest-level) (defun LaTeX-largest-level () "Return largest sectioning level with current document class. Run style hooks before it has not been done." (TeX-update-style) LaTeX-largest-level) (defun LaTeX-largest-level-set (section) "Set `LaTeX-largest-level' to the level of SECTION. SECTION has to be a string contained in `LaTeX-section-list'. Additionally the function will invalidate the section submenu in order to let the menu filter regenerate it." (setq LaTeX-largest-level (LaTeX-section-level section)) (setq LaTeX-section-menu nil)) (defun LaTeX-outline-offset () "Offset to add to `LaTeX-section-list' levels to get outline level." (- 2 (LaTeX-largest-level))) (defun TeX-look-at (list) "Check if we are looking at the first element of a member of LIST. If so, return the second element, otherwise return nil." (while (and list (not (looking-at (nth 0 (car list))))) (setq list (cdr list))) (if list (nth 1 (car list)) nil)) (defun LaTeX-outline-level () "Find the level of current outline heading in an LaTeX document." (cond ((looking-at LaTeX-header-end) 1) ((looking-at LaTeX-trailer-start) 1) ((TeX-look-at TeX-outline-extra) (max 1 (+ (TeX-look-at TeX-outline-extra) (LaTeX-outline-offset)))) (t (save-excursion (skip-chars-forward " \t") (forward-char 1) (cond ((looking-at "appendix") 1) ((looking-at "documentstyle") 1) ((looking-at "documentclass") 1) ((TeX-look-at LaTeX-section-list) (max 1 (+ (TeX-look-at LaTeX-section-list) (LaTeX-outline-offset)))) (t (error "Unrecognized header"))))))) (defun LaTeX-outline-name () "Guess a name for the current header line." (save-excursion (if (re-search-forward "{\\([^\}]*\\)}" (+ (point) fill-column 10) t) (match-string 1) (buffer-substring (point) (min (point-max) (+ 20 (point))))))) (add-hook 'TeX-remove-style-hook (lambda () (setq LaTeX-largest-level nil))) (defcustom LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title ;; LaTeX-section-toc ; Most people won't want this LaTeX-section-section LaTeX-section-label) "List of hooks to run when a new section is inserted. The following variables are set before the hooks are run level - numeric section level, see the documentation of `LaTeX-section'. name - name of the sectioning command, derived from `level'. title - The title of the section, default to an empty string. toc - Entry for the table of contents list, default nil. done-mark - Position of point afterwards, default nil (meaning end). The following standard hook exist - LaTeX-section-heading: Query the user about the name of the sectioning command. Modifies `level' and `name'. LaTeX-section-title: Query the user about the title of the section. Modifies `title'. LaTeX-section-toc: Query the user for the toc entry. Modifies `toc'. LaTeX-section-section: Insert LaTeX section command according to `name', `title', and `toc'. If `toc' is nil, no toc entry is inserted. If `toc' or `title' are empty strings, `done-mark' will be placed at the point they should be inserted. LaTeX-section-label: Insert a label after the section command. Controled by the variable `LaTeX-section-label'. To get a full featured `LaTeX-section' command, insert (setq LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title LaTeX-section-toc LaTeX-section-section LaTeX-section-label)) in your .emacs file." :group 'LaTeX-macro :type 'hook :options '(LaTeX-section-heading LaTeX-section-title LaTeX-section-toc LaTeX-section-section LaTeX-section-label)) (defcustom LaTeX-section-label '(("part" . "part:") ("chapter" . "chap:") ("section" . "sec:") ("subsection" . "sec:") ("subsubsection" . "sec:")) "Default prefix when asking for a label. Some LaTeX packages \(such as `fancyref'\) look at the prefix to generate some text around cross-references automatically. When using those packages, you should not change this variable. If it is a string, it it used unchanged for all kinds of sections. If it is nil, no label is inserted. If it is a list, the list is searched for a member whose car is equal to the name of the sectioning command being inserted. The cdr is then used as the prefix. If the name is not found, or if the cdr is nil, no label is inserted." :group 'LaTeX-label :type '(choice (const :tag "none" nil) (string :format "%v" :tag "Common") (repeat :menu-tag "Level specific" :format "\n%v%i" (cons :format "%v" (string :tag "Type") (choice :tag "Prefix" (const :tag "none" nil) (string :format "%v")))))) ;;; Section Hooks. (defun LaTeX-section-heading () "Hook to prompt for LaTeX section name. Insert this hook into `LaTeX-section-hook' to allow the user to change the name of the sectioning command inserted with `\\[LaTeX-section]'." (let ((string (completing-read (concat "Level: (default " name ") ") LaTeX-section-list nil nil nil))) ; Update name (if (not (zerop (length string))) (setq name string)) ; Update level (setq level (LaTeX-section-level name)))) (defun LaTeX-section-title () "Hook to prompt for LaTeX section title. Insert this hook into `LaTeX-section-hook' to allow the user to change the title of the section inserted with `\\[LaTeX-section]." (setq title (read-string "Title: " title)) (let ((region (and (TeX-active-mark) (cons (region-beginning) (region-end))))) (when region (delete-region (car region) (cdr region))))) (defun LaTeX-section-toc () "Hook to prompt for the LaTeX section entry in the table of content . Insert this hook into `LaTeX-section-hook' to allow the user to insert a different entry for the section in the table of content." (setq toc (read-string "Toc Entry: ")) (if (zerop (length toc)) (setq toc nil))) (defun LaTeX-section-section () "Hook to insert LaTeX section command into the file. Insert this hook into `LaTeX-section-hook' after those hooks that set the `name', `title', and `toc' variables, but before those hooks that assume that the section is already inserted." ;; insert a new line if the current line and the previous line are ;; not empty (except for whitespace), with one exception: do not ;; insert a new line if the previous (or current, sigh) line starts ;; an environment (i.e., starts with `[optional whitespace]\begin') (unless (save-excursion (re-search-backward (concat "^\\s-*\n\\s-*\\=\\|^\\s-*" (regexp-quote TeX-esc) "begin") (line-beginning-position 0) t)) (LaTeX-newline)) (insert TeX-esc name) (cond ((null toc)) ((zerop (length toc)) (insert LaTeX-optop) (set-marker done-mark (point)) (insert LaTeX-optcl)) (t (insert LaTeX-optop toc LaTeX-optcl))) (insert TeX-grop) (if (zerop (length title)) (set-marker done-mark (point))) (insert title TeX-grcl) (LaTeX-newline) ;; If RefTeX is available, tell it that we've just made a new section (and (fboundp 'reftex-notice-new-section) (reftex-notice-new-section))) (defun LaTeX-section-label () "Hook to insert a label after the sectioning command. Insert this hook into `LaTeX-section-hook' to prompt for a label to be inserted after the sectioning command. The behaviour of this hook is controlled by variable `LaTeX-section-label'." (and (LaTeX-label name) (LaTeX-newline))) ;;; Environments (defgroup LaTeX-environment nil "Environments in AUCTeX." :group 'LaTeX-macro) (defcustom LaTeX-default-environment "itemize" "*The default environment when creating new ones with `LaTeX-environment'." :group 'LaTeX-environment :type 'string) (make-variable-buffer-local 'LaTeX-default-environment) (defvar LaTeX-environment-history nil) ;; Variable used to cache the current environment, e.g. for repeated ;; tasks in an environment, like indenting each line in a paragraph to ;; be filled. It must not have a non-nil value in general. That ;; means it is usually let-bound for such operations. (defvar LaTeX-current-environment nil) (defun LaTeX-environment (arg) "Make LaTeX environment (\\begin{...}-\\end{...} pair). With optional ARG, modify current environment. It may be customized with the following variables: `LaTeX-default-environment' Your favorite environment. `LaTeX-default-style' Your favorite document class. `LaTeX-default-options' Your favorite document class options. `LaTeX-float' Where you want figures and tables to float. `LaTeX-table-label' Your prefix to labels in tables. `LaTeX-figure-label' Your prefix to labels in figures. `LaTeX-default-format' Format for array and tabular. `LaTeX-default-width' Width for minipage and tabular*. `LaTeX-default-position' Position for array and tabular." (interactive "*P") (let ((environment (completing-read (concat "Environment type: (default " (if (TeX-near-bobp) "document" LaTeX-default-environment) ") ") (LaTeX-environment-list) nil nil nil 'LaTeX-environment-history))) ;; Get default (cond ((and (zerop (length environment)) (TeX-near-bobp)) (setq environment "document")) ((zerop (length environment)) (setq environment LaTeX-default-environment)) (t (setq LaTeX-default-environment environment))) (let ((entry (assoc environment (LaTeX-environment-list)))) (if (null entry) (LaTeX-add-environments (list environment))) (if arg (LaTeX-modify-environment environment) (LaTeX-environment-menu environment))))) (defun LaTeX-environment-menu (environment) "Insert ENVIRONMENT around point or region." (let ((entry (assoc environment (LaTeX-environment-list)))) (cond ((not (and entry (nth 1 entry))) (LaTeX-insert-environment environment)) ((numberp (nth 1 entry)) (let ((count (nth 1 entry)) (args "")) (while (> count 0) (setq args (concat args TeX-grop TeX-grcl)) (setq count (- count 1))) (LaTeX-insert-environment environment args))) ((or (stringp (nth 1 entry)) (vectorp (nth 1 entry))) (let ((prompts (cdr entry)) (args "")) (dolist (elt prompts) (let* ((optional (vectorp elt)) (elt (if optional (elt elt 0) elt)) (arg (read-string (concat (when optional "(Optional) ") elt ": ")))) (setq args (concat args (cond ((and optional (> (length arg) 0)) (concat LaTeX-optop arg LaTeX-optcl)) ((not optional) (concat TeX-grop arg TeX-grcl))))))) (LaTeX-insert-environment environment args))) (t (apply (nth 1 entry) environment (nthcdr 2 entry)))))) (defun LaTeX-close-environment (&optional reopen) "Create an \\end{...} to match the current environment. With prefix-argument, reopen environment afterwards." (interactive "*P") (if (> (point) (save-excursion (beginning-of-line) (when LaTeX-insert-into-comments (if (looking-at comment-start-skip) (goto-char (match-end 0)))) (skip-chars-forward " \t") (point))) (LaTeX-newline)) (let ((environment (LaTeX-current-environment 1)) marker) (insert "\\end{" environment "}") (indent-according-to-mode) (if (or (not (looking-at "[ \t]*$")) (and (TeX-in-commented-line) (save-excursion (beginning-of-line 2) (not (TeX-in-commented-line))))) (LaTeX-newline) (let ((next-line-add-newlines t)) (next-line 1) (beginning-of-line))) (indent-according-to-mode) (when reopen (save-excursion (setq marker (point-marker)) (set-marker-insertion-type marker t) (LaTeX-environment-menu environment) (delete-region (point) (if (save-excursion (goto-char marker) (bolp)) (1- marker) marker)) (move-marker marker nil))))) (defvar LaTeX-after-insert-env-hooks nil "List of functions to be run at the end of `LaTeX-insert-environment'. Each function is called with three arguments: the name of the environment just inserted, the buffer position just before \\begin and the position just before \\end.") (defun LaTeX-insert-environment (environment &optional extra) "Insert LaTeX ENVIRONMENT with optional argument EXTRA." (let ((active-mark (and (TeX-active-mark) (not (eq (mark) (point))))) prefix content-start env-start env-end) (when (and active-mark (< (mark) (point))) (exchange-point-and-mark)) ;; Compute the prefix. (when (and LaTeX-insert-into-comments (TeX-in-commented-line)) (save-excursion (beginning-of-line) (looking-at (concat "^\\([ \t]*" TeX-comment-start-regexp "+\\)+[ \t]*")) (setq prefix (match-string 0)))) ;; What to do with the line containing point. (cond ((save-excursion (beginning-of-line) (looking-at (concat prefix "[ \t]*$"))) (delete-region (match-beginning 0) (match-end 0))) ((TeX-looking-at-backward (concat "^" prefix "[ \t]*") (line-beginning-position)) (beginning-of-line) (newline) (beginning-of-line 0)) ((bolp) (delete-horizontal-space) (newline) (beginning-of-line 0)) (t (delete-horizontal-space) (newline 2) (when prefix (insert prefix)) (beginning-of-line 0))) ;; What to do with the line containing mark. (when active-mark (save-excursion (goto-char (mark)) (cond ((save-excursion (beginning-of-line) (or (looking-at (concat prefix "[ \t]*$")) (looking-at "[ \t]*$"))) (delete-region (match-beginning 0) (match-end 0))) ((TeX-looking-at-backward (concat "^" prefix "[ \t]*") (line-beginning-position)) (beginning-of-line) (newline) (beginning-of-line 0)) (t (delete-horizontal-space) (insert-before-markers "\n") (newline) (when prefix (insert prefix)))))) ;; Now insert the environment. (when prefix (insert prefix)) (setq env-start (point)) (insert TeX-esc "begin" TeX-grop environment TeX-grcl) (indent-according-to-mode) (when extra (insert extra)) (setq content-start (line-beginning-position 2)) (unless active-mark (newline) (when prefix (insert prefix)) (newline)) (when active-mark (goto-char (mark))) (when prefix (insert prefix)) (setq env-end (point)) (insert TeX-esc "end" TeX-grop environment TeX-grcl) (end-of-line 0) (if active-mark (progn (or (assoc environment LaTeX-indent-environment-list) (LaTeX-fill-region content-start (line-beginning-position 2))) (set-mark content-start)) (indent-according-to-mode)) (save-excursion (beginning-of-line 2) (indent-according-to-mode)) (TeX-math-input-method-off) (run-hook-with-args 'LaTeX-after-insert-env-hooks environment env-start env-end))) (defun LaTeX-modify-environment (environment) "Modify current ENVIRONMENT." (save-excursion (LaTeX-find-matching-end) (re-search-backward (concat (regexp-quote TeX-esc) "end" (regexp-quote TeX-grop) " *\\([a-zA-Z*]*\\)" (regexp-quote TeX-grcl)) (save-excursion (beginning-of-line 1) (point))) (replace-match (concat TeX-esc "end" TeX-grop environment TeX-grcl) t t) (beginning-of-line 1) (LaTeX-find-matching-begin) (re-search-forward (concat (regexp-quote TeX-esc) "begin" (regexp-quote TeX-grop) " *\\([a-zA-Z*]*\\)" (regexp-quote TeX-grcl)) (save-excursion (end-of-line 1) (point))) (replace-match (concat TeX-esc "begin" TeX-grop environment TeX-grcl) t t))) (defun LaTeX-current-environment (&optional arg) "Return the name (a string) of the enclosing LaTeX environment. With optional ARG>=1, find that outer level. If function is called inside a comment and `LaTeX-syntactic-comments' is enabled, try to find the environment in commented regions with the same comment prefix. The functions `LaTeX-find-matching-begin' and `LaTeX-find-matching-end' work analogously." (setq arg (if arg (if (< arg 1) 1 arg) 1)) (let* ((in-comment (TeX-in-commented-line)) (comment-prefix (and in-comment (TeX-comment-prefix)))) (save-excursion (while (and (/= arg 0) (re-search-backward "\\\\\\(begin\\|end\\) *{ *\\([A-Za-z*]+\\) *}" nil t)) (when (or (and LaTeX-syntactic-comments (eq in-comment (TeX-in-commented-line)) (or (not in-comment) ;; Consider only matching prefixes in the ;; commented case. (string= comment-prefix (TeX-comment-prefix)))) (and (not LaTeX-syntactic-comments) (not (TeX-in-commented-line)))) (setq arg (if (string= (match-string 1) "end") (1+ arg) (1- arg))))) (if (/= arg 0) "document" (match-string-no-properties 2))))) (defun docTeX-in-macrocode-p () "Determine if point is inside a macrocode environment." (save-excursion (re-search-backward (concat "^% " (regexp-quote TeX-esc) "\\(begin\\|end\\)[ \t]*{macrocode\\*?}") nil 'move) (not (or (bobp) (= (char-after (match-beginning 1)) ?e))))) ;;; Environment Hooks (defvar LaTeX-document-style-hook nil "List of hooks to run when inserting a document environment. To insert a hook here, you must insert it in the appropiate style file.") (defun LaTeX-env-document (&optional ignore) "Create new LaTeX document. The compatibility argument IGNORE is ignored." (TeX-insert-macro "documentclass") (LaTeX-newline) (LaTeX-newline) (LaTeX-newline) (end-of-line 0) (LaTeX-insert-environment "document") (run-hooks 'LaTeX-document-style-hook) (setq LaTeX-document-style-hook nil)) (defcustom LaTeX-float "" "Default float position for figures and tables. If nil, act like the empty string is given, but do not prompt. \(The standard LaTeX classes use [tbp] as float position if the optional argument is omitted.)" :group 'LaTeX-environment :type '(choice (const :tag "Do not prompt" nil) (const :tag "Empty" "") (string :format "%v"))) (make-variable-buffer-local 'LaTeX-float) (defcustom LaTeX-top-caption-list nil "*List of float environments with top caption." :group 'LaTeX-environment :type '(repeat (string :format "%v"))) (defgroup LaTeX-label nil "Adding labels for LaTeX commands in AUCTeX." :group 'LaTeX) (defcustom LaTeX-label-function nil "*A function inserting a label at point. Sole argument of the function is the environment. The function has to return the label inserted, or nil if no label was inserted." :group 'LaTeX-label :type 'function) (defcustom LaTeX-figure-label "fig:" "*Default prefix to figure labels." :group 'LaTeX-label :group 'LaTeX-environment :type 'string) (defcustom LaTeX-table-label "tab:" "*Default prefix to table labels." :group 'LaTeX-label :group 'LaTeX-environment :type 'string) (defcustom LaTeX-default-format "" "Default format for array and tabular environments." :group 'LaTeX-environment :type 'string) (make-variable-buffer-local 'LaTeX-default-format) (defcustom LaTeX-default-width "1.0\\linewidth" "Default width for minipage and tabular* environments." :group 'LaTeX-environment :type 'string) (make-variable-buffer-local 'LaTeX-default-width) (defcustom LaTeX-default-position "" "Default position for array and tabular environments. If nil, act like the empty string is given, but do not prompt." :group 'LaTeX-environment :type '(choice (const :tag "Do not prompt" nil) (const :tag "Empty" "") string)) (make-variable-buffer-local 'LaTeX-default-position) (defcustom LaTeX-equation-label "eq:" "*Default prefix to equation labels." :group 'LaTeX-label :type 'string) (defcustom LaTeX-eqnarray-label LaTeX-equation-label "*Default prefix to eqnarray labels." :group 'LaTeX-label :type 'string) (defun LaTeX-env-item (environment) "Insert ENVIRONMENT and the first item." (LaTeX-insert-environment environment) (if (TeX-active-mark) (progn (LaTeX-find-matching-begin) (end-of-line 1)) (end-of-line 0)) (delete-char 1) (when (looking-at (concat "^[ \t]+$\\|" "^[ \t]*" TeX-comment-start-regexp "+[ \t]*$")) (delete-region (point) (line-end-position))) (delete-horizontal-space) ;; Deactivate the mark here in order to prevent `TeX-parse-macro' ;; from swapping point and mark and the \item ending up right after ;; \begin{...}. (TeX-deactivate-mark) (LaTeX-insert-item) ;; The inserted \item may have outdented the first line to the ;; right. Fill it, if appropriate. (when (and (not (looking-at "$")) (not (assoc environment LaTeX-indent-environment-list)) (> (- (line-end-position) (line-beginning-position)) (current-fill-column))) (LaTeX-fill-paragraph nil))) (defcustom LaTeX-label-alist '(("figure" . LaTeX-figure-label) ("table" . LaTeX-table-label) ("figure*" . LaTeX-figure-label) ("table*" . LaTeX-table-label) ("equation" . LaTeX-equation-label) ("eqnarray" . LaTeX-eqnarray-label)) "Lookup prefixes for labels. An alist where the CAR is the environment name, and the CDR either the prefix or a symbol referring to one." :group 'LaTeX-label :type '(repeat (cons (string :tag "Environment") (choice (string :tag "Label prefix") (symbol :tag "Label prefix symbol"))))) (make-variable-buffer-local 'LaTeX-label-alist) (defun LaTeX-label (environment) "Insert a label for ENVIRONMENT at point. If `LaTeX-label-function' is a valid function, LaTeX label will transfer the job to this function." (let (label) (if (and (boundp 'LaTeX-label-function) LaTeX-label-function (fboundp LaTeX-label-function)) (setq label (funcall LaTeX-label-function environment)) (let ((prefix (or (cdr (assoc environment LaTeX-label-alist)) (if (assoc environment LaTeX-section-list) (if (stringp LaTeX-section-label) LaTeX-section-label (and (listp LaTeX-section-label) (cdr (assoc environment LaTeX-section-label)))) "")))) (when prefix (when (symbolp prefix) (setq prefix (symbol-value prefix))) ;; Use completing-read as we do with `C-c C-m \label RET' (setq label (completing-read (TeX-argument-prompt t nil "What label") (LaTeX-label-list) nil nil prefix)) ;; No label or empty string entered? (if (or (string= prefix label) (string= "" label)) (setq label nil) (insert TeX-esc "label" TeX-grop label TeX-grcl)))) (if label (progn (LaTeX-add-labels label) label) nil)))) (defun LaTeX-env-figure (environment) "Create ENVIRONMENT with \\caption and \\label commands." (let ((float (and LaTeX-float ; LaTeX-float can be nil, i.e. ; do not prompt (read-string "(Optional) Float position: " LaTeX-float))) (caption (read-string "Caption: ")) (center (y-or-n-p "Center? ")) (active-mark (and (TeX-active-mark) (not (eq (mark) (point))))) start-marker end-marker) (when active-mark (if (< (mark) (point)) (exchange-point-and-mark)) (setq start-marker (point-marker)) (set-marker-insertion-type start-marker t) (setq end-marker (copy-marker (mark)))) (setq LaTeX-float float) (LaTeX-insert-environment environment (unless (zerop (length float)) (concat LaTeX-optop float LaTeX-optcl))) (when active-mark (goto-char start-marker)) (when center (insert TeX-esc "centering") (indent-according-to-mode) (LaTeX-newline)) (if (member environment LaTeX-top-caption-list) ;; top caption -- do nothing if user skips caption (unless (zerop (length caption)) (insert TeX-esc "caption" TeX-grop caption TeX-grcl) (LaTeX-newline) (indent-according-to-mode) ;; ask for a label and insert a new line only if a label is ;; actually inserted (when (LaTeX-label environment) (LaTeX-newline) (indent-according-to-mode))) ;; bottom caption (default) -- do nothing if user skips caption (unless (zerop (length caption)) (when active-mark (goto-char end-marker)) (LaTeX-newline) (indent-according-to-mode) (insert TeX-esc "caption" TeX-grop caption TeX-grcl) (LaTeX-newline) (indent-according-to-mode) ;; ask for a label -- if user skips label, remove the last new ;; line again (if (LaTeX-label environment) (progn (unless (looking-at "[ \t]*$") (LaTeX-newline) (end-of-line 0))) (delete-blank-lines) (end-of-line 0)) ;; if there is a caption or a label, move point upwards again ;; so that it is placed above the caption or the label (or ;; both) -- search the current line (even long captions are ;; inserted on a single line, even if auto-fill is turned on, ;; so it is enough to search the current line) for \label or ;; \caption and go one line upwards if any of them is found (while (re-search-backward (concat "^\\s-*" (regexp-quote TeX-esc) "\\(label\\|caption\\)") (line-beginning-position) t) (end-of-line 0) (indent-according-to-mode)))) (when (and (member environment '("table" "table*")) ;; Suppose an existing tabular environment should just ;; be wrapped into a table if there is an active region. (not active-mark)) (LaTeX-env-array "tabular")))) (defun LaTeX-env-array (environment) "Insert ENVIRONMENT with position and column specifications. Just like array and tabular." (let ((pos (and LaTeX-default-position ; LaTeX-default-position can ; be nil, i.e. do not prompt (read-string "(Optional) Position: " LaTeX-default-position))) (fmt (read-string "Format: " LaTeX-default-format))) (setq LaTeX-default-position pos) (setq LaTeX-default-format fmt) (LaTeX-insert-environment environment (concat (unless (zerop (length pos)) (concat LaTeX-optop pos LaTeX-optcl)) (concat TeX-grop fmt TeX-grcl))))) (defun LaTeX-env-label (environment) "Insert ENVIRONMENT and prompt for label." (LaTeX-insert-environment environment) (when (LaTeX-label environment) (LaTeX-newline) (indent-according-to-mode))) (defun LaTeX-env-list (environment) "Insert ENVIRONMENT and the first item." (let ((label (read-string "Default Label: "))) (LaTeX-insert-environment environment (format "{%s}{}" label)) (end-of-line 0) (delete-char 1) (delete-horizontal-space)) (LaTeX-insert-item)) (defun LaTeX-env-minipage (environment) "Create new LaTeX minipage or minipage-like ENVIRONMENT." (let ((pos (and LaTeX-default-position ; LaTeX-default-position can ; be nil, i.e. do not prompt (read-string "(Optional) Position: " LaTeX-default-position))) (width (read-string "Width: " LaTeX-default-width))) (setq LaTeX-default-position pos) (setq LaTeX-default-width width) (LaTeX-insert-environment environment (concat (unless (zerop (length pos)) (concat LaTeX-optop pos LaTeX-optcl)) (concat TeX-grop width TeX-grcl))))) (defun LaTeX-env-tabular* (environment) "Insert ENVIRONMENT with width, position and column specifications." (let ((width (read-string "Width: " LaTeX-default-width)) (pos (and LaTeX-default-position ; LaTeX-default-position can ; be nil, i.e. do not prompt (read-string "(Optional) Position: " LaTeX-default-position))) (fmt (read-string "Format: " LaTeX-default-format))) (setq LaTeX-default-width width) (setq LaTeX-default-position pos) (setq LaTeX-default-format fmt) (LaTeX-insert-environment environment (concat (concat TeX-grop width TeX-grcl) ;; not optional! (unless (zerop (length pos)) (concat LaTeX-optop pos LaTeX-optcl)) (concat TeX-grop fmt TeX-grcl))))) (defun LaTeX-env-picture (environment) "Insert ENVIRONMENT with width, height specifications." (let ((width (read-string "Width: ")) (height (read-string "Height: ")) (x-offset (read-string "X Offset: ")) (y-offset (read-string "Y Offset: "))) (if (zerop (length x-offset)) (setq x-offset "0")) (if (zerop (length y-offset)) (setq y-offset "0")) (LaTeX-insert-environment environment (concat (format "(%s,%s)" width height) (if (not (and (string= x-offset "0") (string= y-offset "0"))) (format "(%s,%s)" x-offset y-offset)))))) (defun LaTeX-env-bib (environment) "Insert ENVIRONMENT with label for bibitem." (LaTeX-insert-environment environment (concat TeX-grop (read-string "Label for BibItem: " "99") TeX-grcl)) (end-of-line 0) (delete-char 1) (delete-horizontal-space) (LaTeX-insert-item)) (defun LaTeX-env-contents (environment) "Insert ENVIRONMENT with filename for contents." (save-excursion (when (re-search-backward "^\\\\documentclass.*{" nil t) (error "Put %s environment before \\documentclass" environment))) (LaTeX-insert-environment environment (concat TeX-grop (read-string "File: ") TeX-grcl)) (delete-horizontal-space)) (defun LaTeX-env-args (environment &rest args) "Insert ENVIRONMENT and arguments defined by ARGS." (LaTeX-insert-environment environment) (save-excursion (LaTeX-find-matching-begin) (end-of-line) (TeX-parse-arguments args))) ;;; Item hooks (defvar LaTeX-item-list nil "A list of environments where items have a special syntax. The cdr is the name of the function, used to insert this kind of items.") (defun LaTeX-insert-item () "Insert a new item in an environment. You may use `LaTeX-item-list' to change the routines used to insert the item." (interactive "*") (let ((environment (LaTeX-current-environment))) (when (and (TeX-active-mark) (> (point) (mark))) (exchange-point-and-mark)) (unless (bolp) (LaTeX-newline)) (if (assoc environment LaTeX-item-list) (funcall (cdr (assoc environment LaTeX-item-list))) (TeX-insert-macro "item")) (indent-according-to-mode))) (defun LaTeX-item-argument () "Insert a new item with an optional argument." (let ((TeX-arg-item-label-p t)) (TeX-insert-macro "item"))) (defun LaTeX-item-bib () "Insert a new bibitem." (TeX-insert-macro "bibitem")) ;;; Parser (defvar LaTeX-auto-minimal-regexp-list '(("\\\\document\\(style\\|class\\)\ \\(\\[\\(\\([^#\\%]\\|%[^\n\r]*[\n\r]\\)*\\)\\]\\)?\ {\\([^#\\.\n\r]+?\\)}" (3 5 1) LaTeX-auto-style) ("\\\\use\\(package\\)\\(\\[\\([^\]\\]*\\)\\]\\)?\ {\\(\\([^#}\\.%]\\|%[^\n\r]*[\n\r]\\)+?\\)}" (3 4 1) LaTeX-auto-style)) "Minimal list of regular expressions matching LaTeX macro definitions.") (defvar LaTeX-auto-label-regexp-list '(("\\\\label{\\([^\n\r%\\{}]+\\)}" 1 LaTeX-auto-label)) "List of regular expression matching LaTeX labels only.") (defvar LaTeX-auto-index-regexp-list '(("\\\\\\(index\\|glossary\\){\\([^}{]*\\({[^}{]*\\({[^}{]*\\({[^}{]*}[^}{]*\\)*}[^}{]*\\)*}[^}{]*\\)*\\)}" 2 LaTeX-auto-index-entry)) "List of regular expression matching LaTeX index/glossary entries only. Regexp allows for up to 3 levels of parenthesis inside the index argument. This is necessary since index entries may contain commands and stuff.") (defvar LaTeX-auto-class-regexp-list '(;; \RequirePackage[]{}[] ("\\\\Require\\(Package\\)\\(\\[\\([^#\\.%]*?\\)\\]\\)?\ {\\([^#\\.\n\r]+?\\)}" (3 4 1) LaTeX-auto-style) ;; \RequirePackageWithOptions{}[], ("\\\\Require\\(Package\\)WithOptions\\(\\){\\([^#\\.\n\r]+?\\)}" (2 3 1) LaTeX-auto-style) ;; \LoadClass[]{}[] ("\\\\Load\\(Class\\)\\(\\[\\([^#\\.%]*?\\)\\]\\)?{\\([^#\\.\n\r]+?\\)}" (3 4 1) LaTeX-auto-style) ;; \LoadClassWithOptions{}[] ("\\\\Load\\(Class\\)WithOptions\\(\\){\\([^#\\.\n\r]+?\\)}" (2 3 1) LaTeX-auto-style) ;; \DeclareRobustCommand{}[][]{}, ;; \DeclareRobustCommand*{}[][]{} ("\\\\DeclareRobustCommand\\*?{?\\\\\\([A-Za-z]+\\)}?\ \\[\\([0-9]+\\)\\]\\[\\([^\n\r]*?\\)\\]" (1 2 3) LaTeX-auto-optional) ("\\\\DeclareRobustCommand\\*?{?\\\\\\([A-Za-z]+\\)}?\\[\\([0-9]+\\)\\]" (1 2) LaTeX-auto-arguments) ("\\\\DeclareRobustCommand\\*?{?\\\\\\([A-Za-z]+\\)}?" 1 TeX-auto-symbol) ;; Patterns for commands described in "LaTeX2e font selection" (fntguide) ("\\\\DeclareMath\\(?:Symbol\\|Delimiter\\|Accent\\|Radical\\)\ {?\\\\\\([A-Za-z]+\\)}?" 1 TeX-auto-symbol) ("\\\\\\(Declare\\|Provide\\)Text\ \\(?:Command\\|Symbol\\|Accent\\|Composite\\){?\\\\\\([A-Za-z]+\\)}?" 1 TeX-auto-symbol) ("\\\\Declare\\(?:Text\\|Old\\)FontCommand{?\\\\\\([A-Za-z]+\\)}?" 1 TeX-auto-symbol)) "List of regular expressions matching macros in LaTeX classes and packages.") (defvar LaTeX-auto-regexp-list (append (let ((token TeX-token-char)) `((,(concat "\\\\\\(?:new\\|provide\\)command\\*?{?\\\\\\(" token "+\\)}?\\[\\([0-9]+\\)\\]\\[\\([^\n\r]*\\)\\]") (1 2 3) LaTeX-auto-optional) (,(concat "\\\\\\(?:new\\|provide\\)command\\*?{?\\\\\\(" token "+\\)}?\\[\\([0-9]+\\)\\]") (1 2) LaTeX-auto-arguments) (,(concat "\\\\\\(?:new\\|provide\\)command\\*?{?\\\\\\(" token "+\\)}?") 1 TeX-auto-symbol) (,(concat "\\\\newenvironment\\*?{?\\(" token "+\\)}?\\[\\([0-9]+\\)\\]\\[") 1 LaTeX-auto-environment) (,(concat "\\\\newenvironment\\*?{?\\(" token "+\\)}?\\[\\([0-9]+\\)\\]") (1 2) LaTeX-auto-env-args) (,(concat "\\\\newenvironment\\*?{?\\(" token "+\\)}?") 1 LaTeX-auto-environment) (,(concat "\\\\newtheorem{\\(" token "+\\)}") 1 LaTeX-auto-environment) ("\\\\input{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" 1 TeX-auto-file) ("\\\\include{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" 1 TeX-auto-file) (, (concat "\\\\bibitem{\\(" token "[^, \n\r\t%\"#'()={}]*\\)}") 1 LaTeX-auto-bibitem) (, (concat "\\\\bibitem\\[[^][\n\r]+\\]{\\(" token "[^, \n\r\t%\"#'()={}]*\\)}") 1 LaTeX-auto-bibitem) ("\\\\bibliography{\\([^#}\\\\\n\r]+\\)}" 1 LaTeX-auto-bibliography) ("\\\\addbibresource\\(?:\\[[^]]+\\]\\)?{\\([^#}\\\\\n\r\.]+\\)\\..+}" 1 LaTeX-auto-bibliography) ("\\\\add\\(?:global\\|section\\)bib\\(?:\\[[^]]+\\]\\)?{\\([^#}\\\\\n\r\.]+\\)\\(?:\\..+\\)?}" 1 LaTeX-auto-bibliography) ("\\\\newrefsection\\[\\([^]]+\\)\\]" 1 LaTeX-split-bibs) ("\\\\begin{refsection}\\[\\([^]]+\\)\\]" 1 LaTeX-split-bibs))) LaTeX-auto-class-regexp-list LaTeX-auto-label-regexp-list LaTeX-auto-index-regexp-list LaTeX-auto-minimal-regexp-list) "List of regular expression matching common LaTeX macro definitions.") (defun LaTeX-split-bibs (match) "Extract bibliography resources from MATCH. Split the string at commas and remove Biber file extensions." (let ((bibs (TeX-split-string " *, *" (TeX-match-buffer match)))) (dolist (bib bibs) (LaTeX-add-bibliographies (replace-regexp-in-string (concat "\\(?:\\." (mapconcat 'regexp-quote TeX-Biber-file-extensions "\\|\\.") "\\)") "" bib))))) (defun LaTeX-auto-prepare () "Prepare for LaTeX parsing." (setq LaTeX-auto-arguments nil LaTeX-auto-optional nil LaTeX-auto-env-args nil LaTeX-auto-style nil LaTeX-auto-end-symbol nil)) (add-hook 'TeX-auto-prepare-hook 'LaTeX-auto-prepare) (defun LaTeX-listify-package-options (options) "Return a list from a comma-separated string of package OPTIONS. The input string may include LaTeX comments and newlines." ;; We jump through all those hoops and don't just use `split-string' ;; or the like in order to be able to deal with key=value package ;; options which can look like this: "pdftitle={A Perfect Day}, ;; colorlinks=false" (let (opts match start) (with-temp-buffer (set-syntax-table LaTeX-mode-syntax-table) (insert options) (newline) ; So that the last entry can be found. (goto-char (point-min)) (setq start (point)) (while (re-search-forward "[{ ,%\n\r]" nil t) (setq match (match-string 0)) (cond ;; Step over groups. (Let's hope nobody uses escaped braces.) ((string= match "{") (up-list)) ;; Get rid of whitespace. ((string= match " ") (delete-region (1- (point)) (save-excursion (skip-chars-forward " ") (point)))) ;; Add entry to output. ((or (string= match ",") (= (point) (point-max))) (add-to-list 'opts (buffer-substring-no-properties start (1- (point))) t) (setq start (point))) ;; Get rid of comments. ((string= match "%") (delete-region (1- (point)) (line-beginning-position 2))) ;; Get rid of newlines. ((or (string= match "\n") (string= match "\r")) (delete-backward-char 1))))) opts)) (defun LaTeX-auto-cleanup () "Cleanup after LaTeX parsing." ;; Cleanup BibTeX/Biber files (setq LaTeX-auto-bibliography (apply 'append (mapcar (lambda (arg) (TeX-split-string "," arg)) LaTeX-auto-bibliography))) ;; Cleanup document classes and packages (unless (null LaTeX-auto-style) (while LaTeX-auto-style (let* ((entry (car LaTeX-auto-style)) (options (nth 0 entry)) (style (nth 1 entry)) (class (nth 2 entry))) ;; Next document style. (setq LaTeX-auto-style (cdr LaTeX-auto-style)) ;; Get the options. (setq options (LaTeX-listify-package-options options)) ;; Add them, to the style list. (dolist (elt options) (add-to-list 'TeX-auto-file elt)) ;; Treat documentclass/documentstyle specially. (if (or (string-equal "package" class) (string-equal "Package" class)) (dolist (elt (TeX-split-string "\\([ \t\r\n]\\|%[^\n\r]*[\n\r]\\|,\\)+" style)) (add-to-list 'TeX-auto-file elt)) ;; And a special "art10" style file combining style and size. (add-to-list 'TeX-auto-file style) (add-to-list 'TeX-auto-file (concat (cond ((string-equal "article" style) "art") ((string-equal "book" style) "bk") ((string-equal "report" style) "rep") ((string-equal "jarticle" style) "jart") ((string-equal "jbook" style) "jbk") ((string-equal "jreport" style) "jrep") ((string-equal "j-article" style) "j-art") ((string-equal "j-book" style) "j-bk") ((string-equal "j-report" style ) "j-rep") (t style)) (cond ((member "11pt" options) "11") ((member "12pt" options) "12") (t "10"))))) ;; The third argument if "class" indicates LaTeX2e features. (cond ((equal class "class") (add-to-list 'TeX-auto-file "latex2e")) ((equal class "style") (add-to-list 'TeX-auto-file "latex2")))))) ;; Cleanup optional arguments (mapc (lambda (entry) (add-to-list 'TeX-auto-symbol (list (nth 0 entry) (string-to-number (nth 1 entry))))) LaTeX-auto-arguments) ;; Cleanup default optional arguments (mapc (lambda (entry) (add-to-list 'TeX-auto-symbol (list (nth 0 entry) (vector "argument") (1- (string-to-number (nth 1 entry)))))) LaTeX-auto-optional) ;; Cleanup environments arguments (mapc (lambda (entry) (add-to-list 'LaTeX-auto-environment (list (nth 0 entry) (string-to-number (nth 1 entry))))) LaTeX-auto-env-args) ;; Cleanup use of def to add environments ;; NOTE: This uses an O(N^2) algorithm, while an O(N log N) ;; algorithm is possible. (mapc (lambda (symbol) (if (not (TeX-member symbol TeX-auto-symbol 'equal)) ;; No matching symbol, insert in list (add-to-list 'TeX-auto-symbol (concat "end" symbol)) ;; Matching symbol found, remove from list (if (equal (car TeX-auto-symbol) symbol) ;; Is it the first symbol? (setq TeX-auto-symbol (cdr TeX-auto-symbol)) ;; Nope! Travel the list (let ((list TeX-auto-symbol)) (while (consp (cdr list)) ;; Until we find it. (if (equal (car (cdr list)) symbol) ;; Then remove it. (setcdr list (cdr (cdr list)))) (setq list (cdr list))))) ;; and add the symbol as an environment. (add-to-list 'LaTeX-auto-environment symbol))) LaTeX-auto-end-symbol)) (add-hook 'TeX-auto-cleanup-hook 'LaTeX-auto-cleanup) (TeX-auto-add-type "label" "LaTeX") (TeX-auto-add-type "bibitem" "LaTeX") (TeX-auto-add-type "environment" "LaTeX") (TeX-auto-add-type "bibliography" "LaTeX" "bibliographies") (TeX-auto-add-type "index-entry" "LaTeX" "index-entries") (fset 'LaTeX-add-bibliographies-auto (symbol-function 'LaTeX-add-bibliographies)) (defun LaTeX-add-bibliographies (&rest bibliographies) "Add BIBLIOGRAPHIES to the list of known bibliographies and style files." (apply 'LaTeX-add-bibliographies-auto bibliographies) (apply 'TeX-run-style-hooks bibliographies)) (fset 'LaTeX-add-environments-auto (symbol-function 'LaTeX-add-environments)) (defun LaTeX-add-environments (&rest environments) "Add ENVIRONMENTS to the list of known environments. Additionally invalidate the environment submenus to let them be regenerated by the respective menu filter." (apply 'LaTeX-add-environments-auto environments) (setq LaTeX-environment-menu nil) (setq LaTeX-environment-modify-menu nil)) ;;; Biber support (defvar LaTeX-using-Biber nil "Used to track whether Biber is in use.") (make-variable-buffer-local 'LaTeX-using-Biber) ;;; BibTeX ;;;###autoload (defun BibTeX-auto-store () "This function should be called from `bibtex-mode-hook'. It will setup BibTeX to store keys in an auto file." ;; We want this to be early in the list, so we do not ;; add it before we enter BibTeX mode the first time. (if (boundp 'local-write-file-hooks) (add-hook 'local-write-file-hooks 'TeX-safe-auto-write) (add-hook 'write-file-hooks 'TeX-safe-auto-write)) (make-local-variable 'TeX-auto-update) (setq TeX-auto-update 'BibTeX) (make-local-variable 'TeX-auto-untabify) (setq TeX-auto-untabify nil) (make-local-variable 'TeX-auto-parse-length) (setq TeX-auto-parse-length 999999) (make-local-variable 'TeX-auto-regexp-list) (setq TeX-auto-regexp-list BibTeX-auto-regexp-list) (make-local-variable 'TeX-master) (setq TeX-master t)) (defvar BibTeX-auto-regexp-list `(("@[Ss][Tt][Rr][Ii][Nn][Gg]" 1 ignore) (,(concat "@[a-zA-Z]+[{(][ \t]*\\(" TeX-token-char "[^, \n\r\t%\"#'()={}]*\\)") 1 LaTeX-auto-bibitem)) "List of regexp-list expressions matching BibTeX items.") ;;; Macro Argument Hooks (defun TeX-arg-conditional (optional expr then else) "Implement if EXPR THEN ELSE. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. If EXPR evaluate to true, parse THEN as an argument list, else parse ELSE as an argument list." (TeX-parse-arguments (if (eval expr) then else))) (defun TeX-arg-eval (optional &rest args) "Evaluate ARGS and insert value in buffer. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one." (TeX-argument-insert (eval args) optional)) (defun TeX-arg-label (optional &optional prompt definition) "Prompt for a label completing with known labels. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. If DEFINITION is non-nil, add the chosen label to the list of defined labels." (let ((label (completing-read (TeX-argument-prompt optional prompt "Key") (LaTeX-label-list)))) (if (and definition (not (string-equal "" label))) (LaTeX-add-labels label)) (TeX-argument-insert label optional optional))) (defalias 'TeX-arg-ref 'TeX-arg-label) (defun TeX-arg-index-tag (optional &optional prompt &rest args) "Prompt for an index tag. This is the name of an index, not the entry. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. ARGS is unused." (let (tag) (setq prompt (concat (if optional "(Optional) " "") (if prompt prompt "Index tag") ": (default none) ")) (setq tag (read-string prompt)) (TeX-argument-insert tag optional))) (defun TeX-arg-index (optional &optional prompt &rest args) "Prompt for an index entry completing with known entries. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. ARGS is unused." (let ((entry (completing-read (TeX-argument-prompt optional prompt "Key") (LaTeX-index-entry-list)))) (if (and (not (string-equal "" entry)) (not (member (list entry) (LaTeX-index-entry-list)))) (LaTeX-add-index-entries entry)) (TeX-argument-insert entry optional optional))) (defalias 'TeX-arg-define-index 'TeX-arg-index) (defun TeX-arg-macro (optional &optional prompt definition) "Prompt for a TeX macro with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. If DEFINITION is non-nil, add the chosen macro to the list of defined macros." (let ((macro (completing-read (TeX-argument-prompt optional prompt (concat "Macro: " TeX-esc) t) (TeX-symbol-list)))) (if (and definition (not (string-equal "" macro))) (TeX-add-symbols macro)) (TeX-argument-insert macro optional TeX-esc))) (defun TeX-arg-environment (optional &optional prompt definition) "Prompt for a LaTeX environment with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. If DEFINITION is non-nil, add the chosen environment to the list of defined environments." (let ((environment (completing-read (TeX-argument-prompt optional prompt "Environment") (TeX-symbol-list)))) (if (and definition (not (string-equal "" environment))) (LaTeX-add-environments environment)) (TeX-argument-insert environment optional))) ;; Why is DEFINITION unused? (defun TeX-arg-cite (optional &optional prompt definition) "Prompt for a BibTeX citation with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. DEFINITION is unused." (setq prompt (concat (if optional "(Optional) " "") (if prompt prompt "Add key") ": (default none) ")) (let ((items (multi-prompt "," t prompt (LaTeX-bibitem-list)))) (apply 'LaTeX-add-bibitems items) (TeX-argument-insert (mapconcat 'identity items ",") optional optional))) ;; Why is DEFINITION unused? (defun TeX-arg-counter (optional &optional prompt definition) "Prompt for a LaTeX counter. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. DEFINITION is unused." ;; Completion not implemented yet. (TeX-argument-insert (read-string (TeX-argument-prompt optional prompt "Counter")) optional)) ;; Why is DEFINITION unused? (defun TeX-arg-savebox (optional &optional prompt definition) "Prompt for a LaTeX savebox. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string. DEFINITION is unused." ;; Completion not implemented yet. (TeX-argument-insert (read-string (TeX-argument-prompt optional prompt (concat "Savebox: " TeX-esc) t)) optional TeX-esc)) (defun TeX-arg-file (optional &optional prompt) "Prompt for a filename in the current directory. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-argument-insert (read-file-name (TeX-argument-prompt optional prompt "File") "" "" nil) optional)) (defun TeX-arg-define-label (optional &optional prompt) "Prompt for a label completing with known labels. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-label optional prompt t)) (defun TeX-arg-define-macro (optional &optional prompt) "Prompt for a TeX macro with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-macro optional prompt t)) (defun TeX-arg-define-environment (optional &optional prompt) "Prompt for a LaTeX environment with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-environment optional prompt t)) (defun TeX-arg-define-cite (optional &optional prompt) "Prompt for a BibTeX citation. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-cite optional prompt t)) (defun TeX-arg-define-counter (optional &optional prompt) "Prompt for a LaTeX counter. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-counter optional prompt t)) (defun TeX-arg-define-savebox (optional &optional prompt) "Prompt for a LaTeX savebox. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-arg-savebox optional prompt t)) (defcustom LaTeX-style-list '(("amsart") ("amsbook") ("article") ("beamer") ("book") ("dinbrief") ("foils") ("letter") ("memoir") ("minimal") ("prosper") ("report") ("scrartcl") ("scrbook") ("scrlttr2") ("scrreprt") ("slides")) "List of document classes offered when inserting a document environment." :group 'LaTeX-environment :type '(repeat (group (string :format "%v")))) (defun TeX-arg-document (optional &optional ignore) "Insert arguments to documentclass. OPTIONAL and IGNORE are ignored." (let ((style (completing-read (concat "Document class: (default " LaTeX-default-style ") ") LaTeX-style-list)) (options (read-string "Options: " (if (stringp LaTeX-default-options) LaTeX-default-options (mapconcat 'identity LaTeX-default-options ","))))) (if (zerop (length style)) (setq style LaTeX-default-style)) (if (not (zerop (length options))) (insert LaTeX-optop options LaTeX-optcl)) (insert TeX-grop style TeX-grcl)) ;; remove old information (TeX-remove-style) ;; defined in individual style hooks (TeX-update-style)) (defun LaTeX-arg-usepackage (optional) "Insert arguments to usepackage. OPTIONAL is ignored." (let ((TeX-file-extensions '("sty")) (TeX-input-file-search t)) (TeX-arg-input-file nil "Package") (save-excursion (search-backward-regexp "{\\(.*\\)}") (let* ((package (match-string 1)) (var (intern (format "LaTeX-%s-package-options" package))) (crm-separator ",") (TeX-arg-opening-brace LaTeX-optop) (TeX-arg-closing-brace LaTeX-optcl) options) (if (or (and (boundp var) (listp (symbol-value var))) (fboundp var)) (if (functionp var) (setq options (funcall var)) (when (symbol-value var) (setq options (mapconcat 'identity (TeX-completing-read-multiple "Options: " (mapcar 'list (symbol-value var))) ",")))) (setq options (read-string "Options: "))) (when options ;; XXX: The following statement will add the options ;; supplied to the LaTeX package to the style list. This is ;; consistent with the way the parser works (see ;; `LaTeX-auto-cleanup'). But in a revamped style system ;; such options should be associated with their LaTeX ;; package to avoid confusion. For example a `german' entry ;; in the style list can come from documentclass options and ;; does not necessarily mean that the babel-related ;; extensions should be activated. (mapc 'TeX-run-style-hooks (LaTeX-listify-package-options options)) (TeX-argument-insert options t)))))) (defcustom LaTeX-search-files-type-alist '((texinputs "${TEXINPUTS.latex}" ("tex/generic/" "tex/latex/") TeX-file-extensions) (docs "${TEXDOCS}" ("doc/") TeX-doc-extensions) (graphics "${TEXINPUTS}" ("tex/") LaTeX-includegraphics-extensions) (bibinputs "${BIBINPUTS}" ("bibtex/bib/") BibTeX-file-extensions) (bstinputs "${BSTINPUTS}" ("bibtex/bst/") BibTeX-style-extensions) (biberinputs "${BIBINPUTS}" ("bibtex/bib/") TeX-Biber-file-extensions)) "Alist of filetypes with locations and file extensions. Each element of the alist consists of a symbol expressing the filetype, a variable which can be expanded on kpathsea-based systems into the directories where files of the given type reside, a list of absolute directories, relative directories below the root of a TDS-compliant TeX tree or a list of variables with either type of directories as an alternative for non-kpathsea-based systems and a list of extensions to be matched upon a file search. Note that the directories have to end with a directory separator. Reset the mode for a change of this variable to take effect." :group 'TeX-file :type '(alist :key-type symbol :value-type (group (string :tag "Kpathsea variable") (choice :tag "Directories" (repeat :tag "TDS subdirectories" string) (repeat :tag "Absolute directories" directory) (repeat :tag "Variables" variable)) (choice :tag "Extensions" variable (repeat string))))) (defcustom TeX-arg-input-file-search t "If `TeX-arg-input-file' should search for files. If the value is t, files in TeX's search path are searched for and provided for completion. The file name is then inserted without directory and extension. If the value is nil, the file name can be specified manually and is inserted with a path relative to the directory of the current buffer's file and with extension. If the value is `ask', you are asked for the method to use every time `TeX-arg-input-file' is called." :group 'LaTeX-macro :type '(choice (const t) (const nil) (const ask))) (defvar TeX-global-input-files nil "List of the non-local TeX input files. Initialized once at the first time you prompt for an input file. May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.") (defun TeX-arg-input-file (optional &optional prompt local) "Prompt for a tex or sty file. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. PROMPT is the prompt, LOCAL is a flag. If the flag is set, only complete with local files." (let ((search (if (eq TeX-arg-input-file-search 'ask) (not (y-or-n-p "Find file yourself? ")) TeX-arg-input-file-search)) file style) (if search (progn (unless (or TeX-global-input-files local) (message "Searching for files...") (setq TeX-global-input-files (mapcar 'list (TeX-search-files-by-type 'texinputs 'global t t)))) (setq file (completing-read (TeX-argument-prompt optional prompt "File") (TeX-delete-dups-by-car (append (mapcar 'list (TeX-search-files-by-type 'texinputs 'local t t)) (unless local TeX-global-input-files)))) style file)) (setq file (read-file-name (TeX-argument-prompt optional prompt "File") nil "")) (unless (string-equal file "") (setq file (file-relative-name file))) (setq style (file-name-sans-extension (file-name-nondirectory file)))) (unless (string-equal "" style) (TeX-run-style-hooks style)) (TeX-argument-insert file optional))) (defvar BibTeX-global-style-files nil "Association list of BibTeX style files. Initialized once at the first time you prompt for an input file. May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.") (defun TeX-arg-bibstyle (optional &optional prompt) "Prompt for a BibTeX style file. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (message "Searching for BibTeX styles...") (or BibTeX-global-style-files (setq BibTeX-global-style-files (mapcar 'list (TeX-search-files-by-type 'bstinputs 'global t t)))) (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "BibTeX style") (append (mapcar 'list (TeX-search-files-by-type 'bstinputs 'local t t)) BibTeX-global-style-files)) optional)) (defvar BibTeX-global-files nil "Association list of BibTeX files. Initialized once at the first time you prompt for a BibTeX file. May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.") (defvar TeX-Biber-global-files nil "Association list of Biber files. Initialized once at the first time you prompt for an Biber file. May be reset with `\\[universal-argument] \\[TeX-normal-mode]'.") (defun TeX-arg-bibliography (optional &optional prompt) "Prompt for a BibTeX or Biber database file. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (let (name files inputs styles) (if LaTeX-using-Biber (progn (setq name "Biber" files 'TeX-Biber-global-files inputs 'biberinputs)) (setq name "BibTeX" files 'BibTeX-global-files inputs 'bibinputs)) (message "Searching for %s files..." name) (or (symbol-value files) (set files (mapcar 'list (TeX-search-files-by-type 'biberinputs 'global t t)))) (setq styles (multi-prompt "," t (TeX-argument-prompt optional prompt (concat name " files")) (append (mapcar 'list (TeX-search-files-by-type inputs 'local t t)) (symbol-value files)))) (apply 'LaTeX-add-bibliographies styles) (TeX-argument-insert (mapconcat 'identity styles ",") optional))) (defun TeX-arg-corner (optional &optional prompt) "Prompt for a LaTeX side or corner position with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Position") '(("") ("l") ("r") ("t") ("b") ("tl") ("tr") ("bl") ("br")) nil t) optional)) (defun TeX-arg-lr (optional &optional prompt) "Prompt for a LaTeX side with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Position") '(("") ("l") ("r")) nil t) optional)) (defun TeX-arg-tb (optional &optional prompt) "Prompt for a LaTeX side with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Position") '(("") ("t") ("b")) nil t) optional)) (defun TeX-arg-pagestyle (optional &optional prompt) "Prompt for a LaTeX pagestyle with completion. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Pagestyle") '(("plain") ("empty") ("headings") ("myheadings"))) optional)) (defcustom LaTeX-default-verb-delimiter ?| "Default delimiter for `\\verb' macros." :group 'LaTeX-macro :type 'character) (defun TeX-arg-verb (optional &optional ignore) "Prompt for delimiter and text. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. IGNORE is ignored." (let ((del (read-quoted-char (concat "Delimiter: (default " (char-to-string LaTeX-default-verb-delimiter) ") ")))) (when (<= del ?\ ) (setq del LaTeX-default-verb-delimiter)) (if (TeX-active-mark) (progn (insert del) (goto-char (mark)) (insert del)) (insert del (read-from-minibuffer "Text: ") del)) (setq LaTeX-default-verb-delimiter del))) (defun TeX-arg-pair (optional first second) "Insert a pair of number, prompted by FIRST and SECOND. The numbers are surounded by parenthesizes and separated with a comma. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one." (insert "(" (read-string (concat first ": ")) "," (read-string (concat second ": ")) ")")) (defun TeX-arg-size (optional) "Insert width and height as a pair. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one." (TeX-arg-pair optional "Width" "Height")) (defun TeX-arg-coordinate (optional) "Insert x and y coordinate as a pair. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one." (TeX-arg-pair optional "X position" "Y position")) (defconst TeX-braces-default-association '(("[" . "]") ("\\{" . "\\}") ("(" . ")") ("|" . "|") ("\\|" . "\\|") ("/" . "/") ("\\backslash" . "\\backslash") ("\\lfloor" . "\\rfloor") ("\\lceil" . "\\rceil") ("\\langle" . "\\rangle"))) (defcustom TeX-braces-user-association nil "A list of your personal association of brace symbols. These are used for \\left and \\right. The car of each entry is the brace used with \\left, the cdr is the brace used with \\right." :group 'LaTeX-macro :group 'LaTeX-math :type '(repeat (cons :format "%v" (string :tag "Left") (string :tag "Right")))) (defvar TeX-braces-association (append TeX-braces-user-association TeX-braces-default-association) "A list of association of brace symbols for \\left and \\right. The car of each entry is the brace used with \\left, the cdr is the brace used with \\right.") (defvar TeX-left-right-braces '(("[") ("]") ("\\{") ("\\}") ("(") (")") ("|") ("\\|") ("/") ("\\backslash") ("\\lfloor") ("\\rfloor") ("\\lceil") ("\\rceil") ("\\langle") ("\\rangle") ("\\uparrow") ("\\Uparrow") ("\\downarrow") ("\\Downarrow") ("\\updownarrow") ("\\Updownarrow") (".")) "List of symbols which can follow the \\left or \\right command.") (defun TeX-arg-insert-braces (optional &optional prompt) "Prompt for a brace for \\left and insert the corresponding \\right. If OPTIONAL is non-nil, insert the resulting value as an optional argument, otherwise as a mandatory one. Use PROMPT as the prompt string." (save-excursion (backward-word 1) (backward-char) (LaTeX-newline) (indent-according-to-mode) (beginning-of-line 0) (if (looking-at "^[ \t]*$") (progn (delete-horizontal-space) (delete-char 1)))) (let ((left-brace (completing-read (TeX-argument-prompt optional prompt "Which brace") TeX-left-right-braces))) (insert left-brace) (LaTeX-newline) (indent-according-to-mode) (save-excursion (let ((right-brace (cdr (assoc left-brace TeX-braces-association)))) (LaTeX-newline) (insert TeX-esc "right") (if (and TeX-arg-right-insert-p right-brace) (insert right-brace) (insert (completing-read (TeX-argument-prompt optional prompt "Which brace") TeX-left-right-braces))) (indent-according-to-mode))))) (defun TeX-arg-key-val (optional key-val-alist) "Prompt for keys and values in KEY-VAL-ALIST. Insert the given value as a TeX macro argument. If OPTIONAL is non-nil, insert it as an optional argument. KEY-VAL-ALIST is an alist. The car of each element should be a string representing a key and the optional cdr should be a list with strings to be used as values for the key." (let ((options (multi-prompt-key-value (TeX-argument-prompt optional "Options (k=v)" nil) (if (symbolp key-val-alist) (eval key-val-alist) key-val-alist)))) (TeX-argument-insert options optional))) ;;; Verbatim constructs (defcustom LaTeX-verbatim-macros-with-delims '("verb" "verb*") "Macros for inline verbatim with arguments in delimiters, like \\foo|...|. Programs should not use this variable directly but the function `LaTeX-verbatim-macros-with-delims' which returns a value including buffer-local keyword additions via `LaTeX-verbatim-macros-with-delims-local' as well." :group 'LaTeX-macro :type '(repeat (string))) (defvar LaTeX-verbatim-macros-with-delims-local nil "Buffer-local variable for inline verbatim with args in delimiters. Style files should add constructs to this variable and not to `LaTeX-verbatim-macros-with-delims'. Programs should not use this variable directly but the function `LaTeX-verbatim-macros-with-delims' which returns a value including values of the variable `LaTeX-verbatim-macros-with-delims' as well.") (make-variable-buffer-local 'LaTeX-verbatim-macros-with-delims-local) (defcustom LaTeX-verbatim-macros-with-braces nil "Macros for inline verbatim with arguments in braces, like \\foo{...}. Programs should not use this variable directly but the function `LaTeX-verbatim-macros-with-braces' which returns a value including buffer-local keyword additions via `LaTeX-verbatim-macros-with-braces-local' as well." :group 'LaTeX-macro :type '(repeat (string))) (defvar LaTeX-verbatim-macros-with-braces-local nil "Buffer-local variable for inline verbatim with args in braces. Style files should add constructs to this variable and not to `LaTeX-verbatim-macros-with-braces'. Programs should not use this variable directly but the function `LaTeX-verbatim-macros-with-braces' which returns a value including values of the variable `LaTeX-verbatim-macros-with-braces' as well.") (make-variable-buffer-local 'LaTeX-verbatim-macros-with-braces-local) (defcustom LaTeX-verbatim-environments '("verbatim" "verbatim*") "Verbatim environments. Programs should not use this variable directly but the function `LaTeX-verbatim-environments' which returns a value including buffer-local keyword additions via `LaTeX-verbatim-environments-local' as well." :group 'LaTeX-environment :type '(repeat (string))) (defvar LaTeX-verbatim-environments-local nil "Buffer-local variable for inline verbatim environments. Style files should add constructs to this variable and not to `LaTeX-verbatim-environments'. Programs should not use this variable directly but the function `LaTeX-verbatim-environments' which returns a value including values of the variable `LaTeX-verbatim-environments' as well.") (make-variable-buffer-local 'LaTeX-verbatim-environments-local) (defun LaTeX-verbatim-macros-with-delims () "Return list of verbatim macros with delimiters." (append LaTeX-verbatim-macros-with-delims LaTeX-verbatim-macros-with-delims-local)) (defun LaTeX-verbatim-macros-with-braces () "Return list of verbatim macros with braces." (append LaTeX-verbatim-macros-with-braces LaTeX-verbatim-macros-with-braces-local)) (defun LaTeX-verbatim-environments () "Return list of verbatim environments." (append LaTeX-verbatim-environments LaTeX-verbatim-environments-local)) (defun LaTeX-verbatim-macro-boundaries () "Return boundaries of verbatim macro. Boundaries are returned as a cons cell where the car is the macro start and the cdr the macro end. Only macros which enclose their arguments with special non-parenthetical delimiters, like \\verb+foo+, are recognized." (save-excursion (let ((orig (point)) (verbatim-regexp (regexp-opt (LaTeX-verbatim-macros-with-delims) t))) ;; Search backwards for the macro start, unless we are facing one (unless (looking-at (concat (regexp-quote TeX-esc) verbatim-regexp)) (catch 'found (while (progn (skip-chars-backward (concat "^\n" (regexp-quote TeX-esc)) (line-beginning-position)) (when (looking-at verbatim-regexp) (throw 'found nil)) (or (bobp) (forward-char -1)) (/= (point) (line-beginning-position)))))) ;; Search forward for the macro end, unless we failed to find a start (unless (bolp) (let* ((beg (1- (point))) (macro-end (match-end 0)) ;; XXX: Here we assume we are dealing with \verb which ;; expects the delimiter right behind the command. ;; However, \lstinline can also cope with whitespace as ;; well as an optional argument after the command. (delimiter (buffer-substring-no-properties macro-end (1+ macro-end)))) ;; Heuristic: If an opening brace is encountered, search for ;; both the opening and the closing brace as an end marker. ;; Like that the function should work for \verb|...| as well ;; as for \url{...}. (when (string= delimiter TeX-grop) (setq delimiter (concat delimiter TeX-grcl))) (goto-char (1+ macro-end)) (skip-chars-forward (concat "^" delimiter)) (when (<= orig (point)) (cons beg (1+ (point))))))))) (defun LaTeX-current-verbatim-macro () "Return name of verbatim macro containing point, nil if none is present." (let ((macro-boundaries (LaTeX-verbatim-macro-boundaries))) (when macro-boundaries (save-excursion (goto-char (car macro-boundaries)) (forward-char (length TeX-esc)) (buffer-substring-no-properties (point) (progn (skip-chars-forward "@A-Za-z") (point))))))) (defun LaTeX-verbatim-p (&optional pos) "Return non-nil if position POS is in a verbatim-like construct." (when pos (goto-char pos)) (save-match-data (or (when (fboundp 'font-latex-faces-present-p) (font-latex-faces-present-p 'font-latex-verbatim-face)) (member (LaTeX-current-verbatim-macro) (LaTeX-verbatim-macros-with-delims)) (member (TeX-current-macro) (LaTeX-verbatim-macros-with-braces)) (member (LaTeX-current-environment) (LaTeX-verbatim-environments))))) ;;; Formatting (defcustom LaTeX-syntactic-comments t "If non-nil comments will be handled according to LaTeX syntax. This variable influences, among others, the behavior of indentation and filling which will take LaTeX syntax into consideration just as is in the non-commented source code." :type 'boolean :group 'LaTeX) ;;; Indentation ;; We are distinguishing two different types of comments: ;; ;; 1) Comments starting in column one (line comments) ;; ;; 2) Comments starting after column one with only whitespace ;; preceding it. ;; ;; (There is actually a third type: Comments preceded not only by ;; whitespace but by some code as well; so-called code comments. But ;; they are not relevant for the following explanations.) ;; ;; Additionally we are distinguishing two different types of ;; indentation: ;; ;; a) Outer indentation: Indentation before the comment character(s). ;; ;; b) Inner indentation: Indentation after the comment character(s) ;; (taking into account possible comment padding). ;; ;; Comments can be filled syntax-aware or not. ;; ;; In `doctex-mode' line comments should always be indented ;; syntax-aware and the comment character has to be anchored at the ;; first column (unless the appear in a macrocode environment). Other ;; comments not in the documentation parts always start after the ;; first column and can be indented syntax-aware or not. If they are ;; indented syntax-aware both the indentation before and after the ;; comment character(s) have to be checked and adjusted. Indentation ;; should not move the comment character(s) to the first column. With ;; `LaTeX-syntactic-comments' disabled, line comments should still be ;; indented syntax-aware. ;; ;; In `latex-mode' comments starting in different columns don't have ;; to be handled differently. They don't have to be anchored in ;; column one. That means that in any case indentation before and ;; after the comment characters has to be checked and adjusted. (defgroup LaTeX-indentation nil "Indentation of LaTeX code in AUCTeX" :group 'LaTeX :group 'TeX-indentation) (defcustom LaTeX-indent-level 2 "*Indentation of begin-end blocks in LaTeX." :group 'LaTeX-indentation :type 'integer) (defcustom LaTeX-item-indent (- LaTeX-indent-level) "*Extra indentation for lines beginning with an item." :group 'LaTeX-indentation :type 'integer) (defcustom LaTeX-item-regexp "\\(bib\\)?item\\b" "*Regular expression matching macros considered items." :group 'LaTeX-indentation :type 'regexp) (defcustom LaTeX-indent-environment-list '(("verbatim" current-indentation) ("verbatim*" current-indentation) ;; The following should have there own, smart indentation function. ;; Some other day. ("array") ("displaymath") ("eqnarray") ("eqnarray*") ("equation") ("equation*") ("picture") ("tabbing") ("table") ("table*") ("tabular") ("tabular*")) "Alist of environments with special indentation. The second element in each entry is the function to calculate the indentation level in columns." :group 'LaTeX-indentation :type '(repeat (list (string :tag "Environment") (option function)))) (defcustom LaTeX-indent-environment-check t "*If non-nil, check for any special environments." :group 'LaTeX-indentation :type 'boolean) (defcustom LaTeX-document-regexp "document" "Regexp matching environments in which the indentation starts at col 0." :group 'LaTeX-indentation :type 'regexp) (defcustom LaTeX-verbatim-regexp "verbatim\\*?" "*Regexp matching environments with indentation at col 0 for begin/end." :group 'LaTeX-indentation :type 'regexp) (defcustom LaTeX-begin-regexp "begin\\b" "*Regexp matching macros considered begins." :group 'LaTeX-indentation :type 'regexp) (defcustom LaTeX-end-regexp "end\\b" "*Regexp matching macros considered ends." :group 'LaTeX-indentation :type 'regexp) (defcustom LaTeX-left-right-indent-level LaTeX-indent-level "*The level of indentation produced by a \\left macro." :group 'LaTeX-indentation :type 'integer) (defcustom LaTeX-indent-comment-start-regexp "%" "*Regexp matching comments ending the indent level count. This means, we just count the LaTeX tokens \\left, \\right, \\begin, and \\end up to the first occurence of text matching this regexp. Thus, the default \"%\" stops counting the tokens at a comment. A value of \"%[^>]\" would allow you to alter the indentation with comments, e.g. with comment `%> \\begin'. Lines which start with `%' are not considered at all, regardless if this value." :group 'LaTeX-indentation :type 'regexp) (defvar docTeX-indent-inner-fixed `((,(concat (regexp-quote TeX-esc) "\\(begin\\|end\\)[ \t]*{macrocode\\*?}") 4 t) (,(concat (regexp-quote TeX-esc) "\\(begin\\|end\\)[ \t]*{\\(macro\\|environment\\)\\*?}") 0 nil)) "List of items which should have a fixed inner indentation. The items consist of three parts. The first is a regular expression which should match the respective string. The second is the amount of spaces to be used for indentation. The third toggles if comment padding is relevant or not. If t padding is part of the amount given, if nil the amount of spaces will be inserted after potential padding.") (defun LaTeX-indent-line () "Indent the line containing point, as LaTeX source. Add `LaTeX-indent-level' indentation in each \\begin{ - \\end{ block. Lines starting with an item is given an extra indentation of `LaTeX-item-indent'." (interactive) (let* ((case-fold-search nil) ;; Compute a fill prefix. Whitespace after the comment ;; characters will be disregarded and replaced by ;; `comment-padding'. (fill-prefix (and (TeX-in-commented-line) (save-excursion (beginning-of-line) (looking-at (concat "\\([ \t]*" TeX-comment-start-regexp "+\\)+")) (concat (match-string 0) (TeX-comment-padding-string))))) (overlays (when (featurep 'xemacs) ;; Isn't that fun? In Emacs an `(overlays-at ;; (line-beginning-position))' would do the ;; trick. How boring. (extent-list nil (line-beginning-position) (line-beginning-position) 'all-extents-closed-open 'overlay))) ol-specs) ;; XEmacs' `indent-to' function (at least in version 21.4.15) has ;; a bug which leads to the insertion of whitespace in front of an ;; invisible overlay. So during indentation we temporarily remove ;; the 'invisible property. (dolist (ol overlays) (when (extent-property ol 'invisible) (add-to-list 'ol-specs (list ol (extent-property ol 'invisible))) (set-extent-property ol 'invisible nil))) (save-excursion (cond ((and fill-prefix (TeX-in-line-comment) (eq major-mode 'doctex-mode)) ;; If point is in a line comment in `doctex-mode' we only ;; consider the inner indentation. (let ((inner-indent (LaTeX-indent-calculate 'inner))) (when (/= (LaTeX-current-indentation 'inner) inner-indent) (LaTeX-indent-inner-do inner-indent)))) ((and fill-prefix LaTeX-syntactic-comments) ;; In any other case of a comment we have to consider ;; outer and inner indentation if we do syntax-aware ;; indentation. (let ((inner-indent (LaTeX-indent-calculate 'inner)) (outer-indent (LaTeX-indent-calculate 'outer))) (when (/= (LaTeX-current-indentation 'inner) inner-indent) (LaTeX-indent-inner-do inner-indent)) (when (/= (LaTeX-current-indentation 'outer) outer-indent) (LaTeX-indent-outer-do outer-indent)))) (t ;; The default is to adapt whitespace before any ;; non-whitespace character, i.e. to do outer ;; indentation. (let ((outer-indent (LaTeX-indent-calculate 'outer))) (when (/= (LaTeX-current-indentation 'outer) outer-indent) (LaTeX-indent-outer-do outer-indent)))))) ;; Make the overlays invisible again. (dolist (ol-spec ol-specs) (set-extent-property (car ol-spec) 'invisible (cadr ol-spec))) (when (< (current-column) (save-excursion (LaTeX-back-to-indentation) (current-column))) (LaTeX-back-to-indentation)))) (defun LaTeX-indent-inner-do (inner-indent) ;; Small helper function for `LaTeX-indent-line' to perform ;; indentation after a comment character. It requires that ;; `LaTeX-indent-line' already set the appropriate variables and ;; should not be used outside of `LaTeX-indent-line'. (move-to-left-margin) (TeX-re-search-forward-unescaped (concat "\\(" TeX-comment-start-regexp "+[ \t]*\\)+") (line-end-position) t) (delete-region (line-beginning-position) (point)) (insert fill-prefix) (indent-to (+ inner-indent (length fill-prefix)))) (defun LaTeX-indent-outer-do (outer-indent) ;; Small helper function for `LaTeX-indent-line' to perform ;; indentation of normal lines or before a comment character in a ;; commented line. It requires that `LaTeX-indent-line' already set ;; the appropriate variables and should not be used outside of ;; `LaTeX-indent-line'. (back-to-indentation) (delete-region (line-beginning-position) (point)) (indent-to outer-indent)) (defun LaTeX-indent-calculate (&optional force-type) "Return the indentation of a line of LaTeX source. FORCE-TYPE can be used to force the calculation of an inner or outer indentation in case of a commented line. The symbols 'inner and 'outer are recognized." (save-excursion (LaTeX-back-to-indentation force-type) (let ((i 0) (list-length (safe-length docTeX-indent-inner-fixed)) entry found) (cond ((save-excursion (beginning-of-line) (bobp)) 0) ((and (eq major-mode 'doctex-mode) fill-prefix (TeX-in-line-comment) (progn (while (and (< i list-length) (not found)) (setq entry (nth i docTeX-indent-inner-fixed)) (when (looking-at (nth 0 entry)) (setq found t)) (setq i (1+ i))) found)) (if (nth 2 entry) (- (nth 1 entry) (if (integerp comment-padding) comment-padding (length comment-padding))) (nth 1 entry))) ((looking-at (concat (regexp-quote TeX-esc) "\\(begin\\|end\\){\\(" LaTeX-verbatim-regexp "\\)}")) ;; \end{verbatim} must be flush left, otherwise an unwanted ;; empty line appears in LaTeX's output. 0) ((and LaTeX-indent-environment-check ;; Special environments. (let ((entry (assoc (or LaTeX-current-environment (LaTeX-current-environment)) LaTeX-indent-environment-list))) (and entry (nth 1 entry) (funcall (nth 1 entry)))))) ((looking-at (concat (regexp-quote TeX-esc) "\\(" LaTeX-end-regexp "\\)")) ;; Backindent at \end. (- (LaTeX-indent-calculate-last force-type) LaTeX-indent-level)) ((looking-at (concat (regexp-quote TeX-esc) "right\\b")) ;; Backindent at \right. (- (LaTeX-indent-calculate-last force-type) LaTeX-left-right-indent-level)) ((looking-at (concat (regexp-quote TeX-esc) "\\(" LaTeX-item-regexp "\\)")) ;; Items. (+ (LaTeX-indent-calculate-last force-type) LaTeX-item-indent)) ((looking-at "}") ;; End brace in the start of the line. (- (LaTeX-indent-calculate-last force-type) TeX-brace-indent-level)) (t (LaTeX-indent-calculate-last force-type)))))) (defun LaTeX-indent-level-count () "Count indentation change caused by all \\left, \\right, \\begin, and \\end commands in the current line." (save-excursion (save-restriction (let ((count 0)) (narrow-to-region (point) (save-excursion (re-search-forward (concat "[^" TeX-esc "]" "\\(" LaTeX-indent-comment-start-regexp "\\)\\|\n\\|\\'")) (backward-char) (point))) (while (search-forward TeX-esc nil t) (cond ((looking-at "left\\b") (setq count (+ count LaTeX-left-right-indent-level))) ((looking-at "right\\b") (setq count (- count LaTeX-left-right-indent-level))) ((looking-at LaTeX-begin-regexp) (setq count (+ count LaTeX-indent-level))) ((looking-at LaTeX-end-regexp) (setq count (- count LaTeX-indent-level))) ((looking-at (regexp-quote TeX-esc)) (forward-char 1)))) count)))) (defun LaTeX-indent-calculate-last (&optional force-type) "Return the correct indentation of a normal line of text. The point is supposed to be at the beginning of the current line. FORCE-TYPE can be used to force the calculation of an inner or outer indentation in case of a commented line. The symbols 'inner and 'outer are recognized." (let (line-comment-current-flag line-comment-last-flag comment-current-flag comment-last-flag) (beginning-of-line) (setq line-comment-current-flag (TeX-in-line-comment) comment-current-flag (TeX-in-commented-line)) (if comment-current-flag (skip-chars-backward "%\n\t ") (skip-chars-backward "\n\t ")) (beginning-of-line) ;; If we are called in a non-comment line, skip over comment ;; lines. The computation of indentation should in this case ;; rather take the last non-comment line into account. ;; Otherwise there might arise problems with e.g. multi-line ;; code comments. This behavior is not enabled in docTeX mode ;; where large amounts of line comments may have to be skipped ;; and indentation should not be influenced by unrelated code in ;; other macrocode environments. (while (and (not (eq major-mode 'doctex-mode)) (not comment-current-flag) (TeX-in-commented-line) (not (bobp))) (skip-chars-backward "\n\t ") (beginning-of-line)) (setq line-comment-last-flag (TeX-in-line-comment) comment-last-flag (TeX-in-commented-line)) (LaTeX-back-to-indentation force-type) ;; Separate line comments and other stuff (normal text/code and ;; code comments). Additionally we don't want to compute inner ;; indentation when a commented and a non-commented line are ;; compared. (cond ((or (and (eq major-mode 'doctex-mode) (or (and line-comment-current-flag (not line-comment-last-flag)) (and (not line-comment-current-flag) line-comment-last-flag))) (and force-type (eq force-type 'inner) (or (and comment-current-flag (not comment-last-flag)) (and (not comment-current-flag) comment-last-flag)))) 0) ((looking-at (concat (regexp-quote TeX-esc) "begin *{\\(" LaTeX-document-regexp "\\)}")) ;; I dislike having all of the document indented... (+ (LaTeX-current-indentation force-type) ;; Some people have opening braces at the end of the ;; line, e.g. in case of `\begin{letter}{%'. (TeX-brace-count-line))) ((and (eq major-mode 'doctex-mode) (looking-at (concat (regexp-quote TeX-esc) "end[ \t]*{macrocode\\*?}")) fill-prefix (TeX-in-line-comment)) ;; Reset indentation to zero after a macrocode ;; environment. 0) ((looking-at (concat (regexp-quote TeX-esc) "begin *{\\(" LaTeX-verbatim-regexp "\\)}")) 0) ((looking-at (concat (regexp-quote TeX-esc) "end *{\\(" LaTeX-verbatim-regexp "\\)}")) ;; If I see an \end{verbatim} in the previous line I skip ;; back to the preceding \begin{verbatim}. (save-excursion (if (re-search-backward (concat (regexp-quote TeX-esc) "begin *{\\(" LaTeX-verbatim-regexp "\\)}") 0 t) (LaTeX-indent-calculate-last force-type) 0))) (t (+ (LaTeX-current-indentation force-type) (if (not (and force-type (eq force-type 'outer) (TeX-in-commented-line))) (+ (LaTeX-indent-level-count) (TeX-brace-count-line)) 0) (cond ((looking-at (concat (regexp-quote TeX-esc) "\\(" LaTeX-end-regexp "\\)")) LaTeX-indent-level) ((looking-at (concat (regexp-quote TeX-esc) "right\\b")) LaTeX-left-right-indent-level) ((looking-at (concat (regexp-quote TeX-esc) "\\(" LaTeX-item-regexp "\\)")) (- LaTeX-item-indent)) ((looking-at "}") TeX-brace-indent-level) (t 0))))))) (defun LaTeX-current-indentation (&optional force-type) "Return the indentation of a line. FORCE-TYPE can be used to force the calculation of an inner or outer indentation in case of a commented line. The symbols 'inner and 'outer are recognized." (if (and fill-prefix (or (and force-type (eq force-type 'inner)) (and (not force-type) (or ;; If `LaTeX-syntactic-comments' is not enabled, ;; do conventional indentation LaTeX-syntactic-comments ;; Line comments in `doctex-mode' are always ;; indented syntax-aware so we need their inner ;; indentation. (and (TeX-in-line-comment) (eq major-mode 'doctex-mode)))))) ;; INNER indentation (save-excursion (beginning-of-line) (looking-at (concat "\\(?:[ \t]*" TeX-comment-start-regexp "+\\)+" "\\([ \t]*\\)")) (- (length (match-string 1)) (length (TeX-comment-padding-string)))) ;; OUTER indentation (current-indentation))) (defun LaTeX-back-to-indentation (&optional force-type) "Move point to the first non-whitespace character on this line. If it is commented and comments are formatted syntax-aware move point to the first non-whitespace character after the comment character(s). The optional argument FORCE-TYPE can be used to force point being moved to the inner or outer indentation in case of a commented line. The symbols 'inner and 'outer are recognized." (if (or (and force-type (eq force-type 'inner)) (and (not force-type) (or (and (TeX-in-line-comment) (eq major-mode 'doctex-mode)) (and (TeX-in-commented-line) LaTeX-syntactic-comments)))) (progn (beginning-of-line) ;; Should this be anchored at the start of the line? (TeX-re-search-forward-unescaped (concat "\\(?:" TeX-comment-start-regexp "+[ \t]*\\)+") (line-end-position) t)) (back-to-indentation))) ;;; Filling (defcustom LaTeX-fill-break-at-separators nil "List of separators before or after which respectively a line break will be inserted if they do not fit into one line." :group 'LaTeX :type '(set :tag "Contents" (const :tag "Opening Brace" \{) (const :tag "Closing Brace" \}) (const :tag "Opening Bracket" \[) (const :tag "Opening Inline Math Switches" \\\() (const :tag "Closing Inline Math Switches" \\\)) (const :tag "Opening Display Math Switch" \\\[) (const :tag "Closing Display Math Switch" \\\]))) (defcustom LaTeX-fill-break-before-code-comments t "If non-nil, a line with some code followed by a comment will be broken before the last non-comment word in case the comment does not fit into the line." :group 'LaTeX :type 'boolean) (defvar LaTeX-nospace-between-char-regexp (if (featurep 'xemacs) (if (and (boundp 'word-across-newline) word-across-newline) word-across-newline ;; NOTE: Ensure not to have a value of nil for such a rare case that ;; somebody removes the mule test in `LaTeX-fill-delete-newlines' so that ;; it could match only "\n" and this could lead to problem. XEmacs does ;; not have a category `\c|' and `\ct' means `Chinese Taiwan' in XEmacs. "\\(\\cj\\|\\cc\\|\\ct\\)") "\\c|") "Regexp matching a character where no interword space is necessary. Words formed by such characters can be broken across newlines.") (defvar LaTeX-fill-newline-hook nil "Hook run after `LaTeX-fill-newline' inserted and indented a new line.") (defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) "Fill region as one paragraph. Break lines to fit `fill-column', but leave all lines ending with \\\\ \(plus its optional argument) alone. Lines with code comments and lines ending with `\par' are included in filling but act as boundaries. Prefix arg means justify too. From program, pass args FROM, TO and JUSTIFY-FLAG." (interactive "*r\nP") (let ((end-marker (save-excursion (goto-char to) (point-marker)))) (if (or (assoc (LaTeX-current-environment) LaTeX-indent-environment-list) ;; This could be generalized, if there are more cases where ;; a special string at the start of a region to fill should ;; inhibit filling. (progn (save-excursion (goto-char from) (looking-at (concat TeX-comment-start-regexp "+[ \t]*" "Local Variables:"))))) ;; Filling disabled, only do indentation. (indent-region from to nil) (save-restriction (goto-char from) (while (< (point) end-marker) (if (re-search-forward (concat "\\(" ;; Code comments. "[^\r\n%\\]\\([ \t]\\|\\\\\\\\\\)*" TeX-comment-start-regexp "\\|" ;; Lines ending with `\par'. "\\(\\=\\|[^" TeX-esc "\n]\\)\\(" (regexp-quote (concat TeX-esc TeX-esc)) "\\)*" (regexp-quote TeX-esc) "par[ \t]*" "\\({[ \t]*}\\)?[ \t]*$" "\\)\\|\\(" ;; Lines ending with `\\'. (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\(\\s-*\\*\\)?" "\\(\\s-*\\[[^]]*\\]\\)?" "\\s-*$\\)") end-marker t) (progn (goto-char (line-end-position)) (delete-horizontal-space) ;; I doubt very much if we want justify - ;; this is a line with \\ ;; if you think otherwise - uncomment the next line ;; (and justify-flag (justify-current-line)) (forward-char) ;; keep our position in a buffer (save-excursion ;; Code comments and lines ending with `\par' are ;; included in filling. Lines ending with `\\' are ;; skipped. (if (match-string 1) (LaTeX-fill-region-as-para-do from (point) justify-flag) (LaTeX-fill-region-as-para-do from (line-beginning-position 0) justify-flag) ;; At least indent the line ending with `\\'. (indent-according-to-mode))) (setq from (point))) ;; ELSE part follows - loop termination relies on a fact ;; that (LaTeX-fill-region-as-para-do) moves point past ;; the filled region (LaTeX-fill-region-as-para-do from end-marker justify-flag))))))) ;; The content of `LaTeX-fill-region-as-para-do' was copied from the ;; function `fill-region-as-paragraph' in `fill.el' (CVS Emacs, ;; January 2004) and adapted to the needs of AUCTeX. (defun LaTeX-fill-region-as-para-do (from to &optional justify nosqueeze squeeze-after) "Fill the region defined by FROM and TO as one paragraph. It removes any paragraph breaks in the region and extra newlines at the end, indents and fills lines between the margins given by the `current-left-margin' and `current-fill-column' functions. \(In most cases, the variable `fill-column' controls the width.) It leaves point at the beginning of the line following the paragraph. Normally performs justification according to the `current-justification' function, but with a prefix arg, does full justification instead. From a program, optional third arg JUSTIFY can specify any type of justification. Fourth arg NOSQUEEZE non-nil means not to make spaces between words canonical before filling. Fifth arg SQUEEZE-AFTER, if non-nil, means don't canonicalize spaces before that position. Return the `fill-prefix' used for filling. If `sentence-end-double-space' is non-nil, then period followed by one space does not end a sentence, so don't break a line there." (interactive (progn (barf-if-buffer-read-only) (list (region-beginning) (region-end) (if current-prefix-arg 'full)))) (unless (memq justify '(t nil none full center left right)) (setq justify 'full)) ;; Make sure "to" is the endpoint. (goto-char (min from to)) (setq to (max from to)) ;; Ignore blank lines at beginning of region. (skip-chars-forward " \t\n") (let ((from-plus-indent (point)) (oneleft nil)) (beginning-of-line) (setq from (point)) ;; Delete all but one soft newline at end of region. ;; And leave TO before that one. (goto-char to) (while (and (> (point) from) (eq ?\n (char-after (1- (point))))) (if (and oneleft (not (and use-hard-newlines (get-text-property (1- (point)) 'hard)))) (delete-backward-char 1) (backward-char 1) (setq oneleft t))) (setq to (copy-marker (point) t)) (goto-char from-plus-indent)) (if (not (> to (point))) nil ;; There is no paragraph, only whitespace: exit now. (or justify (setq justify (current-justification))) ;; Don't let Adaptive Fill mode alter the fill prefix permanently. (let ((fill-prefix fill-prefix)) ;; Figure out how this paragraph is indented, if desired. (when (and adaptive-fill-mode (or (null fill-prefix) (string= fill-prefix ""))) (setq fill-prefix (fill-context-prefix from to)) ;; Ignore a white-space only fill-prefix ;; if we indent-according-to-mode. (when (and fill-prefix fill-indent-according-to-mode (string-match "\\`[ \t]*\\'" fill-prefix)) (setq fill-prefix nil))) (goto-char from) (beginning-of-line) (if (not justify) ; filling disabled: just check indentation (progn (goto-char from) (while (< (point) to) (if (and (not (eolp)) (< (LaTeX-current-indentation) (current-left-margin))) (fill-indent-to-left-margin)) (forward-line 1))) (when use-hard-newlines (remove-text-properties from to '(hard nil))) ;; Make sure first line is indented (at least) to left margin... (indent-according-to-mode) ;; COMPATIBILITY for Emacs <= 21.1 (if (fboundp 'fill-delete-prefix) ;; Delete the fill-prefix from every line. (fill-delete-prefix from to fill-prefix) ;; Delete the comment prefix and any whitespace from every ;; line of the region in concern except the first. (The ;; implementation is heuristic to a certain degree.) (save-excursion (goto-char from) (forward-line 1) (when (< (point) to) (while (re-search-forward (concat "^[ \t]+\\|^[ \t]*" TeX-comment-start-regexp "+[ \t]*") to t) (delete-region (match-beginning 0) (match-end 0)))))) (setq from (point)) ;; FROM, and point, are now before the text to fill, ;; but after any fill prefix on the first line. (LaTeX-fill-delete-newlines from to justify nosqueeze squeeze-after) ;; This is the actual FILLING LOOP. (goto-char from) (let* (linebeg (code-comment-start (save-excursion (LaTeX-back-to-indentation) (TeX-search-forward-comment-start (line-end-position)))) (end-marker (save-excursion (goto-char (or code-comment-start to)) (point-marker))) (LaTeX-current-environment (LaTeX-current-environment))) ;; Fill until point is greater than the end point. If there ;; is a code comment, use the code comment's start as a ;; limit. (while (and (< (point) (marker-position end-marker)) (or (not code-comment-start) (and code-comment-start (> (- (marker-position end-marker) (line-beginning-position)) fill-column)))) (setq linebeg (point)) (move-to-column (current-fill-column)) (if (when (< (point) (marker-position end-marker)) ;; Find the position where we'll break the line. (forward-char 1) ; Use an immediately following ; space, if any. (LaTeX-fill-move-to-break-point linebeg) ;; Check again to see if we got to the end of ;; the paragraph. (skip-chars-forward " \t") (< (point) (marker-position end-marker))) ;; Found a place to cut. (progn (LaTeX-fill-newline) (when justify ;; Justify the line just ended, if desired. (save-excursion (forward-line -1) (justify-current-line justify nil t)))) (goto-char end-marker) ;; Justify this last line, if desired. (if justify (justify-current-line justify t t)))) ;; Fill a code comment if necessary. (Enable this code if ;; you want the comment part in lines with code comments to ;; be filled. Originally it was disabled because the ;; indentation code indented the lines following the line ;; with the code comment to the column of the comment ;; starters. That means, it would have looked like this: ;; | code code code % comment ;; | % comment ;; | code code code ;; This now (2005-07-29) is not the case anymore. But as ;; filling code comments like this would split a single ;; paragraph into two separate ones, we still leave it ;; disabled. I leave the code here in case it is useful for ;; somebody. ;; (when (and code-comment-start ;; (> (- (line-end-position) (line-beginning-position)) ;; fill-column)) ;; (LaTeX-fill-code-comment justify)) ;; The following is an alternative strategy to minimize the ;; occurence of overfull lines with code comments. A line ;; will be broken before the last non-comment word if the ;; code comment does not fit into the line. (when (and LaTeX-fill-break-before-code-comments code-comment-start (> (- (line-end-position) (line-beginning-position)) fill-column)) (beginning-of-line) (goto-char end-marker) (while (not (looking-at TeX-comment-start-regexp)) (forward-char)) (skip-chars-backward " \t") (skip-chars-backward "^ \t\n") (unless (or (bolp) ;; Comment starters and whitespace. (TeX-looking-at-backward (concat "^\\([ \t]*" TeX-comment-start-regexp "+\\)*" "[ \t]*") (line-beginning-position))) (LaTeX-fill-newline))))) ;; Leave point after final newline. (goto-char to) (unless (eobp) (forward-char 1)) ;; Return the fill-prefix we used fill-prefix))) ;; Following lines are copied from `fill.el' (CVS Emacs, March 2005). ;; The `fill-space' property carries the string with which a newline should be ;; replaced when unbreaking a line (in fill-delete-newlines). It is added to ;; newline characters by fill-newline when the default behavior of ;; fill-delete-newlines is not what we want. (unless (featurep 'xemacs) ;; COMPATIBILITY for Emacs < 22.1 (add-to-list 'text-property-default-nonsticky '(fill-space . t))) (defun LaTeX-fill-delete-newlines (from to justify nosqueeze squeeze-after) ;; COMPATIBILITY for Emacs < 22.1 and XEmacs (if (fboundp 'fill-delete-newlines) (fill-delete-newlines from to justify nosqueeze squeeze-after) (if (featurep 'xemacs) (when (featurep 'mule) (goto-char from) (let ((unwished-newline (concat LaTeX-nospace-between-char-regexp "\n" LaTeX-nospace-between-char-regexp))) (while (re-search-forward unwished-newline to t) (skip-chars-backward "^\n") (delete-char -1)))) ;; This else-sentence was copied from the function `fill-delete-newlines' ;; in `fill.el' (CVS Emacs, 2005-02-17) and adapted accordingly. (while (search-forward "\n" to t) (if (get-text-property (match-beginning 0) 'fill-space) (replace-match (get-text-property (match-beginning 0) 'fill-space)) (let ((prev (char-before (match-beginning 0))) (next (following-char))) (when (or (aref (char-category-set next) ?|) (aref (char-category-set prev) ?|)) (delete-char -1)))))) ;; Make sure sentences ending at end of line get an extra space. (if (or (not (boundp 'sentence-end-double-space)) sentence-end-double-space) (progn (goto-char from) (while (re-search-forward "[.?!][]})\"']*$" to t) (insert ? )))) ;; Then change all newlines to spaces. (let ((point-max (progn (goto-char to) (skip-chars-backward "\n") (point)))) (subst-char-in-region from point-max ?\n ?\ )) (goto-char from) (skip-chars-forward " \t") ;; Remove extra spaces between words. (unless (and nosqueeze (not (eq justify 'full))) (canonically-space-region (or squeeze-after (point)) to) ;; Remove trailing whitespace. (goto-char (line-end-position)) (delete-char (- (skip-chars-backward " \t")))))) (defun LaTeX-fill-move-to-break-point (linebeg) "Move to the position where the line should be broken." ;; COMPATIBILITY for Emacs < 22.1 and XEmacs (if (fboundp 'fill-move-to-break-point) (fill-move-to-break-point linebeg) (if (featurep 'mule) (if (TeX-looking-at-backward (concat LaTeX-nospace-between-char-regexp ".?") 2) ;; Cancel `forward-char' which is called just before ;; `LaTeX-fill-move-to-break-point' if the char before point matches ;; `LaTeX-nospace-between-char-regexp'. (backward-char 1) (when (re-search-backward (concat " \\|\n\\|" LaTeX-nospace-between-char-regexp) linebeg 'move) (forward-char 1))) (skip-chars-backward "^ \n")) ;; Prevent infinite loops: If we cannot find a place to break ;; while searching backward, search forward again. (when (save-excursion (skip-chars-backward " \t%") (bolp)) (skip-chars-forward "^ \n" (point-max))) ;; This code was copied from the function `fill-move-to-break-point' ;; in `fill.el' (CVS Emacs, 2005-02-22) and adapted accordingly. (when (and (< linebeg (point)) ;; If we are going to break the line after or ;; before a non-ascii character, we may have to ;; run a special function for the charset of the ;; character to find the correct break point. (boundp 'enable-multibyte-characters) enable-multibyte-characters (fboundp 'charset-after) ; Non-MULE XEmacsen don't have this. (not (and (eq (charset-after (1- (point))) 'ascii) (eq (charset-after (point)) 'ascii)))) ;; Make sure we take SOMETHING after the fill prefix if any. (if (fboundp 'fill-find-break-point) (fill-find-break-point linebeg) (when (fboundp 'kinsoku-process) ;XEmacs (kinsoku-process))))) ;; Prevent line break between 2-byte char and 1-byte char. (when (and (featurep 'mule) enable-multibyte-characters (or (and (not (looking-at LaTeX-nospace-between-char-regexp)) (TeX-looking-at-backward LaTeX-nospace-between-char-regexp 1)) (and (not (TeX-looking-at-backward LaTeX-nospace-between-char-regexp 1)) (looking-at LaTeX-nospace-between-char-regexp))) (re-search-backward (concat LaTeX-nospace-between-char-regexp LaTeX-nospace-between-char-regexp LaTeX-nospace-between-char-regexp "\\|" ".\\ca\\s +\\ca") linebeg t)) (if (looking-at "..\\c>") (forward-char 1) (forward-char 2))) ;; Cater for Japanese Macro (when (and (boundp 'japanese-TeX-mode) japanese-TeX-mode (aref (char-category-set (char-after)) ?j) (TeX-looking-at-backward (concat (regexp-quote TeX-esc) TeX-token-char "*") (1- (- (point) linebeg))) (not (TeX-escaped-p (match-beginning 0)))) (goto-char (match-beginning 0))) ;; Cater for \verb|...| (and similar) contructs which should not be ;; broken. (FIXME: Make it work with shortvrb.sty (also loaded by ;; doc.sty) where |...| is allowed. Arbitrary delimiters may be ;; chosen with \MakeShortVerb{}.) This could probably be ;; handled with `fill-nobreak-predicate', but this is not available ;; in XEmacs. (let ((final-breakpoint (point)) (verb-macros (regexp-opt (append (LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-braces))))) (save-excursion ;; Look for the start of a verbatim macro in the current line. (when (re-search-backward (concat (regexp-quote TeX-esc) "\\(?:" verb-macros "\\)\\([^a-z@*]\\)") (line-beginning-position) t) ;; Determine start and end of verbatim macro. (let ((beg (point)) (end (if (not (string-match "[ [{]" (match-string 1))) (cdr (LaTeX-verbatim-macro-boundaries)) (TeX-find-macro-end)))) ;; Determine if macro end is behind fill column. (when (and end (> (- end (line-beginning-position)) (current-fill-column)) (> end final-breakpoint)) ;; Search backwards for place to break before the macro. (goto-char beg) (skip-chars-backward "^ \n") ;; Determine if point ended up at the beginning of the line. (when (save-excursion (skip-chars-backward " \t%") (bolp)) ;; Search forward for a place to break after the macro. (goto-char end) (skip-chars-forward "^ \n" (point-max))) (setq final-breakpoint (point)))))) (goto-char final-breakpoint)) (when LaTeX-fill-break-at-separators (let ((orig-breakpoint (point)) (final-breakpoint (point)) start-point math-sep) (save-excursion (beginning-of-line) (LaTeX-back-to-indentation) (setq start-point (point)) ;; Find occurences of [, $, {, }, \(, \), \[, \] or $$. (while (and (= final-breakpoint orig-breakpoint) (TeX-re-search-forward-unescaped (concat "[[{}]\\|\\$\\$?\\|" (regexp-quote TeX-esc) "[][()]") orig-breakpoint t)) (let ((match-string (match-string 0))) (cond ;; [ (opening bracket) (The closing bracket should ;; already be handled implicitely by the code for the ;; opening brace.) ((save-excursion (and (memq '\[ LaTeX-fill-break-at-separators) (string= match-string "[") (TeX-re-search-forward-unescaped (concat "\\][ \t]*{") (line-end-position) t) (> (- (or (TeX-find-closing-brace) (line-end-position)) (line-beginning-position)) fill-column))) (save-excursion (skip-chars-backward "^ \n") (when (> (point) start-point) (setq final-breakpoint (point))))) ;; { (opening brace) ((save-excursion (and (memq '\{ LaTeX-fill-break-at-separators) (string= match-string "{") (> (- (save-excursion ;; `TeX-find-closing-brace' is not enough ;; if there is no breakpoint in form of ;; whitespace after the brace. (goto-char (or (TeX-find-closing-brace) (line-end-position))) (skip-chars-forward "^ \t\n") (point)) (line-beginning-position)) fill-column))) (save-excursion (skip-chars-backward "^ \n") ;; The following is a primitive and error-prone method ;; to cope with point probably being inside square ;; brackets. A better way would be to use functions ;; to determine if point is inside an optional ;; argument and to jump to the start and end brackets. (when (save-excursion (TeX-re-search-forward-unescaped (concat "\\][ \t]*{") orig-breakpoint t)) (TeX-search-backward-unescaped "[" (line-beginning-position) t) (skip-chars-backward "^ \n")) (when (> (point) start-point) (setq final-breakpoint (point))))) ;; } (closing brace) ((save-excursion (and (memq '\} LaTeX-fill-break-at-separators) (string= match-string "}") (save-excursion (backward-char 2) (not (TeX-find-opening-brace nil (line-beginning-position)))))) (save-excursion (skip-chars-forward "^ \n") (when (> (point) start-point) (setq final-breakpoint (point))))) ;; $ or \( or \[ or $$ (opening math) ((save-excursion (and (or (and (memq '\\\( LaTeX-fill-break-at-separators) (or (and (string= match-string "$") (texmathp)) (string= match-string "\\("))) (and (memq '\\\[ LaTeX-fill-break-at-separators) (or (string= match-string "\\[") (and (string= match-string "$$") (texmathp))))) (> (- (save-excursion (TeX-search-forward-unescaped (cond ((string= match-string "\\(") (concat TeX-esc ")")) ((string= match-string "$") "$") ((string= match-string "$$") "$$") (t (concat TeX-esc "]"))) (point-max) t) (skip-chars-forward "^ \n") (point)) (line-beginning-position)) fill-column))) (save-excursion (skip-chars-backward "^ \n") (when (> (point) start-point) (setq final-breakpoint (point))))) ;; $ or \) or \] or $$ (closing math) ((save-excursion (and (or (and (memq '\\\) LaTeX-fill-break-at-separators) (or (and (string= match-string "$") (not (texmathp))) (string= match-string "\\)"))) (and (memq '\\\] LaTeX-fill-break-at-separators) (or (string= match-string "\\]") (and (string= match-string "$$") (not (texmathp)))))) (if (member match-string '("$" "$$")) (save-excursion (skip-chars-backward "$") (not (TeX-search-backward-unescaped match-string (line-beginning-position) t))) (texmathp-match-switch (line-beginning-position))))) (save-excursion (skip-chars-forward "^ \n") (when (> (point) start-point) (setq final-breakpoint (point))))))))) (goto-char final-breakpoint)))) ;; The content of `LaTeX-fill-newline' was copied from the function ;; `fill-newline' in `fill.el' (CVS Emacs, January 2004) and adapted ;; to the needs of AUCTeX. (defun LaTeX-fill-newline () "Replace whitespace here with one newline and indent the line." (skip-chars-backward " \t") (newline 1) ;; COMPATIBILITY for XEmacs (unless (featurep 'xemacs) ;; Give newline the properties of the space(s) it replaces (set-text-properties (1- (point)) (point) (text-properties-at (point))) (and (looking-at "\\( [ \t]*\\)\\(\\c|\\)?") (or (aref (char-category-set (or (char-before (1- (point))) ?\000)) ?|) (match-end 2)) ;; When refilling later on, this newline would normally not ;; be replaced by a space, so we need to mark it specially to ;; re-install the space when we unfill. (put-text-property (1- (point)) (point) 'fill-space (match-string 1))) ;; COMPATIBILITY for Emacs <= 21.3 (when (boundp 'fill-nobreak-invisible) ;; If we don't want breaks in invisible text, don't insert ;; an invisible newline. (if fill-nobreak-invisible (remove-text-properties (1- (point)) (point) '(invisible t))))) ;; Insert the fill prefix. (and fill-prefix (not (equal fill-prefix "")) ;; Markers that were after the whitespace are now at point: insert ;; before them so they don't get stuck before the prefix. (insert-before-markers-and-inherit fill-prefix)) (indent-according-to-mode) (run-hooks 'LaTeX-fill-newline-hook)) (defun LaTeX-fill-paragraph (&optional justify) "Like `fill-paragraph', but handle LaTeX comments. If any of the current line is a comment, fill the comment or the paragraph of it that point is in. Code comments, i.e. comments with uncommented code preceding them in the same line, will not be filled unless the cursor is placed on the line with the code comment. If LaTeX syntax is taken into consideration during filling depends on the value of `LaTeX-syntactic-comments'." (interactive "P") (if (save-excursion (beginning-of-line) (looking-at (concat TeX-comment-start-regexp "*[ \t]*$"))) ;; Don't do anything if we look at an empty line and let ;; `fill-paragraph' think we successfully filled the paragraph. t (let (;; Non-nil if the current line contains a comment. has-comment ;; Non-nil if the current line contains code and a comment. has-code-and-comment code-comment-start ;; If has-comment, the appropriate fill-prefix for the comment. comment-fill-prefix) ;; Figure out what kind of comment we are looking at. (cond ;; A line only with potential whitespace followed by a ;; comment on it? ((save-excursion (beginning-of-line) (looking-at (concat "^[ \t]*" TeX-comment-start-regexp "\\(" TeX-comment-start-regexp "\\|[ \t]\\)*"))) (setq has-comment t comment-fill-prefix (TeX-match-buffer 0))) ;; A line with some code, followed by a comment? ((and (setq code-comment-start (save-excursion (beginning-of-line) (TeX-search-forward-comment-start (line-end-position)))) (> (point) code-comment-start) (not (TeX-in-commented-line)) (save-excursion (goto-char code-comment-start) ;; See if there is at least one non-whitespace character ;; before the comment starts. (re-search-backward "[^ \t\n]" (line-beginning-position) t))) (setq has-comment t has-code-and-comment t))) (cond ;; Code comments. (has-code-and-comment (save-excursion (when (>= (- code-comment-start (line-beginning-position)) fill-column) ;; If start of code comment is beyond fill column, fill it as a ;; regular paragraph before it is filled as a code comment. (let ((end-marker (save-excursion (end-of-line) (point-marker)))) (LaTeX-fill-region-as-paragraph (line-beginning-position) (line-beginning-position 2) justify) (goto-char end-marker) (beginning-of-line))) (LaTeX-fill-code-comment justify))) ;; Syntax-aware filling: ;; * `LaTeX-syntactic-comments' enabled: Everything. ;; * `LaTeX-syntactic-comments' disabled: Uncommented code and ;; line comments in `doctex-mode'. ((or (or LaTeX-syntactic-comments (and (not LaTeX-syntactic-comments) (not has-comment))) (and (eq major-mode 'doctex-mode) (TeX-in-line-comment))) (let ((fill-prefix comment-fill-prefix)) (save-excursion (let* ((end (progn (LaTeX-forward-paragraph) (or (bolp) (newline 1)) (and (eobp) (not (bolp)) (open-line 1)) (point))) (start (progn (LaTeX-backward-paragraph) (while (and (looking-at (concat "$\\|[ \t]+$\\|" "[ \t]*" TeX-comment-start-regexp "+[ \t]*$")) (< (point) end)) (forward-line)) (point)))) (LaTeX-fill-region-as-paragraph start end justify))))) ;; Non-syntax-aware filling. (t (save-excursion (save-restriction (beginning-of-line) (narrow-to-region ;; Find the first line we should include in the region to fill. (save-excursion (while (and (zerop (forward-line -1)) (looking-at (concat "^[ \t]*" TeX-comment-start-regexp)))) ;; We may have gone too far. Go forward again. (or (looking-at (concat ".*" TeX-comment-start-regexp)) (forward-line 1)) (point)) ;; Find the beginning of the first line past the region to fill. (save-excursion (while (progn (forward-line 1) (looking-at (concat "^[ \t]*" TeX-comment-start-regexp)))) (point))) ;; The definitions of `paragraph-start' and ;; `paragraph-separate' will still make ;; `forward-paragraph' and `backward-paragraph' stop at ;; the respective (La)TeX commands. If these should be ;; disregarded, the definitions would have to be changed ;; accordingly. (Lines with only `%' characters on them ;; can be paragraph boundaries.) (let* ((paragraph-start (concat paragraph-start "\\|" "\\(" TeX-comment-start-regexp "\\|[ \t]\\)*$")) (paragraph-separate (concat paragraph-separate "\\|" "\\(" TeX-comment-start-regexp "\\|[ \t]\\)*$")) (fill-prefix comment-fill-prefix) (end (progn (forward-paragraph) (or (bolp) (newline 1)) (point))) (beg (progn (backward-paragraph) (point)))) (fill-region-as-paragraph beg end justify nil (save-excursion (goto-char beg) (if (looking-at fill-prefix) nil (re-search-forward comment-start-skip nil t) (point))))))))) t))) (defun LaTeX-fill-code-comment (&optional justify-flag) "Fill a line including code followed by a comment." (let ((beg (line-beginning-position)) fill-prefix code-comment-start) (indent-according-to-mode) (when (when (setq code-comment-start (save-excursion (goto-char beg) (TeX-search-forward-comment-start (line-end-position)))) (goto-char code-comment-start) (while (not (looking-at TeX-comment-start-regexp)) (forward-char)) ;; See if there is at least one non-whitespace character ;; before the comment starts. (save-excursion (re-search-backward "[^ \t\n]" (line-beginning-position) t))) (setq fill-prefix (concat (if indent-tabs-mode (concat (make-string (/ (current-column) tab-width) ?\t) (make-string (% (current-column) tab-width) ?\ )) (make-string (current-column) ?\ )) (progn (looking-at (concat TeX-comment-start-regexp "+[ \t]*")) (TeX-match-buffer 0)))) (fill-region-as-paragraph beg (line-beginning-position 2) justify-flag nil (save-excursion (goto-char beg) (if (looking-at fill-prefix) nil (re-search-forward comment-start-skip nil t) (point))))))) (defun LaTeX-fill-region (from to &optional justify what) "Fill and indent the text in region from FROM to TO as LaTeX text. Prefix arg (non-nil third arg JUSTIFY, if called from program) means justify as well. Fourth arg WHAT is a word to be displayed when formatting." (interactive "*r\nP") (save-excursion (let ((to (set-marker (make-marker) to)) (next-par (make-marker))) (goto-char from) (beginning-of-line) (setq from (point)) (catch 'end-of-buffer (while (and (< (point) to)) (message "Formatting%s ... %d%%" (or what "") (/ (* 100 (- (point) from)) (- to from))) (save-excursion (LaTeX-fill-paragraph justify)) (if (marker-position next-par) (goto-char (marker-position next-par)) (LaTeX-forward-paragraph)) (when (eobp) (throw 'end-of-buffer t)) (LaTeX-forward-paragraph) (set-marker next-par (point)) (LaTeX-backward-paragraph) (while (and (not (eobp)) (looking-at (concat "^\\($\\|[ \t]+$\\|[ \t]*" TeX-comment-start-regexp "+[ \t]*$\\)"))) (forward-line 1)))) (set-marker to nil))) (message "Finished")) (defun LaTeX-find-matching-end () "Move point to the \\end of the current environment. If function is called inside a comment and `LaTeX-syntactic-comments' is enabled, try to find the environment in commented regions with the same comment prefix." (interactive) (let* ((regexp (concat (regexp-quote TeX-esc) "\\(begin\\|end\\)\\b")) (level 1) (in-comment (TeX-in-commented-line)) (comment-prefix (and in-comment (TeX-comment-prefix)))) (save-excursion (skip-chars-backward "a-zA-Z \t{") (unless (bolp) (backward-char 1) (and (looking-at regexp) (char-equal (char-after (1+ (match-beginning 0))) ?e) (setq level 0)))) (while (and (> level 0) (re-search-forward regexp nil t)) (when (or (and LaTeX-syntactic-comments (eq in-comment (TeX-in-commented-line)) ;; If we are in a commented line, check if the ;; prefix matches the one we started out with. (or (not in-comment) (string= comment-prefix (TeX-comment-prefix)))) (and (not LaTeX-syntactic-comments) (not (TeX-in-commented-line)))) (if (= (char-after (1+ (match-beginning 0))) ?b) ;;begin (setq level (1+ level)) (setq level (1- level))))) (if (= level 0) (search-forward "}") (error "Can't locate end of current environment")))) (defun LaTeX-find-matching-begin () "Move point to the \\begin of the current environment. If function is called inside a comment and `LaTeX-syntactic-comments' is enabled, try to find the environment in commented regions with the same comment prefix." (interactive) (let* ((regexp (concat (regexp-quote TeX-esc) "\\(begin\\|end\\)\\b")) (level 1) (in-comment (TeX-in-commented-line)) (comment-prefix (and in-comment (TeX-comment-prefix)))) (skip-chars-backward "a-zA-Z \t{") (unless (bolp) (backward-char 1) (and (looking-at regexp) (char-equal (char-after (1+ (match-beginning 0))) ?b) (setq level 0))) (while (and (> level 0) (re-search-backward regexp nil t)) (when (or (and LaTeX-syntactic-comments (eq in-comment (TeX-in-commented-line)) ;; If we are in a commented line, check if the ;; prefix matches the one we started out with. (or (not in-comment) (string= comment-prefix (TeX-comment-prefix)))) (and (not LaTeX-syntactic-comments) (not (TeX-in-commented-line)))) (if (= (char-after (1+ (match-beginning 0))) ?e) ;;end (setq level (1+ level)) (setq level (1- level))))) (or (= level 0) (error "Can't locate beginning of current environment")))) (defun LaTeX-mark-environment (&optional count) "Set mark to end of current environment and point to the matching begin. If prefix argument COUNT is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments." (interactive "p") (setq count (if count (abs count) 1)) (let ((cur (point)) beg end) ;; Only change point and mark after beginning and end were found. ;; Point should not end up in the middle of nowhere if the search fails. (save-excursion (dotimes (c count) (LaTeX-find-matching-end)) (setq end (line-beginning-position 2)) (goto-char cur) (dotimes (c count) (LaTeX-find-matching-begin)) (setq beg (point))) (set-mark end) (goto-char beg) (TeX-activate-region))) (defun LaTeX-fill-environment (justify) "Fill and indent current environment as LaTeX text." (interactive "*P") (save-excursion (LaTeX-mark-environment) (re-search-forward "{\\([^}]+\\)}") (LaTeX-fill-region (region-beginning) (region-end) justify (concat " environment " (TeX-match-buffer 1))))) (defun LaTeX-fill-section (justify) "Fill and indent current logical section as LaTeX text." (interactive "*P") (save-excursion (LaTeX-mark-section) (re-search-forward "{\\([^}]+\\)}") (LaTeX-fill-region (region-beginning) (region-end) justify (concat " section " (TeX-match-buffer 1))))) (defun LaTeX-mark-section (&optional no-subsections) "Set mark at end of current logical section, and point at top. If optional argument NO-SUBSECTIONS is non-nil, mark only the region from the current section start to the next sectioning command. Thereby subsections are not being marked. If the function `outline-mark-subtree' is not available, `LaTeX-mark-section' always behaves like this regardless of the value of NO-SUBSECTIONS." (interactive "P") (if (or no-subsections (not (fboundp 'outline-mark-subtree))) (progn (re-search-forward (concat "\\(" (LaTeX-outline-regexp) "\\|\\'\\)")) (beginning-of-line) (push-mark (point) nil t) (re-search-backward (concat "\\(" (LaTeX-outline-regexp) "\\|\\`\\)"))) (outline-mark-subtree) (when (and (boundp 'transient-mark-mode) transient-mark-mode (boundp 'mark-active) (not mark-active)) (setq mark-active t) (run-hooks 'activate-mark-hook))) (TeX-activate-region)) (defun LaTeX-fill-buffer (justify) "Fill and indent current buffer as LaTeX text." (interactive "*P") (save-excursion (LaTeX-fill-region (point-min) (point-max) justify (concat " buffer " (buffer-name))))) ;;; Navigation (defvar LaTeX-paragraph-commands-internal '("[" "]" ; display math "appendix" "begin" "caption" "chapter" "end" "include" "includeonly" "label" "maketitle" "noindent" "par" "paragraph" "part" "section" "subsection" "subsubsection" "tableofcontents") "Internal list of LaTeX macros that should have their own line.") (defun LaTeX-paragraph-commands-regexp-make () "Return a regular expression matching defined paragraph commands." (concat (regexp-quote TeX-esc) "\\(" (regexp-opt (append LaTeX-paragraph-commands LaTeX-paragraph-commands-internal)) "\\)")) (defcustom LaTeX-paragraph-commands nil "List of LaTeX macros that should have their own line. The list should contain macro names without the leading backslash." :group 'LaTeX-macro :type '(repeat (string)) :set (lambda (symbol value) (set-default symbol value) (setq LaTeX-paragraph-commands-regexp (LaTeX-paragraph-commands-regexp-make)))) (defvar LaTeX-paragraph-commands-regexp (LaTeX-paragraph-commands-regexp-make) "Regular expression matching LaTeX macros that should have their own line.") (defun LaTeX-set-paragraph-start () "Set `paragraph-start'." (setq paragraph-start (concat "[ \t]*%*[ \t]*\\(" LaTeX-paragraph-commands-regexp "\\|" (regexp-quote TeX-esc) "\\(" LaTeX-item-regexp "\\)\\|" "\\$\\$\\|" ; Plain TeX display math (Some people actually ; use this with LaTeX. Yuck.) "$\\)"))) (defun LaTeX-paragraph-commands-add-locally (commands) "Make COMMANDS be recognized as paragraph commands. COMMANDS can be a single string or a list of strings which will be added to `LaTeX-paragraph-commands-internal'. Additionally `LaTeX-paragraph-commands-regexp' will be updated and both variables will be made buffer-local. This is mainly a convenience function which can be used in style files." (make-local-variable 'LaTeX-paragraph-commands-internal) (make-local-variable 'LaTeX-paragraph-commands-regexp) (unless (listp commands) (setq commands (list commands))) (dolist (elt commands) (add-to-list 'LaTeX-paragraph-commands-internal elt)) (setq LaTeX-paragraph-commands-regexp (LaTeX-paragraph-commands-regexp-make)) (LaTeX-set-paragraph-start)) (defun LaTeX-forward-paragraph (&optional count) "Move forward to end of paragraph. If COUNT is non-nil, do it COUNT times." (or count (setq count 1)) (dotimes (i count) (let* ((macro-start (TeX-find-macro-start)) (paragraph-command-start (cond ;; Point is inside of a paragraph command. ((and macro-start (save-excursion (goto-char macro-start) (looking-at LaTeX-paragraph-commands-regexp))) (match-beginning 0)) ;; Point is before a paragraph command in the same line. ((looking-at (concat "[ \t]*\\(?:" TeX-comment-start-regexp "\\(?:" TeX-comment-start-regexp "\\|[ \t]\\)*\\)?" "\\(" LaTeX-paragraph-commands-regexp "\\)")) (match-beginning 1)))) macro-end) ;; If a paragraph command is encountered there are two cases to be ;; distinguished: ;; 1) If the end of the paragraph command coincides (apart from ;; potential whitespace) with the end of the line, is only ;; followed by a comment or is directly followed by a macro, ;; it is assumed that it should be handled separately. ;; 2) If the end of the paragraph command is followed by other ;; code, it is assumed that it should be included with the rest ;; of the paragraph. (if (and paragraph-command-start (save-excursion (goto-char paragraph-command-start) (setq macro-end (goto-char (TeX-find-macro-end))) (looking-at (concat (regexp-quote TeX-esc) "[@A-Za-z]+\\|" "[ \t]*\\($\\|" TeX-comment-start-regexp "\\)")))) (progn (goto-char macro-end) ;; If the paragraph command is followed directly by ;; another macro, regard the latter as part of the ;; paragraph command's paragraph. (when (looking-at (concat (regexp-quote TeX-esc) "[@A-Za-z]+")) (goto-char (TeX-find-macro-end))) (forward-line)) (let (limit) (goto-char (min (save-excursion (forward-paragraph) (setq limit (point))) (save-excursion (TeX-forward-comment-skip 1 limit) (point))))))))) (defun LaTeX-backward-paragraph (&optional count) "Move backward to beginning of paragraph. If COUNT is non-nil, do it COUNT times." (or count (setq count 1)) (dotimes (i count) (let* ((macro-start (TeX-find-macro-start))) (if (and macro-start ;; Point really has to be inside of the macro, not before it. (not (= macro-start (point))) (save-excursion (goto-char macro-start) (looking-at LaTeX-paragraph-commands-regexp))) ;; Point is inside of a paragraph command. (progn (goto-char macro-start) (beginning-of-line)) (let (limit (start (line-beginning-position))) (goto-char (max (save-excursion (backward-paragraph) (setq limit (point))) ;; Search for possible transitions from commented to ;; uncommented regions and vice versa. (save-excursion (TeX-backward-comment-skip 1 limit) (point)) ;; Search for paragraph commands. (save-excursion (let ((end-point 0) macro-bol) (when (setq macro-bol (re-search-backward (format "^[ \t]*%s*[ \t]*\\(%s\\)" TeX-comment-start-regexp LaTeX-paragraph-commands-regexp) limit t)) (if (and (string= (match-string 1) "\\begin") (progn (goto-char (match-end 1)) (skip-chars-forward "{ \t") (member (buffer-substring-no-properties (point) (progn (skip-chars-forward "A-Za-z*") (point))) LaTeX-verbatim-environments))) ;; If inside a verbatim environment, just ;; use the next line. In such environments ;; `TeX-find-macro-end' could otherwise ;; think brackets or braces belong to the ;; \begin macro. (setq end-point (line-beginning-position 2)) ;; Jump to the macro end otherwise. (goto-char (match-beginning 1)) (goto-char (TeX-find-macro-end)) ;; For an explanation of this distinction see ;; `LaTeX-forward-paragraph'. (if (looking-at (concat (regexp-quote TeX-esc) "[@A-Za-z]+\\|[ \t]*\\($\\|" TeX-comment-start-regexp "\\)")) (progn (when (string= (buffer-substring-no-properties (point) (+ (point) (length TeX-esc))) TeX-esc) (goto-char (TeX-find-macro-end))) (forward-line 1) (when (< (point) start) (setq end-point (point)))) (setq end-point macro-bol)))) end-point))))))))) (defun LaTeX-search-forward-comment-start (&optional limit) "Search forward for a comment start from current position till LIMIT. If LIMIT is omitted, search till the end of the buffer. This function makes sure that any comment starters found inside of verbatim constructs are not considered." (setq limit (or limit (point-max))) (save-excursion (let (start) (catch 'found (while (progn (when (and (TeX-re-search-forward-unescaped TeX-comment-start-regexp limit 'move) (not (LaTeX-verbatim-p))) (setq start (match-beginning 0)) (throw 'found t)) (< (point) limit)))) start))) ;;; Math Minor Mode (defgroup LaTeX-math nil "Mathematics in AUCTeX." :group 'LaTeX-macro) (defcustom LaTeX-math-list nil "Alist of your personal LaTeX math symbols. Each entry should be a list with up to four elements, KEY, VALUE, MENU and CHARACTER. KEY is the key (after `LaTeX-math-abbrev-prefix') to be redefined in math minor mode. If KEY is nil, the symbol has no associated keystroke \(it is available in the menu, though\). VALUE can be a string with the name of the macro to be inserted, or a function to be called. The macro must be given without the leading backslash. The third element MENU is the name of the submenu where the command should be added. MENU can be either a string \(e.g. \"greek\"\), a list (e.g. \(\"AMS\" \"Delimiters\"\)\) or nil. If MENU is nil, no menu item will be created. The fourth element CHARACTER is a Unicode character position for menu display. When nil, no character is shown. See also `LaTeX-math-menu'." :group 'LaTeX-math :type '(repeat (group (choice :tag "Key" (const :tag "none" nil) (choice (character) (string :tag "Key sequence"))) (choice :tag "Value" (string :tag "Macro") (function)) (choice :tag "Menu" (string :tag "Top level menu" ) (repeat :tag "Submenu" (string :tag "Menu"))) (choice :tag "Unicode character" (const :tag "none" nil) (integer :tag "Number"))))) (defconst LaTeX-math-default '((?a "alpha" "Greek Lowercase" 945) ;; #X03B1 (?b "beta" "Greek Lowercase" 946) ;; #X03B2 (?g "gamma" "Greek Lowercase" 947) ;; #X03B3 (?d "delta" "Greek Lowercase" 948) ;; #X03B4 (?e "epsilon" "Greek Lowercase" 1013) ;; #X03F5 (?z "zeta" "Greek Lowercase" 950) ;; #X03B6 (?h "eta" "Greek Lowercase" 951) ;; #X03B7 (?j "theta" "Greek Lowercase" 952) ;; #X03B8 (nil "iota" "Greek Lowercase" 953) ;; #X03B9 (?k "kappa" "Greek Lowercase" 954) ;; #X03BA (?l "lambda" "Greek Lowercase" 955) ;; #X03BB (?m "mu" "Greek Lowercase" 956) ;; #X03BC (?n "nu" "Greek Lowercase" 957) ;; #X03BD (?x "xi" "Greek Lowercase" 958) ;; #X03BE (?p "pi" "Greek Lowercase" 960) ;; #X03C0 (?r "rho" "Greek Lowercase" 961) ;; #X03C1 (?s "sigma" "Greek Lowercase" 963) ;; #X03C3 (?t "tau" "Greek Lowercase" 964) ;; #X03C4 (?u "upsilon" "Greek Lowercase" 965) ;; #X03C5 (?f "phi" "Greek Lowercase" 981) ;; #X03D5 (?q "chi" "Greek Lowercase" 967) ;; #X03C7 (?y "psi" "Greek Lowercase" 968) ;; #X03C8 (?w "omega" "Greek Lowercase" 969) ;; #X03C9 ("v e" "varepsilon" "Greek Lowercase" 949) ;; #X03B5 ("v j" "vartheta" "Greek Lowercase" 977) ;; #X03D1 ("v p" "varpi" "Greek Lowercase" 982) ;; #X03D6 ("v r" "varrho" "Greek Lowercase" 1009) ;; #X03F1 ("v s" "varsigma" "Greek Lowercase" 962) ;; #X03C2 ("v f" "varphi" "Greek Lowercase" 966) ;; #X03C6 (?G "Gamma" "Greek Uppercase" 915) ;; #X0393 (?D "Delta" "Greek Uppercase" 916) ;; #X0394 (?J "Theta" "Greek Uppercase" 920) ;; #X0398 (?L "Lambda" "Greek Uppercase" 923) ;; #X039B (?X "Xi" "Greek Uppercase" 926) ;; #X039E (?P "Pi" "Greek Uppercase" 928) ;; #X03A0 (?S "Sigma" "Greek Uppercase" 931) ;; #X03A3 (?U "Upsilon" "Greek Uppercase" 978) ;; #X03D2 (?F "Phi" "Greek Uppercase" 934) ;; #X03A6 (?Y "Psi" "Greek Uppercase" 936) ;; #X03A8 (?W "Omega" "Greek Uppercase" 937) ;; #X03A9 (?c LaTeX-math-cal "Cal-whatever") (nil "pm" "Binary Op" 177) ;; #X00B1 (nil "mp" "Binary Op" 8723) ;; #X2213 (?* "times" "Binary Op" 215) ;; #X00D7 (nil "div" "Binary Op" 247) ;; #X00F7 (nil "ast" "Binary Op" 8727) ;; #X2217 (nil "star" "Binary Op" 8902) ;; #X22C6 (nil "circ" "Binary Op" 8728) ;; #X2218 (nil "bullet" "Binary Op" 8729) ;; #X2219 (?. "cdot" "Binary Op" 8901) ;; #X22C5 (?- "cap" "Binary Op" 8745) ;; #X2229 (?+ "cup" "Binary Op" 8746) ;; #X222A (nil "uplus" "Binary Op" 8846) ;; #X228E (nil "sqcap" "Binary Op" 8851) ;; #X2293 (?| "vee" "Binary Op" 8744) ;; #X2228 (?& "wedge" "Binary Op" 8743) ;; #X2227 (?\\ "setminus" "Binary Op" 8726) ;; #X2216 (nil "wr" "Binary Op" 8768) ;; #X2240 (nil "diamond" "Binary Op" 8900) ;; #X22C4 (nil "bigtriangleup" "Binary Op" 9651) ;; #X25B3 (nil "bigtriangledown" "Binary Op" 9661) ;; #X25BD (nil "triangleleft" "Binary Op" 9665) ;; #X25C1 (nil "triangleright" "Binary Op" 9655) ;; #X25B7 (nil "lhd" "Binary Op") (nil "rhd" "Binary Op") (nil "unlhd" "Binary Op") (nil "unrhd" "Binary Op") (nil "oplus" "Binary Op" 8853) ;; #X2295 (nil "ominus" "Binary Op" 8854) ;; #X2296 (nil "otimes" "Binary Op" 8855) ;; #X2297 (nil "oslash" "Binary Op" 8709) ;; #X2205 (nil "odot" "Binary Op" 8857) ;; #X2299 (nil "bigcirc" "Binary Op" 9675) ;; #X25CB (nil "dagger" "Binary Op" 8224) ;; #X2020 (nil "ddagger" "Binary Op" 8225) ;; #X2021 (nil "amalg" "Binary Op" 10815) ;; #X2A3F (?< "leq" "Relational" 8804) ;; #X2264 (?> "geq" "Relational" 8805) ;; #X2265 (nil "qed" "Relational" 8718) ;; #X220E (nil "equiv" "Relational" 8801) ;; #X2261 (nil "models" "Relational" 8871) ;; #X22A7 (nil "prec" "Relational" 8826) ;; #X227A (nil "succ" "Relational" 8827) ;; #X227B (nil "sim" "Relational" 8764) ;; #X223C (nil "perp" "Relational" 10178) ;; #X27C2 (nil "preceq" "Relational" 10927) ;; #X2AAF (nil "succeq" "Relational" 10928) ;; #X2AB0 (nil "simeq" "Relational" 8771) ;; #X2243 (nil "mid" "Relational" 8739) ;; #X2223 (nil "ll" "Relational" 8810) ;; #X226A (nil "gg" "Relational" 8811) ;; #X226B (nil "asymp" "Relational" 8781) ;; #X224D (nil "parallel" "Relational" 8741) ;; #X2225 (?\{ "subset" "Relational" 8834) ;; #X2282 (?\} "supset" "Relational" 8835) ;; #X2283 (nil "approx" "Relational" 8776) ;; #X2248 (nil "bowtie" "Relational" 8904) ;; #X22C8 (?\[ "subseteq" "Relational" 8838) ;; #X2286 (?\] "supseteq" "Relational" 8839) ;; #X2287 (nil "cong" "Relational" 8773) ;; #X2245 (nil "Join" "Relational" 10781) ;; #X2A1D (nil "sqsubset" "Relational" 8847) ;; #X228F (nil "sqsupset" "Relational" 8848) ;; #X2290 (nil "neq" "Relational" 8800) ;; #X2260 (nil "smile" "Relational" 8995) ;; #X2323 (nil "sqsubseteq" "Relational" 8849) ;; #X2291 (nil "sqsupseteq" "Relational" 8850) ;; #X2292 (nil "doteq" "Relational" 8784) ;; #X2250 (nil "frown" "Relational" 8994) ;; #X2322 (?i "in" "Relational" 8712) ;; #X2208 (nil "ni" "Relational" 8715) ;; #X220B (nil "propto" "Relational" 8733) ;; #X221D (nil "vdash" "Relational" 8866) ;; #X22A2 (nil "dashv" "Relational" 8867) ;; #X22A3 (?\C-b "leftarrow" "Arrows" 8592) ;; #X2190 (nil "Leftarrow" "Arrows" 8656) ;; #X21D0 (?\C-f "rightarrow" "Arrows" 8594) ;; #X2192 (nil "Rightarrow" "Arrows" 8658) ;; #X21D2 (nil "leftrightarrow" "Arrows" 8596) ;; #X2194 (nil "Leftrightarrow" "Arrows" 8660) ;; #X21D4 (nil "mapsto" "Arrows" 8614) ;; #X21A6 (nil "hookleftarrow" "Arrows" 8617) ;; #X21A9 (nil "leftharpoonup" "Arrows" 8636) ;; #X21BC (nil "leftharpoondown" "Arrows" 8637) ;; #X21BD (nil "longleftarrow" "Arrows" 10229) ;; #X27F5 (nil "Longleftarrow" "Arrows" 10232) ;; #X27F8 (nil "longrightarrow" "Arrows" 10230) ;; #X27F6 (nil "Longrightarrow" "Arrows" 10233) ;; #X27F9 (nil "longleftrightarrow" "Arrows" 10231) ;; #X27F7 (nil "Longleftrightarrow" "Arrows" 10234) ;; #X27FA (nil "longmapsto" "Arrows" 10236) ;; #X27FC (nil "hookrightarrow" "Arrows" 8618) ;; #X21AA (nil "rightharpoonup" "Arrows" 8640) ;; #X21C0 (nil "rightharpoondown" "Arrows" 8641) ;; #X21C1 (?\C-p "uparrow" "Arrows" 8593) ;; #X2191 (nil "Uparrow" "Arrows" 8657) ;; #X21D1 (?\C-n "downarrow" "Arrows" 8595) ;; #X2193 (nil "Downarrow" "Arrows" 8659) ;; #X21D3 (nil "updownarrow" "Arrows" 8597) ;; #X2195 (nil "Updownarrow" "Arrows" 8661) ;; #X21D5 (nil "nearrow" "Arrows" 8599) ;; #X2197 (nil "searrow" "Arrows" 8600) ;; #X2198 (nil "swarrow" "Arrows" 8601) ;; #X2199 (nil "nwarrow" "Arrows" 8598) ;; #X2196 (nil "ldots" "Punctuation" 8230) ;; #X2026 (nil "cdots" "Punctuation" 8943) ;; #X22EF (nil "vdots" "Punctuation" 8942) ;; #X22EE (nil "ddots" "Punctuation" 8945) ;; #X22F1 (?: "colon" "Punctuation" 58) ;; #X003A (?N "nabla" "Misc Symbol" 8711) ;; #X2207 (nil "aleph" "Misc Symbol" 8501) ;; #X2135 (nil "prime" "Misc Symbol" 8242) ;; #X2032 (?A "forall" "Misc Symbol" 8704) ;; #X2200 (?I "infty" "Misc Symbol" 8734) ;; #X221E (nil "hbar" "Misc Symbol" 8463) ;; #X210F (?0 "emptyset" "Misc Symbol" 8709) ;; #X2205 (?E "exists" "Misc Symbol" 8707) ;; #X2203 (nil "surd" "Misc Symbol" 8730) ;; #X221A (nil "Box" "Misc Symbol") (nil "triangle" "Misc Symbol" 9651) ;; #X25B3 (nil "Diamond" "Misc Symbol") (nil "imath" "Misc Symbol" 305) ;; #X0131 (nil "jmath" "Misc Symbol" 120485) ;; #X1D6A5 (nil "ell" "Misc Symbol" 8467) ;; #X2113 (nil "neg" "Misc Symbol" 172) ;; #X00AC (?/ "not" "Misc Symbol" 824) ;; #X0338 (nil "top" "Misc Symbol" 8868) ;; #X22A4 (nil "flat" "Misc Symbol" 9837) ;; #X266D (nil "natural" "Misc Symbol" 9838) ;; #X266E (nil "sharp" "Misc Symbol" 9839) ;; #X266F (nil "wp" "Misc Symbol" 8472) ;; #X2118 (nil "bot" "Misc Symbol" 8869) ;; #X22A5 (nil "clubsuit" "Misc Symbol" 9827) ;; #X2663 (nil "diamondsuit" "Misc Symbol" 9826) ;; #X2662 (nil "heartsuit" "Misc Symbol" 9825) ;; #X2661 (nil "spadesuit" "Misc Symbol" 9824) ;; #X2660 (nil "mho" "Misc Symbol" 8487) ;; #X2127 (nil "Re" "Misc Symbol" 8476) ;; #X211C (nil "Im" "Misc Symbol" 8465) ;; #X2111 (nil "angle" "Misc Symbol" 8736) ;; #X2220 (nil "partial" "Misc Symbol" 8706) ;; #X2202 (nil "sum" "Var Symbol" 8721) ;; #X2211 (nil "prod" "Var Symbol" 8719) ;; #X220F (nil "coprod" "Var Symbol" 8720) ;; #X2210 (nil "int" "Var Symbol" 8747) ;; #X222B (nil "oint" "Var Symbol" 8750) ;; #X222E (nil "bigcap" "Var Symbol" 8898) ;; #X22C2 (nil "bigcup" "Var Symbol" 8899) ;; #X22C3 (nil "bigsqcup" "Var Symbol" 10758) ;; #X2A06 (nil "bigvee" "Var Symbol" 8897) ;; #X22C1 (nil "bigwedge" "Var Symbol" 8896) ;; #X22C0 (nil "bigodot" "Var Symbol" 10752) ;; #X2A00 (nil "bigotimes" "Var Symbol" 10754) ;; #X2A02 (nil "bigoplus" "Var Symbol" 10753) ;; #X2A01 (nil "biguplus" "Var Symbol" 10756) ;; #X2A04 (nil "arccos" "Log-like") (nil "arcsin" "Log-like") (nil "arctan" "Log-like") (nil "arg" "Log-like") (?\C-c "cos" "Log-like") (nil "cosh" "Log-like") (nil "cot" "Log-like") (nil "coth" "Log-like") (nil "csc" "Log-like") (nil "deg" "Log-like") (?\C-d "det" "Log-like") (nil "dim" "Log-like") (?\C-e "exp" "Log-like") (nil "gcd" "Log-like") (nil "hom" "Log-like") (?\C-_ "inf" "Log-like") (nil "ker" "Log-like") (nil "lg" "Log-like") (?\C-l "lim" "Log-like") (nil "liminf" "Log-like") (nil "limsup" "Log-like") (nil "ln" "Log-like") (nil "log" "Log-like") (nil "max" "Log-like") (nil "min" "Log-like") (nil "Pr" "Log-like") (nil "sec" "Log-like") (?\C-s "sin" "Log-like") (nil "sinh" "Log-like") (?\C-^ "sup" "Log-like") (?\C-t "tan" "Log-like") (nil "tanh" "Log-like") (nil "{" "Delimiters") (nil "}" "Delimiters") (nil "lfloor" "Delimiters" 8970) ;; #X230A (nil "rfloor" "Delimiters" 8971) ;; #X230B (nil "lceil" "Delimiters" 8968) ;; #X2308 (nil "rceil" "Delimiters" 8969) ;; #X2309 (?\( "langle" "Delimiters" 10216) ;; #X27E8 (?\) "rangle" "Delimiters" 10217) ;; #X27E9 (nil "rmoustache" "Delimiters" 9137) ;; #X23B1 (nil "lmoustache" "Delimiters" 9136) ;; #X23B0 (nil "rgroup" "Delimiters") (nil "lgroup" "Delimiters") (nil "backslash" "Delimiters" 92) ;; #X005C (nil "|" "Delimiters") (nil "arrowvert" "Delimiters") (nil "Arrowvert" "Delimiters") (nil "bracevert" "Delimiters") (nil "widetilde" "Constructs" 771) ;; #X0303 (nil "widehat" "Constructs" 770) ;; #X0302 (nil "overleftarrow" "Constructs" 8406) ;; #X20D6 (nil "overrightarrow" "Constructs") (nil "overline" "Constructs") (nil "underline" "Constructs") (nil "overbrace" "Constructs" 65079) ;; #XFE37 (nil "underbrace" "Constructs" 65080) ;; #XFE38 (nil "sqrt" "Constructs" 8730) ;; #X221A (nil "frac" "Constructs") (?^ "hat" "Accents" 770) ;; #X0302 (nil "acute" "Accents" 769) ;; #X0301 (nil "bar" "Accents" 772) ;; #X0304 (nil "dot" "Accents" 775) ;; #X0307 (nil "breve" "Accents" 774) ;; #X0306 (nil "check" "Accents" 780) ;; #X030C (nil "grave" "Accents" 768) ;; #X0300 (nil "vec" "Accents" 8407) ;; #X20D7 (nil "ddot" "Accents" 776) ;; #X0308 (?~ "tilde" "Accents" 771) ;; #X0303 (nil "digamma" ("AMS" "Hebrew") 989) ;; #X03DD (nil "varkappa" ("AMS" "Hebrew") 1008) ;; #X03F0 (nil "beth" ("AMS" "Hebrew") 8502) ;; #X2136 (nil "daleth" ("AMS" "Hebrew") 8504) ;; #X2138 (nil "gimel" ("AMS" "Hebrew") 8503) ;; #X2137 ("v G" "varGamma" ("AMS" "Greek Uppercase")) ("v D" "varDelta" ("AMS" "Greek Uppercase")) ("v J" "varTheta" ("AMS" "Greek Uppercase")) ("v L" "varLambda" ("AMS" "Greek Uppercase")) ("v X" "varXi" ("AMS" "Greek Uppercase")) ("v P" "varPi" ("AMS" "Greek Uppercase")) ("v S" "varSigma" ("AMS" "Greek Uppercase")) ("v U" "varUpsilon" ("AMS" "Greek Uppercase")) ("v F" "varPhi" ("AMS" "Greek Uppercase")) ("v Y" "varPsi" ("AMS" "Greek Uppercase")) ("v W" "varOmega" ("AMS" "Greek Uppercase")) (nil "dashrightarrow" ("AMS" "Arrows")) (nil "dashleftarrow" ("AMS" "Arrows")) (nil "leftleftarrows" ("AMS" "Arrows") 8647) ;; #X21C7 (nil "leftrightarrows" ("AMS" "Arrows") 8646) ;; #X21C6 (nil "Lleftarrow" ("AMS" "Arrows") 8666) ;; #X21DA (nil "twoheadleftarrow" ("AMS" "Arrows") 8606) ;; #X219E (nil "leftarrowtail" ("AMS" "Arrows") 8610) ;; #X21A2 (nil "looparrowleft" ("AMS" "Arrows") 8619) ;; #X21AB (nil "leftrightharpoons" ("AMS" "Arrows") 8651) ;; #X21CB (nil "curvearrowleft" ("AMS" "Arrows") 8630) ;; #X21B6 (nil "circlearrowleft" ("AMS" "Arrows")) (nil "Lsh" ("AMS" "Arrows") 8624) ;; #X21B0 (nil "upuparrows" ("AMS" "Arrows") 8648) ;; #X21C8 (nil "upharpoonleft" ("AMS" "Arrows") 8639) ;; #X21BF (nil "downharpoonleft" ("AMS" "Arrows") 8643) ;; #X21C3 (nil "multimap" ("AMS" "Arrows") 8888) ;; #X22B8 (nil "leftrightsquigarrow" ("AMS" "Arrows") 8621) ;; #X21AD (nil "looparrowright" ("AMS" "Arrows") 8620) ;; #X21AC (nil "rightleftharpoons" ("AMS" "Arrows") 8652) ;; #X21CC (nil "curvearrowright" ("AMS" "Arrows") 8631) ;; #X21B7 (nil "circlearrowright" ("AMS" "Arrows")) (nil "Rsh" ("AMS" "Arrows") 8625) ;; #X21B1 (nil "downdownarrows" ("AMS" "Arrows") 8650) ;; #X21CA (nil "upharpoonright" ("AMS" "Arrows") 8638) ;; #X21BE (nil "downharpoonright" ("AMS" "Arrows") 8642) ;; #X21C2 (nil "rightsquigarrow" ("AMS" "Arrows") 8605) ;; #X219D (nil "nleftarrow" ("AMS" "Neg Arrows") 8602) ;; #X219A (nil "nrightarrow" ("AMS" "Neg Arrows") 8603) ;; #X219B (nil "nLeftarrow" ("AMS" "Neg Arrows") 8653) ;; #X21CD (nil "nRightarrow" ("AMS" "Neg Arrows") 8655) ;; #X21CF (nil "nleftrightarrow" ("AMS" "Neg Arrows") 8622) ;; #X21AE (nil "nLeftrightarrow" ("AMS" "Neg Arrows") 8654) ;; #X21CE (nil "leqq" ("AMS" "Relational I") 8806) ;; #X2266 (nil "leqslant" ("AMS" "Relational I") 10877) ;; #X2A7D (nil "eqslantless" ("AMS" "Relational I") 10901) ;; #X2A95 (nil "lesssim" ("AMS" "Relational I") 8818) ;; #X2272 (nil "lessapprox" ("AMS" "Relational I") 10885) ;; #X2A85 (nil "approxeq" ("AMS" "Relational I") 8778) ;; #X224A (nil "lessdot" ("AMS" "Relational I") 8918) ;; #X22D6 (nil "lll" ("AMS" "Relational I") 8920) ;; #X22D8 (nil "lessgtr" ("AMS" "Relational I") 8822) ;; #X2276 (nil "lesseqgtr" ("AMS" "Relational I") 8922) ;; #X22DA (nil "lesseqqgtr" ("AMS" "Relational I") 10891) ;; #X2A8B (nil "doteqdot" ("AMS" "Relational I")) (nil "risingdotseq" ("AMS" "Relational I") 8787) ;; #X2253 (nil "fallingdotseq" ("AMS" "Relational I") 8786) ;; #X2252 (nil "backsim" ("AMS" "Relational I") 8765) ;; #X223D (nil "backsimeq" ("AMS" "Relational I") 8909) ;; #X22CD (nil "subseteqq" ("AMS" "Relational I") 10949) ;; #X2AC5 (nil "Subset" ("AMS" "Relational I") 8912) ;; #X22D0 (nil "sqsubset" ("AMS" "Relational I") 8847) ;; #X228F (nil "preccurlyeq" ("AMS" "Relational I") 8828) ;; #X227C (nil "curlyeqprec" ("AMS" "Relational I") 8926) ;; #X22DE (nil "precsim" ("AMS" "Relational I") 8830) ;; #X227E (nil "precapprox" ("AMS" "Relational I") 10935) ;; #X2AB7 (nil "vartriangleleft" ("AMS" "Relational I") 8882) ;; #X22B2 (nil "trianglelefteq" ("AMS" "Relational I") 8884) ;; #X22B4 (nil "vDash" ("AMS" "Relational I") 8872) ;; #X22A8 (nil "Vvdash" ("AMS" "Relational I") 8874) ;; #X22AA (nil "smallsmile" ("AMS" "Relational I") 8995) ;; #X2323 (nil "smallfrown" ("AMS" "Relational I") 8994) ;; #X2322 (nil "bumpeq" ("AMS" "Relational I") 8783) ;; #X224F (nil "Bumpeq" ("AMS" "Relational I") 8782) ;; #X224E (nil "geqq" ("AMS" "Relational II") 8807) ;; #X2267 (nil "geqslant" ("AMS" "Relational II") 10878) ;; #X2A7E (nil "eqslantgtr" ("AMS" "Relational II") 10902) ;; #X2A96 (nil "gtrsim" ("AMS" "Relational II") 8819) ;; #X2273 (nil "gtrapprox" ("AMS" "Relational II") 10886) ;; #X2A86 (nil "gtrdot" ("AMS" "Relational II") 8919) ;; #X22D7 (nil "ggg" ("AMS" "Relational II") 8921) ;; #X22D9 (nil "gtrless" ("AMS" "Relational II") 8823) ;; #X2277 (nil "gtreqless" ("AMS" "Relational II") 8923) ;; #X22DB (nil "gtreqqless" ("AMS" "Relational II") 10892) ;; #X2A8C (nil "eqcirc" ("AMS" "Relational II") 8790) ;; #X2256 (nil "circeq" ("AMS" "Relational II") 8791) ;; #X2257 (nil "triangleq" ("AMS" "Relational II") 8796) ;; #X225C (nil "thicksim" ("AMS" "Relational II") 8764) ;; #X223C (nil "thickapprox" ("AMS" "Relational II") 8776) ;; #X2248 (nil "supseteqq" ("AMS" "Relational II") 10950) ;; #X2AC6 (nil "Supset" ("AMS" "Relational II") 8913) ;; #X22D1 (nil "sqsupset" ("AMS" "Relational II") 8848) ;; #X2290 (nil "succcurlyeq" ("AMS" "Relational II") 8829) ;; #X227D (nil "curlyeqsucc" ("AMS" "Relational II") 8927) ;; #X22DF (nil "succsim" ("AMS" "Relational II") 8831) ;; #X227F (nil "succapprox" ("AMS" "Relational II") 10936) ;; #X2AB8 (nil "vartriangleright" ("AMS" "Relational II") 8883) ;; #X22B3 (nil "trianglerighteq" ("AMS" "Relational II") 8885) ;; #X22B5 (nil "Vdash" ("AMS" "Relational II") 8873) ;; #X22A9 (nil "shortmid" ("AMS" "Relational II") 8739) ;; #X2223 (nil "shortparallel" ("AMS" "Relational II") 8741) ;; #X2225 (nil "between" ("AMS" "Relational II") 8812) ;; #X226C (nil "pitchfork" ("AMS" "Relational II") 8916) ;; #X22D4 (nil "varpropto" ("AMS" "Relational II") 8733) ;; #X221D (nil "blacktriangleleft" ("AMS" "Relational II") 9664) ;; #X25C0 (nil "therefore" ("AMS" "Relational II") 8756) ;; #X2234 (nil "backepsilon" ("AMS" "Relational II") 1014) ;; #X03F6 (nil "blacktriangleright" ("AMS" "Relational II") 9654) ;; #X25B6 (nil "because" ("AMS" "Relational II") 8757) ;; #X2235 (nil "nless" ("AMS" "Neg Rel I") 8814) ;; #X226E (nil "nleq" ("AMS" "Neg Rel I") 8816) ;; #X2270 (nil "nleqslant" ("AMS" "Neg Rel I")) (nil "nleqq" ("AMS" "Neg Rel I")) (nil "lneq" ("AMS" "Neg Rel I") 10887) ;; #X2A87 (nil "lneqq" ("AMS" "Neg Rel I") 8808) ;; #X2268 (nil "lvertneqq" ("AMS" "Neg Rel I")) (nil "lnsim" ("AMS" "Neg Rel I") 8934) ;; #X22E6 (nil "lnapprox" ("AMS" "Neg Rel I") 10889) ;; #X2A89 (nil "nprec" ("AMS" "Neg Rel I") 8832) ;; #X2280 (nil "npreceq" ("AMS" "Neg Rel I")) (nil "precnsim" ("AMS" "Neg Rel I") 8936) ;; #X22E8 (nil "precnapprox" ("AMS" "Neg Rel I") 10937) ;; #X2AB9 (nil "nsim" ("AMS" "Neg Rel I") 8769) ;; #X2241 (nil "nshortmid" ("AMS" "Neg Rel I") 8740) ;; #X2224 (nil "nmid" ("AMS" "Neg Rel I") 8740) ;; #X2224 (nil "nvdash" ("AMS" "Neg Rel I") 8876) ;; #X22AC (nil "nvDash" ("AMS" "Neg Rel I") 8877) ;; #X22AD (nil "ntriangleleft" ("AMS" "Neg Rel I") 8938) ;; #X22EA (nil "ntrianglelefteq" ("AMS" "Neg Rel I") 8940) ;; #X22EC (nil "nsubseteq" ("AMS" "Neg Rel I") 8840) ;; #X2288 (nil "subsetneq" ("AMS" "Neg Rel I") 8842) ;; #X228A (nil "varsubsetneq" ("AMS" "Neg Rel I")) (nil "subsetneqq" ("AMS" "Neg Rel I") 10955) ;; #X2ACB (nil "varsubsetneqq" ("AMS" "Neg Rel I")) (nil "ngtr" ("AMS" "Neg Rel II") 8815) ;; #X226F (nil "ngeq" ("AMS" "Neg Rel II") 8817) ;; #X2271 (nil "ngeqslant" ("AMS" "Neg Rel II")) (nil "ngeqq" ("AMS" "Neg Rel II")) (nil "gneq" ("AMS" "Neg Rel II") 10888) ;; #X2A88 (nil "gneqq" ("AMS" "Neg Rel II") 8809) ;; #X2269 (nil "gvertneqq" ("AMS" "Neg Rel II")) (nil "gnsim" ("AMS" "Neg Rel II") 8935) ;; #X22E7 (nil "gnapprox" ("AMS" "Neg Rel II") 10890) ;; #X2A8A (nil "nsucc" ("AMS" "Neg Rel II") 8833) ;; #X2281 (nil "nsucceq" ("AMS" "Neg Rel II")) (nil "succnsim" ("AMS" "Neg Rel II") 8937) ;; #X22E9 (nil "succnapprox" ("AMS" "Neg Rel II") 10938) ;; #X2ABA (nil "ncong" ("AMS" "Neg Rel II") 8775) ;; #X2247 (nil "nshortparallel" ("AMS" "Neg Rel II") 8742) ;; #X2226 (nil "nparallel" ("AMS" "Neg Rel II") 8742) ;; #X2226 (nil "nvDash" ("AMS" "Neg Rel II") 8877) ;; #X22AD (nil "nVDash" ("AMS" "Neg Rel II") 8879) ;; #X22AF (nil "ntriangleright" ("AMS" "Neg Rel II") 8939) ;; #X22EB (nil "ntrianglerighteq" ("AMS" "Neg Rel II") 8941) ;; #X22ED (nil "nsupseteq" ("AMS" "Neg Rel II") 8841) ;; #X2289 (nil "nsupseteqq" ("AMS" "Neg Rel II")) (nil "supsetneq" ("AMS" "Neg Rel II") 8843) ;; #X228B (nil "varsupsetneq" ("AMS" "Neg Rel II")) (nil "supsetneqq" ("AMS" "Neg Rel II") 10956) ;; #X2ACC (nil "varsupsetneqq" ("AMS" "Neg Rel II")) (nil "dotplus" ("AMS" "Binary Op") 8724) ;; #X2214 (nil "smallsetminus" ("AMS" "Binary Op") 8726) ;; #X2216 (nil "Cap" ("AMS" "Binary Op") 8914) ;; #X22D2 (nil "Cup" ("AMS" "Binary Op") 8915) ;; #X22D3 (nil "barwedge" ("AMS" "Binary Op") 8892) ;; #X22BC (nil "veebar" ("AMS" "Binary Op") 8891) ;; #X22BB (nil "doublebarwedge" ("AMS" "Binary Op") 8966) ;; #X2306 (nil "boxminus" ("AMS" "Binary Op") 8863) ;; #X229F (nil "boxtimes" ("AMS" "Binary Op") 8864) ;; #X22A0 (nil "boxdot" ("AMS" "Binary Op") 8865) ;; #X22A1 (nil "boxplus" ("AMS" "Binary Op") 8862) ;; #X229E (nil "divideontimes" ("AMS" "Binary Op") 8903) ;; #X22C7 (nil "ltimes" ("AMS" "Binary Op") 8905) ;; #X22C9 (nil "rtimes" ("AMS" "Binary Op") 8906) ;; #X22CA (nil "leftthreetimes" ("AMS" "Binary Op") 8907) ;; #X22CB (nil "rightthreetimes" ("AMS" "Binary Op") 8908) ;; #X22CC (nil "curlywedge" ("AMS" "Binary Op") 8911) ;; #X22CF (nil "curlyvee" ("AMS" "Binary Op") 8910) ;; #X22CE (nil "circleddash" ("AMS" "Binary Op") 8861) ;; #X229D (nil "circledast" ("AMS" "Binary Op") 8859) ;; #X229B (nil "circledcirc" ("AMS" "Binary Op") 8858) ;; #X229A (nil "centerdot" ("AMS" "Binary Op")) (nil "intercal" ("AMS" "Binary Op") 8890) ;; #X22BA (nil "hbar" ("AMS" "Misc") 8463) ;; #X210F (nil "hslash" ("AMS" "Misc") 8463) ;; #X210F (nil "vartriangle" ("AMS" "Misc") 9653) ;; #X25B5 (nil "triangledown" ("AMS" "Misc") 9663) ;; #X25BF (nil "square" ("AMS" "Misc") 9633) ;; #X25A1 (nil "lozenge" ("AMS" "Misc") 9674) ;; #X25CA (nil "circledS" ("AMS" "Misc") 9416) ;; #X24C8 (nil "angle" ("AMS" "Misc") 8736) ;; #X2220 (nil "measuredangle" ("AMS" "Misc") 8737) ;; #X2221 (nil "nexists" ("AMS" "Misc") 8708) ;; #X2204 (nil "mho" ("AMS" "Misc") 8487) ;; #X2127 (nil "Finv" ("AMS" "Misc") 8498) ;; #X2132 (nil "Game" ("AMS" "Misc") 8513) ;; #X2141 (nil "Bbbk" ("AMS" "Misc") 120156) ;; #X1D55C (nil "backprime" ("AMS" "Misc") 8245) ;; #X2035 (nil "varnothing" ("AMS" "Misc") 8709) ;; #X2205 (nil "blacktriangle" ("AMS" "Misc") 9652) ;; #X25B4 (nil "blacktriangledown" ("AMS" "Misc") 9662) ;; #X25BE (nil "blacksquare" ("AMS" "Misc") 9632) ;; #X25A0 (nil "blacklozenge" ("AMS" "Misc") 10731) ;; #X29EB (nil "bigstar" ("AMS" "Misc") 9733) ;; #X2605 (nil "sphericalangle" ("AMS" "Misc") 8738) ;; #X2222 (nil "complement" ("AMS" "Misc") 8705) ;; #X2201 (nil "eth" ("AMS" "Misc") 240) ;; #X00F0 (nil "diagup" ("AMS" "Misc") 9585) ;; #X2571 (nil "diagdown" ("AMS" "Misc") 9586) ;; #X2572 (nil "dddot" ("AMS" "Accents") 8411) ;; #X20DB (nil "ddddot" ("AMS" "Accents") 8412) ;; #X20DC (nil "bigl" ("AMS" "Delimiters")) (nil "bigr" ("AMS" "Delimiters")) (nil "Bigl" ("AMS" "Delimiters")) (nil "Bigr" ("AMS" "Delimiters")) (nil "biggl" ("AMS" "Delimiters")) (nil "biggr" ("AMS" "Delimiters")) (nil "Biggl" ("AMS" "Delimiters")) (nil "Biggr" ("AMS" "Delimiters")) (nil "lvert" ("AMS" "Delimiters")) (nil "rvert" ("AMS" "Delimiters")) (nil "lVert" ("AMS" "Delimiters")) (nil "rVert" ("AMS" "Delimiters")) (nil "ulcorner" ("AMS" "Delimiters") 8988) ;; #X231C (nil "urcorner" ("AMS" "Delimiters") 8989) ;; #X231D (nil "llcorner" ("AMS" "Delimiters") 8990) ;; #X231E (nil "lrcorner" ("AMS" "Delimiters") 8991) ;; #X231F (nil "nobreakdash" ("AMS" "Special")) (nil "leftroot" ("AMS" "Special")) (nil "uproot" ("AMS" "Special")) (nil "accentedsymbol" ("AMS" "Special")) (nil "xleftarrow" ("AMS" "Special")) (nil "xrightarrow" ("AMS" "Special")) (nil "overset" ("AMS" "Special")) (nil "underset" ("AMS" "Special")) (nil "dfrac" ("AMS" "Special")) (nil "genfrac" ("AMS" "Special")) (nil "tfrac" ("AMS" "Special")) (nil "binom" ("AMS" "Special")) (nil "dbinom" ("AMS" "Special")) (nil "tbinom" ("AMS" "Special")) (nil "smash" ("AMS" "Special")) (nil "eucal" ("AMS" "Special")) (nil "boldsymbol" ("AMS" "Special")) (nil "text" ("AMS" "Special")) (nil "intertext" ("AMS" "Special")) (nil "substack" ("AMS" "Special")) (nil "subarray" ("AMS" "Special")) (nil "sideset" ("AMS" "Special"))) "Alist of LaTeX math symbols. Each entry should be a list with upto four elements, KEY, VALUE, MENU and CHARACTER, see `LaTeX-math-list' for details.") (defcustom LaTeX-math-abbrev-prefix "`" "Prefix key for use in `LaTeX-math-mode'. This has to be a string representing a key sequence in a format understood by the `kbd' macro. This corresponds to the syntax usually used in the Emacs and Elisp manuals. Setting this variable directly does not take effect; use \\[customize]." :group 'LaTeX-math :initialize 'custom-initialize-default :set '(lambda (symbol value) (define-key LaTeX-math-mode-map (LaTeX-math-abbrev-prefix) t) (set-default symbol value) (define-key LaTeX-math-mode-map (LaTeX-math-abbrev-prefix) LaTeX-math-keymap)) :type '(string :tag "Key sequence")) (defun LaTeX-math-abbrev-prefix () "Make a key definition from the variable `LaTeX-math-abbrev-prefix'." (if (stringp LaTeX-math-abbrev-prefix) (read-kbd-macro LaTeX-math-abbrev-prefix) LaTeX-math-abbrev-prefix)) (defvar LaTeX-math-keymap (make-sparse-keymap) "Keymap used for `LaTeX-math-mode' commands.") (defvar LaTeX-math-menu '("Math" ("Greek Uppercase") ("Greek Lowercase") ("Binary Op") ("Relational") ("Arrows") ("Punctuation") ("Misc Symbol") ("Var Symbol") ("Log-like") ("Delimiters") ("Constructs") ("Accents") ("AMS")) "Menu containing LaTeX math commands. The menu entries will be generated dynamically, but you can specify the sequence by initializing this variable.") (defcustom LaTeX-math-menu-unicode (and (string-match "\\" (emacs-version)) t) "Whether the LaTeX menu should try using Unicode for effect." :type 'boolean :group 'LaTeX-math) (let ((math (reverse (append LaTeX-math-list LaTeX-math-default))) (map LaTeX-math-keymap) (unicode (and LaTeX-math-menu-unicode (fboundp 'decode-char)))) (while math (let* ((entry (car math)) (key (nth 0 entry)) (prefix (and unicode (nth 3 entry))) value menu name) (setq math (cdr math)) (if (and prefix (setq prefix (decode-char 'ucs (nth 3 entry)))) (setq prefix (concat (string prefix) " \\")) (setq prefix "\\")) (if (listp (cdr entry)) (setq value (nth 1 entry) menu (nth 2 entry)) (setq value (cdr entry) menu nil)) (if (stringp value) (progn (setq name (intern (concat "LaTeX-math-" value))) (fset name (list 'lambda (list 'arg) (list 'interactive "*P") (list 'LaTeX-math-insert value 'arg)))) (setq name value)) (if key (progn (setq key (cond ((numberp key) (char-to-string key)) ((stringp key) (read-kbd-macro key)) (t (vector key)))) (define-key map key name))) (if menu (let ((parent LaTeX-math-menu)) (if (listp menu) (progn (while (cdr menu) (let ((sub (assoc (car menu) LaTeX-math-menu))) (if sub (setq parent sub) (setcdr parent (cons (list (car menu)) (cdr parent)))) (setq menu (cdr menu)))) (setq menu (car menu)))) (let ((sub (assoc menu parent))) (if sub (if (stringp value) (setcdr sub (cons (vector (concat prefix value) name t) (cdr sub))) (error "Cannot have multiple special math menu items")) (setcdr parent (cons (if (stringp value) (list menu (vector (concat prefix value) name t)) (vector menu name t)) (cdr parent))))))))) ;; Make the math prefix char available if it has not been used as a prefix. (unless (lookup-key map (LaTeX-math-abbrev-prefix)) (define-key map (LaTeX-math-abbrev-prefix) 'self-insert-command))) (define-minor-mode LaTeX-math-mode "A minor mode with easy access to TeX math macros. Easy insertion of LaTeX math symbols. If you give a prefix argument, the symbols will be surrounded by dollar signs. The following commands are defined: \\{LaTeX-math-mode-map}" nil nil (list (cons (LaTeX-math-abbrev-prefix) LaTeX-math-keymap)) (if LaTeX-math-mode (easy-menu-add LaTeX-math-mode-menu LaTeX-math-mode-map) (easy-menu-remove LaTeX-math-mode-menu)) (TeX-set-mode-name)) (defalias 'latex-math-mode 'LaTeX-math-mode) (easy-menu-define LaTeX-math-mode-menu LaTeX-math-mode-map "Menu used in math minor mode." LaTeX-math-menu) (defcustom LaTeX-math-insert-function 'TeX-insert-macro "Function called with argument STRING to insert \\STRING." :group 'LaTeX-math :type 'function) (defun LaTeX-math-insert (string dollar) "Insert \\STRING{}. If DOLLAR is non-nil, put $'s around it." (if dollar (insert "$")) (funcall LaTeX-math-insert-function string) (if dollar (insert "$"))) (defun LaTeX-math-cal (char dollar) "Insert a {\\cal CHAR}. If DOLLAR is non-nil, put $'s around it." (interactive "*c\nP") (if dollar (insert "$")) (if (member "latex2e" (TeX-style-list)) (insert "\\mathcal{" (char-to-string char) "}") (insert "{\\cal " (char-to-string char) "}")) (if dollar (insert "$"))) ;;; Folding (defcustom LaTeX-fold-macro-spec-list nil "List of display strings and macros to fold in LaTeX mode." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1)) (repeat :tag "Macros" (string)))) :group 'TeX-fold) (defcustom LaTeX-fold-env-spec-list nil "List of display strings and environments to fold in LaTeX mode." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1)) (repeat :tag "Environments" (string)))) :group 'TeX-fold) (defcustom LaTeX-fold-math-spec-list (delete nil (mapcar (lambda (elt) (let ((tex-token (nth 1 elt)) (submenu (nth 2 elt)) (unicode (nth 3 elt)) uchar noargp) (when (and (fboundp 'decode-char) (integerp unicode)) (setq uchar (decode-char 'ucs unicode))) (when (listp submenu) (setq submenu (nth 1 submenu))) (setq noargp (not (string-match (concat "^" (regexp-opt '("Constructs" "Accents"))) submenu))) (when (and (stringp tex-token) (integerp uchar) noargp) `(,(char-to-string uchar) (,tex-token))))) `((nil "to" "" 8594) (nil "gets" "" 8592) ,@LaTeX-math-default))) "List of display strings and math macros to fold in LaTeX mode." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1)) (repeat :tag "Math Macros" (string)))) :group 'TeX-fold) ;;; Keymap (defvar LaTeX-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map TeX-mode-map) ;; Standard (define-key map "\n" 'reindent-then-newline-and-indent) ;; From latex.el ;; We now set `fill-paragraph-function' instead. ;; (define-key map "\eq" 'LaTeX-fill-paragraph) ;*** Alias ;; This key is now used by Emacs for face settings. ;; (define-key map "\eg" 'LaTeX-fill-region) ;*** Alias (define-key map "\e\C-e" 'LaTeX-find-matching-end) (define-key map "\e\C-a" 'LaTeX-find-matching-begin) (define-key map "\C-c\C-q\C-p" 'LaTeX-fill-paragraph) (define-key map "\C-c\C-q\C-r" 'LaTeX-fill-region) (define-key map "\C-c\C-q\C-s" 'LaTeX-fill-section) (define-key map "\C-c\C-q\C-e" 'LaTeX-fill-environment) (define-key map "\C-c." 'LaTeX-mark-environment) ;*** Dubious (define-key map "\C-c*" 'LaTeX-mark-section) ;*** Dubious (define-key map "\C-c\C-e" 'LaTeX-environment) (define-key map "\C-c\n" 'LaTeX-insert-item) (or (key-binding "\e\r") (define-key map "\e\r" 'LaTeX-insert-item)) ;*** Alias (define-key map "\C-c]" 'LaTeX-close-environment) (define-key map "\C-c\C-s" 'LaTeX-section) (define-key map "\C-c~" 'LaTeX-math-mode) ;*** Dubious (define-key map "-" 'LaTeX-babel-insert-hyphen) map) "Keymap used in `LaTeX-mode'.") (defvar LaTeX-environment-menu-name "Insert Environment (C-c C-e)") (defun LaTeX-environment-menu-entry (entry) "Create an entry for the environment menu." (vector (car entry) (list 'LaTeX-environment-menu (car entry)) t)) (defvar LaTeX-environment-modify-menu-name "Change Environment (C-u C-c C-e)") (defun LaTeX-environment-modify-menu-entry (entry) "Create an entry for the change environment menu." (vector (car entry) (list 'LaTeX-modify-environment (car entry)) t)) (defun LaTeX-section-enable-symbol (LEVEL) "Symbol used to enable section LEVEL in the menu bar." (intern (concat "LaTeX-section-" (int-to-string (nth 1 entry)) "-enable"))) (defun LaTeX-section-enable (entry) "Enable or disable section ENTRY from `LaTeX-section-list'." (let* ((level (nth 1 entry)) (symbol (LaTeX-section-enable-symbol level))) (set symbol (or (= level 0) (>= level LaTeX-largest-level))) (make-variable-buffer-local symbol))) (defun LaTeX-section-menu (level) "Insert section from menu." (let ((LaTeX-section-hook (delq 'LaTeX-section-heading (copy-sequence LaTeX-section-hook)))) (LaTeX-section level))) (defun LaTeX-section-menu-entry (entry) "Create an ENTRY for the section menu." (let ((enable (LaTeX-section-enable-symbol (nth 1 entry)))) (vector (car entry) (list 'LaTeX-section-menu (nth 1 entry)) enable))) (defcustom LaTeX-menu-max-items 25 "*Maximum number of items in the menu for LaTeX environments. If number of entries in a menu is larger than this value, split menu into submenus of nearly equal length. If nil, never split menu into submenus." :group 'LaTeX-environment :type '(choice (const :tag "no submenus" nil) (integer))) (defcustom LaTeX-submenu-name-format "%-12.12s ... %.12s" "*Format specification of the submenu name. Used by `LaTeX-split-long-menu' if the number of entries in a menu is larger than `LaTeX-menu-max-items'. This string should contain one %s for the name of the first entry and one %s for the name of the last entry in the submenu. If the value is a function, it should return the submenu name. The function is called with two arguments, the names of the first and the last entry in the menu." :group 'LaTeX-environment :type '(choice (string :tag "Format string") (function))) (defun LaTeX-split-long-menu (menu) "Split MENU according to `LaTeX-menu-max-items'." (let ((len (length menu))) (if (or (null LaTeX-menu-max-items) (null (featurep 'lisp-float-type)) (<= len LaTeX-menu-max-items)) menu ;; Submenu is max 2 entries longer than menu, never shorter, number of ;; entries in submenus differ by at most one (with longer submenus first) (let* ((outer (floor (sqrt len))) (inner (/ len outer)) (rest (% len outer)) (result nil)) (setq menu (reverse menu)) (while menu (let ((in inner) (sub nil) (to (car menu))) (while (> in 0) (setq in (1- in) sub (cons (car menu) sub) menu (cdr menu))) (setq result (cons (cons (if (stringp LaTeX-submenu-name-format) (format LaTeX-submenu-name-format (aref (car sub) 0) (aref to 0)) (funcall LaTeX-submenu-name-format (aref (car sub) 0) (aref to 0))) sub) result) rest (1+ rest)) (if (= rest outer) (setq inner (1+ inner))))) result)))) (defvar LaTeX-section-menu nil) (make-variable-buffer-local 'LaTeX-section-menu) (defun LaTeX-section-menu-filter (ignored) "Filter function for the section submenu in the mode menu. The argument IGNORED is not used in any way." (TeX-update-style) (or LaTeX-section-menu (progn (setq LaTeX-section-list-changed nil) (mapc 'LaTeX-section-enable LaTeX-section-list) (setq LaTeX-section-menu (mapcar 'LaTeX-section-menu-entry LaTeX-section-list))))) (defvar LaTeX-environment-menu nil) (make-variable-buffer-local 'LaTeX-environment-menu) (defvar LaTeX-environment-modify-menu nil) (make-variable-buffer-local 'LaTeX-environment-modify-menu) (defun LaTeX-environment-menu-filter (menu) "Filter function for the environment submenus in the mode menu. The argument MENU is the name of the submenu in concern and corresponds to the variables `LaTeX-environment-menu-name' and `LaTeX-environment-modify-menu-name'." (TeX-update-style) (cond ((string= menu LaTeX-environment-menu-name) (or LaTeX-environment-menu (setq LaTeX-environment-menu (LaTeX-split-long-menu (mapcar 'LaTeX-environment-menu-entry (LaTeX-environment-list)))))) ((string= menu LaTeX-environment-modify-menu-name) (or LaTeX-environment-modify-menu (setq LaTeX-environment-modify-menu (LaTeX-split-long-menu (mapcar 'LaTeX-environment-modify-menu-entry (LaTeX-environment-list)))))))) (easy-menu-define LaTeX-mode-command-menu LaTeX-mode-map "Command menu used in LaTeX mode." (TeX-mode-specific-command-menu 'latex-mode)) (easy-menu-define LaTeX-mode-menu LaTeX-mode-map "Menu used in LaTeX mode." (TeX-menu-with-help `("LaTeX" ("Section (C-c C-s)" :filter LaTeX-section-menu-filter) ["Macro..." TeX-insert-macro :help "Insert a macro and possibly arguments"] ["Complete Macro" TeX-complete-symbol :help "Complete the current macro or environment name"] ,(list LaTeX-environment-menu-name :filter (lambda (ignored) (LaTeX-environment-menu-filter LaTeX-environment-menu-name))) ,(list LaTeX-environment-modify-menu-name :filter (lambda (ignored) (LaTeX-environment-menu-filter LaTeX-environment-modify-menu-name))) ["Close Environment" LaTeX-close-environment :help "Insert the \\end part of the current environment"] ["Item" LaTeX-insert-item :help "Insert a new \\item into current environment"] "-" ("Insert Font" ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] ["Sans Serif" (TeX-font nil ?\C-f) :keys "C-c C-f C-f"] ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] ["Slanted" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"] ["Calligraphic" (TeX-font nil ?\C-a) :keys "C-c C-f C-a"]) ("Replace Font" ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] ["Sans Serif" (TeX-font t ?\C-f) :keys "C-u C-c C-f C-f"] ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] ["Slanted" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"] ["Calligraphic" (TeX-font t ?\C-a) :keys "C-u C-c C-f C-a"]) ["Delete Font" (TeX-font t ?\C-d) :keys "C-c C-f C-d"] "-" ["Comment or Uncomment Region" TeX-comment-or-uncomment-region :help "Make the selected region outcommented or active again"] ["Comment or Uncomment Paragraph" TeX-comment-or-uncomment-paragraph :help "Make the current paragraph outcommented or active again"] ("Formatting and Marking" ["Format Environment" LaTeX-fill-environment :help "Fill and indent the current environment"] ["Format Paragraph" LaTeX-fill-paragraph :help "Fill and ident the current paragraph"] ["Format Region" LaTeX-fill-region :help "Fill and indent the currently selected region"] ["Format Section" LaTeX-fill-section :help "Fill and indent the current section"] "-" ["Mark Environment" LaTeX-mark-environment :help "Mark the current environment"] ["Mark Section" LaTeX-mark-section :help "Mark the current section"] "-" ["Beginning of Environment" LaTeX-find-matching-begin :help "Move point to the beginning of the current environment"] ["End of Environment" LaTeX-find-matching-end :help "Move point to the end of the current environment"]) ,TeX-fold-menu ["Math Mode" LaTeX-math-mode :style toggle :selected LaTeX-math-mode :help "Toggle math mode"] "-" [ "Convert 209 to 2e" LaTeX-209-to-2e :visible (member "latex2" (TeX-style-list)) ] . ,TeX-common-menu-entries))) (defcustom LaTeX-font-list '((?\C-a "" "" "\\mathcal{" "}") (?\C-b "\\textbf{" "}" "\\mathbf{" "}") (?\C-c "\\textsc{" "}") (?\C-e "\\emph{" "}") (?\C-f "\\textsf{" "}" "\\mathsf{" "}") (?\C-i "\\textit{" "}" "\\mathit{" "}") (?\C-m "\\textmd{" "}") (?\C-n "\\textnormal{" "}" "\\mathnormal{" "}") (?\C-r "\\textrm{" "}" "\\mathrm{" "}") (?\C-s "\\textsl{" "}" "\\mathbb{" "}") (?\C-t "\\texttt{" "}" "\\mathtt{" "}") (?\C-u "\\textup{" "}") (?\C-d "" "" t)) "Font commands used with LaTeX2e. See `TeX-font-list'." :group 'LaTeX-macro :type '(repeat (group :value (?\C-a "" "") (character :tag "Key") (string :tag "Prefix") (string :tag "Suffix") (option (group :inline t (string :tag "Math Prefix") (string :tag "Math Suffix"))) (option (sexp :format "Replace\n" :value t))))) ;;; Simple Commands (defcustom LaTeX-babel-hyphen "\"=" "String to be used when typing `-'. This usually is a hyphen alternative or hyphenation aid, like \"=, \"~ or \"-, provided by babel and the related language style files. Set it to an empty string or nil in order to disable this feature. Alter `LaTeX-babel-hyphen-language-alist' in case you want to change the behavior for a specific language only." :group 'LaTeX-macro :type 'string) (defcustom LaTeX-babel-hyphen-after-hyphen t "Control insertion of hyphen strings. If non-nil insert normal hyphen on first key press and swap it with the language-specific hyphen string specified in the variable `LaTeX-babel-hyphen' on second key press. If nil do it the other way round." :group 'LaTeX-macro :type 'boolean) (defcustom LaTeX-babel-hyphen-language-alist nil "Alist controlling hyphen insertion for specific languages. It may be used to override the defaults given by `LaTeX-babel-hyphen' and `LaTeX-babel-hyphen-after-hyphen' respectively. The first item in each element is a string specifying the language as set by the language-specific style file. The second item is the string to be used instead of `LaTeX-babel-hyphen'. The third element is the value overriding `LaTeX-bybel-hyphen-after-hyphen'." :group 'LaTeX-macro :type '(alist :key-type (string :tag "Language") :value-type (group (string :tag "Hyphen string") (boolean :tag "Insert plain hyphen first" :value t)))) (defvar LaTeX-babel-hyphen-language nil "String determining language-specific behavior of hyphen insertion. It serves as an indicator that the babel hyphenation string should be used and as a means to find a potential customization in `LaTeX-babel-hyphen-language-alist' related to the active language. It is usually set by language-related style files.") (make-variable-buffer-local 'LaTeX-babel-hyphen-language) (defun LaTeX-babel-insert-hyphen (force) "Insert a hyphen string. The string can be either a normal hyphen or the string specified in `LaTeX-babel-hyphen'. Wether one or the other is chosen depends on the value of `LaTeX-babel-hyphen-after-hyphen' and the buffer context. If prefix argument FORCE is non-nil, always insert a regular hyphen." (interactive "*P") (if (or force (zerop (length LaTeX-babel-hyphen)) (not LaTeX-babel-hyphen-language) ;; FIXME: It would be nice to check for verbatim constructs in the ;; non-font-locking case, but things like `LaTeX-current-environment' ;; are rather expensive in large buffers. (and (fboundp 'font-latex-faces-present-p) (font-latex-faces-present-p '(font-latex-verbatim-face font-latex-math-face font-lock-comment-face))) (texmathp) (TeX-in-comment)) (call-interactively 'self-insert-command) (let* ((lang (assoc LaTeX-babel-hyphen-language LaTeX-babel-hyphen-language-alist)) (hyphen (if lang (nth 1 lang) LaTeX-babel-hyphen)) (h-after-h (if lang (nth 2 lang) LaTeX-babel-hyphen-after-hyphen)) (hyphen-length (length hyphen))) (cond ;; "= --> -- / - ((string= (buffer-substring (max (- (point) hyphen-length) (point-min)) (point)) hyphen) (if h-after-h (progn (delete-backward-char hyphen-length) (insert "--")) (delete-backward-char hyphen-length) (call-interactively 'self-insert-command))) ;; -- --> [+]- ((string= (buffer-substring (max (- (point) 2) (point-min)) (point)) "--") (call-interactively 'self-insert-command)) ;; - --> "= / [+]- ((eq (char-before) ?-) (if h-after-h (progn (delete-backward-char 1) (insert hyphen)) (call-interactively 'self-insert-command))) (h-after-h (call-interactively 'self-insert-command)) (t (insert hyphen)))))) ;; Cater for Delete Selection mode (put 'LaTeX-babel-insert-hyphen 'delete-selection t) (defcustom LaTeX-enable-toolbar t "Enable LaTeX tool bar." :group 'TeX-tool-bar :type 'boolean) (defun LaTeX-maybe-install-toolbar () "Conditionally install tool bar buttons for LaTeX mode. Install tool bar if `LaTeX-enable-toolbar' is non-nil." (when LaTeX-enable-toolbar ;; Defined in `tex-bar.el': (LaTeX-install-toolbar))) ;;; Mode (defgroup LaTeX-macro nil "Special support for LaTeX macros in AUCTeX." :prefix "TeX-" :group 'LaTeX :group 'TeX-macro) (defcustom TeX-arg-cite-note-p nil "*If non-nil, ask for optional note in citations." :type 'boolean :group 'LaTeX-macro) (defcustom TeX-arg-footnote-number-p nil "*If non-nil, ask for optional number in footnotes." :type 'boolean :group 'LaTeX-macro) (defcustom TeX-arg-item-label-p nil "*If non-nil, always ask for optional label in items. Otherwise, only ask in description environments." :type 'boolean :group 'LaTeX-macro) (defcustom TeX-arg-right-insert-p t "*If non-nil, always insert automatically the corresponding \\right. This happens when \\left is inserted." :type 'boolean :group 'LaTeX-macro) (defcustom LaTeX-mode-hook nil "A hook run in LaTeX mode buffers." :type 'hook :group 'LaTeX) (TeX-abbrev-mode-setup latex-mode) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.drv\\'" . latex-mode)) ;;;###autoload (defun TeX-latex-mode () "Major mode in AUCTeX for editing LaTeX files. See info under AUCTeX for full documentation. Special commands: \\{LaTeX-mode-map} Entering LaTeX mode calls the value of `text-mode-hook', then the value of `TeX-mode-hook', and then the value of `LaTeX-mode-hook'." (interactive) (LaTeX-common-initialization) (setq TeX-base-mode-name "LaTeX") (setq major-mode 'latex-mode) (setq TeX-command-default "LaTeX") (setq TeX-sentinel-default-function 'TeX-LaTeX-sentinel) (add-hook 'tool-bar-mode-on-hook 'LaTeX-maybe-install-toolbar nil t) (when (if (featurep 'xemacs) (featurep 'toolbar) (and (boundp 'tool-bar-mode) tool-bar-mode)) (LaTeX-maybe-install-toolbar)) (TeX-run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'LaTeX-mode-hook) (TeX-set-mode-name) ;; Defeat filladapt (if (and (boundp 'filladapt-mode) filladapt-mode) (turn-off-filladapt-mode))) (TeX-abbrev-mode-setup doctex-mode) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.dtx\\'" . doctex-mode)) ;;;###autoload (define-derived-mode docTeX-mode TeX-latex-mode "docTeX" "Major mode in AUCTeX for editing .dtx files derived from `LaTeX-mode'. Runs `LaTeX-mode', sets a few variables and runs the hooks in `docTeX-mode-hook'." :abbrev-table doctex-mode-abbrev-table (setq major-mode 'doctex-mode) (set (make-local-variable 'LaTeX-insert-into-comments) t) (set (make-local-variable 'LaTeX-syntactic-comments) t) (setq TeX-default-extension docTeX-default-extension) ;; Make filling and indentation aware of DocStrip guards. (setq paragraph-start (concat paragraph-start "\\|%<") paragraph-separate (concat paragraph-separate "\\|%<") TeX-comment-start-regexp "\\(?:%\\(?:<[^>]+>\\)?\\)") (setq TeX-base-mode-name "docTeX") (TeX-set-mode-name) (funcall TeX-install-font-lock)) ;;This is actually a mess: to fit the scheme properly, our derived ;;mode definition would have had to be made for TeX-doctex-mode in the ;;first place, but then we could not have used define-derived-mode, or ;;all mode-specific variables would have gotten non-AUCTeX names. ;;This solution has the advantage that documentation strings are ;;provided in the autoloads, and has the disadvantage that docTeX-mode ;;is not aliased to doctex-mode (not even when the AUCTeX version is ;;disabled) as would be normal for our scheme. ;;;###autoload (defalias 'TeX-doctex-mode 'docTeX-mode) (defcustom docTeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defcustom docTeX-clean-output-suffixes TeX-clean-default-output-suffixes "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defvar LaTeX-header-end (concat "^[^%\n]*" (regexp-quote TeX-esc) "begin *" TeX-grop "document" TeX-grcl) "Default end of header marker for LaTeX documents.") (defvar LaTeX-trailer-start (concat "^[^%\n]*" (regexp-quote TeX-esc) "end *" TeX-grop "document" TeX-grcl) "Default start of trailer marker for LaTeX documents.") (defcustom LaTeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defcustom LaTeX-clean-output-suffixes TeX-clean-default-output-suffixes "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defun LaTeX-common-initialization () "Common initialization for LaTeX derived modes." (VirTeX-common-initialization) (set-syntax-table LaTeX-mode-syntax-table) (make-local-variable 'indent-line-function) (setq indent-line-function 'LaTeX-indent-line) (setq local-abbrev-table latex-mode-abbrev-table) ;; Filling (make-local-variable 'paragraph-ignore-fill-prefix) (setq paragraph-ignore-fill-prefix t) (make-local-variable 'fill-paragraph-function) (setq fill-paragraph-function 'LaTeX-fill-paragraph) (make-local-variable 'adaptive-fill-mode) (setq adaptive-fill-mode nil) (or LaTeX-largest-level (setq LaTeX-largest-level (LaTeX-section-level "section"))) (setq TeX-header-end LaTeX-header-end TeX-trailer-start LaTeX-trailer-start) (require 'outline) (make-local-variable 'outline-level) (setq outline-level 'LaTeX-outline-level) (make-local-variable 'outline-regexp) (setq outline-regexp (LaTeX-outline-regexp t)) (when (boundp 'outline-heading-alist) (setq outline-heading-alist (mapcar (lambda (x) (cons (concat "\\" (nth 0 x)) (nth 1 x))) LaTeX-section-list))) (make-local-variable 'TeX-auto-full-regexp-list) (setq TeX-auto-full-regexp-list (append LaTeX-auto-regexp-list plain-TeX-auto-regexp-list)) (LaTeX-set-paragraph-start) (setq paragraph-separate (concat "[ \t]*%*[ \t]*\\(" "\\$\\$" ; Plain TeX display math "\\|$\\)")) (setq TeX-verbatim-p-function 'LaTeX-verbatim-p) (setq TeX-search-forward-comment-start-function 'LaTeX-search-forward-comment-start) (set (make-local-variable 'TeX-search-files-type-alist) LaTeX-search-files-type-alist) (make-local-variable 'LaTeX-item-list) (setq LaTeX-item-list '(("description" . LaTeX-item-argument) ("thebibliography" . LaTeX-item-bib))) (setq TeX-complete-list (append '(("\\\\cite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\cite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\cite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" 2 LaTeX-bibitem-list) ("\\\\nocite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\nocite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" 2 LaTeX-bibitem-list) ("\\\\ref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") ("\\\\eqref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") ("\\\\pageref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") ("\\\\\\(index\\|glossary\\){\\([^{}\n\r\\%]*\\)" 2 LaTeX-index-entry-list "}") ("\\\\begin{\\([A-Za-z]*\\)" 1 LaTeX-environment-list "}") ("\\\\end{\\([A-Za-z]*\\)" 1 LaTeX-environment-list "}") ("\\\\renewcommand\\*?{\\\\\\([A-Za-z]*\\)" 1 LaTeX-symbol-list "}") ("\\\\renewenvironment\\*?{\\([A-Za-z]*\\)" 1 LaTeX-environment-list "}")) TeX-complete-list)) (LaTeX-add-environments '("document" LaTeX-env-document) '("enumerate" LaTeX-env-item) '("itemize" LaTeX-env-item) '("list" LaTeX-env-list) '("trivlist" LaTeX-env-item) '("picture" LaTeX-env-picture) '("tabular" LaTeX-env-array) '("tabular*" LaTeX-env-tabular*) '("array" LaTeX-env-array) '("eqnarray" LaTeX-env-label) '("equation" LaTeX-env-label) '("minipage" LaTeX-env-minipage) ;; The following have no special support, but are included in ;; case the auto files are missing. "sloppypar" "picture" "tabbing" "verbatim" "verbatim*" "flushright" "flushleft" "displaymath" "math" "quote" "quotation" "abstract" "center" "titlepage" "verse" "eqnarray*" ;; The following are not defined in latex.el, but in a number of ;; other style files. I'm to lazy to copy them to all the ;; corresponding .el files right now. ;; This means that AUCTeX will complete e.g. ;; ``thebibliography'' in a letter, but I guess we can live with ;; that. '("description" LaTeX-env-item) '("figure" LaTeX-env-figure) '("figure*" LaTeX-env-figure) '("table" LaTeX-env-figure) '("table*" LaTeX-env-figure) '("thebibliography" LaTeX-env-bib) '("theindex" LaTeX-env-item)) (TeX-add-symbols '("addtocounter" TeX-arg-counter "Value") '("alph" TeX-arg-counter) '("arabic" TeX-arg-counter) '("fnsymbol" TeX-arg-counter) '("newcounter" TeX-arg-define-counter [ TeX-arg-counter "Within counter" ]) '("roman" TeX-arg-counter) '("setcounter" TeX-arg-counter "Value") '("usecounter" TeX-arg-counter) '("value" TeX-arg-counter) '("stepcounter" TeX-arg-counter) '("refstepcounter" TeX-arg-counter) '("label" TeX-arg-define-label) '("pageref" TeX-arg-ref) '("ref" TeX-arg-ref) '("newcommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("renewcommand" TeX-arg-macro [ "Number of arguments" ] t) '("newenvironment" TeX-arg-define-environment [ "Number of arguments"] t t) '("renewenvironment" TeX-arg-environment [ "Number of arguments"] t t) '("providecommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("providecommand*" TeX-arg-define-macro [ "Number of arguments" ] t) '("newcommand*" TeX-arg-define-macro [ "Number of arguments" ] t) '("renewcommand*" TeX-arg-macro [ "Number of arguments" ] t) '("newenvironment*" TeX-arg-define-environment [ "Number of arguments"] t t) '("renewenvironment*" TeX-arg-environment [ "Number of arguments"] t t) '("newtheorem" TeX-arg-define-environment [ TeX-arg-environment "Numbered like" ] t [ (TeX-arg-eval progn (if (eq (save-excursion (backward-char 2) (preceding-char)) ?\]) () (TeX-arg-counter t "Within counter")) "") ]) '("newfont" TeX-arg-define-macro t) '("circle" "Diameter") '("circle*" "Diameter") '("dashbox" "Dash Length" TeX-arg-size [ TeX-arg-corner ] t) '("frame" t) '("framebox" (TeX-arg-conditional (string-equal (LaTeX-current-environment) "picture") (TeX-arg-size [ TeX-arg-corner ] t) ([ "Length" ] [ TeX-arg-lr ] t))) '("line" (TeX-arg-pair "X slope" "Y slope") "Length") '("linethickness" "Dimension") '("makebox" (TeX-arg-conditional (string-equal (LaTeX-current-environment) "picture") (TeX-arg-size [ TeX-arg-corner ] t) ([ "Length" ] [ TeX-arg-lr ] t))) '("multiput" TeX-arg-coordinate (TeX-arg-pair "X delta" "Y delta") "Number of copies" t) '("oval" TeX-arg-size [ TeX-arg-corner "Portion" ]) '("put" TeX-arg-coordinate t) '("savebox" TeX-arg-savebox (TeX-arg-conditional (string-equal (LaTeX-current-environment) "picture") (TeX-arg-size [ TeX-arg-corner ] t) ([ "Length" ] [ TeX-arg-lr ] t))) '("shortstack" [ TeX-arg-lr ] t) '("vector" (TeX-arg-pair "X slope" "Y slope") "Length") '("cline" "Span `i-j'") '("multicolumn" "Columns" "Format" t) '("item" (TeX-arg-conditional (or TeX-arg-item-label-p (string-equal (LaTeX-current-environment) "description")) ([ "Item label" ]) ()) (TeX-arg-literal " ")) '("bibitem" [ "Bibitem label" ] TeX-arg-define-cite) '("cite" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) ()) TeX-arg-cite) '("nocite" TeX-arg-cite) '("bibliographystyle" TeX-arg-bibstyle) '("bibliography" TeX-arg-bibliography) '("addbibresource" TeX-arg-bibliography) '("footnote" (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) t) '("footnotetext" (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) t) '("footnotemark" (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil)) '("newlength" TeX-arg-define-macro) '("setlength" TeX-arg-macro "Length") '("addtolength" TeX-arg-macro "Length") '("settowidth" TeX-arg-macro t) '("settoheight" TeX-arg-macro t) '("settodepth" TeX-arg-macro t) '("\\" [ "Space" ]) '("\\*" [ "Space" ]) '("hyphenation" t) '("linebreak" [ "How much [0 - 4]" ]) '("nolinebreak" [ "How much [0 - 4]" ]) '("nopagebreak" [ "How much [0 - 4]" ]) '("pagebreak" [ "How much [0 - 4]" ]) '("stackrel" t nil) '("frac" t nil) '("lefteqn" t) '("overbrace" t) '("overline" t) '("overleftarrow" t) '("overrightarrow" t) '("sqrt" [ "Root" ] t) '("underbrace" t) '("underline" t) '("author" t) '("date" t) '("thanks" t) '("title" t) '("pagenumbering" (TeX-arg-eval completing-read "Numbering style: " '(("arabic") ("roman") ("Roman") ("alph") ("Alph")))) '("pagestyle" TeX-arg-pagestyle) '("markboth" t nil) '("markright" t) '("thispagestyle" TeX-arg-pagestyle) '("addvspace" "Length") '("fbox" t) '("hspace*" "Length") '("hspace" "Length") '("mbox" t) '("newsavebox" TeX-arg-define-savebox) '("parbox" [ TeX-arg-tb ] [ "Height" ] [ TeX-arg-tb "Inner position" ] "Width" t) '("raisebox" "Raise" [ "Height above" ] [ "Depth below" ] t) '("rule" [ "Raise" ] "Width" "Thickness") '("sbox" TeX-arg-savebox t) '("usebox" TeX-arg-savebox) '("vspace*" "Length") '("vspace" "Length") '("documentstyle" TeX-arg-document) '("include" (TeX-arg-input-file "File" t)) '("includeonly" t) '("input" TeX-arg-input-file) '("addcontentsline" (TeX-arg-eval completing-read "File: " '(("toc") ("lof") ("lot"))) (TeX-arg-eval completing-read "Numbering style: " LaTeX-section-list) t) '("addtocontents" (TeX-arg-eval completing-read "File: " '(("toc") ("lof") ("lot"))) t) '("typeout" t) '("typein" [ TeX-arg-define-macro ] t) '("verb" TeX-arg-verb) '("verb*" TeX-arg-verb) '("extracolsep" t) '("index" TeX-arg-index) '("glossary" TeX-arg-index) '("numberline" "Section number" "Heading") '("caption" t) '("marginpar" [ "Left margin text" ] "Text") '("left" TeX-arg-insert-braces) ;; These have no special support, but are included in case the ;; auto files are missing. "TeX" "LaTeX" "samepage" "newline" "smallskip" "medskip" "bigskip" "fill" "stretch" "thinspace" "negthinspace" "enspace" "enskip" "quad" "qquad" "nonumber" "centering" "raggedright" "raggedleft" "kill" "pushtabs" "poptabs" "protect" "arraystretch" "hline" "vline" "cline" "thinlines" "thicklines" "and" "makeindex" "makeglossary" "reversemarginpar" "normalmarginpar" "raggedbottom" "flushbottom" "sloppy" "fussy" "newpage" "clearpage" "cleardoublepage" "twocolumn" "onecolumn" "maketitle" "tableofcontents" "listoffigures" "listoftables" '("tiny" -1) '("scriptsize" -1) '("footnotesize" -1) '("small" -1) '("normalsize" -1) '("large" -1) '("Large" -1) '("LARGE" -1) '("huge" -1) '("Huge" -1) "pounds" "copyright" "hfil" "hfill" "vfil" "vfill" "hrulefill" "dotfill" "indent" "noindent" "today" "appendix" "dots") (when (string-equal LaTeX-version "2e") (LaTeX-add-environments '("filecontents" LaTeX-env-contents) '("filecontents*" LaTeX-env-contents)) (TeX-add-symbols '("enlargethispage" "Length") '("enlargethispage*" "Length") '("tabularnewline" [ "Length" ]) '("suppressfloats" [ TeX-arg-tb "Suppress floats position" ]) '("ensuremath" "Math commands") '("textsuperscript" "Text") '("textcircled" "Text") "LaTeXe" "listfiles" "frontmatter" "mainmatter" "backmatter" "textcompwordmark" "textvisiblespace" "textemdash" "textendash" "textexclamdown" "textquestiondown" "textquotedblleft" "textquotedblright" "textquoteleft" "textquoteright" "textbullet" "textperiodcentered" "textbackslash" "textbar" "textless" "textgreater" "textasciicircum" "textasciitilde" "textregistered" "texttrademark" "rmfamily" "sffamily" "ttfamily" "mdseries" "bfseries" "itshape" "slshape" "upshape" "scshape")) (TeX-run-style-hooks "LATEX") (make-local-variable 'TeX-font-list) (make-local-variable 'TeX-font-replace-function) (if (string-equal LaTeX-version "2") () (setq TeX-font-list LaTeX-font-list) (setq TeX-font-replace-function 'TeX-font-replace-macro) (TeX-add-symbols '("newcommand" TeX-arg-define-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("renewcommand" TeX-arg-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("providecommand" TeX-arg-define-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("providecommand*" TeX-arg-define-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("newcommand*" TeX-arg-define-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("renewcommand*" TeX-arg-macro [ "Number of arguments" ] [ "Default value for first argument" ] t) '("usepackage" LaTeX-arg-usepackage) '("RequirePackage" LaTeX-arg-usepackage) '("ProvidesPackage" "Name" [ "Version" ]) '("documentclass" TeX-arg-document))) (TeX-add-style-hook "latex2e" ;; Use new fonts for `\documentclass' documents. (lambda () (setq TeX-font-list LaTeX-font-list) (setq TeX-font-replace-function 'TeX-font-replace-macro) (run-hooks 'LaTeX2e-hook))) (TeX-add-style-hook "latex2" ;; Use old fonts for `\documentstyle' documents. (lambda () (setq TeX-font-list (default-value 'TeX-font-list)) (setq TeX-font-replace-function (default-value 'TeX-font-replace-function)) (run-hooks 'LaTeX2-hook))) ;; There must be something better-suited, but I don't understand the ;; parsing properly. -- dak (TeX-add-style-hook "pdftex" 'TeX-PDF-mode-on) (TeX-add-style-hook "pdftricks" 'TeX-PDF-mode-on) (TeX-add-style-hook "pst-pdf" 'TeX-PDF-mode-on) (TeX-add-style-hook "dvips" 'TeX-PDF-mode-off) ;; This is now done in style/pstricks.el because it prevents other ;; pstricks style files from being loaded. ;; (TeX-add-style-hook "pstricks" 'TeX-PDF-mode-off) (TeX-add-style-hook "psfrag" 'TeX-PDF-mode-off) (TeX-add-style-hook "dvipdf" 'TeX-PDF-mode-off) (TeX-add-style-hook "dvipdfm" 'TeX-PDF-mode-off) ;; (TeX-add-style-hook "DVIoutput" 'TeX-PDF-mode-off) ;; ;; Well, DVIoutput indicates that we want to run PDFTeX and expect to ;; get DVI output. Ugh. (TeX-add-style-hook "ifpdf" (lambda () (TeX-PDF-mode-on) (TeX-PDF-mode-off))) ;; ifpdf indicates that we cater for either. So calling both ;; functions will make sure that the default will get used unless the ;; user overrode it. (set (make-local-variable 'imenu-create-index-function) 'LaTeX-imenu-create-index-function) (use-local-map LaTeX-mode-map) ;; Calling `easy-menu-add' may result in the menu filters being ;; executed which call `TeX-update-style'. So this is placed very ;; late in mode initialization to assure that all relevant variables ;; are properly initialized before style files try to alter them. (easy-menu-add LaTeX-mode-menu LaTeX-mode-map) (easy-menu-add LaTeX-mode-command-menu LaTeX-mode-map)) (defun LaTeX-imenu-create-index-function () "Imenu support function for LaTeX." (TeX-update-style) (let (entries level (regexp (LaTeX-outline-regexp))) (goto-char (point-max)) (while (re-search-backward regexp nil t) (let* ((name (LaTeX-outline-name)) (level (make-string (1- (LaTeX-outline-level)) ?\ )) (label (concat level level name)) (mark (make-marker))) (set-marker mark (point)) (set-text-properties 0 (length label) nil label) (setq entries (cons (cons label mark) entries)))) entries)) (defvar LaTeX-builtin-opts '("12pt" "11pt" "10pt" "twocolumn" "twoside" "draft") "Built in options for LaTeX standard styles.") (defun LaTeX-209-to-2e () "Make a stab at changing 2.09 doc header to 2e style." (interactive) (TeX-home-buffer) (let (optstr optlist 2eoptlist 2epackages docline docstyle) (goto-char (point-min)) (if (search-forward-regexp "\\documentstyle\\[\\([^]]*\\)\\]{\\([^}]*\\)}" (point-max) t) (setq optstr (TeX-match-buffer 1) docstyle (TeX-match-buffer 2) optlist (TeX-split-string "," optstr)) (if (search-forward-regexp "\\documentstyle{\\([^}]*\\)}" (point-max) t) (setq docstyle (TeX-match-buffer 1)) (error "No documentstyle defined"))) (beginning-of-line 1) (setq docline (point)) (insert "%%%") (while optlist (if (member (car optlist) LaTeX-builtin-opts) (setq 2eoptlist (cons (car optlist) 2eoptlist)) (setq 2epackages (cons (car optlist) 2epackages))) (setq optlist (cdr optlist))) ;;(message (format "%S %S" 2eoptlist 2epackages)) (goto-char docline) (forward-line 1) (insert "\\documentclass") (if 2eoptlist (insert "[" (mapconcat (lambda (x) x) (nreverse 2eoptlist) ",") "]")) (insert "{" docstyle "}\n") (if 2epackages (insert "\\usepackage{" (mapconcat (lambda (x) x) (nreverse 2epackages) "}\n\\usepackage{") "}\n")) (if (equal docstyle "slides") (progn (goto-char (point-min)) (while (re-search-forward "\\\\blackandwhite{" nil t) (replace-match "\\\\input{" nil nil))))) (TeX-normal-mode nil)) (provide 'latex) ;;; latex.el ends here auctex-11.87/font-latex.el0000644000000000000000000023164312024330772014135 0ustar rootroot;;; font-latex.el --- LaTeX fontification for Font Lock mode. ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ;; Authors: Peter S. Galbraith ;; Simon Marshall ;; Maintainer: auctex-devel@gnu.org ;; Created: 06 July 1996 ;; Keywords: tex, wp, faces ;;; This file is not part of GNU Emacs. ;; This package 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 package 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 enhances font-lock fontification patterns for LaTeX. ;; font-lock mode is a minor mode that causes your comments to be ;; displayed in one face, strings in another, reserved words in ;; another, and so on. ;; ;; ** Infinite loops !? ** ;; If you get an infinite loop, send a bug report! ;; Then set the following in your ~/.emacs file to keep on working: ;; (setq font-latex-do-multi-line nil) ;;; Code: (require 'font-lock) (require 'tex) (eval-when-compile (require 'cl)) (defgroup font-latex nil "Font-latex text highlighting package." :prefix "font-latex-" :group 'faces :group 'tex :group 'AUCTeX) (defgroup font-latex-keywords nil "Keywords for highlighting text in font-latex." :prefix "font-latex-" :group 'font-latex) (defgroup font-latex-highlighting-faces nil "Faces for highlighting text in font-latex." :prefix "font-latex-" :group 'font-latex) (defvar font-latex-multiline-boundary 5000 "Size of region to search for the start or end of a multiline construct.") (defvar font-latex-quote-regexp-beg nil "Regexp used to find quotes.") (make-variable-buffer-local 'font-latex-quote-regexp-beg) (defvar font-latex-quote-list '(("``" "''") ("<<" ">>" french) ("" "" french)) "List of quote specifiers for quotation fontification. Each element of the list is either a list consisting of two strings to be used as opening and closing quotation marks independently of the value of `font-latex-quotes' or a list with three elements where the first and second element are strings for opening and closing quotation marks and the third element being either the symbol 'german or 'french describing the order of quotes. If `font-latex-quotes' specifies a different state, order of the added quotes will be reversed for fontification. For example if '(\"\\\"<\" \"\\\">\" french) is given but `font-latex-quotes' specifies 'german, quotes will be used like \">foo\"< for fontification.") (defvar font-latex-quotes-control nil "Internal variable for keeping track if `font-latex-quotes' changed.") (make-variable-buffer-local 'font-latex-quotes-control) (defvar font-latex-quotes-internal nil "Internal variable for tracking outcome of automatic detection. If automatic detection is not enabled, it is assigned the value of `font-latex-quotes'.") (make-variable-buffer-local 'font-latex-quotes-internal) (defvar font-latex-quotes-fallback 'french "Fallback value for `font-latex-quotes' if automatic detection fails.") (defvar font-latex-quote-style-list-french '("french" "frenchb" "frenchle" "frenchpro" "francais" "canadien" "acadian" "italian") "List of styles for which French-style quote matching should be activated.") (defvar font-latex-quote-style-list-german '("austrian" "german" "germanb" "naustrian" "ngerman") "List of styles for which German-style quote matching should be activated.") (defcustom font-latex-quotes 'auto "Whether to fontify << French quotes >> or >>German quotes<<. Also selects \" versus \">quote\"<. If value `auto' is chosen, an attempt is being made in deriving the type of quotation mark matching from document settings like the language option supplied to the babel package. If nil, quoted content will not be fontified." :type '(choice (const auto) (const french) (const german) (const nil)) :group 'font-latex) (put 'font-latex-quotes 'safe-local-variable '(lambda (x) (memq x '(auto french german nil)))) (defun font-latex-add-quotes (quotes) "Add QUOTES to `font-latex-quote-list'. QUOTES has to be a list adhering to the format of an element of `font-latex-quote-list'." (setq font-latex-quotes-control nil) (make-local-variable 'font-latex-quote-list) (add-to-list 'font-latex-quote-list quotes)) (defun font-latex-quotes-set-internal () "Set `font-latex-quotes-internal' according to `font-latex-quotes'. If `font-latex-quotes' is set to `auto', try to derive the correct value from document properties." (setq font-latex-quotes-internal (if (eq font-latex-quotes 'auto) (or (when (TeX-elt-of-list-member font-latex-quote-style-list-french TeX-active-styles) 'french) (when (TeX-elt-of-list-member font-latex-quote-style-list-german TeX-active-styles) 'german) font-latex-quotes-fallback) font-latex-quotes))) ;; Update the value of `font-latex-quotes-internal' when the list of ;; styles changes. (add-hook 'TeX-update-style-hook 'font-latex-quotes-set-internal) ;; The definitions of the title faces were originally taken from ;; info.el (Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 97, 98, 99, ;; 2000, 2001 Free Software Foundation, Inc.) and adapted to the needs ;; of font-latex.el. (defconst font-latex-sectioning-max 5 "Highest number for font-latex-sectioning-N-face") (defface font-latex-sectioning-5-face (if (featurep 'xemacs) '((((type tty pc) (class color) (background light)) (:foreground "blue4" :bold t)) (((type tty pc) (class color) (background dark)) (:foreground "yellow" :bold t)) (((class color) (background light)) (:bold t :foreground "blue4" :family "helvetica")) (((class color) (background dark)) (:bold t :foreground "yellow" :family "helvetica")) (t (:bold t :family "helvetica"))) '((((type tty pc) (class color) (background light)) (:foreground "blue4" :weight bold)) (((type tty pc) (class color) (background dark)) (:foreground "yellow" :weight bold)) (((class color) (background light)) (:weight bold :inherit variable-pitch :foreground "blue4")) (((class color) (background dark)) (:weight bold :inherit variable-pitch :foreground "yellow")) (t (:weight bold :inherit variable-pitch)))) "Face for sectioning commands at level 5." :group 'font-latex-highlighting-faces) (defun font-latex-update-sectioning-faces (&optional max height-scale) "Update sectioning commands faces." (unless height-scale (setq height-scale (if (numberp font-latex-fontify-sectioning) font-latex-fontify-sectioning 1.1))) (unless max (setq max font-latex-sectioning-max)) (dotimes (num max) (let* (;; reverse for XEmacs: (num (- max (1+ num))) (face-name (intern (format "font-latex-sectioning-%s-face" num)))) (unless (get face-name 'saved-face) ; Do not touch customized faces. (if (featurep 'xemacs) (let ((size ;; Multiply with .9 because `face-height' returns a value ;; slightly larger than the actual font size. ;; `make-face-size' takes numeric points according to Aidan ;; Kehoe in <16989.15536.613916.678965@parhasard.net> (not ;; documented). (round (* 0.9 (face-height 'default) (expt height-scale (- max 1 num)))))) ;; (message "%s - %s" face-name size) (make-face-size face-name size)) (set-face-attribute face-name nil :height height-scale)))))) (defcustom font-latex-fontify-sectioning 1.1 "Whether to fontify sectioning macros with varying height or a color face. If it is a number, use varying height faces. The number is used for scaling starting from `font-latex-sectioning-5-face'. Typically values from 1.05 to 1.3 give best results, depending on your font setup. If it is the symbol `color', use `font-lock-type-face'. Caveats: Customizing the scaling factor applies to all sectioning faces unless those face have been saved by customize. Setting this variable directly does not take effect unless you call `font-latex-update-sectioning-faces' or restart Emacs. Switching from `color' to a number or vice versa does not take effect unless you call \\[font-lock-fontify-buffer] or restart Emacs." ;; Possibly add some words about XEmacs here. :-( :type '(choice (number :tag "Scale factor") (const color)) :initialize 'custom-initialize-default :set (lambda (symbol value) (set-default symbol value) (unless (eq value 'color) (font-latex-update-sectioning-faces font-latex-sectioning-max value))) :group 'font-latex) (defun font-latex-make-sectioning-faces (max &optional height-scale) "Build the faces used to fontify sectioning commands." (unless max (setq max font-latex-sectioning-max)) (unless height-scale (setq height-scale (if (numberp font-latex-fontify-sectioning) font-latex-fontify-sectioning 1.1))) (dotimes (num max) (let* (;; reverse for XEmacs: (num (- max (1+ num))) (face-name (intern (format "font-latex-sectioning-%s-face" num))) (f-inherit (intern (format "font-latex-sectioning-%s-face" (1+ num)))) (size (when (featurep 'xemacs) (round (* 0.9 (face-height 'default) (expt height-scale (- max 1 num))))))) (eval `(defface ,face-name (if (featurep 'xemacs) '((t (:size ,(format "%spt" size)))) '((t (:height ,height-scale :inherit ,f-inherit)))) (format "Face for sectioning commands at level %s. Probably you don't want to customize this face directly. Better change the base face `font-latex-sectioning-5-face' or customize the variable `font-latex-fontify-sectioning'." num) :group 'font-latex-highlighting-faces)) (when (and (featurep 'xemacs) ;; Do not touch customized faces. (not (get face-name 'saved-face))) (set-face-parent face-name f-inherit) ;; Explicitely set the size again to code around the bug that ;; `set-face-parent' overwrites the original face size. (make-face-size face-name size))))) (font-latex-make-sectioning-faces font-latex-sectioning-max) ;;; Keywords (defvar font-latex-keywords-1 nil "Subdued level highlighting for LaTeX modes.") (defvar font-latex-keywords-2 nil "High level highlighting for LaTeX modes.") (defvar font-latex-built-in-keyword-classes '(("warning" ("nopagebreak" "pagebreak" "newpage" "clearpage" "cleardoublepage" "enlargethispage" "nolinebreak" "linebreak" "newline" "-" "\\" "\\*" "appendix" "displaybreak" "allowdisplaybreaks" "include") 'font-latex-warning-face 1 noarg) ("variable" (("setlength" "|{\\{") ("settowidth" "|{\\{") ("settoheight" "{{") ("settodepth" "{{") ("setcounter" "{|{\\") ("addtolength" "|{\\{") ("addtocounter" "{|{\\") ("stepcounter" "{") ("refstepcounter" "{") ("arabic" "{") ("roman" "{") ("Roman" "{") ("alph" "{") ("Alph" "{") ("fnsymbol" "{")) 'font-lock-variable-name-face 2 command) ("biblatexnoarg" ("newrefsegment" "mancite" "pno" "ppno" "nopp" "psq" "psqq") 'font-lock-variable-name-face 2 noarg) ("biblatex" (("newrefsection" "[") ("ExecuteBibliographyOptions" "[{") ("printbibliography" "[") ("printshorthands" "[") ("printbibheading" "[") ("addbibresource" "[{") ("addglobalbib" "[{") ("addsectionbib" "[{") ("bibbysection" "[") ("bibbysegment" "[") ("bibbycategory" "[") ("DeclareBibliographyCategory" "{") ("addtocategory" "{{") ("defbibenvironment" "{{{{") ("defbibheading" "{[{") ("defbibnote" "{{") ("defbibfilter" "{{") ("defbibcheck" "{{") ("defbibentryset" "{{") ("Cite" "[[{") ("parencite" "*[[{") ("Parencite" "[[{") ("footcite" "[[{") ("footcitetext" "[[{") ("textcite" "[[{") ("Textcite" "[[{") ("smartcite" "[[{") ("Smartcite" "[[{") ("supercite" "{") ("autocite" "*[{{") ("Autocite" "*[{{") ("citeauthor" "[{{") ("Citeauthor" "[{{") ("citetitle" "*[{{") ("citeyear" "*[[{") ("citedate" "*[[{") ("citeurl" "[[{") ("parentext" "{") ("brackettext" "{") ("fullcite" "[[{") ("fullfootcite" "[[{") ("volcite" "[{[[") ("Volcite" "[{[[") ("pvolcite" "[{[[") ("Pvolcite" "[{[[") ("fvolcite" "[{[[") ("ftvolcite" "[{[[") ("svolcite" "[{[[") ("Svolcite" "[{[[") ("tvolcite" "[{[[") ("Tvolcite" "[{[[") ("avolcite" "[{[[") ("Avolcite" "[{[[") ("notecite" "[[{") ("Notecite" "[[{") ("pnotecite" "[[{") ("Pnotecite" "[[{") ("fnotecite" "[[{") ("citename" "[[{[{") ("citelist" "[[{[{") ("citefield" "[[{[{") ("citereset" "*") ("RN" "{") ("Rn" "{") ("DefineBibliographyStrings" "{{") ("DefineBibliographyExtras" "{{") ("UndefineBibliographyExtras" "{{") ("DefineHyphenationExceptions" "{{") ("NewBibliographyString" "{") ("autocites" "(([[{") ("Autocites" "(([[{") ("cites" "(([[{") ("Cites" "(([[{") ("parencites" "(([[{") ("Parencites" "(([[{") ("footcites" "(([[{") ("footcitetexts" "(([[{") ("smartcites" "(([[{") ("Smartcites" "(([[{") ("textcites" "(([[{") ("Textcites" "(([[{") ("supercites" "(([[{")) 'font-lock-constant-face 2 command) ("reference" (("nocite" "*{") ("cite" "*[[{") ("label" "{") ("pageref" "{") ("vref" "{") ("eqref" "{") ("ref" "{") ("include" "{") ("input" "{") ("bibliography" "{") ("index" "{") ("glossary" "{") ("footnote" "[{") ("footnotemark" "[") ("footnotetext" "[{")) 'font-lock-constant-face 2 command) ("function" (("begin" "{") ("end" "{") ("pagenumbering" "{") ("thispagestyle" "{") ("pagestyle" "{") ("nofiles" "") ("includeonly" "{") ("bibliographystyle" "{") ("documentstyle" "[{") ("documentclass" "[{[") ("newenvironment" "*{[[{{") ("newcommand" "*|{\\[[{") ("newlength" "|{\\") ("newtheorem" "{[{[") ("providecommand" "*|{\\[[{") ("newcounter" "{[") ("renewenvironment" "*{[[{{") ("renewcommand" "*|{\\[[{") ("renewtheorem" "{[{[") ("usepackage" "[{[") ("fbox" "{") ("mbox" "{") ("rule" "[{{") ("vspace" "*{") ("hspace" "*{") ("thinspace" "") ("negthinspace" "") ;; XXX: Should macros without arguments rather be listed in a ;; separate category with 'noarg instead of 'command handling? ("enspace" "") ("enskip" "") ("quad" "") ("qquad" "") ("nonumber" "") ("centering" "") ("TeX" "") ("LaTeX" "")) 'font-lock-function-name-face 2 command) ("sectioning-0" (("part" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-0-face) 2 command) ("sectioning-1" (("chapter" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-1-face) 2 command) ("sectioning-2" (("section" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-2-face) 2 command) ("sectioning-3" (("subsection" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-3-face) 2 command) ("sectioning-4" (("subsubsection" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-4-face) 2 command) ("sectioning-5" (("paragraph" "*[{") ("subparagraph" "*[{") ("subsubparagraph" "*[{")) (if (eq font-latex-fontify-sectioning 'color) 'font-lock-type-face 'font-latex-sectioning-5-face) 2 command) ("slide-title" () 'font-latex-slide-title-face 2 command) ("textual" (("item" "[") ("title" "{") ("author" "{") ("date" "{") ("thanks" "{") ("address" "{") ("caption" "[{") ("textsuperscript" "{")) 'font-lock-type-face 2 command) ("bold-command" (("textbf" "{") ("textsc" "{") ("textup" "{") ("boldsymbol" "{") ("pmb" "{")) 'font-latex-bold-face 1 command) ("italic-command" (("emph" "{") ("textit" "{") ("textsl" "{")) 'font-latex-italic-face 1 command) ("math-command" (("ensuremath" "|{\\")) 'font-latex-math-face 1 command) ("type-command" (("texttt" "{") ("textsf" "{") ("textrm" "{") ("textmd" "{")) 'font-lock-type-face 1 command) ("bold-declaration" ("bf" "bfseries" "sc" "scshape" "upshape") 'font-latex-bold-face 1 declaration) ("italic-declaration" ("em" "it" "itshape" "sl" "slshape") 'font-latex-italic-face 1 declaration) ("type-declaration" ("tt" "ttfamily" "sf" "sffamily" "rm" "rmfamily" "mdseries" "tiny" "scriptsize" "footnotesize" "small" "normalsize" "large" "Large" "LARGE" "huge" "Huge") 'font-lock-type-face 1 declaration)) "Built-in keywords and specifications for font locking. The first element of each item is the name of the keyword class. The second element is a list of keywords (macros without an escape character) to highlight or, if the fifth element is the symbol 'command, a list of lists where the first element of each item is a keyword and the second a string specifying the macro syntax. It can contain \"*\" if the macro has a starred variant, \"[\" for an optional argument, \"{\" for a mandatory argument, and \"\\\" for a macro. A \"|\" means the following two tokens should be regarded as alternatives. The third element is the symbol of a face to be used or a Lisp form returning a face symbol. The fourth element is the fontification level. The fifth element is the type of construct to be matched. It can be one of 'noarg which will match simple macros without arguments (like \"\\foo\"), 'declaration which will match macros inside a TeX group (like \"{\\bfseries foo}\"), or 'command which will match macros of the form \"\\foo[bar]{baz}\".") (defcustom font-latex-deactivated-keyword-classes nil "List of strings for built-in keyword classes to be deactivated. Valid entries are \"warning\", \"variable\", \"reference\", \"function\" , \"sectioning-0\", \"sectioning-1\", \"sectioning-2\", \"sectioning-3\", \"sectioning-4\", \"sectioning-5\", \"textual\", \"bold-command\", \"italic-command\", \"math-command\", \"type-command\", \"bold-declaration\", \"italic-declaration\", \"type-declaration\". You have to restart Emacs for a change of this variable to take effect." :group 'font-latex-keywords :type `(set ,@(mapcar (lambda (spec) `(const :tag ,(concat ;; Name of the keyword class (let ((name (split-string (car spec) "-"))) (setcar name (capitalize (car name))) (mapconcat 'identity name " ")) " keywords in `" ;; Name of the face (symbol-name (eval (nth 2 spec))) "'.\n" ;; List of keywords (with-temp-buffer (insert " Keywords: " (mapconcat (lambda (x) (if (listp x) (car x) x)) (nth 1 spec) ", ")) (fill-paragraph nil) (buffer-substring-no-properties (point-min) (point-max)))) ,(car spec))) font-latex-built-in-keyword-classes))) (defun font-latex-make-match-defun (prefix name face type) "Return a function definition for keyword matching. The variable holding the keywords to match are determined by the strings PREFIX and NAME. The type of matcher is determined by the symbol TYPE. This is a helper function for `font-latex-make-built-in-keywords' and `font-latex-make-user-keywords' and not intended for general use." ;; Note: The functions are byte-compiled at the end of font-latex.el. ;; FIXME: Is the cond-clause possible inside of the defun? ;; In an earlier version of font-latex the type could be a list like ;; (command 1). This indicated a macro with one argument. Provide ;; a match function in this case but don't actually support it. (cond ((or (eq type 'command) (listp type)) (eval `(defun ,(intern (concat prefix name)) (limit) ,(concat "Fontify `" prefix name "' up to LIMIT. Generated by `font-latex-make-match-defun'.") (when ,(intern (concat prefix name)) (font-latex-match-command-with-arguments ,(intern (concat prefix name)) (append (when (boundp ',(intern (concat prefix name "-keywords-local"))) ,(intern (concat prefix name "-keywords-local"))) ,(intern (concat prefix name "-keywords"))) ;; `face' can be a face symbol, a form returning ;; a face symbol, or a list of face attributes. (if (and (listp ,face) (functionp (car ,face))) (eval ,face) ,face) limit))))) ((eq type 'declaration) (eval `(defun ,(intern (concat prefix name)) (limit) ,(concat "Fontify `" prefix name "' up to LIMIT. Generated by `font-latex-make-match-defun'.") (when ,(intern (concat prefix name)) (font-latex-match-command-in-braces ,(intern (concat prefix name)) limit))))) ((eq type 'noarg) (eval `(defun ,(intern (concat prefix name)) (limit) ,(concat "Fontify `" prefix name "' up to LIMIT. Generated by `font-latex-make-match-defun'.") (when ,(intern (concat prefix name)) (re-search-forward ,(intern (concat prefix name)) limit t))))))) (defun font-latex-keyword-matcher (prefix name face type) "Return a matcher and highlighter as required by `font-lock-keywords'. PREFIX and NAME are strings which are concatenated to form the respective match function. FACE is a face name or a list of text properties that will be applied to the respective part of the match returned by the match function. TYPE is the type of construct to be highlighted. Currently the symbols 'command, 'sectioning, 'declaration and 'noarg are valid. This is a helper function for `font-latex-make-built-in-keywords' and `font-latex-make-user-keywords' and not intended for general use." ;; In an earlier version of font-latex the type could be a list like ;; (command 1). This indicated a macro with one argument. Provide ;; a matcher in this case but don't actually support it. (cond ((or (eq type 'command) (listp type)) `(,(intern (concat prefix name)) (0 (font-latex-matched-face 0) append t) (1 (font-latex-matched-face 1) append t) (2 (font-latex-matched-face 2) append t) (3 (font-latex-matched-face 3) append t) (4 (font-latex-matched-face 4) append t) (5 (font-latex-matched-face 5) append t) (6 (font-latex-matched-face 6) append t) (7 (font-latex-matched-face 7) append t))) ((eq type 'noarg) `(,(intern (concat prefix name)) ;; Quote a list of face properties but do not to quote a face symbol. (0 ,(if (and (listp face) (not (fboundp (car face)))) `',face face)))) ((eq type 'declaration) `(,(intern (concat prefix name)) (0 'font-latex-warning-face t t) (1 'font-lock-keyword-face append t) (2 ,face append t))))) (defun font-latex-make-built-in-keywords () "Build defuns, defvars and defcustoms for built-in keyword fontification." (dolist (item font-latex-built-in-keyword-classes) (let ((prefix "font-latex-match-") (name (nth 0 item)) (keywords (nth 1 item)) (face (nth 2 item)) (level (nth 3 item)) (type (nth 4 item))) ;; defvar font-latex-match-*-keywords-local (eval `(defvar ,(intern (concat prefix name "-keywords-local")) ',keywords ,(concat "Buffer-local keywords to add to `" prefix name "-keywords'. This must be a list where each element is a list consisting of a keyword string \(not a regular expression\) omitting the leading backslash and a format specifier as. The options for the format specifier are described in the doc string of `font-latex-user-keyword-classes'. This is an internal variable which should not be set directly. Use `font-latex-add-keywords' instead. Generated by `font-latex-make-built-in-keywords'."))) (eval `(make-variable-buffer-local ',(intern (concat prefix name "-keywords-local")))) ;; defun font-latex-match-*-make ;; Note: The functions are byte-compiled at the end of font-latex.el. (eval `(defun ,(intern (concat prefix name "-make")) () ,(concat "Make or remake the variable `" prefix name "'. Generated by `font-latex-make-built-in-keywords'.") (let ((keywords (append (unless (member ,name font-latex-deactivated-keyword-classes) ,(intern (concat prefix name "-keywords-local"))) ,(intern (concat prefix name "-keywords")))) multi-char-macros single-char-macros) (dolist (elt keywords) (let ((keyword (if (listp elt) (car elt) elt))) (if (string-match "^[A-Za-z]" keyword) (add-to-list 'multi-char-macros keyword) (add-to-list 'single-char-macros keyword)))) (when (or multi-char-macros single-char-macros) (setq ,(intern (concat prefix name)) (concat "\\\\\\(" (when multi-char-macros (concat "\\(?:" (regexp-opt multi-char-macros) "\\)\\>")) (when single-char-macros (concat (when multi-char-macros "\\|") "\\(?:" (regexp-opt single-char-macros) "\\)")) "\\)")))))) ;; defcustom font-latex-match-*-keywords (eval `(defcustom ,(intern (concat prefix name "-keywords")) nil ,(concat "List of keywords " (when (eq type 'command) "and formats ") "for " name " face.\n" (if (eq type 'command) "\ Each element has to be a list consisting of the name of a macro omitting the leading backslash and a format specifier as described in the doc string of `font-latex-user-keyword-classes'." "\ Each element has to be the name of a macro as a string, omitting the leading backslash.") "\n\n\ Setting this variable directly does not take effect; restart Emacs. Generated by `font-latex-make-built-in-keywords'.") :type '(repeat (string :tag "Keyword")) :type '(repeat ,(if (eq type 'command) '(list (string :tag "Keyword") (string :tag "Format")) '(string :tag "Keyword"))) :set (lambda (symbol value) (set-default symbol value) (funcall ',(intern (concat prefix name "-make")))) :group 'font-latex-keywords)) ;; defvar font-latex-match-* (eval `(defvar ,(intern (concat prefix name)) ,(intern (concat prefix name "-keywords")))) (eval `(make-variable-buffer-local ',(intern (concat prefix name)))) ;; defun font-latex-match-* (font-latex-make-match-defun prefix name face type) ;; Add matchers and highlighters to `font-latex-keywords-{1,2}'. (let ((keywords-entry (font-latex-keyword-matcher prefix name face type))) (add-to-list (intern (concat "font-latex-keywords-" (number-to-string level))) keywords-entry t) (when (= level 1) (add-to-list (intern (concat "font-latex-keywords-2")) keywords-entry t)))))) (font-latex-make-built-in-keywords) (defcustom font-latex-user-keyword-classes nil "List of user-defined keyword classes for font locking. Every keyword class consists of four parts, a name, a list of keywords, a face and a specifier for the type of macro to be highlighted. When adding new entries, you have to use unique values for the class names, i.e. they must not clash with names of the built-in keyword classes or other names given by you. Additionally the names must not contain spaces. The list of keywords defines which commands and declarations should be covered by the keyword class. A keyword can either be a simple command name omitting the leading backslash or a list consisting of the command name and a string specifying the syntax of the command. The latter is useful if you want to match LaTeX macros with arguments (see below). You can specify the occurence and order of optional (\"[\") and mandatory (\"{\") arguments for each keyword. For example for \"documentclass\" you'd use \"[{\" because the macro has one optional followed by one mandatory argument. Optionally starred macros can be indicated with \"*\". In case an argument is an unbraced macro, use \"\\\". You can also specify two alternative arguments by prefixing them with \"|\". As an example, the specifier for \\newcommand is \"*|{\\=\\[[{\". The face argument can either be an existing face or a font specification. (The latter option is not available in XEmacs.) There are three alternatives for the class type: A value of `command' indicates commands with arguments \(\"\\foo[bar]{baz}\"). The mandatory arguments in curly braces will get the face you specified. A value of `declaration' indicates declarations inside of TeX groups (\"{\\foo bar}\"). The content inside the braces, excluding the command, will get the face you specified. In case the braces are missing, the face will be applied to the command itself. A value of `noarg' indicates commands without arguments \(\"\\foo\"). The command itself will get the face you specified. Setting this variable directly does not take effect; use \\[customize] or restart Emacs." :group 'font-latex-keywords :type `(repeat (list (string :tag "Name") (choice (repeat :tag "Keywords" (string :tag "Keyword")) (repeat :tag "Keywords with specs" (group (string :tag "Keyword") (string :tag "Format specifier")))) ,(if (featurep 'xemacs) '(face :tag "Face name") '(choice (custom-face-edit :tag "Face attributes") (face :tag "Face name"))) (choice :tag "Type" ;; Maps to ;;`font-latex-match-command-with-arguments' (const :tag "Command with arguments" command) ;; Maps to ;;`font-latex-match-command-in-braces' (const :tag "Declaration inside TeX group" declaration) ;; Maps to `re-search-forward' (const :tag "Command without arguments" noarg)))) :set (lambda (symbol value) (dolist (item value) (when (string-match " " (car item)) (error "No spaces allowed in name"))) (let (names names-uniq) (dolist (item (append font-latex-built-in-keyword-classes value)) (setq names (append names (list (car item))))) (setq names (TeX-sort-strings names)) (setq names-uniq (TeX-delete-duplicate-strings names)) (dotimes (i (safe-length names-uniq)) (unless (string= (nth i names) (nth i names-uniq)) (error "Name %S already exists" (nth i names))))) (set-default symbol value) (let ((prefix "font-latex-match-")) (dolist (elt value) (unless (boundp (intern (concat prefix (car elt)))) ;; defvar font-latex-match-* (eval `(defvar ,(intern (concat prefix (car elt))) nil))) (let ((keywords (nth 1 elt)) single-char-macro-flag) (setq keywords (if (listp (car keywords)) (mapcar 'car keywords) keywords)) (catch 'single-char (dolist (keyword keywords) (unless (string-match "^[A-Za-z]" keyword) (setq single-char-macro-flag t) (throw 'single-char nil)))) (set (intern (concat prefix (car elt))) (when (> (safe-length keywords) 0) (concat "\\\\" (let ((max-specpdl-size 1000)) (regexp-opt keywords t)) (unless single-char-macro-flag "\\>"))))))))) (defun font-latex-make-user-keywords () "Build defuns and defvars for user keyword fontification." (let ((keyword-specs font-latex-user-keyword-classes)) (dolist (item keyword-specs) (let ((prefix "font-latex-match-") (name (nth 0 item)) (keywords (nth 1 item)) (face (nth 2 item)) (type (nth 3 item))) ;; defvar font-latex-match-*-keywords (eval `(defvar ,(intern (concat prefix name "-keywords")) ',keywords ,(concat "Font-latex keywords for " name " face. Generated by `font-latex-make-user-keywords'."))) ;; defun font-latex-match-* (eval `(font-latex-make-match-defun prefix name '',face type)) ;; Add the matcher to `font-latex-keywords-2'. (add-to-list 'font-latex-keywords-2 (font-latex-keyword-matcher prefix name face type) t)))) ;; Add the "fixed" matchers and highlighters. (dolist (item '(("\\(^\\|[^\\]\\)\\(&+\\)" 2 'font-latex-warning-face) ("\\$\\$\\([^$]+\\)\\$\\$" 1 'font-latex-math-face) (font-latex-match-quotation (0 'font-latex-string-face append) (1 'font-latex-warning-face)) ;; Hack to remove the verbatim face from the \ in ;; \end{verbatim} and similar. The same hack is used in ;; tex-mode.el. ("^[ \t]*\\(\\\\\\)end" (1 (get-text-property (match-end 1) 'face) t)))) (add-to-list 'font-latex-keywords-1 item) (add-to-list 'font-latex-keywords-2 item)) (dolist (item '((font-latex-match-math-env (0 'font-latex-warning-face t t) (1 'font-latex-math-face append t)) (font-latex-match-math-envII (0 'font-latex-math-face append t)) (font-latex-match-simple-command (0 'font-latex-sedate-face append)) (font-latex-match-script (1 (font-latex-script (match-beginning 0)) append)))) (add-to-list 'font-latex-keywords-2 item t))) (font-latex-make-user-keywords) (defun font-latex-add-keywords (keywords class) "Add KEYWORDS to CLASS. KEYWORDS is a list of keywords or keywords with syntax specs. CLASS corresponds to a keyword class and can be one of the symbols 'warning, 'variable, 'reference, 'biblatex, 'function, sectioning-0, 'sectioning-1, 'sectioning-2, 'sectioning-3, 'sectioning-4, 'sectioning-5, 'slide-title, 'textual, 'bold-command, 'italic-command, 'math-command, 'type-command, 'bold-declaration, 'italic-declaration or 'type-declaration. The keywords will be added to the buffer-local list of keywords of the respective keyword class and necessary updates of the font locking machinery will be triggered." (let* ((class (symbol-name class)) (list (intern (format "font-latex-match-%s-keywords-local" class)))) (dolist (elt keywords) (add-to-list list elt)) (funcall (intern (format "font-latex-match-%s-make" class))) (setq font-lock-set-defaults nil) (font-lock-set-defaults))) (defvar font-latex-keywords font-latex-keywords-1 "Default expressions to highlight in TeX mode.") ;;; Subscript and superscript (defcustom font-latex-fontify-script (not (featurep 'xemacs)) "If non-nil, fontify subscript and superscript strings. This feature does not work in XEmacs." :type 'boolean :group 'font-latex) (put 'font-latex-fontify-script 'safe-local-variable 'TeX-booleanp) (defcustom font-latex-script-display '((raise -0.3) . (raise 0.3)) "Display specification for subscript and superscript content. The car is used for subscript, the cdr is used for superscripts." :group 'font-latex :type '(cons (choice (sexp :tag "Subscript form") (const :tag "No lowering" nil)) (choice (sexp :tag "Superscript form") (const :tag "No raising" nil)))) ;;; Syntactic keywords (defvar font-latex-syntactic-keywords nil "Syntactic keywords used by `font-latex'.") (make-variable-buffer-local 'font-latex-syntactic-keywords) (defvar font-latex-syntactic-keywords-extra nil "List of syntactic keywords to add to `font-latex-syntactic-keywords'. The form should be the same as in `font-lock-syntactic-keywords'.") (make-variable-buffer-local 'font-latex-syntactic-keywords-extra) (defun font-latex-set-syntactic-keywords () "Set the variable `font-latex-syntactic-keywords'. This function can be used to refresh the variable in case other variables influencing its value, like `LaTeX-verbatim-environments', have changed." ;; Checks for non-emptiness of lists added in order to cater for ;; installations where `(regexp-opt-group nil)' would enter a loop. (let ((verb-envs (and (fboundp 'LaTeX-verbatim-environments) (LaTeX-verbatim-environments))) (verb-macros-with-delims (and (fboundp 'LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-delims))) (verb-macros-with-braces (and (fboundp 'LaTeX-verbatim-macros-with-braces) (LaTeX-verbatim-macros-with-braces)))) (setq verb-envs (and verb-envs (regexp-opt verb-envs)) verb-macros-with-delims (and verb-macros-with-delims (regexp-opt verb-macros-with-delims)) verb-macros-with-braces (and verb-macros-with-braces (regexp-opt verb-macros-with-braces)) font-latex-syntactic-keywords nil) (unless (= (length verb-envs) 0) (add-to-list 'font-latex-syntactic-keywords `(,(concat "^[ \t]*\\\\begin *{\\(?:" verb-envs "\\)}.*\\(\n\\)") (1 "|" t))) (add-to-list 'font-latex-syntactic-keywords ;; Using the newline character for the syntax ;; property often resulted in fontification ;; problems when text was inserted at the end of ;; the verbatim environment. That's why we now use ;; the starting backslash of \end. There is a hack ;; in `font-latex-make-user-keywords' to remove the ;; spurious fontification of the backslash. `(,(concat "^[ \t]*\\(\\\\\\)end *{\\(?:" verb-envs "\\)}") (1 "|" t)))) (unless (= (length verb-macros-with-delims) 0) (add-to-list 'font-latex-syntactic-keywords `(,(concat "\\\\\\(?:" verb-macros-with-delims "\\)" ;; An opening curly brace as delimiter ;; is valid, but allowing it might screw ;; up fontification of stuff like ;; "\url{...} foo \textbf{<--!...}". "\\([^a-z@*\n\f{]\\).*?" ;; Give an escape char at the end of the ;; verbatim construct punctuation syntax. ;; Prevents wrong fontification of stuff ;; like "\verb|foo\|". "\\(" (regexp-quote TeX-esc) "*\\)\\(\\1\\)") (1 "\"") (2 ".") (3 "\"")))) (unless (= (length verb-macros-with-braces) 0) (add-to-list 'font-latex-syntactic-keywords `(,(concat "\\\\\\(?:" verb-macros-with-braces "\\)" "\\({\\).*?[^\\]\\(?:\\\\\\\\\\)*\\(}\\)") (1 "|") (2 "|"))))) (when font-latex-syntactic-keywords-extra (nconc font-latex-syntactic-keywords font-latex-syntactic-keywords-extra)) ;; Cater for docTeX mode. (setq font-latex-doctex-syntactic-keywords (append font-latex-syntactic-keywords ;; For docTeX comment-in-doc. `(("\\(\\^\\)\\^A" (1 (font-latex-doctex-^^A))))))) ;;; Syntactic fontification ;; Copy and adaptation of `tex-font-lock-syntactic-face-function' in ;; `tex-mode.el' of CVS Emacs (March 2004) (defun font-latex-syntactic-face-function (state) (let ((char (nth 3 state))) (cond ((not char) 'font-lock-comment-face) ((eq char ?$) 'font-latex-math-face) (t (when (char-valid-p char) ;; This is a \verb?...? construct. Let's find the end and mark it. (save-excursion (skip-chars-forward (string ?^ char)) ;; Use `end' ? (when (eq (char-syntax (preceding-char)) ?/) (put-text-property (1- (point)) (point) 'syntax-table '(1))) (unless (eobp) (put-text-property (point) (1+ (point)) 'syntax-table '(7))))) 'font-latex-verbatim-face)))) ;;; Faces (defface font-latex-bold-face (let ((font (cond ((assq :inherit custom-face-attributes) '(:inherit bold)) ((assq :weight custom-face-attributes) '(:weight bold)) (t '(:bold t))))) `((((class grayscale) (background light)) (:foreground "DimGray" ,@font)) (((class grayscale) (background dark)) (:foreground "LightGray" ,@font)) (((class color) (background light)) (:foreground "DarkOliveGreen" ,@font)) (((class color) (background dark)) (:foreground "OliveDrab" ,@font)) (t (,@font)))) "Face used to highlight text to be typeset in bold." :group 'font-latex-highlighting-faces) (defface font-latex-italic-face (let ((font (cond ((assq :inherit custom-face-attributes) '(:inherit italic)) ((assq :slant custom-face-attributes) '(:slant italic)) (t '(:italic t))))) `((((class grayscale) (background light)) (:foreground "DimGray" ,@font)) (((class grayscale) (background dark)) (:foreground "LightGray" ,@font)) (((class color) (background light)) (:foreground "DarkOliveGreen" ,@font)) (((class color) (background dark)) (:foreground "OliveDrab" ,@font)) (t (,@font)))) "Face used to highlight text to be typeset in italic." :group 'font-latex-highlighting-faces) (defface font-latex-math-face (let ((font (cond ((assq :inherit custom-face-attributes) '(:inherit underline)) (t '(:underline t))))) `((((class grayscale) (background light)) (:foreground "DimGray" ,@font)) (((class grayscale) (background dark)) (:foreground "LightGray" ,@font)) (((class color) (background light)) (:foreground "SaddleBrown")) (((class color) (background dark)) (:foreground "burlywood")) (t (,@font)))) "Face used to highlight math." :group 'font-latex-highlighting-faces) (defface font-latex-sedate-face '((((class grayscale) (background light)) (:foreground "DimGray")) (((class grayscale) (background dark)) (:foreground "LightGray")) (((class color) (background light)) (:foreground "DimGray")) (((class color) (background dark)) (:foreground "LightGray")) ;;;(t (:underline t)) ) "Face used to highlight sedate stuff." :group 'font-latex-highlighting-faces) (defface font-latex-string-face (let ((font (cond ((assq :inherit custom-face-attributes) '(:inherit italic)) ((assq :slant custom-face-attributes) '(:slant italic)) (t '(:italic t))))) `((((type tty) (class color)) (:foreground "green")) (((class grayscale) (background light)) (:foreground "DimGray" ,@font)) (((class grayscale) (background dark)) (:foreground "LightGray" ,@font)) (((class color) (background light)) (:foreground "RosyBrown")) (((class color) (background dark)) (:foreground "LightSalmon")) (t (,@font)))) "Face used to highlight strings." :group 'font-latex-highlighting-faces) (defface font-latex-warning-face (let ((font (cond ((assq :inherit custom-face-attributes) '(:inherit bold)) ((assq :weight custom-face-attributes) '(:weight bold)) (t '(:bold t))))) `((((class grayscale)(background light)) (:foreground "DimGray" ,@font)) (((class grayscale)(background dark)) (:foreground "LightGray" ,@font)) (((class color)(background light)) (:foreground "red" ,@font)) (((class color)(background dark)) (:foreground "red" ,@font)) (t (,@font)))) "Face for important keywords." :group 'font-latex-highlighting-faces) (defface font-latex-verbatim-face (let ((font (if (and (assq :inherit custom-face-attributes) (if (featurep 'xemacs) (find-face 'fixed-pitch) (facep 'fixed-pitch))) '(:inherit fixed-pitch) '(:family "courier")))) `((((class grayscale) (background light)) (:foreground "DimGray" ,@font)) (((class grayscale) (background dark)) (:foreground "LightGray" ,@font)) (((class color) (background light)) (:foreground "SaddleBrown" ,@font)) (((class color) (background dark)) (:foreground "burlywood" ,@font)) (t (,@font)))) "Face used to highlight TeX verbatim environments." :group 'font-latex-highlighting-faces) (defface font-latex-superscript-face '((t (:height 0.8))) "Face used for superscripts." :group 'font-latex-highlighting-faces) (defface font-latex-subscript-face '((t (:height 0.8))) "Face used for subscripts." :group 'font-latex-highlighting-faces) (defface font-latex-slide-title-face (let* ((scale 1.2) (size (when (featurep 'xemacs) (round (* 0.9 (face-height 'default) scale))))) (if (featurep 'xemacs) `((t (:bold t :family "helvetica" :size ,size))) `((t (:inherit (variable-pitch font-lock-type-face) :weight bold :height ,scale))))) "Face for slide titles." :group 'font-latex-highlighting-faces) (when (featurep 'xemacs) (set-face-parent 'font-latex-slide-title-face 'font-lock-type-face nil nil 'append)) ;;; Setup (defvar font-lock-comment-start-regexp nil "Regexp to match the start of a comment.") (defvar font-latex-extend-region-functions nil "List of functions extending the region for multiline constructs. Each function should accept two arguments, the begin and end of the region to be fontified, and return the new region start. If no extension is necessary, the original region start should be returned. All specified functions will be called and the region extended backwards to the minimum over their return values.") (defvar font-latex-syntax-alist ;; Use word syntax for @ because we use \> for matching macros and ;; we don't want \foo@bar to be found if we search for \foo. '((?\( . ".") (?\) . ".") (?$ . "\"") (?@ . "w")) "List of specifiers for the syntax alist of `font-lock-defaults'.") (defun font-latex-add-to-syntax-alist (list) "Activate syntactic font locking for the entries in LIST. The entries are added to `font-latex-syntax-alist' and eventually end up in `font-lock-defaults'. Each entry in LIST should be a cons pair as expected by `font-lock-defaults'. The function also triggers Font Lock to recognize the change." (make-local-variable 'font-latex-syntax-alist) (nconc font-latex-syntax-alist list) ;; FIXME: Are there situations where we need to alter `font-lock-defaults' ;; directly? ;; (dolist (entry list) ;; (setcar (cdddr font-lock-defaults) ;; (cons entry (cadddr font-lock-defaults)))) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)) ;;;###autoload (defun font-latex-setup () "Setup this buffer for LaTeX font-lock. Usually called from a hook." (font-latex-set-syntactic-keywords) ;; Trickery to make $$ fontification be in `font-latex-math-face' while ;; strings get whatever `font-lock-string-face' has been set to. (when (fboundp 'built-in-face-specifiers) ;; Cool patch from Christoph Wedler... (let (instance) (mapc (lambda (property) (setq instance (face-property-instance 'font-latex-math-face property nil 0 t)) (if (numberp instance) (setq instance (face-property-instance 'default property nil 0))) (or (numberp instance) (set-face-property 'font-lock-string-face property instance (current-buffer)))) (built-in-face-specifiers)))) ;; Activate multi-line fontification facilities if available. (when (boundp 'font-lock-multiline) (set (make-local-variable 'font-lock-multiline) t)) ;; Functions for extending the region. (dolist (elt '(font-latex-extend-region-backwards-command-with-args font-latex-extend-region-backwards-command-in-braces font-latex-extend-region-backwards-quotation font-latex-extend-region-backwards-math-env font-latex-extend-region-backwards-math-envII)) (add-to-list 'font-latex-extend-region-functions elt)) ;; Tell Font Lock about the support. (make-local-variable 'font-lock-defaults) ;; The test for `major-mode' currently only works with docTeX mode ;; because `TeX-install-font-lock' is called explicitely in ;; `doctex-mode'. In case other modes have to be distinguished as ;; well, remove the call to `TeX-install-font-lock' from ;; `VirTeX-common-initialization' and place it in the different ;; `xxx-mode' calls instead, but _after_ `major-mode' is set. (let ((defaults `((font-latex-keywords font-latex-keywords-1 font-latex-keywords-2) nil nil ,font-latex-syntax-alist nil)) (variables '((font-lock-comment-start-regexp . "%") (font-lock-mark-block-function . mark-paragraph) (font-lock-fontify-region-function . font-latex-fontify-region) (font-lock-unfontify-region-function . font-latex-unfontify-region)))) ;; Add the mode-dependent stuff to the basic variables defined above. (if (eq major-mode 'doctex-mode) (progn (setcar defaults (append (car defaults) '(font-latex-doctex-keywords))) (setq variables (append variables '((font-lock-syntactic-face-function . font-latex-doctex-syntactic-face-function) (font-lock-syntactic-keywords . font-latex-doctex-syntactic-keywords))))) (setq variables (append variables '((font-lock-syntactic-face-function . font-latex-syntactic-face-function) (font-lock-syntactic-keywords . font-latex-syntactic-keywords))))) ;; Cater for the idiosyncrasies of Emacs and XEmacs. (if (featurep 'xemacs) (progn ;; XEmacs does not set these variables via `font-lock-defaults' ;; but requires them to be set explicitely. (mapc (lambda (alist) (set (car alist) (cdr alist))) variables) ;; Has to be set to t as otherwise syntax properties will not be ;; be picked up during fontification. (set (make-local-variable 'lookup-syntax-properties) t)) (setq defaults (append defaults variables))) ;; Set the defaults. (setq font-lock-defaults defaults))) (defun font-latex-jit-lock-force-redisplay (buf start end) "Compatibility for Emacsen not offering `jit-lock-force-redisplay'." (if (fboundp 'jit-lock-force-redisplay) (jit-lock-force-redisplay buf start end) ;; The following block is an expansion of `jit-lock-force-redisplay' ;; and involved macros taken from CVS Emacs on 2007-04-28. (with-current-buffer buf (let ((modified (buffer-modified-p))) (unwind-protect (let ((buffer-undo-list t) (inhibit-read-only t) (inhibit-point-motion-hooks t) (inhibit-modification-hooks t) deactivate-mark buffer-file-name buffer-file-truename) (put-text-property start end 'fontified t)) (unless modified (restore-buffer-modified-p nil))))))) (defun font-latex-fontify-region (beg end &optional loudly) "Fontify region from BEG to END. If optional argument is non-nil, print status messages." (let ((extend-list (delq nil (mapcar (lambda (fun) (funcall fun beg end)) font-latex-extend-region-functions)))) (when extend-list (let ((orig-beg beg)) (setq beg (apply 'min extend-list)) (when (featurep 'jit-lock) ;; Stolen from `jit-lock-fontify-now' (2007-04-27) and ;; adapted. Without this stanza only the line in which a ;; change happened will refontified. The rest will only be ;; refontified upon redisplay. (run-with-timer 0 nil 'font-latex-jit-lock-force-redisplay (current-buffer) beg orig-beg)))) (font-lock-default-fontify-region beg end loudly))) ;; Copy and adaption of `tex-font-lock-unfontify-region' from ;; tex-mode.el in GNU Emacs on 2004-08-04. ;; (XEmacs passes a third argument to the function.) (defun font-latex-unfontify-region (beg end &rest ignored) "Unfontify region from BEG to END." (font-lock-default-unfontify-region beg end) ;; XEmacs does not provide `font-lock-extra-managed-props', so ;; remove the `font-latex-multiline' property manually. (The ;; property is only added if `font-lock-multiline' is bound.) (unless (boundp 'font-lock-multiline) (remove-text-properties beg end '(font-latex-multiline))) (while (< beg end) (let ((next (next-single-property-change beg 'display nil end)) (prop (get-text-property beg 'display))) (if (and (eq (car-safe prop) 'raise) (member (car-safe (cdr prop)) (list (nth 1 (car font-latex-script-display)) (nth 1 (cdr font-latex-script-display)))) (null (cddr prop))) (put-text-property beg next 'display nil)) (setq beg next)))) (defadvice font-lock-after-change-function (before font-latex-after-change activate) "Extend region for fontification of multiline constructs. This is only necessary if the editor does not provide multiline fontification facilities like `font-lock-multiline' itself." (unless (boundp 'font-lock-multiline) (let ((ad-beg (ad-get-arg 0)) (ad-end (ad-get-arg 1))) (save-excursion (goto-char ad-beg) (beginning-of-line) (when (get-text-property (point) 'font-latex-multiline) (setq ad-beg (previous-single-property-change (point) 'font-latex-multiline)) (when (numberp ad-beg) (ad-set-arg 0 ad-beg))) (goto-char ad-end) (end-of-line) (when (get-text-property (point) 'font-latex-multiline) (setq ad-end (next-single-property-change (point) 'font-latex-multiline)) (when (numberp ad-end) (ad-set-arg 1 ad-end))))))) ;;; Utility functions (defun font-latex-find-matching-close (openchar closechar) "Skip over matching pairs of OPENCHAR and CLOSECHAR. OPENCHAR is the opening character and CLOSECHAR is the closing character. Character pairs are usually { } or [ ]. Comments are ignored during the search." (let ((parse-sexp-ignore-comments (not (eq major-mode 'doctex-mode))) ; scan-sexps ignores comments (init-point (point)) (mycount 1) (esc-char (or (and (boundp 'TeX-esc) TeX-esc) "\\")) ;; XXX: Do not look up syntax-table properties since they may ;; be misleading, e.g. in the case of "{foo}^^A" where the ;; closing brace gets a comment end syntax. (parse-sexp-lookup-properties nil)) (or (condition-case nil (progn (goto-char (with-syntax-table (TeX-search-syntax-table openchar closechar) (scan-sexps (point) 1))) ;; No error code. See if closechar is unquoted (save-excursion (backward-char 1) (zerop (mod (skip-chars-backward (regexp-quote esc-char)) 2)))) (error nil)) (save-match-data (goto-char (1+ init-point)) (while (and (> mycount 0) (re-search-forward (string ?\[ ;; closechar might be ] ;; and therefor must be first in regexp closechar openchar ?\]) nil t)) (cond ((font-latex-commented-outp) (forward-line 1)) ((save-excursion (backward-char 1) (zerop (mod (skip-chars-backward (regexp-quote esc-char)) 2))) (setq mycount (+ mycount (if (= (preceding-char) openchar) 1 -1))))))) (if (= mycount 0) t (goto-char init-point) nil)))) (defun font-latex-commented-outp () "Return t if comment character is found between bol and point." (save-excursion (let ((limit (point)) (esc-char (if (and (boundp 'TeX-esc) TeX-esc) TeX-esc "\\"))) (forward-line 0) (if (and (eq (char-after) ?\%) (not (font-latex-faces-present-p 'font-latex-verbatim-face))) (not (eq major-mode 'doctex-mode)) (catch 'found (while (progn (skip-chars-forward "^%" limit) (< (point) limit)) (when (and (save-excursion (zerop (mod (skip-chars-backward (regexp-quote esc-char)) 2))) (not (font-latex-faces-present-p 'font-latex-verbatim-face))) (throw 'found t)) (forward-char))))))) (defun font-latex-faces-present-p (faces &optional pos) "Return t if FACES are present at position POS. FACES may be a single face or a list of faces. If POS is omitted, the current position of point is used." (let* ((faces (if (listp faces) faces (list faces))) (pos (or pos (point))) (prop (get-text-property pos 'face)) (prop-list (if (listp prop) prop (list prop)))) (catch 'member (dolist (item prop-list) (when (memq item faces) (throw 'member t)))))) (defun font-latex-forward-comment () "Like `forward-comment' but with special provisions for docTeX mode. In docTeX mode \"%\" at the start of a line will be treated as whitespace." (if (eq major-mode 'doctex-mode) ;; XXX: We should probably cater for ^^A as well. (progn (while (progn (if (bolp) (skip-chars-forward "%")) (> (skip-chars-forward " \t\n") 0))) (when (eq (char-after) ?%) (beginning-of-line 2) t)) (forward-comment 1))) (defun font-latex-put-multiline-property-maybe (beg end) "Add a multiline property if no equivalent is provided by the editor. The text property is used to find the start or end of a multiline construct when unfontifying a region. Emacs adds such a text property automatically if `font-lock-multiline' is set to t and extends the region to be unfontified automatically as well. XEmacs does not do this at the time of this writing." (unless (boundp 'font-lock-multiline) (put-text-property beg end 'font-latex-multiline t))) ;;; Match functions (defvar font-latex-matched-faces nil "List of faces corresponding to matches in match data.") (defun font-latex-matched-face (pos) "Return face at position POS in `font-latex-matched-faces'." (nth pos font-latex-matched-faces)) (defvar font-latex-command-with-args-default-spec nil ; "*[{" "Default specifier for keywords without syntax description. Set this to nil if verification of command syntax is unwanted.") (defvar font-latex-command-with-args-opt-arg-delims '((?[ . ?]) (?< . ?>) (?\( . ?\))) "List character pairs used as delimiters for optional arguments.") (defvar font-latex-syntax-error-modes '(latex-mode) "List of modes where syntax errors in macros should be indicated.") (defun font-latex-match-command-with-arguments (regexp keywords face limit) "Search for regexp command KEYWORDS[opt]{arg} before LIMIT. Returns nil if none of KEYWORDS is found." (setq font-latex-matched-faces nil) (catch 'match (while (re-search-forward regexp limit t) (unless (font-latex-faces-present-p '(font-lock-comment-face font-latex-verbatim-face) (match-beginning 0)) (let* ((beg (match-beginning 0)) end ; Used for multiline text property. match-data match-beg syntax-error alternative spec error-indicator-pos (spec-list (string-to-list (or (cadr (assoc (match-string 1) keywords)) font-latex-command-with-args-default-spec))) (parse-sexp-ignore-comments t)) ; scan-sexps ignores comments (add-to-list 'match-data beg) (goto-char (match-end 0)) ;; Check for starred macro if first spec is an asterisk. (when (eq (car spec-list) ?*) (setq spec-list (cdr spec-list)) (skip-chars-forward "*" (1+ (point)))) ;; Add current point to match data and use keyword face for ;; region from start to point. (add-to-list 'match-data (point) t) (add-to-list 'font-latex-matched-faces 'font-lock-keyword-face) (setq end (point)) (catch 'break ;; Walk the list of specs. (while spec-list (setq spec (pop spec-list) error-indicator-pos beg) (while (and (not (eobp)) (font-latex-forward-comment))) ;; Alternative (when (eq spec ?|) (setq alternative t) (setq spec (pop spec-list))) (cond ;; Macros: \foo ((eq spec ?\\) (if (eq (char-after) spec) (progn (nconc match-data (list (point) (progn (forward-char) (if (zerop (skip-chars-forward "A-Za-z@")) (forward-char) ; Single-char macro. (skip-chars-forward "*")) (point)))) (nconc font-latex-matched-faces (list face)) (setq end (max end (point))) (when alternative (pop spec-list))) (setq syntax-error t) (throw 'break nil))) ;; Mandatory arguments: {...} ((eq spec ?{) (if (and (eq (char-after) spec) (setq match-beg (point)) (font-latex-find-matching-close ?{ ?})) (progn (nconc match-data (list (1+ match-beg) (1- (point)))) (nconc font-latex-matched-faces (list face)) (setq end (max end (1- (point)))) (when alternative (pop spec-list))) (unless alternative (setq syntax-error t) (when (and match-beg (= match-beg (point))) (setq error-indicator-pos match-beg)) (throw 'break nil)))) ;; Optional arguments: [...] and others ((eq (char-after) spec) (setq match-beg (point)) (if (font-latex-find-matching-close spec (cdr (assq spec font-latex-command-with-args-opt-arg-delims))) (progn (nconc match-data (list (1+ match-beg) (1- (point)))) (nconc font-latex-matched-faces (list 'font-lock-variable-name-face)) (setq end (max end (1- (point))))) (setq syntax-error t error-indicator-pos match-beg) (throw 'break nil)))) (setq alternative nil))) (when (and syntax-error (memq major-mode font-latex-syntax-error-modes)) ;; Add the warning face at the front of the list because ;; the matcher uses 'append and the face would otherwise ;; be overridden by the keyword face. (setq match-data (append (list error-indicator-pos (1+ error-indicator-pos)) match-data)) (push 'font-latex-warning-face font-latex-matched-faces)) (font-latex-put-multiline-property-maybe beg end) (store-match-data match-data) (throw 'match t)))))) (defun font-latex-extend-region-backwards-command-with-args (beg end) "Return position to extend region backwards for commands with args. Return nil if region does not have to be extended for a multiline macro to fit in. The region between the positions BEG and END marks boundaries for searching for macro ends." (save-excursion (goto-char end) (catch 'extend (while (TeX-search-backward-unescaped "}" beg t) (let ((macro-start (TeX-find-macro-start (max (point-min) (- beg font-latex-multiline-boundary))))) (when (and macro-start (< macro-start beg)) (throw 'extend macro-start)))) nil))) (defun font-latex-match-command-in-braces (keywords limit) "Search for command like {\\bfseries fubar} before LIMIT. Sets `match-data' so that: subexpression 0 is a warning indicator, subexpression 1 is the keyword, and subexpression 2 is the rest in the TeX group. Returns nil if no command is found." (catch 'match (while (re-search-forward keywords limit t) (unless (font-latex-faces-present-p '(font-lock-comment-face font-latex-verbatim-face) (match-beginning 0)) (let ((kbeg (match-beginning 0)) (kend (match-end 1)) (beg (match-end 0)) end cbeg cend (parse-sexp-ignore-comments t)) ; scan-sexps ignores comments (goto-char kbeg) (if (not (eq (preceding-char) ?\{)) ;; Fontify only the keyword (no argument found). (progn (setq cbeg kbeg cend kend) (goto-char (match-end 0)) (store-match-data (list (point) (point) (point) (point) cbeg cend)) (throw 'match t)) ;; There's an opening bracket (save-restriction ;; Restrict to LIMIT. (narrow-to-region (point-min) limit) (forward-char -1) ; Move on the opening bracket (if (font-latex-find-matching-close ?\{ ?\}) (progn (font-latex-put-multiline-property-maybe beg (1- (point))) (store-match-data (list kbeg kbeg kbeg kend beg (1- (point))))) (goto-char kend) (store-match-data (list (1- kbeg) kbeg kbeg kend kend kend))) (throw 'match t)))))))) (defun font-latex-extend-region-backwards-command-in-braces (beg end) "Return position to extend region backwards for commands in braces. Return nil if region does not have to be extended for a multiline group to fit in. The region between the positions BEG and END marks boundaries for searching for group ends." (save-excursion (goto-char end) (catch 'extend (while (TeX-search-backward-unescaped "}" beg t) (let ((group-start (TeX-find-opening-brace nil (max (point-min) (- beg font-latex-multiline-boundary))))) (when group-start ;; XXX: Actually we'd have to check if any of the ;; declaration-type macros can be found right after the ;; brace. If we don't do this (like now) large regions ;; may be refontified for no good reason. For checking ;; the built-in `font-latex-match-*' variables for ;; declaration-type macros as well as the respective ;; user-defined variables could be concatenated. (goto-char group-start) (when (< group-start beg) (throw 'extend group-start))))) nil))) (defun font-latex-match-simple-command (limit) "Search for command like \\foo before LIMIT." (TeX-re-search-forward-unescaped "\\\\[@A-Za-z]+" limit t)) (defun font-latex-match-math-env (limit) "Match math pattern up to LIMIT. Used for patterns like: \\( F = ma \\) \\[ F = ma \\] but not \\\\ [len]" (catch 'match (while (re-search-forward "\\(\\\\(\\)\\|\\(\\\\\\[\\)" limit t) (unless (save-excursion (goto-char (match-beginning 0)) ;; \\[ does not start a math environment (/= (mod (skip-chars-backward "\\\\") 2) 0)) (let ((beg (match-beginning 0)) (open-tag (if (match-beginning 1) "\\(" "\\[")) (close-tag (if (match-beginning 1) "\\)" "\\]"))) ;; Search for both opening and closing tags in order to be ;; able to avoid erroneously matching stuff like "\(foo \(bar\)". (if (and (re-search-forward (concat "[^\\]\\(?:\\\\\\\\\\)*\\(" (regexp-quote open-tag) "\\|" (regexp-quote close-tag) "\\)") limit 'move) (string= (match-string 1) close-tag)) ;; Found closing tag. (progn (font-latex-put-multiline-property-maybe beg (point)) (store-match-data (list beg beg beg (point)))) ;; Did not find closing tag. (goto-char (+ beg 2)) (store-match-data (list beg (point) (point) (point)))) (throw 'match t)))))) (defun font-latex-extend-region-backwards-math-env (beg end) "Return position to extend region backwards for math environments. Return nil if region does not have to be extended for a multiline environment to fit in. The region between the positions BEG and END marks boundaries for searching for environment ends." (save-excursion (goto-char end) (catch 'extend (while (re-search-backward "\\(\\\\)\\)\\|\\(\\\\]\\)" beg t) (when (and (zerop (mod (skip-chars-backward "\\\\") 2)) (re-search-backward (concat "[^\\]\\(?:\\\\\\\\\\)*\\(" (regexp-quote (if (match-beginning 1) "\\(" "\\[")) "\\)") (- beg font-latex-multiline-boundary) t) (goto-char (match-beginning 1)) (< (point) beg)) (throw 'extend (point)))) nil))) (defcustom font-latex-math-environments '("display" "displaymath" "equation" "eqnarray" "gather" "multline" "align" "alignat" "xalignat") "List of math environment names for font locking." :type '(repeat string) :group 'font-latex) (defun font-latex-match-math-envII (limit) "Match math patterns up to LIMIT. Used for patterns like: \\begin{equation} fontified stuff \\end{equation} The \\begin{equation} and \\end{equation} are not fontified here." (when (re-search-forward (concat "\\\\begin[ \t]*{" (regexp-opt font-latex-math-environments t) "\\*?}") limit t) (let ((beg (match-end 0)) end) (if (re-search-forward (concat "\\\\end[ \t]*{" (regexp-quote (buffer-substring-no-properties (match-beginning 1) (match-end 0)))) ;; XXX: Should this rather be done by ;; extending the region to be fontified? (+ limit font-latex-multiline-boundary) 'move) (setq end (match-beginning 0)) (goto-char beg) (setq end beg)) (font-latex-put-multiline-property-maybe beg end) (store-match-data (list beg end)) t))) (defun font-latex-extend-region-backwards-math-envII (beg end) "Return position to extend region backwards for math environments. Return nil if region does not have to be extended for a multiline environment to fit in. The region between the positions BEG and END marks boundaries for searching for environment ends." (save-excursion (goto-char end) (catch 'extend (while (re-search-backward (concat "\\\\end[ \t]*{" (regexp-opt font-latex-math-environments t) "\\*?}") beg t) (when (and (re-search-backward (concat "\\\\begin[ \t]*{" (buffer-substring-no-properties (match-beginning 1) (match-end 0))) (- beg font-latex-multiline-boundary) t) (< (point) beg)) (throw 'extend (point)))) nil))) (defun font-latex-update-quote-list () "Update quote list and regexp if value of `font-latex-quotes' changed." (unless (eq font-latex-quotes-control font-latex-quotes) (setq font-latex-quotes-control font-latex-quotes) (font-latex-quotes-set-internal) ;; Set order of each entry in `font-latex-quote-list' according to ;; setting of `font-latex-quotes-internal'. (let ((tail font-latex-quote-list) elt) (while tail (setq elt (car tail)) (when (and (> (safe-length elt) 2) (not (eq (nth 2 elt) font-latex-quotes-internal))) (setcar tail (list (nth 1 elt) (nth 0 elt) font-latex-quotes-internal))) (setq tail (cdr tail)))) (setq font-latex-quote-regexp-beg (regexp-opt (mapcar 'car font-latex-quote-list) t)))) (defun font-latex-match-quotation (limit) "Match quote patterns up to LIMIT. Used for patterns like: ``this is a normal quote'' and these are multilingual quoted strings: \"< french \"> and \"`german\"' quotes. The quotes << french >> and 8-bit french are used if `font-latex-quotes' is set to french, and >>german<< (and 8-bit) are used if set to german." (when font-latex-quotes (font-latex-update-quote-list) ;; Search for matches. (catch 'match (while (TeX-re-search-forward-unescaped font-latex-quote-regexp-beg limit t) (unless (font-latex-faces-present-p '(font-lock-comment-face font-latex-verbatim-face font-latex-math-face) (match-beginning 0)) (let* ((beg (match-beginning 0)) (after-beg (match-end 0)) (opening-quote (match-string 0)) (closing-quote (nth 1 (assoc (if (fboundp 'string-make-multibyte) (string-make-multibyte (match-string 0)) (match-string 0)) font-latex-quote-list))) (nest-count 0) (point-of-surrender (+ beg font-latex-multiline-boundary))) ;; Find closing quote taking nested quotes into account. (while (progn (re-search-forward (concat opening-quote "\\|" closing-quote) point-of-surrender 'move) (when (and (< (point) point-of-surrender) (not (eobp))) (if (string= (match-string 0) opening-quote) (setq nest-count (1+ nest-count)) (when (/= nest-count 0) (setq nest-count (1- nest-count))))))) ;; If no closing quote was found, set the second match which ;; will be marked with warning color, if one was found, set ;; the first match which will be marked with string color. (if (or (= (point) point-of-surrender) (eobp)) (progn (goto-char after-beg) (store-match-data (list after-beg after-beg beg after-beg))) (font-latex-put-multiline-property-maybe beg (point)) (store-match-data (list beg (point) (point) (point)))) (throw 'match t))))))) (defun font-latex-extend-region-backwards-quotation (beg end) "Return position to extend region backwards for quotations. Return nil if region does not have to be extended for a multiline quotation to fit in. The region between the positions BEG and END marks boundaries for searching for quotation ends." (if font-latex-quotes (progn (font-latex-update-quote-list) (let ((regexp-end (regexp-opt (mapcar 'cadr font-latex-quote-list) t))) (save-excursion (goto-char end) (catch 'extend (while (re-search-backward regexp-end beg t) (let ((closing-quote (match-string 0)) (nest-count 0) (point-of-surrender (- beg font-latex-multiline-boundary)) opening-quote) (catch 'found (dolist (elt font-latex-quote-list) (when (string= (cadr elt) closing-quote) (setq opening-quote (car elt)) (throw 'found nil)))) ;; Find opening quote taking nested quotes into account. (while (progn (re-search-backward (concat opening-quote "\\|" closing-quote) point-of-surrender 'move) (when (and (> (point) point-of-surrender) (not (bobp))) (if (string= (match-string 0) closing-quote) (setq nest-count (1+ nest-count)) (when (/= nest-count 0) (setq nest-count (1- nest-count))))))) (when (< (point) beg) (throw 'extend (point))))) nil)))) nil)) (defun font-latex-match-script (limit) "Match subscript and superscript patterns up to LIMIT." (when (and font-latex-fontify-script (re-search-forward "[_^] *\\([^\n\\{}]\\|\ \\\\\\([a-zA-Z@]+\\|[^ \t\n]\\)\\|\\({\\)\\)" limit t)) (if (font-latex-faces-present-p '(font-latex-subscript-face font-latex-superscript-face)) ;; Apply subscript and superscript highlighting only once in ;; order to prevent the font size becoming too small. We set ;; an empty match to do that. (let ((point (point))) (store-match-data (list point point point point))) (when (match-end 3) (let ((beg (match-beginning 3)) (end (TeX-find-closing-brace ;; Don't match groups spanning more than one line ;; in order to avoid visually wrong indentation in ;; subsequent lines. nil (line-end-position)))) (store-match-data (if end (list (match-beginning 0) end beg end) (list beg beg beg beg)))))) t)) ;; Copy and adaption of `tex-font-lock-suscript' from tex-mode.el in ;; GNU Emacs on 2004-07-07. (defun font-latex-script (pos) "Return face and display spec for subscript and superscript content." (when (and (font-latex-faces-present-p 'font-latex-math-face pos) (not (font-latex-faces-present-p '(font-lock-constant-face font-lock-builtin-face font-lock-comment-face font-latex-verbatim-face) pos)) ;; Check for backslash quoting (not (let ((odd nil) (pos pos)) (while (eq (char-before pos) ?\\) (setq pos (1- pos) odd (not odd))) odd))) ;; Adding other text properties than `face' is supported by ;; `font-lock-apply-highlight' in CVS Emacsen since 2001-10-28. ;; With the introduction of this feature the variable ;; `font-lock-extra-managed-props' was introduced and serves here ;; for feature checking. XEmacs (CVS and 21.4.15) currently ;; (2004-08-18) does not support this feature. (let ((extra-props-flag (boundp 'font-lock-extra-managed-props))) (if (eq (char-after pos) ?_) (if extra-props-flag `(face font-latex-subscript-face display ,(car font-latex-script-display)) 'font-latex-subscript-face) (if extra-props-flag `(face font-latex-superscript-face display ,(cdr font-latex-script-display)) 'font-latex-superscript-face))))) ;;; docTeX (defvar font-latex-doctex-preprocessor-face 'font-latex-doctex-preprocessor-face "Face used to highlight preprocessor directives in docTeX mode.") (defface font-latex-doctex-preprocessor-face '((t (:inherit (font-latex-doctex-documentation-face font-lock-builtin-face ; Emacs 21 does not provide ; the preprocessor face. font-lock-preprocessor-face)))) "Face used to highlight preprocessor directives in docTeX mode." :group 'font-latex-highlighting-faces) (defvar font-latex-doctex-documentation-face 'font-latex-doctex-documentation-face "Face used to highlight the documentation in docTeX mode.") (defface font-latex-doctex-documentation-face '((((class mono)) (:inverse-video t)) (((class grayscale) (background dark)) (:background "#333")) (((class color) (background dark)) (:background "#333")) (t (:background "#eeeeee"))) "Face used to highlight the documentation parts in docTeX mode." :group 'font-latex-highlighting-faces) (defvar font-latex-doctex-keywords (append font-latex-keywords-2 '(("^%<[^>]*>" (0 font-latex-doctex-preprocessor-face t))))) ;; Set and updated in `font-latex-set-syntactic-keywords'. (defvar font-latex-doctex-syntactic-keywords nil) ;; Copy and adaptation of `doctex-font-lock-^^A' in `tex-mode.el' of ;; CVS Emacs (March 2004) (defun font-latex-doctex-^^A () (if (eq (char-after (line-beginning-position)) ?\%) (progn (put-text-property (1- (match-beginning 1)) (match-beginning 1) 'syntax-table (if (= (1+ (line-beginning-position)) (match-beginning 1)) ;; The `%' is a single-char comment, which Emacs ;; syntax-table can't deal with. We could turn it ;; into a non-comment, or use `\n%' or `%^' as the comment. ;; Instead, we include it in the ^^A comment. ;; COMPATIBILITY for Emacs 20 and XEmacs (eval-when-compile (if (fboundp 'string-to-syntax) (string-to-syntax "< b") '(2097163))) ;; COMPATIBILITY for Emacs 20 and XEmacs (eval-when-compile (if (fboundp 'string-to-syntax) (string-to-syntax ">") '(12))))) (let ((end (line-end-position))) (if (< end (point-max)) (put-text-property end (1+ end) 'syntax-table ;; COMPATIBILITY for Emacs 20 and XEmacs (eval-when-compile (if (fboundp 'string-to-syntax) (string-to-syntax "> b") '(2097164)))))) ;; COMPATIBILITY for Emacs 20 and XEmacs (eval-when-compile (if (fboundp 'string-to-syntax) (string-to-syntax "< b") '(2097163)))))) ;; Copy and adaptation of `doctex-font-lock-syntactic-face-function' ;; in `tex-mode.el' of CVS Emacs (March 2004) (defun font-latex-doctex-syntactic-face-function (state) ;; Mark docTeX documentation, which is parsed as a style A comment ;; starting in column 0. (if (or (nth 3 state) (nth 7 state) (not (memq (char-before (nth 8 state)) '(?\n nil)))) ;; Anything else is just as for LaTeX. (font-latex-syntactic-face-function state) font-latex-doctex-documentation-face)) ;;; Installation in non-AUCTeX LaTeX mode (add-hook 'latex-mode-hook 'font-latex-setup) ;; If font-latex is loaded using a latex-mode-hook, then the add-hook above ;; won't be called this time around. Check for this now: (if (eq major-mode 'latex-mode) (font-latex-setup)) ;;; Byte-compilation of generated functions (when (byte-code-function-p (symbol-function 'font-latex-make-built-in-keywords)) (dolist (elt font-latex-built-in-keyword-classes) (let ((name (nth 0 elt))) (byte-compile (intern (concat "font-latex-match-" name))) (byte-compile (intern (concat "font-latex-match-" name "-make")))))) ;; Provide ourselves: (provide 'font-latex) ;; Local Variables: ;; coding: iso-8859-1 ;; End: ;;; font-latex.el ends here auctex-11.87/tex-wizard.el0000644000000000000000000001006310751352554014150 0ustar rootroot;;; tex-wizard.el --- Check the TeX configuration ;; Copyright (C) 2003 Free Software Foundation, Inc. ;; Author: David Kastrup ;; Keywords: tex, wp, convenience ;; 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 checks through your TeX configuration. Call M-x TeX-wizard RET ;;; Code: (defun TeX-wizard nil (interactive) (switch-to-buffer "*TeX wizard*") (let ((wizwin (selected-window)) (wizbuf (current-buffer))) (set-visited-file-name nil) (erase-buffer) (if (featurep 'tex-site) (insert-before-markers "AUCTeX is enabled. Good.\n") (insert-before-markers "\ It appears that AUCTeX is not enabled. AUCTeX is the main major mode for editing TeX/LaTeX files.\n") (condition-case nil (info-other-window "(AUCTeX)") (error (select-window wizwin) (switch-to-buffer wizbuf) (insert-before-markers "(I am unable to find AUCTeX's info file.)\n"))) (if (prog1 (y-or-n-p "Should I try enabling AUCTeX now?") (select-window wizwin) (switch-to-buffer wizbuf)) (condition-case nil (require 'tex-site) (error (insert-before-markers "AUCTeX appears not to be installed.\n"))) (insert-before-markers "AUCTeX installation imprudently skipped.\n")) (when (featurep 'tex-site) (when (prog1 (yes-or-no-p (format "Also enable AUCTeX in `%s'" user-init-file)) (select-window wizwin) (switch-to-buffer wizbuf)) (write-region "\ ;;; Enable AUCTeX \(require 'tex-site)\n" nil user-init-file t)))) (if (memq 'turn-on-reftex (if (featurep 'tex-site) (and (boundp 'LaTeX-mode-hook) LaTeX-mode-hook) (and (boundp 'latex-mode-hook) latex-mode-hook))) (insert-before-markers "RefTeX is enabled. Good.\n") (insert-before-markers "\ It appears that RefTeX is not enabled. RefTeX is a mode that will greatly facilitate the management of labels and bibliographics references.\n") (condition-case nil (info-other-window "(RefTeX)") (error (select-window wizwin) (switch-to-buffer wizbuf) (insert-before-markers "(I am unable to find RefTeX's info file.)\n"))) (when (prog1 (yes-or-no-p (format "Enable RefTeX in `%s'" user-init-file)) (select-window wizwin) (switch-to-buffer wizbuf)) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (add-hook 'latex-mode-hook 'turn-on-reftex) (condition-case nil (write-region "\ ;;; Enable RefTeX \(add-hook 'LaTeX-mode-hook 'turn-on-reftex) \(add-hook 'latex-mode-hook 'turn-on-reftex) " nil user-init-file t) (error (insert-before-markers (format "Unable to write to file `%s'\n" user-init-file)))))) (when (and (featurep 'tex-site) (boundp 'LaTeX-mode-hook) (memq 'turn-on-reftex LaTeX-mode-hook)) (if (and (boundp 'reftex-plug-into-AUCTeX) reftex-plug-into-AUCTeX) (insert-before-markers "RefTeX appears to be configured for use with AUCTeX.\n") (require 'reftex) (insert-before-markers "\ It appears that RefTeX is not configured to cooperate with AUCTeX. Please configure it using the menus, save for future sessions, then press the finish button.") (customize-variable-other-window 'reftex-plug-into-AUCTeX) (set (make-local-variable 'custom-buffer-done-function) (lambda (buff) (kill-buffer buff) (exit-recursive-edit))) (recursive-edit) (select-window wizwin) (switch-to-buffer wizbuf)))) (insert-before-markers "That's all!\n")) (provide 'tex-wizard) ;;; tex-wizard.el ends here auctex-11.87/tex.el0000644000000000000000000061446512056203132012655 0ustar rootroot;;; tex.el --- Support for TeX documents. ;; Copyright (C) 1985, 1986, 1987, 1991, 1993, 1994, 1996, 1997, 1999, ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, ;; 2011 Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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 provides basic functions used by the AUCTeX modes. ;;; Code: (when (< emacs-major-version 21) (error "AUCTeX requires Emacs 21 or later")) (require 'custom) (require 'tex-site) (eval-when-compile (require 'cl)) (defgroup TeX-file nil "Files used by AUCTeX." :group 'AUCTeX) (defgroup TeX-command nil "Calling external commands from AUCTeX." :group 'AUCTeX) (defgroup LaTeX nil "LaTeX support in AUCTeX." :tag "LaTeX" :group 'AUCTeX :prefix "LaTeX-") (defgroup TeX-misc nil "Various AUCTeX settings." :group 'AUCTeX) ;;; Site Customization ;; ;; The following variables are likely to need to be changed for your ;; site. You should do this with customize. (defcustom TeX-command "tex" "Command to run plain TeX." :group 'TeX-command :type 'string) (defcustom TeX-Omega-command "omega" "Command to run plain TeX on Omega." :group 'TeX-command :type 'string) (defcustom LaTeX-command "latex" "Command to run LaTeX." :group 'TeX-command :type 'string) (defcustom LaTeX-Omega-command "lambda" "Command to run LaTeX on Omega." :group 'TeX-command :type 'string) (defcustom ConTeXt-engine nil "Engine to use for --engine in the texexec command. If nil, none is specified." :group 'TeX-command :type '(choice (const :tag "Unspecified" nil) string)) (defcustom ConTeXt-Omega-engine TeX-Omega-command "Engine to use for --engine in the texexec command in Omega mode. If nil, none is specified." :group 'TeX-command :type '(choice (const :tag "Unspecified" nil) string)) ;; At least in TeXLive 2009 ConTeXt does not support an omega option anymore. (make-obsolete-variable 'ConTeXt-Omega-engine 'TeX-engine-alist) (defcustom TeX-mode-hook nil "A hook run in TeX mode buffers." :type 'hook :group 'TeX-misc) (defcustom AmS-TeX-mode-hook nil "A hook run in AmS-TeX mode buffers." :type 'hook :group 'TeX-misc) ;; This is the major configuration variable. Most sites will only ;; need to change the second string in each entry, which is the name ;; of a command to send to the shell. If you use other formatters ;; like AMSLaTeX or AMSTeX, you can add those to the list. See ;; TeX-expand-list for a description of the % escapes (defcustom TeX-command-list `(("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode ams-tex-mode texinfo-mode) :help "Run plain TeX") ("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ;; Not part of standard TeX. ("Makeinfo" "makeinfo %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ;; support for ConTeXt --pg ;; first version of ConTeXt to support nonstopmode: 2003.2.10 ("ConTeXt" "texexec --once --texutil %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt once") ("ConTeXt Full" "texexec %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt until completion") ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX") ("Biber" "biber %s" TeX-run-Biber nil t :help "Run Biber") ,(if (or window-system (getenv "DISPLAY")) '("View" "%V" TeX-run-discard-or-function t t :help "Run Viewer") '("View" "dvi2tty -q -w 132 %s" TeX-run-command t t :help "Run Text viewer")) ("Print" "%p" TeX-run-command t t :help "Print the file") ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command) ("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help "Generate PostScript file") ("Index" "makeindex %s" TeX-run-command nil t :help "Create index file") ("Check" "lacheck %s" TeX-run-compile nil (latex-mode) :help "Check LaTeX file for correctness") ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document") ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files") ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files") ("Other" "" TeX-run-command t t :help "Run an arbitrary command")) "List of commands to execute on the current document. Each element is a list, whose first element is the name of the command as it will be presented to the user. The second element is the string handed to the shell after being expanded. The expansion is done using the information found in `TeX-expand-list'. The third element is the function which actually start the process. Several such hooks has been defined: TeX-run-command: Start up the process and show the output in a separate buffer. Check that there is not two commands running for the same file. Return the process object. TeX-run-format: As `TeX-run-command', but assume the output is created by a TeX macro package. Return the process object. TeX-run-TeX: For TeX output. TeX-run-interactive: Run TeX or LaTeX interactively. TeX-run-BibTeX: For BibTeX output. TeX-run-Biber: For Biber output. TeX-run-compile: Use `compile' to run the process. TeX-run-shell: Use `shell-command' to run the process. TeX-run-discard: Start the process in the background, discarding its output. TeX-run-background: Start the process in the background, show output in other window. TeX-run-silent: Start the process in the background. TeX-run-discard-foreground: Start the process in the foreground, discarding its output. TeX-run-function: Execute the Lisp function or function call specified by the string in the second element. Consequently, this hook does not start a process. TeX-run-discard-or-function: If the command is a Lisp function, execute it as such, otherwise start the command as a process, discarding its output. To create your own hook, define a function taking three arguments: The name of the command, the command string, and the name of the file to process. It might be useful to use `TeX-run-command' in order to create an asynchronous process. If the fourth element is non-nil, the user will get a chance to modify the expanded string. The fifth element indicates in which mode(s) the command should be present in the Command menu. Use t if it should be active in any mode. If it should only be present in some modes, specify a list with the respective mode names. Any additional elements get just transferred to the respective menu entries." :group 'TeX-command :type '(repeat (group :value ("" "" TeX-run-command nil t) (string :tag "Name") (string :tag "Command") (choice :tag "How" :value TeX-run-command (function-item TeX-run-command) (function-item TeX-run-format) (function-item TeX-run-TeX) (function-item TeX-run-interactive) (function-item TeX-run-BibTeX) (function-item TeX-run-Biber) (function-item TeX-run-compile) (function-item TeX-run-shell) (function-item TeX-run-discard) (function-item TeX-run-background) (function-item TeX-run-silent) (function-item TeX-run-discard-foreground) (function-item TeX-run-function) (function-item TeX-run-discard-or-function) (function :tag "Other")) (boolean :tag "Prompt") (choice :tag "Modes" (const :tag "All" t) (set (const :tag "Plain TeX" plain-tex-mode) (const :tag "LaTeX" latex-mode) (const :tag "DocTeX" doctex-mode) (const :tag "ConTeXt" context-mode) (const :tag "Texinfo" texinfo-mode) (const :tag "AmSTeX" ams-tex-mode))) (repeat :tag "Menu elements" :inline t sexp)))) (defcustom TeX-command-output-list '( ; Add the following line if you want to use htlatex (tex4ht) ; ("\\`htlatex" ("html")) ) "List of regexps and file extensions. Each element is a list, whose first element is a regular expression to match against the name of the command that will be used to process the TeX file. The second element is either a string or a list with a string as element. If it is a string this is the default file extension that will be expected for output files that are produced by commands that match the first element. The real file extension will be obtained from the logging output if possible, defaulting to the given string. If it is a list, the element of the list will be the fixed extension used without looking at the logging output. If this list does not yield an extension, the default is either \"dvi\" or \"pdf\", depending on the setting of `TeX-PDF-mode'. Extensions must be given without the \".\"." :group 'TeX-command :type '(repeat (group (regexp :tag "Command Regexp") (choice (string :tag "Default Extension") (group (string :tag "Fixed Extension")))))) ;; You may want to change the default LaTeX version for your site. (defcustom LaTeX-version "2e" "Default LaTeX version. Currently recognized is \"2\" and \"2e\"." :group 'LaTeX :type '(radio (const :format "%v\n%h" :doc "\ The executable `latex' is LaTeX version 2." "2") (const :format "%v\n%h" :doc "\ The executable `latex' is LaTeX version 2e." "2e") (string :tag "Other"))) ;; Use different compilation commands depending on style. ;; Only works if parsing is enabled. (defcustom LaTeX-command-style ;; They have all been combined in LaTeX 2e. '(("" "%(PDF)%(latex) %S%(PDFout)")) "List of style options and LaTeX commands. If the first element (a regular expression) matches the name of one of the style files, any occurrence of the string `%l' in a command in `TeX-command-list' will be replaced with the second element. The first match is used, if no match is found the `%l' is replaced with the empty string." :group 'TeX-command :type '(repeat (group :value ("" "") regexp (string :tag "Style")))) ;; Printing: If you want to print, TeX-print-command must be non-nil ;; (if it is nil, you'll get a complaint when using the print menu). ;; If you want to view the queue, TeX-queue-command needs to be ;; non-nil (if it is nil, it won't get mentioned in the menu). If ;; TeX-printer-list is nil, nothing else gets asked: the menu entries ;; lead directly to the respective commands. If those commands ;; contain %p, the value of TeX-printer-default gets inserted there, ;; no questions asked. Now if TeX-printer-list is non-nil, you'll ;; always get asked which printer you want to use. You can enter a ;; configured printer from TeX-printer-list, or an unknown one. The ;; respective menus will show all configured printers. Since you can ;; enter unknown printers, the printer name _must_ be set with %p in ;; TeX-print-command. (defcustom TeX-print-command "{ test -e %s.dvi && %(o?)dvips -P%p %r %s; } || lpr -P%p %o" "Command used to print a file. First `%p' is expanded to the printer name, then ordinary expansion is performed as specified in `TeX-expand-list'. If it is nil, then customization is requested." :group 'TeX-command :type '(choice (string :tag "Print command") (const :tag "No print command customized" nil))) (defcustom TeX-queue-command "lpq -P%p" "Command used to show the status of a printer queue. First `%p' is expanded to the printer name, then ordinary expansion is performed as specified in `TeX-expand-list'. If this is nil, the printer has no corresponding command." :group 'TeX-command :type '(choice (string :tag "Queue check command") (const :tag "No such command" nil))) ;; Enter the names of the printers available at your site, or nil if ;; you only have one printer. (defcustom TeX-printer-list '(("Default" ;; Print to the (unnamed) default printer. If there is a DVI ;; file print via Dvips. If not, pass the output file (which ;; should then be a Postscript or PDF file) directly to lpr. "{ test -e %s.dvi && %(o?)dvips -f %r %s | lpr; } || lpr %o" ;; Show the queue for the (unnamed) default printer. "lpq")) "List of available printers. The first element of each entry is the printer name. The second element is the command used to print to this printer. It defaults to the value of `TeX-print-command' when nil. The third element is the command used to examine the print queue for this printer. It defaults to the value of `TeX-queue-command' similarly. Any occurrence of `%p' in the second or third element is expanded to the printer name given in the first element, then ordinary expansion is performed as specified in `TeX-expand-list'. If this list is empty, only `TeX-print-command' and `TeX-queue-command' get consulted." :group 'TeX-command :type '(repeat (group (string :tag "Name") (option (group :inline t :extra-offset -4 (choice :tag "Print" (const :tag "default") (string :format "%v")) (option (choice :tag "Queue" (const :tag "default") (string :format "%v")))))))) ;; The name of the most used printer. (defcustom TeX-printer-default (or (getenv "PRINTER") (and TeX-printer-list (car (car TeX-printer-list))) "lp") "Default printer to use with `TeX-command'." :group 'TeX-command :type 'string) (defcustom TeX-print-style '(("^landscape$" "-t landscape")) "List of style options and print options. If the first element (a regular expression) matches the name of one of the style files, any occurrence of the string `%r' in a command in `TeX-command-list' will be replaced with the second element. The first match is used, if no match is found the `%r' is replaced with the empty string." :group 'TeX-command :type '(repeat (group regexp (string :tag "Command")))) ;; This is the list of expansion for the commands in ;; TeX-command-list. Not likely to be changed, but you may e.g. want ;; to handle .ps files. (defcustom TeX-expand-list '(("%p" TeX-printer-query) ;%p must be the first entry ("%q" (lambda () (TeX-printer-query t))) ("%V" (lambda () (TeX-source-correlate-start-server-maybe) (TeX-view-command-raw))) ("%vv" (lambda () (TeX-source-correlate-start-server-maybe) (TeX-output-style-check TeX-output-view-style))) ("%v" (lambda () (TeX-source-correlate-start-server-maybe) (TeX-style-check TeX-view-style))) ("%r" (lambda () (TeX-style-check TeX-print-style))) ("%l" (lambda () (TeX-style-check LaTeX-command-style))) ("%(PDF)" (lambda () (if (and (eq TeX-engine 'default) (or TeX-PDF-mode TeX-DVI-via-PDFTeX)) "pdf" ""))) ("%(PDFout)" (lambda () (cond ((and (eq TeX-engine 'xetex) (not TeX-PDF-mode)) " -no-pdf") ((and (eq TeX-engine 'luatex) (not TeX-PDF-mode)) " --output-format=dvi") ((and (eq TeX-engine 'default) (not TeX-PDF-mode) TeX-DVI-via-PDFTeX) " \"\\pdfoutput=0 \"") (t "")))) ("%(mode)" (lambda () (if TeX-interactive-mode "" " -interaction=nonstopmode"))) ("%(o?)" (lambda () (if (eq TeX-engine 'omega) "o" ""))) ("%(tex)" (lambda () (eval (nth 2 (assq TeX-engine (TeX-engine-alist)))))) ("%(latex)" (lambda () (eval (nth 3 (assq TeX-engine (TeX-engine-alist)))))) ("%(execopts)" ConTeXt-expand-options) ("%S" TeX-source-correlate-expand-options) ("%dS" TeX-source-specials-view-expand-options) ("%cS" TeX-source-specials-view-expand-client) ("%(outpage)" (lambda () (or (when TeX-source-correlate-output-page-function (funcall TeX-source-correlate-output-page-function)) "1"))) ;; `file' means to call `TeX-master-file' or `TeX-region-file' ("%s" file nil t) ("%t" file t t) ("%`" (lambda nil (setq TeX-command-pos t TeX-command-text ""))) (" \"\\" (lambda nil (if (eq TeX-command-pos t) (setq TeX-command-pos pos pos (+ 3 pos)) (setq pos (1+ pos))))) ("\"" (lambda nil (if (numberp TeX-command-pos) (setq TeX-command-text (concat TeX-command-text (substring command TeX-command-pos (1+ pos))) command (concat (substring command 0 TeX-command-pos) (substring command (1+ pos))) pos TeX-command-pos TeX-command-pos t) (setq pos (1+ pos))))) ("%'" (lambda nil (prog1 (if (stringp TeX-command-text) (progn (setq pos (+ (length TeX-command-text) 9) TeX-command-pos (and (string-match " " (funcall file t t)) "\"")) (concat TeX-command-text " \"\\input\"")) (setq TeX-command-pos nil) "") (setq TeX-command-text nil)))) ("%n" TeX-current-line) ("%d" file "dvi" t) ("%f" file "ps" t) ("%o" (lambda nil (funcall file (TeX-output-extension) t))) ;; for source specials the file name generated for the xdvi ;; command needs to be relative to the master file, just in ;; case the file is in a different subdirectory ("%b" TeX-current-file-name-master-relative) ;; the following is for preview-latex. ("%m" preview-create-subdirectory)) "List of expansion strings for TeX command names. Each entry is a list with two or more elements. The first element is the string to be expanded. The second element is the name of a function returning the expanded string when called with the remaining elements as arguments. The special value `file' will be expanded to the name of the file being processed, with an optional extension." :group 'TeX-command :type '(repeat (group (string :tag "Key") (sexp :tag "Expander") (repeat :inline t :tag "Arguments" (sexp :format "%v"))))) ;; The following dependencies are not done with autoload cookies since ;; they are only useful when tex.el is loaded, anyway. tex-buf.el ;; should remain unloaded as long as one is only editing files, so ;; requiring it here would be wrong. (autoload 'TeX-region-create "tex-buf" nil nil) (autoload 'TeX-save-document "tex-buf" nil t) (autoload 'TeX-home-buffer "tex-buf" nil t) (autoload 'TeX-pin-region "tex-buf" nil t) (autoload 'TeX-command-region "tex-buf" nil t) (autoload 'TeX-command-buffer "tex-buf" nil t) (autoload 'TeX-command-master "tex-buf" nil t) (autoload 'TeX-command "tex-buf" nil nil) (autoload 'TeX-kill-job "tex-buf" nil t) (autoload 'TeX-recenter-output-buffer "tex-buf" nil t) (autoload 'TeX-next-error "tex-buf" nil t) (autoload 'TeX-region-file "tex-buf" nil nil) (autoload 'TeX-current-offset "tex-buf" nil nil) (autoload 'TeX-process-set-variable "tex-buf" nil nil) (autoload 'TeX-view "tex-buf" nil t) ;;; Portability. (require 'easymenu) (eval-and-compile (if (featurep 'xemacs) (defun TeX-maybe-remove-help (menu) "Removes :help entries from menus, since XEmacs does not like them. Also does other stuff." (cond ((consp menu) (cond ((eq (car menu) :help) (TeX-maybe-remove-help (cddr menu))) ((eq (car menu) :visible) (cons :included (cons (cadr menu) (TeX-maybe-remove-help (cddr menu))))) (t (cons (TeX-maybe-remove-help (car menu)) (TeX-maybe-remove-help (cdr menu)))))) ((vectorp menu) (vconcat (TeX-maybe-remove-help (append menu nil)))) (t menu))) (defun TeX-maybe-remove-help (menu) "Compatibility function that would remove :help entries if on XEmacs, but does nothing in Emacs." menu)) (defmacro TeX-menu-with-help (menu) "Compatibility macro that removes :help entries if on XEmacs. Also does other stuff." (TeX-maybe-remove-help menu))) ;;; Documentation for Info-goto-emacs-command-node and similar (eval-after-load 'info '(dolist (elt '("TeX" "LaTeX" "ConTeXt" "Texinfo" "docTeX")) (add-to-list 'Info-file-list-for-emacs (cons elt "AUCTeX")))) (defadvice hack-one-local-variable (after TeX-hack-one-local-variable-after activate) "Call minor mode function if minor mode variable is found." (let ((var (ad-get-arg 0)) (val (ad-get-arg 1))) ;; Instead of checking for each mode explicitely `minor-mode-list' ;; could be used. But this may make the byte compiler pop up. (when (memq var '(TeX-PDF-mode TeX-source-correlate-mode TeX-interactive-mode TeX-fold-mode LaTeX-math-mode)) (if (symbol-value val) (funcall var 1) (funcall var 0))))) (defvar TeX-overlay-priority-step 16 "Numerical difference of priorities between nested overlays. The step should be big enough to allow setting a priority for new overlays between two existing ones.") ;;; Special support for XEmacs (when (featurep 'xemacs) (defun TeX-read-string (prompt &optional initial-input history default-value) (condition-case nil (read-string prompt initial-input history default-value t) (wrong-number-of-arguments (read-string prompt initial-input history default-value)))) (defun TeX-mark-active () ;; In Lucid (mark) returns nil when not active. (if zmacs-regions (mark) (mark t))) (defun TeX-active-mark () (and zmacs-regions (mark))) (fset 'TeX-activate-region (symbol-function 'zmacs-activate-region)) ;; I am aware that this counteracts coding conventions but I am sick ;; of it. (unless (fboundp 'line-beginning-position) (defalias 'line-beginning-position 'point-at-bol)) (unless (fboundp 'line-end-position) (defalias 'line-end-position 'point-at-eol)) (defun TeX-overlay-prioritize (start end) "Calculate a priority for an overlay extending from START to END. The calculated priority is lower than the minimum of priorities of surrounding overlays and higher than the maximum of enclosed overlays." (let (inner-priority outer-priority (prios (cons nil nil))) (map-extents #'(lambda (ov prios) (and (or (eq (extent-property ov 'category) 'TeX-fold) (extent-property ov 'preview-state)) (setcar prios (max (or (car prios) 0) (extent-property ov 'priority)))) nil) nil start end prios 'start-and-end-in-region 'priority) (map-extents #'(lambda (ov prios) (and (or (eq (extent-property ov 'category) 'TeX-fold) (extent-property ov 'preview-state)) (setcdr prios (min (or (cdr prios) most-positive-fixnum) (extent-property ov 'priority)))) nil) nil start end prios '(start-and-end-in-region negate-in-region) 'priority) (setq inner-priority (car prios) outer-priority (cdr prios)) (cond ((and inner-priority (not outer-priority)) (+ inner-priority TeX-overlay-priority-step)) ((and (not inner-priority) outer-priority) (/ outer-priority 2)) ((and inner-priority outer-priority) (+ (/ (- outer-priority inner-priority) 2) inner-priority)) (t TeX-overlay-priority-step)))) ) (if (fboundp 'completing-read-multiple) (defalias 'TeX-completing-read-multiple 'completing-read-multiple) (defun TeX-completing-read-multiple (prompt table &optional predicate require-match initial-input hist def inherit-input-method) "Poor mans implementation of Emacs' `completing-read-multiple' for XEmacs. The XEmacs package edit-utils-2.32 includes `crm.el'." (multi-prompt "," nil prompt table predicate require-match initial-input hist))) (if (fboundp 'line-number-at-pos) (defalias 'TeX-line-number-at-pos 'line-number-at-pos) ;; `line-number-at-pos' from `simple.el' in Emacs CVS (2006-06-07) (defun TeX-line-number-at-pos (&optional pos) "Return (narrowed) buffer line number at position POS. If POS is nil, use current buffer location." (let ((opoint (or pos (point))) start) (save-excursion (goto-char (point-min)) (setq start (point)) (goto-char opoint) (forward-line 0) (1+ (count-lines start (point))))))) ;;; Special support for GNU Emacs (unless (featurep 'xemacs) (defun TeX-read-string (prompt &optional initial-input history default-value) (read-string prompt initial-input history default-value t)) (defun TeX-mark-active () ;; In FSF 19 mark-active indicates if mark is active. mark-active) (defun TeX-active-mark () (and transient-mark-mode mark-active)) (defun TeX-activate-region () nil) (defun TeX-overlay-prioritize (start end) "Calculate a priority for an overlay extending from START to END. The calculated priority is lower than the minimum of priorities of surrounding overlays and higher than the maximum of enclosed overlays." (let (outer-priority inner-priority ov-priority) (dolist (ov (overlays-in start end)) (when (or (eq (overlay-get ov 'category) 'TeX-fold) (overlay-get ov 'preview-state)) (setq ov-priority (overlay-get ov 'priority)) (if (>= (overlay-start ov) start) (setq inner-priority (max ov-priority (or inner-priority ov-priority))) (setq outer-priority (min ov-priority (or outer-priority ov-priority)))))) (cond ((and inner-priority (not outer-priority)) (+ inner-priority TeX-overlay-priority-step)) ((and (not inner-priority) outer-priority) (/ outer-priority 2)) ((and inner-priority outer-priority) (+ (/ (- outer-priority inner-priority) 2) inner-priority)) (t TeX-overlay-priority-step)))) ) (defun TeX-delete-dups-by-car (alist &optional keep-list) "Return a list of all elements in ALIST, but each car only once. Elements of KEEP-LIST are not removed even if duplicate." ;; Copy of `reftex-uniquify-by-car' (written by David Kastrup). (setq keep-list (sort (copy-sequence keep-list) #'string<)) (setq alist (sort (copy-sequence alist) (lambda (a b) (string< (car a) (car b))))) (let ((new alist) elt) (while new (setq elt (caar new)) (while (and keep-list (string< (car keep-list) elt)) (setq keep-list (cdr keep-list))) (unless (and keep-list (string= elt (car keep-list))) (while (string= elt (car (cadr new))) (setcdr new (cddr new)))) (setq new (cdr new)))) alist) (defun TeX-delete-duplicate-strings (list) "Return a list of all strings in LIST, but each only once." (setq list (TeX-sort-strings list)) (let ((new list) elt) (while new (setq elt (car new)) (while (string= elt (cadr new)) (setcdr new (cddr new))) (setq new (cdr new)))) list) (defun TeX-sort-strings (list) "Return sorted list of all strings in LIST." (sort (copy-sequence list) #'string<)) ;;; Buffer (defgroup TeX-output nil "Parsing TeX output." :prefix "TeX-" :group 'AUCTeX) (defcustom TeX-display-help t "Control type of help display when stepping through errors with \\[TeX-next-error]. If t display help buffer. If nil display message about error in echo area. If `expert' display output buffer with raw processor output." :group 'TeX-output :type '(choice (const :tag "Help buffer" t) (const :tag "Echo area" nil) (const :tag "Output buffer" expert))) (defcustom TeX-debug-bad-boxes nil "Non-nil means also find overfull/underfull box warnings with \\[TeX-next-error]." :group 'TeX-output :type 'boolean) (defcustom TeX-debug-warnings nil "Non-nil means also find LaTeX or package warnings with \\[TeX-next-error]." :group 'TeX-output :type 'boolean) (defun TeX-toggle-debug-bad-boxes () "Toggle if the debugger should display \"bad boxes\" too." (interactive) (setq TeX-debug-bad-boxes (not TeX-debug-bad-boxes)) (message (concat "TeX-debug-bad-boxes: " (if TeX-debug-bad-boxes "on" "off")))) (defun TeX-toggle-debug-warnings () "Toggle if the debugger should display warnings too." (interactive) (setq TeX-debug-warnings (not TeX-debug-warnings)) (message (concat "TeX-debug-warnings: " (if TeX-debug-warnings "on" "off")))) ;;; Mode names. (defvar TeX-base-mode-name nil "Base name of mode.") (make-variable-buffer-local 'TeX-base-mode-name) (defun TeX-set-mode-name (&optional changed local reset) "Build and set the mode name. The base mode name will be concatenated with indicators for helper modes where appropriate. If CHANGED is non-nil, it indicates which global mode may have changed so that all corresponding buffers without a local value might get their name updated. A value of t will thus update all buffer names. If LOCAL is non-nil and CHANGED is buffer-local, only a local change has been performed and only the local name is to be updated. If RESET is non-nil, `TeX-command-next' is reset to `TeX-command-default' in updated buffers." (if (and changed (not (and local (local-variable-p changed (current-buffer))))) (dolist (buffer (buffer-list)) (and (local-variable-p 'TeX-mode-p buffer) (not (local-variable-p changed buffer)) (with-current-buffer buffer (TeX-set-mode-name nil nil reset)))) (if TeX-mode-p (let ((trailing-flags (concat (and (boundp 'TeX-fold-mode) TeX-fold-mode "F") (and (boundp 'LaTeX-math-mode) LaTeX-math-mode "M") (and TeX-PDF-mode "P") (and TeX-interactive-mode "I") (and TeX-source-correlate-mode "S")))) (setq mode-name (concat TeX-base-mode-name (when (> (length trailing-flags) 0) (concat "/" trailing-flags)))) (when reset (TeX-process-set-variable (TeX-master-file) 'TeX-command-next TeX-command-default) (TeX-process-set-variable (TeX-region-file) 'TeX-command-next TeX-command-default)) (set-buffer-modified-p (buffer-modified-p)))))) (defun TeX-mode-prefix (&optional mode) "Return the prefix for the symbol MODE as string. If no mode is given the current major mode is used." (cdr (assoc (or mode major-mode) '((plain-tex-mode . "plain-TeX") (latex-mode . "LaTeX") (doctex-mode . "docTeX") (texinfo-mode . "Texinfo") (context-mode . "ConTeXt"))))) ;;; Viewing (defgroup TeX-view nil "Calling viewers from AUCTeX." :group 'TeX-command) (defcustom TeX-view-style `((,(concat "^" (regexp-opt '("a4paper" "a4dutch" "a4wide" "sem-a4")) "$") "%(o?)xdvi %dS -paper a4 %d") (,(concat "^" (regexp-opt '("a5paper" "a5comb")) "$") "%(o?)xdvi %dS -paper a5 %d") ("^b5paper$" "%(o?)xdvi %dS -paper b5 %d") ("^letterpaper$" "%(o?)xdvi %dS -paper us %d") ("^legalpaper$" "%(o?)xdvi %dS -paper legal %d") ("^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d") ("^landscape$" "%(o?)xdvi %dS -paper a4r -s 0 %d") ;; The latest xdvi can show embedded postscript. If you don't ;; have that, uncomment next line. ;; ("^epsf$" "ghostview %f") ("." "%(o?)xdvi %dS %d")) "List of style options and view options. If the first element (a regular expression) matches the name of one of the style files, any occurrence of the string `%v' in a command in `TeX-command-list' will be replaced with the second element. The first match is used, if no match is found the `%v' is replaced with the empty string. As a default, the \"View\" command in `TeX-command-list' is set to `%V'. This means that `TeX-output-view-style' will be consulted before `TeX-view-style'. Only if no match is found in `TeX-output-view-style' the settings in `TeX-view-style' will be considered. If you want to bypass `TeX-output-view-style', which is not recommended because it is more powerful than `TeX-view-style', use `%v' in the \"View\" command." :group 'TeX-view :type '(repeat (group regexp (string :tag "Command")))) (defcustom TeX-output-view-style `(("^dvi$" ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$") "%(o?)dvips -t landscape %d -o && gv %f") ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "%(o?)dvips %d -o && gv %f") ("^dvi$" (,(concat "^" (regexp-opt '("a4paper" "a4dutch" "a4wide" "sem-a4")) "$") "^landscape$") "%(o?)xdvi %dS -paper a4r -s 0 %d") ("^dvi$" ,(concat "^" (regexp-opt '("a4paper" "a4dutch" "a4wide" "sem-a4")) "$") "%(o?)xdvi %dS -paper a4 %d") ("^dvi$" (,(concat "^" (regexp-opt '("a5paper" "a5comb")) "$") "^landscape$") "%(o?)xdvi %dS -paper a5r -s 0 %d") ("^dvi$" ,(concat "^" (regexp-opt '("a5paper" "a5comb")) "$") "%(o?)xdvi %dS -paper a5 %d") ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d") ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d") ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d") ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d") ("^dvi$" "." "%(o?)xdvi %dS %d") ("^pdf$" "." "xpdf -remote %s -raise %o %(outpage)") ("^html?$" "." "netscape %o")) "List of output file extensions and view options. If the first element (a regular expression) matches the output file extension, and the second element (a regular expression) matches the name of one of the style options, any occurrence of the string `%V' in a command in `TeX-command-list' will be replaced with the third element. The first match is used; if no match is found the `%V' is replaced with `%v'. The outcome of `%v' is determined by the settings in `TeX-view-style' which therefore serves as a fallback for `TeX-output-view-style'. The second element may also be a list of regular expressions, in which case all the regular expressions must match for the element to apply." :group 'TeX-view :type '(repeat (group (regexp :tag "Extension") (choice regexp (repeat :tag "List" regexp)) (string :tag "Command")))) ;;; Viewing (new implementation) (defvar TeX-view-predicate-list-builtin '((output-dvi (string-match "dvi" (TeX-output-extension))) (output-pdf (string-match "pdf" (TeX-output-extension))) (output-html (string-match "html" (TeX-output-extension))) (style-pstricks (TeX-match-style "^pstricks$\\|^pst-\\|^psfrag$")) (engine-omega (eq TeX-engine 'omega)) (engine-xetex (eq TeX-engine 'xetex)) (mode-io-correlate TeX-source-correlate-mode) (paper-landscape (TeX-match-style "\\`landscape\\'")) (paper-portrait (not (TeX-match-style "\\`landscape\\'"))) (paper-a4 (TeX-match-style "\\`a4paper\\|a4dutch\\|a4wide\\|sem-a4\\'")) (paper-a5 (TeX-match-style "\\`a5paper\\|a5comb\\'")) (paper-b5 (TeX-match-style "\\`b5paper\\'")) (paper-letter (TeX-match-style "\\`letterpaper\\'")) (paper-legal (TeX-match-style "\\`legalpaper\\'")) (paper-executive (TeX-match-style "\\`executivepaper\\'"))) "Alist of built-in predicates for viewer selection and invocation. See the doc string of `TeX-view-predicate-list' for a short description of each predicate.") (defcustom TeX-view-predicate-list nil "Alist of predicates for viewer selection and invocation. The key of each list item is a symbol and the value a Lisp form to be evaluated. The form should return nil if the predicate is not fulfilled. Built-in predicates provided in `TeX-view-predicate-list-builtin' can be overwritten by defining predicates with the same symbol. The following built-in predicates are available: `output-dvi': The output is a DVI file. `output-pdf': The output is a PDF file. `output-html': The output is an HTML file. `style-pstricks': The document loads a PSTricks package. `engine-omega': The Omega engine is used for typesetting. `engine-xetex': The XeTeX engine is used for typesetting. `mode-io-correlate': TeX Source Correlate mode is active. `paper-landscape': The document is typeset in landscape orientation. `paper-portrait': The document is not typeset in landscape orientation. `paper-a4': The paper format is A4. `paper-a5': The paper format is A5. `paper-b5': The paper format is B5. `paper-letter': The paper format is letter. `paper-legal': The paper format is legal. `paper-executive': The paper format is executive." :group 'TeX-view :type '(alist :key-type symbol :value-type (group sexp))) (defun TeX-evince-dbus-p (&rest options) "Return non-nil, if evince is installed and accessible via DBUS. Additional OPTIONS may be given to extend the check. If none are given, only the minimal requirements needed by backward search are checked. If OPTIONS include `:forward', which is currently the only option, then additional requirements needed by forward search are checked, too." (and (not (featurep 'xemacs)) ; XEmacs 21.4 has no `require' with ; arity 3, and no dbus support anyway. (require 'dbus nil :no-error) (functionp 'dbus-register-signal) (getenv "DBUS_SESSION_BUS_ADDRESS") (executable-find "evince") (or (not (memq :forward options)) (let ((spec (dbus-introspect-get-method :session "org.gnome.evince.Daemon" "/org/gnome/evince/Daemon" "org.gnome.evince.Daemon" "FindDocument"))) ;; FindDocument must exist, and its signature must be (String, ;; Boolean, String). Evince versions between 2.30 and 2.91.x ;; didn't have the Boolean spawn argument we need to start evince ;; initially. (and spec (equal '("s" "b" "s") (delq nil (mapcar (lambda (elem) (when (and (listp elem) (eq (car elem) 'arg)) (cdr (caar (cdr elem))))) spec)))))))) (defun TeX-evince-sync-view () "Focus the focused page/paragraph in Evince with the position of point in emacs by using Evince's DBUS API. Used by default for the Evince viewer entry in `TeX-view-program-list-builtin' if the requirements are met." (let* ((uri (concat "file://" (expand-file-name (concat file "." (TeX-output-extension))))) (owner (dbus-call-method :session "org.gnome.evince.Daemon" "/org/gnome/evince/Daemon" "org.gnome.evince.Daemon" "FindDocument" uri t))) (if owner (dbus-call-method :session owner "/org/gnome/evince/Window/0" "org.gnome.evince.Window" "SyncView" (buffer-file-name) (list :struct :int32 (line-number-at-pos) :int32 (1+ (current-column))) :uint32 (let ((time (float-time))) ;; FIXME: Evince wants a timestamp as UInt32, but POSIX time ;; is too large for emacs integers on 32 bit systems. Emacs ;; 24.2 will allow providing DBUS ints as floats, and this ;; dbus version will be identifiable by its new variables ;; `dbus-compiled-version' and `dbus-runtime-version'. But ;; it seems providing just 1 as timestamp has no negative ;; consequences, anyway. (if (> most-positive-fixnum time) (round time) 1))) (error "Couldn't find the Evince instance for %s" uri)))) (defvar TeX-view-program-list-builtin (cond ((eq system-type 'windows-nt) '(("Yap" ("yap -1" (mode-io-correlate " -s %n%b") " %o")) ("dvips and start" "dvips %d -o && start \"\" %f") ("start" "start \"\" %o"))) ;; XXX: We need the advice of a Mac OS X user to configure this ;; correctly and test it. ;; ((eq system-type 'darwin) ;; '(("Preview.app" "open -a Preview.app %o") ;; ("Skim" "open -a Skim.app %o") ;; ("displayline" "displayline %n %o %b") ;; ("open" "open %o"))) (t `(("xdvi" ("%(o?)xdvi" (mode-io-correlate " -sourceposition \"%n %b\" -editor \"%cS\"") ((paper-a4 paper-portrait) " -paper a4") ((paper-a4 paper-landscape) " -paper a4r") ((paper-a5 paper-portrait) " -paper a5") ((paper-a5 paper-landscape) " -paper a5r") (paper-b5 " -paper b5") (paper-letter " -paper us") (paper-legal " -paper legal") (paper-executive " -paper 7.25x10.5in") " %d")) ("dvips and gv" "%(o?)dvips %d -o && gv %f") ("gv" "gv %o") ("xpdf" ("xpdf -remote %s -raise %o" (mode-io-correlate " %(outpage)"))) ("Evince" ,(if (TeX-evince-dbus-p :forward) 'TeX-evince-sync-view `("evince" (mode-io-correlate ;; With evince 3, -p N opens the page *labeled* N, ;; and -i,--page-index the physical page N. ,(if (string-match "--page-index" (shell-command-to-string "evince --help")) " -i %(outpage)" " -p %(outpage)")) " %o"))) ("Okular" ("okular --unique %o" (mode-io-correlate "#src:%n%b"))) ("xdg-open" "xdg-open %o")))) "Alist of built-in viewer specifications. This variable should not be changed by the user who can use `TeX-view-program-list' to add new viewers or overwrite the definition of built-in ones. The latter variable also contains a description of the data format.") (defcustom TeX-view-program-list nil "Alist of viewer specifications. This variable can be used to specify how a viewer is to be invoked and thereby add new viewers on top of the built-in list of viewers defined in `TeX-view-program-list-builtin' or override entries in the latter. The car of each item is a string with a user-readable name. The second element can be a command line to be run as a process or a Lisp function to be executed. The command line can either be specified as a single string or a list of strings and two-part lists. The first element of the two-part lists is a symbol or a list of symbols referring to one or more of the predicates in `TeX-view-predicate-list' or `TeX-view-predicate-list-builtin'. The second part of the two-part lists is a command line part. The command line for the viewer is constructed by concatenating the command line parts. Parts with a predicate are only considered if the predicate was evaluated with a positive result. Note that the command line can contain placeholders as defined in `TeX-expand-list' which are expanded before the viewer is called. The use of a function as the second element only works if the View command in `TeX-command-list' makes use of the hook `TeX-run-discard-or-function'. Note: Predicates defined in the current Emacs session will only show up in the customization interface for this variable after restarting Emacs." :group 'TeX-view :type `(alist :key-type (string :tag "Name") :value-type (choice (group :tag "Command" (string :tag "Command")) (group :tag "Command parts" (repeat :tag "Command parts" (choice (string :tag "Command part") (list :tag "Predicate and command part" ,(let (list) ;; Build the list of available predicates. (mapc (lambda (spec) (add-to-list 'list `(const ,(car spec)))) (append TeX-view-predicate-list TeX-view-predicate-list-builtin)) ;; Sort the list alphabetically. (setq list (sort list (lambda (a b) (string< (downcase (symbol-name (cadr a))) (downcase (symbol-name (cadr b))))))) `(choice (choice :tag "Predicate" ,@list) (repeat :tag "List of predicates" (choice :tag "Predicate" ,@list)))) (string :tag "Command part"))))) (group :tag "Function" function)))) ;; XXX: Regarding a possibility to (manually) run an update command, ;; one could support this through `TeX-view' by letting it temporarily ;; set a variable which is checked with a predicate in the viewer ;; selection. If the check is positive, the update command is run ;; instead of the normal viewer command. Direct support through the ;; View command would require a predicate which knows when an update ;; has to be done. (defcustom TeX-view-program-selection (cond ((eq system-type 'windows-nt) '(((output-dvi style-pstricks) "dvips and start") (output-dvi "Yap") (output-pdf "start") (output-html "start"))) ;; XXX: We need the advice of a Mac OS X user to configure this ;; correctly and test it. ;; ((eq system-type 'darwin) ;; '((output-dvi "open") ;; (output-pdf "open") ;; (output-html "open"))) (t '(((output-dvi style-pstricks) "dvips and gv") (output-dvi "xdvi") (output-pdf "Evince") (output-html "xdg-open")))) "Alist of predicates and viewers. Each entry consists of a list with two elements. The first element is a symbol or list of symbols referring to predicates as defined in `TeX-view-predicate-list' or `TeX-view-predicate-list-builtin'. The second element is a string referring to the name of a viewer as defined in `TeX-view-program-list' or `TeX-view-program-list-builtin'. \(Note: Viewers added to `TeX-view-program-list' in the current Emacs session will not show up in the customization interface of `TeX-view-program-selection' until you restart Emacs.) When a viewer is called for, the entries are evaluated in turn and the viewer related to the first entry all predicates of which are evaluated positively is chosen." :group 'TeX-view :type `(alist :key-type ;; Offer list of defined predicates. ,(let (list) (mapc (lambda (spec) (add-to-list 'list `(const ,(car spec)))) (append TeX-view-predicate-list TeX-view-predicate-list-builtin)) (setq list (sort list (lambda (a b) (string< (downcase (symbol-name (cadr a))) (downcase (symbol-name (cadr b))))))) `(choice (choice :tag "Single predicate" ,@list) (repeat :tag "Multiple predicates" (choice ,@list)))) :value-type ;; Offer list of defined viewers. (group (choice :tag "Viewer" ,@(let (list) (mapc (lambda (spec) (add-to-list 'list `(const ,(car spec)))) (append TeX-view-program-list TeX-view-program-list-builtin)) (sort list (lambda (a b) (string< (downcase (cadr a)) (downcase (cadr b)))))))))) (defun TeX-match-style (regexp) "Check if a style matching REGEXP is active." (TeX-member regexp (TeX-style-list) 'string-match)) (defun TeX-view-match-predicate (predicate) "Check if PREDICATE is true. PREDICATE can be a symbol or a list of symbols defined in `TeX-view-predicate-list-builtin' or `TeX-view-predicate-list'. In case of a single symbol, return t if the predicate is true, nil otherwise. In case of a list of symbols, return t if all predicates are true, nil otherwise." (let ((pred-symbols (if (listp predicate) predicate (list predicate))) (pred-defs (append TeX-view-predicate-list TeX-view-predicate-list-builtin)) (result t) elt) (while (and (setq elt (pop pred-symbols)) result) (unless (eval (cadr (assq elt pred-defs))) (setq result nil))) result)) (defun TeX-view-command-raw () "Choose a viewer and return its unexpanded command string." (let ((selection TeX-view-program-selection) entry viewer spec command) ;; Find the appropriate viewer. (while (and (setq entry (pop selection)) (not viewer)) (when (TeX-view-match-predicate (car entry)) (setq viewer (cadr entry)))) (unless viewer (error "No matching viewer found")) ;; Get the command line or function spec. (setq spec (cadr (assoc viewer (append TeX-view-program-list TeX-view-program-list-builtin)))) (cond ((functionp spec) ;; Converting the function call to a string is ugly, but ;; the backend currently only supports strings. (prin1-to-string spec)) ((stringp spec) spec) (t ;; Build the unexpanded command line. Pieces with predicates are ;; only added if the predicate is evaluated positively. (dolist (elt spec) (cond ((stringp elt) (setq command (concat command elt))) ((listp elt) (when (TeX-view-match-predicate (car elt)) (setq command (concat command (cadr elt))))))) command)))) ;;; Engine (defvar TeX-engine-alist-builtin '((default "Default" TeX-command LaTeX-command ConTeXt-engine) (xetex "XeTeX" "xetex" "xelatex" "xetex") ;; Some lualatex versions before 0.71 would use "texput" as file ;; name if --jobname were not supplied (luatex "LuaTeX" "luatex" "lualatex --jobname=%s" "luatex") (omega "Omega" TeX-Omega-command LaTeX-Omega-command ConTeXt-Omega-engine)) "Alist of built-in TeX engines and associated commands. For a description of the format see `TeX-engine-alist'.") (defcustom TeX-engine-alist nil "Alist of TeX engines and associated commands. Each entry is a list with a maximum of five elements. The first element is a symbol used to identify the engine. The second is a string describing the engine. The third is the command to be used for plain TeX. The fourth is the command to be used for LaTeX. The fifth is the command to be used for the --engine parameter of ConTeXt's texexec program. Each command can either be a variable or a string. An empty string or nil means there is no command available. You can override a built-in engine defined in the variable `TeX-engine-alist-builtin' by adding an entry beginning with the same symbol as the built-in entry to `TeX-engine-alist'." :group 'TeX-command :type '(repeat (group symbol (string :tag "Name") (choice :tag "Plain TeX command" string variable) (choice :tag "LaTeX command" string variable) (choice :tag "ConTeXt command" string variable)))) (defun TeX-engine-alist () "Return an alist of TeX engines. The function appends the built-in engine specs from `TeX-engine-alist-builtin' and the user-defined engines from `TeX-engine-alist' and deletes any entries from the built-in part where an entry with the same car exists in the user-defined part." (TeX-delete-dups-by-car (append TeX-engine-alist TeX-engine-alist-builtin))) (defcustom TeX-engine 'default (concat "Type of TeX engine to use. It should be one of the following symbols:\n\n" (mapconcat (lambda (x) (format "* `%s'" (car x))) (TeX-engine-alist) "\n")) :group 'TeX-command :type `(choice ,@(mapcar (lambda (x) `(const :tag ,(nth 1 x) ,(car x))) (TeX-engine-alist)))) (make-variable-buffer-local 'TeX-engine) (put 'TeX-engine 'safe-local-variable (lambda (arg) (memq arg (mapcar 'car TeX-engine-alist-builtin)))) (defun TeX-engine-set (type) "Set TeX engine to TYPE. For available TYPEs, see variable `TeX-engine'." (interactive (list (completing-read "Engine: " (mapcar (lambda (x) (symbol-name (car x))) (TeX-engine-alist)) nil t))) (when (stringp type) (setq type (intern type))) (setq TeX-engine type) ;; Automatically enable or disable TeX PDF mode as a convenience (cond ((eq type 'xetex) (TeX-PDF-mode 1)) ((eq type 'omega) (TeX-PDF-mode 0)))) (define-minor-mode TeX-Omega-mode "Minor mode for using the Omega engine." nil nil nil :group 'TeX-command (TeX-engine-set (if TeX-Omega-mode 'omega 'default))) (defalias 'tex-omega-mode 'TeX-Omega-mode) (make-obsolete 'TeX-Omega-mode 'TeX-engine-set) (make-obsolete-variable 'TeX-Omega-mode 'TeX-engine) ;;; Forward and inverse search (defcustom TeX-source-correlate-method 'auto "Method to use for enabling forward and inverse search. This can be `source-specials' if source specials should be used, `synctex' if SyncTeX should be used, or`auto' if AUCTeX should decide. Setting this variable does not take effect if TeX Source Correlate mode has already been active. Restart Emacs in this case." :type '(choice (const auto) (const synctex) (const source-specials)) :group 'TeX-view) (defvar TeX-source-correlate-method-active nil "Method actually used for forward and inverse search.") (defvar TeX-source-correlate-output-page-function nil "Symbol of function returning an output page relating to buffer position. The function should take no arguments and return the page numer as a string.") (make-variable-buffer-local 'TeX-source-correlate-output-page-function) (defcustom TeX-source-correlate-start-server 'ask "Control if server should be started for inverse search." :type '(choice (const :tag "Always" t) (const :tag "Never" nil) (const :tag "Ask" ask)) :group 'TeX-view) (when (fboundp 'defvaralias) (defvaralias 'TeX-source-specials-view-start-server 'TeX-source-correlate-start-server)) (defvar TeX-source-correlate-start-server-asked nil "Keep track if question about server start search was asked.") (defvar TeX-source-correlate-start-server-flag nil "If non-nil, `TeX-source-correlate-start-server-maybe' will start a server. Code related to features requiring a server, e.g. for inverse search, can set the variable.") (defun TeX-source-correlate-gnuserv-p () "Guess whether to use gnuserv when a server is requested." (cond ((and (boundp 'gnuserv-process) (processp gnuserv-process))) ((and (boundp 'server-process) (processp server-process)) nil) ((featurep 'xemacs)))) (defun TeX-source-correlate-server-enabled-p () "Return non-nil if Emacs server or gnuserv is enabled." (let* ((gnuserv-p (TeX-source-correlate-gnuserv-p)) (process (if gnuserv-p 'gnuserv-process 'server-process))) (and (boundp process) (processp (symbol-value process))))) (defun TeX-source-correlate-start-server-maybe () "Start Emacs server or gnuserv if a feature using it is enabled. This is the case if `TeX-source-correlate-start-server-flag' is non-nil." (when (and TeX-source-correlate-start-server-flag (not (TeX-source-correlate-server-enabled-p))) (let* ((gnuserv-p (TeX-source-correlate-gnuserv-p)) (start (if gnuserv-p 'gnuserv-start 'server-start))) (cond ;; Server should be started unconditionally ((eq TeX-source-correlate-start-server t) (funcall start)) ;; Ask user if server is to be started ((and (eq TeX-source-correlate-start-server 'ask) (not TeX-source-correlate-start-server-asked) (prog1 (y-or-n-p (format "Start %s for inverse search in viewer? " (if gnuserv-p "gnuserv" "Emacs server"))) (setq TeX-source-correlate-start-server-asked t))) (funcall start)))))) (defun TeX-source-correlate-determine-method () "Determine which method is available for forward and inverse search." (let ((help (condition-case nil (with-output-to-string (call-process LaTeX-command nil (list standard-output nil) nil "--help")) (error "")))) (if (string-match "^[ ]*-?-synctex" help) 'synctex 'source-specials))) (defun TeX-source-correlate-expand-options () "Return TeX engine command line option for forward search facilities. The return value depends on the value of `TeX-source-correlate-mode'. If this is nil, an empty string will be returned." (if TeX-source-correlate-mode (if (eq TeX-source-correlate-method-active 'source-specials) (concat TeX-source-specials-tex-flags (if TeX-source-specials-places ;; -src-specials=WHERE: insert source specials ;; in certain places of the DVI file. WHERE is a ;; comma-separated value list: cr display hbox ;; math par parend vbox (concat "=" (mapconcat 'identity TeX-source-specials-places ",")))) TeX-synctex-tex-flags) "")) (defvar TeX-source-correlate-map (let ((map (make-sparse-keymap))) ;; (if (featurep 'xemacs) ;; (define-key map [(control button1)] #'TeX-view-mouse) ;; (define-key map [C-down-mouse-1] #'TeX-view-mouse)) map) "Keymap for `TeX-source-correlate-mode'. You could use this for unusual mouse bindings.") (defun TeX-source-correlate-sync-source (file linecol &rest ignored) "Show TeX FILE with point at LINECOL. This function is called when emacs receives a SyncSource signal emitted from the Evince document viewer. IGNORED absorbs an unused id field accompanying the DBUS signal sent by Evince-3.0.0 or newer." ;; FILE may be given as relative path to the TeX-master root document or as ;; absolute file:// URL. In the former case, the tex file has to be already ;; opened. (let ((buf (let ((f (condition-case nil (progn (require 'url-parse) (aref (url-generic-parse-url file) 6)) ;; For Emacs 21 compatibility, which doesn't have the ;; url package. (file-error (replace-regexp-in-string "^file://" "" file))))) (if (file-name-absolute-p f) (find-file f) (get-buffer (file-name-nondirectory file))))) (line (car linecol)) (col (cadr linecol))) (if (null buf) (message "No buffer for %s." file) (switch-to-buffer buf) (push-mark (point) 'nomsg) (goto-char (point-min)) (forward-line (1- line)) (unless (= col -1) (move-to-column col))))) (define-minor-mode TeX-source-correlate-mode "Minor mode for forward and inverse search. If enabled, the viewer can be advised to show the output page corresponding to the point in the source and vice versa. The method to be used can be controlled with the variable `TeX-source-correlate-method'. Currently source specials or SyncTeX are recognized." :group 'TeX-view ;; Since this is a global minor mode and we don't want to require ;; tex.el when the mode variable is set, the mode function is called ;; explicitely (if necessary) in `VirTeX-common-initialization'. We ;; do it there because otherwise `kill-all-local-variables' would ;; reset `TeX-source-correlate-output-page-function' which is ;; buffer-local. :global t (set-keymap-parent TeX-mode-map (and TeX-source-correlate-mode TeX-source-correlate-map)) (TeX-set-mode-name 'TeX-source-correlate-mode t t) (setq TeX-source-correlate-start-server-flag TeX-source-correlate-mode) ;; Register Emacs for the SyncSource DBUS signal emitted by Evince. (when (TeX-evince-dbus-p) (dbus-register-signal :session nil "/org/gnome/evince/Window/0" "org.gnome.evince.Window" "SyncSource" 'TeX-source-correlate-sync-source)) (unless TeX-source-correlate-method-active (setq TeX-source-correlate-method-active (if (eq TeX-source-correlate-method 'auto) (TeX-source-correlate-determine-method) TeX-source-correlate-method))) (when (eq TeX-source-correlate-method-active 'synctex) (setq TeX-source-correlate-output-page-function (when TeX-source-correlate-mode 'TeX-synctex-output-page)))) (defalias 'TeX-source-specials-mode 'TeX-source-correlate-mode) (make-obsolete 'TeX-source-specials-mode 'TeX-source-correlate-mode) (defalias 'tex-source-correlate-mode 'TeX-source-correlate-mode) (put 'TeX-source-correlate-mode 'safe-local-variable 'TeX-booleanp) ;; We do not want the custom variable to require tex.el. This is only ;; necessary if AUCTeX was compiled with Emacs 21. (put 'TeX-source-correlate-mode 'custom-requests nil) (setq minor-mode-map-alist (delq (assq 'TeX-source-correlate-mode minor-mode-map-alist) minor-mode-map-alist)) ;;; Source Specials (defcustom TeX-source-specials-tex-flags "-src-specials" "Extra flags to pass to TeX commands to generate source specials." :group 'TeX-view :type 'string) (defcustom TeX-source-specials-places nil "List of places where to insert source specials into the DVI file. If nil, use (La)TeX's defaults." :group 'TeX-view :type '(list (set :inline t ;; :tag "Options known to work" ;; cr display hbox math par parend vbox (const "cr") (const "display") (const "hbox") (const "math") (const "par") (const "parend") (const "vbox")) (repeat :inline t :tag "Other options" (string)))) (defcustom TeX-source-specials-view-position-flags "-sourceposition \"%n %b\"" "Flags to pass to the DVI viewer commands for the position in the source." :group 'TeX-view :type 'string) (defcustom TeX-source-specials-view-editor-flags "-editor \"%cS\"" "Flags to pass to DVI viewer commands for inverse search." :group 'TeX-view :type 'string) (defcustom TeX-source-specials-view-gnuclient-flags "-q +%%l %%f" "Flags to pass to gnuclient for inverse search." :group 'TeX-view :type 'string) (defcustom TeX-source-specials-view-emacsclient-flags "--no-wait +%%l %%f" "Flags to emacsclient for inverse search." :group 'TeX-view :type 'string) ;; FIXME: Make client binaries configurable. (defun TeX-source-specials-view-expand-client () "Return gnuclient or emacslient executable with options. Return the full path to the executable if possible." (let* ((gnuserv-p (TeX-source-correlate-gnuserv-p)) (client-base (if gnuserv-p "gnuclient" "emacsclient")) (client-full (and invocation-directory (expand-file-name client-base invocation-directory))) (options (if gnuserv-p TeX-source-specials-view-gnuclient-flags TeX-source-specials-view-emacsclient-flags))) (if (and client-full (file-executable-p client-full)) (concat client-full " " options) (concat client-base " " options)))) (defun TeX-source-specials-view-expand-options (&optional viewer) "Return source specials command line option for viewer command. The return value depends on the values of `TeX-source-correlate-mode' and `TeX-source-correlate-method-active'. If those are nil or not `source-specials' respectively, an empty string will be returned." (if (and TeX-source-correlate-mode (eq TeX-source-correlate-method-active 'source-specials)) (concat TeX-source-specials-view-position-flags (when (TeX-source-correlate-server-enabled-p) (concat " " TeX-source-specials-view-editor-flags))) "")) ;;; SyncTeX (defvar TeX-synctex-tex-flags "--synctex=1" "Extra flags to pass to TeX commands to enable SyncTeX.") (defun TeX-synctex-output-page-1 (file) "Return the page corresponding to the current position in FILE. This method assumes that the document was compiled with SyncTeX enabled and the `synctex' binary is available." (let ((synctex-output (with-output-to-string (call-process "synctex" nil (list standard-output nil) nil "view" "-i" (format "%s:%s:%s" (line-number-at-pos) (current-column) file) "-o" (TeX-active-master (TeX-output-extension)))))) (when (string-match "Page:\\([0-9]+\\)" synctex-output) (match-string 1 synctex-output)))) (defun TeX-synctex-output-page () "Return the page corresponding to the position in the current buffer. This method assumes that the document was compiled with SyncTeX enabled and the `synctex' binary is available." (let* ((file (file-relative-name (buffer-file-name) (file-name-directory (TeX-active-master)))) (abs-file (concat (expand-file-name (or (file-name-directory (TeX-active-master)) (file-name-directory (buffer-file-name)))) "./" file))) ;; It's known that depending on synctex version one of ;; /absolute/path/./foo/bar.tex, foo/bar.tex, or ./foo/bar.tex (relative to ;; TeX-master, and the "." in the absolute path is important) are needed. ;; So try all variants before falling back to page 1. (or (TeX-synctex-output-page-1 abs-file) (TeX-synctex-output-page-1 file) (TeX-synctex-output-page-1 (concat "./" file)) "1"))) ;;; Miscellaneous minor modes (defvar TeX-mode-p nil "This indicates a TeX mode being active.") (make-variable-buffer-local 'TeX-mode-p) (defun TeX-mode-set (var value) (set-default var value) (TeX-set-mode-name var nil t)) (defcustom TeX-PDF-mode nil nil :group 'TeX-command :set 'TeX-mode-set :type 'boolean) (put 'TeX-PDF-mode 'safe-local-variable 'TeX-booleanp) (define-minor-mode TeX-PDF-mode "Minor mode for using PDFTeX. If enabled, PDFTeX will be used as an executable by default. You can customize an initial value, and you can use the function `TeX-global-PDF-mode' for toggling this value." :group 'TeX-command (when (eq TeX-engine 'omega) (setq TeX-PDF-mode nil)) (setq TeX-PDF-mode-parsed nil) (TeX-set-mode-name nil nil t) (setq TeX-output-extension (if TeX-PDF-mode "pdf" "dvi"))) (add-to-list 'minor-mode-alist '(TeX-PDF-mode "")) (defun TeX-global-PDF-mode (&optional arg) "Toggle default for `TeX-PDF-mode'." (interactive "P") (prog1 (setq-default TeX-PDF-mode (if arg (> (prefix-numeric-value arg) 0) (not (default-value 'TeX-PDF-mode)))) (TeX-set-mode-name 'TeX-PDF-mode nil t))) (defalias 'tex-pdf-mode 'TeX-PDF-mode) (defvar TeX-PDF-mode-parsed nil "Set if `TeX-PDF-mode' has come about by parsing.") (make-variable-buffer-local 'TeX-PDF-mode-parsed) (defun TeX-PDF-mode-parsed (arg) "Change `TeX-PDF-mode' to ARG based on parsing. If this conflicts with previous parsed settings, just use the default. If an explicit setting is already established, don't do anything." ;; Basically we have the following situations: ;; TeX-PDF-mode-parsed (local-variable-p 'TeX-PDF-mode): ;; nil nil : virgin state ;; nil t : stably set state (possibly because of conflicting parse info) ;; t t : non-conflicting parsed info (if TeX-PDF-mode-parsed (unless (eq TeX-PDF-mode arg) (TeX-PDF-mode (if (default-value 'TeX-PDF-mode) 1 0))) (unless (local-variable-p 'TeX-PDF-mode (current-buffer)) (TeX-PDF-mode (if arg 1 0)) (setq TeX-PDF-mode-parsed t)))) (defun TeX-PDF-mode-on () "Use only from parsing routines." (TeX-PDF-mode-parsed t)) (defun TeX-PDF-mode-off () "Use only from parsing routines." (TeX-PDF-mode-parsed nil)) (defcustom TeX-DVI-via-PDFTeX nil "Whether to use PDFTeX also for producing DVI files." :group 'TeX-command :type 'boolean) (define-minor-mode TeX-interactive-mode "Minor mode for interactive runs of TeX." nil nil nil :group 'TeX-command (TeX-set-mode-name 'TeX-interactive-mode t t)) (defalias 'tex-interactive-mode 'TeX-interactive-mode) (add-to-list 'minor-mode-alist '(TeX-interactive-mode "")) ;;; Commands (defgroup TeX-command-name nil "Names for external commands in AUCTeX." :group 'TeX-command) (defcustom TeX-command-BibTeX "BibTeX" "*The name of the BibTeX entry in `TeX-command-list'." :group 'TeX-command-name :type 'string) (make-variable-buffer-local 'TeX-command-BibTeX) (defcustom TeX-command-Biber "Biber" "*The name of the Biber entry in `TeX-command-list'." :group 'TeX-command-name :type 'string) (make-variable-buffer-local 'TeX-command-Biber) (defcustom TeX-command-Show "View" "*The default command to show (view or print) a TeX file. Must be the car of an entry in `TeX-command-list'." :group 'TeX-command-name :type 'string) (make-variable-buffer-local 'TeX-command-Show) (defcustom TeX-command-Print "Print" "The name of the Print entry in `TeX-command-Print'." :group 'TeX-command-name :type 'string) (defcustom TeX-command-Queue "Queue" "The name of the Queue entry in `TeX-command-Queue'." :group 'TeX-command-name :type 'string) (defvar TeX-trailer-start nil "Regular expression delimiting start of trailer in a TeX file.") (make-variable-buffer-local 'TeX-trailer-start) (defvar TeX-header-end nil "Regular expression delimiting end of header in a TeX file.") (make-variable-buffer-local 'TeX-header-end) (defvar TeX-command-default nil "The default command for `TeX-command' in the current major mode.") (make-variable-buffer-local 'TeX-command-default) (put 'TeX-command-default 'safe-local-variable 'stringp) (defvar TeX-clean-default-intermediate-suffixes '("\\.aux" "\\.bbl" "\\.blg" "\\.brf" "\\.fot" "\\.glo" "\\.gls" "\\.idx" "\\.ilg" "\\.ind" "\\.lof" "\\.log" "\\.lot" "\\.nav" "\\.out" "\\.snm" "\\.toc" "\\.url" "\\.synctex\\.gz" "\\.bcf" "\\.run\\.xml") "List of regexps matching suffixes of files to be cleaned. Used as a default in TeX, LaTeX and docTeX mode.") (defvar TeX-clean-default-output-suffixes '("\\.dvi" "\\.pdf" "\\.ps" "\\.xdv") "List of regexps matching suffixes of files to be cleaned. Used as a default in TeX, LaTeX and docTeX mode.") (defcustom TeX-clean-confirm t "If non-nil, ask before deleting files." :type 'boolean :group 'TeX-command) (autoload 'dired-mark-pop-up "dired") (defun TeX-clean (&optional arg) "Delete generated files associated with current master and region files. If prefix ARG is non-nil, not only remove intermediate but also output files." (interactive "P") (let* ((mode-prefix (TeX-mode-prefix)) (suffixes (append (symbol-value (intern (concat mode-prefix "-clean-intermediate-suffixes"))) (when arg (symbol-value (intern (concat mode-prefix "-clean-output-suffixes")))))) (master (TeX-active-master)) (master-dir (file-name-directory master)) (regexp (concat "\\(" (regexp-quote (file-name-nondirectory master)) "\\|" (TeX-region-file nil t) "\\)" "\\(" (mapconcat 'identity suffixes "\\|") "\\)\\'" "\\|" (TeX-region-file t t))) (files (when regexp (directory-files (or master-dir ".") nil regexp)))) (if files (when (or (not TeX-clean-confirm) (condition-case nil (dired-mark-pop-up " *Deletions*" 'delete (if (> (length files) 1) files (cons t files)) 'y-or-n-p "Delete files? ") (wrong-type-argument ; e.g. with Emacs 21 (y-or-n-p (format "Delete %S? " (car files)))))) (dolist (file files) (delete-file (concat master-dir file)))) (message "No files to be deleted")))) ;;; Master File (defcustom TeX-master t "*The master file associated with the current buffer. If the file being edited is actually included from another file, you can tell AUCTeX the name of the master file by setting this variable. If there are multiple levels of nesting, specify the top level file. If this variable is nil, AUCTeX will query you for the name. If the variable is t, AUCTeX will assume the file is a master file itself. If the variable is 'shared, AUCTeX will query for the name, but not change the file. If the variable is 'dwim, AUCTeX will try to avoid querying by attempting to `do what I mean'; and then change the file. It is suggested that you use the File Variables (see the info node in the Emacs manual) to set this variable permanently for each file." :group 'TeX-command :group 'TeX-parse :type '(choice (const :tag "Query" nil) (const :tag "This file" t) (const :tag "Shared" shared) (const :tag "Dwim" dwim) (string :format "%v"))) (make-variable-buffer-local 'TeX-master) (put 'TeX-master 'safe-local-variable '(lambda (x) (or (stringp x) (member x (quote (t nil shared dwim)))))) (defcustom TeX-one-master "\\.\\(texi?\\|dtx\\)$" "*Regular expression matching ordinary TeX files. You should set this variable to match the name of all files, where automatically adding a file variable with the name of the master file is a good idea. When AUCTeX adds the name of the master file as a file variable, it does not need to ask next time you edit the file. If you dislike AUCTeX automatically modifying your files, you can set this variable to \"\"." :group 'TeX-command :type 'regexp) (defvar TeX-convert-master t "*If not nil, automatically convert ``Master:'' lines to file variables. This will be done when AUCTeX first try to use the master file.") ;; Can be let-bound temporarily in order to inhibit the master file question ;; by using its value instead in case `TeX-master' is nil or 'shared. (defvar TeX-transient-master nil) (defun TeX-dwim-master () "Find a likely `TeX-master'." (let ((dir default-directory)) (dolist (buf (buffer-list)) (when (with-current-buffer buf (and (equal dir default-directory) (stringp TeX-master))) (return (with-current-buffer buf TeX-master)))))) (defun TeX-master-file-ask () "Ask for master file, set `TeX-master' and add local variables." (interactive) (if (TeX-local-master-p) (error "Master file already set") (let* ((default (TeX-dwim-master)) (name (or (and (eq 'dwim TeX-master) default) (condition-case nil (read-file-name (format "Master file: (default %s) " (or default "this file")) nil default) (quit ""))))) (cond ((string= name "") (setq TeX-master t)) ((string= name default) (setq TeX-master default) (TeX-add-local-master)) ((or ;; Default `read-file-name' proposes and buffer visits a file. (string= (expand-file-name name) (buffer-file-name)) ;; Default of `read-file-name' and buffer does not visit a file. (string= name default-directory) ;; User typed in an empty minibuffer. (string= name "")) (setq TeX-master t) (TeX-add-local-master)) (t (setq TeX-master (TeX-strip-extension (file-relative-name name) (list TeX-default-extension) 'path)) (TeX-add-local-master)))))) (defun TeX-master-file (&optional extension nondirectory ask) "Set and return the name of the master file for the current document. If optional argument EXTENSION is non-nil, add that file extension to the name. Special value t means use `TeX-default-extension'. If optional second argument NONDIRECTORY is non-nil, do not include the directory. If optional third argument ASK is non-nil, ask the user for the name of master file if it cannot be determined otherwise. Currently it will check for the presence of a ``Master:'' line in the beginning of the file, but that feature will be phased out." (interactive) (if (eq extension t) (setq extension TeX-default-extension)) (let ((my-name (if (buffer-file-name) (TeX-strip-extension nil (list TeX-default-extension) t) ""))) (save-excursion (save-restriction (widen) (goto-char (point-min)) (cond ((and TeX-transient-master (or (not TeX-master) (eq TeX-master 'shared))) (setq TeX-master TeX-transient-master)) ;; Special value 't means it is own master (a free file). ((equal TeX-master my-name) (setq TeX-master t)) ;; For files shared between many documents. ((and (eq 'shared TeX-master) ask) (setq TeX-master (let* ((default (TeX-dwim-master)) (name (read-file-name (format "Master file: (default %s) " (or default "this file")) nil default))) (cond ((string= name default) default) ((or ;; Default `read-file-name' proposes and ;; buffer visits a file. (string= (expand-file-name name) (buffer-file-name)) ;; Default of `read-file-name' and ;; buffer does not visit a file. (string= name default-directory) ;; User typed in an empty minibuffer. (string= name "")) t) (t (TeX-strip-extension name (list TeX-default-extension) 'path)))))) ;; We might already know the name. ((or (eq TeX-master t) (stringp TeX-master)) TeX-master) ;; Support the ``Master:'' line (under protest!) ((re-search-forward "^%% *[Mm]aster:?[ \t]*\\([^ \t\n]+\\)" 500 t) (setq TeX-master (TeX-strip-extension (TeX-match-buffer 1) (list TeX-default-extension))) (if TeX-convert-master (progn (beginning-of-line) (kill-line 1) (TeX-add-local-master)))) ;; Ask the user (but add it as a local variable). (ask (TeX-master-file-ask))))) (let ((name (if (stringp TeX-master) TeX-master my-name))) (if (TeX-match-extension name) ;; If it already has an extension... (if (equal extension TeX-default-extension) ;; Use instead of the default extension (setq extension nil) ;; Otherwise drop it. (setq name (TeX-strip-extension name)))) ;; Remove directory if needed. (if nondirectory (setq name (file-name-nondirectory name))) (if extension (concat name "." extension) name)))) (defun TeX-master-directory () "Directory of master file." (file-name-as-directory (abbreviate-file-name (substitute-in-file-name (expand-file-name (let ((dir (file-name-directory (TeX-master-file)))) (if dir (directory-file-name dir) ".")) (and buffer-file-name (file-name-directory buffer-file-name))))))) (defun TeX-add-local-master () "Add local variable for `TeX-master'." (when (and (buffer-file-name) (string-match TeX-one-master (file-name-nondirectory (buffer-file-name))) (not buffer-read-only)) (goto-char (point-max)) (if (re-search-backward (concat "^\\([^\n]+\\)Local " "Variables:") (- (point-max) 3000) t) (let ((prefix (TeX-match-buffer 1))) (re-search-forward (regexp-quote (concat prefix "End:"))) (beginning-of-line 1) (insert prefix "TeX-master: " (prin1-to-string TeX-master) "\n")) (let ((comment-prefix (cond ((eq major-mode 'texinfo-mode) "@c ") ((eq major-mode 'doctex-mode) "% ") (t "%%% "))) (mode (concat (and (boundp 'japanese-TeX-mode) japanese-TeX-mode "japanese-") (substring (symbol-name major-mode) 0 -5)))) (newline) (when (eq major-mode 'doctex-mode) (insert comment-prefix TeX-esc "endinput\n")) (insert comment-prefix "Local " "Variables: \n" comment-prefix "mode: " mode "\n" comment-prefix "TeX-master: " (prin1-to-string TeX-master) "\n" comment-prefix "End: \n"))))) (defun TeX-local-master-p () "Return non-nil if there is a `TeX-master' entry in local variables spec. Return nil otherwise." (save-excursion ;; XXX: Checking -*- line necessary as well? (goto-char (point-max)) (search-backward "\n\^L" (max (- (point-max) 3000) (point-min)) 'move) (re-search-forward "^%+ *TeX-master:" nil t))) ;;; Style Paths (defcustom TeX-style-global (expand-file-name "style" TeX-data-directory) "*Directory containing hand generated TeX information. These correspond to TeX macros shared by all users of a site." :group 'TeX-file :type 'directory) (defcustom TeX-auto-local "auto" "*Directory containing automatically generated TeX information. This correspond to TeX macros found in the current directory, and must be relative to that." :group 'TeX-file :type 'string) (defcustom TeX-style-local "style" "*Directory containing hand generated TeX information. These correspond to TeX macros found in the current directory, and must be relative to that." :group 'TeX-file :type 'string) (defun TeX-split-string (regexp string) "Return a list of strings. Given REGEXP the STRING is split into sections which in string was seperated by REGEXP. Examples: (TeX-split-string \"\:\" \"abc:def:ghi\") -> (\"abc\" \"def\" \"ghi\") (TeX-split-string \" +\" \"dvips -Plw -p3 -c4 testfile.dvi\") -> (\"dvips\" \"-Plw\" \"-p3\" \"-c4\" \"testfile.dvi\") If REGEXP is nil, or \"\", an error will occur." (let ((start 0) result match) (while (setq match (string-match regexp string start)) (push (substring string start match) result) (setq start (match-end 0))) (push (substring string start) result) (nreverse result))) (defun TeX-parse-path (env) "Return a list if private TeX directories found in environment variable ENV." (let* ((value (getenv env)) (entries (and value (TeX-split-string (if (string-match ";" value) ";" ":") value))) entry answers) (while entries (setq entry (car entries)) (setq entries (cdr entries)) (setq entry (file-name-as-directory (if (string-match "/?/?\\'" entry) (substring entry 0 (match-beginning 0)) entry))) (or (not (file-name-absolute-p entry)) (member entry (append '("/" "\\") TeX-macro-global)) (setq answers (cons entry answers)))) answers)) (defun TeX-tree-expand (vars program &optional subdirs) "Return directories corresponding to the kpathsea variables VARS. This is done calling `kpsewhich --expand-path' for each variable. PROGRAM is passed as the parameter for --progname. SUBDIRS are subdirectories which are appended to the directories of the TeX trees. Only existing directories are returned." (let (path-list path exit-status input-dir-list) (condition-case nil (dolist (var vars) (setq path (with-output-to-string (setq exit-status (call-process "kpsewhich" nil (list standard-output nil) nil "--progname" program "--expand-path" var)))) (when (zerop exit-status) (add-to-list 'path-list path t))) (error nil)) (dolist (elt path-list) (let ((separators (if (string-match "^[A-Za-z]:" elt) "[\n\r;]" "[\n\r:]"))) (dolist (item (condition-case nil (split-string elt separators t) ;; COMPATIBILITY for XEmacs <= 21.4.15 (error (delete "" (split-string elt separators))))) (if subdirs (dolist (subdir subdirs) (setq path (file-name-as-directory (concat item subdir))) (when (file-exists-p path) (add-to-list 'input-dir-list path t))) (setq path (file-name-as-directory item)) (when (file-exists-p path) (add-to-list 'input-dir-list path t)))))) input-dir-list)) (defun TeX-macro-global () "Return directories containing the site's TeX macro and style files." (or (TeX-tree-expand '("$SYSTEXMF" "$TEXMFLOCAL" "$TEXMFMAIN" "$TEXMFDIST") "latex" '("/tex/" "/bibtex/bst/")) '("/usr/share/texmf/tex/" "/usr/share/texmf/bibtex/bst/"))) (defun TeX-macro-private () "Return directories containing the user's TeX macro and style files." (TeX-tree-expand '("$TEXMFHOME") "latex" '("/tex/" "/bibtex/bst/"))) (defcustom TeX-macro-global (TeX-macro-global) "Directories containing the site's TeX macro and style files." :group 'TeX-file :type '(repeat (directory :format "%v"))) (defcustom TeX-macro-private (or (append (TeX-parse-path "TEXINPUTS") (TeX-parse-path "BIBINPUTS")) (TeX-macro-private)) "Directories where you store your personal TeX macros." :group 'TeX-file :type '(repeat (file :format "%v"))) (defcustom TeX-auto-private (list (expand-file-name TeX-auto-local (or (and (boundp 'user-emacs-directory) (concat user-emacs-directory "auctex/")) "~/.emacs.d/auctex/"))) "List of directories containing automatically generated AUCTeX style files. These correspond to the personal TeX macros." :group 'TeX-file :type '(repeat (file :format "%v"))) (if (stringp TeX-auto-private) ;Backward compatibility (setq TeX-auto-private (list TeX-auto-private))) (defcustom TeX-style-private (list (expand-file-name TeX-style-local (or (and (boundp 'user-emacs-directory) (concat user-emacs-directory "auctex/")) "~/.emacs.d/auctex/"))) "List of directories containing hand-generated AUCTeX style files. These correspond to the personal TeX macros." :group 'TeX-file :type '(repeat (file :format "%v"))) (if (stringp TeX-style-private) ;Backward compatibility (setq TeX-style-private (list TeX-style-private))) (defcustom TeX-style-path (let ((path)) ;; Put directories in an order where the more local files can ;; override the more global ones. (mapcar (lambda (file) (when file (add-to-list 'path file t))) (append (list TeX-auto-global TeX-style-global) TeX-auto-private TeX-style-private (list TeX-auto-local TeX-style-local))) path) "List of directories to search for AUCTeX style files. Per default the list is built from the values of the variables `TeX-auto-global', `TeX-style-global', `TeX-auto-private', `TeX-style-private', `TeX-auto-local', and `TeX-style-local'." :group 'TeX-file :type '(repeat (file :format "%v"))) (defcustom TeX-check-path (append (list ".") TeX-macro-private TeX-macro-global) "Directory path to search for dependencies. If nil, just check the current file. Used when checking if any files have changed." :group 'TeX-file :type '(repeat (file :format "%v"))) ;;; Style Files (defvar TeX-style-hook-list nil "List of TeX style hooks currently loaded. Each entry is a list where the first element is the name of the style, and the remaining elements are hooks to be run when that style is active.") (defcustom TeX-byte-compile nil "*Not nil means try to byte compile auto files before loading." :group 'TeX-parse :type 'boolean) (defun TeX-load-style (style) "Search for and load each definition for STYLE in `TeX-style-path'." (cond ((assoc style TeX-style-hook-list)) ; We already found it ((string-match "\\`\\(.+[/\\]\\)\\([^/\\]*\\)\\'" style) ;Complex path (let* ((dir (substring style (match-beginning 1) (match-end 1))) (style (substring style (match-beginning 2) (match-end 2))) (master-dir (if (stringp TeX-master) (file-name-directory (file-relative-name TeX-master)) "./")) (TeX-style-path (append (list (expand-file-name TeX-auto-local dir) (expand-file-name TeX-auto-local master-dir) (expand-file-name TeX-style-local dir) (expand-file-name TeX-style-local master-dir)) TeX-style-path))) (TeX-load-style style))) (t ;Relative path ;; Insert empty list to mark the fact that we have searched. (setq TeX-style-hook-list (cons (list style) TeX-style-hook-list)) ;; Now check each element of the path (dolist (name TeX-style-path) (TeX-load-style-file (expand-file-name style name)))))) (defun TeX-load-style-file (file) "Load FILE checking for a Lisp extensions." (let ((el (concat file ".el")) (elc (concat file ".elc"))) (cond ((file-newer-than-file-p el elc) (if (file-readable-p el) (if (and TeX-byte-compile (file-writable-p elc) (save-excursion ;; `byte-compile-file' switches buffer in Emacs 20.3. (byte-compile-file el)) (file-readable-p elc)) (load-file elc) (load-file el)))) ((file-readable-p elc) (load-file elc)) ((file-readable-p el) (load-file el))))) (defun TeX-add-style-hook (style hook) "Give STYLE yet another HOOK to run." (let ((entry (assoc style TeX-style-hook-list))) (cond ((null entry) ;; New style, add entry. (setq TeX-style-hook-list (cons (list style hook) TeX-style-hook-list))) ((member hook entry) ;; Old style, hook already there, do nothing. nil) (t ;; Old style, new hook. (setcdr entry (cons hook (cdr entry))))))) (defun TeX-unload-style (style) "Forget that we once loaded STYLE." (cond ((null (assoc style TeX-style-hook-list))) ((equal (car (car TeX-style-hook-list)) style) (setq TeX-style-hook-list (cdr TeX-style-hook-list))) (t (let ((entry TeX-style-hook-list)) (while (not (equal (car (car (cdr entry))) style)) (setq entry (cdr entry))) (setcdr entry (cdr (cdr entry))))))) (defcustom TeX-virgin-style (if (and TeX-auto-global (file-directory-p TeX-auto-global)) "virtex" "NoVirtexSymbols") "Style all documents use." :group 'TeX-parse :type 'string) (defvar TeX-active-styles nil "List of styles currently active in the document.") (make-variable-buffer-local 'TeX-active-styles) (defun TeX-run-style-hooks (&rest styles) "Run the TeX style hooks STYLES." (mapcar (lambda (style) ;; Avoid recursion. (unless (TeX-member style TeX-active-styles 'string-equal) (setq TeX-active-styles (cons style TeX-active-styles)) (TeX-load-style style) (let ((default-directory default-directory)) ;; Complex path. (when (string-match "\\`\\(.+[/\\]\\)\\([^/\\]*\\)\\'" style) ;; Set `default-directory' to directory of master ;; file since style files not stored in the fixed ;; style directories are usually located there. (setq default-directory (save-match-data (TeX-master-directory)) style (substring style (match-beginning 2) (match-end 2)))) (mapcar 'funcall (cdr-safe (assoc style TeX-style-hook-list)))))) styles)) (defcustom TeX-parse-self nil "Parse file after loading it if no style hook is found for it." :group 'TeX-parse :type 'boolean) (defvar TeX-style-hook-applied-p nil "Nil, unless the style specific hooks have been applied.") (make-variable-buffer-local 'TeX-style-hook-applied-p) (defvar TeX-update-style-hook nil "Hook run as soon as style specific hooks were applied.") (defun TeX-update-style (&optional force) "Run style specific hooks for the current document. Only do this if it has not been done before, or if optional argument FORCE is not nil." (unless (or (and (boundp 'TeX-auto-update) (eq TeX-auto-update 'BibTeX)) ; Not a real TeX buffer (and (not force) TeX-style-hook-applied-p)) (setq TeX-style-hook-applied-p t) (message "Applying style hooks...") (TeX-run-style-hooks (TeX-strip-extension nil nil t)) ;; Run parent style hooks if it has a single parent that isn't itself. (if (or (not (memq TeX-master '(nil t))) (and (buffer-file-name) (string-match TeX-one-master (file-name-nondirectory (buffer-file-name))))) (TeX-run-style-hooks (TeX-master-file))) (if (and TeX-parse-self (null (cdr-safe (assoc (TeX-strip-extension nil nil t) TeX-style-hook-list)))) (TeX-auto-apply)) (run-hooks 'TeX-update-style-hook) (message "Applying style hooks... done"))) (defvar TeX-remove-style-hook nil "List of hooks to call when we remove the style specific information.") (make-variable-buffer-local 'TeX-remove-style-hook) (defun TeX-remove-style () "Remove all style specific information." (setq TeX-style-hook-applied-p nil) (run-hooks 'TeX-remove-style-hook) (setq TeX-active-styles (list TeX-virgin-style))) (defun TeX-style-list () "Return a list of all styles (subfiles) used by the current document." (TeX-update-style) TeX-active-styles) ;;; Special Characters (defvar TeX-esc "\\" "The TeX escape character.") (make-variable-buffer-local 'TeX-esc) (defvar TeX-grop "{" "The TeX group opening character.") (make-variable-buffer-local 'TeX-grop) (defvar TeX-grcl "}" "The TeX group closing character.") (make-variable-buffer-local 'TeX-grcl) ;;; Symbols ;; Must be before keymaps. (defgroup TeX-macro nil "Support for TeX macros in AUCTeX." :prefix "TeX-" :group 'AUCTeX) (defcustom TeX-complete-word 'ispell-complete-word "*Function to call for completing non-macros in `tex-mode'." :group 'TeX-macro) (defvar TeX-complete-list nil "List of ways to complete the preceding text. Each entry is a list with the following elements: 0. Regexp matching the preceding text. 1. A number indicating the subgroup in the regexp containing the text. 2. A function returning an alist of possible completions. 3. Text to append after a succesful completion. Or alternatively: 0. Regexp matching the preceding text. 1. Function to do the actual completion.") (defun TeX-complete-symbol () "Perform completion on TeX/LaTeX symbol preceding point." (interactive "*") (let ((list TeX-complete-list) entry) (while list (setq entry (car list) list (cdr list)) (if (TeX-looking-at-backward (car entry) 250) (setq list nil))) (if (numberp (nth 1 entry)) (let* ((sub (nth 1 entry)) (close (nth 3 entry)) (begin (match-beginning sub)) (end (match-end sub)) (pattern (TeX-match-buffer 0)) (symbol (buffer-substring begin end)) (list (funcall (nth 2 entry))) (completion (try-completion symbol list)) (buf-name "*Completions*")) (cond ((eq completion t) (and close (not (looking-at (regexp-quote close))) (insert close)) (let ((window (get-buffer-window buf-name))) (when window (delete-window window)))) ((null completion) (error "Can't find completion for \"%s\"" pattern)) ((not (string-equal symbol completion)) (delete-region begin end) (insert completion) (and close (eq (try-completion completion list) t) (not (looking-at (regexp-quote close))) (insert close)) (let ((window (get-buffer-window buf-name))) (when window (delete-window window)))) (t (if (fboundp 'completion-in-region) (completion-in-region begin end (all-completions symbol list nil)) (message "Making completion list...") (let ((list (all-completions symbol list nil))) (with-output-to-temp-buffer buf-name (display-completion-list list))) (set-window-dedicated-p (get-buffer-window buf-name) 'soft) (message "Making completion list...done"))))) (funcall (nth 1 entry))))) (defcustom TeX-default-macro "ref" "*The default macro when creating new ones with `TeX-insert-macro'." :group 'TeX-macro :type 'string) (make-variable-buffer-local 'TeX-default-macro) (defcustom TeX-insert-braces t "*If non-nil, append a empty pair of braces after inserting a macro." :group 'TeX-macro :type 'boolean) (defcustom TeX-insert-macro-default-style 'show-optional-args "Specifies whether `TeX-insert-macro' will ask for all optional arguments. If set to the symbol `show-optional-args', `TeX-insert-macro' asks for optional arguments of TeX marcos. If set to `mandatory-args-only', `TeX-insert-macro' asks only for mandatory argument. When `TeX-insert-macro' is called with \\[universal-argument], it's the other way round. Note that for some macros, there are special mechanisms, see e.g. `LaTeX-includegraphics-options-alist'." :group 'TeX-macro :type '(choice (const mandatory-args-only) (const show-optional-args))) (defvar TeX-arg-opening-brace nil "String used as an opening brace for argument insertion. The variable will be temporarily let-bound with the necessary value.") (defvar TeX-arg-closing-brace nil "String used as a closing brace for argument insertion. The variable will be temporarily let-bound with the necessary value.") (defvar TeX-after-insert-macro-hook nil "A hook run after `TeX-insert-macro'.") (defvar TeX-macro-history nil) (defun TeX-insert-macro (symbol) "Insert TeX macro SYMBOL with completion. AUCTeX knows of some macros and may query for extra arguments, depending on the value of `TeX-insert-macro-default-style' and whether `TeX-insert-macro' is called with \\[universal-argument]." ;; When called with a prefix (C-u), only ask for mandatory arguments, ;; i.e. all optional arguments are skipped. See `TeX-parse-arguments' for ;; details. Note that this behavior may be changed in favor of a more ;; flexible solution in the future, therefore we don't document it at the ;; moment. (interactive (list (completing-read (concat "Macro (default " TeX-default-macro "): " TeX-esc) (TeX-symbol-list) nil nil nil 'TeX-macro-history))) (cond ((string-equal symbol "") (setq symbol TeX-default-macro)) ((interactive-p) (setq TeX-default-macro symbol))) (TeX-parse-macro symbol (cdr-safe (assoc symbol (TeX-symbol-list)))) (run-hooks 'TeX-after-insert-macro-hook)) (defvar TeX-electric-macro-map (let ((map (make-sparse-keymap))) (set-keymap-parent map minibuffer-local-completion-map) (define-key map " " 'minibuffer-complete-and-exit) map)) (defun TeX-electric-macro () "Insert TeX macro with completion. AUCTeX knows of some macros, and may query for extra arguments. Space will complete and exit." (interactive) (cond ((eq (preceding-char) ?\\) (call-interactively 'self-insert-command)) ((eq (preceding-char) ?.) (let ((TeX-default-macro " ") (minibuffer-local-completion-map TeX-electric-macro-map)) (call-interactively 'TeX-insert-macro))) (t (let ((minibuffer-local-completion-map TeX-electric-macro-map)) (call-interactively 'TeX-insert-macro))))) (defun TeX-parse-macro (symbol args) "How to parse TeX macros which takes one or more arguments. First argument SYMBOL is the name of the macro. If called with no additional arguments, insert macro with point inside braces. Otherwise, each argument of this function should match an argument to the TeX macro. What is done depend on the type of ARGS: string: Use the string as a prompt to prompt for the argument. number: Insert that many braces, leave point inside the first. nil: Insert empty braces. t: Insert empty braces, leave point between the braces. other symbols: Call the symbol as a function. You can define your own hook, or use one of the predefined argument hooks. If you add new hooks, you can assume that point is placed directly after the previous argument, or after the macro name if this is the first argument. Please leave point located after the argument you are inserting. If you want point to be located somewhere else after all hooks have been processed, set the value of `exit-mark'. It will point nowhere, until the argument hook set it. By convention, these hooks all start with `TeX-arg-'. list: If the car is a string, insert it as a prompt and the next element as initial input. Otherwise, call the car of the list with the remaining elements as arguments. vector: Optional argument. If it has more than one element, parse it as a list, otherwise parse the only element as above. Use square brackets instead of curly braces, and is not inserted on empty user input." (if (and (TeX-active-mark) (> (point) (mark))) (exchange-point-and-mark)) (insert TeX-esc symbol) (let ((exit-mark (make-marker)) (position (point))) (TeX-parse-arguments args) (cond ((marker-position exit-mark) (goto-char (marker-position exit-mark)) (set-marker exit-mark nil)) ((and TeX-insert-braces ;; Do not add braces if the argument is 0 or -1. (not (and (= (safe-length args) 1) (numberp (car args)) (<= (car args) 0))) (equal position (point)) (string-match "[a-zA-Z]+" symbol) (not (texmathp))) (insert TeX-grop) (if (TeX-active-mark) (progn (exchange-point-and-mark) (insert TeX-grcl)) (insert TeX-grcl) (backward-char)))))) (defun TeX-arg-string (optional &optional prompt initial-input) "Prompt for a string. If OPTIONAL is not nil then the PROMPT will start with ``(Optional) ''. INITIAL-INPUT is a string to insert before reading input." (TeX-argument-insert (if (and (not optional) (TeX-active-mark)) (let ((TeX-argument (buffer-substring (point) (mark)))) (delete-region (point) (mark)) TeX-argument) (read-string (TeX-argument-prompt optional prompt "Text") initial-input)) optional)) (defun TeX-parse-arguments (args) "Parse TeX macro arguments ARGS. See `TeX-parse-macro' for details." (let ((last-optional-rejected nil) skip-opt) ;; Maybe get rid of all optional arguments. See `TeX-insert-macro' for ;; more comments. See `TeX-insert-macro-default-style'. (when (or (and (eq TeX-insert-macro-default-style 'show-optional-args) (equal current-prefix-arg '(4))) (and (eq TeX-insert-macro-default-style 'mandatory-args-only) (null (equal current-prefix-arg '(4))))) (while (vectorp (car args)) (setq args (cdr args)))) (while args (if (vectorp (car args)) (unless last-optional-rejected (let ((TeX-arg-opening-brace LaTeX-optop) (TeX-arg-closing-brace LaTeX-optcl)) (TeX-parse-argument t (if (equal (length (car args)) 1) (aref (car args) 0) (append (car args) nil))))) (let ((TeX-arg-opening-brace TeX-grop) (TeX-arg-closing-brace TeX-grcl)) (setq last-optional-rejected nil) (TeX-parse-argument nil (car args)))) (setq args (cdr args))))) (defun TeX-parse-argument (optional arg) "Depending on OPTIONAL, insert TeX macro argument ARG. If OPTIONAL is set, only insert if there is anything to insert, and then use square brackets instead of curly braces. See `TeX-parse-macro' for details." (let (insert-flag) (cond ((stringp arg) (TeX-arg-string optional arg) (setq insert-flag t)) ((numberp arg) (cond ((< arg 0) (when (TeX-active-mark) ;; Put both the macro and the marked region in a TeX group. (let ((beg (min (point) (mark))) (end (set-marker (make-marker) (max (point) (mark))))) (insert " ") (goto-char beg) (skip-chars-backward "^\\\\") (backward-char) (insert TeX-arg-opening-brace) (goto-char (marker-position end)) (insert TeX-arg-closing-brace) (setq insert-flag t)))) ((= arg 0)) ; nop for clarity ((> arg 0) (TeX-parse-argument optional t) (while (> arg 1) (TeX-parse-argument optional nil) (setq arg (- arg 1)))))) ((null arg) (insert TeX-arg-opening-brace) (when (and (not optional) (TeX-active-mark)) (exchange-point-and-mark)) (insert TeX-arg-closing-brace) (setq insert-flag t)) ((eq arg t) (insert TeX-arg-opening-brace) (if (and (not optional) (TeX-active-mark)) (progn (exchange-point-and-mark)) (set-marker exit-mark (point))) (insert TeX-arg-closing-brace) (setq insert-flag t)) ((symbolp arg) (funcall arg optional)) ((listp arg) (let ((head (car arg)) (tail (cdr arg))) (cond ((stringp head) (apply 'TeX-arg-string optional arg)) ((symbolp head) (apply head optional tail)) (t (error "Unknown list argument type %s" (prin1-to-string head)))))) (t (error "Unknown argument type %s" (prin1-to-string arg)))) (when (and insert-flag (not optional) (TeX-active-mark)) (TeX-deactivate-mark)))) (defun TeX-argument-insert (name optional &optional prefix) "Insert NAME surrounded by curly braces. If OPTIONAL, only insert it if not empty, and then use square brackets. If PREFIX is given, insert it before NAME." (if (and optional (string-equal name "")) (setq last-optional-rejected t) (insert TeX-arg-opening-brace) (if prefix (insert prefix)) (if (and (string-equal name "") (null (marker-position exit-mark))) (set-marker exit-mark (point)) (insert name)) (insert TeX-arg-closing-brace))) (defun TeX-argument-prompt (optional prompt default &optional complete) "Return a argument prompt. If OPTIONAL is not nil then the prompt will start with ``(Optional) ''. PROMPT will be used if not nil, otherwise use DEFAULT. Unless optional argument COMPLETE is non-nil, ``: '' will be appended." (concat (if optional "(Optional) " "") (if prompt prompt default) (if complete "" ": "))) (defun TeX-string-divide-number-unit (string) "Divide number and unit in STRING. Return the number as car and unit as cdr." (if (string-match "[0-9]*\\.?[0-9]+" string) (list (substring string 0 (string-match "[^.0-9]" string)) (substring string (if (string-match "[^.0-9]" string) (string-match "[^.0-9]" string) (length string)))) (list "" string))) (defcustom TeX-default-unit-for-image "cm" "Default unit when prompting for an image size." :group 'TeX-macro :type '(choice (const "cm") (const "in") (const "\\linewidth") (string :tag "Other"))) (defun TeX-arg-maybe (symbol list form) "Evaluates FORM, if SYMBOL is an element of LIST." (when (memq symbol list) (eval form))) (defun TeX-arg-free (optional &rest args) "Parse its arguments but use no braces when they are inserted." (let ((TeX-arg-opening-brace "") (TeX-arg-closing-brace "")) (if (equal (length args) 1) (TeX-parse-argument optional (car args)) (TeX-parse-argument optional args)))) (defun TeX-arg-literal (optional &rest args) "Insert its arguments ARGS into the buffer. Used for specifying extra syntax for a macro." ;; FIXME: What is the purpose of OPTIONAL here? -- rs (apply 'insert args)) ;;; Font Locking (defcustom TeX-install-font-lock 'font-latex-setup "Function to call to install font lock support. Choose `ignore' if you don't want AUCTeX to install support for font locking." :group 'TeX-misc :type '(radio (function-item font-latex-setup) (function-item tex-font-setup) (function-item ignore) (function :tag "Other"))) ;;; The Mode (defvar TeX-format-list '(("JLATEX" japanese-latex-mode "\\\\\\(documentstyle\\|documentclass\\)[^%\n]*{\\(j[s-]?\\|t\\)\ \\(article\\|report\\|book\\|slides\\)") ("JTEX" japanese-plain-tex-mode "-- string likely in Japanese TeX --") ("AMSTEX" ams-tex-mode "\\\\document\\b") ("CONTEXT" context-mode "\\\\\\(start\\(text\\|tekst\\|proje[ck]t\\|proiect\\|\ produ[ck]t\\|produs\\|environment\\|omgeving\\|umgebung\\|prostredi\\|mediu\\|\ component\\|onderdeel\\|komponent[ea]\\|componenta\\)\ \\|inizia\\(testo\\|progetto\\|prodotto\\|ambiente\\|componente\\)\ \\)\\|%.*?interface=") ("LATEX" latex-mode "\\\\\\(begin\\|\\(?:sub\\)\\{0,2\\}section\\|chapter\\|documentstyle\\|\ documentclass\\)\\b") ("TEX" plain-tex-mode ".")) "*List of format packages to consider when choosing a TeX mode. A list with an entry for each format package available at the site. Each entry is a list with three elements. 1. The name of the format package. 2. The name of the major mode. 3. A regexp typically matched in the beginning of the file. When entering `tex-mode', each regexp is tried in turn in order to find the major mode to be used.") (defcustom TeX-default-mode 'latex-mode "*Mode to enter for a new file when it can't be determined otherwise." :group 'TeX-misc :type '(radio (function-item latex-mode) (function-item plain-tex-mode) (function :tag "Other"))) (defcustom TeX-force-default-mode nil "*If set to nil, try to infer the mode of the file from its content." :group 'TeX-misc :type 'boolean) ;;;###autoload (defun TeX-tex-mode () "Major mode in AUCTeX for editing TeX or LaTeX files. Tries to guess whether this file is for plain TeX or LaTeX. The algorithm is as follows: 1) if the file is empty or `TeX-force-default-mode' is not set to nil, `TeX-default-mode' is chosen 2) If \\documentstyle or \\begin{, \\section{, \\part{ or \\chapter{ is found, `latex-mode' is selected. 3) Otherwise, use `plain-tex-mode'" (interactive) (funcall (if (or (equal (buffer-size) 0) TeX-force-default-mode) TeX-default-mode (save-excursion (goto-char (point-min)) (let ((comment-start-skip ;Used by TeX-in-comment (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+ *\\)")) (entry TeX-format-list) answer) (while (and entry (not answer)) (if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 (car entry)))) (setq entry (cdr entry)))) (if answer answer TeX-default-mode)))))) (defun VirTeX-common-initialization () "Perform basic initialization." (kill-all-local-variables) (setq TeX-mode-p t) (setq TeX-output-extension (if TeX-PDF-mode "pdf" "dvi")) (setq indent-tabs-mode nil) ;; Ispell support (make-local-variable 'ispell-parser) (setq ispell-parser 'tex) (make-local-variable 'ispell-tex-p) (setq ispell-tex-p t) ;; Redefine some standard variables (make-local-variable 'paragraph-start) (make-local-variable 'paragraph-separate) (make-local-variable 'comment-start) (setq comment-start "%") (make-local-variable 'comment-start-skip) (setq comment-start-skip (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+[ \t]*\\)")) (set (make-local-variable 'comment-end-skip) "[ \t]*\\(\\s>\\|\n\\)") (set (make-local-variable 'comment-use-syntax) t) ;; `comment-padding' is defined here as an integer for compatibility ;; reasons because older Emacsen could not cope with a string. (make-local-variable 'comment-padding) (setq comment-padding 1) ;; Removed as commenting in (La)TeX is done with one `%' not two ;; (make-local-variable 'comment-add) ;; (setq comment-add 1) ;default to `%%' in comment-region (make-local-variable 'comment-indent-function) (setq comment-indent-function 'TeX-comment-indent) (make-local-variable 'comment-multi-line) (setq comment-multi-line nil) (make-local-variable 'compile-command) (unless (boundp 'compile-command) (setq compile-command "make")) (make-local-variable 'words-include-escapes) (setq words-include-escapes nil) ;; Make TAB stand out ;; (make-local-variable 'buffer-display-table) ;; (setq buffer-display-table (if standard-display-table ;; (copy-sequence standard-display-table) ;; (make-display-table))) ;; (aset buffer-display-table ?\t (apply 'vector (append "" nil))) ;; Symbol completion. (make-local-variable 'TeX-complete-list) (setq TeX-complete-list (list (list "\\\\\\([a-zA-Z]*\\)" 1 'TeX-symbol-list (if TeX-insert-braces "{}")) (list "" TeX-complete-word))) (funcall TeX-install-font-lock) ;; We want this to be early in the list, so we do not add it before ;; we enter TeX mode the first time. (if (boundp 'local-write-file-hooks) (add-hook 'local-write-file-hooks 'TeX-safe-auto-write) (add-hook 'write-file-hooks 'TeX-safe-auto-write)) (make-local-variable 'TeX-auto-update) (setq TeX-auto-update t) ;; Minor modes (when TeX-source-correlate-mode (TeX-source-correlate-mode 1)) ;; Let `TeX-master-file' be called after a new file was opened and ;; call `TeX-update-style' on any file opened. (The addition to the ;; hook has to be made here because its local value will be deleted ;; by `kill-all-local-variables' if it is added e.g. in `tex-mode'.) ;; ;; `TeX-update-style' has to be called before ;; `global-font-lock-mode', which may also be specified in ;; `find-file-hooks', gets called. Otherwise style-based ;; fontification will break (in XEmacs). That means, `add-hook' ;; cannot be called with a non-nil value of the APPEND argument. ;; ;; `(TeX-master-file nil nil t)' has to be called *before* ;; `TeX-update-style' as the latter will call `TeX-master-file' ;; without the `ask' bit set. (when (and (featurep 'xemacs) (not (emacs-version>= 21 5))) (make-local-hook 'find-file-hooks)) (add-hook 'find-file-hooks (lambda () ;; Check if we are looking at a new or shared file. (when (or (not (file-exists-p (buffer-file-name))) (eq TeX-master 'shared)) (TeX-master-file nil nil t)) (TeX-update-style t)) nil t)) ;;; Hilighting (if (boundp 'hilit-patterns-alist) (let ((latex-patterns (cdr-safe (assq 'latex-mode hilit-patterns-alist))) (plain-tex-patterns (cdr-safe (assq 'plain-tex-mode hilit-patterns-alist)))) (if (and latex-patterns plain-tex-patterns) (setq hilit-patterns-alist (append (list (cons 'ams-tex-mode plain-tex-patterns)) hilit-patterns-alist))))) ;;; Parsing (defgroup TeX-parse nil "Parsing TeX files from AUCTeX." :group 'AUCTeX) (defvar TeX-auto-parser '((styles TeX-auto-file TeX-run-style-hooks))) ;; Alist of parsed information. ;; Each entry is a list with the following elements: ;; ;; 0. Name of information type. ;; 1. Name of temporary variable used when parsing. ;; 2. Name of function to add information to add to #3. ;; 3. Name of variable holding buffer local information. ;; 4. Name of variable indicating that #3 has changed. (defconst TeX-auto-parser-temporary 1) (defconst TeX-auto-parser-add 2) (defconst TeX-auto-parser-local 3) (defconst TeX-auto-parser-change 4) (defun TeX-auto-add-type (name prefix &optional plural) "Add information about NAME to the parser using PREFIX. Optional third argument PLURAL is the plural form of TYPE. By default just add an `s'. This function create a set of variables and functions to maintain a separate type of information in the parser." (let* ((names (or plural (concat name "s"))) (tmp (intern (concat prefix "-auto-" name))) (add (intern (concat prefix "-add-" names))) (local (intern (concat prefix "-" name "-list"))) (change (intern (concat prefix "-" name "-changed")))) (setq TeX-auto-parser (cons (list name tmp add local change) TeX-auto-parser)) (set local nil) (make-variable-buffer-local local) (set change nil) (make-variable-buffer-local change) (fset add `(lambda (&rest entries) ,(concat "Add information about " (upcase name) " to the current buffer. Generated by `TeX-auto-add-type'.") (TeX-auto-add-information ,name entries))) (fset local `(lambda nil ,(concat "List of " names " active in the current buffer. Generated by `TeX-auto-add-type'.") (TeX-auto-list-information ,name))) (add-hook 'TeX-remove-style-hook `(lambda nil (setq ,(symbol-name local) nil))))) (defun TeX-auto-add-information (name entries) "For NAME in `TeX-auto-parser' add ENTRIES." (let* ((entry (assoc name TeX-auto-parser)) (change (nth TeX-auto-parser-change entry)) (change-value (symbol-value change)) (local (nth TeX-auto-parser-local entry)) (local-value (symbol-value local))) (if change-value (set local (cons entries local-value)) (set change t) (set local (list entries local-value))))) (defun TeX-auto-list-information (name) "Return information in `TeX-auto-parser' about NAME." (TeX-update-style) (let* ((entry (assoc name TeX-auto-parser)) (change (nth TeX-auto-parser-change entry)) (change-value (symbol-value change)) (local (nth TeX-auto-parser-local entry))) (if (not change-value) () (set change nil) ;; Sort it (message "Sorting %s..." name) (set local (sort (mapcar 'TeX-listify (apply 'append (symbol-value local))) 'TeX-car-string-lessp)) ;; Make it unique (message "Removing duplicates...") (let ((entry (symbol-value local))) (while (and entry (cdr entry)) (let ((this (car entry)) (next (car (cdr entry)))) (if (not (string-equal (car this) (car next))) (setq entry (cdr entry)) ;; We have two equal symbols. Use the one with ;; most arguments. (if (> (length next) (length this)) (setcdr this (cdr next))) (setcdr entry (cdr (cdr entry))))))) (message "Removing duplicates... done")) (symbol-value local))) (TeX-auto-add-type "symbol" "TeX") (defvar TeX-auto-apply-hook nil "Hook run when a buffer is parsed and the information is applied.") (defun TeX-auto-apply () "Parse and apply TeX information in the current buffer." (TeX-auto-parse) (run-hooks 'TeX-auto-apply-hook) (mapcar 'TeX-auto-apply-entry TeX-auto-parser)) (defun TeX-auto-apply-entry (entry) "Apply the information in ENTRY in `TeX-auto-parser'." (let ((value (symbol-value (nth TeX-auto-parser-temporary entry))) (add (nth TeX-auto-parser-add entry))) (if value (apply add value)))) (defun TeX-safe-auto-write () "Call `TeX-auto-write' safely." (condition-case name (and (boundp 'TeX-auto-update) TeX-auto-update (TeX-auto-write)) (error nil)) ;; Continue with the other write file hooks. nil) (defcustom TeX-auto-save nil "*Automatically save style information when saving the buffer." :group 'TeX-parse :type 'boolean) (defcustom TeX-auto-untabify nil "*Automatically untabify when saving the buffer." :group 'TeX-parse :type 'boolean) (defun TeX-auto-write () "Save all relevant TeX information from the current buffer." (if TeX-auto-untabify (untabify (point-min) (point-max))) (if (and TeX-auto-save TeX-auto-local) (let* ((file (expand-file-name (concat (file-name-as-directory TeX-auto-local) (TeX-strip-extension nil TeX-all-extensions t) ".el") (TeX-master-directory))) (dir (file-name-directory file))) ;; Create auto directory if possible. (if (not (file-exists-p dir)) (condition-case name (make-directory dir) (error nil))) (if (file-writable-p file) (save-excursion (TeX-update-style) (TeX-auto-store file)) (message "Can't write style information."))))) (defcustom TeX-macro-default (car-safe TeX-macro-private) "*Default directory to search for TeX macros." :group 'TeX-file :type 'directory) (defcustom TeX-auto-default (car-safe TeX-auto-private) "*Default directory to place automatically generated TeX information." :group 'TeX-file :type 'directory) (defcustom TeX-ignore-file "\\(^\\|[/\\]\\)\\(\\.\\|\\.\\.\\|RCS\\|SCCS\\|CVS\\|babel\\..*\\)$" "Regular expression matching file names to ignore. These files or directories will not be considered when searching for TeX files in a directory." :group 'TeX-parse :type 'regexp) (defcustom TeX-file-recurse t "Whether to search TeX directories recursively. nil means do not recurse, a positive integer means go that far deep in the directory hierarchy, t means recurse indefinitely." :group 'TeX-parse :type '(choice (const :tag "On" t) (const :tag "Off" nil) (integer :tag "Depth" :value 1))) ;;;###autoload (defun TeX-auto-generate (tex auto) "Generate style file for TEX and store it in AUTO. If TEX is a directory, generate style files for all files in the directory." (interactive (list (setq TeX-macro-default (expand-file-name (read-file-name "TeX file or directory: " TeX-macro-default TeX-macro-default 'confirm))) (setq TeX-auto-default (expand-file-name (read-file-name "AUTO lisp directory: " TeX-auto-default TeX-auto-default 'confirm))))) (cond ((not (file-readable-p tex))) ((string-match TeX-ignore-file tex)) ((file-directory-p tex) (let ((files (directory-files (expand-file-name tex))) (default-directory (file-name-as-directory (expand-file-name tex))) (TeX-file-recurse (cond ((symbolp TeX-file-recurse) TeX-file-recurse) ((zerop TeX-file-recurse) nil) ((1- TeX-file-recurse))))) (mapcar (lambda (file) (if (or TeX-file-recurse (not (file-directory-p file))) (TeX-auto-generate file auto))) files))) ((not (file-newer-than-file-p tex (concat (file-name-as-directory auto) (TeX-strip-extension tex TeX-all-extensions t) ".el")))) ((TeX-match-extension tex (TeX-delete-duplicate-strings (append TeX-file-extensions BibTeX-file-extensions TeX-Biber-file-extensions))) (save-excursion (set-buffer (let (enable-local-eval) (find-file-noselect tex))) (message "Parsing %s..." tex) (TeX-auto-store (concat (file-name-as-directory auto) (TeX-strip-extension tex TeX-all-extensions t) ".el")) (kill-buffer (current-buffer)) (message "Parsing %s... done" tex))))) ;;;###autoload (defun TeX-auto-generate-global () "Create global auto directory for global TeX macro definitions." (interactive) (unless (file-directory-p TeX-auto-global) (make-directory TeX-auto-global)) (let ((TeX-file-extensions '("cls" "sty")) (BibTeX-file-extensions nil) (TeX-Biber-file-extensions nil)) (mapc (lambda (macro) (TeX-auto-generate macro TeX-auto-global)) TeX-macro-global)) (byte-recompile-directory TeX-auto-global 0)) (defun TeX-auto-store (file) "Extract information for AUCTeX from current buffer and store it in FILE." (TeX-auto-parse) (if (member nil (mapcar 'TeX-auto-entry-clear-p TeX-auto-parser)) (let ((style (TeX-strip-extension nil TeX-all-extensions t))) (TeX-unload-style style) (save-excursion (set-buffer (generate-new-buffer file)) (erase-buffer) (insert "(TeX-add-style-hook \"" style "\"\n" " (lambda ()") (mapc (lambda (el) (TeX-auto-insert el style)) TeX-auto-parser) (insert "))\n\n") (write-region (point-min) (point-max) file nil 'silent) (kill-buffer (current-buffer)))) (if (file-exists-p (concat file "c")) (delete-file (concat file "c"))) (if (file-exists-p file) (delete-file file)))) (defun TeX-auto-entry-clear-p (entry) "Check if the temporary for `TeX-auto-parser' entry ENTRY is clear." ;; FIXME: This doc-string isn't clear to me. -- rs (null (symbol-value (nth TeX-auto-parser-temporary entry)))) (defun TeX-auto-insert (entry &optional skip) "Insert code to initialize ENTRY from `TeX-auto-parser'. If SKIP is not-nil, don't insert code for SKIP." (let ((name (symbol-name (nth TeX-auto-parser-add entry))) (list (symbol-value (nth TeX-auto-parser-temporary entry)))) (unless (null list) (insert "\n (" name) (dolist (el list) (cond ((and (stringp el) (not (string= el skip))) (insert "\n ") (insert (prin1-to-string el))) ((not (stringp el)) (insert "\n ") (insert "'" (prin1-to-string el))))) (insert ")")))) (defvar TeX-auto-ignore '("csname" "filedate" "fileversion" "docdate" "next" "labelitemi" "labelitemii" "labelitemiii" "labelitemiv" "labelitemv" "labelenumi" "labelenumii" "labelenumiii" "labelenumiv" "labelenumv" "theenumi" "theenumii" "theenumiii" "theenumiv" "theenumv" "document" "par" "do" "expandafter") "List of symbols to ignore when scanning a TeX style file.") (defcustom TeX-auto-regexp-list 'TeX-auto-full-regexp-list "List of regular expressions used for parsing the current file." :type '(radio (variable-item TeX-auto-empty-regexp-list) (variable-item TeX-auto-full-regexp-list) (variable-item plain-TeX-auto-regexp-list) (variable-item LaTeX-auto-minimal-regexp-list) (variable-item LaTeX-auto-label-regexp-list) (variable-item LaTeX-auto-regexp-list) (symbol :tag "Other") (repeat :tag "Specify" (group (regexp :tag "Match") (sexp :tag "Groups") symbol))) :group 'TeX-parse) (make-variable-buffer-local 'TeX-auto-regexp-list) (defun TeX-auto-add-regexp (regexp) "Add REGEXP to `TeX-auto-regexp-list' if not already a member." (if (symbolp TeX-auto-regexp-list) (setq TeX-auto-regexp-list (symbol-value TeX-auto-regexp-list))) (or (memq regexp TeX-auto-regexp-list) (setq TeX-auto-regexp-list (cons regexp TeX-auto-regexp-list)))) (defvar TeX-auto-empty-regexp-list '(("\\(\\'\\`\\)" 1 ignore)) "List of regular expressions guaranteed to match nothing.") (defvar TeX-token-char (if (featurep 'mule) "\\(?:[a-zA-Z]\\|\\cj\\)" "[a-zA-Z]") "Regexp matching a character in a TeX macro. Please use a shy group if you use a grouping construct, because the functions/variables which use `TeX-token-char' expect not to alter the numbering of any ordinary, non-shy groups.") (defvar plain-TeX-auto-regexp-list (let ((token TeX-token-char)) `((,(concat "\\\\def\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol-check) (,(concat "\\\\let\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol-check) (,(concat "\\\\font\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol) (,(concat "\\\\chardef\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol) (,(concat "\\\\new\\(?:count\\|dimen\\|muskip\\|skip\\)\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol) (,(concat "\\\\newfont{?\\\\\\(" token "+\\)}?") 1 TeX-auto-symbol) (,(concat "\\\\typein\\[\\\\\\(" token "+\\)\\]") 1 TeX-auto-symbol) ("\\\\input +\\(\\.*[^#%\\\\\\.\n\r]+\\)\\(\\.[^#%\\\\\\.\n\r]+\\)?" 1 TeX-auto-file) (,(concat "\\\\mathchardef\\\\\\(" token "+\\)[^a-zA-Z@]") 1 TeX-auto-symbol))) "List of regular expression matching common LaTeX macro definitions.") (defvar TeX-auto-full-regexp-list plain-TeX-auto-regexp-list "Full list of regular expression matching TeX macro definitions.") (defvar TeX-auto-prepare-hook nil "List of hooks to be called before parsing a TeX file.") (defvar TeX-auto-cleanup-hook nil "List of hooks to be called after parsing a TeX file.") (defcustom TeX-auto-parse-length 999999 "Maximal length of TeX file (in characters) that will be parsed." :group 'TeX-parse :type 'integer) (make-variable-buffer-local 'TeX-auto-parse-length) (defcustom TeX-auto-x-parse-length 0 "Maximum length of TeX file that will be parsed additionally. Use `TeX-auto-x-regexp-list' for parsing the region between `TeX-auto-parse-length' and this value." :group 'TeX-parse :type 'integer) (make-variable-buffer-local 'TeX-auto-x-parse-length) (defcustom TeX-auto-x-regexp-list 'LaTeX-auto-label-regexp-list "List of regular expressions used for additional parsing. See `TeX-auto-x-parse-length'." :type '(radio (variable-item TeX-auto-empty-regexp-list) (variable-item TeX-auto-full-regexp-list) (variable-item plain-TeX-auto-regexp-list) (variable-item LaTeX-auto-minimal-regexp-list) (variable-item LaTeX-auto-label-regexp-list) (variable-item LaTeX-auto-regexp-list) (symbol :tag "Other") (repeat :tag "Specify" (group (regexp :tag "Match") (sexp :tag "Groups") symbol))) :group 'TeX-parse) (make-variable-buffer-local 'TeX-auto-x-regexp-list) (defun TeX-regexp-group-count (regexp) "Return number of groups in a REGEXP. This is not foolproof: you should not use something like `[\\(]' for a character range." (let (start (n 0)) (while (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\([^?]" regexp start) (setq start (- (match-end 0) 2) n (1+ n))) n)) (defun TeX-auto-parse-region (regexp-list beg end) "Parse TeX information according to REGEXP-LIST between BEG and END." (if (symbolp regexp-list) (setq regexp-list (and (boundp regexp-list) (symbol-value regexp-list)))) (if regexp-list ;; Extract the information. (let* (groups (count 1) (regexp (concat "\\(" (mapconcat (lambda(x) (push (cons count x) groups) (setq count (+ 1 count (TeX-regexp-group-count (car x)))) (car x)) regexp-list "\\)\\|\\(") "\\)")) syms lst) (setq count 0) (goto-char (if end (min end (point-max)) (point-max))) (while (re-search-backward regexp beg t) (let* ((entry (cdr (TeX-member nil groups (lambda (a b) (match-beginning (car b)))))) (symbol (nth 2 entry)) (match (nth 1 entry))) (unless (TeX-in-comment) (looking-at (nth 0 entry)) (if (fboundp symbol) (funcall symbol match) (puthash (if (listp match) (mapcar #'TeX-match-buffer match) (TeX-match-buffer match)) (setq count (1- count)) (cdr (or (assq symbol syms) (car (push (cons symbol (make-hash-table :test 'equal)) syms))))))))) (setq count 0) (dolist (symbol syms) (setq lst (symbol-value (car symbol))) (while lst (puthash (pop lst) (setq count (1+ count)) (cdr symbol))) (maphash (lambda (key value) (push (cons value key) lst)) (cdr symbol)) (clrhash (cdr symbol)) (set (car symbol) (mapcar #'cdr (sort lst #'car-less-than-car))))))) (defun TeX-auto-parse () "Parse TeX information in current buffer. Call the functions in `TeX-auto-prepare-hook' before parsing, and the functions in `TeX-auto-cleanup-hook' after parsing." (let ((case-fold-search nil)) (mapc 'TeX-auto-clear-entry TeX-auto-parser) (run-hooks 'TeX-auto-prepare-hook) (save-excursion (and (> TeX-auto-x-parse-length TeX-auto-parse-length) (> (point-max) TeX-auto-parse-length) (TeX-auto-parse-region TeX-auto-x-regexp-list TeX-auto-parse-length TeX-auto-x-parse-length)) (TeX-auto-parse-region TeX-auto-regexp-list nil TeX-auto-parse-length)) ;; Cleanup ignored symbols. ;; NOTE: This is O(N M) where it could be O(N log N + M log M) if we ;; sorted the lists first. (while (member (car TeX-auto-symbol) TeX-auto-ignore) (setq TeX-auto-symbol (cdr TeX-auto-symbol))) (let ((list TeX-auto-symbol)) (while (and list (cdr list)) (if (member (car (cdr list)) TeX-auto-ignore) (setcdr list (cdr (cdr list))) (setq list (cdr list))))) (run-hooks 'TeX-auto-cleanup-hook))) (defun TeX-auto-clear-entry (entry) "Set the temporary variable in ENTRY to nil." (set (nth TeX-auto-parser-temporary entry) nil)) (defvar LaTeX-auto-end-symbol nil) (defun TeX-auto-symbol-check (match) "Add MATCH to TeX-auto-symbols. Check for potential LaTeX environments." (let ((symbol (if (listp match) (mapcar 'TeX-match-buffer match) (TeX-match-buffer match)))) (if (and (stringp symbol) (string-match "^end\\(.+\\)$" symbol)) (add-to-list 'LaTeX-auto-end-symbol (substring symbol (match-beginning 1) (match-end 1))) (if (listp symbol) (dolist (elt symbol) (add-to-list 'TeX-auto-symbol elt)) (add-to-list 'TeX-auto-symbol symbol))))) ;;; File Extensions (defgroup TeX-file-extension nil "File extensions recognized by AUCTeX." :group 'TeX-file) (defcustom TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx") "*File extensions used by manually generated TeX files." :group 'TeX-file-extension :type '(repeat (string :format "%v"))) (defcustom TeX-all-extensions '("[^.\n]+") "All possible file extensions." :group 'TeX-file-extension :type '(repeat (regexp :format "%v"))) (defcustom TeX-default-extension "tex" "*Default extension for TeX files." :group 'TeX-file-extension :type 'string) (make-variable-buffer-local 'TeX-default-extension) (defvar TeX-doc-extensions '("dvi" "pdf" "ps" "txt" "html" "dvi.gz" "pdf.gz" "ps.gz" "txt.gz" "html.gz" "dvi.bz2" "pdf.bz2" "ps.bz2" "txt.bz2" "html.bz2") "File extensions of documentation files.") (defcustom docTeX-default-extension "dtx" "*Default extension for docTeX files." :group 'TeX-file-extension :type 'string) (defvar TeX-output-extension nil "Extension of TeX output file. This is either a string or a list with a string as element. Its value is obtained from `TeX-command-output-list'. Access to the value should be through the function `TeX-output-extension'.") (make-variable-buffer-local 'TeX-output-extension) (defcustom TeX-Biber-file-extensions '("bib" "ris" "xml") "Valid file extensions for Biber files." :group 'TeX-file-extension :type '(repeat (string :format "%v"))) (defcustom BibTeX-file-extensions '("bib") "Valid file extensions for BibTeX files." :group 'TeX-file-extension :type '(repeat (string :format "%v"))) (defcustom BibTeX-style-extensions '("bst") "Valid file extensions for BibTeX styles." :group 'TeX-file-extension :type '(repeat (string :format "%v"))) (defun TeX-match-extension (file &optional extensions) "Return non-nil if FILE has one of EXTENSIONS. If EXTENSIONS is not specified or nil, the value of `TeX-file-extensions' is used instead." (if (null extensions) (setq extensions TeX-file-extensions)) (let ((regexp (concat "\\.\\(" (mapconcat 'identity extensions "\\|") "\\)$")) (case-fold-search t)) (string-match regexp file))) (defun TeX-strip-extension (&optional string extensions nodir nostrip) "Return STRING without any trailing extension in EXTENSIONS. If NODIR is t, also remove directory part of STRING. If NODIR is `path', remove directory part of STRING if it is equal to the current directory, `TeX-macro-private' or `TeX-macro-global'. If NOSTRIP is set, do not remove extension after all. STRING defaults to the name of the current buffer. EXTENSIONS defaults to `TeX-file-extensions'." (if (null string) (setq string (or (buffer-file-name) ""))) (if (null extensions) (setq extensions TeX-file-extensions)) (let* ((strip (if (and (not nostrip) (TeX-match-extension string extensions)) (substring string 0 (match-beginning 0)) string)) (dir (expand-file-name (or (file-name-directory strip) "./")))) (if (or (eq nodir t) (string-equal dir (expand-file-name "./")) (member dir TeX-macro-global) (member dir TeX-macro-private)) (file-name-nondirectory strip) strip))) ;;; File Searching (defun TeX-tree-roots () "Return a list of available TeX tree roots." (let (list) (dolist (dir (TeX-tree-expand '("$TEXMFHOME" "$TEXMFMAIN" "$TEXMFLOCAL" "$TEXMFDIST") "latex")) (when (file-readable-p dir) (add-to-list 'list dir t))) list)) (defcustom TeX-tree-roots (TeX-tree-roots) "List of all available TeX tree root directories." :group 'TeX-file :type '(repeat directory)) (defcustom TeX-kpathsea-path-delimiter t "Path delimiter for kpathsea output. t means autodetect, nil means kpathsea is disabled." :group 'TeX-file :type '(choice (const ":") (const ";") (const :tag "Autodetect" t) (const :tag "Off" nil))) ;; We keep this function in addition to `TeX-search-files' because it ;; is faster. Since it does not look further into subdirectories, ;; this comes at the price of finding a smaller number of files. (defun TeX-search-files-kpathsea (var extensions scope nodir strip) "Return a list of files in directories determined by expanding VAR. Only files which match EXTENSIONS are returned. SCOPE defines the scope for the search and can be `local' or `global' besides nil. If NODIR is non-nil, remove directory part. If STRIP is non-nil, remove file extension." (and TeX-kpathsea-path-delimiter (catch 'no-kpathsea (let* ((dirs (if (eq scope 'local) "." (with-output-to-string (unless (zerop (call-process "kpsewhich" nil (list standard-output nil) nil (concat "-expand-path=" var))) (if (eq TeX-kpathsea-path-delimiter t) (throw 'no-kpathsea (setq TeX-kpathsea-path-delimiter nil)) (error "kpsewhich error")))))) result) (when (eq TeX-kpathsea-path-delimiter t) (setq TeX-kpathsea-path-delimiter (if (string-match ";" dirs) ";" ":"))) (unless TeX-kpathsea-path-delimiter (throw 'no-kpathsea nil)) (setq dirs (delete "" (split-string dirs (concat "[\n\r" TeX-kpathsea-path-delimiter "]+")))) (if (eq scope 'global) (delete "." dirs)) (setq extensions (concat "\\." (regexp-opt extensions t) "\\'") result (apply #'append (mapcar (lambda (x) (when (file-readable-p x) (directory-files x (not nodir) extensions))) dirs))) (if strip (mapcar (lambda(x) (if (string-match extensions x) (substring x 0 (match-beginning 0)) x)) result) result))))) (defun TeX-search-files (&optional directories extensions nodir strip) "Return a list of all reachable files in DIRECTORIES ending with EXTENSIONS. If optional argument NODIR is set, remove directory part. If optional argument STRIP is set, remove file extension. If optional argument DIRECTORIES is set, search in those directories. Otherwise, search in all TeX macro directories. If optional argument EXTENSIONS is not set, use `TeX-file-extensions'" (when (null extensions) (setq extensions TeX-file-extensions)) (when (null directories) (setq directories (cons "./" (append TeX-macro-private TeX-macro-global)))) (let (match (TeX-file-recurse (cond ((symbolp TeX-file-recurse) TeX-file-recurse) ((zerop TeX-file-recurse) nil) ((1- TeX-file-recurse))))) (while directories (let* ((directory (car directories)) (content (and directory (file-readable-p directory) (file-directory-p directory) (directory-files directory)))) (setq directories (cdr directories)) (while content (let ((file (concat directory (car content)))) (setq content (cdr content)) (cond ((string-match TeX-ignore-file file)) ((not (file-readable-p file))) ((file-directory-p file) (if TeX-file-recurse (setq match (append match (TeX-search-files (list (file-name-as-directory file)) extensions nodir strip))))) ((TeX-match-extension file extensions) (setq match (cons (TeX-strip-extension file extensions nodir (not strip)) match)))))))) match)) ;; The variables `TeX-macro-private' and `TeX-macro-global' are not ;; used for specifying the directories because the number of ;; directories to be searched should be limited as much as possible ;; and the TeX-macro-* variables are just too broad for this. (defvar TeX-search-files-type-alist '((texinputs "${TEXINPUTS}" ("tex/") TeX-file-extensions) (docs "${TEXDOCS}" ("doc/") TeX-doc-extensions) (graphics "${TEXINPUTS}" ("tex/") LaTeX-includegraphics-extensions) (bibinputs "${BIBINPUTS}" ("bibtex/bib/") BibTeX-file-extensions) (bstinputs "${BSTINPUTS}" ("bibtex/bst/") BibTeX-style-extensions)) "Alist of filetypes with locations and file extensions. Each element of the alist consists of a symbol expressing the filetype, a variable which can be expanded on kpathsea-based systems into the directories where files of the given type reside, a list of absolute directories, relative directories below the root of a TDS-compliant TeX tree or a list of variables with either type of directories as an alternative for non-kpathsea-based systems and a list of extensions to be matched upon a file search. Note that the directories have to end with a directory separator. Each AUCTeX mode should set the variable buffer-locally with a more specific value. See `LateX-search-files-type-alist' for an example.") (defun TeX-search-files-by-type (filetype &optional scope nodir strip) "Return a list of files in TeX's search path with type FILETYPE. FILETYPE is a symbol used to choose the search paths and extensions. See `TeX-search-file-type-alist' for supported symbols. The optional argument SCOPE sets the scope for the search. Besides nil the symbols `local' and `global' are accepted. `local' means to search in the current directory only, `global' in the global directories only and nil in both. If optional argument NODIR is non-nil, remove directory part. If optional argument STRIP is non-nil, remove file extension." (let* ((spec (assq filetype TeX-search-files-type-alist)) (kpse-var (nth 1 spec)) (rawdirs (nth 2 spec)) (exts (nth 3 spec)) expdirs dirs local-files) (setq exts (if (symbolp exts) (eval exts) exts)) (or (TeX-search-files-kpathsea kpse-var exts scope nodir strip) (progn (unless (eq scope 'global) (setq local-files (let ((TeX-file-recurse nil)) (TeX-search-files '("./") exts nodir strip)))) (if (eq scope 'local) local-files (if (null TeX-tree-roots) (error "No TeX trees available; configure `TeX-tree-roots'") ;; Expand variables. (dolist (rawdir rawdirs) (if (symbolp rawdir) (setq expdirs (append expdirs (eval rawdir))) (add-to-list 'expdirs rawdir t))) (delete-dups expdirs) ;; Assumption: Either all paths are absolute or all are relative. (if (file-name-absolute-p (car expdirs)) (setq dirs expdirs) ;; Append relative TDS subdirs to all TeX tree roots. (dolist (root TeX-tree-roots) (dolist (dir expdirs) (add-to-list 'dirs (concat (file-name-as-directory root) dir) t))))) (append local-files (TeX-search-files dirs exts nodir strip))))))) ;;; Utilities ;; ;; Some of these functions has little to do with TeX, but nonetheless we ;; should use the "TeX-" prefix to avoid name clashes. (defun TeX-car-string-lessp (s1 s2) "Compare the cars of S1 and S2 in lexicographic order. Return t if first is less than second in lexicographic order." (string-lessp (car s1) (car s2))) (defun TeX-listify (elt) "Return a newly created list with element ELT. If ELT already is a list, return ELT." (if (listp elt) elt (list elt))) (defun TeX-member (elt list how) "Return the member ELT in LIST. Comparison done with HOW. Return nil if ELT is not a member of LIST." (while (and list (not (funcall how elt (car list)))) (setq list (cdr list))) (car-safe list)) (defun TeX-elt-of-list-member (elts list) "Return non-nil if an element of ELTS is a member of LIST." (catch 'found (dolist (elt elts) (when (member elt list) (throw 'found t))))) (defun TeX-assoc (key list) "Return non-nil if KEY is `equal' to the car of an element of LIST. Like assoc, except case insensitive." (let ((case-fold-search t)) (TeX-member key list (lambda (a b) (string-match (concat "^" (regexp-quote a) "$") (car b)))))) (defun TeX-match-buffer (n) "Return the substring corresponding to the N'th match. See `match-data' for details." (if (match-beginning n) (buffer-substring-no-properties (match-beginning n) (match-end n)) "")) (defun TeX-function-p (arg) "Return non-nil if ARG is callable as a function." (or (and (fboundp 'byte-code-function-p) (byte-code-function-p arg)) (and (listp arg) (eq (car arg) 'lambda)) (and (symbolp arg) (fboundp arg)))) (defun TeX-booleanp (arg) "Return non-nil if ARG is t or nil." (memq arg '(t nil))) (defun TeX-looking-at-backward (regexp &optional limit) "Return non-nil if the text before point matches REGEXP. Optional second argument LIMIT gives a max number of characters to look backward for." (let ((pos (point))) (save-excursion (and (re-search-backward regexp (if limit (max (point-min) (- (point) limit))) t) (eq (match-end 0) pos))))) (defun TeX-current-line () "The current line number." (format "%d" (1+ (TeX-current-offset)))) (defun TeX-current-file-name-master-relative () "Return current filename, relative to master directory." (file-relative-name (buffer-file-name) (TeX-master-directory))) (defun TeX-near-bobp () "Return t iff there's nothing but whitespace between (bob) and (point)." (save-excursion (skip-chars-backward " \t\n") (bobp))) (defun TeX-deactivate-mark () "Deactivate the mark. This is a compatibility function which works both in Emacs and XEmacs. In XEmacs the region is deactivated instead of the mark which is sort of equivalent." (if (featurep 'xemacs) (zmacs-deactivate-region) (deactivate-mark))) (defalias 'TeX-run-mode-hooks (if (fboundp 'run-mode-hooks) 'run-mode-hooks 'run-hooks)) ;;; Syntax Table (defvar TeX-mode-syntax-table (make-syntax-table) "Syntax table used while in TeX mode.") (make-variable-buffer-local 'TeX-mode-syntax-table) (progn ; Define TeX-mode-syntax-table. (modify-syntax-entry (string-to-char TeX-esc) "\\" TeX-mode-syntax-table) (modify-syntax-entry ?\f ">" TeX-mode-syntax-table) (modify-syntax-entry ?\n ">" TeX-mode-syntax-table) (modify-syntax-entry (string-to-char TeX-grop) (concat "(" TeX-grcl) TeX-mode-syntax-table) (modify-syntax-entry (string-to-char TeX-grcl) (concat ")" TeX-grop) TeX-mode-syntax-table) (modify-syntax-entry ?% "<" TeX-mode-syntax-table) (modify-syntax-entry ?\" "." TeX-mode-syntax-table) (modify-syntax-entry ?& "." TeX-mode-syntax-table) (modify-syntax-entry ?_ "." TeX-mode-syntax-table) (modify-syntax-entry ?@ "_" TeX-mode-syntax-table) (modify-syntax-entry ?~ "." TeX-mode-syntax-table) (modify-syntax-entry ?$ "$" TeX-mode-syntax-table) (modify-syntax-entry ?' "w" TeX-mode-syntax-table) (modify-syntax-entry ? "." TeX-mode-syntax-table) (modify-syntax-entry ? "." TeX-mode-syntax-table)) ;;; Menu Support (defvar TeX-command-current 'TeX-command-master "Specify whether to run command on master, buffer or region.") ;; Function used to run external command. (defun TeX-command-select-master () "Determine that the next command will be on the master file." (interactive) (message "Next command will be on the master file.") (setq TeX-command-current 'TeX-command-master)) (defun TeX-command-select-buffer () "Determine that the next command will be on the buffer." (interactive) (message "Next command will be on the buffer") (setq TeX-command-current 'TeX-command-buffer)) (defun TeX-command-select-region () "Determine that the next command will be on the region." (interactive) (message "Next command will be on the region") (setq TeX-command-current 'TeX-command-region)) (defvar TeX-command-force nil) ;; If non-nil, TeX-command-query will return the value of this ;; variable instead of quering the user. (defun TeX-command-menu (name) "Execute `TeX-command-list' NAME from a menu." (let ((TeX-command-force name)) (funcall TeX-command-current))) (defun TeX-command-menu-print (printer command name) "Print on PRINTER using method COMMAND to run NAME." (let ((TeX-printer-default (unless (string= printer "Other") printer)) (TeX-printer-list (and (string= printer "Other") TeX-printer-list)) (TeX-print-command command) (TeX-queue-command command)) (TeX-command-menu name))) (defun TeX-command-menu-printer-entry (entry lookup command name) "Return `TeX-printer-list' ENTRY as a menu item." (vector (nth 0 entry) (list 'TeX-command-menu-print (nth 0 entry) (or (nth lookup entry) command) name))) (defun TeX-command-menu-entry (entry) "Return `TeX-command-list' ENTRY as a menu item." (let ((name (car entry))) (cond ((and (string-equal name TeX-command-Print) TeX-printer-list) (cons TeX-command-Print (mapcar (lambda (entry) (TeX-command-menu-printer-entry entry 1 TeX-print-command name)) (append TeX-printer-list '(("Other")))))) ((and (string-equal name TeX-command-Queue) TeX-printer-list) (cons TeX-command-Queue (mapcar (lambda (entry) (TeX-command-menu-printer-entry entry 2 TeX-queue-command name)) (append TeX-printer-list '(("Other")))))) (t (vconcat `(,name (TeX-command-menu ,name)) (nthcdr 5 entry)))))) (defconst TeX-command-menu-name "Command" "Name to be displayed for the command menu in all modes defined by AUCTeX.") ;;; Keymap (defcustom TeX-electric-escape nil "If non-nil, ``\\'' will be bound to `TeX-electric-macro'." :group 'TeX-macro :type 'boolean) (defcustom TeX-electric-sub-and-superscript nil "If non-nil, insert braces after typing `^' and `_' in math mode." :group 'TeX-macro :type 'boolean) (defcustom TeX-newline-function 'newline "Function to be called upon pressing `RET'." :group 'TeX-indentation :type '(choice (const newline) (const newline-and-indent) (const reindent-then-newline-and-indent) (sexp :tag "Other"))) (defun TeX-insert-backslash (arg) "Either insert typed key ARG times or call `TeX-electric-macro'. `TeX-electric-macro' will be called if `TeX-electric-escape' is non-nil." (interactive "*p") (if TeX-electric-escape (TeX-electric-macro) (self-insert-command arg))) (defun TeX-insert-sub-or-superscript (arg) "Insert typed key ARG times and possibly a pair of braces. Brace insertion is only done if point is in a math construct and `TeX-electric-sub-and-superscript' has a non-nil value." (interactive "*p") (self-insert-command arg) (when (and TeX-electric-sub-and-superscript (texmathp)) (insert (concat TeX-grop TeX-grcl)) (backward-char))) (defun TeX-newline () "Call the function specified by the variable `TeX-newline-function'." (interactive) (funcall TeX-newline-function)) (defvar TeX-mode-map (let ((map (make-sparse-keymap))) ;; Standard ;; (define-key map "\177" 'backward-delete-char-untabify) (define-key map "\C-c}" 'up-list) (define-key map "\C-c#" 'TeX-normal-mode) (define-key map "\C-c\C-n" 'TeX-normal-mode) (define-key map "\C-c?" 'TeX-doc) (define-key map "\C-c\C-i" 'TeX-goto-info-page) (define-key map "\r" 'TeX-newline) ;; From tex.el (define-key map "\"" 'TeX-insert-quote) (define-key map "$" 'TeX-insert-dollar) ;; Removed because LaTeX 2e have a better solution to italic correction. ;; (define-key map "." 'TeX-insert-punctuation) ;; (define-key map "," 'TeX-insert-punctuation) (define-key map "\C-c{" 'TeX-insert-braces) (define-key map "\C-c\C-f" 'TeX-font) (define-key map "\C-c\C-m" 'TeX-insert-macro) (define-key map "\\" 'TeX-insert-backslash) (define-key map "^" 'TeX-insert-sub-or-superscript) (define-key map "_" 'TeX-insert-sub-or-superscript) (define-key map "\e\t" 'TeX-complete-symbol) ;*** Emacs 19 way (define-key map "\C-c'" 'TeX-comment-or-uncomment-paragraph) ;*** Old way (define-key map "\C-c:" 'TeX-comment-or-uncomment-region) ;*** Old way (define-key map "\C-c\"" 'TeX-uncomment) ;*** Old way (define-key map "\C-c;" 'TeX-comment-or-uncomment-region) (define-key map "\C-c%" 'TeX-comment-or-uncomment-paragraph) (define-key map "\C-c\C-t\C-p" 'TeX-PDF-mode) (define-key map "\C-c\C-t\C-i" 'TeX-interactive-mode) (define-key map "\C-c\C-t\C-s" 'TeX-source-correlate-mode) (define-key map "\C-c\C-t\C-r" 'TeX-pin-region) (define-key map "\C-c\C-w" 'TeX-toggle-debug-bad-boxes); to be removed (define-key map "\C-c\C-t\C-b" 'TeX-toggle-debug-bad-boxes) (define-key map "\C-c\C-t\C-w" 'TeX-toggle-debug-warnings) (define-key map "\C-c\C-v" 'TeX-view) ;; From tex-buf.el (define-key map "\C-c\C-d" 'TeX-save-document) (define-key map "\C-c\C-r" 'TeX-command-region) (define-key map "\C-c\C-b" 'TeX-command-buffer) (define-key map "\C-c\C-c" 'TeX-command-master) (define-key map "\C-c\C-k" 'TeX-kill-job) (define-key map "\C-c\C-l" 'TeX-recenter-output-buffer) (define-key map "\C-c^" 'TeX-home-buffer) (define-key map "\C-c`" 'TeX-next-error) ;; Remap bindings of `next-error' (if (featurep 'xemacs) (substitute-key-definition 'next-error 'TeX-next-error map global-map) (define-key map [remap next-error] 'TeX-next-error)) ;; Remap bindings of `previous-error' (if (featurep 'xemacs) (substitute-key-definition 'previous-error 'TeX-previous-error map global-map) (define-key map [remap previous-error] 'TeX-previous-error)) ;; From tex-fold.el (define-key map "\C-c\C-o\C-f" 'TeX-fold-mode) ;; Multifile (define-key map "\C-c_" 'TeX-master-file-ask) ;*** temporary map) "Keymap for common TeX and LaTeX commands.") (defun TeX-mode-specific-command-menu (mode) "Return a Command menu specific to the major MODE." ;; COMPATIBILITY for Emacs < 21 (if (and (not (featurep 'xemacs)) (= emacs-major-version 20)) (cons TeX-command-menu-name (TeX-mode-specific-command-menu-entries mode)) (list TeX-command-menu-name :filter `(lambda (&rest ignored) (TeX-mode-specific-command-menu-entries ',mode)) "Bug."))) (defun TeX-mode-specific-command-menu-entries (mode) "Return the entries for a Command menu specific to the major MODE." (append (TeX-menu-with-help `("Command on" [ "Master File" TeX-command-select-master :keys "C-c C-c" :style radio :selected (eq TeX-command-current 'TeX-command-master) :help "Commands in this menu work on the Master File"] [ "Buffer" TeX-command-select-buffer :keys "C-c C-b" :style radio :selected (eq TeX-command-current 'TeX-command-buffer) :help "Commands in this menu work on the current buffer"] [ "Region" TeX-command-select-region :keys "C-c C-r" :style radio :selected (eq TeX-command-current 'TeX-command-region) :help "Commands in this menu work on the region"] [ "Fix the Region" TeX-pin-region :active (or (if prefix-arg (<= (prefix-numeric-value prefix-arg) 0) (and (boundp 'TeX-command-region-begin) (markerp TeX-command-region-begin))) (TeX-mark-active)) ;;:visible (eq TeX-command-current 'TeX-command-region) :style toggle :selected (and (boundp 'TeX-command-region-begin) (markerp TeX-command-region-begin)) :help "Fix the region for \"Command on Region\""] "-" ["Recenter Output Buffer" TeX-recenter-output-buffer :help "Show the output of current TeX process"] ["Kill Job" TeX-kill-job :help "Kill the current TeX process"] ["Next Error" TeX-next-error :help "Jump to the next error of the last TeX run"] ["Quick View" TeX-view :help "Start a viewer without prompting"] "-" ("TeXing Options" ,@(mapcar (lambda (x) (let ((symbol (car x)) (name (nth 1 x))) `[ ,(format "Use %s engine" name) (TeX-engine-set ',symbol) :style radio :selected (eq TeX-engine ',symbol) :help ,(format "Use %s engine for compiling" name) ])) (TeX-engine-alist)) "-" [ "Generate PDF" TeX-PDF-mode :style toggle :selected TeX-PDF-mode :active (not (eq TeX-engine 'omega)) :help "Use PDFTeX to generate PDF instead of DVI"] [ "Run Interactively" TeX-interactive-mode :style toggle :selected TeX-interactive-mode :keys "C-c C-t C-i" :help "Stop on errors in a TeX run"] [ "Correlate I/O" TeX-source-correlate-mode :style toggle :selected TeX-source-correlate-mode :help "Enable forward and inverse search in the previewer"] ["Debug Bad Boxes" TeX-toggle-debug-bad-boxes :style toggle :selected TeX-debug-bad-boxes :keys "C-c C-t C-b" :help "Make \"Next Error\" show overfull and underfull boxes"] ["Debug Warnings" TeX-toggle-debug-warnings :style toggle :selected TeX-debug-warnings :help "Make \"Next Error\" show warnings"]))) (let ((file 'TeX-command-on-current));; is this actually needed? (TeX-maybe-remove-help (delq nil (mapcar 'TeX-command-menu-entry (TeX-mode-specific-command-list mode))))))) (defun TeX-mode-specific-command-list (mode) "Return the list of commands available in the given MODE." (let ((full-list TeX-command-list) out-list entry) (while (setq entry (pop full-list)) ;; `(nth 4 entry)' may be either an atom in case of which the ;; entry should be present in any mode or a list of major modes. (if (or (atom (nth 4 entry)) (memq mode (nth 4 entry))) (push entry out-list))) (nreverse out-list))) (defvar TeX-fold-menu (TeX-menu-with-help '("Show/Hide" ["Fold Mode" TeX-fold-mode :style toggle :selected (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Toggle folding mode"] "-" ["Hide All in Current Buffer" TeX-fold-buffer :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide all configured TeX constructs in the current buffer"] ["Hide All in Current Region" TeX-fold-region :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide all configured TeX constructs in the marked region"] ["Hide All in Current Paragraph" TeX-fold-paragraph :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide all configured TeX constructs in the paragraph containing point"] ["Hide Current Macro" TeX-fold-macro :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide the macro containing point"] ["Hide Current Environment" TeX-fold-env :visible (not (eq major-mode 'plain-tex-mode)) :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide the environment containing point"] ["Hide Current Comment" TeX-fold-comment :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide the comment containing point"] "-" ["Show All in Current Buffer" TeX-fold-clearout-buffer :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Permanently show all folded content again"] ["Show All in Current Region" TeX-fold-clearout-region :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Permanently show all folded content in marked region"] ["Show All in Current Paragraph" TeX-fold-clearout-paragraph :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Permanently show all folded content in paragraph containing point"] ["Show Current Item" TeX-fold-clearout-item :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Permanently show the item containing point"] "-" ["Hide or Show Current Item" TeX-fold-dwim :active (and (boundp 'TeX-fold-mode) TeX-fold-mode) :help "Hide or show the item containing point"])) "Menu definition for commands from tex-fold.el.") (defvar TeX-customization-menu nil) (defvar TeX-common-menu-entries (TeX-menu-with-help `(("Multifile/Parsing" ["Switch to Master File" TeX-home-buffer :help "Switch to buffer of Master File, or buffer of last TeX command"] ["Save Document" TeX-save-document :help "Save all buffers associated with the current Master File"] ["Set Master File" TeX-master-file-ask :active (not (TeX-local-master-p)) :help "Set the main file to run TeX commands on"] ["Reset Buffer" TeX-normal-mode :help "Save and reparse the current buffer for style information"] ["Reset AUCTeX" (TeX-normal-mode t) :keys "C-u C-c C-n" :help "Reset buffer and reload AUCTeX style files"]) ["Find Documentation..." TeX-doc :help "Get help on commands, packages, or TeX-related topics in general"] ["Read the AUCTeX Manual" TeX-goto-info-page :help "Everything worth reading"] ("Customize AUCTeX" ["Browse Options" (customize-group 'AUCTeX) :help "Open the customization buffer for AUCTeX"] ["Extend this Menu" (progn (easy-menu-add-item nil ;; Ugly hack because docTeX mode uses the LaTeX menu. (list (if (eq major-mode 'doctex-mode) "LaTeX" TeX-base-mode-name)) (or TeX-customization-menu (setq TeX-customization-menu (customize-menu-create 'AUCTeX "Customize AUCTeX"))))) :help "Make this menu a full-blown customization menu"]) ["Report AUCTeX Bug" TeX-submit-bug-report :help ,(format "Problems with AUCTeX %s? Mail us!" AUCTeX-version)]))) ;;; Verbatim constructs (defvar TeX-verbatim-p-function nil "Mode-specific function to be called by `TeX-verbatim-p'.") (make-variable-buffer-local 'TeX-verbatim-p-function) ;; XXX: We only have an implementation for LaTeX mode at the moment (Oct 2009). (defun TeX-verbatim-p (&optional pos) "Return non-nil if position POS is in a verbatim-like construct. A mode-specific implementation is required. If it is not available, the function always returns nil." (when TeX-verbatim-p-function (funcall TeX-verbatim-p-function))) ;;; Comments (defvar TeX-comment-start-regexp "%" "Regular expression matching a comment starter. Unlike the variable `comment-start-skip' it should not match any whitespace after the comment starter or any character before it.") (make-variable-buffer-local 'TeX-comment-start-regexp) (defun TeX-comment-region (beg end &optional arg) "Comment each line in the region from BEG to END. Numeric prefix arg ARG means use ARG comment characters. If ARG is negative, delete that many comment characters instead." (interactive "*r\nP") ;; `comment-padding' will not be recognized in XEmacs' (21.4) ;; `comment-region', so we temporarily modify `comment-start' to get ;; proper spacing. Unfortunately we have to check for the XEmacs ;; version and cannot test if `comment-padding' is bound as this ;; gets initialized in `VirTeX-common-initialization'. (let ((comment-start (if (and (featurep 'xemacs) (= emacs-major-version 21) (<= emacs-minor-version 4)) (concat comment-start (TeX-comment-padding-string)) comment-start))) (comment-region beg end arg))) (eval-and-compile ;; COMPATIBILITY for Emacs <= 21.3 (if (fboundp 'comment-or-uncomment-region) (defalias 'TeX-comment-or-uncomment-region 'comment-or-uncomment-region) ;; The following function was copied from `newcomment.el' on ;; 2004-01-30 and adapted accordingly (defun TeX-comment-or-uncomment-region (beg end &optional arg) "Comment or uncomment a the region from BEG to END. Call `TeX-comment-region', unless the region only consists of comments, in which case call `TeX-uncomment-region'. If a prefix arg ARG is given, it is passed on to the respective function." (interactive "*r\nP") (funcall (if (save-excursion ;; check for already commented region (goto-char beg) (TeX-comment-forward (point-max)) (<= end (point))) 'TeX-uncomment-region 'TeX-comment-region) beg end arg))) ;; COMPATIBILITY for Emacs <= 20. (Introduced in 21.1?) (if (fboundp 'uncomment-region) (defalias 'TeX-uncomment-region 'uncomment-region) (defun TeX-uncomment-region (beg end &optional arg) "Remove comment characters from the beginning of each line in the region from BEG to END. Numeric prefix arg ARG means use ARG comment characters. If ARG is negative, delete that many comment characters instead." (interactive "*r\nP") (or arg ;; Determine the number of comment characters at the ;; beginning of the first commented line. (setq arg (save-excursion (goto-char beg) (re-search-forward (concat "^" TeX-comment-start-regexp "+") end t) (length (match-string 0))))) (comment-region beg end (- arg))))) (defun TeX-uncomment () "Delete comment characters from the beginning of each line in a comment." (interactive) (save-excursion ;; Find first comment line (beginning-of-line) (while (and (looking-at (concat "^[ \t]*" TeX-comment-start-regexp)) (not (bobp))) (forward-line -1)) (let ((beg (point))) (forward-line 1) ;; Find last comment line (while (and (looking-at (concat "^[ \t]*" TeX-comment-start-regexp)) (not (eobp))) (forward-line 1)) ;; Uncomment region (TeX-uncomment-region beg (point))))) (defun TeX-comment-or-uncomment-paragraph () "Comment or uncomment current paragraph." (interactive) (if (TeX-in-commented-line) (TeX-uncomment) (save-excursion (beginning-of-line) ;; Don't do anything if we are in an empty line. If this line ;; is followed by a lot of commented lines, this shall prevent ;; that mark-paragraph skips over these lines and marks a ;; paragraph outside the visible window which might get ;; commented without the user noticing. (unless (looking-at "^[ \t]*$") (mark-paragraph) (TeX-comment-region (point) (mark)))))) (defun TeX-in-comment () "Return non-nil if point is in a comment." (if (or (bolp) (null comment-start-skip) (eq (preceding-char) ?\r)) nil (save-excursion (save-match-data (let ((pos (point))) (beginning-of-line) (and (or (looking-at comment-start-skip) (re-search-forward comment-start-skip pos t)) (not (TeX-verbatim-p)))))))) (defun TeX-in-commented-line () "Return non-nil if point is in a line consisting only of a comment. The comment can be preceded by whitespace. This means that `TeX-in-commented-line' is more general than `TeX-in-line-comment' which will not match commented lines with leading whitespace. But `TeX-in-commented-line' will match commented lines without leading whitespace as well." (save-excursion (forward-line 0) (skip-chars-forward " \t") (string= (buffer-substring-no-properties (point) (min (point-max) (+ (point) (length comment-start)))) comment-start))) (defun TeX-in-line-comment () "Return non-nil if point is in a line comment. A line comment is a comment starting in column one, i.e. there is no whitespace before the comment sign." (save-excursion (forward-line 0) (string= (buffer-substring-no-properties (point) (min (point-max) (+ (point) (length comment-start)))) comment-start))) (defun TeX-comment-prefix () "Return the comment prefix of the current line. If there are no comment starters after potential whitespace at the beginning of the line, return nil." (save-excursion (beginning-of-line) (save-match-data (when (looking-at (concat "\\([ \t]*" TeX-comment-start-regexp "+\\)+")) (match-string 0))))) (defun TeX-forward-comment-skip (&optional count limit) "Move forward to the next comment skip. This may be a switch between commented and not commented adjacent lines or between lines with different comment prefixes. With argument COUNT do it COUNT times. If argument LIMIT is given, do not move point further than this value." (unless count (setq count 1)) ;; A value of 0 is nonsense. (when (= count 0) (setq count 1)) (unless limit (setq limit (point-max))) (dotimes (i (abs count)) (if (< count 0) (forward-line -1) (beginning-of-line)) (let ((prefix (when (looking-at (concat "\\([ \t]*" TeX-comment-start-regexp "+\\)+")) (buffer-substring (+ (line-beginning-position) (current-indentation)) (match-end 0))))) (while (save-excursion (and (if (> count 0) (<= (point) limit) (>= (point) limit)) (zerop (if (> count 0) (forward-line 1) (forward-line -1))) (if prefix (if (looking-at (concat "\\([ \t]*" TeX-comment-start-regexp "+\\)+")) ;; If the preceding line is a commented line ;; as well, check if the prefixes are ;; identical. (string= prefix (buffer-substring (+ (line-beginning-position) (current-indentation)) (match-end 0))) nil) (not (looking-at (concat "[ \t]*" TeX-comment-start-regexp)))))) (if (> count 0) (forward-line 1) (forward-line -1))) (if (> count 0) (forward-line 1))))) (defun TeX-backward-comment-skip (&optional count limit) "Move backward to the next comment skip. This may be a switch between commented and not commented adjacent lines or between lines with different comment prefixes. With argument COUNT do it COUNT times. If argument LIMIT is given, do not move point to a position less than this value." (unless count (setq count 1)) (when (= count 0) (setq count 1)) (unless limit (setq limit (point-min))) (TeX-forward-comment-skip (- count) limit)) ;; Taken from `comment-forward' in Emacs' CVS on 2006-12-26. Used as ;; a compatibility function for XEmacs 21.4. (defun TeX-comment-forward (&optional n) "Skip forward over N comments. Just like `forward-comment' but only for positive N and can use regexps instead of syntax." (when (fboundp 'comment-normalize-vars) (comment-normalize-vars)) (if (fboundp 'comment-forward) (comment-forward n) (setq n (or n 1)) (if (< n 0) (error "No comment-backward") (if comment-use-syntax (forward-comment n) (while (> n 0) (setq n (if (or (forward-comment 1) (and (looking-at comment-start-skip) (goto-char (match-end 0)) (re-search-forward comment-end-skip nil 'move))) (1- n) -1))) (= n 0))))) (defun TeX-comment-padding-string () "Return comment padding as a string. The variable `comment-padding' can hold an integer or a string. This function will return the appropriate string representation regardless of its data type." (if (integerp comment-padding) (make-string comment-padding ? ) comment-padding)) ;;; Indentation (defgroup TeX-indentation nil "Indentation of TeX buffers in AUCTeX." :group 'AUCTeX) (defcustom TeX-brace-indent-level 2 "*The level of indentation produced by an open brace." :group 'TeX-indentation :type 'integer) (defun TeX-comment-indent () "Determine the indentation of a comment." (if (looking-at "%%%") (current-column) (skip-chars-backward " \t") (max (if (bolp) 0 (1+ (current-column))) comment-column))) (defun TeX-brace-count-line () "Count number of open/closed braces." (save-excursion (let ((count 0) (limit (line-end-position)) char) (while (progn (skip-chars-forward "^{}\\\\" limit) (when (and (< (point) limit) (not (TeX-in-comment))) (setq char (char-after)) (forward-char) (cond ((eq char ?\{) (setq count (+ count TeX-brace-indent-level))) ((eq char ?\}) (setq count (- count TeX-brace-indent-level))) ((eq char ?\\) (when (< (point) limit) (forward-char) t)))))) count))) ;;; Navigation (defvar TeX-search-syntax-table (let ((table (make-syntax-table (make-char-table (if (featurep 'xemacs) 'syntax 'syntax-table))))) ;; Preset mode-independent syntax entries. (Mode-dependent ;; entries are set in the function `TeX-search-syntax-table'.) ;; ?\", ?\( and ?\) explicitely get whitespace syntax because ;; Emacs 21.3 and XEmacs don't generate a completely empty syntax ;; table. (dolist (elt '((?\f . ">") (?\n . ">") (?\" . " ") (?\( . " ") (?\) . " "))) (modify-syntax-entry (car elt) (cdr elt) table)) table) "Syntax table used for searching purposes. It should be accessed through the function `TeX-search-syntax-table'.") (defun TeX-search-syntax-table (&rest args) "Return a syntax table for searching purposes. ARGS may be a list of characters. For each of them the respective predefined syntax is set. Currently the parenthetical characters ?{, ?}, ?[, ?], ?\(, ?\), ?<, and ?> are supported. The syntax of each of these characters not specified will be reset to \" \"." (let ((char-syntax-alist '((?\{ . "(}") (?\} . "){") (?\[ . "(]") (?\] . ")[") (?\( . "()") (?\) . ")(") (?\< . "(>") (?\> . ")<")))) ;; Clean entries possibly set before. (modify-syntax-entry ?\\ " " TeX-search-syntax-table) (modify-syntax-entry ?@ " " TeX-search-syntax-table) (modify-syntax-entry ?\% " " TeX-search-syntax-table) ;; Preset mode-dependent syntax entries. (Mode-independent entries ;; are set when the variable `TeX-search-syntax-table' is created.) (modify-syntax-entry (string-to-char TeX-esc) "\\" TeX-search-syntax-table) (unless (eq major-mode 'texinfo-mode) (modify-syntax-entry ?\% "<" TeX-search-syntax-table)) ;; Clean up the entries which can be specified as arguments. (dolist (elt char-syntax-alist) (modify-syntax-entry (car elt) " " TeX-search-syntax-table)) ;; Now set what we got. (dolist (elt args) (unless (assoc elt char-syntax-alist) (error "Char not supported")) (modify-syntax-entry elt (cdr (assoc elt char-syntax-alist)) TeX-search-syntax-table)) ;; Return the syntax table. TeX-search-syntax-table)) (defun TeX-find-balanced-brace (&optional count depth limit) "Return the position of a balanced brace in a TeX group. The function scans forward COUNT parenthetical groupings. Default is 1. If COUNT is negative, it searches backwards. With optional DEPTH>=1, find that outer level. If LIMIT is non-nil, do not search further than this position in the buffer." (let ((count (if count (if (= count 0) (error "COUNT has to be <> 0") count) 1)) (depth (if depth (if (< depth 1) (error "DEPTH has to be > 0") depth) 1))) (save-restriction (when limit (if (> count 0) (narrow-to-region (point-min) limit) (narrow-to-region limit (point-max)))) (with-syntax-table (TeX-search-syntax-table ?\{ ?\}) (condition-case nil (scan-lists (point) count depth) (error nil)))))) (defun TeX-find-closing-brace (&optional depth limit) "Return the position of the closing brace in a TeX group. The function assumes that point is inside the group, i.e. after an opening brace. With optional DEPTH>=1, find that outer level. If LIMIT is non-nil, do not search further down than this position in the buffer." (TeX-find-balanced-brace 1 depth limit)) (defun TeX-find-opening-brace (&optional depth limit) "Return the position of the opening brace in a TeX group. The function assumes that point is inside the group, i.e. before a closing brace. With optional DEPTH>=1, find that outer level. If LIMIT is non-nil, do not search further up than this position in the buffer." (TeX-find-balanced-brace -1 depth limit)) (defun TeX-find-macro-boundaries (&optional lower-bound) "Return a list containing the start and end of a macro. If LOWER-BOUND is given, do not search backward further than this point in buffer. Arguments enclosed in brackets or braces are considered part of the macro." (save-restriction (when lower-bound (narrow-to-region lower-bound (point-max))) (let ((orig-point (point)) start-point) ;; Point is located directly at the start of a macro. (-!-\foo{bar}) (when (and (eq (char-after) (aref TeX-esc 0)) (not (TeX-escaped-p))) (setq start-point (point))) ;; Point is located on a macro. (\fo-!-o{bar}) (unless start-point (save-excursion (skip-chars-backward "A-Za-z@*") (when (and (eq (char-before) (aref TeX-esc 0)) (not (TeX-escaped-p (1- (point))))) (setq start-point (1- (point)))))) ;; Point is located in the argument of a macro. (\foo{ba-!-r}) (unless start-point (save-excursion (catch 'abort (let ((parse-sexp-ignore-comments t)) (when (condition-case nil (progn (up-list) t) (error nil)) (while (progn (condition-case nil (backward-sexp) (error (throw 'abort nil))) (forward-comment -1) (and (memq (char-before) '(?\] ?\})) (not (TeX-escaped-p (1- (point))))))) (skip-chars-backward "A-Za-z@*") (when (and (eq (char-before) (aref TeX-esc 0)) (not (TeX-escaped-p (1- (point))))) (setq start-point (1- (point))))))))) ;; Search forward for the end of the macro. (when start-point (save-excursion (goto-char (TeX-find-macro-end-helper start-point)) (if (< orig-point (point)) (cons start-point (point)) nil)))))) (defun TeX-find-macro-end-helper (start) "Find the end of a macro given its START. START is the position just before the starting token of the macro. If the macro is followed by square brackets or curly braces, those will be considered part of it." (save-excursion (save-match-data (catch 'found (goto-char (1+ start)) (if (zerop (skip-chars-forward "A-Za-z@")) (forward-char) (skip-chars-forward "*")) (while (not (eobp)) (cond ;; Skip over pairs of square brackets ((or (looking-at "[ \t]*\n?\\(\\[\\)") ; Be conservative: Consider ; only consecutive lines. (and (looking-at (concat "[ \t]*" TeX-comment-start-regexp)) (save-excursion (forward-line 1) (looking-at "[ \t]*\\(\\[\\)")))) (goto-char (match-beginning 1)) (condition-case nil (forward-sexp) (scan-error (throw 'found (point))))) ;; Skip over pairs of curly braces ((or (looking-at "[ \t]*\n?{") ; Be conservative: Consider ; only consecutive lines. (and (looking-at (concat "[ \t]*" TeX-comment-start-regexp)) (save-excursion (forward-line 1) (looking-at "[ \t]*{")))) (goto-char (match-end 0)) (goto-char (or (TeX-find-closing-brace) ;; If we cannot find a regular end, use the ;; next whitespace. (save-excursion (skip-chars-forward "^ \t\n") (point)))) (when (eobp) (throw 'found (point)))) (t (throw 'found (point))))))))) (defun TeX-find-macro-start (&optional limit) "Return the start of a macro. If LIMIT is given, do not search backward further than this point in buffer. Arguments enclosed in brackets or braces are considered part of the macro." (car (TeX-find-macro-boundaries limit))) (defun TeX-find-macro-end () "Return the end of a macro. Arguments enclosed in brackets or braces are considered part of the macro." (cdr (TeX-find-macro-boundaries))) (defun TeX-search-forward-unescaped (string &optional bound noerror) "Search forward from point for unescaped STRING. The optional argument BOUND limits the search to the respective buffer position. If NOERROR is non-nil, return nil if the search failed instead of throwing an error. A pattern is escaped, if it is preceded by an odd number of escape characters." (TeX-search-unescaped string 'forward nil bound noerror)) (defun TeX-search-backward-unescaped (string &optional bound noerror) "Search backward from point for unescaped STRING. The optional argument BOUND limits the search to the respective buffer position. If NOERROR is non-nil, return nil if the search failed instead of throwing an error. A pattern is escaped, if it is preceded by an odd number of escape characters." (TeX-search-unescaped string 'backward nil bound noerror)) (defun TeX-re-search-forward-unescaped (regexp &optional bound noerror) "Search forward from point for unescaped regular expression REGEXP. The optional argument BOUND limits the search to the respective buffer position. If NOERROR is non-nil, return nil if the search failed instead of throwing an error. A pattern is escaped, if it is preceded by an odd number of escape characters." (TeX-search-unescaped regexp 'forward t bound noerror)) (defun TeX-search-unescaped (pattern &optional direction regexp-flag bound noerror) "Search for unescaped PATTERN in a certain DIRECTION. DIRECTION can be indicated by the symbols 'forward and 'backward. If DIRECTION is omitted, a forward search is carried out. If REGEXP-FLAG is non-nil, PATTERN may be a regular expression, otherwise a string. The optional argument BOUND limits the search to the respective buffer position. If NOERROR is non-nil, return nil if the search failed instead of throwing an error. A pattern is escaped, if it is preceded by an odd number of escape characters." (let ((search-fun (if (eq direction 'backward) (if regexp-flag 're-search-backward 'search-backward) (if regexp-flag 're-search-forward 'search-forward)))) (catch 'found (while (funcall search-fun pattern bound noerror) (when (not (TeX-escaped-p (match-beginning 0))) (throw 'found (point))))))) (defun TeX-escaped-p (&optional pos) "Return t if the character at position POS is escaped. If POS is omitted, examine the character at point. A character is escaped if it is preceded by an odd number of escape characters, such as \"\\\" in LaTeX." (save-excursion (when pos (goto-char pos)) (not (zerop (mod (skip-chars-backward (regexp-quote TeX-esc)) 2))))) (defun TeX-current-macro () "Return the name of the macro containing point, nil if there is none." (let ((macro-start (TeX-find-macro-start))) (when macro-start (save-excursion (goto-char macro-start) (forward-char (length TeX-esc)) (buffer-substring-no-properties (point) (progn (skip-chars-forward "@A-Za-z") (point))))))) (defvar TeX-search-forward-comment-start-function nil "Function to find the start of a comment. The function should accept an optional argument for specifying the limit of the search. It should return the position just before the comment if one is found and nil otherwise. Point should not be moved.") (make-variable-buffer-local 'TeX-search-forward-comment-start-function) (defun TeX-search-forward-comment-start (&optional limit) "Search forward for a comment start from current position till LIMIT. If LIMIT is omitted, search till the end of the buffer. The search relies on `TeX-comment-start-regexp' being set correctly for the current mode. Set `TeX-search-forward-comment-start-defun' in order to override the default implementation." (if TeX-search-forward-comment-start-function (funcall TeX-search-forward-comment-start-function limit) (setq limit (or limit (point-max))) (when (TeX-re-search-forward-unescaped TeX-comment-start-regexp limit t) (match-beginning 0)))) ;;; Fonts (defcustom TeX-font-list '((?\C-b "{\\bf " "}") (?\C-c "{\\sc " "}") (?\C-e "{\\em " "\\/}") (?\C-i "{\\it " "\\/}") (?\C-r "{\\rm " "}") (?\C-s "{\\sl " "\\/}") (?\C-t "{\\tt " "}") (?\C-d "" "" t)) "List of fonts used by `TeX-font'. Each entry is a list. The first element is the key to activate the font. The second element is the string to insert before point, and the third element is the string to insert after point. If the fourth and fifth element are strings, they specify the prefix and suffix to be used in math mode. An optional fourth (or sixth) element means always replace if t." :group 'TeX-macro :type '(repeat (group :value (?\C-a "" "") (character :tag "Key") (string :tag "Prefix") (string :tag "Suffix") (option (group :inline t (string :tag "Math Prefix") (string :tag "Math Suffix"))) (option (sexp :format "Replace\n" :value t))))) (defvar TeX-font-replace-function 'TeX-font-replace "Determines the function which is called when a font should be replaced.") (defun TeX-describe-font-entry (entry) "A textual description of an ENTRY in `TeX-font-list'." (concat (format "%16s " (key-description (char-to-string (nth 0 entry)))) (if (or (eq t (nth 3 entry)) (eq t (nth 5 entry))) "-- delete font" (format "%14s %-3s %14s %-3s" (nth 1 entry) (nth 2 entry) (if (stringp (nth 3 entry)) (nth 3 entry) "") (if (stringp (nth 4 entry)) (nth 4 entry) ""))))) (defun TeX-font (replace what) "Insert template for font change command. If REPLACE is not nil, replace current font. WHAT determines the font to use, as specified by `TeX-font-list'." (interactive "*P\nc") (TeX-update-style) (let* ((entry (assoc what TeX-font-list)) (in-math (texmathp)) (before (nth 1 entry)) (after (nth 2 entry))) (setq replace (or replace (eq t (nth 3 entry)) (eq t (nth 5 entry)))) (if (and in-math (stringp (nth 3 entry))) (setq before (nth 3 entry) after (nth 4 entry))) (cond ((null entry) (let ((help (concat "Font list: " "KEY TEXTFONT MATHFONT\n\n" (mapconcat 'TeX-describe-font-entry TeX-font-list "\n")))) (with-output-to-temp-buffer "*Help*" (set-buffer "*Help*") (insert help)))) (replace (funcall TeX-font-replace-function before after)) ((TeX-active-mark) (save-excursion (cond ((> (mark) (point)) (insert before) (goto-char (mark)) (insert after)) (t (insert after) (goto-char (mark)) (insert before))))) (t (insert before) (save-excursion (insert after)))))) (defun TeX-font-replace (start end) "Replace font specification around point with START and END. For modes with font specifications like `{\\font text}'. See also `TeX-font-replace-macro' and `TeX-font-replace-function'." (save-excursion (while (not (looking-at "{\\\\[a-zA-Z]+ ")) (up-list -1)) (forward-sexp) (save-excursion (replace-match start t t)) (if (save-excursion (backward-char 3) (if (looking-at (regexp-quote "\\/}")) (progn (delete-char 3) nil) t)) (delete-backward-char 1)) (insert end))) (defun TeX-font-replace-macro (start end) "Replace font specification around point with START and END. For modes with font specifications like `\\font{text}'. See also `TeX-font-replace' and `TeX-font-replace-function'." (let ((font-list TeX-font-list) cmds strings regexp) (while font-list (setq strings (cdr (car font-list)) font-list (cdr font-list)) (and (stringp (car strings)) (null (string= (car strings) "")) (setq cmds (cons (car strings) cmds))) (setq strings (cdr (cdr strings))) (and (stringp (car strings)) (null (string= (car strings) "")) (setq cmds (cons (car strings) cmds)))) (setq regexp (mapconcat 'regexp-quote cmds "\\|")) (save-excursion (catch 'done (while t (if (/= ?\\ (following-char)) (skip-chars-backward "a-zA-Z ")) (skip-chars-backward (regexp-quote TeX-esc)) (if (looking-at regexp) (throw 'done t) (up-list -1)))) ;; Use stripped syntax table in order to get stuff like "\emph{(}" right. (with-syntax-table (TeX-search-syntax-table ?\{ ?\}) (forward-sexp 2)) (save-excursion (replace-match start t t)) (delete-backward-char 1) (insert end)))) ;;; Dollars ;; ;; Rewritten from scratch with use of `texmathp' by ;; Carsten Dominik (defvar TeX-symbol-marker nil) (defvar TeX-symbol-marker-pos 0) ;; The following constants are no longer used, but kept in case some ;; foreign code uses any of them. (defvar TeX-dollar-sign ?$ "*Character used to enter and leave math mode in TeX.") (defconst TeX-dollar-string (char-to-string TeX-dollar-sign)) (defconst TeX-dollar-regexp (concat "^" (regexp-quote TeX-dollar-string) "\\|[^" TeX-esc "]" (regexp-quote TeX-dollar-string))) (defcustom TeX-math-toggle-off-input-method t "*If non-nil, auto toggle off CJK input methods when entering math mode." :group 'TeX-macro :type 'boolean) (defcustom TeX-math-close-double-dollar nil "If non-nil close double dollar math by typing a single `$'." :group 'TeX-macro :type 'boolean) (defun TeX-insert-dollar (&optional arg) "Insert dollar sign. If current math mode was not entered with a dollar, refuse to insert one. Show matching dollar sign if this dollar sign ends the TeX math mode and `blink-matching-paren' is non-nil. Ensure double dollar signs match up correctly by inserting extra dollar signs when needed. With raw \\[universal-argument] prefix, insert exactly one dollar sign. With optional ARG, insert that many dollar signs." (interactive "P") (cond ((and arg (listp arg)) ;; C-u always inserts one (insert "$")) (arg ;; Numerical arg inserts that many (insert (make-string (prefix-numeric-value arg) ?\$))) ((TeX-escaped-p) ;; This is escaped with `\', so just insert one. (insert "$")) ((texmathp) ;; We are inside math mode (if (and (stringp (car texmathp-why)) (string-equal (substring (car texmathp-why) 0 1) "\$")) ;; Math mode was turned on with $ or $$ - so finish it accordingly. (progn (if TeX-math-close-double-dollar (insert (car texmathp-why)) (insert "$")) (when (and blink-matching-paren (or (string= (car texmathp-why) "$") (zerop (mod (save-excursion (skip-chars-backward "$")) 2)))) (save-excursion (goto-char (cdr texmathp-why)) (if (pos-visible-in-window-p) (sit-for 1) (message "Matches %s" (buffer-substring (point) (progn (end-of-line) (point)))))))) ;; Math mode was not entered with dollar - we cannot finish it with one. (message "Math mode started with `%s' cannot be closed with dollar" (car texmathp-why)) (insert "$"))) (t ;; Just somewhere in the text. (insert "$"))) (TeX-math-input-method-off)) (defvar TeX-math-input-method-off-regexp "^\\(chinese\\|japanese\\|korean\\|bulgarian\\|russian\\)" "Regexp matching input methods to be deactivated when entering math mode.") (defun TeX-math-input-method-off () "Toggle off input method when entering math mode." (and TeX-math-toggle-off-input-method (texmathp) (boundp 'current-input-method) current-input-method (string-match TeX-math-input-method-off-regexp current-input-method) (inactivate-input-method))) ;;; Simple Commands (defun TeX-normal-mode (arg) "Remove all information about this buffer, and apply the style hooks again. Save buffer first including style information. With optional argument ARG, also reload the style hooks." ;; FIXME: Shouldn't it be (&optional arg)? -- rs (interactive "*P") (if arg (setq TeX-style-hook-list nil BibTeX-global-style-files nil BibTeX-global-files nil TeX-Biber-global-files nil TeX-global-input-files nil)) (let ((TeX-auto-save t)) (if (buffer-modified-p) (save-buffer) (TeX-auto-write))) (normal-mode) ;; See also addition to `find-file-hooks' in `VirTeX-common-initialization'. (when (eq TeX-master 'shared) (TeX-master-file nil nil t)) (TeX-update-style t)) (defgroup TeX-quote nil "Quoting in AUCTeX." :group 'AUCTeX) (defcustom TeX-open-quote "``" "String inserted by typing \\[TeX-insert-quote] to open a quotation." :group 'TeX-quote :type 'string) (defcustom TeX-close-quote "''" "String inserted by typing \\[TeX-insert-quote] to close a quotation." :group 'TeX-quote :type 'string) (defcustom TeX-quote-after-quote nil "Behaviour of \\[TeX-insert-quote]. Nil means standard behaviour; when non-nil, opening and closing quotes are inserted only after \"." :group 'TeX-quote :type 'boolean) (defcustom TeX-quote-language-alist nil "Alist for overriding the default language-specific quote insertion. First element in each item is the name of the language as set by the language style file as a string. Second element is the opening quotation mark. Third elemxent is the closing quotation mark. Opening and closing quotation marks can be specified directly as strings or as functions returning a string. Fourth element is a boolean specifying insertion behavior, overriding `TeX-quote-after-quote'. See Info node `(auctex)European' for valid languages." :group 'TeX-quote :link '(custom-manual "(auctex)European") :type '(repeat (group (choice (const "czech") (const "danish") (const "dutch") (const "german") (const "ngerman") (const "french") ;; not frenchb or francais (const "italian") (const "polish") (const "slovak") (const "swedish") (string :tag "Other Language")) (choice :tag "Opening quotation mark" string function) (choice :tag "Closing quotation mark" string function) (boolean :tag "Insert plain quote first" :value t)))) (defvar TeX-quote-language nil "If non-nil determines behavior of quote insertion. It is usually set by language-related style files. Its value has the same structure as the elements of `TeX-quote-language-alist'. The symbol 'override can be used as its car in order to override the settings of style files. Style files should therefore check if this symbol is present and not alter `TeX-quote-language' if it is.") (make-variable-buffer-local 'TeX-quote-language) (defun TeX-insert-quote (force) "Insert the appropriate quotation marks for TeX. Inserts the value of `TeX-open-quote' (normally ``) or `TeX-close-quote' \(normally '') depending on the context. If `TeX-quote-after-quote' is non-nil, this insertion works only after \". With prefix argument FORCE, always inserts \" characters." (interactive "*P") (if (or force ;; Do not insert TeX quotes in verbatim, math or comment constructs. (and (fboundp 'font-latex-faces-present-p) (font-latex-faces-present-p '(font-latex-verbatim-face font-latex-math-face font-lock-comment-face)) (font-latex-faces-present-p '(font-latex-verbatim-face font-latex-math-face font-lock-comment-face) (1- (point)))) (texmathp) (and (TeX-in-comment) (not (eq major-mode 'doctex-mode)))) (self-insert-command (prefix-numeric-value force)) (TeX-update-style) (let* ((lang-override (if (eq (car TeX-quote-language) 'override) TeX-quote-language (assoc (car TeX-quote-language) TeX-quote-language-alist))) (lang (or lang-override TeX-quote-language)) (open-quote (if lang (nth 1 lang) TeX-open-quote)) (close-quote (if lang (nth 2 lang) TeX-close-quote)) (q-after-q (if lang (nth 3 lang) TeX-quote-after-quote))) (when (functionp open-quote) (setq open-quote (funcall open-quote))) (when (functionp close-quote) (setq close-quote (funcall close-quote))) (if q-after-q (insert (cond ((bobp) ?\") ((save-excursion (TeX-looking-at-backward (concat (regexp-quote open-quote) "\\|" (regexp-quote close-quote)) (max (length open-quote) (length close-quote)))) (delete-backward-char (length (match-string 0))) "\"\"") ((< (save-excursion (skip-chars-backward "\"")) -1) ?\") ((not (= (preceding-char) ?\")) ?\") ((save-excursion (forward-char -1) (bobp)) (delete-backward-char 1) open-quote) ((save-excursion (forward-char -2) ;;; at -1 there is double quote (looking-at "[ \t\n]\\|\\s(")) (delete-backward-char 1) open-quote) (t (delete-backward-char 1) close-quote))) (insert (cond ((bobp) open-quote) ((= (preceding-char) (string-to-char TeX-esc)) ?\") ((= (preceding-char) ?\") ?\") ((save-excursion (forward-char (- (length open-quote))) (looking-at (regexp-quote open-quote))) (delete-backward-char (length open-quote)) ?\") ((save-excursion (forward-char (- (length close-quote))) (looking-at (regexp-quote close-quote))) (delete-backward-char (length close-quote)) ?\") ((save-excursion (forward-char -1) (looking-at "[ \t\n]\\|\\s(")) open-quote) (t close-quote))))))) (defun TeX-insert-punctuation () "Insert point or comma, cleaning up preceding space." (interactive) (expand-abbrev) (if (TeX-looking-at-backward "\\\\/\\(}+\\)" 50) (replace-match "\\1" t)) (call-interactively 'self-insert-command)) (defun TeX-insert-braces (arg) "Make a pair of braces around next ARG sexps and leave point inside. No argument is equivalent to zero: just insert braces and leave point between. If there is an active region, ARG will be ignored, braces will be inserted around the region, and point will be left after the closing brace." (interactive "P") (if (TeX-active-mark) (progn (if (< (point) (mark)) (exchange-point-and-mark)) (insert TeX-grcl) (save-excursion (goto-char (mark)) (insert TeX-grop))) (insert TeX-grop) (save-excursion (if arg (forward-sexp (prefix-numeric-value arg))) (insert TeX-grcl)))) ;;;###autoload (defun TeX-submit-bug-report () "Submit a bug report on AUCTeX via mail. Don't hesitate to report any problems or inaccurate documentation. If you don't have setup sending mail from (X)Emacs, please copy the output buffer into your mail program, as it gives us important information about your AUCTeX version and AUCTeX configuration." (interactive) (require 'reporter) (let ((reporter-prompt-for-summary-p "Bug report subject: ")) (reporter-submit-bug-report "bug-auctex@gnu.org" AUCTeX-version (list 'AUCTeX-date 'window-system 'LaTeX-version 'TeX-style-path 'TeX-auto-save 'TeX-parse-self 'TeX-master 'TeX-command-list) nil nil "Remember to cover the basics, that is, what you expected to happen and what in fact did happen. Be sure to consult the FAQ section in the manual before submitting a bug report. In addition check if the bug is reproducable with an up-to-date version of AUCTeX. So please upgrade to the version available from http://www.gnu.org/software/auctex/ if your installation is older than the one available from the web site. If the bug is triggered by a specific \(La\)TeX file, you should try to produce a minimal sample file showing the problem and include it in your report. Your bug report will be posted to the AUCTeX bug reporting list. ------------------------------------------------------------------------"))) ;;; Documentation (defun TeX-goto-info-page () "Read documentation for AUCTeX in the info system." (interactive) (info "auctex")) (autoload 'info-lookup->completions "info-look") (defvar TeX-doc-backend-alist '((texdoc (plain-tex-mode latex-mode doctex-mode ams-tex-mode context-mode) (lambda () (when (executable-find "texdoc") (TeX-search-files ;; Explicitely supply doc directory for ;; non-kpathsea-based TeX systems. (unless (stringp TeX-kpathsea-path-delimiter) (or (TeX-tree-expand '("$SYSTEXMF" "$TEXMFLOCAL" "$TEXMFMAIN" "$TEXMFDIST") "latex" '("/doc/")) `(,@TeX-macro-global ,@TeX-macro-private))) '("dvi" "pdf" "ps" "txt" "html") t t))) (lambda (doc) ;; texdoc in MiKTeX requires --view in order to start ;; the viewer instead of an intermediate web page. (call-process "texdoc" nil 0 nil "--view" doc))) (latex-info (latex-mode) (lambda () (when (condition-case nil (save-window-excursion (let ((buf (generate-new-buffer-name "*info*"))) (info "latex" buf) (kill-buffer buf)) t) (error nil)) (mapcar (lambda (x) (let ((x (car x))) (if (string-match "\\`\\\\" x) (substring x 1) x))) (info-lookup->completions 'symbol 'latex-mode)))) (lambda (doc) (info-lookup-symbol (concat "\\" doc) 'latex-mode))) (texinfo-info (texinfo-mode) (lambda () (when (condition-case nil (save-window-excursion (let ((buf (generate-new-buffer-name "*info*"))) (info "texinfo" buf) (kill-buffer buf)) t) (error nil)) (mapcar (lambda (x) (let ((x (car x))) (if (string-match "\\`@" x) (substring x 1) x))) (info-lookup->completions 'symbol 'texinfo-mode)))) (lambda (doc) (info-lookup-symbol (concat "@" doc) 'texinfo-mode)))) "Alist of backends used for looking up documentation. Each item consists of four elements. The first is a symbol describing the backend's name. The second is a list of modes the backend should be activated in. The third is a function returning a list of documents available to the backend. It should return nil if the backend is not available, e.g. if a required executable is not present on the system in question. The fourth is a function for displaying the documentation. The function should accept a single argument, the chosen package, command, or document name.") (defun TeX-doc (&optional name) "Display documentation for string NAME. NAME may be a package, a command, or a document." (interactive) (let (docs) ;; Build the lists of available documentation used for completion. (dolist (elt TeX-doc-backend-alist) (when (memq major-mode (nth 1 elt)) (let ((completions (funcall (nth 2 elt)))) (unless (null completions) (add-to-list 'docs (cons completions (nth 0 elt))))))) (if (null docs) (progn (if (executable-find "texdoc") ;; Fallback if we did not find anything via the backend list. (let ((doc (read-from-minibuffer "Input for `texdoc': "))) (when doc (call-process "texdoc" nil 0 nil "--view" doc))) ;; Give up. (message "No documentation found"))) ;; Ask the user about the package, command, or document. (when (and (interactive-p) (or (not name) (string= name ""))) (let ((symbol (thing-at-point 'symbol)) contained completions doc) ;; Is the symbol at point contained in the lists of available ;; documentation? (setq contained (catch 'found (dolist (elt docs) (when (member symbol (car elt)) (throw 'found t))))) ;; Setup completion list in a format suitable for `completing-read'. (dolist (elt docs) (setq completions (nconc (mapcar 'list (car elt)) completions))) ;; Query user. (setq doc (completing-read (if contained (format "Package, command, or document (default %s): " symbol) "Package, command, or document: ") completions)) (setq name (if (string= doc "") symbol doc)))) (if (not name) (message "No documentation specified") ;; XXX: Provide way to choose in case a symbol can be found in ;; more than one backend. (let* ((backend (catch 'found (dolist (elt docs) (when (member name (car elt)) (throw 'found (cdr elt))))))) (if backend (funcall (nth 3 (assoc backend TeX-doc-backend-alist)) name) (message "Documentation not found"))))))) ;;; Ispell Support ;; FIXME: Document those functions and variables. -- rs ;; The FSF ispell.el use this. (defun ispell-tex-buffer-p () (and (boundp 'ispell-tex-p) ispell-tex-p)) ;; The FSF ispell.el might one day use this. (setq ispell-enable-tex-parser t) (defun TeX-run-ispell (command string file) "Run ispell on current TeX buffer." (cond ((and (string-equal file (TeX-region-file)) (fboundp 'ispell-region)) (call-interactively 'ispell-region)) ((string-equal file (TeX-region-file)) (call-interactively 'spell-region)) ((fboundp 'ispell-buffer) (ispell-buffer)) ((fboundp 'ispell) (ispell)) (t (spell-buffer)))) (defun TeX-ispell-document (name) "Run ispell on all open files belonging to the current document." (interactive (list (TeX-master-file))) (if (string-equal name "") (setq name (TeX-master-file))) (let ((found nil) (regexp (concat "\\`\\(" (mapconcat (lambda (dir) (regexp-quote (expand-file-name (file-name-as-directory dir)))) (append (when (file-name-directory name) (list (file-name-directory name))) TeX-check-path) "\\|") "\\).*\\(" (mapconcat 'regexp-quote (cons (file-name-nondirectory name) (TeX-style-list)) "\\|") "\\)\\.\\(" (mapconcat 'regexp-quote TeX-file-extensions "\\|") "\\)\\'")) (buffers (buffer-list))) (while buffers (let* ((buffer (car buffers)) (name (buffer-file-name buffer))) (setq buffers (cdr buffers)) (if (and name (string-match regexp name)) (progn (save-excursion (switch-to-buffer buffer) (ispell-buffer)) (setq found t))))))) ;; Some versions of ispell 3 use this. (defvar ispell-tex-major-modes nil) (setq ispell-tex-major-modes (append '(plain-tex-mode ams-tex-mode latex-mode doctex-mode) ispell-tex-major-modes)) ;;; Abbrev mode (defmacro TeX-abbrev-mode-setup (mode) "Set up the abbrev table and variable for MODE." (let ((symbol (intern (concat (symbol-name mode) "-abbrev-table"))) (name (TeX-mode-prefix mode))) `(progn (defvar ,symbol nil ,(format "Abbrev table for %s mode." name)) (define-abbrev-table ',symbol nil) (when (fboundp 'abbrev-table-put) (abbrev-table-put ,symbol :parents (list text-mode-abbrev-table)))))) ;;; Special provisions for other modes and libraries ;; desktop-locals-to-save is broken by design. Don't have ;; buffer-local values of it. (eval-after-load "desktop" '(progn (dolist (elt '(TeX-master)) (unless (member elt (default-value 'desktop-locals-to-save)) (setq-default desktop-locals-to-save (cons elt (default-value 'desktop-locals-to-save))))) (add-hook 'desktop-after-read-hook '(lambda () (TeX-set-mode-name t))))) ;; delsel.el, `delete-selection-mode' (put 'TeX-newline 'delete-selection t) (put 'TeX-insert-dollar 'delete-selection t) (put 'TeX-insert-quote 'delete-selection t) (put 'TeX-insert-backslash 'delete-selection t) (provide 'tex) ;; Local Variables: ;; coding: iso-8859-1 ;; End: ;;; tex.el ends here auctex-11.87/CHANGES0000644000000000000000000005673612056205161012533 0ustar rootrootChanges and New Features in AUCTeX ********************************** News since 11.87 ================ * AUCTeX now supports Biber in conjunction with biblatex in addition to BibTeX. * Each AUCTeX mode now has its own abbrev table. On Emacsen which provide the possibility to inherit abbrevs from other tables, the abbrevs from the Text mode abbrev table are available as well. Newly defined abbrevs are written to the mode-specific tables, though. * The file `tex-fptex.el' was removed. * Forward/backward search for Evince has been improved. If Emacs is compiled with DBUS support and a recent Evince version (3.x) is installed, the communication goes over the desktop bus instead of the command line, resulting in more accurate positioning of point in Emacs and highlighting of the target paragraph in Evince. * A problem where Ghostscript threw an /invalidfileaccess error when running preview-latex was fixed. * A lot of smaller fixes and additions have been made. News in 11.86 ============= * Parsing of LaTeX output was improved. It is now less likely that AUCTeX opens a non-existent file upon calling `TeX-next-error'; a problem for example encountered when using MiKTeX 2.8. In addition quoted file names as emitted by MiKTeX are now supported. * A new framework for the definition and selection of viewers was implemented. If you have customizations regarding viewers you will have to redo them in this new framework or reenable the old one. See the section on viewers in the manual for details. * Comprehensive editing support for PSTricks was added. * Support for various LaTeX packages was added, e.g. `tabularx', `CJK', and `hyperref'. * An easy way to switch between TeX engines (PDFTeX, LuaTeX, XeTeX, Omega) was added. * Support for SyncTeX was added. This involves the command line options for LaTeX and the viewer. * Folding can now be customized to use macro arguments as replacement text. * `preview.sty' now works with XeTeX. * A lot of smaller and larger bugs have been squashed. News in 11.85 ============= * Font locking has been improved significantly. It is now less prone to color bleeding which could lead to high resource usage. In addition it now includes information about LaTeX macro syntax and can indicate syntactically incorrect macros in LaTeX mode. * The license was updated to GPLv3. * Support for the nomencl, flashcards and comment LaTeX packages as well as the Icelandic language option of babel were added. * Support for folding of math macros was added. * Lots of minor bugs in features and documentation fixed. News in 11.84 ============= * There have been problems with the `-without-texmf-dir' option to `configure' when the value of `-with-kpathsea-sep' was set or determined for an installation system with a default different from that of the runtime system. `with-kpathsea-sep' has been removed; the setting is now usually determined at runtime. Due to this and other problems, preview-latex in the released XEmacs package failed under Windows or with anything except recent 21.5 XEmacsen. * AUCTeX and preview-latex have been changed in order to accommodate file names containing spaces. preview-latex now tolerates bad PostScript code polluting the stack (like some Omega fonts). * `preview.sty' had in some cases failed to emit PostScript header specials. * Support for folding of comments was added. * The `polish' language option of the babel LaTeX package as well as the polski LaTeX package are now supported. Most notably this means that AUCTeX will help to insert quotation marks as defined by polish.sty (`"`..."'') and polski.sty (`,,...'''). * The TeX tool bar is now available and enabled by default in plain TeX mode. * Bug fix in the display of math subscripts and superscripts. * Bug fix `TeX-doc' for Emacs 21. * There has been quite a number of other bug fixes to various features and documentation across the board. News in 11.83 ============= * The new function `TeX-doc' provides easy access to documentation about commands and packages or information related to TeX and friends in general. It is accessible with the key binding `C-c ?' or the `Find Documentation...' entry in the mode menus. * You can now get rid of generated intermediate and output files by means of the new `Clean' and `Clean All' entries in `TeX-command-list' accessible with `C-c C-c' or the Command menu. * Support for forward search with PDF files was added. That means you can jump to a place in the output file corresponding to the position in the source file. Currently this only works if you use the pdfsync LaTeX package and xpdf as your PDF viewer. The accuracy is in the range of +/-1 page. Adding support for this feature required the default value of the variable `TeX-output-view-style' to be changed. Please make sure you either remove any customizations overriding the new default or incorporate the changes into your customizations if you want to use this feature. * TeX error messages of the `-file-line-error' kind are now understood in AUCTeX and preview-latex (parsers are still separate). * Bug fix in XyMTeX support. * The LaTeX tool bar is now enabled by default. News in 11.82 ============= * Support for the MinionPro LaTeX package was added. * Warnings and underfull/overfull boxes are now being indicated in the echo area after a LaTeX run, if the respective debugging options are activated with `TeX-toggle-debug-warnings' (`C-c C-t C-w') or `TeX-toggle-debug-bad-boxes' (`C-c C-t C-b'). In this case `TeX-next-error' will find these warnings in addition to normal errors. The key binding `C-c C-w' for `TeX-toggle-debug-bad-boxes' (which was renamed from `TeX-toggle-debug-boxes') now is deprecated. * AUCTeX now can automatically insert a pair of braces after typing <_> or <^> in math constructs if the new variable `TeX-electric-sub-and-superscript' is set to a non-nil value. * Some language-specific support for French was added. There now is completion support for the commands provided by the `frenchb' (and `francais') options of the babel LaTeX package and easier input of French quotation marks (`\\og ...\\fg') which can now be inserted by typing <">. * Completion support for options of some LaTeX packages was added. * Already in version 11.81 the way to activate AUCTeX changed substantially. This should now be done with `(load "auctex.el" nil t t)' instead of the former `(require 'tex-site)'. Related to this change `tex-mik.el' does not load `tex-site.el' anymore. That means if you used only `(require 'tex-mik)' in order to activate AUCTeX, you have to add `(load "auctex.el" nil t t)' before the latter statement. More detailed information can be found in the installation instructions (file INSTALL). * Handling of verbatim constructs was consolidated across AUCTeX. This resulted in the font-latex-specific variables `font-latex-verb-like-commands', `font-latex-verbatim-macros', and `font-latex-verbatim-environments' being removed and the more general variables `LaTeX-verbatim-macros-with-delims', `LaTeX-verbatim-macros-with-braces', and `LaTeX-verbatim-environments' being added. * The output of a BibTeX run is now checked for warnings and errors, which are reported in the echo area. * The aliases for `font-latex-title-fontify' were removed. Use `font-latex-fontify-sectioning' instead. * The problem that Japanese macros where broken across lines was fixed. * Various bug fixes. News in 11.81 ============= * `LaTeX-mark-section' now marks subsections of a given section as well. The former behavior is available via the prefix argument. * preview-latex which was previously available separately became a subsystem of AUCTeX. There is no documented provision for building or installing preview-latex separately. It is still possible to use and install AUCTeX without preview-latex, however. * The installation procedures have been overhauled and now also install startup files as part of the process (those had to be copied manually previously). You are advised to remove previous installations of AUCTeX and preview-latex before starting the installation procedure. A standard installation from an unmodified tarball no longer requires Makeinfo or Perl. Also note that the way AUCTeX is supposed to be activated changed. Instead of `(require 'tex-site)' you should now use `(load "auctex.el" nil t t)'. While the former method may still work, the new method has the advantage that you can deactivate a preactivated AUCTeX with the statement `(unload-feature 'tex-site)' before any of its modes have been used. This may be important especially for site-wide installations. * Support for the babel LaTeX package was added. * Folding a buffer now ensures that the whole buffer is fontified before the actual folding is carried out. If this results in unbearably long execution times, you can fall back to the old behavior of relying on stealth font locking to do this job in the background by customizing the variable `TeX-fold-force-fontify'. * Folded content now reveals part of its original text in a tooltip or the echo area when hovering with the mouse pointer over it. * The language-specific insertion of quotation marks was generalized. The variables `LaTeX-german-open-quote', `LaTeX-german-close-quote', `LaTeX-german-quote-after-quote', `LaTeX-italian-open-quote', `LaTeX-italian-close-quote', and `LaTeX-italian-quote-after-quote' are now obsolete. If you are not satisfied with the default settings, you should customize `TeX-quote-language-alist' instead. * Similar to language-specific quote insertion, AUCTeX now helps you with hyphens in different languages as well. * Fill problems in Japanese text introduced in AUCTeX 11.55 were fixed. AUCTeX tries not to break lines between 1-byte and 2-byte chars. These features will work in Chinese text, too. * The scaling factor of the fontification of sectioning commands can now be customized using the variable `font-latex-fontify-sectioning'. This variable was previously called `font-latex-title-fontify'; In this release we provide an alias but this will disappear in one of the the next releases. The faces for the sectioning commands are now called `font-latex-sectioning-N-face' (N=0...5) instead of `font-latex-title-N-face' (N=1...4). Analogously the names of the variables holding the related keyword lists were changed from `font-latex-title-N-keywords' to `font-latex-sectioning-N-keywords'. Make sure to adjust your customizations. * Titles in beamer slides marked by the "\frametitle" command are know displayed with the new face `font-latex-slide-title-face'. You can add macros to be highlighted with this face to `font-latex-match-slide-title-keywords'. * Of course a lot of bugs have been fixed. News in 11.55 ============= * A bug was fixed which lead to the insertion of trailing whitespace during filling. In particular extra spaces were added to sentence endings at the end of lines. You can make this whitespace visible by setting the variable `show-trailing-whitespace' to `t'. If you want to delete all trailing whitespace in a buffer, type `M-x delete-trailing-whitespace RET'. * A bug was fixed which lead to a `*Compile-Log*' buffer popping up when the first LaTeX file was loaded in an Emacs session. * On some systems the presence of an outdated Emacspeak package lead to the error message `File mode specification error: (error "Variable binding depth exceeds max-specpdl-size")'. Precautions were added which prevent this error from happening. But nevertheless, it is advised to upgrade or uninstall the outdated Emacspeak package. * The value of `TeX-macro-global' is not determined during configuration anymore but at load time of AUCTeX. Consequently the associated configuration option `--with-tex-input-dirs' was removed. * Support for the LaTeX Japanese classes `jsarticle' and `jsbook' was added. News in 11.54 ============= * The parser (used e.g. for `TeX-auto-generate-global') was extended to recognize keywords common in LaTeX packages and classes, like "\DeclareRobustCommand" or "\RequirePackage". Additionally a bug was fixed which led to duplicate entries in AUCTeX style files. * Folding can now be done for paragraphs and regions besides single constructs and the whole buffer. With the new `TeX-fold-dwim' command content can both be hidden and shown with a single key binding. In course of these changes new key bindings for unfolding commands where introduced. The old bindings are still present but will be phased out in future releases. * Info files of the manual now have a .info extension. * There is an experimental tool bar support now. It is not activated by default. If you want to use it, add (add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar) to your init file. * The manual now contains a new chapter "Quick Start". It explains the main features and how to use them, and should be enough for a new user to start using AUCTeX. * A new section "Font Locking" was added to the manual which explains syntax highlighting in AUCTeX and its customization. Together with the sections related to folding and outlining, the section is part of the new chapter "Display". * Keywords for syntax highlighting of LaTeX constructs to be typeset in bold, italic or typewriter fonts may now be customized. Besides the built-in classes, new keyword classes may be added by customizing the variable `font-latex-user-keyword-classes'. The customization options can be found in the customization group `font-latex-keywords'. * Verbatim content is now displayed with the `fixed-pitch' face. (GNU Emacs only) * Syntax highlighting should not spill out of verbatim content anymore. (GNU Emacs only) * Verbatim commands like `\verb|...|' will not be broken anymore during filling. * You can customize the completion for graphic files with `LaTeX-includegraphics-read-file'. * Support for the LaTeX packages `url', `listings', `jurabib' and `csquotes' was added with regard to command completion and syntax highlighting. * Performance of fontification and filling was improved. * Insertion of nodes in Texinfo mode now supports completion of existing node names. * Setting the variable `LaTeX-float' to `nil' now means that you will not be prompted for the float position of figures and tables. You can get the old behaviour of `nil' by setting the variable to `""', i.e. an empty string. * The XEmacs-specific bug concerning `overlays-at' was fixed. * Lots of bug fixes. News in 11.53 ============= * The LaTeX math menu can include Unicode characters if your Emacs built supports it. See the variable `LaTeX-math-menu-unicode'. * Bug fixes for XEmacs. * Completion for graphic files in the TeX search path has been added. * `start' is used for the viewer for MiKTeX and fpTeX. * The variable `TeX-fold-preserve-comments' can now be customized to deactivate folding in comments. News in 11.52 ============= * Installation and menus under XEmacs work again (maybe for the first time). * Fontification of subscripts and superscripts is now disabled when the fontification engine is not able to support it properly. * Bug fixes in the build process. News in 11.51 ============= * PDFTeX and Source Special support did not work with ConTeXt, this has been fixed. Similar for Source Special support under Windows. * Omega support has been added. * Bug fixes in the build process. * `TeX-fold' now supports folding of environments in Texinfo mode. News in 11.50 ============= * The use of source specials when processing or viewing the document can now be controlled with the new `TeX-source-specials' minor mode which can be toggled via an entry in the Command menu or the key binding `C-c C-t C-s'. If you have customized the variable `TeX-command-list', you have to re-initialize it for this to work. This means to open a customization buffer for the variable by typing `M-x customize-variable RET TeX-command-list RET', selecting "Erase Customization" and do your customization again with the new default. * The content of the command menu now depends on the mode (plain TeX, LaTeX, ConTeXt etc.). Any former customization of the variable `TeX-command-list' has to be erased. Otherwise the command menu and the customization will not work correctly. * Support for hiding and auto-revealing macros, e.g. footnotes or citations, and environments in a buffer was added. * You can now control if indentation is done upon typing by customizing the variable `TeX-newline-function'. * Limited support for `doc.sty' and `ltxdoc.cls' (`dtx' files) was added. The new docTeX mode provides functionality for editing documentation parts. This includes formatting (indenting and filling), adding and completion of macros and environments while staying in comments as well as syntax highlighting. (Please note that the mode is not finished yet. For example syntax highlighting does not work yet in XEmacs.) * For macro completion in docTeX mode the AUCTeX style files `doc.el', `ltxdoc.el' and `ltx-base.el' were included. The latter provides general support for low-level LaTeX macros and may be used with LaTeX class and style files as well. It is currently not loaded automatically for those files. * Support for ConTeXt with a separate ConTeXt mode is now included. Macro definitions for completion are available in Dutch and English. * The filling and indentation code was overhauled and is now able to format commented parts of the source syntactically correct. Newly available functionality and customization options are explained in the manual. * Filling and indentation in XEmacs with preview-latex and activated previews lead to the insertion of whitespace before multi-line previews. AUCTeX now contains facilities to prevent this problem. * If `TeX-master' is set to `t', AUCTeX will now query for a master file only when a new file is opened. Existing files will be left alone. The new function `TeX-master-file-ask' (bound to `C-c _' is provided for adding the variable manually. * Sectioning commands are now shown in a larger font on display devices which support such fontification. The variable `font-latex-title-fontify' can be customized to restore the old appearance, i.e. the usage of a different color instead of a change in size. * Support for `alphanum.sty', `beamer.cls', `booktabs.sty', `captcont.sty', `emp.sty', `paralist.sty', `subfigure.sty' and `units.sty'/`nicefrac.sty' was added. Credits go to the authors mentioned in the respective AUCTeX style files. * Inserting graphics with `C-c RET \includegraphics RET' was improved. See the variable `LaTeX-includegraphics-options-alist'. * If `LaTeX-default-position' is `nil', don't prompt for position arguments in Tabular-like environments. * Completion for available packages when using `C-c RET \usepackage RET' was improved on systems using the kpathsea library. * The commenting functionality was fixed. The separate functions for commenting and uncommenting were unified in one function for paragraphs and regions respectively which do both. * Syntax highlighting can be customized to fontify quotes delimited by either >>German<< or <> quotation marks by changing the variable `font-latex-quotes'. * Certain TeX/LaTeX keywords for functions, references, variables and warnings will now be fontified specially. You may add your own keywords by customizing the variables `font-latex-match-function-keywords', `font-latex-match-reference-keywords', `font-latex-match-variable-keywords' and `font-latex-match-warning-keywords'. * If you include the style files `german' or `ngerman' in a document (directly or via the `babel' package), you should now customize `LaTeX-german-open-quote', `LaTeX-german-close-quote' and `LaTeX-german-quote-after-quote' instead of `TeX-open-quote', `TeX-close-quote' and `TeX-quote-after-quote' if you want to influence the type of quote insertion. * Upon viewing an output file, the right viewer and command line options for it are now determined automatically by looking at the extension of the output file and certain options used in the source file. The behavior can be adapted or extended respectively by customizing the variable `TeX-output-view-style'. * You can control whether `TeX-insert-macro' (`C-c RET') ask for all optional arguments by customizing the variable `TeX-insert-macro-default-style'. * `TeX-run-discard' is now able to completely detach a process that it started. * The build process was enhanced and is now based on `autoconf' making installing AUCTeX a mostly automatic process. See the files `INSTALL' and `INSTALL.windows' for details. News in 11.14 ============= * Many more LaTeX and LaTeX2e commands are supported. Done by Masayuki Ataka News in 11.12 ============= * Support for the KOMA-Script classes. Contributed by Mark Trettin . News in 11.11 ============= * Support for `prosper.sty', see `http://prosper.sourceforge.net/'. Contributed by Phillip Lord . News in 11.10 ============= * `comment-region' now inserts %% by default. Suggested by "Davide G. M. Salvetti" . News in 11.06 ============= * You can now switch between using the `font-latex' (all emacsen), the `tex-font' (Emacs 21 only) or no special package for font locking. Customize `TeX-install-font-lock' for this. News in 11.04 ============= * Now use -t landscape by default when landscape option appears. Suggested by Erik Frisk . News in 11.03 ============= * Use `tex-fptex.el' for fpTeX support. Contributed by Fabrice Popineau . News in 11.02 ============= * New user option `LaTeX-top-caption-list' specifies environments where the caption should go at top. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Allow explicit dimensions in `graphicx.sty'. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Limited support for `verbatim.sty'. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Better support for asmmath items. Patch by ataka@milk.freemail.ne.jp (Masayuki Ataka). * More accurate error parsing. Added by David Kastrup . News in 11.01 ============= * Bug fixes. auctex-11.87/FAQ0000644000000000000000000004370212056205161012057 0ustar rootrootFrequently Asked Questions about AUCTeX *************************************** 1. Something is not working correctly. What should I do? Well, you might have guessed it, the first place to look is in the available documentation packaged with AUCTeX. This could be the release notes (in the `RELEASE' file) or the news section of the manual in case you are experiencing problems after an upgrade, the `INSTALL' file in case you are having problems with the installation, the section about bugs in the manual in case you encountered a bug or the relevant sections in the manual for other related problems. If this did not help, you can send a bug report to the AUCTeX bug reporting list by using the command `M-x TeX-submit-bug-report RET'. But before you do this, you can try to get more information about the problem at hand which might also help you locate the cause of the error yourself. First, you can try to generate a so-called backtrace which shows the functions involved in a program error. In order to do this, start Emacs with the command line `emacs --debug-init' and/or put the line (setq debug-on-error t) as the first line into your init file. XEmacs users might want to add `(setq stack-trace-on-error t)' as well. After Emacs has started, you can load a file which triggers the error and a new window should pop up showing the backtrace. If you get such a backtrace, please include it in the bug report. Second, you can try to figure out if something in your personal or site configuration triggers the error by starting Emacs without such customizations. You can do this by invoking Emacs with the command line `emacs -q -no-site-file -l auctex'. The `-l' option `auctex.el' which you normally do in your init file. After you have started Emacs like this, you can load the file triggering the error. If everything is working now, you know that you have to search either in the site configuration file or your personal init file for statements related to the problem. 2. What versions of Emacs and XEmacs are supported? AUCTeX was tested with Emacs 21 and XEmacs 21.4.15. Older versions may work but are unsupported. Older versions of XEmacs might possibly made to work by updating the `xemacs-base' package through the XEmacs package system. If you are looking for a recommendation, it would appear that the smoothest working platform on all operating systems at the current point of time would be Emacs 22 or higher. Our success with XEmacs has been less than convincing. Code for core functionality like formatting and syntax highlighting tends to be different and often older than even Emacs 21.4, and Unicode support as delivered is problematic at best, missing on Windows. Both AUCTeX and XEmacs developers don't hear much from active users of the combination. Partly for that reason, problems tend to go unnoticed for long amounts of time and are often found, if at all, after releases. No experiences or recommendations can be given for beta or developer versions of XEmacs. 3. What should I do when `./configure' does not find programs like latex? This is problem often encountered on Windows. Make sure that the `PATH' environment variable includes the directories containing the relevant programs, as described in the file `INSTALL.windows' 4. Why doesn't the completion, style file, or multi-file stuff work? It must be enabled first, insert this in your init file: (setq-default TeX-master nil) (setq TeX-parse-self t) (setq TeX-auto-save t) Read also the chapters about parsing and multifile documents in the manual. 5. Why doesn't `TeX-save-document' work? `TeX-check-path' has to contain "./" somewhere. 6. Why is the information in `foo.tex' forgotten when I save `foo.bib'? For various reasons, AUCTeX ignores the extension when it stores information about a file, so you should use unique base names for your files. E.g. rename `foo.bib' to `foob.bib'. 7. Why doesn't AUCTeX signal when processing a document is done? If the message in the minibuffer stays "Type `C-c C-l' to display results of compilation.", you probably have a misconfiguration in your init file (`.emacs', `init.el' or similar). To track this down either search in the `*Messages*' buffer for an error message or put `(setq debug-on-error t)' as the first line into your init file, restart Emacs and open a LaTeX file. Emacs will complain loudly by opening a debugging buffer as soon as an error occurs. The information in the debugging buffer can help you find the cause of the error in your init file. 8. Why does `TeX-next-error' (`C-c `') fail? When writing the log file, TeX puts information related to a file, including error messages, between a pair of parentheses. AUCTeX determines the file where the error happened by parsing the log file and counting the parentheses. This can fail when there are other, unbalanced parentheses present. As a workaround you can activate so-called file:line:error messages for the log file. (Those are are easier to parse, but may lack some details.) Either you do this in the configuration of your TeX system (consult its manual to see where this is) or you add a command line switch to the (la)tex call, e.g. by customizing `LaTeX-command-style' or `TeX-command-list'. 9. What does AUC stand for? AUCTeX came into being at Aalborg University in Denmark. Back then the Danish name of the university was Aalborg Universitetscenter; AUC for short. Frequently Asked Questions about preview-latex ********************************************** 1 Introduction ************** 1.1 How can I contribute to the FAQ? ==================================== Send an email with the subject: Preview FAQ to . 2 Requirements ************** 2.1 Which version of (X)Emacs is needed? ======================================== See also the table at the end of the section. preview-latex nominally requires GNU Emacs with a version of at least 21.1. However, Emacs 22 (currently under development) offers superior performance and wider platform support, and is even now the recommended platform to use. While recent versions of XEmacs 21.4 are supported, doing this in a satisfactory manner has proven to be difficult due to technical shortcomings and differing API's which are hard to come by. If preview-latex is an important part of your editing workflow, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. 2.2 Which versions of Ghostscript and AUCTeX are needed? ======================================================== We recommend to use GNU or AFPL Ghostscript with a version of at least 7.07. preview-latex has been distributed as part of AUCTeX since version 11.80. If your version of AUCTeX is older than that, or if it does not contain a working copy of preview-latex, complain to wherever you got it from. 2.3 I have trouble with the display format... ============================================= We recommend keeping the variable `preview-image-type' set to `dvipng' (if you have it installed) or `png'. This is the default and can be set via the Preview/Customize menu. All other formats are known to have inconveniences, either in file size or quality. There are some Emacs versions around not supporting PNG; the proper way to deal with that is to complain to your Emacs provider. Short of that, checking out PNM or JPEG formats might be a good way to find out whether the lack of PNG format support might be the only problem with your Emacs. 2.4 For which OS does preview work? =================================== It is known to work under the X Window System for Linux and for several flavors of Unix: we have reports for HP and Solaris. There are several development versions of Emacs around for native MacOS Carbon, and preview-latex is working with them, too. With Windows, Cygwin and native ports of XEmacs should work. preview-latex will not work with any native version 21 of Emacs under Windows: you need to get a hold of Emacs 22 which is at the time of this writing not released but available as a developer snapshot. The entry "X11/Unix" currently means Linux, Solaris or HP/UX, as well as the X-specific version for Mac/OSX. OS Emacs version XEmacs version X11/Unix 21.1 21.4.9 Win9x cygwin 21.3.50? 21.4.8 Win9x native 22.1 21.4.8 MacOSX native 22.1 - 3 Installation Trouble ********************** 3.1 I just get `LaTeX found no preview images'. =============================================== The reason for this is that LaTeX found no preview images in the document in question. One reason might be that there are no previews to be seen. If you have not used preview-latex before, you might not know its manner of operation. One sure-fire way to test if you just have a document where no previews are to be found is to use the provided example document `circ.tex' (you will have to copy it to some directory where you have write permissions). If the symptom persists, you have a problem, and the problem is most likely a LaTeX problem. Here are possible reasons: Filename database not updated Various TeX distributions have their own ways of knowing where the files are without actually searching directories. The normal preview-latex installation should detect common tools for that purpose and use them. If this goes wrong, or if the files get installed into a place where they are not looked for, the LaTeX run will fail. An incomplete manual installation This should not happen if you followed installation instructions. Unfortunately, people know better all the time. If only `preview.sty' gets installed without a set of supplementary files also in the `latex' subdirectory, preview-latex runs will not generate any errors, but they will not produce any previews, either. An outdated `preview' installation The `preview.sty' package is useful for more than just preview-latex. For example, it is part of TeXlive. So you have to make sure that preview-latex does not get to work with outdated style and configuration files: some newer features will not work with older TeX style files, and really old files will make preview-latex fail completely. There usual is a local `texmf' tree, or even a user-specific tree that are searched before the default tree. Make sure that the first version of those files that gets found is the correct one. 3.2 I have problems with the XEmacs installation ================================================ Please note that the XEmacs installation is different, since XEmacs has a package system that gets used here. Please make sure that you read and follow the installation instructions for XEmacs. 4 Customization *************** 4.1 Why don't I get balloon help like in the screen shots? ========================================================== Some users have reported problems with their XEmacs version, so balloon help is no longer switched on by default. Use the Preview/Customize menu or ` customize-variable' in order to customize `preview-use-balloon-help' to `On'. This only concerns XEmacs: tooltips under GNU Emacs are enabled by default and unproblematic. 4.2 How to include additional environments like `enumerate' =========================================================== By default, preview-latex is intended mainly for displaying mathematical formulas, so environments like `enumerate' or `tabular' (except where contained in a float) are not included. You can include them however manually by adding the lines: \usepackage[displaymath,textmath,sections,graphics,floats]{preview} \PreviewEnvironment{enumerate} in your document header, that is before \begin{document} In general, `preview' should be loaded as the last thing before the start of document. Be aware that \PreviewEnvironment{...} does not accept a comma separated list! Also note that by putting more and more \PreviewEnvironment{...} in your document, it will look more and more like a DVI file preview when running preview-latex. Since each preview is treated as one large monolithic block by Emacs, one should really restrict previews to those elements where the improvement in visual representation more than makes up for the decreased editability. 4.3 What if I don't want to change the document? ================================================ The easiest way is to generate a configuration file in the current directory. You can basically either create `prdefault.cfg' which is used for any use of the `preview' package, or you can use `prauctex.cfg' which only applies to the use from with Emacs. Let us assume you use the latter. In that case you should write something like \InputIfFileExists{preview/prauctex.cfg}{}{} \PreviewEnvironment{enumerate} in it. The first line inputs the system-wide default configuration (the file name should match that, but not your own `prauctex.cfg'), then you add your own stuff. 4.4 Suddenly I get gazillions of ridiculous pages?!? ==================================================== When preview-latex works on extracting its stuff, it typesets each single preview on a page of its own. This only happens when actual previews get generated. Now if you want to configure preview-latex in your document, you need to add your own `\usepackage' call to `preview' so that it will be able to interpret its various definition commands. It is an error to add the `active' option to this invocation: you don't want the package to be active unless preview-latex itself enables the previewing operation (which it will). 4.5 Does preview-latex work with presentation classes? ====================================================== preview-latex should work with most presentation classes. However, since those classes often have macros or pseudo environments encompassing a complete slide, you will need to use the customization facilities of `preview.sty' to tell it how to resolve this, whether you want no previews, previews of whole slides or previews of inner material. 5 Troubleshooting ***************** 5.1 Preview causes all sort of strange error messages ===================================================== When running preview-latex and taking a look at either log file or terminal output, lots of messages like ! Preview: Snippet 3 started. <-><-> l.52 \item Sie lassen sich als Funktion $ y = f(x)$ darstellen. ! Preview: Snippet 3 ended.(491520+163840x2494310). <-><-> l.52 \item Sie lassen sich als Funktion $y = f(x)$ darstellen. appear (previous versions generated messages looking even more like errors). Those are not real errors (as will be noted in the log file). Or rather, while they *are* really TeX error messages, they are intentional. This currently is the only reliable way to pass the information from the LaTeX run of preview-latex to its Emacs part about where the previews originated in the source text. Since they are actual errors, you will also get AUCTeX to state Preview-LaTeX exited as expected with code 1 at Wed Sep 4 17:03:30 after the LaTeX run in the run buffer. This merely indicates that errors were present, and errors will always be present when preview-latex is operating. There might be also real errors, so in case of doubt, look for them explicitly in either run buffer or the resulting `.log' file. 5.2 Why do my DVI and PDF output files vanish? ============================================== In order to produce the preview images preview-latex runs LaTeX on the master or region file. The resulting DVI or PDF file can happen to have the same name as the output file of a regular LaTeX run. So the regular output file gets overwritten and is subsequently deleted by preview-latex. 5.3 My output file suddenly only contains preview images?! ========================================================== As mentioned in the previews FAQ entry, preview-latex might use the file name of the original output file for the creation of preview images. If the original output file is being displayed with a viewer when this happens, you might see strange effects depending on the viewer, e.g. a message about the file being corrupted or the display of all the preview images instead of your typeset document. (Also *Note Customization::.) 6 preview-latex when not using LaTeX ************************************ 6.1 Does preview-latex work with PDFLaTeX? =========================================== Yes, as long as you use AUCTeX's own PDFLaTeX mode and have not messed with `TeX-command-list'. 6.2 Does preview-latex work with `elatex'? ========================================== No problem here. If you configure your AUCTeX to use `elatex', or simply have `latex' point to `elatex', this will work fine. Modern TeX distributions use eTeX for LaTeX, anyway. 6.3 Does preview-latex work with ConTeXt? ========================================= In short, no. The `preview' package is LaTeX-dependent. Adding support for other formats requires volunteers. 6.4 Does preview-latex work with plain TeX? =========================================== Again, no. Restructuring the `preview' package for `plain' operation would be required. Volunteers welcome. In some cases you might get around by making a wrapper pseudo-Master file looking like the following: \documentclass{article} \usepackage{plain} \begin{document} \begin{plain} \input myplainfile \end{plain} \end{document} auctex-11.87/tex-fold.el0000644000000000000000000010660111553636570013604 0ustar rootroot;;; tex-fold.el --- Fold TeX macros. ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Free Software ;; Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-07-04 ;; Keywords: tex, wp ;; 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 provides support for hiding and unhiding TeX, LaTeX, ;; ContTeXt, Texinfo and similar macros and environments inside of ;; AUCTeX. ;; ;; Caveats: ;; ;; The display string of content which should display part of itself ;; is made by copying the text from the buffer together with its text ;; properties. If fontification has not happened when this is done ;; (e.g. because of lazy or just-in-time font locking) the intended ;; fontification will not show up. Maybe this could be improved by ;; using some sort of "lazy folding" or refreshing the window upon ;; scrolling. As a workaround fontification of the whole buffer ;; currently is forced before folding it. ;;; Code: (when (featurep 'xemacs) (require 'overlay)) (require 'tex) (autoload 'LaTeX-forward-paragraph "latex") (autoload 'LaTeX-backward-paragraph "latex") (autoload 'LaTeX-find-matching-begin "latex") (autoload 'LaTeX-find-matching-end "latex") (autoload 'ConTeXt-find-matching-start "context") (autoload 'ConTeXt-find-matching-stop "context") (autoload 'Texinfo-find-env-start "tex-info") (autoload 'Texinfo-find-env-end "tex-info") (defgroup TeX-fold nil "Fold TeX macros." :group 'AUCTeX) (defcustom TeX-fold-type-list '(env macro math) "List of item types to consider when folding. Valid items are the symbols 'env for environments, 'macro for macros, 'math for math macros and 'comment for comments." :type '(set (const :tag "Environments" env) (const :tag "Macros" macro) (const :tag "Math Macros" math) (const :tag "Comments" comment)) :group 'TeX-fold) (defcustom TeX-fold-macro-spec-list `(("[f]" ("footnote" "marginpar")) ("[c]" ("cite")) ("[l]" ("label")) ("[r]" ("ref" "pageref" "eqref")) ("[i]" ("index" "glossary")) ("[1]:||*" ("item")) ("..." ("dots")) ("(C)" ("copyright")) ("(R)" ("textregistered")) ("TM" ("texttrademark")) (1 ("part" "chapter" "section" "subsection" "subsubsection" "paragraph" "subparagraph" "part*" "chapter*" "section*" "subsection*" "subsubsection*" "paragraph*" "subparagraph*" "emph" "textit" "textsl" "textmd" "textrm" "textsf" "texttt" "textbf" "textsc" "textup"))) "List of replacement specifiers and macros to fold. The first element of each item can be a string, an integer or a function symbol. The second element is a list of macros two fold without the leading backslash. If the first element is a string, it will be used as a display replacement for the whole macro. Numbers in braces, brackets, parens or angle brackets will be replaced by the respective macro argument. For example \"{1}\" will be replaced by the first mandatory argument of the macro. One can also define alternatives within the specifier which are used if an argument is not found. Alternatives are separated by \"||\". They are most useful with optional arguments. As an example, the default specifier for \\item is \"[1]:||*\" which means that if there is an optional argument, its value is shown followed by a colon. If there is no optional argument, only an asterisk is used as the display string. If the first element is an integer, the macro will be replaced by the respective macro argument. If the first element is a function symbol, the function will be called with all mandatory arguments of the macro and the result of the function call will be used as a replacement for the macro. Setting this variable does not take effect immediately. Use Customize or reset the mode." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1) (function :tag "Function to execute")) (repeat :tag "Macros" (string)))) :group 'TeX-fold) (defvar TeX-fold-macro-spec-list-internal nil "Internal list of display strings and macros to fold. Is updated when the TeX Fold mode is being activated and then contains all constructs to fold for the given buffer or mode respectively, i.e. contents of both `TeX-fold-macro-spec-list' and -fold-macro-spec-list.") (make-variable-buffer-local 'TeX-fold-macro-spec-list-internal) (defcustom TeX-fold-env-spec-list '(("[comment]" ("comment"))) "List of display strings and environments to fold." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1)) (repeat :tag "Environments" (string)))) :group 'TeX-fold) (defvar TeX-fold-env-spec-list-internal nil "Internal list of display strings and environments to fold. Is updated when the TeX Fold mode is being activated and then contains all constructs to fold for the given buffer or mode respectively, i.e. contents of both `TeX-fold-env-spec-list' and -fold-env-spec-list.") (make-variable-buffer-local 'TeX-fold-env-spec-list-internal) (defcustom TeX-fold-math-spec-list nil "List of display strings and math macros to fold." :type '(repeat (group (choice (string :tag "Display String") (integer :tag "Number of argument" :value 1)) (repeat :tag "Math Macros" (string)))) :group 'TeX-fold) (defvar TeX-fold-math-spec-list-internal nil "Internal list of display strings and math macros to fold. Is updated when the TeX Fold mode is being activated and then contains all constructs to fold for the given buffer or mode respectively, i.e. contents of both `TeX-fold-math-spec-list' and -fold-math-spec-list.") (make-variable-buffer-local 'TeX-fold-math-spec-list-internal) (defcustom TeX-fold-unspec-macro-display-string "[m]" "Display string for unspecified macros. This string will be displayed if a single macro is being hidden which is not specified in `TeX-fold-macro-spec-list'." :type '(string) :group 'TeX-fold) (defcustom TeX-fold-unspec-env-display-string "[env]" "Display string for unspecified environments. This string will be displayed if a single environment is being hidden which is not specified in `TeX-fold-env-spec-list'." :type '(string) :group 'TeX-fold) (defcustom TeX-fold-unspec-use-name t "If non-nil use the name of an unspecified item as display string. Set it to nil if you want to use the values of the variables `TeX-fold-unspec-macro-display-string' or `TeX-fold-unspec-env-display-string' respectively as a display string for any unspecified macro or environment." :type 'boolean :group 'TeX-fold) (defcustom TeX-fold-preserve-comments nil "If non-nil do not fold in comments." :type 'boolean :group 'TeX-fold) (defcustom TeX-fold-unfold-around-mark t "Unfold text around the mark, if active." :type 'boolean :group 'TeX-fold) (defcustom TeX-fold-help-echo-max-length 70 "Maximum length of help echo message for folded overlays. Set it to zero in order to disable help echos." :type 'integer :group 'TeX-fold) (defcustom TeX-fold-force-fontify t "Force the buffer to be fully fontified by folding it." :group 'TeX-fold :type 'boolean) (defcustom TeX-fold-auto nil "If non-nil, fold macros automatically after `TeX-insert-macro'." :group 'TeX-fold :type 'boolean) (defface TeX-fold-folded-face '((((class color) (background light)) (:foreground "SlateBlue")) (((class color) (background dark)) (:foreground "SlateBlue1")) (((class grayscale) (background light)) (:foreground "DimGray")) (((class grayscale) (background dark)) (:foreground "LightGray")) (t (:slant italic))) "Face for the display string of folded content." :group 'TeX-fold) (defvar TeX-fold-folded-face 'TeX-fold-folded-face "Face for the display string of folded content.") (defface TeX-fold-unfolded-face '((((class color) (background light)) (:background "#f2f0fd")) (((class color) (background dark)) (:background "#38405d")) (((class grayscale) (background light)) (:background "LightGray")) (((class grayscale) (background dark)) (:background "DimGray")) (t (:inverse-video t))) "Face for folded content when it is temporarily opened." :group 'TeX-fold) (defvar TeX-fold-unfolded-face 'TeX-fold-unfolded-face "Face for folded content when it is temporarily opened.") (defvar TeX-fold-ellipsis "..." "String used as display string for overlays instead of a zero-length string.") (defvar TeX-fold-open-spots nil) (make-variable-buffer-local 'TeX-fold-open-spots) (defcustom TeX-fold-command-prefix "\C-c\C-o" "Prefix key to use for commands in TeX Fold mode. The value of this variable is checked as part of loading TeX Fold mode. After that, changing the prefix key requires manipulating keymaps." :type 'string :group 'TeX-fold) (defvar TeX-fold-keymap (let ((map (make-sparse-keymap))) (define-key map "\C-o" 'TeX-fold-dwim) (define-key map "\C-b" 'TeX-fold-buffer) (define-key map "\C-r" 'TeX-fold-region) (define-key map "\C-p" 'TeX-fold-paragraph) (define-key map "\C-m" 'TeX-fold-macro) (define-key map "\C-e" 'TeX-fold-env) (define-key map "\C-c" 'TeX-fold-comment) (define-key map "b" 'TeX-fold-clearout-buffer) (define-key map "r" 'TeX-fold-clearout-region) (define-key map "p" 'TeX-fold-clearout-paragraph) (define-key map "i" 'TeX-fold-clearout-item) map)) ;;; Folding (defun TeX-fold-dwim () "Hide or show items according to the current context. If there is folded content, unfold it. If there is a marked region, fold all configured content in this region. If there is no folded content but a macro or environment, fold it." (interactive) (cond ((TeX-fold-clearout-item)) ((TeX-active-mark) (TeX-fold-region (mark) (point))) ((TeX-fold-item 'macro)) ((TeX-fold-item 'math)) ((TeX-fold-item 'env)) ((TeX-fold-comment)))) (defun TeX-fold-buffer () "Hide all configured macros and environments in the current buffer. The relevant macros are specified in the variable `TeX-fold-macro-spec-list' and `TeX-fold-math-spec-list', and environments in `TeX-fold-env-spec-list'." (interactive) (TeX-fold-clearout-region (point-min) (point-max)) (when (and TeX-fold-force-fontify (boundp 'jit-lock-mode) jit-lock-mode (fboundp 'jit-lock-fontify-now)) ;; We force fontification here only because it should rarely be ;; needed for the other folding commands. (jit-lock-fontify-now)) (TeX-fold-region (point-min) (point-max))) (defun TeX-fold-paragraph () "Hide all configured macros and environments in the current paragraph. The relevant macros are specified in the variable `TeX-fold-macro-spec-list' and `TeX-fold-math-spec-list', and environments in `TeX-fold-env-spec-list'." (interactive) (save-excursion (let ((end (progn (LaTeX-forward-paragraph) (point))) (start (progn (LaTeX-backward-paragraph) (point)))) (TeX-fold-clearout-region start end) (TeX-fold-region start end)))) (defun TeX-fold-region (start end) "Fold all items in region from START to END." (interactive "r") (when (and (memq 'env TeX-fold-type-list) (not (eq major-mode 'plain-tex-mode))) (TeX-fold-region-macro-or-env start end 'env)) (when (memq 'macro TeX-fold-type-list) (TeX-fold-region-macro-or-env start end 'macro)) (when (memq 'math TeX-fold-type-list) (TeX-fold-region-macro-or-env start end 'math)) (when (memq 'comment TeX-fold-type-list) (TeX-fold-region-comment start end))) (defun TeX-fold-region-macro-or-env (start end type) "Fold all items of type TYPE in region from START to END. TYPE can be one of the symbols 'env for environments, 'macro for macros and 'math for math macros." (save-excursion (let (fold-list item-list regexp) (dolist (item (cond ((eq type 'env) TeX-fold-env-spec-list-internal) ((eq type 'math) TeX-fold-math-spec-list-internal) (t TeX-fold-macro-spec-list-internal))) (dolist (i (cadr item)) (add-to-list 'fold-list (list i (car item))) (add-to-list 'item-list i))) (when item-list (setq regexp (cond ((and (eq type 'env) (eq major-mode 'context-mode)) (concat (regexp-quote TeX-esc) "start" (regexp-opt item-list t))) ((and (eq type 'env) (eq major-mode 'texinfo-mode)) (concat (regexp-quote TeX-esc) (regexp-opt item-list t))) ((eq type 'env) (concat (regexp-quote TeX-esc) "begin[ \t]*{" (regexp-opt item-list t) "}")) (t (concat (regexp-quote TeX-esc) (regexp-opt item-list t))))) (save-restriction (narrow-to-region start end) ;; Start from the bottom so that it is easier to prioritize ;; nested macros. (goto-char (point-max)) (let ((case-fold-search nil) item-name) (while (re-search-backward regexp nil t) (setq item-name (match-string 1)) (unless (or (and TeX-fold-preserve-comments (TeX-in-commented-line)) ;; Make sure no partially matched macros are ;; folded. For macros consisting of letters ;; this means there should be none of the ;; characters [A-Za-z@*] after the matched ;; string. Single-char non-letter macros like ;; \, don't have this requirement. (and (memq type '(macro math)) (save-match-data (string-match "[A-Za-z]" item-name)) (save-match-data (string-match "[A-Za-z@*]" (string (char-after (match-end 0))))))) (let* ((item-start (match-beginning 0)) (display-string-spec (cadr (assoc item-name fold-list))) (item-end (TeX-fold-item-end item-start type)) (ov (TeX-fold-make-overlay item-start item-end type display-string-spec))) (TeX-fold-hide-item ov)))))))))) (defun TeX-fold-region-comment (start end) "Fold all comments in region from START to END." (save-excursion (goto-char start) (let (beg) (while (setq beg (TeX-search-forward-comment-start end)) (goto-char beg) ;; Determine the start of the region to be folded just behind ;; the comment starter. (looking-at TeX-comment-start-regexp) (setq beg (match-end 0)) ;; Search for the end of the comment. (while (TeX-comment-forward)) (end-of-line 0) ;; Hide the whole region. (TeX-fold-hide-item (TeX-fold-make-overlay beg (point) 'comment TeX-fold-ellipsis)))))) (defun TeX-fold-macro () "Hide the macro on which point currently is located." (interactive) (unless (TeX-fold-item 'macro) (message "No macro found"))) (defun TeX-fold-math () "Hide the math macro on which point currently is located." (interactive) (unless (TeX-fold-item 'math) (message "No macro found"))) (defun TeX-fold-env () "Hide the environment on which point currently is located." (interactive) (unless (TeX-fold-item 'env) (message "No environment found"))) (defun TeX-fold-comment () "Hide the comment on which point currently is located." (interactive) (unless (TeX-fold-comment-do) (message "No comment found"))) (defun TeX-fold-item (type) "Hide the item on which point currently is located. TYPE specifies the type of item and can be one of the symbols 'env for environments, 'macro for macros or 'math for math macros. Return non-nil if an item was found and folded, nil otherwise." (if (and (eq type 'env) (eq major-mode 'plain-tex-mode)) (message "Folding of environments is not supported in current mode") (let ((item-start (cond ((and (eq type 'env) (eq major-mode 'context-mode)) (save-excursion (ConTeXt-find-matching-start) (point))) ((and (eq type 'env) (eq major-mode 'texinfo-mode)) (save-excursion (Texinfo-find-env-start) (point))) ((eq type 'env) (condition-case nil (save-excursion (LaTeX-find-matching-begin) (point)) (error nil))) (t (TeX-find-macro-start))))) (when item-start (let* ((item-name (save-excursion (goto-char item-start) (looking-at (cond ((and (eq type 'env) (eq major-mode 'context-mode)) (concat (regexp-quote TeX-esc) "start\\([A-Za-z]+\\)")) ((and (eq type 'env) (eq major-mode 'texinfo-mode)) (concat (regexp-quote TeX-esc) "\\([A-Za-z]+\\)")) ((eq type 'env) (concat (regexp-quote TeX-esc) "begin[ \t]*{" "\\([A-Za-z]+\\)}")) (t (concat (regexp-quote TeX-esc) "\\([A-Za-z@*]+\\)")))) (if (fboundp 'match-string-no-properties) (match-string-no-properties 1) (match-string 1)))) (fold-list (cond ((eq type 'env) TeX-fold-env-spec-list-internal) ((eq type 'math) TeX-fold-math-spec-list-internal) (t TeX-fold-macro-spec-list-internal))) fold-item (display-string-spec (or (catch 'found (while fold-list (setq fold-item (car fold-list)) (setq fold-list (cdr fold-list)) (when (member item-name (cadr fold-item)) (throw 'found (car fold-item))))) ;; Item is not specified. (if TeX-fold-unspec-use-name (concat "[" item-name "]") (if (eq type 'env) TeX-fold-unspec-env-display-string TeX-fold-unspec-macro-display-string)))) (item-end (TeX-fold-item-end item-start type)) (ov (TeX-fold-make-overlay item-start item-end type display-string-spec))) (TeX-fold-hide-item ov)))))) (defun TeX-fold-comment-do () "Hide the comment on which point currently is located. This is the function doing the work for `TeX-fold-comment'. It is an internal function communicating with return values rather than with messages for the user. Return non-nil if a comment was found and folded, nil otherwise." (if (and (not (TeX-in-comment)) (not (TeX-in-line-comment))) nil (let (beg) (save-excursion (while (progn (beginning-of-line 0) (and (TeX-in-line-comment) (not (bobp))))) (goto-char (TeX-search-forward-comment-start (line-end-position 2))) (looking-at TeX-comment-start-regexp) (setq beg (match-end 0)) (while (TeX-comment-forward)) (end-of-line 0) (when (> (point) beg) (TeX-fold-hide-item (TeX-fold-make-overlay beg (point) 'comment TeX-fold-ellipsis))))))) ;;; Utilities (defun TeX-fold-make-overlay (ov-start ov-end type display-string-spec) "Make a TeX-fold overlay extending from OV-START to OV-END. TYPE is a symbol which is used to describe the content to hide and may be 'macro for macros, 'math for math macro and 'env for environments. DISPLAY-STRING-SPEC is the original specification of the display string in the variables `TeX-fold-macro-spec-list' or `TeX-fold-env-spec-list' and may be a string or an integer." ;; Calculate priority before the overlay is instantiated. We don't ;; want `TeX-overlay-prioritize' to pick up a non-prioritized one. (let ((priority (TeX-overlay-prioritize ov-start ov-end)) (ov (make-overlay ov-start ov-end (current-buffer) t nil))) (overlay-put ov 'category 'TeX-fold) (overlay-put ov 'priority priority) (overlay-put ov 'evaporate t) (overlay-put ov 'TeX-fold-type type) (overlay-put ov 'TeX-fold-display-string-spec display-string-spec) ov)) (defun TeX-fold-item-end (start type) "Return the end of an item of type TYPE starting at START. TYPE can be either 'env for environments, 'macro for macros or 'math for math macros." (save-excursion (cond ((and (eq type 'env) (eq major-mode 'context-mode)) (goto-char start) (ConTeXt-find-matching-stop) (point)) ((and (eq type 'env) (eq major-mode 'texinfo-mode)) (goto-char (1+ start)) (Texinfo-find-env-end) (point)) ((eq type 'env) (goto-char (1+ start)) (LaTeX-find-matching-end) (point)) (t (goto-char start) (TeX-find-macro-end))))) (defun TeX-fold-overfull-p (ov-start ov-end display-string) "Return t if an overfull line will result after adding an overlay. The overlay extends from OV-START to OV-END and will display the string DISPLAY-STRING." (and (not (featurep 'xemacs)) ; Linebreaks in glyphs don't ; work in XEmacs anyway. (save-excursion (goto-char ov-end) (search-backward "\n" ov-start t)) (not (string-match "\n" display-string)) (> (+ (- ov-start (save-excursion (goto-char ov-start) (line-beginning-position))) (length display-string) (- (save-excursion (goto-char ov-end) (line-end-position)) ov-end)) (current-fill-column)))) (defun TeX-fold-macro-nth-arg (n macro-start &optional macro-end delims) "Return a property list of the argument number N of a macro. The start of the macro to examine is given by MACRO-START, its end optionally by MACRO-END. With DELIMS the type of delimiters can be specified as a cons cell containing the opening char as the car and the closing char as the cdr. The chars have to have opening and closing syntax as defined in `TeX-search-syntax-table'. The first item in the returned list is the string specified in the argument, the second item may be a face if the argument string was fontified. In Emacs the string holds text properties as well, so the second item is always nil. In XEmacs the string does not enclose any faces, so these are given in the second item of the resulting list." (save-excursion (let* ((macro-end (or macro-end (save-excursion (goto-char macro-start) (TeX-find-macro-end)))) (open-char (if delims (car delims) ?{)) (open-string (char-to-string open-char)) (close-char (if delims (cdr delims) ?})) (close-string (char-to-string close-char)) content-start content-end) (goto-char macro-start) (if (condition-case nil (progn (while (> n 0) (skip-chars-forward (concat "^" open-string) macro-end) (when (= (point) macro-end) (error nil)) (setq content-start (progn (skip-chars-forward (concat open-string " \t")) (point))) (goto-char (if delims (with-syntax-table (TeX-search-syntax-table open-char close-char) (scan-lists (point) 1 1)) (TeX-find-closing-brace))) (setq content-end (save-excursion (backward-char) (skip-chars-backward " \t") (point))) (setq n (1- n))) t) (error nil)) (list (TeX-fold-buffer-substring content-start content-end) (when (and (featurep 'xemacs) (extent-at content-start)) ;; A glyph in XEmacs does not seem to be able to hold more ;; than one face, so we just use the first one we get. (car (extent-property (extent-at content-start) 'face)))) nil)))) (defun TeX-fold-buffer-substring (start end) "Return the contents of buffer from START to END as a string. Like `buffer-substring' but copy overlay display strings as well." ;; Swap values of `start' and `end' if necessary. (when (> start end) (let ((tmp start)) (setq start end end tmp))) (let ((overlays (overlays-in start end)) result) ;; Get rid of overlays not under our control or not completely ;; inside the specified region. (dolist (ov overlays) (when (or (not (eq (overlay-get ov 'category) 'TeX-fold)) (< (overlay-start ov) start) (> (overlay-end ov) end)) (setq overlays (remove ov overlays)))) (if (null overlays) (buffer-substring start end) ;; Sort list according to ascending starts. (setq overlays (sort (copy-sequence overlays) (lambda (a b) (< (overlay-start a) (overlay-start b))))) ;; Get the string from the start of the region up to the first overlay. (setq result (buffer-substring start (overlay-start (car overlays)))) (let (ov) (while overlays (setq ov (car overlays) overlays (cdr overlays)) ;; Add the display string of the overlay. (setq result (concat result (overlay-get ov 'display))) ;; Remove overlays contained in the current one. (dolist (elt overlays) (when (< (overlay-start elt) (overlay-end ov)) (setq overlays (remove elt overlays)))) ;; Add the string from the end of the current overlay up to ;; the next overlay or the end of the specified region. (setq result (concat result (buffer-substring (overlay-end ov) (if overlays (overlay-start (car overlays)) end)))))) result))) (defun TeX-fold-make-help-echo (start end) "Return a string to be used as the help echo of folded overlays. The text between START and END will be used for this but cropped to the length defined by `TeX-fold-help-echo-max-length'. Line breaks will be replaced by spaces." (let* ((spill (+ start TeX-fold-help-echo-max-length)) (lines (split-string (buffer-substring start (min end spill)) "\n")) (result (pop lines))) (dolist (line lines) ;; Strip leading whitespace (when (string-match "^[ \t]+" line) (setq line (replace-match "" nil nil line))) ;; Strip trailing whitespace (when (string-match "[ \t]+$" line) (setq line (replace-match "" nil nil line))) (setq result (concat result " " line))) (when (> end spill) (setq result (concat result "..."))) result)) (defun TeX-fold-update-at-point () "Update all TeX-fold overlays at point displaying computed content." (let (overlays) ;; Get all overlays at point under our control. (dolist (ov (overlays-at (point))) (when (and (eq (overlay-get ov 'category) 'TeX-fold) (numberp (overlay-get ov 'TeX-fold-display-string-spec))) (add-to-list 'overlays ov))) (when overlays ;; Sort list according to descending starts. (setq overlays (sort (copy-sequence overlays) (lambda (a b) (> (overlay-start a) (overlay-start b))))) (dolist (ov overlays) (TeX-fold-hide-item ov))))) ;;; Removal (defun TeX-fold-clearout-buffer () "Permanently show all macros in the buffer." (interactive) (TeX-fold-clearout-region (point-min) (point-max))) (defun TeX-fold-clearout-paragraph () "Permanently show all macros in the paragraph point is located in." (interactive) (save-excursion (let ((end (progn (LaTeX-forward-paragraph) (point))) (start (progn (LaTeX-backward-paragraph) (point)))) (TeX-fold-clearout-region start end)))) (defun TeX-fold-clearout-region (start end) "Permanently show all macros in region starting at START and ending at END." (interactive "r") (let ((overlays (overlays-in start end))) (TeX-fold-remove-overlays overlays))) (defun TeX-fold-clearout-item () "Permanently show the macro on which point currently is located." (interactive) (let ((overlays (overlays-at (point)))) (TeX-fold-remove-overlays overlays))) (defun TeX-fold-remove-overlays (overlays) "Remove all overlays set by TeX-fold in OVERLAYS. Return non-nil if a removal happened, nil otherwise." (let (found) (while overlays (when (eq (overlay-get (car overlays) 'category) 'TeX-fold) (delete-overlay (car overlays)) (setq found t)) (setq overlays (cdr overlays))) found)) ;;; Toggling (defun TeX-fold-expand-spec (spec ov-start ov-end) "Expand instances of {}, [], <>, and (). Replace them with the respective macro argument." (let ((spec-list (split-string spec "||")) (delims '((?{ . ?}) (?[ . ?]) (?< . ?>) (?\( . ?\)))) index success) (catch 'success ;; Iterate over alternatives. (dolist (elt spec-list) (setq spec elt index nil) ;; Find and expand every placeholder. (while (and (string-match "\\([[{<]\\)\\([1-9]\\)\\([]}>]\\)" elt index) ;; Does the closing delim match the opening one? (string-equal (match-string 3 elt) (char-to-string (cdr (assq (string-to-char (match-string 1 elt)) delims))))) (setq index (match-end 0)) (let ((arg (car (save-match-data ;; Get the argument. (TeX-fold-macro-nth-arg (string-to-number (match-string 2 elt)) ov-start ov-end (assoc (string-to-char (match-string 1 elt)) delims)))))) (when arg (setq success t)) ;; Replace the placeholder in the string. (setq elt (replace-match (or arg TeX-fold-ellipsis) nil t elt) index (+ index (- (length elt) (length spec))) spec elt))) (when success (throw 'success nil)))) spec)) (defun TeX-fold-hide-item (ov) "Hide a single macro or environment. That means, put respective properties onto overlay OV." (let* ((ov-start (overlay-start ov)) (ov-end (overlay-end ov)) (spec (overlay-get ov 'TeX-fold-display-string-spec)) (computed (cond ((stringp spec) (TeX-fold-expand-spec spec ov-start ov-end)) ((functionp spec) (let (arg arg-list (n 1)) (while (setq arg (TeX-fold-macro-nth-arg n ov-start ov-end)) (add-to-list 'arg-list (car arg) t) (setq n (1+ n))) (or (condition-case nil (apply spec arg-list) (error nil)) "[Error: No content or function found]"))) (t (or (TeX-fold-macro-nth-arg spec ov-start ov-end) "[Error: No content found]")))) (display-string (if (listp computed) (car computed) computed)) (face (when (listp computed) (cadr computed)))) ;; Cater for zero-length display strings. (when (string= display-string "") (setq display-string TeX-fold-ellipsis)) ;; Add a linebreak to the display string and adjust the overlay end ;; in case of an overfull line. (when (TeX-fold-overfull-p ov-start ov-end display-string) (setq display-string (concat display-string "\n")) (move-overlay ov ov-start (save-excursion (goto-char ov-end) (skip-chars-forward " \t") (point)))) (overlay-put ov 'mouse-face 'highlight) (overlay-put ov 'display display-string) (if (featurep 'xemacs) (let ((glyph (make-glyph (if (listp display-string) (car display-string) display-string)))) (overlay-put ov 'invisible t) (when font-lock-mode (if face (set-glyph-property glyph 'face face) (set-glyph-property glyph 'face TeX-fold-folded-face))) (set-extent-property ov 'end-glyph glyph)) (when font-lock-mode (overlay-put ov 'face TeX-fold-folded-face)) (unless (zerop TeX-fold-help-echo-max-length) (overlay-put ov 'help-echo (TeX-fold-make-help-echo (overlay-start ov) (overlay-end ov))))))) (defun TeX-fold-show-item (ov) "Show a single LaTeX macro or environment. Remove the respective properties from the overlay OV." (overlay-put ov 'mouse-face nil) (if (featurep 'xemacs) (progn (set-extent-property ov 'end-glyph nil) (overlay-put ov 'invisible nil)) (overlay-put ov 'display nil) (overlay-put ov 'help-echo nil) (when font-lock-mode (overlay-put ov 'face TeX-fold-unfolded-face)))) ;; Copy and adaption of `reveal-post-command' from reveal.el in GNU ;; Emacs on 2004-07-04. (defun TeX-fold-post-command () ;; `with-local-quit' is not supported in XEmacs. (condition-case nil (let ((inhibit-quit nil)) (condition-case err (let* ((spots (TeX-fold-partition-list (lambda (x) ;; We refresh any spot in the current ;; window as well as any spots associated ;; with a dead window or a window which ;; does not show this buffer any more. (or (eq (car x) (selected-window)) (not (window-live-p (car x))) (not (eq (window-buffer (car x)) (current-buffer))))) TeX-fold-open-spots)) (old-ols (mapcar 'cdr (car spots)))) (setq TeX-fold-open-spots (cdr spots)) (when (or (and (boundp 'disable-point-adjustment) disable-point-adjustment) (and (boundp 'global-disable-point-adjustment) global-disable-point-adjustment) ;; See preview.el on how to make this configurable. (memq this-command (list (key-binding [left]) (key-binding [right]) 'backward-char 'forward-char 'mouse-set-point))) ;; Open new overlays. (dolist (ol (nconc (when (and TeX-fold-unfold-around-mark (boundp 'mark-active) mark-active) (overlays-at (mark))) (overlays-at (point)))) (when (eq (overlay-get ol 'category) 'TeX-fold) (push (cons (selected-window) ol) TeX-fold-open-spots) (setq old-ols (delq ol old-ols)) (TeX-fold-show-item ol)))) ;; Close old overlays. (dolist (ol old-ols) (when (and (eq (current-buffer) (overlay-buffer ol)) (not (rassq ol TeX-fold-open-spots)) (or (not (featurep 'xemacs)) (and (featurep 'xemacs) (not (extent-detached-p ol))))) (if (and (>= (point) (overlay-start ol)) (<= (point) (overlay-end ol))) ;; Still near the overlay: keep it open. (push (cons (selected-window) ol) TeX-fold-open-spots) ;; Really close it. (TeX-fold-hide-item ol))))) (error (message "TeX-fold: %s" err)))) (quit (setq quit-flag t)))) ;;; Misc ;; Copy and adaption of `cvs-partition' from pcvs-util.el in GNU Emacs ;; on 2004-07-05 to make tex-fold.el mainly self-contained. (defun TeX-fold-partition-list (p l) "Partition a list L into two lists based on predicate P. The function returns a `cons' cell where the `car' contains elements of L for which P is true while the `cdr' contains the other elements. The ordering among elements is maintained." (let (car cdr) (dolist (x l) (if (funcall p x) (push x car) (push x cdr))) (cons (nreverse car) (nreverse cdr)))) ;;; The mode ;; This autoload cookie had to be changed because of XEmacs. This is ;; very dissatisfactory, because we now don't have the full doc string ;; available to tell people what to expect when using this mode before ;; loading it. ;;;###autoload (autoload 'TeX-fold-mode "tex-fold" "Minor mode for hiding and revealing macros and environments." t) (define-minor-mode TeX-fold-mode "Minor mode for hiding and revealing macros and environments. Called interactively, with no prefix argument, toggle the mode. With universal prefix ARG (or if ARG is nil) turn mode on. With zero or negative ARG turn mode off." nil nil (list (cons TeX-fold-command-prefix TeX-fold-keymap)) (if TeX-fold-mode (progn (set (make-local-variable 'search-invisible) t) (add-hook 'post-command-hook 'TeX-fold-post-command nil t) (add-hook 'LaTeX-fill-newline-hook 'TeX-fold-update-at-point nil t) (add-hook 'TeX-after-insert-macro-hook (lambda () (when (and TeX-fold-mode TeX-fold-auto) (save-excursion (backward-char) (or (TeX-fold-item 'macro) (TeX-fold-item 'math) (TeX-fold-item 'env)))))) ;; Update the `TeX-fold-*-spec-list-internal' variables. (dolist (elt '("macro" "env" "math")) (set (intern (format "TeX-fold-%s-spec-list-internal" elt)) ;; Append the value of `TeX-fold-*-spec-list' to the ;; mode-specific `-fold-*-spec-list' variable. (append (symbol-value (intern (format "TeX-fold-%s-spec-list" elt))) (let ((symbol (intern (format "%s-fold-%s-spec-list" (TeX-mode-prefix) elt)))) (when (boundp symbol) (symbol-value symbol))))))) (kill-local-variable 'search-invisible) (remove-hook 'post-command-hook 'TeX-fold-post-command t) (remove-hook 'LaTeX-fill-newline-hook 'TeX-fold-update-at-point t) (TeX-fold-clearout-buffer)) (TeX-set-mode-name)) ;;;###autoload (defalias 'tex-fold-mode 'TeX-fold-mode) (provide 'tex-fold) ;;; tex-fold.el ends here auctex-11.87/toolbar-x.el0000644000000000000000000024270711045140517013764 0ustar rootroot;;; toolbar-x.el --- fancy toolbar handling in Emacs and XEmacs ;; Copyright (C) 2004, 2005, 2008 Free Software Foundation, Inc. ;; This program 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 of ;; the License, or (at your option) any later version. ;; This program 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 this program; if not, write to the Free ;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, ;; MA 02110-1301 USA ;;; Author: Miguel Vinicius Santini Frasson ;;; Commentary: ;; This program implements a common interface to display toolbar ;; buttons in both Emacs and XEmacs. A toolbar should be basicly ;; defined by a image and a command to run when the button is pressed, ;; and additional properties could be added. This is the idea of this ;; program. See the documentation of function ;; `toolbarx-install-toolbar' for a description of how to specify ;; toolbars. ;;; Features: ;; * Button properties are given in the toolbar definition (BUTTON ;; paramenter in `toolbarx-install-toolbar') and/or in an alist with ;; associates the symbol with properties (MEANING-ALIST paramenter in ;; `toolbarx-install-toolbar'). ;; * Supported properties: ;; - All editors: `:insert', `:image', `:command', `:help', `:enable', ;; `:append-command' and `:prepend-command'; ;; - Emacs only: `:visible' and `:button'; ;; - XEmacs only: `:toolbar'. ;; For the precise value-type for each property, see documentation of ;; the function `toolbarx-install-toolbar'. ;; (ps: properties that are particular to an editor are just ignored ;; the other editor flavour.) ;; * Button properties may depend on the editor flavour, if the value ;; is a vector; the first element will be used for Emacs and the 2nd ;; for XEmacs. Example: `:image ["new" toolbar-file-icon]' ;; * Properties can have value specified by function (with no ;; argument) or variables that evaluate to an object of the correct ;; type for a particular property. The evaluation is done when the ;; roolbar is refresh (a call of `toolbarx-refresh'.) ;; (ps: this is valid only for properties that *not* have \`form\' as ;; value type.) ;; * On `refresh time' (a call `toolbarx-refresh', necessary when the ;; toolbar should change), the `:insert' property (if present) is ;; evaluated to decide if button will be displayed. ;; Properties can be distributed to several buttons, using \`groups\'. ;; Example: (for (bar baz :toolbar (bottom . top) :insert foo-form) ;; means that `foo', `bar' and `baz' have `:insert foo-form' and `bar' and ;; `baz' have the property `:toolbar (bottom . top)'. (ps: this type ;; of value for the `:toolbar' property (XEmacs only) means that the ;; buttons will be in the bottom toolbar unless the default toolbar is ;; in the bottom, and in this case, this buttons go to the top ;; toolbar). ;; * (Part of) the toolbar definition can be stored in a variable, ;; evaluated in `installation time'. See `:eval-group' on the ;; documentation of the function `toolbarx-install-toolbar'. ;; * It is possible to define sets of buttons that appear according to ;; an option selected in a dropdown menu. See `:dropdown-group' on ;; the documentation of the function `toolbarx-install-toolbar'. ;;; Rough description of the implementation ;; There are 3 \`engines\' implemented: ;; == the 1st one (parsing) parses the toolbar definition ;; independently of editor flavour and store the parsed buttons with ;; their properties, in the same order that they appear in the ;; definitions, in a variable `toolbarx-internal-button-switches'; ;; == the 2nd one (refresh for Emacs) inserts buttons in the Emacs ;; toolbar in the same order that they appear in the definitions; ;; buttons with a `:insert' property value that evaluates to nil are ;; ignored; if a (real) button does not have at least (valid) image ;; and command properties, they are silently ignored; ;; == the 3rd engine (refresh for XEmacs) is similar to the 2nd, but ;; inserts buttons in XEmacs. ;;; History: ;; This program was motivated by the intention of implementation of a ;; good toolbar for AUCTeX, that would work in both Emacs and XEmacs. ;; Since toolbars are very different in behaviour and implementation ;; (for instance, in Emacs one can display as many toolbar buttons as ;; wanted, because it becomes mult-line, and in XEmacs, there is one ;; line, but toolbars and all sides of a frame.) ;;; Code: ;; Note that this just gives a useful default. Icons are expected to ;; be in subdirectory "images" or "toolbar" relative to the load-path. ;; Packages loading toolbarx are advised to explicitly add their own ;; searchpath with add-to-list here even when they fulfill that ;; criterion: another package might have loaded toolbar-x previously ;; when load-path was not yet correctly set. The default setting ;; really caters only for toolbar-x' stock icons. (defvar toolbarx-image-path (nconc (delq nil (mapcar #'(lambda(x) (and x (member (file-name-nondirectory (directory-file-name x)) '("toolbar" "images")) ;;(file-directory-p x) x)) load-path)) (list data-directory)) "List of directories where toolbarx finds its images.") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; First engine: Parsing buttons ;; it obtains button information, process it and stores result in ;; `toolbarx-internal-button-switches', which is a list with 1st ;; element the symbol `:switches', the 2nd element as a list of ;; processed buttons, and the 3rd element is used for Emacs to store ;; the keys used in ``constant'' buttons. ;; The 2nd element of `toolbarx-internal-button-switches' is a list ;; where each element is either: ;; * a button-list, that is, a list with elements to define a button. ;; * a list where 1st elem is `:insert' and 2nd is a form, and the ;; following elements are in the same format of the 2nd element of ;; `toolbarx-internal-button-switches'. (defun toolbarx-make-string-from-symbol (symbol) "Return a string from the name of a SYMBOL. Upcase initials and replace dashes by spaces." (let* ((str (upcase-initials (symbol-name symbol))) (str2)) (dolist (i (append str nil)) (if (eq i 45) ; if dash, push space (push 32 str2) (push i str2))) ; else push identical (concat (nreverse str2)))) (defun toolbarx-make-symbol-from-string (string) "Return a (intern) symbol from STRING. Downcase string and replace spaces by dashes." (let* ((str1 (append (downcase string) nil)) (str2)) (dolist (i str1) (if (eq i 32) ; if dash, push space (push 45 str2) (push i str2))) (intern (concat (nreverse str2))))) (defun toolbarx-good-option-list-p (option-list valid-options) "Non-nil means the OPTION-LIST is of form (OPT FORM ... OPT FORM). Each OPT is member of VALID-OPTIONS and OPT are pairwise different. OPTION-LIST equal to nil is a good option list." (let ((elt-in-valid t) (temp-opt-list option-list) (list-diff) (n (/ (length option-list) 2))) (dotimes (i n) (when (> i 0) (setq temp-opt-list (cddr temp-opt-list))) (add-to-list 'list-diff (car temp-opt-list)) (setq elt-in-valid (and elt-in-valid (memq (car temp-opt-list) valid-options)))) (and elt-in-valid ; options are on VALID-OPTOPNS ;; OPTION-LIST has all option different from each other (eq (length list-diff) n) ;; OPTION-LIST has even number of elements (eq (% (length option-list) 2) 0)))) (defun toolbarx-separate-options (group-list valid-options &optional check) "Return a cons cell with non-options and options of GROUP-LIST. The options-part is the largest tail of the list GROUP-LIST that has an element of VALID-OPTIONS (the comparation is made with `memq'.) The non-options-part is the beginning of GROUP-LIST less its tail. Return a cons cell which `car' is the non-options-part and the `cdr' is the options-part. If CHECK is non-nil, the tail is the largest that yield non-nil when applied to `toolbarx-good-option-list-p'." (let ((maximal) (temp)) (dolist (i valid-options) (setq temp (memq i group-list)) (when (and (> (length temp) (length maximal)) (if check (toolbarx-good-option-list-p temp valid-options) t)) (setq maximal (memq i group-list)))) (cons (butlast group-list (length maximal)) maximal))) (defun toolbarx-merge-props (inner-props outer-props override add) "Merge property lists INNER-PROPS and OUTER-PROPS. INNER-PROPS and OUTER-PROPS are two lists in the format (PROP VAL PROP VAL ... PROP VAL). Returns a list with properties and values merged. OVERRIDE and ADD are supposed to be lists of symbols. The value of a property in OVERRIDE is the one on OUTER-PROPS or INNER-PROPS, but if the property is in both, the value in INNER-PROPS is used. The value of a property in ADD will be a list with first element the symbol `:add-value-list' and the rest are the properties, inner properties first." (let* ((merged) (inner-prop) (outer-prop)) (dolist (prop override) (if (memq prop inner-props) (setq merged (append merged (list prop (cadr (memq prop inner-props))))) (when (memq prop outer-props) (setq merged (append merged (list prop (cadr (memq prop outer-props)))))))) (dolist (prop add merged) (setq inner-prop (memq prop inner-props)) (when inner-prop (if (and (listp (cadr inner-prop)) (eq (car (cadr inner-prop)) :add-value-list)) (setq inner-prop (cdr (cadr inner-prop))) (setq inner-prop (list (cadr inner-prop))))) (setq outer-prop (memq prop outer-props)) (when outer-prop (if (and (listp (cadr outer-prop)) (eq (car (cadr outer-prop)) :add-value-list)) (setq outer-prop (cdr (cadr outer-prop))) (setq outer-prop (list (cadr outer-prop))))) (when (append inner-prop outer-prop) (setq merged (append merged (list prop (cons :add-value-list (append inner-prop outer-prop))))))))) (defun toolbarx-make-command (comm prep app) "Return a command made from COMM, PREP and APP. COMM is a command or a form. PREP and APP are forms. If PREP or APP are non-nil, they are added to the resulting command at the beginning and end, respectively. If both are nil and COMM is a command, COMM is returned." (let ((comm-is-command (commandp comm))) (if (and (not prep) (not app) comm-is-command) comm (append '(lambda nil (interactive)) (when prep (list prep)) (when comm (if comm-is-command `((call-interactively (function ,comm))) (list comm))) (when app (list app)))))) ;; in Emacs, menus are made of keymaps (vectors are possible, but editors ;; handle `menu titles' differently) meanwhile in XEmacs, menus are lists of ;; vectors (defun toolbarx-emacs-mount-popup-menu (strings var type &optional title save) "Return an interactive `lambda'-expression that shows a popup menu. This function is the action of `toolbarx-mount-popup-menu' if inside Emacs. See documentation of that function for more." ;; making the menu keymap by adding each menu-item definition ;; see (info "(elisp)Menu keymaps") (let* ((keymap (make-sparse-keymap title)) (count 1) (used-symbols '(nil)) (key) (real-type (if (eq type 'toggle) 'toggle 'radio)) (real-save (when save (if (eq save 'offer) 'offer 'always)))) ;; warn if type is not `radio' ot `toggle'; use `radio' if incorrect. (unless (eq type real-type) (display-warning 'toolbarx (format (concat "TYPE should be symbols `radio' or " "`toggle', but %s found; using `radio'") type))) ;; warn if save is not `nil', `offer' or `always'; use nil when incorrect (unless (eq save real-save) (setq real-save nil) (display-warning 'toolbarx (format (concat "SAVE should be symbols `nil', " "`offer' or `always', but %s found; " "using `nil'") save))) (dolist (i strings) ;; finding a new symbol (let* ((aux-count 0) (i-symb (toolbarx-make-symbol-from-string i))) (setq key i-symb) (while (memq key used-symbols) (setq aux-count (1+ aux-count)) (setq key (intern (format "%s-%d" i-symb aux-count)))) (setq used-symbols (cons key used-symbols))) (define-key-after keymap (vector key) `(menu-item ,i ,(append `(lambda nil (interactive) ,(if (eq real-type 'radio) `(setq ,var ,count) `(if (memq ,count ,var) (setq ,var (delete ,count ,var)) (setq ,var (sort (cons ,count ,var) '<)))) (toolbarx-refresh)) (when (eq real-save 'always) `((customize-save-variable (quote ,var) ,var))) `(,var)) :button ,(if (eq real-type 'radio) `(:radio eq ,var ,count) `(:toggle memq ,count ,var)))) (setq count (1+ count))) (when (eq real-save 'offer) (define-key-after keymap [sep] '(menu-item "--shadow-etched-in-dash")) (let* ((aux-count 0) (i-symb 'custom-save)) (setq key i-symb) (while (memq key used-symbols) (setq aux-count (1+ aux-count)) (setq key (intern (format "%s-%d" i-symb aux-count)))) (setq used-symbols (cons key used-symbols))) (define-key-after keymap (vector key) `(menu-item "Save state of this menu" (lambda nil (interactive) (customize-save-variable (quote ,var) ,var))))) ;; returns a `lambda'-expression `(lambda nil (interactive) (popup-menu (quote ,keymap))))) (defun toolbarx-xemacs-mount-popup-menu (strings var type &optional title save) "Return an interactive `lambda'-expression that shows a popup menu. This function is the action of `toolbarx-mount-popup-menu' if inside XEmacs. See documentation of that function for more." (let* ((menu (if (and title (stringp title)) (list title) (setq title nil) (list "Dropdown menu"))) (count 0) (menu-item) (menu-callback) (real-type (if (eq type 'toggle) 'toggle 'radio)) (real-save (when save (if (eq save 'offer) 'offer 'always)))) ;; warn if type is not `radio' ot `toggle'; use `radio' if incorrect. (unless (eq type real-type) (warn (concat "TYPE should be symbols `radio' or `toggle', " "but %s found; using `radio'") type)) ;; warn if save is not `nil', `offer' or `always'; use nil when incorrect (unless (eq save real-save) (setq real-save nil) (display-warning 'toolbarx (format (concat "SAVE should be symbols `nil', " "`offer' or `always', but %s found; " "using `nil'") save))) ;; making the menu list of vectors (dolist (str strings) (setq count (1+ count)) (setq menu-callback (list 'progn (if (eq real-type 'radio) `(setq ,var ,count) `(if (memq ,count ,var) (setq ,var (delete ,count ,var)) (setq ,var (sort (cons ,count ,var) '<)))) '(toolbarx-refresh))) (when (eq real-save 'always) (setq menu-callback (append menu-callback (list (list 'customize-save-variable (list 'quote var) var))))) (setq menu-item (vector str menu-callback :style real-type :selected (if (eq real-type 'radio) `(eq ,var ,count) `(memq ,count ,var)))) (setq menu (append menu (list menu-item)))) (when (eq real-save 'offer) (setq menu (append menu (list "--:shadowEtchedInDash"))) (setq menu (append menu (list (vector "Save state of this menu" `(customize-save-variable (quote ,var) ,var)))))) ;; returnung the lambda-expression `(lambda nil (interactive) (let ((popup-menu-titles ,(if title t nil))) (popup-menu (quote ,menu)))))) (defun toolbarx-mount-popup-menu (strings var type &optional title save) "Return a command that show a popup menu. The return is a `lambda'-expression with a interactive declaration. STRINGS is a list of strings which will be the itens of the menu. VAR is a symbol that is set when an item is clicked. TYPE should be one of the symbols `radio' or `toggle': `radio' means that the nth item is selected if VAR is `n' and this item sets VAR to `n'; `toggle' means that VAR should be a list of integers and the nth item is selected if `n' belongs to VAR. The item inserts or deletes `n' from VAR. TITLE is a string (the title of the popup menu) or nil for no title. SAVE is one of the symbols nil, `offer' or `always'. If value is nil, do not try to save anything. If it is `offer', a menu item is added offering the user the possibiity to save state of that dropdown menu for future sesseions (using `custom'). If it is `always', state is saved every time that a item is clicked." (if (featurep 'xemacs) (toolbarx-xemacs-mount-popup-menu strings var type title save) (toolbarx-emacs-mount-popup-menu strings var type title save))) (defun toolbarx-option-value (opt) "Return option value according to Emacs flavour. If OPT is a vector, return first element if in Emacs or second if in XEmacs. Otherwise, return OPT. If OPT is vector and length is smaller than the necessary (like if in XEmacs and vector has length 1), then nil is returned." (if (vectorp opt) (if (featurep 'xemacs) (when (> (length opt) 1) (aref opt 1)) (when (> (length opt) 0) (aref opt 0))) opt)) (defun toolbarx-eval-function-or-symbol (object type-test-func) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ non-nil means that VAL is a valid value, according to the car of the result of TYPE-TEST-FUNCTION, that should return a cons cell in the same format as the return of this function. If OBJECT applied to TYPE-TEST-FUNC return (GOOD-OBJ . VAL), and GOOD-OBJ is non-nil, return that. Else, check if OBJECT is a function. If so, evaluate and test again with TYPE-TEST-FUNC. If not a function or if GOOD-OBJ is again nil, test if OBJECT is a bound symbol, evaluate that and return the result of TYPE-TEST-FUNC." (let* ((ret (funcall type-test-func object))) (unless (car ret) (if (functionp object) (progn (setq ret (funcall type-test-func (funcall object))) (unless (car ret) (when (and (symbolp object) (boundp object)) (setq ret (funcall type-test-func (symbol-value object)))))) ;; ok, obj is not function; try symbol (when (and (symbolp object) (boundp object)) (setq ret (funcall type-test-func (symbol-value object)))))) ret)) (defun toolbarx-test-image-type (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid image object VAL (see documentation of function `toolbarx-process-symbol')." (let ((toolbarx-test-image-type-simple (lambda (img) (let* ((val (toolbarx-option-value img)) (all-obj-ok t) (good-obj (if (featurep 'xemacs) ;; if XEmacs (or (stringp val) ; a string (glyphp val) ; or a glyph (and (symbolp val) ; or a symbol bound to a (boundp val) ; glyph-list (check-toolbar-button-syntax (vector val (lambda nil (interactive)) nil nil) t)) (and (listp val) ; or a glyph-or-string list (> (length val) 0) (< (length val) 7) (dolist (i val all-obj-ok) (setq all-obj-ok (and all-obj-ok (or (not i) (stringp i) (glyphp i))))))) ;; if Emacs (or (stringp val) ; string (and (consp val) ; or image descriptor (eq (car val) 'image)) (and (symbolp val) ; or a symbol bound to a (boundp val) ; image descriptor ; (defined with `defimage') (consp (eval val)) (eq (car (eval val)) 'image)) (and (listp val) ; or list with 4 strings or ; image descriptors (= (length val) 4) (dolist (i val all-obj-ok) (setq all-obj-ok (and all-obj-ok (or (stringp i) (and (consp i) (eq (car i) 'image))))))))))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-image-type-simple))) (defun toolbarx-test-button-type (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid button object VAL (see documentation of function `toolbarx-process-symbol')." (let ((toolbarx-test-button-type-simple (lambda (but) (let* ((val (toolbarx-option-value but)) (good-obj (if (featurep 'xemacs) ;; if XEmacs t ;; if Emacs (and (consp val) (memq (car val) '(:toggle :radio)))))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-button-type-simple))) (defun toolbarx-test-any-type (obj) "Return a cons cell (t . VAL). If OBJ is vector, return VAL according to editor. Else, return OBJ, because it is a form anyway." (cons t (toolbarx-option-value obj))) (defun toolbarx-test-string-or-nil (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid help object VAL (see documentation of function `toolbarx-process-symbol')." (let ((toolbarx-test-string-or-nil-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (good-obj (or (stringp val) (not val)))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-string-or-nil-simple))) (defun toolbarx-test-toolbar-type (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid toolbar property object VAL (see documentation of function `toolbarx-process-symbol')." (let ((toolbarx-test-toolbar-type-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (all-but-def-opts '(top bottom left right)) (all-opts '(default top bottom left right)) (good-obj (if (featurep 'xemacs) ;; if XEmacs (if (symbolp val) (memq val all-opts) (and (consp val) (memq (car val) all-but-def-opts) (memq (cdr val) all-but-def-opts))) ;; if Emacs t))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-toolbar-type-simple))) (defun toolbarx-test-dropdown-type (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid `:type' property object VAL of a dropdown group (see documentation of function `toolbarx-process-dropdown-group'." (let ((toolbarx-test-dropdown-type-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (good-obj (memq val '(radio toggle)))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-dropdown-type-simple))) (defun toolbarx-test-symbol (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid `:variable' property object VAL of a dropdown group (see documentation of function `toolbarx-process-dropdown-group'." (let ((toolbarx-test-symbol-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (good-obj (symbolp val))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-symbol-simple))) (defun toolbarx-test-dropdown-default (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid `:default' property object VAL of a dropdown group (see documentation of function `toolbarx-process-dropdown-group'." (let ((toolbarx-test-dropdown-default-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (good-obj (or (integerp val) (and (listp val) (let ((ok t)) (dolist (i val ok) (setq ok (and ok (integerp i))))))))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-dropdown-default-simple))) (defun toolbarx-test-dropdown-save (obj) "Return a cons cell (GOOD-OBJ . VAL). GOOD-OBJ is non-nil if OBJ yields a valid `:save' property object VAL of a dropdown group (see documentation of function `toolbarx-process-dropdown-group'." (let ((toolbarx-test-dropdown-save-simple (lambda (obj) (let* ((val (toolbarx-option-value obj)) (good-obj (memq val '(nil offer always)))) (cons good-obj val))))) (toolbarx-eval-function-or-symbol obj toolbarx-test-dropdown-save-simple))) (defconst toolbarx-button-props (let* ((props-types-alist '((:image toolbarx-test-image-type) (:command toolbarx-test-any-type) (:enable toolbarx-test-any-type) (:visible toolbarx-test-any-type) (:help toolbarx-test-string-or-nil) (:insert toolbarx-test-any-type . and) (:toolbar toolbarx-test-toolbar-type) (:button toolbarx-test-button-type) (:append-command toolbarx-test-any-type . progn) (:prepend-command toolbarx-test-any-type . progn))) (possible-props (nreverse (let* ((props ())) (dolist (p props-types-alist props) (setq props (cons (car p) props)))))) (props-override (nreverse (let* ((props ())) (dolist (p props-types-alist props) (unless (cddr p) (setq props (cons (car p) props))))))) (props-add (nreverse (let* ((props ())) (dolist (p props-types-alist props) (when (cddr p) (setq props (cons (car p) props)))))))) (list props-types-alist possible-props props-override props-add)) "List yielding all encarnations of properties of a button. First element: alist, where each element is of form (PROP . (TYPE-TEST-FUNCTION . ADD-OR-NIL)) Second is a list with all properties. Third, a list with properties that override when merging. Fourth, a list of lists, each in the format (PROP ADD).") (defconst toolbarx-dropdown-props ;; for naming dropdown properties see `Convention' in the doc string (let* ((props-types-alist '((:type toolbarx-test-dropdown-type) (:variable toolbarx-test-symbol) (:default toolbarx-test-dropdown-default) (:save toolbarx-test-dropdown-save) (:title toolbarx-test-string-or-nil) (:dropdown-image toolbarx-test-image-type) (:dropdown-enable toolbarx-test-any-type) (:dropdown-visible toolbarx-test-any-type) (:dropdown-insert toolbarx-test-any-type . and) (:dropdown-help toolbarx-test-string-or-nil) (:dropdown-toolbar toolbarx-test-toolbar-type) (:dropdown-append-command toolbarx-test-any-type . progn) (:dropdown-prepend-command toolbarx-test-any-type . progn))) (possible-props (nreverse (let* ((props ())) (dolist (p props-types-alist props) (setq props (cons (car p) props)))))) (props-override (nreverse (let* ((props ())) (dolist (p props-types-alist props) (unless (cddr p) (setq props (cons (car p) props))))))) (props-add (nreverse (let* ((props ())) (dolist (p props-types-alist props) (when (cddr p) (setq props (cons (car p) props)))))))) (list props-types-alist possible-props props-override props-add)) "List yielding all encarnations of properties of a dropdown group. First element: alist, where each element is of form (PROP . (TYPE-TEST-FUNCTION . ADD-OR-NIL)) Second is a list with all properties. Third, a list with properties that override when merging. Fourth, a list of lists, each in the format (PROP ADD). Convention: properties for the dropdown button should be formed with the strings \":dropdown-\" with the button property name without `:'. This is used on the implementation.") (defun toolbarx-process-group-without-insert (group-without-props merged-props-without-insert meaning-alist switches) "Return an updated version of SWITCHES. GROUP-WITHOUT-PROPS and MERGED-PROPS-WITHOUT-INSERT are preprocessed variables in `toolbarx-process-group'." (let ((current-switches switches)) (dolist (i group-without-props current-switches) (setq i (toolbarx-option-value i)) (if (symbolp i) (setq current-switches (toolbarx-process-symbol i meaning-alist merged-props-without-insert current-switches)) (when (listp i) (setq current-switches (toolbarx-process-group i meaning-alist merged-props-without-insert current-switches))))))) (defun toolbarx-process-group (group meaning-alist props switches) "Return an updated version of SWITCHES. Append to already processed buttons (stored in SWITCHES) a processed version of GROUP. Groups are useful to distribute properties. External properties are given in PROPS, and merged with the internal properties that are in the end of GROUP. If properties (after merge) contain a `:insert' property, return a list where the first and second elements are `:insert' and its value, and after that a list in the same format as SWITCHES." (cond ;; if DROPDOWN group ((eq (car group) :dropdown-group) (toolbarx-process-dropdown-group group meaning-alist props switches)) ;; if EVAL group ((eq (car group) :eval-group) (let ((current-switches switches)) (dolist (elt (cdr group) current-switches) (let ((eval-elt (eval elt))) (setq current-switches (toolbarx-process-group (if (listp eval-elt) eval-elt (list eval-elt)) meaning-alist props current-switches)))))) ;; if normal group (t (let* ((splited-props (toolbarx-separate-options group (append (nth 1 toolbarx-button-props) (nth 1 toolbarx-dropdown-props)))) (intern-props (cdr splited-props)) (group-without-props (car splited-props)) (merged-props (toolbarx-merge-props intern-props props (append (nth 2 toolbarx-button-props) (nth 2 toolbarx-dropdown-props)) (append (nth 3 toolbarx-button-props) (nth 3 toolbarx-dropdown-props))))) ;; check whether merged props have an `:insert' (if (memq :insert merged-props) ;; if yes, prepend switches with a (:insert cond elements) (let* ((memq-ins (memq :insert merged-props)) (ins-val (if (and (listp (cadr memq-ins)) (eq :add-value-list (car (cadr memq-ins)))) ;; if property is add-value property (let* ((p (assq :insert (nth 0 toolbarx-button-props))) (add-list (list (cddr p))) (prop-good-val)) (dolist (val (cdr (cadr memq-ins))) (setq prop-good-val (funcall (cadr p) val)) (when (car prop-good-val) (setq add-list (cons (cdr prop-good-val) add-list)))) ;; return: (nreverse add-list) (setq add-list (nreverse add-list)) (if (eq 2 (length add-list)) (cadr add-list) ; just 1 value, no add-list)) ; add-function ;; if property is not add-value (cadr memq-ins))) (merged-props-without-insert (append (butlast merged-props (length memq-ins)) (cddr memq-ins))) (group-switches (toolbarx-process-group-without-insert group-without-props merged-props-without-insert meaning-alist nil))) ;; return (nreverse (cons (append (list :insert ins-val) group-switches) (nreverse switches)))) ;; if not, just append what is processed to switches (toolbarx-process-group-without-insert group-without-props merged-props meaning-alist switches)))))) (defun toolbarx-process-symbol (symbol meaning-alist props switches) "Process a button given by SYMBOL in MEANING-ALIST. The processed button is appended in SWITCHES, which is returned. Look for a association of SYMBOL in MEANING-ALIST for collecting properties. Such association is a list that represents either a normal button (a description of the button) or an alias group (the symbol is an alias for a group of buttons). PROPS is a externel list of properties that are merged and then applied to the button. Scope is given by GLOBAL-FLAG." ;; there are 3 situations: symbol is :new-line, there is an alias group ;; or a normal button (let ((button-assq (cdr (assq symbol meaning-alist)))) (cond ((eq (car button-assq) :alias) ;; button association is ALIAS GROUP is passed to ;; `toolbarx-process-group' as is but without the car. ;; return: (toolbarx-process-group... returns updates switch (toolbarx-process-group (cdr button-assq) meaning-alist props switches)) (t ;; NORMAL BUTTON (association is a list of properties) ;; ;; properties need to be processed, that is, merge internal ;; and external (given by PROPS) properties (let* (;; button properties defined in `toolbarx-button-props' (props-override (nth 2 toolbarx-button-props)) (props-add (nth 3 toolbarx-button-props)) ;; split considering also dropdown-group properties (button-assq-split (toolbarx-separate-options button-assq (append (nth 1 toolbarx-button-props) (nth 1 toolbarx-dropdown-props)))) (button-split-no-props (car button-assq-split)) (button-split-props (cdr button-assq-split)) ;; if there is no :image or :command in the props, ;; try to get them from no-props part (button-image-no-prop (unless (memq :image button-split-props) (when (> (length button-split-no-props) 0) (list :image (nth 0 button-split-no-props))))) (button-command-no-prop (unless (memq :command button-split-props) (when (> (length button-split-no-props) 1) (list :command (nth 1 button-split-no-props))))) (button-props (append button-split-props button-image-no-prop button-command-no-prop)) ;; merge props (merged-props (toolbarx-merge-props button-props props props-override props-add))) ;; return: (nreverse (cons (cons symbol merged-props) (nreverse switches)))))))) (defun toolbarx-process-dropdown-group (dropdown meaning-alist props switches) "Process buttons that appear according to dropdown menu. Process a dropdown group DROPDOWN with meaning alist MEANING-ALIST, external property list PROP and GLOBAL-FLAG specifying scope. For a complete description, see documentation of `toolbarx-install-toolbar'. The processed buttons are stored in the end of SWITCHES, which is returned." (let* ((dropdown-group (if (eq (car dropdown) :dropdown-group) (cdr dropdown) dropdown)) (dropdown-list-splited (toolbarx-separate-options dropdown-group (append (nth 1 toolbarx-button-props) (nth 1 toolbarx-dropdown-props)))) (dropdown-list (car dropdown-list-splited)) (dropdown-props (cdr dropdown-list-splited)) (merged-props (toolbarx-merge-props dropdown-props props (append (nth 2 toolbarx-button-props) (nth 2 toolbarx-dropdown-props)) (append (nth 3 toolbarx-button-props) (nth 3 toolbarx-dropdown-props)))) (merged-props-button-only (let* ((props-button-only) (prop)) (dolist (p (nth 1 toolbarx-button-props) props-button-only) (setq prop (memq p merged-props)) (when prop (setq props-button-only (append (list p (cadr prop)) props-button-only)))))) (merged-props-dropdown-only (let* ((props-dropdown-only) (prop)) (dolist (p (nth 1 toolbarx-dropdown-props) props-dropdown-only) (setq prop (memq p merged-props)) (when prop (setq props-dropdown-only (append (list p (cadr prop)) props-dropdown-only)))))) ;; get value for each property and check type ONLY for props that do ;; not concern the dropdown button, like `:type', `:save', etc. The ;; props that concern the button are going to be handled in refresh ;; time. (filtered-dropdown-group-props-only (let* ((filtered-props-temp) (prop-good-val) (prop)) (save-match-data (dolist (p (nth 0 toolbarx-dropdown-props) filtered-props-temp) (unless (string-match "^:dropdown-.*$" (symbol-name (car p))) ;; property -> (car p) ;; test type function -> (cadr p) (setq prop (memq (car p) merged-props-dropdown-only)) ;; if so, check if value is of correct type (when prop (setq prop-good-val (funcall (cadr p) (cadr prop))) (if (car prop-good-val) (setq filtered-props-temp (append filtered-props-temp (list (car p) (cdr prop-good-val)))) (display-warning 'toolbarx (format (concat "Wrong type for value in " "property `%s' in dropdown group") (car p)))))))))) ;; properties for the dropdown button from dropdown merged properties (dropdown-button-props (let* ((props)) (save-match-data (dolist (pr (nth 1 toolbarx-dropdown-props)) (when (and (memq pr merged-props-dropdown-only) (string-match "^:dropdown-\\(.*\\)$" (symbol-name pr))) (let* ((new-pr (intern (concat ":" (substring (symbol-name pr) (match-beginning 1) (match-end 1))))) (val (cadr (memq pr merged-props-dropdown-only)))) (setq props (append (list new-pr val) props)))))) (unless (memq :image props) (setq props (append (list :image "dropdown") props))) props)) (dropdown-button-without-command (cons 'dropdown dropdown-button-props)) ;; `:type' defaults to `radio' (type (if (memq :type filtered-dropdown-group-props-only) (cadr (memq :type filtered-dropdown-group-props-only)) 'radio)) ;; `:default' defaults to 1 or nil depending on `type' ;; if type is toggle and default is not a list, but a ;; integer, set as the list with integer (default (let* ((memq-default (memq :default filtered-dropdown-group-props-only)) (def-temp (cadr memq-default)) (default-temp (if memq-default def-temp (if (eq type 'radio) 1 (list 1))))) default-temp)) ;; `:save' defaults to nil and require `:variable' (save (let* ((save-temp (when (memq :save filtered-dropdown-group-props-only) (cadr (memq :save filtered-dropdown-group-props-only))))) (if (and save-temp (not (memq :variable filtered-dropdown-group-props-only))) (progn (display-warning 'toolbarx (concat "`:save' property with non-nil value should " "be used only with the `:variable' property; " "using value nil for `:save'.")) nil) save-temp))) ;; `:title' defaults to nil (title (when (memq :title filtered-dropdown-group-props-only) (cadr (memq :title filtered-dropdown-group-props-only)))) ;; the menu variable is buildt from the `:variable' option or ;; make a symbol not used (variable (if (memq :variable filtered-dropdown-group-props-only) (cadr (memq :variable filtered-dropdown-group-props-only)) (let* ((count 0) (symb (intern (format "toolbarx-internal-menu-var-%d" count)))) (while (boundp symb) (setq count (1+ count)) (setq symb (intern (format "toolbarx-internal-menu-var-%d" count)))) symb))) ;; auxiliary variables (list-strings) (list-buttons)) ;; setting `variable' (if save (custom-declare-variable variable default "Used as variable of dropdown menu defined with `toolbarx'.") (when (not (boundp variable)) (set variable default))) ;; now check `variable' content (set variable (let ((val (eval variable))) (if (eq type 'toggle) (if (listp val) val (if (integerp val) (list val) (list 1))) ;; then, type is radio (if (integerp val) val (if (and val (listp val) (integerp (car val))) (car val) 1))))) ;; === buiding `list-strings' and `list-buttons' === ;; if only symbols, build `list-strings' and `list-buttons' from symbols (if (let ((only-symbols-flag t)) (dolist (i dropdown-list only-symbols-flag) (setq only-symbols-flag (and only-symbols-flag (symbolp i))))) (let ((count 0)) (dolist (i dropdown-list) ;; list-strings and list-buttons are buildt reversed (setq list-strings (cons (toolbarx-make-string-from-symbol i) list-strings)) (setq count (1+ count)) (setq list-buttons (cons (list i :insert (if (eq type 'radio) (list 'eq count variable) (list 'memq count variable))) list-buttons)))) ;; if not, the it must start with string (unless (stringp (car dropdown-list)) (error "%s %s %s" "If not all itens on dropdown are symbols, then a string" "must come before each set of buttons; no string found" "in first position.")) (let ((count 0) (elem) (temp-list-buttons)) (while dropdown-list (setq elem (car dropdown-list)) (setq dropdown-list (cdr dropdown-list)) (if (stringp elem) ;; if string, output `temp-list-buttons' and prepair it again (progn ;; list-strings and list-buttons are buildt reversed (setq list-strings (cons elem list-strings)) (when temp-list-buttons (setq list-buttons (cons (append (nreverse temp-list-buttons) (list :insert (if (eq type 'radio) (list 'eq count variable) (list 'memq count variable)))) list-buttons))) (setq temp-list-buttons nil) (setq count (1+ count))) ;; else, if not string, just insert it to `temp-list-buttons' ;; which is also buildt reversed (setq temp-list-buttons (cons elem temp-list-buttons)))) ;; output last temp list, left behind (when temp-list-buttons (setq list-buttons (cons (append (nreverse temp-list-buttons) (list :insert (if (eq type 'radio) (list 'eq count variable) (list 'memq count variable)))) list-buttons))))) ;; lists were made reversed (elements inserted at the beginning) (setq list-strings (nreverse list-strings)) (setq list-buttons (nreverse list-buttons)) ;; now, pass `list-buttons' as a group to `toolbarx-process-group' (let ((current-switches switches)) (setq current-switches (toolbarx-process-group list-buttons meaning-alist merged-props ; pass non-processed props current-switches)) (setq current-switches ;; outputing dropdown button (toolbarx-process-group (append dropdown-button-without-command (list :command (toolbarx-mount-popup-menu list-strings variable type title save))) meaning-alist merged-props-button-only switches)) current-switches))) ;; Still functions `toolbarx-install-toolbar' and `toolbarx-refresh'to ;; complete the parsing engine. Since they interface with other engines, ;; they must come in the end. ;;; How a image is made, giving a string as (part of) file name. ;; look at function `image-type-available-p' for Emacs !!!! (defun toolbarx-find-image (image) "Return image descriptor or glyph for IMAGE. In Emacs, return an image descriptor for IMAGE. In XEmacs, return a glyph. IMAGE is string. Usually IMAGE neither contains a directory nor an extension. If the extension is omitted, `xpm', `xbm' and `pbm' are tried. If the directory is omitted, `toolbarx-image-path' is searched." ;; `find-image' in Emacs 21 looks in `load-path' and `data-directory'. In ;; Emacs 22, we have `image-load-path' which includes `load-path' and ;; `data-directory'. ;; ;; If there's some API in XEmacs to find the images, we should use it ;; instead of locate-library. ;; ;; Emacs 22 has locate-file, but the other Emacsen don't. The ;; following should hopefully get us to all images ultimately. (let ((file)) (dolist (i '("" ".xpm" ".xbm" ".pbm")) (unless file (setq file (locate-library (concat image i) t toolbarx-image-path)))) (if (featurep 'xemacs) (and file (make-glyph file)) (if file (create-image file) (find-image `((:type xpm :file ,(concat image ".xpm")) (:type xbm :file ,(concat image ".xbm")) (:type pbm :file ,(concat image ".pbm")))))))) ;; next variable interfaces between parsing and display engines (defvar toolbarx-internal-button-switches nil "Store the list of processed buttons, used by `toolbarx-refresh'. This variable can store different values for the different buffers.") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Second engine: display parsed buttons in Emacs (defun toolbarx-emacs-add-button (button used-keys keymap) "Insert a button where BUTTON is its description. USED-KEYS should be a list of symbols, where the first element is `:used-symbols'. This list should store the symbols of the buttons already inserted. This list is changed by side effect. KEYMAP is the keymap where the menu-item corresponding to the tool-bal button is going to be inserted. Insertion is made in the end of KEYMAP. BUTTON should be a list of form (SYMBOL . PROP-LIST). SYMBOL is a symbol that \"names\" this button. PROP-LIST is a list in the format (PROP VAL ... PROP VAL). The supported properties are `:image', `:command', `:append-command', `:prepend-command', `:help', `:enable', `:visible', `:button', `:insert' and `:toolbar'. For a description of properties, see documentation of function `toolbar-install-toolbar'." (let* ((symbol (nth 0 button)) (used-keys-list (when used-keys (cdr used-keys))) (filtered-props (let* ((filtered-props-temp) (prop-good-val) (prop)) (dolist (p (nth 0 toolbarx-button-props) filtered-props-temp) ;; property -> (car p) ;; test type function -> (cadr p) ;; add-function -> (cddr p) (setq prop (memq (car p) button)) ;; if so, check if value is of correct type (when prop ;; if property is of add-type, them the value is a list ;; (:add-value-list VAL VAL). Each VAL should be checked. (if (and (cddr p) (eq :add-value-list (car (cadr prop)))) (let* ((add-list (list (cddr p)))) (dolist (val (cdr (cadr prop))) (setq prop-good-val (funcall (cadr p) val)) (when (car prop-good-val) (setq add-list (cons (cdr prop-good-val) add-list)))) (setq add-list (nreverse add-list)) (when (eq 2 (length add-list)) ; just 1 value, no ; add-function (setq add-list (cadr add-list))) (setq filtered-props-temp (append (list (car p) add-list) filtered-props-temp))) ;; if override-property (setq prop-good-val (funcall (cadr p) (cadr prop))) (when (car prop-good-val) (setq filtered-props-temp (append (list (car p) (cdr prop-good-val)) filtered-props-temp)))))))) (insert (or (not (memq :insert filtered-props)) ;; (memq :insert filtered-props) (eval (nth 1 (memq :insert filtered-props)))))) (when insert (cond (t ;; symbol is not :new-line, therefore a normal button (let* ((image (cadr (memq :image filtered-props))) (image-descriptor (when (memq :image filtered-props) (cond ((stringp image) ; string (toolbarx-find-image image)) ((and (consp image) ; or image descriptor (eq (car image) 'image)) image) ((and (symbolp image) ; or a symbol bound to a (boundp image) ; image descriptor (defined ; with `defimage')g (consp (eval image)) (eq (car (eval image)) 'image)) (eval image)) (t ; otherwise, must be a list ; with 4 strings or image ; descriptors (apply 'vector (mapcar (lambda (img) (if (stringp img) (toolbarx-find-image img) img)) image)))))) (command (let* ((com (nth 1 (memq :command filtered-props))) (app (nth 1 (memq :append-command filtered-props))) (prep (nth 1 (memq :prepend-command filtered-props)))) (when (or com app prep) (toolbarx-make-command com prep app)))) (help (cons (memq :help filtered-props) (cadr (memq :help filtered-props)))) (enable (cons (memq :enable filtered-props) (cadr (memq :enable filtered-props)))) (visible (cons (memq :visible filtered-props) (cadr (memq :visible filtered-props)))) (button (cons (memq :button filtered-props) (cadr (memq :button filtered-props)))) (menuitem (append (list 'menu-item (toolbarx-make-string-from-symbol symbol) command :image image-descriptor) (when (car help) (list :help (cdr help))) (when (car enable) (list :enable (cdr enable))) (when (car visible) (list :visible (cdr visible))) (when (car button) (list :button (cdr button))))) (key-not-used (let* ((count 0) (symb symbol)) (while (memq symb used-keys-list) (setq count (1+ count)) (setq symb (intern (format "%s-%d" symbol count)))) symb))) (when (and image-descriptor command) (setq used-keys-list (cons key-not-used used-keys-list)) (define-key-after keymap (vector key-not-used) menuitem)))))) (when used-keys (setcdr used-keys used-keys-list)))) (defun toolbarx-emacs-refresh-process-button-or-insert-list (switches used-keys keymap) "Process SWITCHES, inserting buttons in `tool-bar-map'. If a button is actually a `:insert' clause group (if `car' is `:insert') and evaluation of `cdr' yields non-nil, process `cddr' recursively as SWITCHES. USED-KEYS is a list which `car' is `:used-symbols' and which `cdr' is a list of symbols that have already been used as keys in the keymap `tool-bar-map'." (dolist (button switches) (if (eq (car button) :insert) (when (eval (cadr button)) (toolbarx-emacs-refresh-process-button-or-insert-list (cddr button) used-keys keymap)) (toolbarx-emacs-add-button button used-keys keymap)))) (defun toolbarx-emacs-refresh (&optional global-flag) "Refresh and redraw the toolbar in Emacs. If GLOBAL-FLAG is non-nil, the default value of toolbar switches is used and the default value of `toolbarx-map' is changed." (let* ((switches (if global-flag (if (default-boundp 'toolbarx-internal-button-switches) (default-value 'toolbarx-internal-button-switches) toolbarx-internal-button-switches) toolbarx-internal-button-switches)) (used-keys (list :used-symbols nil)) (tool-bar-map-temp (make-sparse-keymap))) (toolbarx-emacs-refresh-process-button-or-insert-list switches used-keys tool-bar-map-temp) (if global-flag (setq-default tool-bar-map tool-bar-map-temp) (setq tool-bar-map tool-bar-map-temp)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Third engine: display parsed buttons in XEmacs (defun toolbarx-xemacs-image-properties (image) "Return a list of properties of IMAGE. IMAGE should be a string or a list of one to six strings or glyphs or nil, or a symbol bound to a list of one to six glyphs (them must be a valid image list, like one created with the function `toolbar-make-button-list'). Return a list (GLYPH-LIST HEIGHT WIDTH) where HEIGHT (resp. WIDTH) is the maximum of the heights (resp. widths) of all glyphs (or strings converted to glyphs) in GLYPH-LIST. If IMAGE is not a list, it is treated as a list with IMAGE as only element. Strings are converted to glyphs with the function `toolbarx-find-image'. If, after possible string-to-glyph convertions, the list of glyphs has nil as first element, GLYPH-LIST becomes nil." (let* ((glyph-list (if (symbolp image) ; if symbol, them must be a ; valid image list, like ; created by function ; `toolbar-make-button-list' (eval image) (let ((img-list (if (listp image) image (list image))) (glyph-list-temp)) ;; glyph-list-temp (setq glyph-list-temp (dolist (glyph img-list (nreverse glyph-list-temp)) (if (stringp glyph) (setq glyph-list-temp (cons (toolbarx-find-image glyph) glyph-list-temp)) (setq glyph-list-temp (cons glyph glyph-list-temp))))) (unless (car glyph-list-temp) (setq glyph-list-temp nil)) glyph-list-temp))) (usable-buttons ;; computing inheritage (let* ((usable-temp)) (if toolbar-captioned-p ; problematic point :-( (progn ;; CAP-UP: cap-up -> up (setq usable-temp (cons (cond ((nth 3 glyph-list)) ((nth 0 glyph-list))) usable-temp)) ;; CAP-DOWN: cap-down -> cap-up -> down -> up (setq usable-temp (cons (cond ((nth 4 glyph-list)) ((nth 3 glyph-list)) ((nth 1 glyph-list)) ((nth 0 glyph-list))) usable-temp)) ;; CAP-DISABLED: cap-disabled -> cap-up -> disabled -> up (setq usable-temp (cons (cond ((nth 5 glyph-list)) ((nth 3 glyph-list)) ((nth 2 glyph-list)) ((nth 0 glyph-list))) usable-temp))) ;; UP: up (setq usable-temp (cons (nth 0 glyph-list) usable-temp)) ;; DOWN: down -> up (setq usable-temp (cons (cond ((nth 1 glyph-list)) ((nth 0 glyph-list))) usable-temp)) ;; DISABLED: disabled -> up (setq usable-temp (cons (cond ((nth 2 glyph-list)) ((nth 0 glyph-list))) usable-temp))) usable-temp)) (height (apply 'max 0 (mapcar (lambda (glyph) (if glyph (glyph-height glyph) 0)) usable-buttons))) (width (apply 'max 0 (mapcar (lambda (glyph) (if glyph (glyph-width glyph) 0)) usable-buttons)))) (list (if (symbolp image) image glyph-list) height width))) (defun toolbarx-xemacs-button-properties (button) "Return a list of properties of BUTTON. The result is either nil (if not to be inserted) or a list in the format (TOOLBAR HEIGHT WIDTH BUTTON-DESCRIPTION) where TOOLBAR is one of the symbols `default', `top', `right', `bottom' or `left'. HEIGHT and WIDTH are the maximal dimentions of all the glyphs involved. BUTTON-DESCRIPTION is button definition in XEmacs; see the documentation of variable `default-toolbar'." (let* ((filtered-props (let* ((filtered-props-temp) (prop-good-val) (prop)) (dolist (p (nth 0 toolbarx-button-props) filtered-props-temp) ;; property -> (car p) ;; test type function -> (cadr p) ;; add-function -> (cddr p) (setq prop (memq (car p) button)) ;; if so, check if value is of correct type (when prop ;; if property is of add-type, them the value is a list ;; (:add-value-list VAL VAL). Each VAL should be checked. (if (and (cddr p) (eq :add-value-list (car (cadr prop)))) (let* ((add-list (list (cddr p)))) (dolist (val (cdr (cadr prop))) (setq prop-good-val (funcall (cadr p) val)) (when (car prop-good-val) (setq add-list (cons (cdr prop-good-val) add-list)))) (setq add-list (nreverse add-list)) (when (eq 2 (length add-list)) ; just 1 value, no ; add-function (setq add-list (cadr add-list))) (setq filtered-props-temp (append (list (car p) add-list) filtered-props-temp))) ;; if override-property (setq prop-good-val (funcall (cadr p) (cadr prop))) (when (car prop-good-val) (setq filtered-props-temp (append (list (car p) (cdr prop-good-val)) filtered-props-temp)))))))) (insert (or (not (memq :insert filtered-props)) ;; (memq :insert filtered-props) holds (eval (nth 1 (memq :insert filtered-props)))))) (when insert (let* ((image-props (toolbarx-xemacs-image-properties (cadr (memq :image filtered-props)))) (glyph-list (car image-props)) (image-height (nth 1 image-props)) (image-width (nth 2 image-props)) (command (let* ((com (nth 1 (memq :command filtered-props))) (app (nth 1 (memq :append-command filtered-props))) (prep (nth 1 (memq :prepend-command filtered-props)))) (when (or com app prep) (toolbarx-make-command com prep app)))) ;; enable defaults to `t' (enable (if (memq :enable filtered-props) (cadr (memq :enable filtered-props)) t)) ;; help defaults to nil (help (when (memq :help filtered-props) (cadr (memq :help filtered-props)))) ;; toolbar defaults to `default' (toolbar-prop (cons (memq :toolbar filtered-props) (cadr (memq :toolbar filtered-props)))) (toolbar (if (car toolbar-prop) (if (symbolp (cdr toolbar-prop)) (cdr toolbar-prop) ;; (cdr toolbar-prop) is cons cell (if (eq (cadr toolbar-prop) (default-toolbar-position)) (cddr toolbar-prop) (cadr toolbar-prop))) 'default))) (when glyph-list (list toolbar image-height image-width (vector glyph-list command enable help))))))) (defun toolbarx-xemacs-refresh-process-button-or-insert-list (switches toolbar-props) "Process SWITCHES, returning an updated version of TOOLBAR-PROPS. TOOLBAR-PROPS should be a list with 12 elements, each one representing properties (in this order) `locale', `default', `top', `right', `bottom', `left', `default-height', `default-width', `top-height', `right-width', `bottom-height' and `left-width'. The return is a list with the same properties updated. NB: Buttons (vectors) are inserted in front of the lists represented by `default', `top', `right', `bottom' and `left', so the lists are built reversed." (let ((locale (nth 0 toolbar-props)) (default (nth 1 toolbar-props)) (top (nth 2 toolbar-props)) (right (nth 3 toolbar-props)) (bottom (nth 4 toolbar-props)) (left (nth 5 toolbar-props)) (default-height (nth 6 toolbar-props)) (default-width (nth 7 toolbar-props)) (top-height (nth 8 toolbar-props)) (right-width (nth 9 toolbar-props)) (bottom-height (nth 10 toolbar-props)) (left-width (nth 11 toolbar-props)) (toolbar-props-temp)) (dolist (button switches) (if (eq (car button) :insert) (when (eval (cadr button)) ;; if insert group, process `cddr' (progn (setq toolbar-props-temp (toolbarx-xemacs-refresh-process-button-or-insert-list (cddr button) (list locale default top right bottom left default-height default-width top-height right-width bottom-height left-width))) (setq default (nth 1 toolbar-props-temp)) (setq top (nth 2 toolbar-props-temp)) (setq right (nth 3 toolbar-props-temp)) (setq bottom (nth 4 toolbar-props-temp)) (setq left (nth 5 toolbar-props-temp)) (setq default-height (nth 6 toolbar-props-temp)) (setq default-width (nth 7 toolbar-props-temp)) (setq top-height (nth 8 toolbar-props-temp)) (setq right-width (nth 9 toolbar-props-temp)) (setq bottom-height (nth 10 toolbar-props-temp)) (setq left-width (nth 11 toolbar-props-temp)))) ;; else, if normal button (let* ((button-props (toolbarx-xemacs-button-properties button)) (toolbar (nth 0 button-props)) (height (nth 1 button-props)) (width (nth 2 button-props)) (button-description (nth 3 button-props))) (when button-props (cond ;; default ((eq toolbar 'default) (setq default (cons button-description default)) (setq default-height (max default-height height)) (setq default-width (max default-width width))) ;; top ((eq toolbar 'top) (setq top (cons button-description top)) (setq top-height (max top-height height))) ;; right ((eq toolbar 'right) (setq right (cons button-description right)) (setq right-width (max right-width width))) ;; bottom ((eq toolbar 'bottom) (setq bottom (cons button-description bottom)) (setq bottom-height (max bottom-height height))) ;; left ((eq toolbar 'left) (setq left (cons button-description left)) (setq left-width (max left-width width)))))))) ;; return a list similar to toolbar-props (list locale default top right bottom left default-height default-width top-height right-width bottom-height left-width))) (defun toolbarx-xemacs-refresh (&optional global-flag) "Refresh the toolbar in XEmacs." (let* ((switches (if global-flag (if (default-boundp 'toolbarx-internal-button-switches) (default-value 'toolbarx-internal-button-switches) toolbarx-internal-button-switches) toolbarx-internal-button-switches)) (locale (if global-flag 'global (current-buffer))) (toolbar-init (list locale ; locale nil ; default nil ; top nil ; right nil ; bottom nil ; left 0 ; default-height 0 ; default-width 0 ; top-height 0 ; right-width 0 ; bottom-height 0)) ; left-width (toolbar-props (toolbarx-xemacs-refresh-process-button-or-insert-list switches toolbar-init)) ;; NB: Buttons (vectors) are inserted in front of the lists ;; represented by `default', `top', `right', `bottom' and ;; `left', so the lists are built reversed. (default (nreverse (nth 1 toolbar-props))) (top (nreverse (nth 2 toolbar-props))) (right (nreverse (nth 3 toolbar-props))) (bottom (nreverse (nth 4 toolbar-props))) (left (nreverse (nth 5 toolbar-props))) (default-height (nth 6 toolbar-props)) (default-width (nth 7 toolbar-props)) (top-height (nth 8 toolbar-props)) (right-width (nth 9 toolbar-props)) (bottom-height (nth 10 toolbar-props)) (left-width (nth 11 toolbar-props)) (button-raised-border 2) (default-border (specifier-instance default-toolbar-border-width)) (top-border (specifier-instance top-toolbar-border-width)) (right-border (specifier-instance right-toolbar-border-width)) (bottom-border (specifier-instance bottom-toolbar-border-width)) (left-border (specifier-instance left-toolbar-border-width))) ;; adding borders (when default (setq default-height (+ (* 2 button-raised-border) (* 2 default-border) default-height)) (setq default-width (+ (* 2 button-raised-border) (* 2 default-border) default-width))) (when top (setq top-height (+ (* 2 button-raised-border) (* 2 top-border) top-height))) (when right (setq right-width (+ (* 2 button-raised-border) (* 2 right-border) right-width))) (when bottom (setq bottom-height (+ (* 2 button-raised-border) (* 2 bottom-border) bottom-height))) (when left (setq left-width (+ (* 2 button-raised-border) (* 2 left-border) left-width))) ;; deal with specifiers ;; - remove all specifiers for toolbars witout buttons (if default (progn ;; Only activate the tool bar if it is already visible. (when toolbar-visible-p (set-specifier default-toolbar-visible-p (not (not default)) locale) (if (memq (default-toolbar-position) '(top bottom)) (set-specifier default-toolbar-height default-height locale) (set-specifier default-toolbar-width default-width locale))) (set-specifier default-toolbar default locale)) (remove-specifier default-toolbar locale) (remove-specifier default-toolbar-visible-p locale) (remove-specifier default-toolbar-height locale) (remove-specifier default-toolbar-width locale)) (if top (progn (set-specifier top-toolbar-visible-p (not (not top)) locale) (set-specifier top-toolbar-height top-height locale) (set-specifier top-toolbar top locale)) (remove-specifier top-toolbar locale) (remove-specifier top-toolbar-visible-p locale) (remove-specifier top-toolbar-height locale)) (if right (progn (set-specifier right-toolbar-visible-p (not (not right)) locale) (set-specifier right-toolbar-width right-width locale) (set-specifier right-toolbar right locale)) (remove-specifier right-toolbar locale) (remove-specifier right-toolbar-visible-p locale) (remove-specifier right-toolbar-width locale)) (if bottom (progn (set-specifier bottom-toolbar-visible-p (not (not bottom)) locale) (set-specifier bottom-toolbar-height bottom-height locale) (set-specifier bottom-toolbar bottom locale)) (remove-specifier bottom-toolbar locale) (remove-specifier bottom-toolbar-visible-p locale) (remove-specifier bottom-toolbar-height locale)) (if left (progn (set-specifier left-toolbar-visible-p (not (not left)) locale) (set-specifier left-toolbar-width left-width locale) (set-specifier left-toolbar left locale)) (remove-specifier left-toolbar locale) (remove-specifier left-toolbar-visible-p locale) (remove-specifier left-toolbar-width locale)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; finishing parsing engine (defun toolbarx-refresh (&optional global-flag) "Redraw the toolbar, peviously installed with `toolbarx'. Force global refresh if GLOBAL-FLAG is non-nil." (interactive "P") (if (featurep 'xemacs) (toolbarx-xemacs-refresh global-flag) (toolbarx-emacs-refresh global-flag))) ;;;###autoload (autoload 'toolbarx-install-toolbar "toolbar-x") (defun toolbarx-install-toolbar (buttons &optional meaning-alist global-flag) "Install toolbar buttons given in BUTTONS. Button properties are optionally given in MEANING-ALIST. If GLOBAL-FLAG is non-nil, toolbar is installed globally (on every buffer that does not have a toolbar set locally). BUTTONS is a list of format (ELEM ... ELEM . PROPS), where each ELEM is either - a list in the same format od BUTTONS, which is going to be refered as a *group*; groups are used to distribute properties recursively to its elements; there are groups with special format for special purpose: *dropdown groups* and also *eval groups*. - a symbol, which could be associated in MEANING-ALIST with a list of button properties (symbol + properties = a *button*) or associated to a special kind of group (an *alias group*). - a vector, which elements are on the previous formats (but not another vector); this is useful to specify different ingredients to the toolbar depending if editor is Emacs or XEmacs; the first element will be used in Emacs; the second element is going to be used in XEmacs. Meaning alist ============= MEANING-ALIST is a list where each element is in one of the formats (SYMB . BUTTON-PROPS-LIST) or (SYMB . ALIAS-GROUP). BUTTON-PROPS-LIST is a list in one of the formats (IMAGE COMMAND PROP VAL PROP VAL ... PROP VAL) or (PROP VAL PROP VAL ... PROP VAL). The IMAGE is going to be used as the `:image' property of the button (see button properties bellow), and COMMAND shall be used as the `:command' property of the button. Each PROP is one of the button properties, and VAL is its respective value. ALIAS-GROUP is a list which first element is the symbol `:alias' and the cdr shall be processed as a group. However, a symbol is not required to have an association in MEANING-ALIST, which is only a way to specify properties to a button. One can use groups to specify properties. Nil is a good MEANING-ALIST. Buttons ======= A toolbar button in `toolbarx' is the set with a symbol and properties used to display the button, like a image and a command to call when the button is pressed (which are the minimal elements that a button should have.) The supported properties for buttons and their `basic types' (see note on how values of properties are obtained!) are: :image -- in Emacs, either a string or image descriptor (see info for a definition), or a variable bound to a image descriptor (like those defined with `defimage') or a list of 4 strings or image descriptors; in XEmacs, either a string or a glyph, or a symbol bount to a glyph, or a list of at least 1 and at most 6 strings or glyphs or nil (not the first element though); defines the image file displayed by the button. If it is a string, the image file found with that name (always using the function `toolbarx-find-image' to make the \`internal\' image descriptor) is used as button image. For the other formats, the button image is handled in the same way as it is treated by the editors; see info nodes bellow for a description of the capabilities of each editor Emacs: info file \"elisp\", node \"Tool Bar\" (see `:image' property); PS: a *vector* of four strings is used in the Emacs Lisp documentation as the `more ellaborated' image property format, but here we reserve vectors to provide editor-dependent values; this motivates our choice for a list instead of vector (however, internally the list becomes a vector when displaying the button). XEmacs: info file \"lispref\", node \"Toolbar Descriptor Format\" (see GLYPH-LIST) or the documentation of the variable `default-toolbar'; check the inheritage in case of a ommited glyph or nil instead of glyph. :command -- a form; if the form happens to be a command, it will be called with `call-interactively'. :append-command -- a form added to the end of the value of `:command'. :prepend-command -- a form added at the beginning of the value of `:command'. :help -- either a string or nil; defined the help string of the button; :enable -- a form, evaluated constantly by both editors to determine if a button is active (enabled) or not. :visible -- in Emacs, a form that is evaluated constantly to determine if a button is visible; in XEmacs, this property is ignored. :button -- in Emacs, a cons cell (TYPE . SELECTED) where the TYPE should be `:toggle' or `:radio' and the cdr should be a form. SELECTED is evaluated to determine when the button is selected. This property is ignored in XEmacs. :insert -- a form that is evaluated every time that the toolbar is refresh (a call of `toolbarx-refresh') to determine if the button is inserted or just ignored (until next refresh). :toolbar -- in XEmacs, either one of the symbols `default', `top', `bottom', `left', `right', or a cons cell (POS . POS-AVOID-DEFAULT) where POS and POS-AVOID-DEFAULT should be one of the symbols `top', `bottom', `left', `right'; if a symbol, the button will be inserted in one of these toolbars; if a cons cell, button will be inserted in toolbar POS unless the position of the default toolbar is POS (then, the default toolbar would override the position-specific toolbar), and in this case, button will be inserted in toolbar POS-AVOID-DEFAULT; in Emacs, this property is meaningless, and therefore ignored. Hint of use of this property: in a program, use or everything with `default' and the cons format to avoid the default toolbar, or use only the position specific buttons (symbols that are not `default'), because of the `overriding' system in XEmacs, when a position-specific toolbar overrides the default toolbar; for instance, if you put a button in the default toolbar and another in the top toolbar (and the default toolbar is in the top), then *only* the ones in the top toolbar will be visible! How to specify a button ======================= One can specify a button by its symbol or by a group to specify properties. For example, BUTTON = ( foo (bar :image [\"bar-Emacs\" \"bar-XEmacs\"] :command bar-function :help \"Bar help string\") :insert foo-bar ) MEANING-ALIST = ( (foo :image \"foo\" :command foo-function) ) specifiy two buttons `foo' and `bar', each one with its necessary :image and :command properties, and both use the :insert property specified ate the end of BUTTONS (because groups distribute properties to all its elements). `foo' and `bar' will be inserted only if `foo-bar' evaluation yields non-nil. `bar' used a different :image property depending if editor is Emacs or XEmacs. Note on how values of properties are obtained ============================================= For each property PROP, its value should be either: i) a vector of 2 elements; then each element should be of the basic type of PROP. ii) an element on the basic type of PROP. iii) a function (that does not need arguments); it is evaluated and the return should be ot type i) or ii) above iv) a symbol bound to a element of type i) or ii). The type is cheched in the order i), ii) iii) and iv). This evaluations are done every time that the oolbar is refresh. Ps.: in order to specify a vector as value of a property (like the :image in Emacs), it is necessary to provide the vector as element of another vector. Special groups ============== Eval groups ----------- If the first element of a group is the symbol `:eval-group', each element is evaluated (with `eval'), put inside a list and processed like a group. Eval groups are useful to store definition of buttons in a variable. Dropdown groups --------------- The idea is to specify a set of buttons that appear when a determined menu item of a dropdown menu is active. The dropdown menu appears when a button (by default with a triangle pointing down) is clicked. This button is called `dropdown button'. The dropdown button appears on the left of the currently visible buttons of the dropdown group. A dropdown group is a list which first element is the symbol `:dropdown-group' and in one of the following formats (:dropdown-group SYMBOL-1 ... SYMBOL-n PROP-1 VAL-1 ... PROP-k VAL-k) or (:dropdown-group STRING-1 ITEM-11 ... ITEM-1n STRING-2 ITEM-21 ... ITEM-2m . . . STRING-n ITEM-n1 ... ITEM-np PROP-1 VAL-1 ... PROP-j VAL-j) where SYMBOL-* is a symbol that defines a button in MEANING-ALIST; STRING-* is a string that will appear in the dropdown menu; ITEM-* is any format that define buttons or groups. \(a dropdown group of first format is internally converted to the second by making strings from the symbols and each symbol is the item) The same rules for obtaining property values, described above, apply here. Properties are also distributed by groups. The supported properties and their basic type are: :type -- one of the symbols `radio' (default) or `toggle'; if type is radio, only one of the itens may be active, and if type is toggle, any item number of itens can be active. :variable -- a symbol; it is the variable that govern the dropdown button; every time the value should be an integer starting from 1 (if type is radio) or a list of integers (if type is toggle). The Nth set of buttons is :insert'ed. :default -- determines the default value when the menu is installed; it is ignored if a value was saved with custom; it defaults to 1 if type is radio or nil if type is toggle. If value is a integer and type is `toggle', value used is a list with that integer. :save -- one of the symbols nil (default), `offer' or `always'; determined if it is possible for the user to save the which menu itens are active, for a next session. If value is `offer', a item (offering to save) is added to the popup menu. If the value is `always', every time that a item is selected, the variable is saved. If value is nil, variable shall not be saved. If value is non-nil then `:variable' is mandatory. :title -- a string or nil; if a string, the popup menu will show is as menu title; if nil, no title is shown. :dropdown-help -- a string or nil; the help string of the dropdown button. :dropdown-image -- in Emacs, either a string or a vector of 4 strings; in XEmacs, either a string or a glyph or a list of at least 1 and at most 6 strings or glyphs; defines the image file displayed by the dropdown button; by default, it is the string \"dropdown\". :dropdown-append-command, :dropdownprepend-command -- a form; append or prepend forms to the command that shows the dropdown menu, allowing extra code to run before or after the menu appears (remember that every menu item clicked refresh the toolbar.) :dropdown-enable -- a form; evaluated constantly by both editors to determine if the dropdown button is active (enabled) or not. :dropdown-visible -- a form; in Emacs, it is evaluated constantly to determine if the dropdown button is visible; in XEmacs, this property is ignored. :dropdown-toolbar -- in XEmacs, one of the symbols `default', `opposite', `top', `bottom', `left' or `right'; ignored in Emacs; in XEmacs, the toolbar where the dropdown button will appear. Also, if the symbol `dropdown' is associted in MEANING-ALIST with some properties, these properties override (or add) with higher precedence. Special buttons =============== If the symbol of a button is `:new-line', it is inserted a (faked) return, and the next button will be displayed a next line of buttons. The only property supported for this button is `:insert'. This feature is available only in Emacs. In XEmacs, this button is ignored." (let ((switches (toolbarx-process-group buttons meaning-alist nil nil))) (if global-flag (setq-default toolbarx-internal-button-switches switches) (set (make-local-variable 'toolbarx-internal-button-switches) switches) (unless (featurep 'xemacs) (make-local-variable 'tool-bar-map)))) (toolbarx-refresh global-flag)) (defconst toolbarx-default-toolbar-meaning-alist `((separator :image "sep" :command t :enable nil :help "") (,(if (and (not (featurep 'xemacs)) (>= emacs-major-version 22)) 'new-file 'open-file) :image ["new" toolbar-file-icon] :command [find-file toolbar-open] :enable [(not (window-minibuffer-p (frame-selected-window menu-updating-frame))) t] :help ["Specify a new file's name, to edit the file" "Visit new file"]) ,(when (and (not (featurep 'xemacs)) (>= emacs-major-version 22)) '(open-file :image ["open" toolbar-file-icon] :command [menu-find-file-existing toolbar-open] :enable [(not (window-minibuffer-p (frame-selected-window menu-updating-frame))) t] :help ["Read a file into an Emacs buffer" "Open a file"])) (dired :image [,(if (>= emacs-major-version 22) "diropen" "open") toolbar-folder-icon] :command [dired toolbar-dired] :help ["Read a directory, operate on its files" "Edit a directory"]) (save-buffer :image ["save" toolbar-disk-icon] :command [save-buffer toolbar-save] :enable [(and (buffer-modified-p) (buffer-file-name) (not (window-minibuffer-p (frame-selected-window menu-updating-frame)))) t] :help ["Save current buffer to its file" "Save buffer"] :visible (or buffer-file-name (not (eq 'special (get major-mode 'mode-class))))) ;; Emacs only (write-file :image "saveas" :command write-file :enable (not (window-minibuffer-p (frame-selected-window menu-updating-frame))) :insert [t nil] :help "Write current buffer to another file" :visible (or buffer-file-name (not (eq 'special (get major-mode 'mode-class))))) (undo :image ["undo" toolbar-undo-icon] :command [undo toolbar-undo] :enable [(and (not buffer-read-only) (not (eq t buffer-undo-list)) (if (eq last-command 'undo) pending-undo-list (consp buffer-undo-list))) t] :help ["Undo last operation" "Undo edit"] :visible (not (eq 'special (get major-mode 'mode-class)))) (cut :image ["cut" toolbar-cut-icon] :help ["Delete text in region and copy it to the clipboard" "Kill region"] :command [clipboard-kill-region toolbar-cut] :visible (not (eq 'special (get major-mode 'mode-class)))) (copy :image ["copy" toolbar-copy-icon] :help ["Copy text in region to the clipboard" "Copy region"] :command [clipboard-kill-ring-save toolbar-copy]) (paste :image ["paste" toolbar-paste-icon] :help ["Paste text from clipboard" "Paste from clipboard"] :command [clipboard-yank toolbar-paste] :visible (not (eq 'special (get major-mode 'mode-class)))) ;; Emacs only (search-forward :command nonincremental-search-forward :help "Search forward for a string" :image "search" :insert [t nil]) (search-replace :image ["search-replace" toolbar-replace-icon] :command [query-replace toolbar-replace] :help ["Replace string interactively, ask about each occurrence" "Search & Replace"]) (print-buffer :image ["print" toolbar-printer-icon] :command [print-buffer toolbar-print] :help ["Print current buffer with page headings" "Print buffer"]) ;; Emacs only (customize :image "preferences" :command customize :help "Edit preferences (customize)" :insert [t nil]) ;; Emacs only (help :image "help" :command (lambda () (interactive) (popup-menu menu-bar-help-menu)) :help "Pop up the Help menu" :insert [t nil]) ;; Emacs only (kill-buffer :command kill-this-buffer :enable (kill-this-buffer-enabled-p) :help "Discard current buffer" :image "close" :insert [t nil]) ;; Emacs only (exit-emacs :image "exit" :command save-buffers-kill-emacs :help "Offer to save unsaved buffers, then exit Emacs" :insert [t nil]) (spell-buffer :image ["spell" toolbar-spell-icon] :command [ispell-buffer toolbar-ispell] :help ["Check spelling of selected buffer" "Check spelling"]) (info :image ["info" toolbar-info-icon] :command [info toolbar-info] :help ["Enter Info, the documentation browser" "Info documentation"]) ;; XEmacs only (mail :image toolbar-mail-icon :command toolbar-mail :help "Read mail" :insert [nil t]) ;; XEmacs only (compile :image toolbar-compile-icon :command toolbar-compile :help "Start a compilation" :insert [nil t]) ;; XEmacs only (debug :image toolbar-debug-icon :command toolbar-debug :help "Start a debugger" :insert [nil t]) ;; XEmacs only (news :image toolbar-news-icon :command toolbar-news :help "Read news" :insert [nil t])) "A meaning alist with definition of the default buttons. The following buttons are available: * Both Emacs and XEmacs: `open-file', `dired', `save-buffer', `undo', `cut', `copy', `paste', `search-replace', `print-buffer', `spell-buffer', `info'. * Emacs only: `new-file' (Emacs 22+) `write-file', `search-forward', `customize', `help', `kill-buffer', `exit-emacs'. * XEmacs only: `mail', `compile', `debug', `news'. To reproduce the default toolbar in both editors with use as BUTTON in `toolbarx-install-toolbar': \(toolbarx-install-toolbar '([(open-file dired kill-buffer save-buffer write-file undo cut copy paste search-forward print-buffer customize help) (open-file dired save-buffer print-buffer cut copy paste undo spell-buffer search-replace mail info compile debug news)]) toolbarx-default-toolbar-meaning-alist) Ps.: there are more buttons available than suggested in the expression above.") (provide 'toolbar-x) ;;; toolbar-x.el ends here auctex-11.87/tex-info.el0000644000000000000000000006750212054655215013613 0ustar rootroot;;; tex-info.el --- Support for editing Texinfo source. ;; Copyright (C) 1993, 1994, 1997, 2000, 2001, 2004, 2005, 2006, 2011 ;; Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (require 'tex) (require 'texinfo) ;; Make sure the Texinfo mode of AUCTeX is still used after loading ;; texinfo.el. (This is only an issue on Emacs 21.) (when (and (boundp 'TeX-modes) (memq 'texinfo-mode TeX-modes)) (defalias 'texinfo-mode 'TeX-texinfo-mode)) ;;; Environments: (defvar Texinfo-environment-list '(("cartouche") ("command") ("copying") ("defcv") ("deffn") ("defivar") ("defmac") ("defmethod") ("defop") ("defopt") ("defspec") ("deftp") ("deftypefn") ("deftypefun") ("deftypevar") ("deftypevr") ("defun") ("defvar") ("defvr") ("description") ("detailmenu") ("direntry") ("display") ("documentdescription") ("enumerate") ("example") ("flushleft") ("flushright") ("format") ("ftable") ("group") ("ifclear") ("ifdocbook") ("ifhtml") ("ifinfo") ("ifnotdocbook") ("ifnothtml") ("ifnotinfo") ("ifnotplaintext") ("ifnottex") ("ifnotxml") ("ifplaintext") ("ifset") ("iftex") ("ifxml") ("ignore") ("itemize") ("lisp") ("macro") ("menu") ("multitable") ("quotation") ("smalldisplay") ("smallexample") ("smallformat") ("smalllisp") ("table") ("tex") ("titlepage") ("verbatim") ("vtable")) "Alist of Texinfo environments.") (defconst texinfo-environment-regexp ;; Overwrite version from `texinfo.el'. (concat "^@\\(" (mapconcat 'car Texinfo-environment-list "\\|") "\\|end\\)\\>") "Regexp for environment-like Texinfo list commands. Subexpression 1 is what goes into the corresponding `@end' statement.") (defun Texinfo-environment (env &optional arg) "Make Texinfo environment ENV. With optional ARG, modify current environment." ;; XXX: This could be enhanced to act like `LaTeX-environment', ;; i.e. suggest a default environment and have its own history. (interactive (list (completing-read "Environment: " Texinfo-environment-list) current-prefix-arg)) (if arg (Texinfo-modify-environment env) (Texinfo-insert-environment env))) (defun Texinfo-insert-environment (env) "Insert Texinfo environment ENV." (if (and (TeX-active-mark) (not (eq (mark) (point)))) (progn (when (< (mark) (point)) (exchange-point-and-mark)) (unless (TeX-looking-at-backward "^[ \t]*") (newline)) (insert "@" env) (newline) (goto-char (mark)) (unless (TeX-looking-at-backward "^[ \t]*") (newline)) (insert "@end " env) (save-excursion (newline)) (end-of-line 0)) (insert "@" env "\n\n@end " env "\n") (if (null (cdr-safe (assoc "defcv" Texinfo-environment-list))) (forward-line -2)))) (defun Texinfo-modify-environment (env) "Change current environment to environment ENV." (save-excursion (Texinfo-find-env-end) (re-search-backward (concat (regexp-quote TeX-esc) "end \\([a-zA-Z]*\\)") (line-beginning-position)) (replace-match env t t nil 1) (beginning-of-line) (Texinfo-find-env-start) (re-search-forward (concat (regexp-quote TeX-esc) "\\([a-zA-Z]*\\)") (line-end-position)) (replace-match env t t nil 1))) (defun Texinfo-find-env-end () "Move point to the end of the current environment." (interactive) (let* ((envs (mapcar 'car Texinfo-environment-list)) (regexp (concat "^[ \t]*" (regexp-quote TeX-esc) "\\(end \\)*" (regexp-opt envs t) "\\b")) (orig-pos (point)) (level 1) case-fold-search) (save-restriction (save-excursion (save-excursion (beginning-of-line) ;; Stop if point is inside of an @end command, but not ;; if it is behind it. (when (and (looking-at regexp) (match-string 1) (> (match-end 0) orig-pos)) (setq level 0))) (while (and (> level 0) (re-search-forward regexp nil t)) (if (match-string 1) (setq level (1- level)) (setq level (1+ level))))) (if (= level 0) (goto-char (match-end 0)) (error "Can't locate end of current environment"))))) (defun Texinfo-find-env-start () "Move point to the start of the current environment." (interactive) (let* ((envs (mapcar 'car Texinfo-environment-list)) (regexp (concat "^[ \t]*\\(" (regexp-quote TeX-esc) "\\)\\(end \\)*" (regexp-opt envs t) "\\b")) (level 1) (orig-pos (point)) case-fold-search) (save-restriction (save-excursion (save-excursion (beginning-of-line) ;; Stop if point is inside of an @ command, but not if ;; it is before it. (when (and (looking-at regexp) (not (match-string 2)) (< (match-beginning 1) orig-pos)) (setq level 0))) (while (and (> level 0) (re-search-backward regexp nil t)) (if (match-string 2) (setq level (1+ level)) (setq level (1- level))))) (if (= level 0) (goto-char (match-beginning 0)) (error "Can't locate start of current environment"))))) (defun Texinfo-mark-environment (&optional count) "Set mark to end of current environment and point to the matching begin. If prefix argument COUNT is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments." ;; TODO: ;; This is identical to the LaTeX counterpart but for the find begin/end ;; functions. So some day the implemenation should be factorized. (interactive "p") (setq count (if count (abs count) 1)) (let ((cur (point)) beg end) ;; Only change point and mark after beginning and end were found. ;; Point should not end up in the middle of nowhere if the search fails. (save-excursion (dotimes (c count) (Texinfo-find-env-end)) (setq end (line-beginning-position 2)) (goto-char cur) (dotimes (c count) (Texinfo-find-env-start) (unless (= (1+ c) count) (beginning-of-line 0))) (setq beg (point))) (set-mark end) (goto-char beg) (TeX-activate-region))) (defun Texinfo-mark-section (&optional no-subsection) "Mark current section, with inclusion of any containing node. The current section is detected as starting by any of the structuring commands matched by regexp in variable `outline-regexp' which in turn is a regexp matching any element of variable `texinfo-section-list'. If optional argument NO-SUBSECTION is set to any integer or is a non nil empty argument (i.e. `C-u \\[Texinfo-mark-section]'), then mark the current section with exclusion of any subsections. Otherwise, any included subsections are also marked along with current section. Note that when current section is starting immediatley after a node commande, then the node command is also marked as part as the section." (interactive "P") (let (beg end is-beg-section is-end-section (section-re (concat "^\\s-*" outline-regexp))) (if (and (consp no-subsection) (eq (car no-subsection) 4)) ;; section with exclusion of any subsection (setq beg (save-excursion (unless (looking-at section-re) (end-of-line)) (re-search-backward section-re nil t)) is-beg-section t end (save-excursion (beginning-of-line) (when (re-search-forward (concat section-re "\\|^\\s-*@bye\\_>" ) nil t) (save-match-data (beginning-of-line) (point)))) is-end-section (match-string 1)) ;; full section without exclusion of any subsection (let (section-command-level) (setq beg (save-excursion (end-of-line) (re-search-backward section-re nil t))) (when beg (setq is-beg-section t section-command-level (cadr (assoc (match-string 1) texinfo-section-list)) end (save-excursion (beginning-of-line) (while (and (re-search-forward (concat section-re "\\|^\\s-*@bye\\_>" ) nil t) (or (null (setq is-end-section (match-string 1))) (> (cadr (assoc is-end-section texinfo-section-list)) section-command-level)))) (when (match-string 0) (beginning-of-line) (point))))))); (if ...) (when (and beg end) ;; now take also enclosing node of beg and end (dolist (boundary '(beg end)) (when (symbol-value (intern (concat "is-" (symbol-name boundary) "-section"))) (save-excursion (goto-char (symbol-value boundary)) (while (and (null (bobp)) (progn (beginning-of-line 0) (looking-at "^\\s-*\\($\\|@\\(c\\|comment\\)\\_>\\)")))) (when (looking-at "^\\s-*@node\\_>") (set boundary (point)))))) (set-mark end) (goto-char beg) (TeX-activate-region) ))) (defun Texinfo-mark-node () "Mark the current node. \ This is the node in which the pointer is. It is starting at previous beginning of keyword `@node' and ending at next beginning of keyword `@node' or `@bye'." (interactive) (let ((beg (save-excursion (unless (looking-at "^\\s-*@\\(?:node\\)\\_>") (end-of-line)) (re-search-backward "^\\s-*@\\(?:node\\)\\_>" nil t ))) (end (save-excursion (beginning-of-line) (and (re-search-forward "^\\s-*@\\(?:node\\|bye\\)\\_>" nil t ) (progn (beginning-of-line) (point)))))) (when (and beg end) (set-mark end) (goto-char beg) (TeX-activate-region) ))) (defun Texinfo-insert-node () "Insert a Texinfo node in the current buffer. That means, insert the string `@node' and prompt for current, next, previous and upper node. If there is an active region, use this for the current node and inhibit the prompt for it. Insert a comment on the following line indicating the order of arguments for @node." (interactive) (let ((active-mark (and (TeX-active-mark) (not (eq (mark) (point))))) nodes node-name next-node previous-node up-node) ;; Build list of nodes in current buffer. ;; (What about using `imenu--index-alist'?) ;; FIXME: Support multi-file documents. (save-excursion (goto-char (point-min)) (while (re-search-forward "^@node\\b" nil t) (skip-chars-forward " \t") (add-to-list 'nodes (list (buffer-substring-no-properties (point) (progn (skip-chars-forward "^,") (point))))))) (unless active-mark (setq node-name (read-string "Node name: "))) ;; FIXME: What if key binding for `minibuffer-complete' was changed? ;; `substitute-command-keys' doesn't return the correct value. (setq next-node (completing-read "Next node (TAB completes): " nodes)) (setq previous-node (completing-read "Previous node (TAB completes): " nodes)) (setq up-node (completing-read "Upper node (TAB completes): " nodes)) (when (and active-mark (< (mark) (point))) (exchange-point-and-mark)) (insert "@node ") (if active-mark (goto-char (mark)) (insert node-name)) (insert ", " next-node ", " previous-node ", " up-node "\n@comment node-name, next, previous, up\n") ;; Position point at first empty field. (unless (and (or (> (length node-name) 0) active-mark) (> (length next-node) 0) (> (length previous-node) 0) (> (length up-node) 0)) (forward-line -2) (forward-char 6) (catch 'break (if (or (> (length node-name) 0) active-mark) (progn (skip-chars-forward "^,") (forward-char 2)) (throw 'break nil)) (dolist (node (list next-node previous-node up-node)) (if (> (length node) 0) (progn (skip-chars-forward "^,") (forward-char 2)) (throw 'break nil))))))) ;; Silence the byte-compiler from warnings for variables and functions declared ;; in reftex. (eval-when-compile (defvar reftex-section-levels-all) (defvar reftex-level-indent) (defvar reftex-label-menu-flags) (defvar reftex-tables-dirty) (when (fboundp 'declare-function) (declare-function reftex-match-string "reftex" (n)) (declare-function reftex-section-number "reftex-parse" (&optional level star)) (declare-function reftex-nicify-text "reftex" (text)) (declare-function reftex-ensure-compiled-variables "reftex" ()))) (defun Texinfo-reftex-section-info (file) ;; Return a section entry for the current match. ;; Carefull: This function expects the match-data to be still in place! (let* ((marker (set-marker (make-marker) (1- (match-beginning 3)))) (macro (reftex-match-string 3)) (level-exp (cdr (assoc macro reftex-section-levels-all))) (level (if (symbolp level-exp) (save-match-data (funcall level-exp)) level-exp)) (unnumbered (< level 0)) (level (abs level)) (section-number (reftex-section-number level unnumbered)) (text1 (save-match-data (save-excursion (buffer-substring-no-properties (point) (progn (end-of-line) (point)))))) (literal (buffer-substring-no-properties (1- (match-beginning 3)) (min (point-max) (+ (match-end 0) (length text1) 1)))) ;; Literal can be too short since text1 too short. No big problem. (text (reftex-nicify-text text1))) ;; Add section number and indentation (setq text (concat (make-string (* reftex-level-indent level) ?\ ) (if (nth 1 reftex-label-menu-flags) ; section number flag (concat section-number " ")) text)) (list 'toc "toc" text file marker level section-number literal (marker-position marker)))) (defun Texinfo-reftex-hook () "Hook function to plug Texinfo into RefTeX." ;; force recompilation of variables (when (string= TeX-base-mode-name "Texinfo") (dolist (v `((reftex-section-pre-regexp . "@") ; section post-regexp must contain exactly one group (reftex-section-post-regexp . "\\([ \t]+\\)") (reftex-section-info-function . Texinfo-reftex-section-info) (reftex-section-levels . ,(mapcar (lambda (x) (if (string-match "\\(\\`unnumbered\\)\\|\\(heading\\'\\)\\|\\(\\`top\\'\\)" (car x)) (cons (car x) (- (cadr x))) (cons (car x) (cadr x)))) texinfo-section-list)))) (set (make-local-variable (car v) ) (cdr v))) (setq reftex-tables-dirty t) (reftex-ensure-compiled-variables))) ;;; Keymap: (defvar Texinfo-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map TeX-mode-map) ;; From texinfo.el ;; bindings for updating nodes and menus (define-key map "\C-c\C-um" 'texinfo-master-menu) (define-key map "\C-c\C-u\C-m" 'texinfo-make-menu) (define-key map "\C-c\C-u\C-n" 'texinfo-update-node) (define-key map "\C-c\C-u\C-e" 'texinfo-every-node-update) (define-key map "\C-c\C-u\C-a" 'texinfo-all-menus-update) ;; Simulating LaTeX-mode (define-key map "\C-c\C-e" 'Texinfo-environment) (define-key map "\C-c." 'Texinfo-mark-environment) (define-key map "\C-c*" 'Texinfo-mark-section) (define-key map "\M-\C-h" 'Texinfo-mark-node) (define-key map "\C-c\n" 'texinfo-insert-@item) (or (key-binding "\e\r") (define-key map "\e\r" 'texinfo-insert-@item)) ;*** Alias (define-key map "\C-c\C-s" 'Texinfo-insert-node) (define-key map "\C-c]" 'texinfo-insert-@end) map) "Keymap for Texinfo mode.") (easy-menu-define Texinfo-command-menu Texinfo-mode-map "Menu used in Texinfo mode for external commands." (TeX-mode-specific-command-menu 'texinfo-mode)) (easy-menu-define Texinfo-mode-menu Texinfo-mode-map "Menu used in Texinfo mode." (TeX-menu-with-help `("Texinfo" ["Node ..." texinfo-insert-@node :help "Insert a node"] ["Macro ..." TeX-insert-macro :help "Insert a macro and possibly arguments"] ["Complete Macro" TeX-complete-symbol :help "Complete the current macro"] ["Environment ..." Texinfo-insert-environment :help "Insert an environment"] ["Item" texinfo-insert-@item :help "Insert an @item"] "-" ("Insert Font" ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] ["Sample" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"]) ("Replace Font" ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] ["Sample" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"]) ["Delete Font" (TeX-font t ?\C-d) :keys "C-c C-f C-d"] "-" ["Create Master Menu" texinfo-master-menu :help "Make a master menu for the whole Texinfo file"] ["Create Menu" texinfo-make-menu :help "Make or update the menu for the current section"] ["Update Node" texinfo-update-node :help "Update the current node"] ["Update Every Node" texinfo-every-node-update :help "Update every node in the current file"] ["Update All Menus" texinfo-all-menus-update :help "Update every menu in the current file"] "-" ("Commenting" ["Comment or Uncomment Region" TeX-comment-or-uncomment-region :help "Comment or uncomment the currently selected region"] ["Comment or Uncomment Paragraph" TeX-comment-or-uncomment-paragraph :help "Comment or uncomment the current paragraph"]) ,TeX-fold-menu "-" . ,TeX-common-menu-entries))) (defvar Texinfo-font-list '((?\C-b "@b{" "}") (?\C-c "@sc{" "}") (?\C-e "@emph{" "}") (?\C-i "@i{" "}") (?\C-r "@r{" "}") (?\C-s "@samp{" "}") (?\C-t "@t{" "}") (?s "@strong{" "}") (?\C-f "@file{" "}") (?d "@dfn{" "}") (?\C-v "@var{" "}") (?k "@key{" "}") (?\C-k "@kbd{" "}") (?c "@code{" "}") (?C "@cite{" "}") (?\C-d "" "" t)) "Font commands used in Texinfo mode. See `TeX-font-list'.") ;;; Mode: ;;;###autoload (defalias 'Texinfo-mode 'texinfo-mode) ;;;###autoload (defun TeX-texinfo-mode () "Major mode in AUCTeX for editing Texinfo files. Special commands: \\{Texinfo-mode-map} Entering Texinfo mode calls the value of `text-mode-hook' and then the value of `Texinfo-mode-hook'." (interactive) (kill-all-local-variables) (setq TeX-mode-p t) ;; Mostly stolen from texinfo.el (setq TeX-base-mode-name "Texinfo") (setq major-mode 'texinfo-mode) (use-local-map Texinfo-mode-map) (set-syntax-table texinfo-mode-syntax-table) (make-local-variable 'page-delimiter) (setq page-delimiter (concat "^@node [ \t]*[Tt]op\\|^@\\(" texinfo-chapter-level-regexp "\\)")) (make-local-variable 'require-final-newline) (setq require-final-newline t) (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode nil) (make-local-variable 'paragraph-separate) (setq paragraph-separate (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-separate)) (make-local-variable 'paragraph-start) (setq paragraph-start (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-start)) (make-local-variable 'fill-column) (setq fill-column 72) (make-local-variable 'comment-start) (setq comment-start "@c ") (make-local-variable 'comment-start-skip) (setq comment-start-skip "@c +\\|@comment +") (set (make-local-variable 'comment-use-syntax) nil) (make-local-variable 'words-include-escapes) (setq words-include-escapes t) (if (not (boundp 'texinfo-imenu-generic-expression)) ;; This was introduced in 19.30. () (make-local-variable 'imenu-generic-expression) (setq imenu-generic-expression texinfo-imenu-generic-expression)) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults ;; COMPATIBILITY for Emacs 20 (if (boundp 'texinfo-font-lock-syntactic-keywords) '(texinfo-font-lock-keywords nil nil nil backward-paragraph (font-lock-syntactic-keywords . texinfo-font-lock-syntactic-keywords)) '(texinfo-font-lock-keywords t))) (if (not (boundp 'texinfo-section-list)) ;; This was included in 19.31. () (make-local-variable 'outline-regexp) (setq outline-regexp (concat "@\\(" (mapconcat 'car texinfo-section-list "\\>\\|") "\\>\\)")) (make-local-variable 'outline-level) (setq outline-level 'texinfo-outline-level)) ;; Mostly AUCTeX stuff (easy-menu-add Texinfo-mode-menu Texinfo-mode-map) (easy-menu-add Texinfo-command-menu Texinfo-mode-map) (make-local-variable 'TeX-command-current) (setq TeX-command-current 'TeX-command-master) (setq TeX-default-extension "texi") (make-local-variable 'TeX-esc) (setq TeX-esc "@") (make-local-variable 'TeX-auto-regexp-list) (setq TeX-auto-regexp-list 'TeX-auto-empty-regexp-list) (make-local-variable 'TeX-auto-update) (setq TeX-auto-update t) (setq TeX-command-default "TeX") (setq TeX-header-end "%*end") (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye"))) (make-local-variable 'TeX-complete-list) (setq TeX-complete-list (list (list "@\\([a-zA-Z]*\\)" 1 'TeX-symbol-list nil) (list "" TeX-complete-word))) (make-local-variable 'TeX-font-list) (setq TeX-font-list Texinfo-font-list) (make-local-variable 'TeX-font-replace-function) (setq TeX-font-replace-function 'TeX-font-replace-macro) (add-hook 'find-file-hooks (lambda () (unless (file-exists-p (buffer-file-name)) (TeX-master-file nil nil t))) nil t) (TeX-add-symbols '("appendix" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsection" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsubsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsubsubsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("asis") '("author" (TeX-arg-literal " ") (TeX-arg-free "Author")) '("b" "Text") '("bullet") '("bye") '("c" (TeX-arg-literal " ") (TeX-arg-free "Comment")) '("center" (TeX-arg-literal " ") (TeX-arg-free "Line of text")) '("chapheading" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("chapter" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("cindex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("cite" "Reference") '("clear" (TeX-arg-literal " ") (TeX-arg-free "Flag")) '("code" "Sample code") '("command" "Command") '("comment" (TeX-arg-literal " ") (TeX-arg-free "Comment")) '("contents") '("copyright" nil) '("defcodeindex" (TeX-arg-literal " ") (TeX-arg-free "Index name")) '("defindex" (TeX-arg-literal " ") (TeX-arg-free "Index name")) '("dfn" "Term") '("dmn" "Dimension") '("dots" nil) '("emph" "Text") '("email" "Email address") '("equiv" nil) '("error") '("evenfooting" Texinfo-lrc-argument-hook) '("evenheading" Texinfo-lrc-argument-hook) '("everyfooting" Texinfo-lrc-argument-hook) '("everyheading" Texinfo-lrc-argument-hook) '("exdent" (TeX-arg-literal " ") (TeX-arg-free "Line of text")) '("expansion" nil) '("file" "Filename") '("finalout") '("findex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("footnote" "Text of footnote") '("footnotestyle" (TeX-arg-literal " ") (TeX-arg-free "Style")) '("group") '("heading" (TeX-arg-literal " ") (TeX-arg-free "Title")) ;; XXX: Would be nice with completion. '("headings" (TeX-arg-literal " ") (TeX-arg-free "On off single double")) '("i" "Text") '("ignore") '("include" (TeX-arg-literal " ") (TeX-arg-free "Filename")) '("inforef" "Node name" "Info file name") '("item") '("itemx") '("kbd" "Keyboard characters") '("key" "Key name") '("kindex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("lowersections" 0) '("majorheading" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("menu") '("minus") '("need" "N") '("node" (TeX-arg-literal " ") (TeX-arg-free "Name") (TeX-arg-literal ", ") (TeX-arg-free "Next") (TeX-arg-literal ", ") (TeX-arg-free "Previous") (TeX-arg-literal ", ") (TeX-arg-free "Up")) '("noindent") '("oddfooting" Texinfo-lrc-argument-hook) '("oddheading" Texinfo-lrc-argument-hook) '("page") '("paragraphindent" (TeX-arg-literal " ") (TeX-arg-free "Indent")) '("pindex" "Entry") '("point" nil) '("print") '("printindex" (TeX-arg-literal " ") (TeX-arg-free "Index name")) '("pxref" "Node name") '("r" "Text") '("raisesections" 0) '("ref" "Node name") '("refill") '("result") '("samp" "Text") '("sc" "Text") '("section" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("set" (TeX-arg-literal " ") (TeX-arg-free "Flag")) ;; XXX: Would be nice with completion. '("setchapternewpage" (TeX-arg-literal " ") (TeX-arg-free "On off odd")) '("setfilename" (TeX-arg-literal " ") (TeX-arg-free "Info file name")) '("settitle" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("shortcontents") '("smallbook") '("sp" "N") '("strong" "Text") '("subheading" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("subsection" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("subsubheading" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("subsubsection" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("subtitle" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("summarycontents") '("syncodeindex" (TeX-arg-literal " ") (TeX-arg-free "From index") (TeX-arg-literal " ") (TeX-arg-free "Into index")) '("synindex" (TeX-arg-literal " ") (TeX-arg-free "From index") (TeX-arg-literal " ") (TeX-arg-free "Into index")) '("t" "Text") '("TeX" nil) '("thischapter") '("thischaptername") '("thisfile") '("thispage") '("tindex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("title" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("titlefont" "Text") '("titlepage") '("today" nil) '("top" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("unnumbered" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("unnumberedsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("unnumberedsubsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("unnumberedsubsubsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("value" "Flag") '("var" "Metasyntactic variable") '("vindex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("vskip" (TeX-arg-literal " ") (TeX-arg-free "Amount")) '("w" "Text") '("xref" "Node name")) ;; RefTeX plugging (add-hook 'reftex-mode-hook 'Texinfo-reftex-hook) (if (and (boundp 'reftex-mode) reftex-mode) (Texinfo-reftex-hook)) (TeX-run-mode-hooks 'text-mode-hook 'Texinfo-mode-hook) (TeX-set-mode-name)) (defcustom Texinfo-clean-intermediate-suffixes nil "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defcustom Texinfo-clean-output-suffixes ;; See `man texi2html' for the HTML stuff. '("\\.info\\(-[0-9]+\\)?" "\\.dvi" "\\.pdf" "\\.ps" "\\.html" "_toc\\.html" "_fot\\.html" "_abt\\.html" "_[0-9]+\\.html" "_l2h_img.+") "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (provide 'tex-info) ;;; tex-info.el ends here auctex-11.87/preview/0000755000000000000000000000000012056205161013200 5ustar rootrootauctex-11.87/preview/circ.tex0000644000000000000000000003113610245167217014655 0ustar rootroot\documentclass[a4paper,twocolumn]{article} \usepackage[german]{babel} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage[showlabels,sections,floats,textmath,displaymath]{preview} \newbox\chaos \newdimen\tdim \def\fframe{% \tdim=\columnwidth \advance\tdim by -2\fboxsep \advance\tdim by -2\fboxrule \setbox\chaos=\hbox\bgroup\begin{minipage}{\tdim}} \def\endfframe{\end{minipage}\egroup\fbox{\box\chaos}} \unitlength 1mm \newcount\fives \fives 14 \newcount\ones \ones\fives \multiply \ones by 5 \newsavebox{\raster} \savebox{\raster}(\ones,\ones) {\thicklines \put(0,0){\line(0,1){\ones}} \put(0,0){\line(1,0){\ones}} \multiput(0,0)(5,0){\fives} {\begin{picture}(0,0) \put(5,0){\line(0,1){\ones}} \thinlines\multiput(1,0)(1,0){4}{\line(0,1){\ones}} \end{picture}} \multiput(0,0)(0,5){\fives} {\begin{picture}(0,0) \put(0,5){\line(1,0){\ones}} \thinlines\multiput(0,1)(0,1){4}{\line(1,0){\ones}} \end{picture}} } \begin{document} \title{Einfache Kurven auf Rastergrafiken} \author{David Kastrup} \maketitle \begin{abstract} Es sollen hier einfache Methoden vorgestellt werden, um auf einer Rastereinheit verschiedene Kurven darzustellen. Vorgestellt werden Zeichenalgorithmen fr Linien, Kreise und Hyperbeln. Die hier hergeleiteten Gleichungen sind auch unter dem Namen {\tt DDA}s bekannt. \end{abstract} \section{Einfhrung} Bei den hier vorgestellten Algorithmen werden zunchst nur Kurvenstcke betrachtet, die die folgenden Eigenschaften besitzen: \begin{enumerate} \item Sie lassen sich als Funktion $y = f(x)$ darstellen. \item $y$ ist im betrachteten Bereich monoton, das heit, entweder durchgehend steigend oder durchgehend fallend. \item Wenn $x$ sich um $1$ ndert, so ndert sich $y$ betragsmig hchstens um $1$ ($\left|\frac{\partial y}{\partial x}\right| \leq 1$). \end{enumerate} \section{Die gerade Linie} Wir betrachten hier zunchst nur die gerade Linie im ersten Oktanten, die durch den Punkt $0 \choose 0$ geht. Alle anderen Linien lassen sich durch Vertauschen von $x$ und~$y$ sowie Vorzeichenwechsel erzeugen. Im ersten Oktanten gilt $x \geq y \geq 0$. Zum Zeichnen einer Linie gengt es also, $x$ durchlaufen zu lassen und fr $y$ die dazugehrigen Werte zu berechnen und zu runden. Die Gleichung einer Geraden durch $\Delta x \choose \Delta y$ lautet: \begin{equation} \label{lgi} y = \frac{\Delta y}{\Delta x}x \end{equation} % Nun stellen wir $y$ als Summe eines ganzzahligen Wertes $e$ und eines gebrochenen Wertes $f$ dar, fr den gilt: $-0.5 \leq f < 0.5$. Somit stellt dann $e$ den gewnschten, auf die nchste ganze Zahl gerundeten $y$-Wert dar. Jetzt formen wir (\ref{lgi}) um: \begin{eqnarray} e + f &=& x \frac{\Delta y}{\Delta x}\nonumber\\ e \Delta x + f \Delta x &=& x \Delta y\nonumber\\ f \Delta x - \left\lceil\frac{\Delta x}2\right\rceil &=& x \Delta y - e \Delta x - \left\lceil\frac{\Delta x}2\right\rceil \label{lgii} \end{eqnarray} % Den linken Ausdruck in (\ref{lgii}) bezeichnen wir jetzt mit $d$. Fr positive gerade Werte von $\Delta x$ ist offensichtlich $d < 0$ eine zu~$f < 0.5$ equivalente Bedingung. Fr ungerade Werte von~$\Delta x$ ist $f < 0.5$ equivalent zu $d + 0.5 < 0$. Da $d$ stets eine ganze Zahl ist, ist dies wieder zu $d < 0$ equivalent. % INTENTIONAL ERRORS! INTENTIONAL ERRORS! INTENTIONAL ERRORS! % % The following line should flag a PostScript error when previewing, % but processing of other previews should continue. % Wird nun $\ifPreview\special{ps: junk}\fi f \geq 0.5$, wie sich durch den Vergleich $d \stackrel{?}{<} 0$ feststellen lt, so mu man korrigieren, indem man $f$ um~1 erniedrigt und $e$ um~$1$ erhht. % % The following line will make Ghostscript abort unexpectedly when % previewing, but processing of other previews should continue. % $\ifPreview\special{ps: quit}\fi d$ mu dann auch entsprechend angepat werden. Mit den angegebenen Formeln ergibt sich jetzt bei Bercksichtigung der Einflsse von $x$ und $e$ auf $d$ der in Tabelle~\ref{linalg} angegebene Algorithmus. Eine optimierte C-function, die die Oktantenaufteilung bercksichtigt, ist in Tabelle~\ref{linc} zu finden. Einige hiermit gezeichnete Linien sind in Abbildung~\ref{linpict} zu sehen. \begin{table} \caption{Linienzugalgorithmus} \label{linalg} \begin{fframe} \begin{enumerate} \item Setze $x \gets 0$, $y \gets 0$, $d \gets -\left\lceil\frac{\Delta x}2\right\rceil$ \item Wiederhole bis $x = \Delta x$ \begin{enumerate} \item Zeichne Punkt an $x \choose y$ \item Setze $x \gets x + 1$, $d \gets d + \Delta y$ \item Falls $d \geq 0$ \begin{enumerate} \item Setze $d \gets d - \Delta x$ \item Setze $y \gets y + 1$ \end{enumerate} \end{enumerate} \end{enumerate} \end{fframe} \end{table} \begin{table} \caption{Linienziehen in C} \label{linc} \begin{fframe} \small \begin{verbatim} extern int x,y; /* (x,y) ist Koordinate des nicht * gezeichneten Startpunktes, zeigt * nachher auf gezeichneten Endpunkt */ #define doline(dx,dy,advx,advy) { \ d = -(((i = dx) + 1) >> 1); \ while (i--) { \ advx; \ if ((d += dy) >= 0) { \ d -= dx; advy; \ } \ dot(x,y); \ } \ return; \ } /* Grundalgorithmus 1. Oktant */ /* dx ist Distanz in unabh. Richtung, * * dy in abh. Richtung, advx geht * * in unabh. Richtung, advy in abh. */ #define docond(cond,advx,advy) { \ if (cond) doline(dx,dy,advx,advy) \ doline(dy,dx,advy,advx) \ } /* Grundalgorithmus 1./2. Oktant */ /* cond ist true falls |dx| > |dy| */ void linedraw(int dx, int dy) /* Von (x,y) nach (x+dx, y+dx). */ { int i; if (dx >= 0) { if (dy >= 0) docond(dx > dy, ++x, ++y) docond(dx > (dy = -dy), ++x, --y) } if (dy >= 0) docond((dx = -dx) > dy,--x,++y) docond((dx = -dx) > (dy = -dy), --x, --y ) } \end{verbatim} \end{fframe} \end{table} \begin{figure} \begin{picture}(\ones,\ones) \put(0,0){\usebox{\raster}} \newcount\x \newcount\y \newcount\d \newcount\dx \newcount\dy \x 0 \y 0 \dx \ones \dy \ones \loop %{ \d -\dx \divide \d by 2 %} \ifnum \dy > 0 %{ {\loop %{ \put(\x,\y){\circle*{1}}%} \ifnum \x < \ones %{ \advance \x by 1 \advance \d by \dy %} \ifnum \d > -1 %{ \advance \y by 1 \advance \d by -\dx %} \fi %}} \repeat} \advance \x by 5 \advance \dx by -5 \advance \dy by -15 %} \repeat \end{picture} \caption{Einige Linien}\label{linpict} \end{figure} \section{Der Kreis} Wir betrachten hier nur den Achtelkreis im zweiten Oktanten ($y \geq x \geq 0$). Hier gelten die oben angegebenen Beziehungen. Alle anderen Achtelkreise lassen sich durch elementare Spiegelungen erzeugen. Die Gleichung eines Kreises ist hier \begin{equation} y = \sqrt{r^2 - x^2} \end{equation} Der Wert $y$ lt sich darstellen als Summe einer ganzen Zahl $e$ und einem Wert $f$ mit $-0.5 \leq f < 0.5$. Der Wertebereich von $f$ ist so gewhlt worden, damit $e$ einen auf ganze Zahlen gerundeten Wert fr $y$ darstellt. Nun gilt: \begin{eqnarray} e + f&=&\sqrt{r^2 - x^2}\nonumber\\ \label{ggg}e^2 + 2ef + f^2&=&r^2 - x^2 \end{eqnarray} % Die Gleichung (\ref{ggg}) hat fr $x+1$ folgende Form: \begin{eqnarray} \label{hhh}e'^2 + 2e'f' + f'^2&=&r^2 - x^2 - 2x -1 \end{eqnarray} % Zieht man die Gleichung (\ref{ggg}) von (\ref{hhh}) ab, so ergibt sich nach Umsortieren: \begin{eqnarray*} e' = e:\\ 2e'f' + f'^2&=&2ef+f^2-2x-1\\ e' = e-1:\\ 2e'f' + f'^2&=&2ef+f^2+2e-2x-2 \end{eqnarray*} % Jetzt wird $2ef + f^2$ mit $m$ getauft. Also: \begin{eqnarray*} e' = e:\\ m'&=&m -2x-1\\ e' = e-1:\\ m'&=&m +2e-1 -2x-1 \end{eqnarray*} Wie gro ist jetzt $m$? Fr $x=0$ ist es sicher $0$. Solange $e$ konstant bleibt, schrumpft $f$ stetig. Fllt $f$ unter $-0.5$, so fllt $m$ (unter Vernachlssigung von $f^2$) unter $-e$. Dies wird jetzt als Kriterium fr einen Unterlauf von $f$ verwendet. Tritt dieser auf, so mu $f$ um $1$ erhht und $e$ um $1$ erniedrigt werden. Um die Abfragebedingung zu vereinfachen, setzt man jetzt $q$ = $m+e$. Der resultierende Algorithmus ist in Tabelle \ref{alg}, ein optimiertes C-Programm ist in Tabelle \ref{prog} zu finden. \begin{table} \caption{Kreiszeichenalgorithmus}\label{alg} \begin{fframe} \begin{enumerate} \item Setze $x\gets 0$, $y\gets r$, $q\gets r$ \item Wiederhole bis $x>y$: \begin{enumerate} \item Setze einen Punkt an $x \choose y$. \item Setze $q\gets q-2x-1$ \item Falls $q<0$ \begin{enumerate} \item Setze $q\gets q + 2y-2$ \item Setze $y\gets y-1$ \end{enumerate} \item Setze $x\gets x+1$ \end{enumerate} \end{enumerate} \end{fframe} \end{table} \begin{table} \caption{Kreiszeichenprogramm}\label{prog} \begin{fframe} \small \begin{verbatim} void fourfold(int x0, int y0, int x, int y) /* Zeichne in Oktant 1,3,5,7 */ /* Wird benutzt, um Anfangs- und End- * * Punkte nicht zweimal zu zeichnen */ { dot(x0+x,y0+y); dot(x0-y,y0+x); dot(x0-x,y0-y); dot(x0+y,y0-x); } void eightfold(int x0, int y0, int x, int y) /* Zeichne in allen Quadranten */ { fourfold(x0,y0,x,y); /* 1357 */ fourfold(x0,y0,x,-y); /* 8642 */ } void circle(int x0, int y0, int r) { fourfold(x0,y0,0,r); /* Die ersten vier Punkte */ for (x=0, y=q=r;; ) { if ((q -= 2* x++ + 1) < 0) q += 2* --y; if (x >= y) break; eightfold(x0,y0,x,y); } if (x==y) fourfold(x0,y0,x,y); /* Eventuell die letzten vier */ } \end{verbatim} \end{fframe} \end{table} \begin{figure} \begin{picture}(\ones,\ones) \put(0,0){\usebox{\raster}} \newcount\x \newcount\y \newcount\q \loop {\x 0 \y \ones \q \ones \loop \put(\x,\y){\circle*{1}} \put(\y,\x){\circle*{1}} \advance \q by -\x \advance \x by 1 \advance \q by -\x \ifnum \x < \y \ifnum \q < 0 \advance \y by -1 \advance \q by \y \advance \q by \y \fi \repeat} \advance \ones by -10 \ifnum \ones > 0 \repeat \end{picture} \caption{Viertelkreise}\label{zeich} \end{figure} \section{Einfache Hyperbeln} Als letztes Beispiel betrachten wir hier Hyperbeln, die der Formel $y = r^2\!/x$ gengen, und zwar im Bereich~$x \geq r$. Mit dem Ansatz $y = e + f$ ergibt sich: \begin{eqnarray} e+f &=& r^2\!/x\nonumber\\ ex + fx &=& r^2\nonumber\\ fx &=& r^2 - ex\label{phyp} \end{eqnarray} \pagebreak[2] Fr $x' = x+1$ hat nun (\ref{phyp}) die Form \begin{eqnarray*} e' = e:\\ f'x' &=& r^2 - ex - e\\ e' = e - 1:\\ f'x' &=& r^2 - ex - e + x + 1 \end{eqnarray*} Setzt man jetzt $d = (2f + 1)x$, so ist $f < -0.5$ mit~$d < 0$ equivalent. Erreicht man diesen Fall unter Verwendung der Annahme $e' = e$, dann mu in bekannter Weise $f$ um~$1$ erhht und $e$ um~$1$ vermindert werden. \pagebreak Fr $d'$ ergeben sich dann die folgenden Werte: \begin{eqnarray*} e' = e:\\ d' &=& d - 2e + 1\\ e' = e - 1:\\ d' &=& d - 2e + 2x + 2 + 1 \end{eqnarray*} Daraus ergibt sich der in Tabelle~\ref{halg} angegebene Hyperbelalgorithmus fr den ersten Oktanten. \begin{table} \caption{Hyperbelalgorithmus}\label{halg} \begin{fframe} \begin{enumerate} \item Setze $d \gets r$, $x \gets r$, $y \gets r$ \item Wiederhole bis zufrieden \begin{enumerate} \item Setze Punkt an $x \choose y$ \item Setze $x \gets x + 1$ \item Setze $d \gets d - 2y + 1$ \item Falls $d < 0$ \begin{enumerate} \item Setze $d \gets d + 2x$ \item Setze $y \gets y - 1$ \end{enumerate} \end{enumerate} \end{enumerate} \end{fframe} \end{table} \begin{table} \caption{Hyperbeln in C} \begin{fframe} \small \begin{verbatim} void four(int x0, int y0, int x, int y) /* Hyperbeln sind nur in 4 Oktanten */ { dot(x0+x,y0+y); dot(x0+y,y0+x); dot(x0-x,y0-y); dot(x0-y,y0-x); } void hyperb(int x0, int y0, int r, int dx) { int d, x, y; for (x = y = d = r; dx--;) { four(x0,y0,x,y); ++x; if ((d -= 2*y + 1) < 0) { d += 2*x; --y; } } } \end{verbatim} \end{fframe} \end{table} \begin{figure} \begin{picture}(\ones,\ones) \put(0,0){\usebox{\raster}} \newcount\x \newcount\y \newcount\q \newcount\r \r\ones \loop \advance \r by -10 \ifnum \r > 0 {\x \r \y \r \q \r \loop \put(\x,\y){\circle*{1}} \put(\y,\x){\circle*{1}} \ifnum \x < \ones \advance \x by 1 \advance \q by -\y \advance \q by -\y \advance \q by 1 \ifnum \q < 0 \advance \q by \x \advance \q by \x \advance \y by -1 \fi \repeat} \repeat \end{picture} \caption{Hyperbeln}\label{hzeich} \end{figure} \end{document} auctex-11.87/preview/latex/0000755000000000000000000000000012056205161014315 5ustar rootrootauctex-11.87/preview/latex/preview.dtx0000644000000000000000000023244011336021164016523 0ustar rootroot% \iffalse %% The preview style for extracting previews from LaTeX documents. %% Developed as part of AUCTeX . % % Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, % 2010 Free Software Foundation % % This program 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 of the License, or % (at your option) any later version. % % This program 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 this program; if not, write to the % Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, % Boston, MA 02110-1301 USA % \fi % \CheckSum{1758} % \GetFileInfo{preview.sty} % \date{\filedate} % \author{David Kastrup\thanks{\texttt{dak@gnu.org}}} % \title{The \texttt{preview} Package for \LaTeX\\Version \fileversion} % \maketitle % \section{Introduction} % The main purpose of this package is the extraction of certain % environments (most notably displayed formulas) from \LaTeX\ sources % as graphics. This works with DVI files postprocessed by either % Dvips and Ghostscript or dvipng, but it also works when you are % using PDF\TeX\ for generating PDF files (usually also postprocessed % by Ghostscript). % % Current uses of the package include the \previewlatex\ package for % WYSIWYG functionality in the AUC\TeX\ editing environment, % generation of previews in LyX, as part of the operation of the % ps4pdf package, the tbook XML system and some other tools. % % Producing EPS files with Dvips and its derivatives using the % \texttt{-E} option is not a good alternative: People make do by % fiddling around with |\thispagestyle{empty}| and hoping for the best % (namely, that the specified contents will indeed fit on single % pages), and then trying to guess the baseline of the resulting code % and stuff, but this is at best dissatisfactory. The preview package % provides an easy way to ensure that exactly one page per request % gets shipped, with a well-defined baseline and no page decorations. % While you still can use the preview package with the `classic' % \begin{quote} % |dvips -E -i| % \end{quote} % invocation, there are better ways available that don't rely on Dvips % not getting confused by PostScript specials. % % For most applications, you'll want to make use of the |tightpage| % option. This will embed the page dimensions into the PostScript or % PDF code, obliterating the need to use the |-E -i| options to Dvips. % You can then produce all image files with a single run of % Ghostscript from a single PDF or PostScript (as opposed to EPS) % file. % % Various options exist that will pass \TeX\ dimensions and other % information about the respective shipped out material (including % descender size) into the log file, where external applications might % make use of it. % % The possibility for generating a whole set of graphics with a single % run of Ghostscript (whether from \LaTeX\ or PDF\LaTeX) increases % both speed and robustness of applications. It is also feasible to % use dvipng on a DVI file with the options % \begin{quote} % |-picky -noghostscript| % \end{quote} % to omit generating any image file that requires Ghostscript, then % let a script generate all missing files using Dvips/Ghostscript. % This will usually speed up the process significantly. % % \section{Package options} % The package is included with the customary % \begin{quote} % |\usepackage|\oarg{options}|{preview}| % \end{quote} % You should usually load this package as the last one, since it % redefines several things that other packages may also provide. % % The following options are available: % \begin{description} % \item[|active|] is the most essential option. If this option is not % specified, the |preview| package will be inactive and the document % will be typeset as if the |preview| package were not loaded, % except that all declarations and environments defined by the % package are still legal but have no effect. This allows defining % previewing characteristics in your document, and only activating % them by calling \LaTeX\ as % \begin{quote} % \raggedright % |latex '\PassOptionsToPackage{active}{preview}| |\input|\marg{filename}|'| % \end{quote} % \item[|noconfig|] Usually the file |prdefault.cfg| gets loaded % whenever the |preview| package gets activated. |prdefault.cfg| is % supposed to contain definitions that can cater for otherwise bad % results, for example, if a certain document class would otherwise % lead to trouble. It also can be used to override any settings % made in this package, since it is loaded at the very end of it. % In addition, there may be configuration files specific for certain % |preview| options like |auctex| which have more immediate needs. % The |noconfig| option suppresses loading of those option files, % too. % \item[|psfixbb|] Dvips determines the bounding boxes from the % material in the DVI file it understands. Lots of PostScript % specials are not part of that. Since the \TeX\ boxes do not make % it into the DVI file, but merely characters, rules and specials % do, Dvips might include far too small areas. The option |psfixbb| % will include |/dev/null| as a graphic file in the ultimate upper % left and lower right corner of the previewed box. This will make % Dvips generate an appropriate bounding box. % \item[|dvips|] If this option is specified as a class option or to % other packages, several packages pass things like page size % information to Dvips, or cause crop marks or draft messages % written on pages. This seriously hampers the usability of % previews. If this option is specified, the changes will be undone % if possible. % \item[|pdftex|] If this option is set, PDF\TeX\ is assumed as the % output driver. This mainly affects the |tightpage| option. % \item[|xetex|] If this option is set, Xe\TeX\ is assumed as the % output driver. This mainly affects the |tightpage| option. % \item[|displaymath|] will make all displayed math environments % subject to preview processing. This will typically be the most % desired option. % \item[|floats|] will make all float objects subject to preview % processing. If you want to be more selective about what floats to % pass through to a preview, you should instead use the % \cmd{\PreviewSnarfEnvironment} command on the floats you want to % have previewed. % \item[|textmath|] will make all text math subject to previews. % Since math mode is used throughly inside of \LaTeX\ even for other % purposes, this works by redefining \cmd\(, \cmd\) % and |$| and the |math| environment (apparently some people use % that). Only occurences of these text math delimiters in later % loaded packages and in the main document will thus be affected. % \item[|graphics|] will subject all \cmd{\includegraphics} commands % to a preview. % \item[|sections|] will subject all section headers to a preview. % \item[|delayed|] will delay all activations and redefinitions the % |preview| package makes until |\||begin{document}|. The purpose % of this is to cater for documents which should be subjected to the % |preview| package without having been prepared for it. You can % process such documents with % \begin{quote} % |latex '\RequirePackage[active,delayed,|\meta{options}|]{preview}| % |\input|\marg{filename}|'| % \end{quote} % This relaxes the requirement to be loading the |preview| package % as last package. % \item[\meta{driver}] loads a special driver file % |pr|\meta{driver}|.def|. The remaining options are implemented % through the use of driver files. % \item[|auctex|] This driver will produce fake error messages at the % start and end of every preview environment that enable the Emacs % package \previewlatex\ in connection with AUC\TeX\ to pinpoint % the exact source location where the previews have originated. % Unfortunately, there is no other reliable means of passing the % current \TeX\ input position \emph{in} a line to external % programs. In order to make the parsing more robust, this option % also switches off quite a few diagnostics that could be % misinterpreted. % % You should not specify this option manually, since it will only be % needed by automated runs that want to parse the pseudo error % messages. Those runs will then use \cmd{\PassOptionsToPackage} in % order to effect the desired behaviour. In addition, % |prauctex.cfg| will get loaded unless inhibited by the |noconfig| % option. This caters for the most frequently encountered % problematic commands. % \item[|showlabels|] During the editing process, some people like to % see the label names in their equations, figures and the like. Now % if you are using Emacs for editing, and in particular % \previewlatex, I'd strongly recommend that you check out the % Ref\TeX\ package which pretty much obliterates the need for this % kind of functionality. If you still want it, standard \LaTeX\ % provides it with the |showkeys| package, and there is also the % less encompassing |showlabels| package. Unfortunately, since % those go to some pain not to change the page layout and spacing, % they also don't change |preview|'s idea of the \TeX\ dimensions of % the involved boxes. So if you are using |preview| for determing % bounding boxes, those packages are mostly useless. The option % |showlabels| offers a substitute for them. % \item[|tightpage|] It is not uncommon to want to use the results of % |preview| as graphic images for some other application. One % possibility is to generate a flurry of EPS files with % \begin{quote} % |dvips -E -i -Pwww -o| \meta{outputfile}|.000| \meta{inputfile} % \end{quote} % However, in case those are to be processed further into graphic % image files by Ghostscript, this process is inefficient since all % of those files need to be processed one by one. In addition, it % is necessary to extract the bounding box comments from the EPS % files and convert them into page dimension parameters for % Ghostscript in order to avoid full-page graphics. This is not % even possible if you wanted to use Ghostscript in a~\emph{single} % run for generating the files from a single PostScript file, since % Dvips will in that case leave no bounding box information % anywhere. % % The solution is to use the |tightpage| option. That way a single % command line like % \begin{quote} % \raggedright % \texttt{gs -sDEVICE=png16m -dTextAlphaBits=4 -r300 % -dGraphicsAlphaBits=4 -dSAFER -q -dNOPAUSE % -sOutputFile=\meta{outputfile}\%d.png \meta{inputfile}.ps} % \end{quote} % will be able to produce tight graphics from a single PostScript % file generated with Dvips \emph{without} use of the options % |-E -i|, in a single run. % % The |tightpage| option actually also works when using the |pdftex| % option and generating PDF files with PDF\TeX. The resulting PDF % file has separate page dimensions for every page and can directly % be converted with one run of Ghostscript into image files. % % If neither |dvips| or |pdftex| have been specified, the % corresponding option will get autodetected and invoked. % % If you need this in a batch environment where you don't want to % use |preview|'s automatic extraction facilities, no problem: just % don't use any of the extraction options, and wrap everything to be % previewed into |preview| environments. This is how LyX does its % math previews. % % If the pages under the |tightpage| option are just too tight, you % can adjust by setting the length |\PreviewBorder| to a different % value by using \cmd{\setlength}. The default value is % |0.50001bp|, which is half of a usual PostScript point, rounded % up. If you go below this value, the resulting page size may drop % below |1bp|, and Ghostscript does not seem to like that. If you % need finer control, you can adjust the bounding box dimensions % individually by changing the macro |\PreviewBbAdjust| with the % help of |\renewcommand|. Its default value is % \begin{quote} % \raggedright % |\newcommand| |\PreviewBbAdjust| % |{-\PreviewBorder| |-\PreviewBorder| % |\PreviewBorder| |\PreviewBorder}| % \end{quote} % This adjusts the left, lower, right and upper borders by the given % amount. The macro must contain 4~\TeX\ dimensions after another, % and you may not omit the units if you specify them explicitly % instead of by register. PostScript points have the unit~|bp|. % \item[|lyx|] This option is for the sake of LyX developers. It will % output a few diagnostics relevant for the sake of LyX' preview % functionality (at the time of writing, mostly implemented for math % insets, in versions of LyX starting with 1.3.0). % \item[|counters|] This writes out diagnostics at the start and the % end of previews. Only the counters changed since the last output % get written, and if no counters changed, nothing gets written at % all. The list consists of counter name and value, both enclosed % in |{}| braces, followed by a space. The last such pair is % followed by a colon (|:|) if it is at the start of the preview % snippet, and by a period (|.|) if it is at the end. The order of % different diagnostics like this being issued depends on the order % of the specification of the options when calling the package. % % Systems like \previewlatex\ use this for keeping counters accurate % when single previews are regenerated. % \item[|footnotes|] This makes footnotes render as previews, and only % as their footnote symbol. A convenient editing feature inside of % Emacs. % \end{description} % The following options are just for debugging purposes of the package % and similar to the corresponding \TeX\ commands they allude to: % \begin{description} % \item[|tracingall|] causes lots of diagnostic output to appear in % the log file during the preview collecting phases of \TeX's % operation. In contrast to the similarly named \TeX\ command, it % will not switch to |\errorstopmode|, nor will it change the % setting of |\tracingonline|. % \item[|showbox|] This option will show the contents of the boxes % shipped out to the DVI files. It also sets |\showboxbreadth| and % |\showboxdepth| to their maximum values at the end of loading this % package, but you may reset them if you don't like that. % \end{description} % \section{Provided Commands} % \DescribeEnv{preview} The |preview| environment causes its contents % to be set as a single preview image. Insertions like figures and % footnotes (except those included in minipages) will typically lead % to error messages or be lost. In case the |preview| package has not % been activated, the contents of this environment will be typeset % normally. % % \DescribeEnv{nopreview} The |nopreview| environment will cause its % contents not to undergo any special treatment by the |preview| % package. When |preview| is active, the contents will be discarded % like all main text that does not trigger the |preview| hooks. When % |preview| is not active, the contents will be typeset just like the % main text. % % Note that both of these environments typeset things as usual when % preview is not active. If you need something typeset conditionally, % use the \cmd{\ifPreview} conditional for it. % % \DescribeMacro{\PreviewMacro} If you want to make a macro like % \cmd{\includegraphics} (actually, this is what is done by the % |graphics| option to |preview|) produce a preview image, you put a % declaration like % \begin{quote} % |\PreviewMacro[*[[!]{\includegraphics}| % \end{quote} % or, more readable, % \begin{quote} % |\PreviewMacro[{*[][]{}}]{\includegraphics}| % \end{quote} % into your preamble. The optional argument to \cmd{\PreviewMacro} % specifies the arguments \cmd{\includegraphics} accepts, since this % is necessary information for properly ending the preview box. Note % that if you are using the more readable form, you have to enclose % the argument in a |[{| and |}]| pair. The inner braces are % necessary to stop any included |[]| pairs from prematurely ending % the optional argument, and to make a single |{}| % denoting an optional argument not get stripped away by \TeX's % argument parsing. % % The letters simply mean % \begin{description} % \item[|*|] indicates an optional |*| modifier, as in % |\includegraphics*|. % \item[|[|]^^A] % indicates an optional argument in brackets. This syntax % is somewhat baroque, but brief. % \item[{|[]|}] also indicates an optional argument in brackets. Be % sure to have encluded the entire optional argument specification % in an additional pair of braces as described above. % \item[|!|] indicates a mandatory argument. % \item[|\char`{\char`}|] indicates the same. Again, be sure to have % that additional level of braces around the whole argument % specification. % \item[|?|\meta{delimiter}\marg{true case}\marg{false case}] is a % conditional. The next character is checked against being equal to % \meta{delimiter}. If it is, the specification \meta{true case} is % used for the further parsing, otherwise \meta{false case} will be % employed. In neither case is something consumed from the input, % so \marg{true case} will still have to deal with the upcoming % delimiter. % \item[|@|\marg{literal sequence}] will insert the given sequence % literally into the executed call of the command. % \item[|-|] will just drop the next token. It will probably be most % often used in the true branch of a |?| specification. % \item[|\#|\marg{argument}\marg{replacement}] is a transformation % rule that calls a macro with the given argument and replacement % text on the rest of the argument list. The replacement is used in % the executed call of the command. This can be used for parsing % arbitrary constructs. For example, the |[]| option could manually % be implemented with the option string |?[{#{[#1]}{[{#1}]}}{}|. % PStricks users might enjoy this sort of flexibility. % \item[|:|\marg{argument}\marg{replacement}] is again a % transformation rule. As opposed to |#|, however, the result of % the transformation is parsed again. You'll rarely need this. % \end{description} % % There is a second optional argument in brackets that can be used to % declare any default action to be taken instead. This is mostly for % the sake of macros that influence numbering: you would want to keep % their effects in that respect. The default action should use |#1| % for referring to the original (not the patched) command with the % parsed options appended. Not specifying a second optional argument % here is equivalent to specifying~|[#1]|. % % \DescribeMacro{\PreviewMacro*} A similar invocation % \cmd{\PreviewMacro*} simply throws the macro and all of its % arguments declared in the manner above away. This is mostly useful % for having things like \cmd{\footnote} not do their magic on their % arguments. More often than not, you don't want to declare any % arguments to scan to \cmd{\PreviewMacro*} since you would want the % remaining arguments to be treated as usual text and typeset in that % manner instead of being thrown away. An exception might be, say, % sort keys for \cmd{\cite}. % % A second optional argument in brackets can be used to declare any % default action to be taken instead. This is for the sake of macros % that influence numbering: you would want to keep their effects in % that respect. The default action might use |#1| for referring to % the original (not the patched) command with the parsed options % appended. Not specifying a second optional argument here is % equivalent to specifying~|[]| since the command usually gets thrown % away. % % As an example for using this argument, you might want to specify % \begin{quote} % |\PreviewMacro*\footnote[{[]}][#1{}]| % \end{quote} % This will replace a footnote by an empty footnote, but taking any % optional parameter into account, since an optional paramter changes % the numbering scheme. That way the real argument for the footnote % remains for processing by \previewlatex. % % \DescribeMacro{\PreviewEnvironment} The macro % \cmd{\PreviewEnvironment} works just as \cmd{\PreviewMacro} does, % only for environments. \DescribeMacro{\PreviewEnvironment*} And the % same goes for \cmd{\PreviewEnvironment*} as compared to % \cmd{\PreviewMacro*}. % % \DescribeMacro{\PreviewSnarfEnvironment} This macro does not typeset % the original environment inside of a preview box, but instead % typesets just the contents of the original environment inside of the % preview box, leaving nothing for the original environment. This has % to be used for figures, for example, since they would % \begin{enumerate} % \item produce insertion material that cannot be extracted to the % preview properly, % \item complain with an error message about not being in outer par % mode. % \end{enumerate} % % \DescribeMacro{\PreviewOpen} % \DescribeMacro{\PreviewClose} % Those Macros form a matched preview pair. This is for macros that % behave similar as \cmd{\begin} and \cmd{\end} of an environment. It % is essential for the operation of \cmd{\PreviewOpen} that the macro % treated with it will open an additional group even when the preview % falls inside of another preview or inside of a |nopreview| % environment. Similarly, the macro treated with \cmd{PreviewClose} % will close an environment even when inactive. % % \DescribeMacro{\ifPreview} In case you need to know whether % |preview| is active, you can use the conditional \cmd{\ifPreview} % together with |\else| and |\fi|. % % \StopEventually{} % \section{The Implementation} % Here we go: the start is somewhat obtuse since we figure out version % number and date from RCS strings. This should really be done at % docstrip time instead. Takers? % \begin{macro}{\pr@version} % \begin{macrocode} %<*style> %<*!active> \NeedsTeXFormat{LaTeX2e} \def\reserved@a #1#2$#3: #4${\xdef#1{\reserved@c #2#4 $}} \def\reserved@c #1 #2${#1} \begingroup \catcode`\_=12 \reserved@a\pr@version $Name: release_11_87 $ \ifx\pr@version\@empty \reserved@a\pr@version CVS-$Revision: 1.126 $ \endgroup \else \def\next release_{} \lccode`\_=`. \edef\next{\lowercase{\endgroup \def\noexpand\pr@version{\expandafter\next\pr@version}}} \next \fi \reserved@a\next $Date: 2010/02/14 16:19:00 $ \edef\next{\noexpand\ProvidesPackage{preview}% [\next\space \pr@version\space (AUCTeX/preview-latex)]} \next % \end{macrocode} % \end{macro} % Since many parts here will not be needed as long as the package is % inactive, we will include them enclosed with |<*active>| and % || guards. That way, we can append all of this stuff at a % place where it does not get loaded if not necessary. % %\begin{macro}{\ifPreview} % Setting the \cmd{\ifPreview} command should not be done by the % user, so we don't use \cmd{\newif} here. As a consequence, there % are no \cmd{\Previewtrue} and \cmd{\Previewfalse} commands. % \begin{macrocode} \let\ifPreview\iffalse % % \end{macrocode} %\end{macro} %\begin{macro}{\ifpr@outer} % We don't allow previews inside of previews. The macro % \cmd{\ifpr@outer} can be used for checking whether we are outside % of any preview code. % \begin{macrocode} %<*active> \newif\ifpr@outer \pr@outertrue % % \end{macrocode} %\end{macro} % %\begin{macro}{\preview@delay} % The usual meaning of \cmd{\preview@delay} is to just echo its % argument in normal |preview| operation. If |preview| is inactive, % it swallows its argument. If the |delayed| option is active, the % contents will be passed to the \cmd{\AtBeginDocument} hook. %\begin{macro}{\pr@advise} % The core macro for modifying commands is \cmd{\pr@advise}. You % pass it the original command name as first argument and what should % be executed before the saved original command as second argument. %\begin{macro}{\pr@advise@ship} % The most often used macro for modifying commands is % \cmd{\pr@advise@ship}. It receives three arguments. The first is % the macro to modify, the second specifies some actions to be done % inside of a box to be created before the original macro gets % executed, the third one specifies actions after the original macro % got executed. %\begin{macro}{\pr@loadcfg} % The macro \cmd{\pr@loadcfg} is used for loading in configuration % files, unless disabled by the |noconfig| option. % \begin{macrocode} %<*!active> \let\preview@delay=\@gobble \let\pr@advise=\@gobbletwo \long\def\pr@advise@ship#1#2#3{} \def\pr@loadcfg#1{\InputIfFileExists{#1.cfg}{}{}} \DeclareOption{noconfig}{\let\pr@loadcfg=\@gobble} % \end{macrocode} %\begin{macro}{\pr@addto@front} % This adds code globally to the front of a macro. % \begin{macrocode} \long\def\pr@addto@front#1#2{% \toks@{#2}\toks@\expandafter{\the\expandafter\toks@#1}% \xdef#1{\the\toks@}} % \end{macrocode} % \end{macro} % These commands get more interesting when |preview| is active: % \begin{macrocode} \DeclareOption{active}{% \let\ifPreview\iftrue \def\pr@advise#1{% \expandafter\pr@adviseii\csname pr@\string#1\endcsname#1}% \long\def\pr@advise@ship#1#2#3{\pr@advise#1{\pr@protect@ship{#2}{#3}}}% \let\preview@delay\@firstofone} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\pr@adviseii} % Now \cmd{\pr@advise} needs its helper macro. In order to avoid % recursive definitions, we advise only macros that are not yet % advised. Or, more exactly, we throw away the old advice and only % take the new one. We use e\TeX's \cmd{\protected} where available % for some extra robustness. % \begin{macrocode} \long\def\pr@adviseii#1#2#3{\preview@delay{% \ifx#1\relax \let#1#2\fi \toks@{#3#1}% \ifx\@undefined\protected \else \protected\fi \long\edef#2{\the\toks@}}} % \end{macrocode} %\end{macro} % % The |delayed| option is easy to implement: this is \emph{not} done % with \cmd{\let} since at the course of document processing, \LaTeX\ % redefines \cmd{\AtBeginDocument} and we want to follow that % redefinition. % \begin{macrocode} \DeclareOption{delayed}{% \ifPreview \def\preview@delay{\AtBeginDocument}\fi } % \end{macrocode} % %\begin{macro}{\ifpr@fixbb} % Another conditional. \cmd{\ifpr@fixbb} tells us whether we want to % surround the typeset materials with invisible rules so that Dvips % gets the bounding boxes right for, say, pure PostScript inclusions. % % If you are installing this on an operating system different from % the one |preview| has been developed on, you might want to redefine % |\pr@markerbox| in your |prdefault.cfg| file to use a file known to % be empty, like |/dev/null| is under Unix. Make this redefinition % depend on \cmd{\ifpr@fixbb} since only then |\pr@markerbox| will be % defined. % \begin{macrocode} \newif\ifpr@fixbb \pr@fixbbfalse \DeclareOption{psfixbb}{\ifPreview% \pr@fixbbtrue \newbox\pr@markerbox \setbox\pr@markerbox\hbox{\special{psfile=/dev/null}}\fi } % \end{macrocode} % \end{macro} % \begin{macro}{\pr@graphicstype} % The |dvips| option redefines the |bop-hook| to reset the page % size. % \begin{macrocode} \let\pr@graphicstype=\z@ \DeclareOption{dvips}{% \let\pr@graphicstype\@ne \preview@delay{\AtBeginDvi{% \special{!/preview@version(\pr@version)def} \special{!userdict begin/preview-bop-level 0 def% /bop-hook{/preview-bop-level dup load dup 0 le{/isls false def% /vsize 792 def/hsize 612 def}if 1 add store}bind def% /eop-hook{/preview-bop-level dup load dup 0 gt{1 sub}if store}bind def end}}}} % \end{macrocode} % The |pdftex| option just sets \cmd{\pr@graphicstype}. % \begin{macrocode} \DeclareOption{pdftex}{% \let\pr@graphicstype\tw@} % \end{macrocode} % And so does the |xetex| option. % \begin{macrocode} \DeclareOption{xetex}{% \let\pr@graphicstype\thr@@} % % \end{macrocode} % \end{macro} % \subsection{The internals} % % Those are only needed if |preview| is active. % \begin{macrocode} %<*active> % \end{macrocode} % \begin{macro}{\pr@snippet} % \cmd{\pr@snippet} is the current snippet number. We need a % separate counter to \cmd{\c@page} since several other commands % might fiddle with the page number. % \begin{macrocode} \newcount\pr@snippet \global\pr@snippet=1 % \end{macrocode} % \end{macro} % \begin{macro}{\pr@protect} % This macro gets one argument which is unpacked and executed in % typesetting situations where we are not yet inside of a preview. % \begin{macrocode} \def\pr@protect{\ifx\protect\@typeset@protect \ifpr@outer \expandafter\expandafter\expandafter \@secondoftwo\fi\fi\@gobble} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@protect@ship} % Now for the above mentioned \cmd{\pr@protect@ship}. This gets % three arguments. The first is what to do at the beginning of the % preview, the second what to do at the end, the third is the macro % where we stored the original definition. % % In case we are not in a typesetting situation, % \cmd{\pr@protect@ship} leaves the stored macro to fend for its % own. No better or worse protection than the original. And we % only do anything different when \cmd{\ifpr@outer} turns out to be % true. % \begin{macrocode} \def\pr@protect@ship{\pr@protect{\@firstoftwo\pr@startbox}% \@gobbletwo} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@insert} % \begin{macro}{\pr@mark} % \begin{macro}{\pr@marks} % We don't want insertions to end up on our lists. So we disable % them right now by replacing them with the following: % \begin{macrocode} \def\pr@insert{\begingroup\afterassignment\pr@insertii\count@} \def\pr@insertii{\endgroup\setbox\pr@box\vbox} % \end{macrocode} % Similar things hold for marks. % \begin{macrocode} \def\pr@mark{{\afterassignment}\toks@} \def\pr@marks{{\aftergroup\pr@mark\afterassignment}\count@} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\pr@box} % \begin{macro}{\pr@startbox} % Previews will be stored in \cmd{\box}\cmd{\pr@box}. % \cmd{\pr@startbox} gets two arguments: code to execute immediately % before the following stuff, code to execute afterwards. You have % to cater for \cmd{\pr@endbox} being called at the right time % yourself. We will use a \cmd{\vsplit} on the box later in order % to remove any leading glues, penalties and similar stuff. For % this reason we start off the box with an optimal break point. % \begin{macrocode} \newbox\pr@box \long\def\pr@startbox#1#2{% \ifpr@outer \toks@{#2}% \edef\pr@cleanup{\the\toks@}% \setbox\pr@box\vbox\bgroup \break \pr@outerfalse\@arrayparboxrestore \let\insert\pr@insert \let\mark\pr@mark \let\marks\pr@marks \expandafter\expandafter\expandafter \pr@ship@start \expandafter\@firstofone \else \expandafter \@gobble \fi{#1}} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\pr@endbox} % Cleaning up also is straightforward. If we have to watch the % bounding \TeX\ box, we want to remove spurious skips. We also % want to unwrap a possible single line paragraph, so that the box % is not full line length. We use \cmd{\vsplit} to clean up leading % glue and stuff, and we make some attempt of removing trailing % ones. After that, we wrap up the box including possible material % from \cmd{\AtBeginDvi}. If the |psfixbb| option is active, we % adorn the upper left and lower right corners with copies of % \cmd{\pr@markerbox}. The first few lines cater for \LaTeX\ hiding % things like like the code for \cmd{\paragraph} in \cmd{\everypar}. % \begin{macrocode} \def\pr@endbox{% \let\reserved@a\relax \ifvmode \edef\reserved@a{\the\everypar}% \ifx\reserved@a\@empty\else \dimen@\prevdepth \noindent\par \setbox\z@\lastbox\unskip\unpenalty \prevdepth\dimen@ \setbox\z@\hbox\bgroup\penalty-\maxdimen\unhbox\z@ \ifnum\lastpenalty=-\maxdimen\egroup \else\egroup\box\z@ \fi\fi\fi \ifhmode \par\unskip\setbox\z@\lastbox \nointerlineskip\hbox{\unhbox\z@\/}% \else \unskip\unpenalty\unskip \fi \egroup \setbox\pr@box\vbox{% \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ \@begindvi \nointerlineskip \splittopskip\z@skip\setbox\z@\vsplit\pr@box to\z@ \unvbox\z@ \nointerlineskip %\color@setgroup \box\pr@box %\color@endgroup }% % \end{macrocode} % \begin{macro}{\pr@ship@end} % \label{sec:prshipend}At this point, \cmd{\pr@ship@end} gets % called. You must not under any circumstances change |\box\pr@box| % in any way that would add typeset material at the front of it, % except for PostScript header specials, since the front of % |\box\pr@box| may contain stuff from \cmd{\AtBeginDvi}. % \cmd{\pr@ship@end} contains two types of code additions: stuff % that adds to |\box\pr@box|, like the |labels| option does, and % stuff that measures out things or otherwise takes a look at the % finished |\box\pr@box|, like the |auctex| or |showbox| option do. % The former should use \cmd{pr@addto@front} for adding to this % hook, the latter use \cmd{g@addto@macro} for adding at the end of % this hook. % % Note that we shift the output box up by its height via % \cmd{\voffset}. This has three reasons: first we make sure that % no package-inflicted non-zero value of \cmd{\voffset} or % \cmd{\hoffset} will have any influence on the positioning of our % box. Second we shift the box such that its basepoint will exactly % be at the (1in,1in)~mark defined by \TeX. That way we can % properly take ascenders into account. And the third reason is % that \TeX\ treats a \cmd{\hbox} and a \cmd{\vbox} differently with % regard to the treating of its depth. Shifting \cmd{\voffset} and % \cmd{\hoffset} can be inhibited by setting |\pr@offset@override|. % \begin{macrocode} \pr@ship@end {\let\protect\noexpand \ifx\pr@offset@override\@undefined \voffset=-\ht\pr@box \hoffset=\z@ \fi \c@page=\pr@snippet \pr@shipout \ifpr@fixbb\hbox{% \dimen@\wd\pr@box \@tempdima\ht\pr@box \@tempdimb\dp\pr@box \box\pr@box \llap{\raise\@tempdima\copy\pr@markerbox\kern\dimen@}% \lower\@tempdimb\copy\pr@markerbox}% \else \box\pr@box \fi}% \global\advance\pr@snippet\@ne \pr@cleanup } % \end{macrocode} % \end{macro} % \end{macro} % Oh, and we kill off the usual meaning of \cmd{\shipout} in case % somebody makes a special output routine. The following test is % pretty much the same as in |everyshi.sty|. One of its implications % is that if someone does a \cmd{\shipout} of a \emph{void} box, % things will go horribly wrong. % \begin{macro}{\shipout} % \begin{macrocode} \let\pr@shipout=\shipout \def\shipout{\deadcycles\z@\bgroup\setbox\z@\box\voidb@x \afterassignment\pr@shipoutegroup\setbox\z@} \def\pr@shipoutegroup{\ifvoid\z@ \expandafter\aftergroup\fi \egroup} % \end{macrocode} % \end{macro} % \subsection{Parsing commands} % \begin{macro}{\pr@parseit} % \begin{macro}{\pr@endparse} % \begin{macro}{\pr@callafter} % The following stuff is for parsing the arguments of commands we % want to somehow surround with stuff. Usage is % \begin{quote} % \cmd{\pr@callafter}\meta{aftertoken}\meta{parsestring}\cmd{\pr@endparse}\\ % \qquad\meta{macro}\meta{parameters} % \end{quote} % \meta{aftertoken} is stored away and gets executed once parsing % completes, with its first argument being the parsed material. % \meta{parsestring} would be, for example for the % \cmd{\includegraphics} macro, |*[[!|, an optional |*| argument % followed by two optional arguments enclosed in |[]|, followed by % one mandatory argument. % % For the sake of a somewhat more intuitive syntax, we now support % also the syntax |{*[]{}}| in the optional argument. Since \TeX\ % strips redundant braces, we have to write |[{{}}]| in this syntax % for a single mandatory argument. Hard to avoid. We use an % unusual character for ending the parsing. The implementation is % rather trivial. % \begin{macrocode} \def\pr@parseit#1{\csname pr@parse#1\endcsname} \let\pr@endparse=\@percentchar \def\next#1{% \def\pr@callafter{% \afterassignment\pr@parseit \let#1= }} \expandafter\next\csname pr@parse\pr@endparse\endcsname % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\pr@parse*} % Straightforward, same mechanism \LaTeX\ itself employs. We take % some care not to pass potential |#| tokens unprotected through % macros. % \begin{macrocode} \long\expandafter\def\csname pr@parse*\endcsname#1\pr@endparse#2{% \begingroup\toks@{#1\pr@endparse{#2}}% \edef\next##1{\endgroup##1\the\toks@}% \@ifstar{\next{\pr@parse@*}}{\next\pr@parseit}} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@parse[} % \begin{macro}{\pr@brace} % Copies optional parameters in brackets if present. The additional % level of braces is necessary to ensure that braces the user might % have put to hide a~|]| bracket in an optional argument don't get % lost. There will be no harm if such braces were not there at the % start. % \begin{macrocode} \long\expandafter\def\csname pr@parse[\endcsname#1\pr@endparse#2{% \begingroup\toks@{#1\pr@endparse{#2}}% \edef\next##1{\endgroup##1\the\toks@}% \@ifnextchar[{\next\pr@bracket}{\next\pr@parseit}} \long\def\pr@bracket#1\pr@endparse#2[#3]{% \pr@parseit#1\pr@endparse{#2[{#3}]}} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\pr@parse]} % This is basically a do-nothing, so that we may use the syntax % |{*[][]!}| in the optional argument instead of the more concise % but ugly |*[[!| which confuses the brace matchers of editors. % \begin{macrocode} \expandafter\let\csname pr@parse]\endcsname=\pr@parseit % \end{macrocode} % \end{macro} % \begin{macro}{\pr@parse} % \begin{macro}{\pr@parse!} % Mandatory arguments are perhaps easiest to parse. % \begin{macrocode} \long\def\pr@parse#1\pr@endparse#2#3{% \pr@parseit#1\pr@endparse{#2{#3}}} \expandafter\let\csname pr@parse!\endcsname=\pr@parse % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\pr@parse?} % \begin{macro}{\pr@parsecond} % This does an explicit call of |\@ifnextchar| and forks into the % given two alternatives as a result. % \begin{macrocode} \long\expandafter\def\csname pr@parse?\endcsname#1#2\pr@endparse#3{% \begingroup\toks@{#2\pr@endparse{#3}}% \@ifnextchar#1{\pr@parsecond\@firstoftwo}% {\pr@parsecond\@secondoftwo}} \def\pr@parsecond#1{\expandafter\endgroup \expandafter\expandafter\expandafter\pr@parseit \expandafter#1\the\toks@} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\pr@parse@} % This makes it possible to insert literal material into the % argument list. % \begin{macrocode} \long\def\pr@parse@#1#2\pr@endparse#3{% \pr@parseit #2\pr@endparse{#3#1}} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@parse-} % This will just drop the next token. % \begin{macrocode} \long\expandafter\def\csname pr@parse-\endcsname #1\pr@endparse#2{\begingroup \toks@{\endgroup\pr@parseit #1\pr@endparse{#2}}% {\aftergroup\the\aftergroup\toks@ \afterassignment}% \let\next= } % \end{macrocode} % \end{macro} % \begin{macro}{\pr@parse:} % The following is a transform rule. A macro is being defined with % the given argument list and replacement, and the transformed % version replaces the original. The result of the transform is % still subject to being parsed. % \begin{macrocode} \long\expandafter\def\csname pr@parse:\endcsname #1#2#3\pr@endparse#4{\begingroup \toks@{\endgroup \pr@parseit#3\pr@endparse{#4}}% \long\def\next#1{#2}% \the\expandafter\toks@\next} % \end{macrocode} % \end{macro} % \edef\next{\noexpand\begin{macro}{\noexpand % \pr@parse\string#}} % \next % Another transform rule, but this passes the transformed material % into the token list. % \begin{macrocode} \long\expandafter\def\csname pr@parse#\endcsname #1#2#3\pr@endparse#4{\begingroup \toks@{#4}% \long\edef\next##1{\toks@{\the\toks@##1}}% \toks@{\endgroup \pr@parseit#3\pr@endparse}% \long\def\reserved@a#1{{#2}}% \the\expandafter\next\reserved@a} % % \end{macrocode} % \end{macro} % % \subsection{Selection options} % The |displaymath| option. The |equation| environments in AMS\LaTeX\ % already do too much before our hook gets to interfere, so we hook % earlier. Some juggling is involved to ensure we get the original % |\everydisplay| tokens only once and where appropriate. % % The incredible hack with |\dt@ptrue| is necessary for working around % bug `amslatex/3425'. % \begin{macrocode} %<*!active> \begingroup \catcode`\*=11 \@firstofone{\endgroup \DeclareOption{displaymath}{% \preview@delay{\toks@{% \pr@startbox{\noindent$$% \aftergroup\pr@endbox\@gobbletwo}{$$}\@firstofone}% \everydisplay\expandafter{\the\expandafter\toks@ \expandafter{\the\everydisplay}}}% \pr@advise@ship\equation{\begingroup\aftergroup\pr@endbox \def\dt@ptrue{\m@ne=\m@ne}\noindent}% {\endgroup}% \pr@advise@ship\equation*{\begingroup\aftergroup\pr@endbox \def\dt@ptrue{\m@ne=\m@ne}\noindent}% {\endgroup}% \PreviewOpen[][\def\dt@ptrue{\m@ne=\m@ne}\noindent#1]\[% \PreviewClose\]% \PreviewEnvironment[][\noindent#1]{eqnarray}% \PreviewEnvironment[][\noindent#1]{eqnarray*}% \PreviewEnvironment{displaymath}% }} % \end{macrocode} % % The |textmath| option. Some folderol in order to define the active % |$| % math mode delimiter. \cmd\pr@textmathcheck is used for checking % whether we have a single |$| or double |$$|. % In the latter case, we enter display math (this sort of display math % is not allowed inside of \LaTeX\ because of inconsistent spacing, % but surprisingly many people use it nevertheless). Strictly % speaking, this is incorrect, since not every % |$$| actually means display math. For example, |\hbox{$$}| will % because of restricted horizontal mode rather yield an empty text % math formula. Since our implementation moved the sequence inside of % a |\vbox|, the interpretation will change. People should just not % enter rubbish like that. % \begin{macrocode} \begingroup \def\next#1#2{% \endgroup \DeclareOption{textmath}{% \PreviewEnvironment{math}% \preview@delay{\ifx#1\@undefined \let#1=$%$ \fi\catcode`\$=\active \ifx\xyreuncatcodes\@undefined\else \edef\next{\catcode`@=\the\catcode`@\relax}% \makeatother\expandafter\xyreuncatcodes\next\fi}% \pr@advise@ship\(\pr@endaftergroup{}% \) \pr@advise@ship#1{\@firstoftwo{\let#1=#2% \futurelet\reserved@a\pr@textmathcheck}}{}}% \def\pr@textmathcheck{\expandafter\pr@endaftergroup \ifx\reserved@a#1{#2#2}\expandafter\@gobbletwo\fi#2}} \lccode`\~=`\$ \lowercase{\expandafter\next\expandafter~}% \csname pr@\string$%$ \endcsname % % \end{macrocode} % \begin{macro}{\pr@endaftergroup} % This justs ends the box after the group opened by |#1| is closed % again. % \begin{macrocode} %<*active> \def\pr@endaftergroup#1{#1\aftergroup\pr@endbox} % % \end{macrocode} % \end{macro} % % The |graphics| option. % \begin{macrocode} %<*!active> \DeclareOption{graphics}{% \PreviewMacro[*[[!]{\includegraphics}%]] } % \end{macrocode} % The |floats| option. The complications here are merely to spare us % bug reports about broken document classes that use |\let| on % |\endfigure| and similar. Notable culprits that have not been % changed in years in spite of reports are |elsart.cls| and % |IEEEtran.cls|. Complain when you are concerned. % \begin{macrocode} \def\pr@floatfix#1#2{\ifx#1#2% \ifx#1\@undefined\else \PackageWarningNoLine{preview}{% Your document class has a bad definition^^J of \string#1, most likely^^J \string\let\string#1=\string#2^^J which has now been changed to^^J \string\def\string#1{\string#2}^^J because otherwise subsequent changes to \string#2^^J (like done by several packages changing float behaviour)^^J can't take effect on \string#1.^^J Please complain to your document class author}% \def#1{#2}\fi\fi} \begingroup \def\next#1#2{\endgroup \DeclareOption{floats}{% \pr@floatfix\endfigure\end@float \pr@floatfix\endtable\end@float \pr@floatfix#1\end@dblfloat \pr@floatfix#2\end@dblfloat \PreviewSnarfEnvironment[![]{@float}%] \PreviewSnarfEnvironment[![]{@dblfloat}%] }} \expandafter\next\csname endfigure*\expandafter\endcsname \csname endtable*\endcsname % \end{macrocode} % The |sections| option. Two optional parameters might occur in % |memoir.cls|. % \begin{macrocode} \DeclareOption{sections}{% \PreviewMacro[!!!!!!*[[!]{\@startsection}%]] \PreviewMacro[*[[!]{\chapter}%]] } % \end{macrocode} % We now interpret any further options as driver files we load. Note % that these driver files are loaded even when |preview| is not % active. The reason is that they might define commands (like % \cmd{\PreviewCommand}) that should be available even in case of an % inactive package. Large parts of the |preview| package will not % have been loaded in this case: you have to cater for that. % \begin{macrocode} \DeclareOption* {\InputIfFileExists{pr\CurrentOption.def}{}{\OptionNotUsed}} % \end{macrocode} % % \subsection{Preview attaching commands} % \begin{macro}{\PreviewMacro} % As explained above. Detect possible |*| and call appropriate % macro. % \begin{macrocode} \def\PreviewMacro{\@ifstar\pr@starmacro\pr@macro} % \end{macrocode} % The version without |*| is now rather straightforward. % \begin{macro}{\pr@macro} % \begin{macro}{\pr@domacro} % \begin{macro}{\pr@macroii} % \begin{macro}{\pr@endmacro} % \begin{macrocode} \long\def\pr@domacro#1#2{% \long\def\next##1{#2}% \pr@callafter\next#1]\pr@endparse} \newcommand\pr@macro[1][]{% \toks@{\pr@domacro{#1}}% \long\edef\next[##1]##2{% \noexpand\pr@advise@ship{##2}{\the\toks@{##1\noexpand\pr@endbox}}{}}% \@ifnextchar[\next\pr@macroii} \def\pr@macroii{\next[##1]} \long\def\pr@endmacro#1{#1\pr@endbox} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{PreviewMacro*} % \begin{macro}{\pr@protect@domacro} % \begin{macro}{\pr@starmacro} % The version with |*| has to parse the arguments, then throw them % away. Some internal macros first, then the interface call. % \begin{macrocode} \long\def\pr@protect@domacro#1#2{\pr@protect{% \long\def\next##1{#2}% \pr@callafter\next#1]\pr@endparse}} \newcommand\pr@starmacro[1][]{\toks@{\pr@protect@domacro{#1}}% \long\edef\next[##1]##2{% \noexpand\pr@advise##2{\the\toks@{##1}}}% \@ifnextchar[\next{\next[]}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\PreviewOpen} % As explained above. Detect possible |*| and call appropriate macro. % \begin{macrocode} \def\PreviewOpen{\@ifstar\pr@starmacro\pr@open} % \end{macrocode} % The version without |*| is now rather straightforward. % \begin{macro}{\pr@open} % \begin{macrocode} \newcommand\pr@open[1][]{% \toks@{\pr@domacro{#1}}% \long\edef\next[##1]##2{% \noexpand\pr@advise##2{\begingroup \noexpand\pr@protect@ship {\the\toks@{\begingroup\aftergroup\noexpand\pr@endbox##1}}% {\endgroup}}}% \@ifnextchar[\next\pr@macroii} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\PreviewClose} % As explained above. Detect possible |*| and call appropriate % macro. % \begin{macrocode} \def\PreviewClose{\@ifstar\pr@starmacro\pr@close} % \end{macrocode} % The version without |*| is now rather straightforward. % \begin{macro}{\pr@close} % \begin{macrocode} \newcommand\pr@close[1][]{% \toks@{\pr@domacro{#1}}% \long\edef\next[##1]##2{% \noexpand\pr@advise{##2}{\the\toks@{##1\endgroup}}}% \@ifnextchar[\next\pr@macroii} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\PreviewEnvironment} % Actually, this ignores any syntax argument. But don't tell % anybody. Except for the |*|~variant, it respects (actually % ignores) any argument! Of course, we'll need to deactivate % |\end{|\meta{environment}|}| as well. % \begin{macrocode} \def\PreviewEnvironment{\@ifstar\pr@starenv\pr@env} \newcommand\pr@starenv[1][]{\toks@{\pr@starmacro[{#1}]}% \long\edef\next##1##2{% \the\toks@[{##2}]##1}% \begingroup\pr@starenvii} \newcommand\pr@starenvii[2][]{\endgroup \expandafter\next\csname#2\endcsname{#1}% \expandafter\pr@starmacro\csname end#2\endcsname} \newcommand\pr@env[1][]{% \toks@{\pr@domacro{#1}}% \long\edef\next[##1]##2{% \noexpand\expandafter\noexpand\pr@advise@ship \noexpand\csname##2\noexpand\endcsname{\the\toks@ {\begingroup\aftergroup\noexpand\pr@endbox##1}}{\endgroup}}% \@ifnextchar[\next\pr@macroii %] } % \end{macrocode} % \end{macro} % \begin{macro}{\PreviewSnarfEnvironment} % This is a nuisance since we have to advise \emph{both} the % environment and its end. % \begin{macrocode} \newcommand{\PreviewSnarfEnvironment}[2][]{% \expandafter\pr@advise \csname #2\endcsname{\pr@snarfafter{#1}}% \expandafter\pr@advise \csname end#2\endcsname{\pr@endsnarf}} % % \end{macrocode} % \end{macro} % \begin{macro}{\pr@snarfafter} % \begin{macro}{\pr@startsnarf} % \begin{macro}{\pr@endsnarf} % Ok, this looks complicated, but we have to start a group in order % to be able to hook \cmd{\pr@endbox} into the game only when % \cmd{\ifpr@outer} has triggered the start. And we need to get our % start messages out before parsing the arguments. % \begin{macrocode} %<*active> \let\pr@endsnarf\relax \long\def\pr@snarfafter#1{\ifpr@outer \pr@ship@start \let\pr@ship@start\relax \let\pr@endsnarf\endgroup \else \let\pr@endsnarf\relax \fi \pr@protect{\pr@callafter\pr@startsnarf#1]\pr@endparse}} \def\pr@startsnarf#1{#1\begingroup \pr@startbox{\begingroup\aftergroup\pr@endbox}{\endgroup}% \ignorespaces} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\pr@ship@start} % \begin{macro}{\pr@ship@end} % The hooks \cmd{\pr@ship@start} and \cmd{\pr@ship@end} can be added % to by option files by the help of the \cmd{\g@addto@macro} command % from \LaTeX, and by the \cmd{\pr@addto@front} command from % |preview.sty| itself. They are called just before starting to % process some preview, and just after it. Here is the policy for % adding to them: \cmd{\pr@ship@start} is called inside of the vbox % |\pr@box| before typeset material gets produced. It is, however, % preceded by a break command that is intended for usage in % \cmd{\vsplit}, so that any following glue might disappear. In % case you want to add any material on the list, you have to precede % it with \cmd{\unpenalty} and have to follow it with \cmd{\break}. % You have make sure that under no circumstances any other legal % breakpoints appear before that, and your material should % contribute no nonzero dimensions to the page. For the policies of % the \cmd{\pr@ship@end} hook, see the description on % page~\pageref{sec:prshipend}. % \begin{macrocode} %<*!active> \let\pr@ship@start\@empty \let\pr@ship@end\@empty % \end{macrocode} % \end{macro} % \end{macro} % \begin{environment}{preview} % \begin{environment}{nopreview} % First we write the definitions of these environments when % |preview| is inactive. We will redefine them if |preview| gets % activated. % \begin{macrocode} \newenvironment{preview}{\ignorespaces}{\ifhmode\unskip\fi} \newenvironment{nopreview}{\ignorespaces}{\ifhmode\unskip\fi} % \end{macrocode} % \end{environment} % \end{environment} % % We now process the options and finish in case we are not active. % \begin{macrocode} \ProcessOptions\relax \ifPreview\else\expandafter\endinput\fi % % \end{macrocode} % Now for the redefinition of the |preview| and |endpreview| % environments: % \begin{macrocode} %<*active> \renewenvironment{preview}{\begingroup \pr@startbox{\begingroup\aftergroup\pr@endbox}% {\endgroup}% \ignorespaces}% {\ifhmode\unskip\fi\endgroup} \renewenvironment{nopreview}{\pr@outerfalse\ignorespaces}% {\ifhmode\unskip\fi} % \end{macrocode} % We use the normal output routine, but hijack it a bit for our % purposes to preserve \cmd{\AtBeginDvi} hooks and not get previews % while in output: that could become rather ugly. % % The main work of disabling normal output relies on a \cmd{\shipout} % redefinition. % \begin{macro}{\pr@output} % \begin{macrocode} \newtoks\pr@output \pr@output\output \output{% \pr@outerfalse \let\@begindvi\@empty \the\pr@output} \let\output\pr@output % \end{macrocode} % \end{macro} % \begin{macro}{\pr@typeinfos} % Then we have some document info that style files might want to % output. % \begin{macrocode} \def\pr@typeinfos{\typeout{Preview: Fontsize \f@size pt}% \ifnum\mag=\@m\else\typeout{Preview: Magnification \number\mag}\fi \ifx\pdfoutput\@undefined \ifx\XeTeXversion\@undefined \else % FIXME: The message should not be emitted if XeTeX does not produce % PDF. There does not seem to be a primitive for that, though. \typeout{Preview: PDFoutput 1}% \fi \else \ifx\pdfoutput\relax \else \ifnum\pdfoutput>\z@ \typeout{Preview: PDFoutput 1}% \fi \fi \fi } \AtBeginDocument{\pr@typeinfos} % \end{macrocode} % \end{macro} % And at the end we load the default configuration file, so that it % may override settings from this package: % \begin{macrocode} \pr@loadcfg{prdefault} % % % \end{macrocode} % % \section{The option files} % \subsection{The \texttt{auctex} option} % The AUC\TeX\ option will cause error messages to spew. We want them % on the terminal, but we don't want \LaTeX\ to stop its automated % run. We delay \cmd{\nonstopmode} in case the user has any % pseudo-interactive folderol like reading in of file names in his % preamble. Because we are so good-hearted, we will not break this as % long as the document has not started, but after that we need the % error message mechanism operative. % % The |\nofiles| command here tries to avoid clobbering input files % used for references and similar. It will come too late if you call % the package with \cmd{\AtBeginDocument}, so you'll need to issue % |\nofiles| yourself in that case. Previously, this was done % unconditionally in the main style file, but since we don't know what % the package may be used for, this was inappropriate. % % So here is the contents of the |prauctex.def| file: % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\nofiles %\preview@delay{\nonstopmode} % \end{macrocode} % Ok, here comes creative error message formatting. It turns out a % sizable portion of the runtime is spent in I/O. Making the error % messages short is an advantage. It is not possible to convince % \TeX\ to make shorter error messages than this: \TeX\ always wants % to include context. This is about the shortest \ae sthetic one we % can muster. % \begin{macrocode} %\begingroup %\lccode`\~=`\- %\lccode`\{=`\< %\lccode`\}=`\> %\lowercase{\endgroup % \def\pr@msgi{{~}}} %\def\pr@msgii{Preview: % Snippet \number\pr@snippet\space} %\begingroup %\catcode`\-=13 %\catcode`\<=13 %\@firstofone{\endgroup %\def\pr@msg#1{{% % \let<\pr@msgi % \def-{\pr@msgii#1}% % \errhelp{Not a real error.}% % \errmessage<}}} %\g@addto@macro\pr@ship@start{\pr@msg{started}} %\g@addto@macro\pr@ship@end{\pr@msg{ended.% % (\number\ht\pr@box+\number\dp\pr@box x\number\wd\pr@box)}} % \end{macrocode} % This looks pretty baffling, but it produces something short and % semi-graphical, namely |<-><->|. That is a macro |<| that expands % into |<->|, where |<| and |>| are the braces around an % \cmd{\errmessage} argument and |-| is a macro expanding to the full % text of the error message. Cough cough. You did not really want to % know, did you? % % Since over/underfull boxes are about the messiest things to parse, % we disable them by setting the appropriate badness limits and making % the variables point to junk. We also disable other stuff. While we % set \cmd{\showboxbreadth} and \cmd{\showboxdepth} to indicate as % little diagnostic output as possible, we keep them operative, so % that the user retains the option of debugging using this stuff. The % other variables concerning the generation of warnings and % daignostics, however, are more often set by commonly employed % packages and macros such as \cmd{\sloppy}. So we kill them off for % good. % \begin{macrocode} %\hbadness=\maxdimen %\newcount\hbadness %\vbadness=\maxdimen %\let\vbadness=\hbadness %\hfuzz=\maxdimen %\newdimen\hfuzz %\vfuzz=\maxdimen %\let\vfuzz=\hfuzz %\showboxdepth=-1 %\showboxbreadth=-1 % \end{macrocode} % Ok, now we load a possible configuration file. % \begin{macrocode} %\pr@loadcfg{prauctex} % \end{macrocode} % And here we cater for several frequently used commands in % |prauctex.cfg|: % \begin{macrocode} %\PreviewMacro*[[][#1{}]\footnote %\PreviewMacro*[?[{@{[]}}{}][#1]\item %\PreviewMacro*\emph %\PreviewMacro*\textrm %\PreviewMacro*\textit %\PreviewMacro*\textsc %\PreviewMacro*\textsf %\PreviewMacro*\textsl %\PreviewMacro*\texttt %\PreviewMacro*\textcolor %\PreviewMacro*\mbox %\PreviewMacro*[][#1{}]\author %\PreviewMacro*[][#1{}]\title %\PreviewMacro*\and %\PreviewMacro*\thanks %\PreviewMacro*[][#1{}]\caption %\preview@delay{\@ifundefined{pr@\string\@startsection}{% % \PreviewMacro*[!!!!!!*][#1{}]\@startsection}{}} %\preview@delay{\@ifundefined{pr@\string\chapter}{% % \PreviewMacro*[*][#1{}]\chapter}{}} %\PreviewMacro*\index % \end{macrocode} % % \subsection{The \texttt{lyx} option} % The following is the option providing LyX with info for its preview % implementation. % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\pr@loadcfg{prlyx} %\g@addto@macro\pr@ship@end{\typeout{Preview: % Snippet \number\pr@snippet\space % \number\ht\pr@box\space \number\dp\pr@box \space\number\wd\pr@box}} % \end{macrocode} % % \subsection{The \texttt{counters} option} % This outputs a checkpoint. We do this by saving all counter % registers in backup macros starting with |\pr@c@| in their name. A % checkpoint first writes out all changed counters (previously % unchecked counters are not written out unless different from zero), % then saves all involved counter values. \LaTeX\ tracks its counters % in the global variable \cmd{\cl@ckpt}. % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\def\pr@eltprint#1{\expandafter\@gobble\ifnum\value{#1}=0% % \csname pr@c@#1\endcsname\else\relax % \space{#1}{\arabic{#1}}\fi} %\def\pr@eltdef#1{\expandafter\xdef % \csname pr@c@#1\endcsname{\arabic{#1}}} %\def\pr@ckpt#1{{\let\@elt\pr@eltprint\edef\next{\cl@@ckpt}% % \ifx\next\@empty\else\typeout{Preview: Counters\next#1}% % \let\@elt\pr@eltdef\cl@@ckpt\fi}} %\pr@addto@front\pr@ship@start{\pr@ckpt:} %\pr@addto@front\pr@ship@end{\pr@ckpt.} % \end{macrocode} % % \subsection{Debugging options} % Those are for debugging the operation of |preview|, and thus are % mostly of interest for people that want to use |preview| for their % own purposes. Since debugging output is potentially confusing to % the error message parsing from AUC\TeX, you should not turn on % |\tracingonline| or switch from |\nonstopmode| unless you are % certain your package will never be used with \previewlatex. % % \paragraph{The \texttt{showbox} option} will generate diagnostic % output for every produced box. It does not delay the resetting of % the |\showboxbreadth| and |\showboxdepth| parameters so that you can % still change them after the loading of the package. It does, % however, move them to the end of the package loading, so that they % will not be affected by the |auctex| option. % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\AtEndOfPackage{% % \showboxbreadth\maxdimen % \showboxdepth\maxdimen} %\g@addto@macro\pr@ship@end{\showbox\pr@box} % \end{macrocode} % % \paragraph{The \texttt{tracingall} option} is for the really heavy % diagnostic stuff. For the reasons mentioned above, we do not want % to change the setting of the interaction mode, nor of the % |tracingonline| flag. If the user wants them different, he should % set them outside of the preview boxes. % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\pr@addto@front\pr@ship@start{\let\tracingonline\count@ % \let\errorstopmode\@empty\tracingall} % \end{macrocode} % % \subsection{Supporting conversions} % It is not uncommon to want to use the results of |preview| as % images. One possibility is to generate a flurry of EPS files with % \begin{quote} % |dvips -E -i -Ppdf -o| \meta{outputfile}|.000| \meta{inputfile} % \end{quote} % However, in case those are to be processed further into graphic % image files by Ghostscript, this process is inefficient. One cannot % use Ghostscript in a single run for generating the files, however, % since one needs to set the page size (or full size pages will be % produced). The |tightpage| option will set the page dimensions at % the start of each PostScript page so that the output will be sized % appropriately. That way, a single pass of Dvips followed by a % single pass of Ghostscript will be sufficient for generating all % images. % % You will have to specify the output driver to be used, either % |dvips| or |pdftex|. % % \begin{macro}{\PreviewBorder} % \begin{macro}{\PreviewBbAdjust} % We start this off with the user tunable parameters which get % defined even in the case of an inactive package, so that % redefinitions and assignments to them will always work: % \begin{macrocode} %\ifx\PreviewBorder\@undefined % \newdimen\PreviewBorder % \PreviewBorder=0.50001bp %\fi %\ifx\PreviewBbAdjust\@undefined % \def\PreviewBbAdjust{-\PreviewBorder -\PreviewBorder % \PreviewBorder \PreviewBorder} %\fi % \end{macrocode} % \end{macro} % \end{macro} % Here is stuff used for parsing this: % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\def\pr@nextbb{\edef\next{\next\space\number\dimen@}% % \expandafter\xdef\csname pr@bb@% % \romannumeral\count@\endcsname{\the\dimen@}% % \advance\count@\@ne\ifnum\count@<5 % \afterassignment\pr@nextbb\dimen@=\fi} % \end{macrocode} % And here is the stuff that we fudge into our hook. Of course, we % have to do it in a box, and we start this box off with our special. % There is one small consideration here: it might come before any % |\AtBeginDvi| stuff containing header specials. It turns out Dvips % rearranges this amicably: header code specials get transferred to % the appropriate header section, anyhow, so this ensures that we come % right after the bop section. We insert the 7~numbers here: the % 4~bounding box adjustments, and the 3~\TeX\ box dimensions. In case % the box adjustments have changed since the last time, we write them % out to the console. % \begin{macrocode} %\ifnum\pr@graphicstype=\z@ % \ifcase % \ifx\XeTeXversion\@undefined % \ifx\pdfoutput\@undefined \@ne\fi % \ifx\pdfoutput\relax \@ne\fi % \ifnum\pdfoutput>\z@ \tw@\fi \@ne % \else \thr@@\fi % \or \ExecuteOptions{dvips}\relax % \or \ExecuteOptions{pdftex}\relax % \or \ExecuteOptions{xetex}\relax\fi\fi %\global\let\pr@bbadjust\@empty %\pr@addto@front\pr@ship@end{\begingroup % \let\next\@gobble % \count@\@ne\afterassignment\pr@nextbb % \dimen@\PreviewBbAdjust % \ifx\pr@bbadjust\next % \else \global\let\pr@bbadjust\next % \typeout{Preview: Tightpage \pr@bbadjust}% % \fi\endgroup} %\ifcase\pr@graphicstype %\or % \g@addto@macro\pr@ship@end{\setbox\pr@box\hbox{% % \special{ps::\pr@bbadjust\space % \number\ifdim\ht\pr@box>\z@ \ht\pr@box % \else \z@ % \fi \space % \number\ifdim\dp\pr@box>\z@ \dp\pr@box % \else \z@ % \fi \space % \number\ifdim\wd\pr@box>\z@ \wd\pr@box % \else \z@ % \fi}\box\pr@box}} %\or % \g@addto@macro\pr@ship@end{{\dimen@\ht\pr@box % \ifdim\dimen@<\z@ \dimen@\z@\fi % \advance\dimen@\pr@bb@iv % \dimen@ii=\dimen@ % \global\pdfvorigin\dimen@ % \dimen@\dp\pr@box % \ifdim\dimen@<\z@ \dimen@\z@\fi % \advance\dimen@-\pr@bb@ii % \advance\dimen@\dimen@ii % \global\pdfpageheight\dimen@ % \dimen@\wd\pr@box % \ifdim\dimen@<\z@ \dimen@=\z@\fi % \advance\dimen@-\pr@bb@i % \advance\dimen@\pr@bb@iii % \global\pdfpagewidth\dimen@ % \global\pdfhorigin-\pr@bb@i}} %\or % \g@addto@macro\pr@ship@end{\dimen@\ht\pr@box % \ifdim\dimen@<\z@ \dimen@\z@\fi % \advance\dimen@\pr@bb@iv % \dimen@ii=\dimen@ % \voffset=-1in % \advance\voffset\dimen@ % \advance\voffset-\ht\pr@box % \dimen@\dp\pr@box % \ifdim\dimen@<\z@ \dimen@\z@\fi % \advance\dimen@-\pr@bb@ii % \advance\dimen@\dimen@ii % \global\pdfpageheight\dimen@ % \global\paperheight\dimen@ % \dimen@\wd\pr@box % \ifdim\dimen@<\z@ \dimen@=\z@\fi % \advance\dimen@-\pr@bb@i % \advance\dimen@\pr@bb@iii % \global\pdfpagewidth\dimen@ % \hoffset=-1in % \advance\hoffset-\pr@bb@i % \let\pr@offset@override\@empty} %\fi % \end{macrocode} % Ok, here comes the beef. First we fish the 7~numbers from the file % with |token| and convert them from \TeX~|sp| to PostScript points. % \begin{macrocode} %\ifnum\pr@graphicstype=\@ne %\preview@delay{\AtBeginDvi{% % \end{macrocode} % Backwards-compatibility. Once we are certain that dvipng-1.6 or % later is widely used, the three following specials can be exchanged % for the simple |\special{!/preview@tightpage true def}| % \begin{macrocode} % \special{!/preview@tightpage true def (% % compatibility PostScript comment for dvipng<=1.5 } % \special{!userdict begin/bop-hook{% % 7{currentfile token not{stop}if % 65781.76 div DVImag mul}repeat % 72 add 72 2 copy gt{exch}if 4 2 roll % neg 2 copy lt{exch}if dup 0 gt{pop 0 exch}% % {exch dup 0 lt{pop 0}if}ifelse 720 add exch 720 add % 3 1 roll % 4{5 -1 roll add 4 1 roll}repeat % < /PageOffset[7 -2 roll [1 1 dtransform exch]% % {0 ge{neg}if exch}forall]>>setpagedevice% % //bop-hook exec}bind def end} % \special{!userdict (some extra code to avoid % dvipng>=1.6 unknown special: % 7{currentfile token not{stop}if 65781.76 div })) pop} % \end{macrocode} % The ``userdict'' at the start of the last special is also there to % avoid an unknown special in dvipng<=1.6. This is the end of the % backwards-compatibility code. % \begin{macrocode} % \special{!userdict begin/bop-hook{% % preview-bop-level 0 le{% % 7{currentfile token not{stop}if % 65781.76 div DVImag mul}repeat % \end{macrocode} % Next we produce the horizontal part of the bounding box as % \[ (1\mathrm{in},1\mathrm{in}) + % \bigl(\min(|\wd\pr@box|,0),\max(|\wd\pr@box|,0)\bigr) \] % and roll it to the bottom of the stack: % \begin{macrocode} % 72 add 72 2 copy gt{exch}if 4 2 roll % \end{macrocode} % Next is the vertical part of the bounding box. Depth counts in % negatively, and we again take $\min$ and $\max$ of possible extents % in the vertical direction, limited by 0. 720 corresponds to % $10\,\mathrm{in}$ and is the famous $1\,\mathrm{in}$ distance away % from the edge of letterpaper. % \begin{macrocode} % neg 2 copy lt{exch}if dup 0 gt{pop 0 exch}% % {exch dup 0 lt{pop 0}if}ifelse 720 add exch 720 add % 3 1 roll % \end{macrocode} % Ok, we now have the bounding box on the stack in the proper order % llx, lly, urx, ury. We add the adjustments: % \begin{macrocode} % 4{5 -1 roll add 4 1 roll}repeat % \end{macrocode} % The page size is calculated as the appropriate differences, the page % offset consists of the coordinates of the lower left corner, with % those coordinates negated that would be reckoned positive in the % device coordinate system. % \begin{macrocode} % < /PageOffset[7 -2 roll [1 1 dtransform exch]% % {0 ge{neg}if exch}forall]>>setpagedevice}if% % \end{macrocode} % So we now bind the old definition of |bop-hook| into our new % definition and finish it. % \begin{macrocode} % //bop-hook exec}bind def end}}} %\fi % \end{macrocode} % % \subsection{The \texttt{showlabels} option} % During the editing process, some people like to see the label names % in their equations, figures and the like. Now if you are using % Emacs for editing, and in particular \previewlatex, I'd strongly % recommend that you check out the Ref\TeX\ package which pretty much % obliterates the need for this kind of functionality. If you still % want it, standard \LaTeX\ provides it with the |showkeys| package, % and there is also the less encompassing |showlabels| package. % Unfortunately, since those go to some pain not to change the page % layout and spacing, they also don't change |preview|'s idea of the % \TeX\ dimensions of the involved boxes. % % So those packages are mostly useless. So we present here an % alternative hack that will get the labels through. % \begin{macro}{\pr@labelbox} % This works by collecting them into a separate box which we then % tack to the right of the previews. % \begin{macrocode} %\ifPreview\else\expandafter\endinput\fi %\newbox\pr@labelbox % \end{macrocode} % \end{macro} % \begin{macro}{\pr@label} % We follow up with our own definition of the \cmd{\label} macro % which will be active only in previews. The original definition is % stored in |\pr@@label|. |\pr@lastlabel| contains the last typeset % label in order to avoid duplication in certain environments, and % we keep the stuff in |\pr@labelbox|. % \begin{macrocode} %\def\pr@label#1{\pr@@label{#1}% % \end{macrocode} % Ok, now we generate the box, by placing the label below any existing % stuff. % \begin{macrocode} % \ifpr@setbox\z@{#1}% % \global\setbox\pr@labelbox\vbox{\unvbox\pr@labelbox % \box\z@}\egroup\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\ifpr@setbox} % |\ifpr@setbox| receives two arguments, |#1| is the box into which % to set a label, |#2| is the label text itself. If a label needs % to be set (if it is not a duplicate in the current box, and is % nonempty, and we are in the course of typesetting and so on), we % are left in a true conditional and an open group with the preset % box. If nothing should be set, no group is opened, and we get % into skipping to the closing of the conditional. Since % |\ifpr@setbox| is a macro, you should not place the call to it % into conditional text, since it will not pair up with |\fi| until % being expanded. % % We have some trickery involved here. |\romannumeral\z@| expands % to empty, and will also remove everything between the two of them % that also expands to empty, like a chain of |\fi|. % \begin{macrocode} %\def\ifpr@setbox#1#2{% % \romannumeral% % \ifx\protect\@typeset@protect\ifpr@outer\else % \end{macrocode} % Ignore empty labels\dots % \begin{macrocode} % \z@\bgroup % \protected@edef\next{#2}\@onelevel@sanitize\next % \ifx\next\@empty\egroup\romannumeral\else % \end{macrocode} % and labels equal to the last one. % \begin{macrocode} % \ifx\next\pr@lastlabel\egroup\romannumeral\else % \global\let\pr@lastlabel\next % \setbox#1\pr@boxlabel\pr@lastlabel % \expandafter\expandafter\romannumeral\fi\fi\fi\fi % \z@\iffalse\iftrue\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@boxlabel} % Now the actual typesetting of a label box is done. We use a small % typewriter font inside of a framed box (the default frame/box % separating distance is a bit large). % \begin{macrocode} %\def\pr@boxlabel#1{\hbox{\normalfont % \footnotesize\ttfamily\fboxsep0.4ex\relax\fbox{#1}}} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@maketag} % And here is a version for |amsmath| equations. They look better % when the label is right beside the tag, so we place it there, but % augment |\box\pr@labelbox| with an appropriate placeholder. % \begin{macrocode} %\def\pr@maketag#1{\pr@@maketag{#1}% % \ifpr@setbox\z@{\df@label}% % \global\setbox\pr@labelbox\vbox{% % \hrule\@width\wd\z@\@height\z@ % \unvbox\pr@labelbox}% % \end{macrocode} % Set the width of the box to empty so that the label placement gets % not disturbed, then append it. % \begin{macrocode} % \wd\z@\z@\box\z@ \egroup\fi} % \end{macrocode} % \end{macro} % \begin{macro}{\pr@lastlabel} % Ok, here is how we activate this: we clear out box and label info % \begin{macrocode} %\g@addto@macro\pr@ship@start{% % \global\setbox\pr@labelbox\box\voidb@x % \xdef\pr@lastlabel{}% % \end{macrocode} % The definitions above are global because we might be in any amount % of nesting. We then reassign the appropriate labelling macros: % \begin{macrocode} % \global\let\pr@@label\label \let\label\pr@label % \global\let\pr@@maketag\maketag@@@ % \let\maketag@@@\pr@maketag %} % \end{macrocode} % \end{macro} % Now all we have to do is to add the stuff to the box in question. % The stuff at the front works around a bug in |ntheorem.sty|. % \begin{macrocode} %\pr@addto@front\pr@ship@end{% % \ifx \label\pr@label \global\let\label\pr@@label \fi % \ifx \maketag@@@\pr@maketag % \global\let\maketag@@@\pr@@maketag \fi % \ifvoid\pr@labelbox % \else \setbox\pr@box\hbox{% % \box\pr@box\,\box\pr@labelbox}% % \fi} % \end{macrocode} % \subsection{The \texttt{footnotes} option} % This is rather simplistic right now. It overrides the default % footnote action (which is to disable footnotes altogether for better % visibility). % \begin{macrocode} %\PreviewMacro[[!]\footnote %] % \end{macrocode} % % \section{Various driver files} % The installer, in case it is missing. If it is to be used via % |make|, we don't specify an installation path, since % \begin{quote} % |make install| % \end{quote} % is supposed to cater for the installation itself. % \begin{macrocode} % \input docstrip % \askforoverwritefalse % \generate{ % \file{preview.drv}{\from{preview.dtx}{driver}} % \usedir{tex/latex/preview} % \file{preview.sty}{\from{preview.dtx}{style} % \from{preview.dtx}{style,active}} % \file{prauctex.def}{\from{preview.dtx}{auctex}} % \file{prauctex.cfg}{\from{preview.dtx}{auccfg}} % \file{prshowbox.def}{\from{preview.dtx}{showbox}} % \file{prshowlabels.def}{\from{preview.dtx}{showlabels}} % \file{prtracingall.def}{\from{preview.dtx}{tracingall}} % \file{prtightpage.def}{\from{preview.dtx}{tightpage}} % \file{prlyx.def}{\from{preview.dtx}{lyx}} % \file{prcounters.def}{\from{preview.dtx}{counters}} % \file{prfootnotes.def}{\from{preview.dtx}{footnotes}} % } % \endbatchfile % \end{macrocode} % And here comes the documentation driver. % \begin{macrocode} % \documentclass{ltxdoc} % \usepackage{preview} % \let\ifPreview\relax % \newcommand\previewlatex{\texttt{preview-latex}} % \begin{document} % \DocInput{preview.dtx} % \end{document} % \end{macrocode} % \Finale{} % \iffalse % Local Variables: % mode: doctex % TeX-master: "preview.drv" % End: % \fi auctex-11.87/preview/latex/bootstrap.ins0000644000000000000000000000017107455011413017046 0ustar rootroot\input docstrip \askforoverwritefalse \generate{\file{preview-mk.ins}{\from{preview.dtx}{installer,make}}} \endbatchfile auctex-11.87/preview/latex/README0000644000000000000000000000501410443316425015201 0ustar rootrootThe preview.sty style file ========================== Purpose ------- The main purpose of the preview package is the extraction of selected elements from a LaTeX source, like formulas or graphics, into separate pages of a DVI file. A flexible and convenient interface allows it to specify what commands and constructs should be extracted. This works with DVI files postprocessed by either Dvips and Ghostscript or dvipng, but it also works when you are using PDFTeX for generating PDF files. Current uses of the package include the preview-latex package for WYSIWYG functionality in the AUCTeX editing environment, generation of previews in LyX, as part of the operation of the ps4pdf and pst-pdf packages, the tbook XML system and some other tools. Availability ------------ The preview package is being developed along and distributed with AUCTeX. It can therefore be obtained as part of AUCTeX distribution files available at or its mirror at . CTAN also provides a standalone version at . The project page at offers downloads and anonymous CVS access for cutting edge versions. For more information about the preview package please refer to the home page of AUCTeX at . Installation ------------ To install the preview style file on its own without the entire AUCTeX package, run tex preview.ins If preview.ins happens to be missing, you can regenerate it by running tex docstrip on preview.dtx with the option `installer'. Running TeX on preview.ins will then extract further files: preview.drv which you can run through LaTeX in order to get the documentation for preview.sty, preview.sty itself, a bunch of option files with extension .def and a few configuration files with extension .cfg. In case your docstrip configuration has not already taken care of that, install the files with extension .sty, .def and .cfg to a location where LaTeX will be able to find them, generate the documentation and have fun. The license of the original file is the GPL which you'll find a copy of in the complete AUCTeX distribution. The distribution will also unpack and install the respective LaTeX files with an autoconf-supported mechanism, so you might consider using that. Bug reporting ------------- Please report problems to , including a small example file which uses the \listfiles statement, and the resulting log file. David Kastrup auctex-11.87/preview/latex/Makefile.in0000644000000000000000000000565410751355731016405 0ustar rootroot# Makefile for AUCTeX # Maintainer: auctex-devel@gnu.org # Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. @SET_MAKE@ LATEX=@LATEX@ PDFLATEX=@PDFLATEX@ TEX=@TEX@ TEXHASH=@TEXHASH@ prefix=@prefix@$(null) datarootdir=@datarootdir@$(null) datadir=@datadir@$(null) exec_prefix=@exec_prefix@$(null) libdir=@libdir@$(null) previewtexmfdir = @previewtexmfdir@$(null) previewdocdir = @previewdocdir@$(null) TEXMFGEN = @TEXMFGEN@ DESTDIR= INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = ../../mkinstalldirs all: $(TEXMFGEN) preview.drv preview-mk.ins preview.dvi preview.pdf install: install-texmf install-texmf-doc install-texmf: $(TEXMFGEN) -$(MKINSTALLDIRS) $(DESTDIR)$(previewtexmfdir) for x in $(TEXMFGEN) ; do \ echo $(INSTALL_DATA) $$x $(DESTDIR)$(previewtexmfdir) ; \ $(INSTALL_DATA) $$x $(DESTDIR)$(previewtexmfdir) ; \ done # Isn't the texmfdir directory without "tex/latex/preview" available? @ texmfdir="$(DESTDIR)$(previewtexmfdir)/../../.."; \ if [ -r "$$texmfdir"/ls-R ]; then \ $(TEXHASH) "$$texmfdir"; \ else \ echo "Warning: Cannot update ls-R database in $$texmfdir"; \ sleep 2; \ fi install-texmf-doc: preview.dvi -$(MKINSTALLDIRS) $(DESTDIR)$(previewdocdir) $(INSTALL_DATA) preview.dvi $(DESTDIR)$(previewdocdir) preview-mk.ins: preview.dtx bootstrap.ins $(TEX) '\nonstopmode \input bootstrap.ins' #only for standalone preview.sty package: preview.ins: preview.dtx $(TEX) '\nonstopmode\def\jobname{.ins}\input docstrip ' \ '\generate{\file{preview.ins}{\from{preview.dtx}{installer}}}' \ '\endbatchfile' $(TEXMFGEN) preview.drv: preview.dtx preview-mk.ins $(TEX) '\nonstopmode \input preview-mk.ins' preview.dvi: preview.drv preview.dtx preview.sty $(LATEX) '\nonstopmode \input preview.drv' $(LATEX) '\nonstopmode \input preview.drv' $(LATEX) '\nonstopmode \input preview.drv' preview.pdf: preview.drv preview.dtx preview.sty $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}' $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}' $(PDFLATEX) '\nonstopmode \AtBeginDocument{\OnlyDescription}\input{preview.drv}' clean: rm -f *~ *.aux *.dvi *.drv *.log rm -f $(TEXMFGEN) preview.ins preview-mk.ins auctex-11.87/preview/configure.ac0000644000000000000000000001601410751355731015501 0ustar rootrootdnl Autoconf script for AUCTeX dnl Maintainer: auctex-devel@gnu.org dnl Copyright (C) 2001, 2002, 2003, 2004, 2005, dnl 2006 Free Software Foundation, Inc. dnl This file is part of AUCTeX. dnl AUCTeX is free software; you can redistribute it and/or modify it dnl under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 3, or (at your option) dnl any later version. dnl AUCTeX is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl You should have received a copy of the GNU General Public License dnl along with AUCTeX; see the file COPYING. If not, write to the Free dnl Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, dnl MA 02110-1301, USA. AC_INIT(preview-latex,11.84,bug-auctex@gnu.org) AC_PROG_MAKE_SET AC_PROG_INSTALL # Import unquoted variables. TEX="$TEX_UNQUOTED" packagedir="$packagedir_unquoted" packagelispdir="$packagelispdir_unquoted" packagedatadir="$packagedatadir_unquoted" EMACS="$EMACS_UNQUOTED" EMACS_PROG_EMACS if test ${EMACS_FLAVOR} = xemacs then EMACS_CHECK_VERSION(21,4) else EMACS_CHECK_VERSION(21,1) fi # The Debian package uses `--disable-build-dir-test'; normal users should # never need to modify the default behavior. AC_ARG_ENABLE([build-dir-test], [ --enable-build-dir-test test for build directory inside `load-path' (on by default)], [if ! [[ "X-${enableval}" = "X-no" ]] then VALID_BUILD_DIR fi], [VALID_BUILD_DIR]) if test ${EMACS_FLAVOR} = "xemacs" ; then PLAT_LISP=prv-xemacs.el EMACS_PATH_PACKAGEDIR([preview],[preview]) else PLAT_LISP=prv-emacs.el packagedir=no fi if test "X${packagedir}" = Xno then EMACS_PATH_LISPDIR AC_MSG_CHECKING(what file to use for preview startup) AC_ARG_WITH(previewstartfile, [[ --with-previewstartfile=FILE What file to use for preview startup.]], [[ previewstartfile="${withval}" ]], [ _tmpdir_="${lispdir}" AC_FULL_EXPAND(_tmpdir_) if test -d "${_tmpdir_}/site-start.d" then previewstartfile="${lispdir}/site-start.d/preview-latex.el" else previewstartfile="${lispdir}/preview-latex.el" fi]) AC_MSG_RESULT([[${previewstartfile}]]) test "X$packagelispdir" = X && packagelispdir="${lispdir}/preview" test "X$packagedatadir" = X && packagedatadir="${packagelispdir}" else #lispdir is only used for determining relative files. lispdir="${packagedir}" test "X$packagelispdir" = X && packagelispdir="${packagedir}/lisp/preview" previewstartfile="${packagelispdir}"/auto-autoloads.el test "X$packagedatadir" = X && packagedatadir="${packagedir}/etc/preview" fi AC_SUBST(previewstartfile) AC_MSG_CHECKING([where the package lisp files go]) AC_ARG_WITH(packagelispdir, [[ --with-packagelispdir=DIR Directory for the package lisp files.]], [packagelispdir=["${withval}"]]) AC_LISPIFY_DIR(packagelispdir,"${previewstartfile}") AC_MSG_RESULT([[${packagelispdir}]]) AC_MSG_CHECKING([where the data files go]) AC_ARG_WITH(packagedatadir, [[ --with-packagedatadir=DIR Where the data files go.]], [packagedatadir=["${withval}"]]) AC_LISPIFY_DIR(packagedatadir,"${previewstartfile}") AC_MSG_RESULT([[${packagedatadir}]]) AC_SUBST(PLAT_LISP) AC_SUBST(packagedir) EMACS_CHECK_AUCTEX AC_SUBST(auctexdir) AC_ARG_VAR(GS,[Ghostscript executable for batch operation]) AC_CHECK_PROGS(GS, gs GSWIN32C.EXE, NONE) EMACS_LISP([[lispGS]],[[(if (member dir (list \"NONE\" (if (eq system-type 'windows-nt) \"GSWIN32C.EXE\" \"gs\"))) \"\" \`(defvar preview-gs-command ,dir))]],-no-site-file,[[dir]],[["${GS}"]]) AC_SUBST(lispGS) dnl check to see if GS supports -dTextAlphaBits and -dGraphicsAlphaBits dnl Check to see if specific drivers are built in. dnl Need table of mappings, with priority AC_PATH_PROG_REQUIRED(LATEX, latex, [LaTeX not found, aborting! You must install LaTeX for preview to work.]) AC_PATH_PROG(PDFLATEX, pdflatex) # Determine which latex-style components to install # To match .sty, .def, .cfg, but _not_ .drv TEXMFGEN=[`sed -n 's/^%.*file[{]\\([^}.]*\\.[sdc][tef][yfg]\\)[}].*/\\1/p' latex/preview.dtx`] # Replace newlines with spaces. TEXMFGEN="`echo ${TEXMFGEN}`" AC_SUBST(TEXMFGEN) AC_PATH_PROG_REQUIRED(TEX, tex, NONE) TEX_PATH_TEXMFDIR if test "x${texmfdir}" = "xno" then packagetexstyles="${packagedatadir}/latex" AC_LISPIFY_DIR(packagetexstyles,"${previewstartfile}") lisppackagetexstyles="(defvar preview-TeX-style-dir ${lisppackagetexstyles})" test "X${TEXHASH}" = X && TEXHASH=: else lisppackagetexstyles= fi AC_SUBST(lisppackagetexstyles) # Be very careful about assuming things about the available hash programs # MiKTeX comes with a braindead link to mktexlsr, apparently, so first # try the regular utility from them. AC_ARG_VAR(TEXHASH,[command to update the TeX filename database. Set to : to skip updating the database on installation. This is the default for --without-texmf-dir]) if test "X${TEXHASH}" = "X" then AC_PATH_PROG(TEXHASH, texhash) AC_CHECK_PROG(TEXHASH, initexmf, initexmf -u) if test "X${TEXHASH}" = X then AC_PATH_PROGS(TEXHASH, mktexlsr MakeTeXls-R, :) fi fi AC_MSG_CHECKING([[for glaring installation conflicts]]) exppackagelispdir="$packagelispdir" AC_FULL_EXPAND(exppackagelispdir) exppreviewstartfile="$previewstartfile" AC_FULL_EXPAND(exppreviewstartfile) EMACS_LISP(shadows,[[ (concat (and (setq tmp (locate-library \"preview.elc\")) (not (string= (file-truename tmp) (file-truename (expand-file-name \"preview.elc\" packagelispdir)))) (format \"Conflicting previous installation in \`%s' found!\n\" (file-name-directory tmp))) (and (setq tmp (locate-library \"preview-latex.el\")) (not (string= (file-truename tmp) (file-truename previewstartfile))) (format \"Conflicting previous startup file \`%s' found!\n\" tmp)))]],, [[packagelispdir previewstartfile]],[["${exppackagelispdir}" "${exppreviewstartfile}"]]) if test "NONE${shadows}" != NONE then conflictsmsg="Conflicts with previous installations have been detected. Please fix them before continuing. " AC_MSG_RESULT([[ouch! ]]) AC_MSG_WARN([[${shadows} ]]) else conflictsmsg= AC_MSG_RESULT([[probably none]]) fi AC_SHELL_QUOTIFY(texmfdir) AC_SHELL_QUOTIFY(prefix) AC_SHELL_QUOTIFY(exec_prefix) AC_SHELL_QUOTIFY(libdir) AC_SHELL_QUOTIFY(previewtexmfdir) AC_SHELL_QUOTIFY(previewdocdir) AC_SHELL_QUOTIFY(packagedir) AC_SHELL_QUOTIFY(packagelispdir) AC_SHELL_QUOTIFY(previewstartfile) AC_SHELL_QUOTIFY(lispdir) AC_SHELL_QUOTIFY(packagedatadir) AC_SHELL_QUOTIFY(auctexdir) AC_SHELL_QUOTIFY(datadir) AC_SHELL_QUOTIFY(GS) AC_SHELL_QUOTIFY(TEXHASH) AC_SHELL_QUOTIFY(EMACS) AC_SHELL_QUOTIFY(TEX) AC_SHELL_QUOTIFY(LATEX) AC_SHELL_QUOTIFY(PDFLATEX) AC_OUTPUT(Makefile auto.el latex/Makefile) cat >&2 < c #969987", ", c #A9A992", "' c #B8B8A1", ") c #C6C5AA", "! c #CFCDB1", " .@@@@@@@@@@@@@@@@. ", " %!!!!!!!''!!!!!!!% ", " %!!!!!!)&>!!!!!!!% ", " %!!!!!!>*'!!!!!!!% ", " %!!!!!)&*')')!!''% ", " @&@+#*&*=#;&*)'%-% ", " %!,>!,=;,)!)=,-$'% ", " %!,>!'=&-!!!'*#;!% ", " %!,-),=>','!!$&)!% ", " %!)$$'&&=%)!,+;!!% ", " %!','!);;!!)%**!!% ", " $;*$!!!!!!!;%'->)% ", " *=$!!!!!!)*-!'*;% ", " @>;*='!!!!),)!!''% ", " . *&&,!!!!!!!!!!% ", " ..+##@>,,,,,,,$ ", " . . . ......... ", " . . . ... . . ", " . . . . ... . ", " . . "}; auctex-11.87/preview/images/prverr24.xpm0000644000000000000000000000161310207731757016675 0ustar rootroot/* XPM */ static char *noway24[] = { /* columns rows colors chars-per-pixel */ "24 24 9 1", " c red", ". c #FF0404", "X c #FD0C0C", "o c #F91919", "O c #F62929", "+ c #F34C4C", "@ c #FF9090", "# c #FEFEFE", "$ c None", /* pixels */ "$$$$$$$$+OOXXOO+$$$$$$$$", "$$$$$$OX XO$$$$$$", "$$$$+X X+$$$$", "$$$+ +$$$", "$$+ +$$", "$$X X$$", "$O O$", "$X X$", "+ +", "O+@@@@@@@@@@@@@@@@@@@@+O", "o######################o", "X######################X", "X######################X", "o######################o", "O+@@@@@@@@@@@@@@@@@@@@+O", "+ +", "$X X$", "$O O$", "$$X X$$", "$$+ +$$", "$$$+ +$$$", "$$$$+X X+$$$$", "$$$$$$OX XO$$$$$$", "$$$$$$$$+OOXXOO+$$$$$$$$" }; auctex-11.87/preview/images/prvtex12.xbm0000644000000000000000000000042510202162551016645 0ustar rootroot/* Created with The GIMP */ #define preview12_width 12 #define preview12_height 12 static unsigned char preview12_bits[] = { 0xff, 0x0f, 0x41, 0x08, 0x21, 0x08, 0x6f, 0x0d, 0x35, 0x0a, 0x75, 0x0a, 0x6b, 0x0b, 0x82, 0x0c, 0x7c, 0x08, 0xf0, 0x08, 0x00, 0x0f, 0x00, 0x00 }; auctex-11.87/preview/images/prvtex16.xbm0000644000000000000000000000051010202162551016644 0ustar rootroot/* Created with The GIMP */ #define preview16_width 16 #define preview16_height 16 static unsigned char preview16_bits[] = { 0xff, 0xff, 0x01, 0x81, 0x81, 0x80, 0xbd, 0xad, 0x49, 0xa8, 0xc9, 0x91, 0x49, 0x90, 0x9e, 0x99, 0x1c, 0xac, 0x7d, 0x84, 0xf1, 0x80, 0xf2, 0x87, 0x22, 0xfa, 0x24, 0x52, 0x24, 0x5a, 0xc8, 0x94 }; auctex-11.87/preview/images/prvwrk24.xbm0000644000000000000000000000116410202165520016653 0ustar rootroot/* 2002 David Kastrup, GPL */ #define prevwork_width 24 #define prevwork_height 24 #define prevwork_x_hot 0 #define prevwork_y_hot 20 static unsigned char prevwork_bits[] = { 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xe7, 0x00, 0x00, 0xe7, 0x00, 0x80, 0xc3, 0x01, 0x80, 0xc3, 0x01, 0xc0, 0x81, 0x03, 0xc0, 0x81, 0x03, 0xe0, 0x30, 0x07, 0xe0, 0x3f, 0x07, 0x70, 0x0d, 0x0e, 0x70, 0x0d, 0x0e, 0x38, 0x0e, 0x1c, 0x38, 0x0f, 0x1c, 0x1c, 0x1f, 0x38, 0x9c, 0xa5, 0x3b, 0x8e, 0xc4, 0x77, 0xce, 0xe4, 0x7f, 0x47, 0xec, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; auctex-11.87/preview/images/prvwrk16.xpm0000644000000000000000000000116510205246031016673 0ustar rootroot/* XPM */ static char * nwork16_xpm[] = { "16 16 17 1", " c None", ". c #040703", "+ c #0E100D", "@ c #262825", "# c #434542", "$ c #4C4E4B", "% c #5B5D5A", "& c #70726F", "* c #868885", "= c #D86467", "- c #FF6467", "; c #A69F9F", "> c #FF9797", ", c #B6B8B5", "' c #C7C9C6", ") c #D5D7D4", "! c #FAFCF9", " >> ", " -- ", " >--> ", " ->>- ", " >-!!-> ", " ->!!>- ", " >-!!&*-> ", " -;#@;)>- ", " >-#&.;!!-> ", " ->!+@,!!>- ", " >-!&@%;!!!-> ", " ->)#,%,,&.;- ", " >-!%'!#!$..+=> ", " ->!&!!&&..++#- ", ">->>>>>>>>>>>>->", " >>>>>>>>>>>>>> "}; auctex-11.87/preview/images/prvtex24.xbm0000644000000000000000000000107310202166002016643 0ustar rootroot/* Created with The GIMP */ #define preview_width 24 #define preview_height 24 static unsigned char preview_bits[] = { 0xfe, 0xff, 0x7f, 0x02, 0x00, 0x40, 0x02, 0x18, 0x40, 0x02, 0x0c, 0x40, 0x02, 0x04, 0x40, 0x02, 0x00, 0x50, 0xfe, 0xde, 0x59, 0x32, 0x03, 0x49, 0x32, 0x0f, 0x4f, 0x32, 0x07, 0x46, 0x32, 0x23, 0x46, 0x62, 0x1e, 0x47, 0x02, 0x0c, 0x47, 0x02, 0x80, 0x4d, 0x32, 0x80, 0x48, 0x2c, 0xc0, 0x58, 0x42, 0x00, 0x40, 0xc2, 0x01, 0x40, 0xe4, 0x0e, 0x40, 0x44, 0xf4, 0x7f, 0x48, 0xa4, 0x24, 0x48, 0xb4, 0x24, 0x90, 0x29, 0x47, 0x10, 0x00, 0x40 }; auctex-11.87/preview/images/prvtex24.xpm0000644000000000000000000000155410202166104016670 0ustar rootroot/* XPM */ static char * preview_xpm[] = { "24 24 10 1", " c None", ". c #000000", "+ c #CECEB2", "@ c #656559", "# c #818174", "$ c #B9B9A4", "% c #969686", "& c #181815", "* c #363630", "= c #53534B", " ...................... ", " .++++++++++++++++++++. ", " .+++++++++@#+++++++++. ", " .++++++++$.%+++++++++. ", " .++++++++@#++++++++++. ", " .+++++++$&@$+$$++++%+. ", " .@....*#&@=.#@.%++@&+. ", " .++%%++@#++$++$*+$.#+. ", " .++%%++%=*#++++##=*++. ", " .++%%++#@@%+++++*.%++. ", " .++%@$+@#++%%+++&=+++. ", " .+++&.+%.@=&+++#.#+++. ", " .+++$$++$@#++++.@=+++. ", " .+$**+++++++++@&+=$++. ", " .*@*++++++++$.%+$*@+. ", " $##*++++++++#*+++%*+. ", " . %#@*%++++++++++++++. ", " . @=&#+++++++++++++. ", " . ...***&$$++++++++. ", " . . . ........... ", " . . . . . . . ", " . . . .. . . . ", " . .. . . ... . ", " . . "}; auctex-11.87/preview/images/prvwrk12.xpm0000644000000000000000000000076510205246031016674 0ustar rootroot/* XPM */ static char * nwork12_xpm[] = { "12 12 17 1", " c None", ". c #0F110E", "+ c #161815", "@ c #1F211E", "# c #383937", "$ c #6A6C69", "% c #818380", "& c #E46767", "* c #FF6467", "= c #959794", "- c #DC9897", "; c #ADAFAC", "> c #FF9797", ", c #C6C8C5", "' c #FFCBCA", ") c #E4E6E3", "! c #FBFDFA", " >> ", " '**' ", " >>>> ", " '*''*' ", " >>!)>> ", " '*,==,*' ", " >>$@=!>> ", " '*';#;!'*' ", " >>!$$=!,-> ", "'*'=)%!%.@&'", ">>!=!=;..+$>", " ********** "}; auctex-11.87/preview/images/prvtex16.xpm0000644000000000000000000000116710202162551016673 0ustar rootroot/* XPM */ static char * preview16_xpm[] = { "16 16 17 1", " c None", ". c #020202", "+ c #1A1A16", "@ c #636357", "# c #6E6E62", "$ c #828276", "% c #8A8A7A", "& c #969686", "* c #A6A692", "= c #B2B29E", "- c #BABAA6", "; c #363632", "> c #BEBEAA", ", c #52524A", "' c #CECEB2", ") c #46463E", "! c #7A7A6E", "................", ".''''''>@''''''.", ".''''''%>''''''.", ".'!..#*;,=#*'#=.", ".''.''!*>''&=@'.", ".''.''#@>''>)='.", ".'',,'#!@>'&@''.", " .;@;''*>'')%''.", " -$$;'''''%!>@=.", ". &$@;&'''*''>'.", ". @,+$'''''''.", " . ...;;;+''''.", " . . . .....", " . . . . . ", " . . . .. . ", " . .. . . ."}; auctex-11.87/preview/images/prverr16.xpm0000644000000000000000000000105310207731757016674 0ustar rootroot/* XPM */ static char *noway16[] = { /* columns rows colors chars-per-pixel */ "16 16 9 1", " c red", ". c #FD0D0D", "X c #FA1C1C", "o c #F52D2D", "O c #FB5B5B", "+ c #FC6060", "@ c #FFBBBB", "# c #FEFEFE", "$ c None", /* pixels */ "$$$$$ XXXX $$$$$", "$$$X. .X$$$", "$$o o$$", "$X. .X$", "$. .$", " ", "O@@@@@@@@@@@@@@O", "+##############+", "+##############+", "O@@@@@@@@@@@@@@O", " ", "$. .$", "$X. .X$", "$$o o$$", "$$$X. .X$$$", "$$$$$ XXXX $$$$$" }; auctex-11.87/preview/images/prvwrk24.xpm0000644000000000000000000000172510205246030016673 0ustar rootroot/* XPM */ static char * nwork24_xpm[] = { "24 24 17 1", " c None", ". c #000100", "+ c #141513", "@ c #212320", "# c #313230", "$ c #3B3D3A", "% c #484947", "& c #626461", "* c #8C8E8B", "= c #FF6467", "- c #B6AFAC", "; c #FF9696", "> c #C4C6C3", ", c #D0D2CE", "' c #FFCBCA", ") c #DDDFDC", "! c #FBFDFA", " ;; ", " ;==; ", " ==== ", " ;====; ", " ==;;== ", " ;==''==; ", " ==;!!;== ", " ;=='!!'==; ", " ==;!!!!;== ", " ;=='!!>,'==; ", " ==;!!!.%!;== ", " ;=;$#$*,)!'==; ", " ==&,*..!!!!;== ", " ;==#,@.$!!!!'==; ", " ==;!&.&&!!!!!;== ", " ;==')*&*&!!!!!'==; ", " ==;!*#&>&!!!!!!;== ", " ;==')$)&->-!!)&*'==; ", " ==;!&-!,&!!-,%..*;== ", " ;==',%!!)$!!>#....-==; ", " ==;!&>!!)@!>+.....+;== ", ";=='!-!!!!*!&%%%%%&&*==;", "========================", " ====================== "}; auctex-11.87/preview/images/prvtex-cap-up.xpm0000644000000000000000000000275010202166223017706 0ustar rootroot/* XPM */ static char * preview_cap_up_xpm[] = { "33 33 12 1", " c None", ". c #BFBFBF s backgroundToolBarColor", "+ c #000000 s foregroundToolBarColor", "! c #000000", "@ c #FFFFFF", "# c #7C7C7C", "$ c #A0A0A0", "% c #E5E5E5", "& c #BABABA", "* c #1D1D1D", "= c #424242", "- c #676767", ".................................", ".....!!!!!!!!!!!!!!!!!!!!!!......", ".....!@@@@@@@@@@@@@@@@@@@@!......", ".....!@@@@@@@@@#$@@@@@@@@@!......", ".....!@@@@@@@@%!&@@@@@@@@@!......", ".....!@@@@@@@@#$@@@@@@@@@@!......", ".....!@@@@@@@%*#%@%%@@@@&@!......", ".....!#!!!!=$*#-!$#!&@@#*@!......", ".....!@@&&@@#$@@%@@%=@%!$@!......", ".....!@@&&@@&-=$@@@@$$-=@@!......", ".....!@@&&@@$##&@@@@@=!&@@!......", ".....!@@&#%@#$@@&&@@@*-@@@!......", ".....!@@@*!@&!#-*@@@$!$@@@!......", ".....!@@@%%@@%#$@@@@!#-@@@!......", ".....!@%==@@@@@@@@@#*@-%@@!......", "......!=#=@@@@@@@@%!&@%=#@!......", "......%$$=@@@@@@@@$=@@@&=@!......", ".....#.&$#=&@@@@@@@@@@@@@@!......", ".....#...#-*$@@@@@@@@@@@@@!......", "......#..###===*%%@@@@@@@@!......", "......#...#...#.!!!!!!!!!!!......", ".......#..#...#..#.#..#..#.......", ".......#..#...#.##.#..#..#.......", "........#..##..#.#..###...#......", "........#.................#......", "..+++............................", "..+..+.+.+.+..+..+.+..+..+.+.+...", "..+..+.++.+.+.+..+...+.+.+.+.+...", "..+++..+..+++.+..+.+.+++.+.+.+...", "..+....+..+...+.+..+.+....+.+....", "..+....+...++..+...+..++..+.+....", ".................................", "................................."}; auctex-11.87/preview/images/prverr20.xpm0000644000000000000000000000131310207731757016666 0ustar rootroot/* XPM */ static char *noway20[] = { /* columns rows colors chars-per-pixel */ "20 20 9 1", " c red", ". c #FF0404", "X c #FD0F0F", "o c #F91919", "O c #F82828", "+ c #F33636", "@ c #ED4A4A", "# c #FEFEFE", "$ c None", /* pixels */ "$$$$$$@+OXXO+@$$$$$$", "$$$$OO. .OO$$$$", "$$$@. .@$$$", "$$@. .@$$", "$O. .O$", "$o o$", "@. .@", "+ +", "o##################o", "o##################o", "o##################o", "o##################o", "+ +", "@. .@", "$o o$", "$O. .O$", "$$@. .@$$", "$$$@. .@$$$", "$$$$OO. .OO$$$$", "$$$$$$@+OXXO+@$$$$$$" }; auctex-11.87/preview/images/prvwrk14.xpm0000644000000000000000000000106110205246031016664 0ustar rootroot/* XPM */ static char * nwork14_xpm[] = { "14 14 17 1", " c None", ". c #000100", "+ c #161816", "@ c #222421", "# c #2A2C29", "$ c #363836", "% c #525451", "& c #686A67", "* c #828481", "= c #FF6467", "- c #949693", "; c #A4A6A3", "> c #FF9797", ", c #B8BAB7", "' c #D8D6D4", ") c #FFCBCA", "! c #FAFDF9", " >> ", " )==) ", " >>>> ", " )=))=) ", " >>!!>> ", " )=)!!)=) ", " >>''@!>> ", " )=&%#!!)=) ", " >>-@$!!!>> ", " )=);%&!!!)=) ", " >>!&&;,!&,>> ", ")=)*',,'@.+'=)", ">>!-!';$+++%>>", " ============ "}; auctex-11.87/preview/images/prvwrk20.xpm0000644000000000000000000000142510205246031016665 0ustar rootroot/* XPM */ static char * nwork20_xpm[] = { "20 20 17 1", " c None", ". c #000100", "+ c #262825", "@ c #2B2D2A", "# c #444643", "$ c #575956", "% c #726D6B", "& c #D16668", "* c #FF6467", "= c #979794", "- c #E4999A", "; c #B1B3B0", "> c #FF9797", ", c #C9CBC8", "' c #D3D5D2", ") c #E5E7E3", "! c #FDFFFB", " ** ", " >**> ", " **** ", " >****> ", " **>>** ", " >**!!**> ", " **>!!>** ", " >**!!)!**> ", " **>!'.)>** ", " >*%$$;,!!**> ", " *&=;.=!!!>** ", " >*&;@@=!!!!**> ", " **>,$=;!!!!>** ", " >**)#%;=!!!!!**> ", " **>=,;=';!,#;>** ", " >**)%!)%!!=+..,**> ", " **>='!)%!;....@-** ", ">**!;!!!='#####$=**>", "********************", "********************"}; auctex-11.87/preview/images/prvtex12.xpm0000644000000000000000000000076710202162551016674 0ustar rootroot/* XPM */ static char * preview12_xpm[] = { "12 12 17 1", " c None", ". c #020202", "+ c #1E1E1A", "@ c #626256", "# c #7D7D70", "$ c #8A8A7A", "% c #969686", "& c #A6A692", "* c #B2B29E", "= c #46463E", "- c #BEBEAA", "; c #1A1A16", "> c #CECEB2", ", c #363632", "' c #6E6E62", ") c #0E0E0E", "! c #52524A", "............", ".>>>>$*>>>>.", ".>>>>&>>>>>.", ".'.,@+##&$%.", ".>)>'#>>&!>.", ".>=%#%%>@&>.", "..,@>*>-@&>=", " # #,>>#-%%.", " . @,%>>>>.", " . !;#>>>.", " . . ,;.", " . .. .."}; auctex-11.87/preview/ChangeLog.10000644000000000000000000037427110223574343015134 0ustar rootroot2004-04-12 David Kastrup * Release 0.8.1 * preview.el (preview-dump-replacements): Use regexp not triggering bugs in older Emacsen. (preview-dump-replacements): Same here. * RELEASE, configure.in, doc/preview-latex.texi: Adapt to 0.8.1 * preview-latex.spec: xemacspkgdir has changed in recent XEmacs releases for Redhat. * prv-xemacs.el (preview-mode-setup): Remove non-existent menu. * prv-emacs.el (preview-mode-setup): Remove non-existent menu "copied" from TeX-command-list to Command menu. * Release 0.8 * RELEASE: prepare for 0.8 * preview-latex.spec: prepare for 0.8, bump XEmacs to 21.4.9. 2004-04-11 David Kastrup * preview.el (preview-dvipng-color-string): Try to deliver border thickness. (preview-gs-transact): Don't set page size to 1,1 if that has already been done. (preview-start-dvipng): Use new -D convention for resolution. (preview-pdf2dsc-process-setup): Add resolution to GhostScript call for PDF. Doh. * circ.tex: Format with AUCTeX. * preview.el (preview-gs-open): Bypass page initialization if page is 1bp times 1bp (that is: not yet set). * latex/preview.dtx: Remove tightpdf option again. Better explanation for tightpage. * preview.el (preview-parsed-tightpage): New variable. (preview-TeX-bb): Use tightpage borders if found in file. (preview-gs-flag-error): Display correct file on error. (preview-gs-transact): Don't pass page dimensions if tightpage is active. (preview-required-option-list): Replace dvips option with tightpdf option. (preview-parse-tightpage): New function. (preview-parse-variables): Add preview-parse-tightpage, add function quoting. (preview-gs-open): Move color setup to BeginPage hook. Rename preview-latex-* PostScript Variables to just preview-*. (preview-gs-transact): Set minimal pagesize if tightpage detected to speed up unimportant setpagedevice operations. (preview-required-option-list): Use tightpage option always. (preview-parse-variables): Remove function quoting: it lead to double quotes and tears. (preview-LaTeX-disable-pdfoutput): Move into separate constant for easy access as it is no longer the standard. (preview-LaTeX-command-replacements): Default to nil to enable PDFTeX operation. Better customization type. * latex/preview.dtx: Some reformatting, add new parse items - and >, add new option pdftex, adjust tightpage for it, add new option tightpdf. * doc/preview-dtxdoc.pl: Eat spaces after %. 2004-04-09 David Kastrup * images/preverr.xbm: * images/preverr.xpm: invert upside-down icons. 2004-03-15 David Kastrup * preview.el (preview-gs-color-string): Add missing space in color setup (GhostScript syntax error). (preview-gs-color-string): And another color setup bug. 2004-03-11 David Kastrup * doc/readme.texi (Activating preview-latex): Make a few changes with regard to keybindings and stuff. (Contacts): Add Paypal info for myself. * doc/preview-latex.texi (Keys and lisp): Remove the C-c C-c g pseudobinding from the description. (Keys and lisp): Document mouse actions. (Keys and lisp): Move Kill Job description. 2004-03-10 David Kastrup * preview.el (preview-gs-colors): replaced with preview-colors. (preview-pdf2dsc-command): replaces preview-pdftodsc-command (preview-gs-open, preview-gs-color-value) (preview-gs-color-string, preview-dvipng-color-string) (preview-dvipng-open, preview-dvipng-process-setup) (preview-pdf2dsc-process-setup, preview-pdf2dsc-sentinel) (preview-gs-close, preview-dvipng-close) (preview-prepare-fast-conversion, preview-attach-filename): lots of small changed to accommodate pdf2dsc. (preview-parse-messages): Change pattern to accommodate pdfTeX. (preview-LaTeX-command-replacements): Changed to not rely on latex being different from elatex. And for allowing pdflatex in DVI mode. (preview-dump-replacements, preview-undump-replacements): Same. (preview-cache-preamble): transfer setting of \pdfoutput to dumped format. * prv-emacs.el (preview-gs-color-value): Moved to preview.el. (preview-get-colors): Substitute for previous preview-gs-get-colors. (preview-dvipng-get-colors): Removed. * prv-xemacs.el (preview-gs-color-value): Moved to preview.el. (preview-get-colors): Substitute for previous preview-gs-get-colors. (preview-dvipng-get-colors): Removed. 2004-03-02 Jan-ke Larsson * preview.el: Fix xemacs' defalias problem 2004-03-02 David Kastrup * preview.el (preview-image-creators): dvipng now uses different place and close routines. (preview-dvipng-command): Fix file name default. (preview-pdf2dsc-command): for PDFLaTeX support (preview-gs-dvips-process-setup): Pass image type. (preview-dvipng-open), (preview-dvipng-process-setup), (preview-dvipng-abort), (preview-dvipng-sentinel), (preview-dvipng-close): New functions (preview-gs-place): get imagetype as argument. (preview-gs-place): don't create temporary file names for dvipng. (preview-dvipng-place): deleted. (preview-dvipng-place-all): New function. (preview-attach-filename): New function for PDF support. (preview-delete-file): Support attached files. (preview-format-mml): Slight formatting changes. 2004-01-14 David Kastrup * preview.el (preview-parsed-pdfoutput): Add detection for PDF output from preview.sty. (mail-header-encode-parameter): Encode the header ourselves: it seems that versions of the library are not good at that. (preview-parse-variables): Add `preview-parsed-pdfoutput'. (preview-map): Add keybinding for `preview-copy-region-as-mml'. (preview-copy-mml): factor out `preview-format-mml'. (preview-copy-region-as-mml): New function. (preview-format-mml): New function. 2004-01-11 David Kastrup * latex/preview.dtx (subsection{Preview attaching commands}): Tell preview-latex when the output format is PDF. 2004-01-06 David Kastrup * preview.el (preview-region): Use "" for file name if buffer not associated with a file. (preview-parse-messages): recognize "" to mean TeX-command-buffer. (preview-region): Use `preview-generate-preview' instead of `TeX-command'. (preview-document): Same. (preview-at-point): Add arguments to allow mouse use at later time. (LaTeX-preview-setup): Don't touch TeX-command-list. (preview-cache-preamble): Use `preview-generate-preview' instead of `TeX-command'. (TeX-inline-preview): Deprecate. (preview-generate-preview): New function. (TeX-inline-preview-internal): Remove `name' argument. 2004-01-04 David Kastrup * preview.el (preview-equality-transforms) (preview-relaxed-string=, preview-walk-document) (preview-required-option-list): Doc changes. (preview-disabled-string, preview-inactive-string) (preview-active-string, preview-place-preview) (preview-reinstate-preview): Use new context menus and give help strings for them. (preview-copy-text, preview-copy-mml, preview-active-contents) (preview-context-menu): Implement context menu and functionality. (mail-header-encode-parameter): Add an autoload cookie for this function taken from `mail-parse.el'. 2003-11-11 Jan-Ake Larsson * Makefile.in, doc/Makefile.in, latex/Makefile.in: Add DESTDIR variable 2003-11-10 Jan-ke Larsson * preview.el: Add 'dvipng preview-scale functionality 2003-11-08 Stephen Reindl (tiny change) * preview-latex.spec (%install): rm texinfo 'dir' file because this file is not needed for distribution (rpm 4.1+ complains about this 'missing' file). 2003-11-07 Jan-ke Larsson * preview.el: Fix dvipng resolution 2003-11-06 Jan-ke Larsson * prv-xemacs.el: * prv-emacs.el: * preview.el: Add color handling for dvipng 2003-11-05 Jan-Ake Larsson * preview.el: Primitive dvipng support. Lacking ascent and colors. 2003-11-04 David Kastrup * doc/todo.texi: Add quite a few more wishes. Actually, it would be nice to strike off a few instead. 2003-11-02 David Kastrup * latex/preview.dtx (subsection{Selection options}): Fix the carnage broken document classes like elsart.cls and IEEEtran.cls do to \endfigure and \endtable, and complain about it in appropriate warning messages. 2003-10-15 David Kastrup * latex/preview.dtx (subsection{Selection options}): Let the textmath option also preview the `math' environment. 2003-07-10 David Kastrup * doc/wininstall.texi: fix web page of AUCTeX. * doc/install.texi (Prerequisites): fix web page of AUCTeX. * preview.el (LaTeX-preview-setup, preview-parse-messages) (TeX-inline-preview): Fix references to AUCTeX. * aclocal.m4 (library): Fix references to AUCTeX. * RELEASE: Fix references to AUCTeX. 2003-06-19 David Kastrup * latex/preview.dtx: Make \long what needs to be \long in order to deal with argument lists and macros that might contain \par. 2003-05-13 David Kastrup * configure.in: Really bail if 8bit test fails. * circ.tex (section{Die gerade Linie}): Add comments for intentional bugs. 2003-04-28 David Kastrup * configure.in: Fix check for images. * aclocal.m4 (library): Try setting the EMACS_cv_SYS_* variable that we are actually checking. Is that correct? 2003-04-17 Jan-ke Larsson * doc/wininstall.texi: Corrected --with-lispdir and --with-packagedir 2003-04-09 Jan-ke Larsson * aclocal.m4: More sane emacs-macro path-searching. 2003-03-31 Jan-ke Larsson * aclocal.m4 (EMACS_PROG_EMACS): Make the test fail gracefully when no binary executable is found. More generally, make the emacs-macro path-searching tests run. 2003-03-30 David Kastrup * doc/install.texi (Configure), doc/wininstall.texi: explain --with-emacs and stuff even less ambiguously. 2003-03-28 David Kastrup * doc/faq.texi (Installation Trouble): Update Windows info. 2003-02-15 David Kastrup * configure.in: quote MAKEINFO. * README.CVS: Fix instructions because autoconf now does not need patching anymore. * doc/preview-latex.texi: juggle the dircategory, hopefully right now. 2003-02-13 David Kastrup * doc/preview-latex.texi: Somewhat changed info dir entries. (Simple customization): add hint for RefTeX. * doc/problems.texi, doc/macros.texi: anticipate name change of AUC TeX to AUCTeX. * aclocal.m4, configure.in: resynch with AUCTeX aclocal.m4. Lots of name changes. * configure.in: Remove redundant checks/substs. * aclocal.m4 (AC_EXAMINE_PACKAGEDIR): lots of fixes with regard to quoting, bad code and other stuff. (AC_CHECK_AUCTEX): remove trailing slash. 2003-02-10 Alan Shutko * aclocal.m4: Changed all references of AUCTEXDIR to auctexdir. * Makefile.in (auctexdir): Changed all references of AUCTEXDIR to auctexdir. 2003-02-05 David Kastrup * latex/preview.dtx (section{Package options}): Correct doc of \PreviewBbAdjust. 2003-02-05 Alan Shutko * doc/problems.texi: Add documentencoding. (Emacs problems): Move @end itemize after XEmacs. 2003-02-03 David Kastrup * latex/preview.dtx (subsection{The \texttt{auctex} option}): Make \item actually produce an \item. 2003-01-27 David Kastrup * doc/problems.texi (Emacs problems): CVS Emacs supports PNG now. * doc/wininstall.texi: CVS Emacs supports PNG images now. * prv-xemacs.el (null-device): Add defvar for older XEmacsen. 2003-01-24 David Kastrup * preview.el (preview-gs-sentinel): Delete PostScript file when GhostScript has finished. (preview-gs-dvips-sentinel): Don't mark PostScript file for deletion when GhostScript will be run: otherwise preview.el will delete the PostScript file automatically when the last preview has been generated but before GhostScript exits. And since GhostScript has the file still open, some "operating systems" will refuse to delete the PostScript file at that moment. 2003-01-20 David Kastrup * Release 0.7.8 * aclocal.m4: Correct environment spellings for Makefiles. * latex/preview.dtx (subsection{The internals}): comment out color setup. That means that one might not be able to use color.sty for setting up fore/background color, but it will also mean that loading color.sty does not interfere with the initial colors set up inside of GhostScript. In the long run, we will have to solve this differently. 2003-01-19 David Kastrup * latex/preview.dtx (section{Package options}) (subsection{The \texttt{showlabels} option}), doc/todo.texi: spell RefTeX correctly. * preview.el (preview-gs-open): Get really paranoid about closing our output file in a way which should get rid of races. (preview-ps-quote-filename): Get an optional argument for avoiding making file names relative (like null-device). (preview-equality-transforms, preview-relaxed-string=, preview-canonical-spaces): Add functionality for relaxed check of region changes (should allow outline-minor-mode in XEmacs, too, and paragraph reformatting). * prv-emacs.el (preview-check-changes): use `preview-relaxed-string=' for detecting relevant changes. * prv-xemacs.el (preview-create-icon): Use defsubst instead of defmacro in order to avoid double evaluation of `file'. (preview-check-changes): use `preview-relaxed-string=' for detecting relevant changes. * latex/preview.dtx (section{Introduction}) (section{Package options}, subsection{Supporting conversions}): Mention that `tightpage' requires `dvips', too. 2003-01-18 David Kastrup * Makefile.in (install-el, install-icons): Fix overquoting. 2003-01-17 Jan-Ake Larsson * Makefile.in (install): Unquote $x so that the install prints what is installed. 2003-01-17 David Kastrup * aclocal.m4 (AC_SHELL_QUOTIFY): c\:\\bin is correct, but ugly. Don't quote : specifically, it is not likely to be a special shell character. * doc/Makefile.in (infodir): Add a few missing environment variables. * latex/Makefile.in, Makefile.in, aclocal.m4, configure.in: try to deal as perfectly as possible with spaces in file names, quotes, backslashes and desperate things in general. 2003-01-15 Jan-Ake Larsson * configure.in: Use AC_PROG_EMACS and more portable AC_PATH_LISPDIR/PACKAGEDIR * aclocal.m4 (AC_PROG_EMACS): New. Sanitize AC_PATH_LISPDIR. Make AC_PATH_PACKAGEDIR portable. 2003-01-10 Jan-Ake Larsson * Makefile.in: Make Solaris make grok the remaining long lines 2003-01-10 David Kastrup * preview.el (LaTeX-preview-setup): Change menu name for generating customize menu to "Extend this menu". * configure.in (TEXMFGEN): Make this possibly more portable (at the very least, we had some potential quoting problems). * autogen.sh, configure.in: Ok, darn them all. We now have a configure.in that does no longer need to get patched up after autoconf, regardless of which autoconf version gets used between 2.13 and 2.57 or hopefully later. 2003-01-07 David Kastrup * Makefile.in (AUCTEXLISP): quoting levels still unsufficient. * configure.in: Error message contained a single backquote, and this made autoconf-213 barf. * Makefile.in (AUCTEXLISP): quote sed command correctly. * README.CVS: Update info about what autogen.sh generates. * doc/wininstall.texi: Well, forget a few details. Also added. * autogen.sh: Make much more simple, so that this will work with more sed versions. * doc/wininstall.texi: Major overhaul, taking also GNU Emacs CVS into account. * Makefile.in: Lots of quote fixes to make this hopefully compile better when paths may contain spaces and backslashes (the horror, the horror). * latex/Makefile.in: Lots of quote fixes to make this hopefully compile better when paths may contain spaces and backslashes (the horror, the horror). * doc/preview-latex.texi (Keys and lisp): Rearrange section, cater for renamed menus, some better explanations. * doc/faq.texi (Installation Trouble): Some rearrangements and additional explanations. * latex/preview.dtx (section{Provided Commands}): Add description of \PreviewOpen and \PreviewClose. (subsection{Selection options}): Typo in displaymath hook on \[ fixed. (subsection{Preview attaching commands}): Fix code of \PreviewOpen and \PreviewClose which need to have their own groups open and close always. 2003-01-06 David Kastrup * latex/preview.dtx (section{Provided Commands}): Add a lot of additional possibilities for previewing commands and document them. * doc/preview-dtxdoc.pl: convert @ to @@, add braces around \marg argument, allow spaces in \oarg argument. * doc/Makefile.in (install): rename INSTALLINFO to INSTALL_INFO for consistency. * autogen.sh: Allow use of AUTOCONF, use sed. * configure.in: Rework the language stuff autoconf sickness. Require autogen.sh for editing work. 2002-12-29 David Kastrup * preview.el (preview-clearout-section): New function. (preview-map): Add keybinding to it. (LaTeX-preview-setup): Reorganize Preview menu for better user friendliness. 2002-12-22 David Kastrup * latex/Makefile.in (install-texmf): don't call TEXHASH with argument: some of the substitutes might not like it. Better safe than sorry. * configure.in: A few more texhash-related fixes. 2002-12-20 David Kastrup * Makefile.in (LISP_SOURCES): Use = instead of := for non-GNU make versions. Also in other variables. 2002-12-19 David Kastrup * latex/preview.dtx (section{Package options}): Document `footnotes' option. (section{Provided Commands}): Document new second optional argument to \PreviewMacro*. (subsection{Parsing commands}): Obliterate \pr@seq and make \pr@callafter have different semantics. (subsection{Preview attaching commands}): New macroo \pr@endmacro needed for new \pr@callafter semantics. (subsection{Preview attaching commands}): Implement the new second argument to \PreviewMacro* and \PreviewEnvironment*. (subsection{Preview attaching commands}): Make \pr@startsnarf adapt to new \pr@callafter semandtics. (subsection{The \texttt{auctex} option}): Use the new semantics in a number of cases. * doc/install.texi (Loading the package): Make this more fool-proof by leaving out alternatives and reordering. 2002-12-18 Jan-Ake Larsson * preview.dtx: Add \caption to auccfg 2002-12-17 David Kastrup * Release 0.7.7 * prv-emacs.el (preview-unwatch-preamble): Fix a lethal typo. * Release 0.7.6 * preview-latex.spec (Requires): Bump to 0.7.6 * doc/faq.texi (Requirements): Change version requirements for AUC TeX. * doc/readme.texi (Activating preview-latex): Explain about what to do if preview-latex.el did not get installed properly. * doc/preview-latex.texi (Keys and lisp): Explain about new commands and options. (Simple customization): Explain how to keep counters accurate. (The Emacs interface): document new options. * doc/install.texi (Prerequisites): Explain about AUCTeX and XEmacs versions. (Loading the package): Recommend using preview-latex.el as standard measure. * Makefile.in (GS): Inherit GhostScript executable name. (preview-latex.el): If GhostScript is not named "gs", change preview-gs-command setting appropriately. Add the Lisp installation directory to the load-path. * configure.in: use : instead of /bin/true Check typical GhostScript executable names on Windows. Check for initexmf -u (MikTeX specific). * RELEASE: Some more changes for 0.7.6 2002-12-16 David Kastrup * preview.el (preview-string-expand): Get optional separator argument. (preview-expandable-string): Change type somewhat. (preview-clearout-document): doc change. (preview-default-preamble, preview-LaTeX-command): Simplify to changed definition of preview-expandable-string. * prv-xemacs.el (preview-mode-setup, preview-watch-preamble) (preview-unwatch-preamble): Differentiate between unwanted formats and formats without loaded master file. * prv-emacs.el (preview-watch-preamble, preview-unwatch-preamble, preview-mode-setup): Differentiate between unwanted formats and formats without loaded master file. 2002-12-15 David Kastrup * Makefile.in (preview-latex.el): Avoid putting the output of pwd inside of "...", because something like "C:\notagain" is not quite the Lisp string we'd want. * preview.el (preview-walk-document): New function walking through buffers of current document. (preview-clearout-document): New function for completeness. (preview-map): Add keybinding for it. (LaTeX-preview-setup): Add menu entry for it. * configure.in: Preparations for 0.7.6 * RELEASE: Preparations for 0.7.6 2002-12-14 David Kastrup * aclocal.m4: Don't lie about name of option --with-texmf-dir 2002-12-13 David Kastrup * latex/preview.dtx (subsection{The \texttt{footnotes} option}): new option. * preview.el (preview-default-option-list): Switch on previews for footnotes by default. 2002-12-12 Jan-Ake Larsson * autogen.sh: Nitpicking * aclocal.m4, configure.in, doc/Makefile.in, doc/macros.texi: Sanitize makeinfo macro tests * configure.in: Make LANG and LC_CTYPE saving work across recursive call of ./configure (2.52) 2002-12-12 David Kastrup * latex/preview.dtx (subsection{The internals}): Kill insertions off that annoy our space strippers. That makes \PreviewMacro[*[]{}]{\footnote} feasible. 2002-12-11 Jan-Ake Larsson * images/preview-cap-up.xpm: Fix bg and fg color issues 2002-12-10 Jan-Ake Larsson * autogen.sh: Make LANG and LC_CTYPE saving work across recursive call of ./configure (2.13) * doc/macros.texi: Typo fixed 2002-12-10 David Kastrup * preview.el (preview-counter-find): Take counters by searching forward if searching backwards does not avail us. (preview-reinstate-preview): Optimize queue/tempdir handling for the most common case. 2002-12-09 David Kastrup * preview.el (preview-counter-find): Factor out stuff from advice since it will otherwise miss out on compatibility macros for XEmacs. (TeX-region-create): Factor out advice. (preview-reinstate-preview): Oops, wrong data if nothing changed. Switched around. * latex/preview.dtx (subsection{Preview attaching commands}): Don't \unskip in vertical modes in preview/nopreview environments. * preview.el (preview-parsed-counters): New variable. (preview-dissect): export counter info. (preview-place-preview): get counter info. (preview-reinstate-preview): resinstate counters also. (preview-default-option-list): add counters option. (preview-string-expand): New function. (preview-expandable-string): New type. (TeX-region-create): Advice for counter restoration. (preview-last-counter): for restoring. (preview-extract-counters): New function. (desktop-buffer-preview-misc-data): Sort stuff when writing and deal with counters. (preview-dissect, preview-buffer-restore-internal) (preview-place-preview): Deal with counters. (preview-buffer-has-counters): New variable during parsing. (preview-place-preview): Deal with counters. (preview-required-option-list): New option. (preview-make-options, preview-make-preamble): deleted (preview-default-preamble, preview-LaTeX-command): redefine using expandable strings. (LaTeX-preview-setup): Replace entry in TeX-command-list with dummy. (LaTeX-preview-setup): Delete "%D" and "%P" fudges. (preview-parse-counters): New function for parsing counters. (preview-parse-variables): Add preview-parsed-counters to parse list. (preview-parse-messages): deal with counters. (preview-dump-replacements): Add preview-LaTeX-command-replacements (preview-cache-preamble): Don't generate string for TeX-inline-preview, it does so itself. (TeX-inline-preview): Generate command from preview-LaTeX-command (preview-report-bug): Report more variables. 2002-12-07 David Kastrup * preview.el (LaTeX-preview-setup): simplify "%m" entry in TeX-expand-list. (preview-create-subdirectory): return a quoted relative file name. (preview-cache-preamble): various directory name related changes so that everything will work master-relative. (preview-cache-preamble-off): Same here. (TeX-inline-preview-internal): Same here. (preview-report-bug): Add autoload cookie. (preview-create-subdirectory): Make dvips directory relative. (preview-report-bug): also report LaTeX-command-style. 2002-12-06 David Kastrup * preview.el (preview-gs-open): Another GhostScript security work around, this time leaving off something that confuses 7.x releases of AFPL GhostScript. 2002-12-03 Jan-Ake Larsson * Makefile.in: * prv-xemacs.el: handle the new toolbar image * images/preview-cap-up.xpm: toolbar image 2002-11-29 Jan-Ake Larsson * doc/readme.texi: * doc/preview-latex.texi: * doc/macros.texi: * doc/Makefile.in: * configure.in: * aclocal.m4 (AC_TEST_MAKEINFO_ACRONYM): Attempt to make docs build with old texinfo 2002-11-28 David Kastrup * Release 0.7.5 * latex/preview.dtx (subsection{Debugging options}): Typos. * Makefile.in (use-hint): Add XEmacs version hint. * prv-xemacs.el (preview-defmacro): define compatibility macros only at compile time. (preview-mode-setup): correct check for icon in toolbar. * preview.el (require): use load-library on prv-xemacs.el in order to get the compatibility macros at compilation time. 2002-11-22 David Kastrup * Release 0.7.4 * preview-latex.spec (Requires): New RPM brain damage means we have to disable the 8bit test. * doc/faq.texi: Various updates. * doc/install.texi: Some cosmetic changes and version info updates. * doc/preview-latex.texi (Keys and lisp): Adjust docs for changed menu structure (Preview having a top-level entry). (On EPS previews): phase out info about historical `postscript' settings. * preview.el (preview-image-type): Don't offer `postscript' when customizing. * configure.in: bump version. * doc/preview-latex.texi: bump version. (Keys and lisp): reorder so that indexes refer to the start of items. * preview.el (preview-gs-transact): add a bit of paranoia into page shifts in case the coordinate origin is not upper left. Similar to change in tightpage option of preview.dtx. (preview-LaTeX-command-replacements): comment fix. * latex/preview.dtx (subsection{The \texttt{counters} option}): new option and documentation: add counter checkpoints in diagnostics. 2002-11-21 David Kastrup * prv-xemacs.el (preview-mode-setup): And here we have the toolbar icon for XEmacs users. Does not look too pretty, but might inspire volunteers for improvements. 2002-11-07 Jan-Ake Larsson * aclocal.m4: Cosmetic change to the AUC TeX path printout 2002-11-20 David Kastrup * RELEASE: some changes for 0.7.4 * preview.el (preview-dump-command, preview-undump-command): deleted. (preview-do-replacements): New function for performing replacements in strings. (preview-LaTeX-command-replacements, preview-format-name) (preview-dump-replacements, preview-undump-replacements): new variables. (preview-cache-preamble): adapt to new variables. (TeX-inline-preview, TeX-inline-preview-internal): same. 2002-11-18 David Kastrup * prv-emacs.el (preview-mode-setup): Add preview-at-point to the toolbar, for those people that have not seen fit to disable it. Volunteers for the XEmacs equivalent? 2002-11-10 David Kastrup * preview.el (preview-ps-quote-filename): New function replacing preview-ps-quote, generating a relative file name. (preview-prepare-fast-conversion): Use it. (preview-gs-transact): Use it. (LaTeX-preview-setup): Make tmp directory name relative. Problem is that Cygwin absolute paths are not suitable for passing into MikTeX. Sigh. But perhaps relative file names are nicer, anyway. (preview-parse-messages): Fix regexps for the sake of people incompetent to make the run buffer not contain ^M everywhere. Another Windows-related "fix". 2002-11-05 David Kastrup * preview.el (preview-gs-open): Place color setup after setpagedevice. * latex/preview.dtx (subsection{Supporting conversions}): Make the tightpage option generate proper /PageOffset values also for devices with bottom-up coordinate systems. * doc/problems.texi: Remove preview-gs-broken-security docs. See below. * preview.el (require): Don't abort compilation if desktop or reporter packages are not installed. (preview-gs-broken-security): Removed: (preview-gs-open): Workaround for braindead security. 2002-11-04 David Kastrup * Changes in order to preserve point in previews as follows: * preview.el (preview-at-point): Pass selected window into preview-toggle. (preview-place-preview): Pass event into preview-toggle. (preview-reinstate-preview): Same here. * prv-emacs.el (preview-toggle): take additional argument (event or window). (preview-last-location): New variable, buffer-local. (preview-mark-point): Remember point before moving out. (preview-restore-position): New function. * prv-xemacs.el (preview-toggle): take additional argument (event or window). (preview-last-location): New variable, buffer-local. (preview-mark-point): Remember point before moving out. (preview-restore-position): New function. 2002-10-21 Jan-Ake Larsson * configure.in: Fix texhash check 2002-09-16 David Kastrup * latex/preview.dtx (section{Introduction}): Mention tightpage option for image conversion already here. (\pr@endbox): set \reserved@a to something harmless for skipping (if it was set to a conditional, we got into trouble). (subsection{Selection options}): Redo the textmath option because the exscale package (for example) does dirty things within \frozen@everymath. 2002-09-06 David Kastrup * doc/faq.texi: Explain about 'Preview-LaTeX exited abnormally with code 1' message 2002-09-02 David Kastrup * prv-xemacs.el (preview-mode-setup): Make behaved startup in buffers without associated file (M-x calendar RET tfw produces things like that). Generating previews will not work before you save the buffer, but at least the stuff doesn't bomb out right away. * prv-emacs.el (preview-mode-setup): Make behaved startup in buffers without associated file (M-x calendar RET tfw produces things like that). Generating previews will not work before you save the buffer, but at least the stuff doesn't bomb out right away. * circ.tex: Load and save once to make it X-Symbol-compatible (changes are negligible, and it makes demoing mixtures of the two tools nicer). * preview.el (LaTeX-preview-setup): Fix menu position of generated customize menu. (preview-format-kill, preview-dump-file-name) (preview-cache-preamble, TeX-inline-preview-internal): Use prefix `prv_' for dumped formats to avoid name collisions (for example, with WhizzyTeX). 2002-08-14 David Kastrup * Release 0.7.3 * preview.el (preview-auto-cache-preamble): Renamed from preview-dump-default. Make the default 'ask: that way people will be hard put to overlook this feature, but are not stuck on it in case it causes trouble. Perhaps will make them read the manual, too, in order to set this to T. (preview-map): Use preview-cache-* (preview-cache-preamble, preview-cache-preamble-off): renamed from preview-dump-*. * doc/preview-latex.texi (Keys and lisp): Rename preview-dump-format and its ilk to preview-cache-preamble. (Simple customization): Mention automatic preamble caching. 2002-08-13 David Kastrup * preview.el (TeX-inline-preview): Use set-process-coding-system only when Mule is active. (preview-document): Save document if necessary. (TeX-inline-preview): Some overhaul. (TeX-inline-preview-internal): Separated out so that region/format dumps don't interfere. * prv-xemacs.el (preview-mode-setup): See below. (preview-dump-threshold): See below. (preview-preamble-format-cons): File local variable for watching. (preview-preamble-check-change, preview-watch-preamble) (preview-unwatch-preamble): See below. (preview-handle-before-change): Call preview-preamble-check-change. * prv-emacs.el (preview-dump-threshold): Regexp ending dump. (preview-preamble-changed-function): New function. (preview-watch-preamble): New function. (preview-unwatch-preamble): New function. (preview-mode-setup): Check whether we open a watched file. * preview.el (preview-buffer): Move region exclusion into advice for TeX-region-create. (preview-dump-default): New variable, tells us whether we should dump formats automatically. (preview-dumped-alist): Semantics change. (preview-dump-format): Use watch functions from prv-*.el (preview-clear-format): new optional argument, save last wanted state. (TeX-inline-preview): Use preview-dump-default. 2002-08-07 Jan-Ake Larsson * autogen.sh: Fixed autoconf-fix message 2002-08-07 David Kastrup * preview-latex.spec (Release): Set to 9 (prerelease) (Requires): Add FAQ to docs. * doc/faq.texi: FAQ added. 2002-08-06 David Kastrup * prv-xemacs.el (preview-use-balloon-help): New boolean customization variable. (preview-mode-setup): Use it. * doc/preview-latex.texi (The Emacs interface): Document it. 2002-08-05 David Kastrup * latex/preview.dtx (subsection{Supporting conversions}): change default of \PreviewBbAdjust from 0.5bp to 0.50001bp. 2002-08-04 David Kastrup * preview.el (preview-back-command): New optional argument NOCOMPLEX. (preview-parse-messages): Use it for not skipping backwards over braced expressions when start and end of triggered errors match. 2002-08-03 David Kastrup * RELEASE: update RedHat distro info. * doc/preview-latex.texi: Remove documentlanguage setting: English is the default anyway, and declaring it breaks the broken TeXlive 7 texinfo distribution. * doc/todo.texi: Updates. * RELEASE: New leading commercial. 2002-08-01 Jan-Ake Larsson * doc/preview-latex.texi: Typo corrected 2002-07-31 David Kastrup * doc/Makefile.in (preview-latex/index.html, clean): clean out preview-latex directory for html-docs. * doc/problems.texi (Problems with GhostScript): document preview-gs-broken-security. * doc/preview-latex.texi: Bump version to 0.7.3. (The Emacs interface): Document changes in options. * doc/install.texi (Prerequisites): GhostScript problem info. * doc/Makefile.in (TEXIFILES): New macro. (preview-latex/index.html, preview-latex.dvi, preview-latex.info): Make dependency on TEXIFILES. (clean): remove INSTALL.windows * preview.el (preview-parsed-font-size) (preview-parsed-magnification): documented. (preview-hook-enquiry): Use value of symbol only if bound. (preview-document-pt-list): Correct customization type. 2002-07-30 David Kastrup * latex/preview.dtx (section{Package options}): document `lyx' option. * doc/wininstall.texi: New file documenting XEmacs/Windows, courtesy of Anthony Williams. 2002-07-29 David Kastrup * preview.el (preview-parsed-font-size) (preview-parsed-magnification): new variables set from preview.sty (preview-get-magnification): consults preview-parsed-magnification. (preview-gs-resolution): consult preview-get-magnification. (preview-gs-open): Delay setup of preview-gs-command-line (preview-gs-dvips-process-setup): complete it. (preview-hook-enquiry): New function. (preview-document-pt-list): Sources of document-pt. (preview-auctex-font-size): Previously preview-document-pt (preview-document-pt): Uses preview-document-pt-list (preview-scale-from-face): defer part of calculation. (preview-parse-variables): Variable list set from preview.sty (preview-parse-messages): Clear them at start of parse. (preview-parse-messages): New pattern for variable list. (preview-parse-messages): magnification for PS bounding box. (preview-parse-messages): Parse variables from preview.sty (preview-get-geometry): Use preview-hook-enquiry for call of preview-scale-function. 2002-07-28 David Kastrup * latex/preview.dtx (subsection{Preview attaching commands}): Fix \PreviewEnvironment* (subsection{Preview attaching commands}): Type out font size and magnification info at start of document. (subsection{Supporting conversions}): Take DVI magnification into account in `tightpage' option. 2002-07-26 David Kastrup * circ.tex: Demonstrate showlabels (and fix a math oversight). * latex/preview.dtx (subsection{The \texttt{showlabels} option}): Changes, different look, more robust. 2002-07-25 Jan-Ake Larsson * doc/problems.texi: Info on windows-xemacs 2002-07-25 David Kastrup * preview.el (LaTeX-preview-setup): Fix form of preview-entry in order not to confuse customize. 2002-07-24 David Kastrup * preview.el (TeX-inline-preview): Export buffer coding system to TeX process output encoding (for our Polish friends and others). Hope this does not break non-Mule XEmacsen if such are around. 2002-07-23 David Kastrup * preview.el (preview-image-creators): Change tiff device to use tiff12nc, which has a chance of working with the current settings, at the cost of large file sizes. 2002-07-23 Jan-Ake Larsson * doc/install.texi: Minor changes * doc/problems.texi: Documented GNU gs 7.05 security bug info 2002-07-22 David Kastrup * latex/preview.dtx (subsection{The \texttt{showlabels} option}): Make sanitization of labels more consistent and switch to typewriter font. 2002-07-19 David Kastrup * prv-xemacs.el (preview-mode-setup): Add preview menu. * prv-emacs.el (preview-mode-setup): Add preview menu. Why is it before the LaTeX menus? * preview.el (preview-map): Prefix-keymap. (LaTeX-preview-setup): Use it. 2002-07-18 David Kastrup * prv-xemacs.el (face-attribute): shift stuff to compile time. (preview-with-LaTeX-menus, preview-mode-setup): cosmetic changes. * preview.el (preview-LaTeX-command): Use Windows-friendly quoting. (preview-dump-command, preview-undump-command): Same here. 2002-07-16 David Kastrup * preview.el (preview-ps-quote): New function. (preview-prepare-fast-conversion): Use it. (preview-gs-transact): Use it. * latex/preview.dtx (subsection{The \texttt{auctex} option}): Output font size. (subsection{The \texttt{lyx} option}): New option. (subsection{Supporting conversions}): Write out tightpage dimensions before each change. (section{Various driver files}): generate prlyx.def. 2002-07-11 David Kastrup * preview.el (preview-gs-broken-security): New option specifying when to disable security. (preview-gs-open): Use it. Also abort more predictably if setpagedevice fails, usually due to broken security. 2002-05-28 David Kastrup * preview.el (LaTeX-preview-setup, preview-parse-messages): cater to abbreviated locator error message. (preview-clearout-at-point): New function. (LaTeX-preview-setup): add to menus and cleanup unnecessary flags. * latex/preview.dtx: replace "Package Preview Error" with "Preview": too many people got confused. * doc/preview-latex.texi (Simple customization): Document new auto-reveal default. (Simple customization): Document a better way for default options. * preview.el (preview-gs-open): bind preview-latex-do PostScript operator. (preview-auto-reveal): Change default to auto-open on move left/right. 2002-05-08 David Kastrup * doc/todo.texi: add request for other TeX formats. * preview.el (preview-parse-messages): There is little point in being more picky about ( than we are about ), since all that this buys us is bad nesting. * prv-emacs.el (preview-gs-get-colors): Warp outline borders to integral pixels in order to avoid antialiasing artifacts. 2002-05-06 * preview.el (preview-back-command): Changed semantics in order not to backstep over punctuation. (preview-get-geometry): Bad error message format. 2002-04-30 Jan-Ake Larsson * preview.el (preview-dump-format): Now checks if format has changed; if it hasn't, no new dump is made. * preview.el (preview-buffer): Changed to mirror the behaviour of TeX-region-create. This is probably the best we can do. 2002-04-29 Jan-Ake Larsson * preview.el (preview-buffer): allow it to work with format caching + added comment 2002-04-28 Jan-Ake Larsson * doc/preview-latex.texi: Document preview-clear-format and its keybindings * preview.el (preview-clear-format): new, also changed keybinding for it 2002-04-26 Jan-Ake Larsson * doc/preview-latex.texi: Documented preview-dump-format * preview.el: Cosmetic change in menu 2002-04-26 David Kastrup * preview.el (LaTeX-preview-setup): Menu entries and keybindings for preview-dump-format. (preview-dumped-list): New variable: dumped formats. (preview-dump-format): New command for pregenerating format files. (TeX-inline-preview): Use dumped format if present. (preview-dumped-list): Move. (preview-cleanout-tempfiles): Also kill format files. (preview-format-extensions): New variable for cleanup purposes. (TeX-inline-preview): preview-dumped-list contains expanded file names. 2002-04-24 Jan-Ake Larsson * problems.texi: Slight index change * preview-latex.texi (Keys and lisp): Added the menu entries 2002-04-23 Jan-Ake Larsson * autogen.sh: Test for unique file 'preview.el' in autoconf 2.13 2002-04-23 Alan Shutko * aclocal.m4 (AC_PATH_PROGS_REQUIRED): New. * configure.in: Lock in whole path of Emacs executable. 2002-04-23 David Kastrup * Release 0.7.2b * Makefile.in (preview-latex.el): Quickfix * Release 0.7.2 * preview.el (preview-buffer-restore-internal): Remove expired previews. (preview-reinstate-preview): set timestamp. 2002-04-22 Nix * doc/install.texi (Advice for non-privileged users): Add XEmacs-specific instructions. * aclocal.m4 (AC_EXAMINE_PACKAGEDIR): Locate an existing preview-latex package and install over it if found. (AC_PATH_PACKAGEDIR): Support ~/ in package directory names. 2002-04-22 David Kastrup * doc/install.texi (Advice for non-privileged users): new section. * configure.in: Quote TEXMFGEN. * doc/readme.texi (Getting started): mention the mouse buttons. 2002-04-21 Nix * prv-emacs.el: Remove comment regarding XEmacs's lack of local change hooks; it has them and we use them. * doc/problems.texi (XEmacs): Mention the process-liveness patch. Fix some grammar. Call the support `quite new' rather than `very new'. * configure.in (infodir): Define for XEmacs; point to the info location in the package tree. 2002-04-21 David Kastrup * preview.el (preview-parse-messages): Try a few changes making bad buffer-local interac shorten export format. Backward compatible. * prv-xemacs.el (preview-export-image, preview-import-image): shorten export format. Backward compatible. 2002-04-14 Nix * prv-xemacs.el (glyph-image-type): New, determine the image type of a glyph. (preview-export-image): Use it. * doc/problems.texi (XEmacs): Say that preview reinstating works with a new enough desktop.el. 2002-04-14 David Kastrup * prv-emacs.el (preview-export-image): New macro. (preview-import-image): New macro. * preview.el (preview-reinstate-preview): use preview-import-image. (preview-dissect): Use preview-export-image. * prv-xemacs.el (preview-export-image, preview-import-image): New functions for desktop.el. * doc/Makefile.in (preview-latex.info): In the interest of release sanity, add --no-split option so that we have to cater for just a single info file. Needs to be reverted later. * doc/readme.texi (Getting started): mention circ.tex here instead of installation.texi. * preview.el (preview-gs-filter): Don't remove from "Compilation" tag if just in filter routine. * patches/flyspell.patch, patches/mouse-drag.patch: update inflicted Emacs version number. * doc/problems.texi (Middle-clicks paste instead of toggling): Alas, those bugs persist into 21.2 although the CVS has had it fixed for half a year almost. "Stable release" policies. Ha. 2002-04-14 Nix * preview.el (preview-parse-messages): Typo and grammar fixes in comments. No longer wonder if XEmacs will like line-number regexps. * doc/problems.texi (XEmacs): Say that it works modulo core bugs and new desktop.el package. Point to the latest version of the core patch. Suggest trying under MS Windows. (GNU Emacs under Windows): Point out that preview-latex's not been tested under Windows with XEmacs, either. * doc/install.texi (Prerequisites): No longer describe XEmacs support as preliminary. Mention the Known Problems link. (Configure): Elaborate --with-packagedir. (Loading the package): Mention that most of these instructions are unnecessary for XEmacs, except if you used --with-packagedir. (Maybe should split into Emacs/XEmacs subsections?) 2002-04-14 Jan-Ake Larsson * install.texi: Added --with-xemacs * preview-latex.spec: Only require xemacs >= 21.1 2002-04-14 David Kastrup * doc/install.texi Added section for package providers, updated the links. * preview.el (preview-error-condition): New variable for last error condition. (preview-log-error): Error reporting routine. Logs to run buffer. (preview-reraise-error): At the end of routines, raise a true error with beep and whatever else is necessary to get attention. (preview-gs-sentinel, preview-gs-filter) (preview-gs-dvips-sentinel, preview-gs-transact): use it. (preview-gs-transact): Don't send to dead process. (preview-parse-messages): Use error logger. (preview-TeX-inline-sentinel): Same here. (TeX-inline-preview): Catch initialization errors and abort. Good for people without graphic display. 2002-04-13 Jan-Ake Larsson * preview-latex.spec: Repair RedHat XEmacs braindamage * preview-latex.texi: Document new keybindings 2002-04-13 Nix * prv-xemacs.el (preview-compatibility-macros): Bind the final list of compiled macros into the bytecode at the end of compilation. 2002-04-13 David Kastrup * prv-xemacs.el (preview-make-clickable): Revert changes. (preview-auto-reveal): revert default: reveal.el might be loaded after preview.el, and we still want the default to follow reveal-mode in that case. 2002-04-13 Nix * prv-xemacs.el (preview-nonready-icon): Give a reasonable error if the icon doesn't exist. (preview-error-icon): Likewise. (preview-icon): Likewise. (preview-make-clickable): Set `isearch-open-invisible' on new clickable regions. (preview-toggle): Likewise. (preview-auto-reveal): Only track reveal-mode if reveal-mode is defined. If reveal-mode' is not defined, the default should be nil. (isearch-highlight): Make a protected, disabled advisement by default. (replace-highlight): Never exists; don't bother to advise. (preview-query-replace-reveal): Turn on the isearch-highlight advisement. * doc/todo.texi: Update XEmacs status: most things are now done. 2002-04-13 David Kastrup * preview.el (preview-next-border): Fix a weird error where regions beyond the file were demanded. (preview-at-point): Include previews immediately before point for toggling. * prv-xemacs.el (preview-toggle): Make isearch open the invisible stuff, and make isearch-invisible track invisible so that isearch will not "restore" things improperly. (preview-move-point): isearch is manipulated by advising isearch-highlight. No need to check here for isearch-mode. (defadvice): only advise replace-highlight if defined. * latex/preview.dtx (subsection{The \texttt{showlabels} option}): hotfix for strange label names. * preview.el (preview-disable): Go via toggle for disabling strings. * prv-xemacs.el (preview-mode-setup, preview-marker) (preview-temporary-opened, preview-mark-point) (preview-auto-reveal, preview-move-point, preview-open-overlays) (replace-highlight, preview-query-replace-reveal) (preview-change-list, preview-register-change) (preview-check-changes, preview-handle-before-change) (preview-handle-after-change): Do the whole fake-intangibility and change detection shmeer. isearch does not work yet. 2002-04-12 David Kastrup * preview.el (LaTeX-preview-setup): call preview-mode-setup and/or put it in LaTeX-mode-hook. (preview-buffer, preview-document, LaTeX-preview-setup): New commands, keybindings, menu entries. Things are now more orthogonal and you do no longer need C-c C-c and their ilk (though still supported): we have the commands all accessible via C-c C-p now. (preview-dsc-parse): Make DSC parsing more robust. * prv-xemacs.el (preview-mode-setup): New function. Enable balloon help. * prv-emacs.el (preview-toggle): Move hook setup to preview-mode-setup. (preview-mode-setup): New function. (preview-mark-active): make macro. * Makefile.in: New icons. * images/preverr.xbm, images/preverr.xpm: New icons. * prv-emacs.el (preview-error-icon): New icon. * preview.el (preview-mouse-open-error): Use other call conventions in order not to confuse XEmacs. (preview-gs-flag-error): switch to using error icon. (preview-error-face): deleted. * prv-xemacs.el (preview-error-icon): New icon. (preview-make-clickable): new properties preview-balloon-help and preview-keymap. (preview-click-reroute): changed to use preview-keymap. (preview-reroute-map): new function. (preview-balloon-reroute): new function. (preview-toggle): change the juggling. * doc/preview-latex.texi (Simple customization): expound on the center example. 2002-04-11 Jan-Ake Larsson * preview-latex.spec: Adjustments for xemacs * doc/preview-latex.texi: Reinstate (reverse) textmath hint 2002-04-11 David Kastrup * preview.el (preview-environment, preview-parse-messages): byte compiler warnings. (preview-buffer-restore-internal): basically the previous preview-buffer-restore. (preview-buffer-restore): delay resinstating previews vie desktop-delay-hook. * prv-xemacs.el (face-attribute): Try getting calculation of :height more correct. (preview-inherited-face-attribute): Make a macro. * prv-install.el (preview-make-package): Avoid Emacs unnecessarily loading all command line arguments as files. * prv-xemacs.el (preview-click-reroute): New routine to discriminate between clicks on glyphs or else. (preview-make-reroute): Generate a reroute map from original glyph clickable keymap. (preview-toggle): use the rerouter. 2002-04-10 Jan-Ake Larsson * doc/preview-latex.texi: Added hint on getting custom environments previewed due to John Jones, remove the textmath hint * latex/.cvsignore: New * .cvsignore: Changed due to the 'latex' subdir * patches/x-symbol.patch: Removed * preview-latex.spec: Simplifications from using a 'latex' subdir * doc/Makefile.in: Use mkinstalldirs 2002-04-10 David Kastrup * preview.el (preview-default-option-list): set textmath per default. * latex/README-preview: update to reflect added file footprint from preview.dtx 2002-04-10 Jan-Ake Larsson * Makefile.in: Move the texmf part to latex/Makefile.in, fix the 'clean' target * configure.in: preview.dtx has moved, generate latex/Makefile * doc/Makefile.in: preview.dtx has moved * latex/README-preview, README-preview: Renamed README-preview to latex/README-preview * latex/bootstrap.ins, bootstrap.ins: Renamed bootstrap.ins to latex/bootstrap.ins * latex/preview.dtx, preview.dtx: Renamed preview.dtx to latex/preview.dtx * latex/Makefile.in: Move latex style to subdir, Typo corrected 2002-04-10 David Kastrup * prv-xemacs.el (face-attribute): GNU Emacs calculates face heights differently. (preview-replace-active-icon): For now do the full inefficient stuff. Working this out later should be easy. XEmacs now displays previews, but that's about all. (preview-button-1, preview-button-2): define as XEmacs buttons (preview-make-clickable): make balloon-help something that balloon-help-mode understands. 2002-04-09 Nix * prv-xemacs.el: Remove crufty destructive-copy stuff. (map-plist, destructive-replace-glyph, copy-glyph): Removed. (preview-replace-active-icon): Just set the new image property rather than destructively copying it. 2002-04-09 Nix * prv-xemacs.el (preview-nonready-icon): Fix baseline. (preview-icon): Likewise. Bug fixes: (destructive-replace-glyph): Don't confuse `new-glyph' and `glyph'. Sync with prv-emacs changes: (propertize): Create zero-length extents if possible. (preview-image-from-icon): Removed. (preview-string-from-image): Removed. (preview-replace-icon): Removed. (preview-nonready-copy): New, simple as anything. (preview-replace-active-icon): New, albeit apparently broken. (preview-make-clickable): Handle glyphs as well as strings. (preview-toggle): Clickable glyphs are now always on the `end-glyph'. 2002-04-09 David Kastrup * prv-emacs.el (preview-nonready-copy): replaces preview-image-from-icon (preview-replace-active-icon): replaces preview-replace-icon (preview-make-clickable): make preview-string-from-image unnecessary. * preview.el (preview-gs-place): Don't return image, just enter it. (preview-gs-transact): Call preview-replace-active-icon specialized routine instead of the more general hack used before. (preview-disabled-string): kill preview-string-from-image (preview-inactive-string): same here. (preview-eps-place): change in place semantics as above. (preview-active-string): Don't receive image argument. (preview-place-preview): New place semantics. * doc/problems.texi (x-symbol interoperation): Bump recommended version to 4.2.2. (Middle-clicks paste instead of toggling): Mention fixes present in Emacs-21.2. (Middle-clicks paste instead of toggling): Mention isearch. 2002-04-09 Jan-Ake Larsson * preview-latex.spec: Install icons * doc/preview-latex.texi: Put Nick in authors, slight other changes * doc/problems.texi: Added entry on fast conversion and bounding boxes * doc/todo.texi: Added manual stuff 2002-04-08 David Kastrup * doc/todo.texi: New suggestion for manual. * doc/readme.texi (Getting started): Adapt text to new icons. * doc/preview-latex.texi (The Emacs interface): Add documentation about the scaling variables/issues from preview-latex. 2002-04-07 David Kastrup * preview.el (preview-parse-messages): Error message cosmetics and a judicious save-excursion for fast hooks. * prv-emacs.el (preview-nonready-icon): Use new icons. (preview-icon): Same here. 2002-04-07 Nix * prv-install.el (preview-make-package-xemacs): Revert last change; package version numbers must be integral. Ensure that we get a valid integer even if `preview-version' contains multiple periods. 2002-04-07 David Kastrup * images: Icons, several revisions. 2002-04-06 Nix * prv-install.el (preview-make-package-xemacs): Prepend "0." to XEmacs package version numbers for CVS versions of preview.el. * prv-xemacs.el (preview-icon,preview-nonready-icon): Use new icon images. * Makefile.in (ICONFORM,ICON_XPM_SOURCES): New variables, for icon installation. (ICON_XBM_SOURCES,ICON_SOURCES,icondir): Likewise. (ELCC): Include the ICONFORM. (install-icons): New, install the icons. (MKINSTALLDIRS): New (for later, when objdir!=srcdir support is added). (install): Use it. (install-el): Likewise. (install-texmf): Likewise. (install-texmf-doc): Likewise. * configure.in (icondir): Set for GNU Emacs too (but blank), and substitute it. (ICONFORM): New variable, comamnd-line switch to pass to (X)Emacs to find the images at build time (if needed). Substitute it. * mkinstalldirs: New file, from automake-1.6. 2002-04-06 Nix * doc/todo.texi: Update XEmacs status. * configure.in: Substitute the packagedir. * Makefile.in (packagedir): New variable, used by... (install-el): ... this new package-installation handling. * prv-install.el: New file, containing... (preview-make-package): New function. (preview-make-package-xemacs): New function, derived from emacs-w3m. * aclocal.m4 (AC_EXAMINE_PACKAGEDIR): Lowercasify PACKAGEDIR. (AC_PATH_PACKAGEDIR): Likewise. 2002-04-06 Alan Shutko * configure.in: Start adding XEmacs-specific hooks. Right now, lispdir should be correctly set up, I think. icondir is sitting there for when we add icons. * aclocal.m4 (AC_PATH_PACKAGEDIR,AC_EXAMINE_PACKAGEDIR): New functions for XEmacs installation, borrowed from from emacs-w3m, credit to Katsumi Yamaoka . 2002-04-06 Jan-Ake Larsson * autogen.sh, doc/Makefile.in, doc/preview-latex.texi: Include todo.texi * doc/todo.texi: Moved from TODO * TODO: Moved to todo.texi 2002-04-05 David Kastrup * preview.el (preview-parse-messages): Another addition to the fast location hook semantics. (preview-parse-messages): one last change for Christoph. * prv-emacs.el (preview-add-urgentization): Cosmetic change. * Additional frobbing of urgentization. 2002-04-05 Nix * prv-xemacs.el (preview-add-urgentization): Use `set-extent-initial-redisplay-function' to force immediate redisplay if already on-screen. (preview-remove-urgentization): Likewise. 2002-04-05 David Kastrup * prv-xemacs.el (preview-remove-urgentization): proper return value. (preview-add-urgentization): Make entry in initial-redisplay-function easier to reextract for preview-remove-urgentization. * TODO: small changes. 2002-04-04 Nix * preview.el (preview-parse-messages): Cater for XEmacs shy grouping bug (shy grouping very nearly doesn't work in XEmacs-21.4...) * prv-xemacs.el (match-string-no-properties): New, same as `match-string'. (set-buffer-multibyte): Degenerate implementation. (face-attribute): Throw an error of the right error class. (make-temp-file): Likewise. (preview-add-urgentization): Revise signature, as in prv-emacs. (preview-with-LaTeX-menus): Do not copy useless menus around. (preview-string-from-image): Make obvious that this generates any kind of glyph, not just begin-glyphs. (preview-ps-image): Revise signature (but implementation is still stubbed). (preview-toggle): Revise signature slightly. Flip between begin and end-glyphs to partially cater for XEmacs redisplay bug. 2002-04-04 David Kastrup * preview.el (preview-gs-dvips-process-setup): Correct deletion of dvi file. (preview-dvips-abort): don't unnecessarily clean subdirs. (preview-gs-dvips-sentinel): get the delete semantics right. (preview-gs-close): same here. (preview-delete): after deleting files, set files in overlay to nil since in connection with urgentization we can get multiple deletions. (preview-parse-messages): initialize lfile to "", so that line number caching does not fail when the filename is "nil". (preview-parse-messages): AAAAAARGGG!!!. Fix the typo that caused O(n^2) parsing time. 2002-04-03 David Kastrup * preview.el (preview-gs-close): move. (preview-gs-dvips-process-setup): New function for setting up process just at the time of use. (preview-dvips-abort): New function. (preview-gs-dvips-sentinel): Overhaul. (preview-gs-close): Overhaul in order to do the right thing regardless of whether Dvips has finished or not. (preview-eps-open): Some initial changes. 'postscript image device likely to be broken by us (but it is broken in Emacs, anyway). (preview-parse-messages): Take `open-closure' as argument. (preview-parse-messages): different hook semantics for fast hooks. We are still in negotiations over this... (preview-parse-messages): change parsestate to list of vectors. 2002-04-03 Jan-Ake Larsson * doc/preview-latex.texi: documented showlabels * doc/install.texi, doc/readme.texi: Slight edits * doc/problems.texi: Document x-symbol.patch, slight other edits * patches/x-symbol.patch: Initial version * preview-latex.spec: Use texmfdir, slight other edits 2002-04-03 Jan-Ake Larsson * preview-latex.spec: Use texmfdir, slight other edits 2002-04-02 Jan-Ake Larsson * aclocal.m4: escaped usage of $texmfdir 2002-04-01 Jan-Ake Larsson * Makefile.in: added texmf and elisp targets, also targets for $TEXMFGEN * preview-latex.spec: Initial stab at triple-rpm spec * doc/Makefile.in: *.dvi and *.info cleaned again * preview-latex.spec: Typo corrected 2002-04-01 David Kastrup * preview.el (LaTeX-preview-setup): Remove our own TeX-translation-hook that did not really work (supposed to remove Preview error messages from preview runs, but for document problems you'd rather use the real run, anyhow). (preview-parse-messages): remember directory when switching buffers. Implement fast translation hooks. A pity nobody uses them yet. (TeX-inline-preview): Use TeX-run-command instead of TeX-run-format: we miss out on the progress info in the mode line, but it slowed down the filter routine. * preview.dtx (subsection{The \texttt{auctex} option}): Make the error messages shorter to cut down on I/O time. 2002-03-31 David Kastrup * preview.el (preview): add cross links. * Makefile.in: Rerun LaTeX to get references right. * preview.dtx (subsection{The \texttt{auctex} option}): Disable \thanks and \and. * preview.el (preview-default-option-list): Update possibilities and docs. (preview-parse-messages): Don't do files not known to be human-generated. (preview-gs-queue-empty): New cleanout function. We use this instead of just clearing preview-gs-queue in order to avoid losing pointers to deletable temporary files. (preview-gs-sentinel): Use it. (preview-gs-close): Same here. (preview-gs-open): And here. Use unwind-protect in order to ascertain we process the queue. (preview-prepare-fast-conversion): Accept non-dereferenced big ps file. (preview-gs-dvips-sentinel): better behavior when processes get started and finished in unexpected orders. 2002-03-31 Jan-Ake Larsson * preview-latex.spec: Changed to include everything in /texmf/tex/latex/preview, fix for %config files 2002-03-30 David Kastrup * doc/preview-dtxdoc.pl, preview.dtx (section{Various driver files}): Add \previewlatex macro for consistent translation. * doc/preview-dtxdoc.pl: add \% and ~ translations. * preview.dtx (section{Package options}): document new option files. * doc/problems.texi (x-symbol interoperation): Mention speed problem. * preview.dtx: loads of smaller and larger changes, new options files. * preview.el (preview-back-command): typo. * autogen.sh (makeinfo): move into doc directory for autogenerating files so that include files are found. 2002-03-30 Jan-Ake Larsson * doc/Makefile.in: New dependency on macros.texi * doc/install.texi, doc/readme.texi, doc/copying.texi: Macros in separate file * doc/problems.texi: Typo corrected, macros in separate file * doc/preview-dtxdoc.pl: Changed slightly wrt \cmd translation * doc/macros.texi: Macros for the texinfo generation * doc/preview-latex.texi: Typos corrected, macros in separate file. 2002-03-30 Alan Shutko * Makefile.in (TEXMFGEN): Use new variable. * configure.in (TEXMFGEN): New variable with the tex stuff generated which should be installed. 2002-03-29 David Kastrup * preview.el (preview-back-command): Change call semantics to something easier to understand and try out. (preview-parse-messages): Remove unused variable `next-point'. (preview-parse-messages): Correct thinko and use new preview-back-command semantics. 2002-03-28 David Kastrup * preview.dtx: move \pr@ship@start * preview-latex.spec (%configure): Use --with-texmf-dir. 2002-03-27 Alan Shutko * doc/install.texi (Configure): Reflect changes in configure options. * configure.in (--with-texmf): Changed to --with-texmf-dir per bug 480837. (--with-preview-dir): Changed to --with-tex-dir per bug 480837. (--with-doc-dir): New. 2002-03-28 David Kastrup * circ.tex: Correct labels. 2002-03-27 David Kastrup * preview.dtx: be careful in unboxing so as not to remove possibly shifted hboxes (bug reported by Jan-ke) protected by an otherwise inexplicable penalty. * preview.el: Complete overhaul of parsing to avoid (costly) buffer switches. (preview-gs-close): Transfer queue to preview-gs-queue. (preview-gs-open): Pass arglist to preview-parse-messages for place functions. (preview-eps-open): Same. (preview-gs-place): Completely different args in order to avoid buffer switching. Different return value. (preview-inactive-string): Different semantics (were valid before by accident, so no change in callers necessary). (preview-eps-place): Rearranged to avoid buffer switching. (preview-make-filename): require tempdir. (preview-delete-file): changed API to avoid buffer switching. (preview-place-preview): Same. (preview-parse-messages): New args passed into place routines. Completely rearranged and merged preview-analyze-error into it. (preview-start-dvips): Pass tempdir to preview-make-filename * prv-emacs.el (preview-add-urgentization): Changed API, but it turns out this gets called just like it did before. 2002-03-27 Jan-Ake Larsson * doc/.cvsignore: Ignore preview-dtxdoc.texi * doc/Makefile.in: Autogeneration of ../preview.dtx -> preview-dtxdoc.texi * doc/preview-dtxdoc.pl: Initial version * doc/preview-latex.texi: Moved menu to problems.texi, documented preview-auto-reveal and preview-inner-environments, include autogenerated preview-dtxdoc.texi * doc/problems.texi: Moved menu here from preview-latex.texi * doc/readme.texi: Removed out-commented parts 2002-03-26 Jan-Ake Larsson * preview.dtx: Minimal change to simplify autogen of texinfo manuals 2002-03-26 Alan Shutko * doc/.cvsignore: Add preview-latex.tmp. * .cvsignore: Add latex.out. * autogen.sh: Modify ed script to account for difference between AC_INIT in 2.13 and 2.52 * doc/Makefile.in (INSTALLINFO): Make it use configure value. * configure.in: Check for path of install-info. Check whether Emacs supports images. 2002-03-26 David Kastrup * TODO (Integrate into RefTeX): bemoan another shortcoming, or rather feature wish. 2002-03-25 David Kastrup * preview.el (preview-gs-dvips-sentinel): Treat absence of previews in buffer more graciously. (preview-parse-messages): require space before !name and !offset tags from AUC TeX. * prv-emacs.el (preview-auto-reveal, replace-highlight) (preview-query-replace-reveal): moved. * preview.dtx (subsection{The internals}): Remove spurious space via \vsplit. (subsection{The internals}): Set \deadcycles to avoid TeX interfering with our \output fake. (subsection{Selection options}): Implement hooking into equations differently. Somewhat ugly hack to circumvent amslatex/3425 bug. (subsection{Preview attaching commands}): keep \showboxbreadth and \showboxdepth operative, though set to minimal values. (\cmd{\everypar}): Cater for ugly LaTeX commands that hide things like the startup code of \paragraph in \everypar. * doc/problems.texi (x-symbol interoperation): Update Web address. * doc/readme.texi (Contacts): Remove personal Email address from README. 2002-03-24 Jan-Ake Larsson * doc/install.texi: Incorporated "Prerequisites" from readme.texi * doc/preview-latex.texi: Moved "Getting started" to readme.texi, also index changes * doc/readme.texi: Moved "Getting started" from preview-latex.texi, moved "Prerequisites" to install.texi, Placed appropriate pointers and crossreferences in README and other manuals 2002-03-24 David Kastrup * RELEASE: Info about RedHat 7.3 beta. * preview.dtx (subsection{The internals}): Spacing improvements. * prv-emacs.el (replace-highlight): advise so that query-replace works as reasonable. (preview-query-replace-reveal): Option to make this customizable. 2002-03-23 David Kastrup * prv-emacs.el (preview-toggle): get rid of isearch-open-invisible hooks and stuff; using the invisible property was confusing to the display engine, anyhow, and was about to be broken by changes in Emacs. The current behavior for isearch is nicer than the default was before, so what. (preview-auto-reveal): New customizable option. * doc/problems.texi (Emacs problems): Windows availability for CVS Emacs. * doc/readme.texi: Windows availability for CVS Emacs. * preview.el (preview-parse-messages): Comment used regexps. * preview.dtx (subsection{The internals}): Removed an \everypar that caused bad spacing. No idea why. Redundant anyway. (subsection{Selection options}): changed displaymath option to put in the \everydisplay tokens at a theoretically more correct place. Explicitly hooked equation and equation*: AMSLaTeX calls them too late to have them behave well. (subsection{Preview attaching commands}): Corrected \PreviewEnvironment which must have led to error messages for months. Seems nobody cares. (subsection{Selection options}): Still more displaymath cosmetics. 2002-03-22 David Kastrup * preview.dtx (section{The Implementation}): fix typo in dvips option. Ugh. * preview.el (preview-bb-filesize): move to preview-gs group. (LaTeX-preview-setup): add bug reporter. (preview-report-bug): update reported options. 2002-03-22 Jan-Ake Larsson * doc/preview-latex.texi (preview-environment): doc rewrite. Slight other layout changes 2002-03-22 David Kastrup * doc/problems.texi: Edits. * doc/install.texi: Lots of editing * doc/readme.texi: same here * doc/preview-latex.texi: same here * RELEASE: Changes for 0.7. * TODO: Throw out stuff already implemented. * preview.el (preview-prefer-TeX-bb): Doc cosmetic. (preview-fast-conversion): Now defaults to on. (preview-fast-dvips-command): remove -tletter option, we do this better now. (preview-LaTeX-command): Pass new dvips option to preview. * preview.dtx (section{Package options}) (section{The Implementation}): Add dvips option for overriding page dimensions/landscape and such stuff. * preview.el (preview-TeX-bb): comment sanitized. (preview-gs-init-string, preview-ps-file, preview-gs-dsc): new variables. (preview-fast-conversion): Set this customizable variable for an impressive speedup, particularly of the DviPS pass. (preview-dvips-command): moved. (preview-fast-dvips-command): New command for fast conversion. (preview-gs-restart): send initialization string to gs (preview-gs-open): initialize preview-gs-init-string (preview-gs-open): pass preview-fast-conversion into preview-start-dvips (preview-dsc-parse, preview-gs-dsc-cvx) (preview-prepare-fast-conversion): New functions for using DSC comments. (preview-gs-dvips-sentinel): read DSC in. (preview-gs-place): remember snippet in 'queued property. (preview-mouse-open-eps): allow opening at position. (preview-gs-flag-error): take preview-gs-init-string into account, generate other message for fast PS conversion. (preview-gs-transact): allow non-empty stack in prompt, use preview-latex-do command in GhostScript. (preview-place-preview): comment correction, no eps file if ps generated. (preview-analyze-error): doc change. (preview-start-dvips): allow for fast version. * prv-emacs.el (preview-ps-image): Allow optional bounding box from TeX. 2002-03-21 David Kastrup * preview.dtx (subsection{Preview attaching commands}): Backward compatible message with TeX bounding box. * preview.el (preview-parse-messages): Backward compatible message parsing. * preview.dtx (subsection{The internals}, subsection{Preview attaching commands}): provide additional bounding box info. (subsection{The internals}): move location of \pr@shipend to before shipping out \pr@box so that we may measure/change it. (subsection{Selection options}): slightly changed call of old \everydisplay hook. (subsection{Preview attaching commands}): disable more warnings in order to decrease possible parse errors of preview.el. * preview.el (preview-prefer-TeX-bb): New option to fish bounding box from TeX output. Not enabled by default until we get to fix a particular problem occuring with split environment nested in equation. (preview-TeX-bb-border): Additional slop around bounding box. (preview-TeX-bb): New function to calculate PostScript bb from TeX box dimensions in sp. (preview-gs-place, preview-eps-place, preview-place-preview): accept additional box argument. (preview-gs-transact): consider more box sources. (preview-delete-file, preview-make-filename): new semantics for reference-counting files. (preview-parse-messages, preview-analyze-error): Parse additional bounding box information from AUC TeX run. 2002-03-20 Nix * prv-xemacs.el (preview-with-LaTeX-menus): Handle the case where the current menubar is not the AuCTeX one. Remove dead code. 2002-03-19 Nix * preview.dtx: Doc fix. * preview.el: Require `reporter'. * preview.el (preview-image-creators): Doc extension. * preview.el (preview-eps-place): Doc fix. * preview.el (preview-analyze-error): Likewise. * preview.el (preview-gs): Grammar fix. * preview.el (preview-face): Likewise. * preview.el (preview-temp-dirs): Layout fix. * preview.el (preview-environment): Grammar and layout fix. * preview.el (preview-mouse-open-eps): Cater for XEmacs's more limited PostScript mode. * preview.el (LaTeX-preview-setup): Use `preview-mark-active' to cater for Emacs/XEmacs active-region detection differences. * prv-emacs.el (preview-nonready-icon): Doc fix. * prv-emacs.el (preview-image-from-icon): Likewise. * prv-emacs.el (preview-mark-active): New. * prv-xemacs.el (preview-gs-color-value): New, from prv-emacs.el. 2002-03-19 Nix * prv-xemacs.el: Require overlay always, not just at compile time. (preview-compatibility-macros): Define only when compiling. (preview-defmacro): Likewise. Teach Emacs to indent this form properly. Code to compensate for features missing in XEmacs: (face-attribute): Teach how to fake :foreground and :background. (find-image): Remove. (defimage): Likewise. There's no need for this call here; even if there were, the image-type analysis should take place at instantiation time, not definition time. (easy-menu-create-menu): New, after the Emacs function. (next-single-char-property-change): Likewise. (previous-single-char-property-change): Likewise. (with-temp-message): Likewise. (add-to-list): Likewise, redefining the two-argument XEmacs version. (copy-glyph): New, uses... (destructive-replace-glyph): ... this. New (and ugly). Uses... (map-plist): ... this. New, `map' for property lists. Code derived from prv-emacs.el: (preview-mark-active): New, handle the special XEmacs `mark-is-nil' case. (preview-create-icon): New. (preview-icon): XEmacsize from commented-out code; reindent. (preview-nonready-icon): Likewise. (preview-add-urgentization): Add docstring. (preview-add-urgentization): Likewise. (preview-image-from-icon): New. (preview-string-from-image): Likewise. (preview-make-clickable): Likewise. (preview-ps-image): Likewise. (preview-toggle): Likewise. (preview-inherited-face-attribute): Likewise. (preview-with-LaTeX-menus): Likewise. (preview-gs-get-colors): Likewise. (provide): Add. 2002-03-16 David Kastrup * doc/install.texi: Work in progress. * doc/readme.texi: Work in progress. * TODO: update wish list. This is getting longer by the minute. * doc/Makefile.in (INSTALL, README, PROBLEMS): add -D rawfile option for raw text files. * doc/readme.texi: documentation restructuring for making README good on preinstalled systems. * autogen.sh (makeinfo): add -D rawfile option for raw text files 2002-03-15 David Kastrup * preview.dtx (subsection{Preview attaching commands}): disable \showmaxdepth and \showmaxbreadth. * preview.el (preview-place-preview): (widen) paranoia. (preview-back-command): same here. (LaTeX-preview-setup): better safe than sorry (users might call this wrong), so rerequire 'latex (preview-parse-messages): New regexp parser. Nick, if the shy groups \(?: ...\) worry XEmacs, make them non-shy and adjust the match-... thingies appropriately. (preview-analyze-error): and another save-restriction... 2002-03-14 David Kastrup * preview.el (preview-parse-messages): Obliterate preview-snippet and preview-snippet-start for general parsestate. (preview-analyze-error): Use parsestate and cache line number info from last call. This plugs a *big* performance hog (goto-line). Made buffer parsing here about 8 times faster. 2002-03-13 David Kastrup * preview.dtx (subsection{The internals}): Use \@arrayparboxrestore for better reset of spacing. * preview.el (require): avoid compiler warning. (preview-goto-info-page): new function (LaTeX-preview-setup): add preview-goto-info-page binding (info): add preview prefix for C-h F lookup (LaTeX-preview-setup): add documentation and customization menu. 2002-03-11 David Kastrup * Release 0.6.1 2002-03-10 David Kastrup * Makefile.in: Add preview.ins target. * doc/install.texi: Brown paper bag. * autogen.sh: don't prebuild doc. We offer a separate download archive for people without texinfo. * preview-latex.spec (BuildRequires): changes for 0.6.1. * doc/install.texi: Some changes for 0.6.1. * RELEASE: Some adjustments for 0.6.1. 2002-03-09 David Kastrup * preview.el (LaTeX-preview-setup): Use preview-with-LaTeX-menus. * prv-emacs.el (preview-with-LaTeX-menus): New function temporarily making menus active. This is quite different for XEmacs. 2002-03-09 Nix * doc/preview-latex.texi: Minor typo fixes. * doc/problems.texi: Likewise. 2002-03-09 David Kastrup * preview.el (LaTeX-preview-setup): Deal with the easy-menu sickness so that XEmacs might work. (LaTeX-preview-setup): (require 'latex) unnecessary, we get called only if the feature has been loaded already. 2002-03-08 Alan Shutko * configure.in: When checking for texhash, use /bin/true if we can't find it. 2002-03-08 David Kastrup * doc/problems.texi (Emacs problems), doc/readme.texi: some brighter outlook with regard to XEmacs port. * preview.el (preview-gs-transact): Throw in the towel. We don't use .runandhide (and .setsafe) unless we are dealing with gs with a version of at least 7.00. gs-6.53 seems to provide .runandhide, while making it useless because save .setsafe restore does not return to unsafer mode. 2002-03-05 David Kastrup * RELEASE: Few changes and explanations for 0.6.1. * doc/problems.texi (Font problems with Dvips): Changed pounds sign. Not much of an improvement (we get the wrong character), but 7bit safe. If Jan-ke finds this as desirable as to have his own name mangled, we should follow at least make it pay off. * doc/preview-latex.texi (On EPS previews): png16m is default instead of png256. * doc/install.texi: Document 8bit problems. * README.CVS: updated. * configure.in: update to autoconf 2.52. * autogen.sh: Wheedle MY_LANG and MY_LC_CTYPE in if autoconf failed to do so. * preview.el: copyright extended. Basically overhaul of persistent data, leads to: (preview-disable): clear timestamp. (preview-delete): Don't fiddle with ovr after it is already deleted. (preview-clearout): additional argument timestamp (preview-kill-buffer-cleanup): New function for killing buffers: properly time-stamped previews will not get their files deleted. (kill-buffer-hook): use it (before-revert-hook): use it (desktop-buffer-preview-misc-data): changed dissect call, work only if buffer unmodified. (preview-dissect): work with timestamp, don't destroy preview. (preview-buffer-restore): new function, works from saved data. (desktop-buffer-preview): use it. (preview-cleanout-tempfiles): Do things differently. (LaTeX-preview-setup): Call preview-buffer-restore if we accidently got here before setting up the desktop hooks. 2002-03-04 David Kastrup * doc/preview-latex.texi (Package options): doc changes, psfixbb documented. * doc/problems.texi: doc changes. * doc/readme.texi: doc changes (@AUCTeX). * doc/install.texi: doc changes. * doc/preview-latex.texi: some documentation amendments. * preview.el (preview-dissect): improve false desktop cleanups. (desktop-buffer-preview): handle file load oneself. (preview-place-preview): subtle bug leading to empty previews accumulating in secondary buffers. (preview-reinstate-preview): don't reinstate previews where the files have been deleted. (preview-TeX-inline-sentinel): Make sure "Compilation" flag gets cleared even on errors. (preview-environment): Doc change. (desktop-buffer-preview-misc-data, preview-dissect) (desktop-buffer-preview, preview-cleanout-tempfiles) (preview-active-string, preview-reinstate-preview) (preview-default-preamble): Doc corrections/additions. 2002-03-02 David Kastrup * preview.el (preview-gs-transact): Don't use .setsafe unless .runandhide is defined. There might be no way back to unsafer mode otherwise. (preview-create-subdirectory): Be more forgiving about users messing up the directory organization of preview-latex, by manually deleting stuff under its control. 2002-03-01 David Kastrup * preview.el (preview-default-option-list): add new options. * preview.dtx: add new package option psfixbb for getting better bounding boxes in the presence of PStricks and the like. 2002-02-28 David Kastrup * preview.el (preview-inner-environments): New variable for avoiding ugly environments. (preview-environment): Accept a count, and avoid bad environments. (preview-section): Doc string fixed. 2002-02-26 David Kastrup * preview.el (require): suppress desktop warnings (preview-clearout): restrict to narrowed area. (desktop-buffer-preview-misc-data): widen. (preview-dissect): don't use subseq from cl-extra, rather butlast from subr. (preview-cleanout-tempfiles): new routine used in kill-emacs-hook (preview-reinstate-preview): setup kill-emacs-hook late so that preview-cleanout gets called after desktop saving (preview-create-subdirectory): same here 2002-02-25 David Kastrup * preview.el (TeX-active-tempdir): Changed the type. (preview-gs-dvips-sentinel): adjusted for that. (preview-gs-place): queued is now missing image (preview-gs-transact): that is in overlay property preview-image instead. (preview-gs-transact): adapt to new queued (desktop-buffer-preview-misc-data): save overlays when leaving desktop. (preview-dissect): gets details from overlay. (desktop-buffer-preview): restore overlays on reentry (kill-emacs-hook): must be run after desktop hook. (preview-active-string): gets passed image instead of snippet. (preview-make-filename): New TeX-active-tempdir type (preview-delete-file): same here (preview-place-preview): adapt to new preview-active-string (preview-reinstate-preview): new function for restoring a preview (preview-create-subdirectory): new TeX-active-tempdir type 2002-02-24 Jan-Ake Larsson * doc/preview-latex.texi: Incorporated docs from preview.dtx, minor other changes 2002-02-20 Jan-Ake Larsson * doc/preview-latex.texi: Removed isolatin1 style include and chars 2002-02-20 Alan Shutko * configure.in: Patch from Stephen Gildea correcting the disable-8bit-test code. 2002-02-19 Jan-Ake Larsson * Created 0.6b, which includes .info and .dvi manuals * doc/Makefile.in: Removed .info and .dvi from 'clean' target 2002-02-19 David Kastrup * Release 0.6 2002-02-19 Jan-Ake Larsson * Makefile.in: Changed target 'doc' to 'docs'. 'doc' matched the (unchanged) directory 'doc'. * preview-latex.el: Startup file for site-start.d * preview-latex.spec: Added site-start.d support and prauctex.cfg config file 2002-02-19 David Kastrup * preview.dtx: Oops, prauctex.cfg inadvertantly overrode a possible "sections" option. (subsection{The internals}): The fake \shipout had a syntax error. Why don't people report bugs? 2002-02-18 Alan Shutko * Makefile.in (all): Split out docs target so install-hint is still last. Ditto install. 2002-02-18 David Kastrup * TODO: Add a few suggestions and throw out what has already been accomplished. * README-preview: Slight edits. * README.CVS: mention PROBLEMS as autogenerated file, add warning about autoconf earlier than 2.13. * RELEASE: explain about configuration files. * doc/preview-latex.texi: dircategory Emacs * doc/Makefile.in (install): correct install target for install-info. * doc/preview-latex.texi (Misplaced previews): explain about prauctex.cfg. * doc/install.texi: Write @LaTeX instead of La@TeX * preview.el (preview-default-preamble): Shorten stuff out that sits now in prauctex.cfg. * Makefile.in (all): cater for prauctex.cfg. Same for other targets. * preview.dtx (section{Introduction}): Replaced TeX by \TeX and similar cosmetics. (section{Package options}): Added noconfig option, explained prdefault.cfg (not yet there) and prauctex.cfg. (subsection{Preview attaching commands}): Predefine prauctex.cfg. (section{Various drivers}): make installer extract it. 2002-02-18 Jan-Ake Larsson * problems.texi: Simple layout fix * preview-latex.spec: For 0.6 proper * RELEASE: Mention AUC TeX RPM on project site * Makefile.in: Fixed 'make clean' in doc subdir, install info files too * doc/Makefile.in: Typo corrected, fixed INSTALL_DATA 2002-02-17 Alan Shutko * doc/Makefile.in: New file, replacing the former ad-hoc build. * doc/install.texi: Mention --disable-8bit-test. * doc/problems.texi (LaTeX international characters): Mention --disable-8bit-test. * aclocal.m4 (AC_CHECK_AUCTEX): Correct --with-auctex to --with-tex-site. * configure.in: 8bit test enhancements. Allow disabling test with --disable-8bit-test. Check for makeinfo. Generate doc/Makefile. 2002-02-17 David Kastrup * doc/install.texi: Mention problems with 8-bit-uncleanliness. We need an override still. * doc/problems.texi (LaTeX international characters): Mention that configure might barf. 2002-02-15 Jan-Ake Larsson * RELEASE: RPM info added, "for RH 7.x" 2002-02-14 Jan-Ake Larsson * preview-latex.spec: For 0.6. Included code to build from CVS and temporary fix to allow build before autoconf includes docs, included patches subdir in %doc * doc/Makefile: Typo corrected 2002-02-11 Jan-Ake Larsson * doc/readme.texi, doc/install.texi, doc/problems.texi, doc/copying.texi: Include @macro defs for text-file generation * doc/problems.texi: Minor changes * doc/readme.texi: Shortened * doc/Makefile: Added --no-validate on README * doc/install.texi: Layout changes, xref to PROBLEMS shortened * doc/problems.texi: Layout changes, added text on bug reports and GS EPS handling * doc/preview-latex.texi: Layout changes, install-info fix, index additions, fixed direntries for preview-latex 2002-02-11 David Kastrup * doc/Makefile (install): install the renamed info files. * doc/preview-latex.texi: change output file name to preview-latex.info in order to keep preview-latex as a directory name for HTML output. * doc/Makefile (preview-latex/index.html): generate HTML with makeinfo as texi2html does not grok @preview-latex. * doc/preview-latex.texi: Write instead of @AA (x-symbol sneaked that in). And revert again: does not print. * doc/install.texi: Use @previewlatex. * doc/problems.texi: Use @previewlatex and @uref. * doc/readme.texi: Use @previewlatex. * doc/copying.texi: Use @previewlatex. * doc/preview-latex.texi (top): Introduce @previewlatex macro and use it throughout. Some more changes. 2002-02-09 David Kastrup * INSTALL README PROBLEMS: removed because autogenerated * README.CVS and autogen.sh added. * doc/problems.texi: Initial rendition of PROBLEMS file in texindex form. * doc/copying.texi: Change Preview La@TeX{} to preview-latex * preview.el (preview-image-creators): Change png default device to png16m due to popular request. * doc/readme.texi: overhaul for 0.6. * doc/preview-latex.texi: fat overhaul. * preview.dtx (section{The Implementation}): Simplify \pr@advise, it broke the delayed option. (subsection{Preview attaching commands}): Same. 2002-02-08 David Kastrup * preview.el (preview-gs-transact): Sigh. Some refinements to the SAFER stuff: restart gs on errors that seem to stop in SAFER mode. (preview-gs-transact): And another few changes, there are gs versions that have .setsafer but not .runandhide. Rats. 2002-02-07 David Kastrup * preview.dtx (subsection{Preview attaching commands}): Use \nofiles instead of \@fileswfalse in order to suppress erroneous log file output. * preview.el (preview-gs-options): Remove -DSAFER option that causes OutputFile selection of GhostScript to fail (starting with 7.04). This cannot be the final fix. (preview-gs-options): Ok, so it isn't. Restored -dSAFER and added -dDELAYSAFER (which should be ignored by earlier GhostScript versions). Also: (preview-gs-transact): call .setsafe procedure if defined in systemdict, so we don't get unsafer in GhostScript 7.04. 2002-02-06 Jan-Ake Larsson * readme.texi: Index and layout changes 2002-02-05 Jan-Ake Larsson * copying.texi: Less zealous index * readme.texi: Typo corrected * preview-latex.texi: Document preview-default-preamble, bumped release number, typos corrected. * doc/Makefile: Simpler index generation 2002-02-04 Jan-Ake Larsson * preview-latex.texi: Simplify to only one section for keys and lisp function sections. Also only one Index. 2002-02-01 David Kastrup * PROBLEMS: Tell about x-symbol 4.0h/beta working successfully with preview-latex. 2002-02-01 Alan Shutko * configure.in: Corrected error message for 8-bit test. 2002-01-30 Alan Shutko * configure.in: Added diversion at the beginning to allow us to save LANG and LC_CTYPE for the 8-bit test. Also added test to see if LaTeX is 8-bt clean. 2002-01-24 Jan-Ake Larsson * preview-latex.spec: Initial version. On the 0.5.8.2 release. 2002-01-22 David Kastrup * preview.el (LaTeX-preview-setup): quote created directory name in %m fields. 2002-01-18 David Kastrup * preview.dtx (subsection{The internals}): Try catering for output routine changes. 2002-01-18 Jan-Ake Larsson * preview.el (preview-make-preamble): Simplified the code by sorting TeX-expand-list better. 2002-01-18 David Kastrup * RELEASE: Document a few changes. * doc/preview-latex.texi: document preview-at-point * preview.el (preview-next-border): Doc change. (preview-at-point): renamed from preview-dwim. (LaTeX-preview-setup): use preview-at-point. (LaTeX-preview-setup): menu change. (preview-document-pt): Use TeX-style-list instead of TeX-active-styles so that AucTeX may parse if not yet done. (before-revert-hook): clearout previews on revert. 2002-01-17 Jan-Ake Larsson * preview.el (preview-default-preamble): Added default preamble for use when a document not configured for preview-latex is previewed in AUC TeX. * preview-latex.texi (section Misplaced previews): Info on \emph and \PreviewMacro*. 2001-12-05 Jan-Ake Larsson * preview-latex.texi: Added new section: User-level lisp functions * install.texi: Layout improvements * doc/Makefile: Typo and dependencies corrected 2001-12-04 Jan-Ake Larsson * doc/Makefile: Added index generation for DVI docs 2001-12-03 Jan-Ake Larsson * preview-latex.texi: Keymap documentation and general text on emacs interface added * readme.texi, install.texi: Layout changes 2001-12-03 David Kastrup * preview.el (preview-clearout): add optional argument keep-dir. (preview-place-preview): Don't clearout previews from current run. This makes preview-latex keep multiple previews in command arguments instead of just keeping the last such one. 2001-11-30 David Kastrup * preview.dtx (section{Provided Commands}): Add descriptions of new commands \PreviewMacro* and \PreviewEnvironment*. (subsection{The internals}): New internal \pr@protect. (subsection{Preview attaching commands}): Implement the new `*'-forms. (subsection{Preview attaching commands}): Also treat \end{env} in \PreviewEnvironment*. 2001-11-30 Jan-Ake Larsson * preview-latex.texi, install.texi: Autoload the package rather than require it. 2001-11-30 David Kastrup * prv-emacs.el (preview-register-change): widen before getting substring in order to avoid error when narrowed. (preview-check-changes): Same here. (preview-handle-insert-in-front): Changed DOC string. (preview-handle-insert-behind): same. (preview-handle-modification): same. 2001-11-29 Jan-ke Larsson * doc/preview-latex.texi: Created first draft * doc/readme.texi: Created first draft * doc/readme.texi: Created first draft * doc/copying.texi: Created * doc/Makefile: Created layout. Now for autoconf, Alan? 2001-11-28 Alan Shutko * INSTALL (--with-tex-site): Rename --with-auctex. * aclocal.m4 (AC_CHECK_AUCTEX): Try to fix things so that it looks for tex-site, only tex-site, and adds the location of tex-site into the load-path. (AC_CHECK_REQUIRE): New. (AC_CHECK_AUCTEX): Change name of --with-auctex to --with-tex-site. 2001-11-12 Alan Shutko * Makefile.in (lispdir): Remove /preview because @lispdir@ now includes it. * aclocal.m4 (AC_PATH_LISPDIR): Modify it so it prints out that lisp files are going in $lispdir/preview. 2001-11-20 David Kastrup * README-preview: adjust instructions because preview.ins will be available on CTAN already. * prv-emacs.el (preview-make-clickable): consult `preview-button-1' and `preview-button-2' at run-time. (preview-overlay): Need insert-behind-hooks too in case someone uses `insert-before-markers' at end of previews. (preview-change-list): New variable. (preview-register-change): New function. (preview-check-changes): New function. All of this stuff is to make sure we open/disable overlays only if permanent changes occur inside. (preview-handle-insert-in-front): some changes for new behaviour. (preview-handle-insert-behind): New function. (preview-move-point): Call `preview-check-changes' after commands. (preview-gs-color-value): checkdoc-compatible comment. * preview.el: Change installation comments 2001-11-15 David Kastrup * preview.dtx (section{Provided Commands}): Correct documentation names for \PreviewEnvironment and \PreviewSnarfEnvironment * prv-emacs.el (preview-inherited-face-attribute): Add document string, simplify some tests. * preview.el: Add autoload magic comments. (preview-compatibility-macros): avoid byte compiler warning. 2001-11-13 David Kastrup * PROBLEMS: Add patch for mouse-drag.el * INSTALL: add autoload instructions for fastest Emacs startup. 2001-11-12 David Kastrup * preview.el (preview-gs-restart): Use push. (preview-clearout-buffer): New function. Use in kill-buffer-hook. (kill-emacs-hook): add cleanout of temp directories when leaving Emacs. (preview-make-options): cosmetics (LaTeX-preview-setup): add keybindings for clearing buffer (preview-clean-subdir): cosmetic changes. (preview-clean-topdir): new function. (preview-create-subdirectory): use it. (preview-report-bug): report preview-dvips-command. 2001-11-11 David Kastrup * Release 0.5.8.2 2001-11-11 Alan Shutko * aclocal.m4 (AC_EMACS_CHECK_LIB_WITH_LIB): varient of AC_EMACS_CHECK_LIB which first requires a prereq lib. (AC_CHECK_AUCTEX): Use AC_EMACS_CHECK_LIB_WITH_LIB to prereq tex-site. * Makefile.in (use-hint): Get line wrapping right. * configure.in (--with-texmf): Applied patch from Hans Fredrik Nordhaug making --with-texmf obey TDS. 2001-11-11 David Kastrup * prv-emacs.el (preview-transparent-border): Change definition to numeric/nil, set default to 3pt. (preview-create-icon): adapt heuristic-mask accordingly (preview-ps-image): same here (preview-gs-get-colors): use new definition of preview-transparent-border, use PostScript code not subject to anti-aliasing effects. (preview-transparent-border): Change default to take into account that we previously got only half of requested width. (preview-gs-get-colors): generate only necessary tokens. Disable stroke adjustment in order to get more even borders. 2001-11-10 David Kastrup * preview.dtx (subsection{The internals}): Make reassignment of \@tempboxa that lead to missing section headers local. Interesting bug. 2001-11-09 David Kastrup * RELEASE: initial stab at release notes. * preview.el (preview-back-command): Make token backer somewhat more robust. (preview-analyze-error): Don't bomb out if no token matches. * README-preview: first draft. * prv-emacs.el (preview-int-bb): moved from preview.el * preview.el (preview-preserve-indentation): New option, on per default. Switch off for old behaviour. (preview-extract-bb): heed preview-preserve-indentation by faking the bounding box left. (preview-int-bb): move to prv-emacs.el * preview.dtx (subsection{The internals}): Try killing off indents in order to get good horizontal positioning of preview. * preview.el (preview-start-dvips): fix bug WRT free variable `buffer'. * prv-emacs.el (preview-transparent-color): change default for a new default transparency scheme. (preview-get-heuristic-mask): bug fix for specified color (preview-create-icon): adjust for new policy (preview-ps-image): same here (preview-transparent-border): new option (preview-gs-get-colors): heed this 2001-11-08 David Kastrup * PROBLEMS: Recommend customizing new variable preview-dvips-command for DviPS problems. Add sections about Windows and XEmacs. Add section about LaTeX/language environment problem. Add section about flyspell.el including patch. 2001-11-07 David Kastrup * preview.el (preview-gs): and other groups: set :prefix in defgroup (preview-get-geometry): Oops, make it work if preview-scale-function is a constant instead of a function. 2001-11-06 Alan Shutko * aclocal.m4 (AC_CHECK_AUCTEX): Revert the previous change, since it was horribly broken, and fix --with-auctex, so that it doesn't do the check if --with-auctex was specified. 2001-11-06 Alan Shutko * aclocal.m4 (AC_CHECK_AUCTEX): Try looking for tex-site instead of tex-buf... this may help since we're sure it's in load-path, but I'm afraid that the contents of tex-site may not be standard enough across installations. 2001-11-06 David Kastrup * preview.el (preview-image-creators): Add preview-eps-open function for calling dvips conversion. (preview-eps-open): Resume half-hearted support of postscript image type. Does anybody use this, after all? If so, let him run DviPS in background if he so desires... * preview.dtx (subsection{The internals}): add \leavevmode to make things like \paragraph flush their \everypar tokens. Perhaps not the right thing to do, let's wait for error reports about that one. * preview.el: require 'tex-site when compiling (preview-gs-file): new local variable (preview-gs-sentinel): cater for "Compilation" flag in mode-line (preview-gs-restart): changes in process setup (preview-gs-close): Same here (preview-gs-open): Same here (preview-gs-dvips-sentinel): New function (preview-gs-place): postpone Bounding Box extraction. (preview-gs-flag-error): cosmetic changes (preview-gs-transact): extract bounding box (preview-LaTeX-command): Remove dvips call from command (preview-dvips-command): New option for dvips call (preview-parse-messages): add message while parsing (preview-parse-messages): remove call to open, this calls parsing instead. (preview-start-dvips): New function. (preview-TeX-inline-sentinel): Changed to new process model Note: this breaks 'postscript image support. To be fixed. 2001-11-03 Alan Shutko * aclocal.m4 (AC_CHECK_PROG_REQUIRED,AC_CHECK_PROGS_REQUIRED,AC_PATH_PROG_REQUIRED): New functions to check programs, and abort with a message if not found. (AC_EMACS_CHECK_LIB): Function stolen from Gnus to check whether an elisp library exists. (AC_CHECK_AUCTEX): Check if AUC-TeX is in a normal emacs load path, and allow --with-auctex switch to specify it. SF Bug #477262, #477260. * Makefile.in (use-hint, install-hint): New hints. SF Bug #477282. (all, install): Use the above hints. * configure.in: Changed all AC_CHECK_PROG(S)/AC_PATH_PROG(S) to new AC_*_REQUIRED, which abort and print a message if something isn't found. Added AC_CHECK_AUCTEX. Add note at end of configure to run "make". SF Bug #469741 (partial). Removed --with-auctex since that's now done in AC_CHECK_AUCTEX. 2001-10-30 David Kastrup * prv-emacs.el (preview-make-clickable): Use 'keymap instead of 'local-map, obliterating the need to inherit from LaTeX-mode-map. (preview-toggle): Same here, and cater for null-length overlays. (preview-mark-point): Jury's still out on that one. * preview.el (preview-gs-sentinel): Don't hickup if buffer got killed. (preview-gs-restart): Don't mind exiting Emacs if GhostScript still running. (preview-snippet): Buffer-locality not needed because parsing occurs fully blocking. (preview-snippet-start): Same (preview-analyze-error): Somewhat saner behaviour if the error message parsing fails due to macro arguments or other. This cannot be the final verdict. * TODO: add a few items. * prv-emacs.el (preview-transparent-color): Make transparency customizable. Note that due to a bug everything except "None" is treated the same as "Autodetect" in 21.1. Fixed in CVS. (preview-get-heuristic-mask): Function for calculating mask to use from above. (preview-create-icon): use preview-get-heuristic-mask (preview-ps-image): same. (preview-mark-point): move point out of previews before starting next command for consistent implementation of intangibility. Not sure whether this is actually a good idea, though. (preview-inherited-face-attribute): New function (preview-gs-get-colors): New function, replaces preview-get-colors * preview.el (preview-gs): New customization group hierarchy (preview-appearance): same (preview-latex): same (preview-gs-colors): change string to single tokens. (preview-gs-transact): construct string from same (preview-scale-from-face): consult preview-reference-face instead of default. Use new function preview-inherited-face-attribute for this. (preview-face): add different colours for dark backgrounds. change default background to beige, probably less likely to match users default background. (preview-error-face): change preview-error-face for non-color terms. (preview-reference-face): used for size and color determination of previews. (preview-TeX-inline-sentinel): tell user while we are parsing 2001-10-27 David Kastrup * PROBLEMS: revert AucTeX patch to that before we tried our luck with intangibility. Some changes in formatting. Add comment about -Pwww font problems. 2001-10-26 David Kastrup * Release 0.5.8.1 * preview.el (preview-mouse-open-eps): fix a typo in help message. (preview-analyze-error): Remove traces of inhibit-point-motion madness. If search for (concat string after-string) fails, try again just with string in order to support uses of Auc-TeX's original interface. * prv-emacs.el (preview-toggle): Don't reactivate disabled overlays (could happen in isearches ended by an editing operation). (preview-move-point): While we are simulating point-adjustment, heed disable-point-adjustment in order to make isearch (and probably other utilities) Do The Right Thing (TM). Works beatifully. * preview.el (preview-LaTeX-command): new customization variable. (LaTeX-preview-setup): use it. 2001-10-25 David Kastrup * We now cater for people with non-black-on-white setup. * prv-emacs.el (preview-get-colors): gets colors from default font. * preview.el (preview-gs-colors): new variable for GhostScript color setup string. (preview-gs-transact): pass color setup. (preview-get-geometry): pass color setup * prv-emacs.el (preview-ps-image): Don't expect white background in heuristic-mask. * preview.el (preview-next-border): Can't get everything right first try now, can I? * prv-emacs.el: replace preview-intangible by preview-state. (preview-handle-insert-in-front): Same here. (preview-toggle): Same here. (preview-toggle): Let preview-toggle handle setting of category. That way category is not set/used outside of prv-emacs.el. (preview-move-point): replace preview-intangible by preview-state. * preview.el (preview-dwim): replaces preview-again. Excruciatingly useful function bound to C-c C-p C-p. Will do just what you want whenever you call it. (preview-next-border): Helper-function for that (preview-disable): set property 'preview-state (preview-clearout): use 'preview-state instead of 'category (preview-place-preview): same here. (LaTeX-preview-setup): use preview-dwim in keyboard bindings 2001-10-23 David Kastrup * Release 0.5.8 * PROBLEMS (AucTeX): remove patch for intangibility problem. * preview.el (preview-regenerate): use preview-region (preview-region): New user function. (preview-environment): New user function. (preview-section): New user function. (preview-again): New user function. (LaTeX-preview-setup): Add menus and keyboard shortcuts for new user functions. (preview-version): Don't recalculate version in compiled form. * prv-emacs.el: inherit from LaTeX-mode-map in order to have normal commands work when cursor is on preview. (preview-make-clickable): same. (preview-overlay): don't make intangible, but preview-intangible. In short, we now fake intangibility until Emacs will keep the cursor out of overlay images like it does out of text property images. (preview-handle-insert-in-front): Same here. (preview-toggle): Same here. Load pre-command-hook and post-command-hook for fake intangibility. (preview-marker): Added for fake intangibility. (preview-mark-point): pre-command-hook function for fake intangibility. (preview-move-point): post-command-hook function for fakr intangibility. 2001-10-22 David Kastrup * README: Change info for Emacs release 21.1 * PROBLEMS: Change info for Emacs release 21.1 * INSTALL: Change info for Emacs release 21.1 2001-10-19 David Kastrup * preview.dtx (subsection{The internals}): Heed \AtBeginDvi sequences. Small doc/formatting changes. 2001-10-17 David Kastrup * preview.dtx: Get the version headers right (hopefully). 2001-10-16 David Kastrup * preview.dtx: Make a stab at an automated version header (subsection{Preview attaching commands}): Move the badness stuff to the auctex option. 2001-10-15 David Kastrup * prv-emacs.el: insert-in-front back. Discovered all-saving undo-in-progress. (preview-handle-insert-in-front): pseudo-advance if not in undo while iconized. (preview-handle-modification): fitting behaviour for that. commit suicide on changes that leave the range empty, disable else. * preview.el (preview-place-preview): overlays get auto-advancing front. (preview-analyze-error): intangible. inhibit-point-motion-hooks. what a mess. Made parsing saner in the presence of such stuff. (preview-place-preview): overlays get non-auto-advancing front back again, since we rather pseudo-advance in preview-handle-insert-in-front. * prv-emacs.el: don't handle insert-in-front: impossible to do consistently. Instead make beginning ofg overlays auto-advance always. (preview-handle-insert-in-front): removed (preview-handle-modification): removed insert-in-front-hooks 2001-10-13 David Kastrup * prv-xemacs.el: This is completely and utterly broken and incomplete. The recent changes from Simon have not yet been incorporated, some of the stuff still has old semantics and so forth and so on. One needs to go through prv-emacs.el and make sure that everything in there has an equivalent here. * prv-emacs.el: See preview.el. * preview.el: This is the big one. Changes too numerous to mention. Lots of modularization for making XEmacs support possible. Changed semantics, the works. See PROBLEMS file for new AucTeX compatibility annoyances. * PROBLEMS (AucTeX versions from 11.01 up to version 11.05): Patch added. Patch for earlier versions revised. 2001-10-12 David Kastrup * preview.dtx (subsection{Preview attaching commands}): set \hbadness and \vbadness to infinity in order to avoid parse-unfriendly error messages. Would one want to see overfull hbox rules in preview output? 2001-10-12 Alan Shutko * Makefile.in (LISP_OBJS): New var. ($(LISP_OBJS)): Got rid of elc target and used dependencies, so we don't recompile every make. 2001-10-12 David Kastrup * configure.in: Try fixing the emacs flavor detection. And revert back to Alan's version. 2001-10-12 Alan Shutko * configure.in: Change AC_PATH_PROG of emacs to AC_CHECK_PROG, as it was breaking --with-xemacs. 2001-10-12 David Kastrup * Makefile.in: Switch order of LISP_SOURCES in order to avoid compiling preview.el with older versions of prv-emacs.elc or prv-xemacs.elc 2001-10-11 Alan Shutko * Makefile.in (ELCC): Bug 469742: Include . in load path. * configure.in: Added --with-xemacs option. Added AC_XEMACS_P to determine if we're using xemacs. Added PLAT_LISP substitution with the flavor-specific lisp file. * Makefile.in (LISP_SOURCES): New variable, listing files needing byte-compilation. (all): Depend on "elc" target to capture all the emacs files. (install-el): Install more lisp files. (elc): New target, compile all relevant files. 2001-10-11 David Kastrup * preview.dtx (subsection{The internals}): Introduce count \pr@snippet so as not to get confused by \include. (subsection{Preview attaching commands}): Make auctex option use this counter. 2001-10-10 David Kastrup * circ.tex: Demonstrate new `sections' option. * preview.el (preview-default-option-list): Cater for new `sections' option to preview.sty. * preview.dtx (section{Provided Commands}): New argument syntax as in \PreviewMacro[{*[][]{}}]{\includegraphics}. (subsection{Parsing commands}): introduce \pr@endparse and support new syntax. (subsection{Preview attaching commands}): same here. (section{Package options}): explain new `sections' option. (subsection{Selection options}): implement `sections' option. 2001-10-09 David Kastrup * preview.el (preview-mouse-open-error): Don't have multiple "*Preview-GhostScript-Error*" buffers gather, reuse single one. (LaTeX-preview-setup): Enter us into "Command" menu. 2001-10-08 David Kastrup * preview.dtx (subsection{Preview attaching commands}): Change output routine to flush out floats. Correct \CheckSum. * preview.el: Use `error' identifier only where really needed. (preview-gs-behead-outstanding): see above. (preview-gs-sentinel): see above. (preview-gs-flag-error): see above. Still require (defvar error) because of Auc-TeX (TeX-active-tempdir): Move definition. (preview-gs-place, preview-eps-place) (preview-active-string, preview-make-filename) (preview-place-preview, preview-parse-messages) (preview-analyze-error): remove `tempdir' argument (preview-get-geometry): some change in semantics (preview-TeX-inline-sentinel): call `preview-parse-messages' with process buffer active instead of source. (TeX-inline-preview): adapt to changed `preview-get-geometry' 2001-10-07 David Kastrup * preview.el (preview-get-geometry): comment clarification to satisfy checkdoc. (preview-version): added. (preview-report-bug): use `preview-version' instead of current ugliness. * .cvsignore (Module): Add a few more entries. * preview.el: Don't defvar AucTeX internal TeX-auto-file, make auto-size detection of previews from parsed styles work. (preview-document-pt): Use `TeX-active-styles' instead of bad AucTeX internal `TeX-auto-file'. (preview-get-geometry): Different arguments and semantics. Make it work. (TeX-inline-preview): Call changed `preview-get-geometry'. * prv-xemacs.el: add macros line-beginning-position and line-end-position. * preview.el: Change manner of loading prv-xemacs (preview-analyze-error): Use line-end-position again. 2001-10-05 David Kastrup * preview.dtx: Include \ProvidesPackage and \CheckSum (subsection{Preview attaching commands}): put \unskip in \end{preview} where it will make a difference. (section{Various drivers}): \askforoverwritefalse only generated for make-intended installer. * prv-xemacs.el: require overlay preview-compatibility-macros added (find-image): some changes of compilation (defimage): define using preview-defmacro (make-temp-file): ignore temporary-filename: not needed in here. 2001-10-04 David Kastrup * preview.el: first stab at XEmacs compatibility. * prv-xemacs.el: first stab at XEmacs compatibility. * circ.tex (section{Die gerade Linie}): built in two deliberate bugs for testing. * preview.el (preview-gs-behead-outstanding): use `preview-gs-flag-error'. (preview-mouse-open-error, preview-mouse-open-eps): factored out stuff from `preview-gs-flag-error'. (preview-gs-flag-error): replaces `preview-gs-error-string' (preview-gs-transact): Use `preview-gs-flag-error'. * PROBLEMS: be more specific about GhostScript errors 2001-10-03 David Kastrup * preview.el (preview-delete-file): remove dont-register (preview-make-filename): remove dont-register (preview-regenerate): switch to clicked buffer if not there. (preview-gs-error-string): try to avoid strange behaviour from having `let' restore potential buffer-local-variables to the wrong buffer. Make some functions (interactive "@"). 2001-10-02 David Kastrup * release 0.5 * PROBLEMS: Completed summary of patches and made an outline-mode file. * INSTALL: Gearing up for a release. Last modifications and clarifications. * preview.el: Lots of cleanups for getting to release quality. Made good error reporting with things masquerading as actual GhostScript sessions, including command line, prompt, messages, the works. Removed preview-gs-urgent which actually has never been anything but the front of preview-gs-queue. * TODO: Some more wishes. * preview.el: Make active error display. * preview.el: Changed the process line appearance somewhat, added a bit of robustness when error line parsing fails, beautified appearance of opened previews (icon gets its own line only when previewed area starts on a line). 2001-10-01 David Kastrup * TODO: Added a few items. * README: Added CVS instructions and a few other odds and ends. * bootstrap.ins: Remove docstrip configuration related messages. * INSTALL: Some more massaging. * PROBLEMS: Initial checkin, preparation for first tarball release. * ChangeLog: Initial entry of ChangeLog. 2001-10-01 alanshutko * aclocal.m4: Instead of /dev/null, throw stuff to FD 5, where it might do some good. 2001-09-30 David Kastrup * README: Mentioned M-x preview-report-bug. * README: Removed redundancies with INSTALL, cleared some stuff up. * preview.el: Obliterated transaction queues. They did not help that much, and are not implemented in earlier versions of XEmacs. More trouble than they were worth, anyway. * preview.el: Define a few more image types. 2001-09-29 David Kastrup * INSTALL: Some general information and stuff. * Makefile.in: Use latex '\nonstopmode \input ...' instead of -interaction nonstopmode Fixed string comparison in Emacs. * aclocal.m4: Remove trailing slashes after path discovery, do some more things with sed instead of various other utilities. One change in calling LaTeX to make it work with older or non-web2c binaries. * preview.dtx: Support those misguided people using $$ in their LaTeX documents. I am not sure this is a good idea, but it will probably save us bug reports. * TODO: Removed a few done points. * preview.el: Made parsing good. Now the entire TeX error context gets used. In most cases, regenerating previews should work now, as well as region previewing. 2001-09-28 alanshutko * INSTALL: New file 2001-09-27 alanshutko * Makefile.in (preview.elc): Patch from Simon Josefsson to fix build with non-standard AUCTeX location. 2001-09-27 David Kastrup * preview.el: Made error and abort messages appear in the faulty images. Reworked file handling somewhat so that in the case of errors all involved files can stay until the image overlay gets deleted. * preview.el: Added bug reporting instructions and helper function for reports to preview-latex-bugs@lists.sourceforge.net. 2001-09-26 alanshutko * Makefile.in: (install-texmf) Install the dvi file * Makefile.in, aclocal.m4, configure.in: * aclocal.m4: Removed some dross stolen from Gnus, since it is unused. Fixed up AC_PATH_TEXMFDIR to try to find a dir to install the docs and to export texmfdir. * configure.in: --with-auctex=DIR, new option * Makefile.in: Changed rules for byte-compilation to allow setting AUCTEXDIR. (install-texmf) Only texhash the directory we installed into 2001-09-26 David Kastrup * preview.el: Oodles of documentation and a much faster bounding box extractor not relying on grep. Some small internal changes. * preview.el: Background rendering now working without errors, even with crummy default tq.el as currently shipped with Emacs (and XEmacs?). 2001-09-25 David Kastrup * preview.el: Some initial stab at trying to make do without tq.el. Figured out a way to make do with tq's ugly semantics, however. Just keep this somewhere. Only half done. 2001-09-24 alanshutko * Makefile.in: Makefile.in: clean and distclean targets from Simon Josefsson 2001-09-24 David Kastrup * preview.el: Sanitized temporary file handling by introducing a reference count scheme. Temporary directories should now get deleted as they become empty. We still do a general cleanup (in case a previous EMacs session crashed) on first accessing any preview subdirectory, which means bad luck when you are starting multiple instances of Emacs for previewing purposes. 2001-09-24 alanshutko * Makefile.in, configure.in: Run texhash after tex installation. Also set full pathnames for programs, since the path of the installing user may not match the compiling user. * Makefile.in, aclocal.m4: First cut at previewdocdir 2001-09-24 David Kastrup * preview.el: PNG rendering now basically works and is the default. Errors during transaction queue processing insert their messages into the TeX background buffer; so do unexpected GhostScript messages. Good for debugging. 2001-09-22 David Kastrup * preview.el: Forgot entering into queue and a condition. Still does not work with png. * preview.dtx: Fixed \begin{table} bug. * preview.el: Several changes from several people. The big one: support of other image formats. PNG. Unfortunately, not yet functional. Checked in nevertheless since the old postscript rendering is on by default and seems to work still. * preview.dtx: Forgotten macrocode, empty line. 2001-09-21 alanshutko * Makefile.in, aclocal.m4, configure.in: 2001-09-21 Alan Shutko * aclocal.m4: Correct handling of docstrip configuration for non-TDS setup. Also, quote the $ in awk. * Makefile.in (TEX): New variable. (all): preview-mk.ins instead of preview.ins (preview-mk.ins, preview.sty prauctex.def preview.drv): Use $TEX. * configure.in: Added --with-preview-dir option. Check for tex executable. * configure.in: Clarified --with-texmf help. * README: Updated build directions for autoconf build. * .cvsignore, Makefile, Makefile.in, aclocal.m4, configure.in, install-sh: Makefile.in, aclocal.m4, configure.in: Create autoconf versions of Makefile. Much of aclocal.m4 was stolen from Gnus, though the AC_PATH_TEXMF is new. Added install-sh for use by the makefile if a compatible install binary is not found. 2001-09-20 David Kastrup * Makefile: First sketch at installation via make instead of docstrip. * bootstrap.ins: No error if no docstrip.cfg. * bootstrap.ins: First sketch at bootstrap install file for extracting main installer and giving directory info. * preview.dtx: Added missing macrocode environment (David Love). Leave directory off installer when installing via make. 2001-09-19 David Kastrup * README: Checked in antialiasing suggestions from Alan Shutko. 2001-09-16 David Kastrup * preview.el: Still learning about customize-variable... 2001-09-15 David Kastrup * preview.el: Parse HiRes Bounding Boxes, remove accidental paste of definition of shell-command-to-string, add support for graphical preview of files not prepared for it. * preview.dtx: Another spurious space. * preview.dtx: AucTeX option delays \nonstopmode. Spurious space in \pr@endbox removed. * README: Add instructions for anti-aliasing. * preview.dtx, README: Corrected Email address. 2001-09-14 David Kastrup * README: Added some more descriptive stuff and my Email address. * preview.el: Added intelligent determination of EPS scale. Changed Bounding Box determination to use a HiResBoundingBox if present, and work without a shell. Added some customization. 2001-09-13 David Kastrup * .cvsignore: Ignore generated files. * preview.dtx: Deleted no longer applicable comment. Fixed bug in connection with \item. * COPYING: Copy of GPL version 2 included. * README: Typo. * README: Clarified comment about how to improve EPS support in Emacs. * README: Removed link to pretest Emacs on request from Gerd Mllmann. 2001-09-12 David Kastrup * circ.tex: New file. * circ.tex: This is the initial checkin of preview-latex. Enjoy. * Makefile, README, TODO, preview.dtx: New file. * Makefile, README, TODO, preview.dtx: This is the initial checkin of preview-latex. Enjoy. * preview.el: New file. * preview.el: This is the initial checkin of preview-latex. Enjoy. auctex-11.87/preview/prv-install.el0000644000000000000000000001150010751352553016002 0ustar rootroot;;; prv-install.el --- Complicated install-time magic for preview-latex. ;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. ;; Author: David Kastrup ;; Keywords: convenience, tex, wp ;; 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 contains package-building stuff and other install-time magic. ;; It may well contain Emacs-version-specific code, but certain ;; functions here should be *callable* from any Emacs version. ;;; Code: (defun preview-make-package () "Do anything required to make a package in this version of Emacs, other than actually copying the Lisp files. Takes arguments on the comamnd line: the package directory and any number of Lisp files to generate autoloads from. Does nothing in Emacsen that do not support a package system." (if (featurep 'xemacs) (preview-make-package-xemacs)) (setq command-line-args-left nil)) (defun preview-make-package-xemacs () "Do anything required to make a package in XEmacs, other than actually copying the Lisp files. Generates auto-autoloads, custom-loads, and package metadata file in the right locations. Takes from the command line the package directory, package name, and version (to be evaluated), followed by a file to append." (let* ((package-dir (pop command-line-args-left)) (package-name (pop command-line-args-left)) (release-version (eval (read (pop command-line-args-left)))) (author-version (eval (read (pop command-line-args-left)))) append-file (lisp-dir (expand-file-name (format "lisp/%s/" package-name) package-dir)) (metadata (expand-file-name "_pkg.el" lisp-dir)) (custom-load (expand-file-name "custom-load.el" lisp-dir)) (generated-autoload-file (expand-file-name "auto-autoloads.el" lisp-dir)) (si:message (symbol-function 'message)) make-backup-files noninteractive) ;; Delete and regenerate the custom-load file. (when (file-exists-p custom-load) (delete-file custom-load)) (when (file-exists-p (concat custom-load "c")) (delete-file (concat custom-load "c"))) (Custom-make-dependencies lisp-dir) (when (file-exists-p custom-load) (require 'cus-load) (byte-compile-file custom-load)) ; Delete and regenerate the package metadata file. ; There is no compiled form of this file. (message "Updating metadata for the directory %s..." lisp-dir) (with-temp-file metadata (insert (concat ";;;###autoload\n" "(package-provide '" package-name "\n" " :version " release-version "\n" " :author-version " "\"" author-version "\"\n" " :type 'regular)\n"))) ; Delete and regenerate the auto-autoloads file. (message "Updating autoloads for the directory %s..." lisp-dir) (when (file-exists-p generated-autoload-file) (delete-file generated-autoload-file)) (when (file-exists-p (concat generated-autoload-file "c")) (delete-file (concat generated-autoload-file "c"))) (defun message (fmt &rest args) "Ignore useless messages while generating autoloads." (cond ((and (string-equal "Generating autoloads for %s..." fmt) (file-exists-p (file-name-nondirectory (car args)))) (funcall si:message fmt (file-name-nondirectory (car args)))) ((string-equal "No autoloads found in %s" fmt)) ((string-equal "Generating autoloads for %s...done" fmt)) (t (apply si:message fmt args)))) (unwind-protect (cond ((fboundp 'update-autoloads-from-directory) (update-autoloads-from-directory lisp-dir)) ((fboundp 'update-autoload-files) (update-autoload-files (list lisp-dir) "auctex")) (t (error "Failed to generate autoloads."))) (fset 'message si:message)) (while (setq append-file (pop command-line-args-left)) (when (file-exists-p generated-autoload-file) (with-temp-buffer (insert-file append-file) (append-to-file (point-min) (point-max) generated-autoload-file)))) (byte-compile-file generated-autoload-file))) ;;; prv-install.el ends here auctex-11.87/preview/preview.el0000644000000000000000000037240611517074503015224 0ustar rootroot;;; preview.el --- embed preview LaTeX images in source buffer ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2010 Free ;; Software Foundation, Inc. ;; Author: David Kastrup ;; Keywords: tex, wp, convenience ;; 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: ;; $Id: preview.el,v 1.286 2011/01/23 18:53:55 angeli Exp $ ;; ;; This style is for the "seamless" embedding of generated images ;; into LaTeX source code. Please see the README and INSTALL files ;; for further instruction. ;; ;; Please use the usual configure script for installation: more than ;; just Elisp files are involved: a LaTeX style, icon files, startup ;; code and so on. ;; ;; Quite a few things with regard to preview-latex's operation can be ;; configured by using ;; M-x customize-group RET preview RET ;; ;; Please report bugs with M-x preview-report-bug RET ;; ;;; Code: (require 'tex-site) (require 'tex) (require 'tex-buf) (require 'latex) (eval-when-compile (condition-case nil (require 'desktop) (file-error (message "Missing desktop package: preview-latex buffers will not survive across sessions."))) (condition-case nil (require 'reporter) (file-error (message "Missing reporter library, probably from the mail-lib package: preview-latex's bug reporting commands will probably not work."))) (require 'info) (defvar error)) ;; we need the compatibility macros which do _not_ get byte-compiled. (eval-when-compile (if (featurep 'xemacs) (load-library "prv-xemacs.el"))) ;; if the above load-library kicked in, this will not cause anything ;; to get loaded. (require (if (featurep 'xemacs) 'prv-xemacs 'prv-emacs)) (defgroup preview nil "Embed Preview images into LaTeX buffers." :group 'AUCTeX :prefix "preview-" :link '(custom-manual "(preview-latex)Top") :link '(info-link "(preview-latex)The Emacs interface") :link '(url-link :tag "Homepage" "http://www.gnu.org/software/auctex/")) (defgroup preview-gs nil "Preview's Ghostscript renderer." :group 'preview :prefix "preview-") (defgroup preview-appearance nil "Preview image appearance." :group 'preview :prefix "preview-") (defconst preview-specs-type '(repeat (list :tag "Image spec" ;; Use an extra :value keyword to avoid a bug in ;; `widget-convert' of XEmacs 21.4 and Emacs 21. ;; Analogously for the following `const' statements. (const :format "" :value :type) (choice :tag "Image type" (const xpm) (const xbm) (symbol :tag "Other")) (set :inline t :tag "Minimum font size" (list :inline t :tag "" (const :format "" :value :min) (integer :tag "pixels"))) (const :format "" :value :file) (string :tag "Filename") (set :inline t :tag "Ascent ratio" (list :inline t :tag "" (const :format "" :value :ascent) (integer :tag "percent of image" :value 50)))))) (defun preview-specs-setter (symbol value) "Set SYMBOL to VALUE and clear `preview-min-alist' property. This is used in icon specs, so that customizing will clear cached icons." (put symbol 'preview-min-alist nil) (set-default symbol value)) (defcustom preview-nonready-icon-specs '((:type xpm :min 26 :file "prvwrk24.xpm" :ascent 90) (:type xpm :min 22 :file "prvwrk20.xpm" :ascent 90) (:type xpm :min 17 :file "prvwrk16.xpm" :ascent 90) (:type xpm :min 15 :file "prvwrk14.xpm" :ascent 90) (:type xpm :file "prvwrk12.xpm" :ascent 90) (:type xbm :file "prvwrk24.xbm" :ascent 90)) "The icon used for previews to be generated. The spec must begin with `:type'. File names are relative to `load-path' and `data-directory', a spec `:min' requires a minimal pixel height for `preview-reference-face' before the spec will be considered. Since evaluating the `:file' spec takes considerable time under XEmacs, it should come after the `:min' spec to avoid unnecessary evaluation time." :group 'preview-appearance :type preview-specs-type :set #'preview-specs-setter) (defvar preview-nonready-icon) (defcustom preview-error-icon-specs '((:type xpm :min 22 :file "prverr24.xpm" :ascent 90) (:type xpm :min 18 :file "prverr20.xpm" :ascent 90) (:type xpm :file "prverr16.xpm" :ascent 90) (:type xbm :file "prverr24.xbm" :ascent 90)) "The icon used for PostScript errors. The spec must begin with `:type'. File names are relative to `load-path' and `data-directory', a spec `:min' requires a minimal pixel height for `preview-reference-face' before the spec will be considered. Since evaluating the `:file' spec takes considerable time under XEmacs, it should come after the `:min' spec to avoid unnecessary evaluation time." :group 'preview-appearance :type preview-specs-type :set #'preview-specs-setter ) (defvar preview-error-icon) (defcustom preview-icon-specs '((:type xpm :min 24 :file "prvtex24.xpm" :ascent 75) (:type xpm :min 20 :file "prvtex20.xpm" :ascent 75) (:type xpm :min 16 :file "prvtex16.xpm" :ascent 75) (:type xpm :file "prvtex12.xpm" :ascent 75) (:type xbm :min 24 :file "prvtex24.xbm" :ascent 75) (:type xbm :min 16 :file "prvtex16.xbm" :ascent 75) (:type xbm :file "prvtex12.xbm" :ascent 75)) "The icon used for an open preview. The spec must begin with `:type'. File names are relative to `load-path' and `data-directory', a spec `:min' requires a minimal pixel height for `preview-reference-face' before the spec will be considered. Since evaluating the `:file' spec takes considerable time under XEmacs, it should come after the `:min' spec to avoid unnecessary evaluation time." :group 'preview-appearance :type preview-specs-type :set #'preview-specs-setter) (defvar preview-icon) (defgroup preview-latex nil "LaTeX options for preview." :group 'preview :prefix "preview-") (defcustom preview-image-creators '((dvipng (open preview-gs-open preview-dvipng-process-setup) (place preview-gs-place) (close preview-dvipng-close)) (png (open preview-gs-open) (place preview-gs-place) (close preview-gs-close)) (jpeg (open preview-gs-open) (place preview-gs-place) (close preview-gs-close)) (pnm (open preview-gs-open) (place preview-gs-place) (close preview-gs-close)) (tiff (open preview-gs-open) (place preview-gs-place) (close preview-gs-close))) "Define functions for generating images. These functions get called in the process of generating inline images of the specified type. The open function is called at the start of a rendering pass, the place function for placing every image, the close function at the end of the pass. Look at the documentation of the various functions used here for the default settings, and at the function `preview-call-hook' through which those are called. Additional argument lists specified in here are passed to the functions before any additional arguments given to `preview-call-hook'. Not all of these image types may be supported by your copy of Ghostscript, or by your copy of Emacs." :group 'preview-gs :type '(alist :key-type (symbol :tag "Preview's image type") :value-type (alist :tag "Handler" :key-type (symbol :tag "Operation:") :value-type (list :tag "Handler" (function :tag "Handler function") (repeat :tag "Additional \ function args" :inline t sexp)) :options (open place close)))) (defcustom preview-gs-image-type-alist '((png png "-sDEVICE=png16m") (dvipng png "-sDEVICE=png16m") (jpeg jpeg "-sDEVICE=jpeg") (pnm pbm "-sDEVICE=pnmraw") (tiff tiff "-sDEVICE=tiff12nc")) "*Alist of image types and corresponding Ghostscript options. The `dvipng' and `postscript' (don't use) entries really specify a fallback device when images can't be processed by the requested method, like when PDFTeX was used." :group 'preview-gs :type '(repeat (list :tag nil (symbol :tag "preview image-type") (symbol :tag "Emacs image-type") (repeat :inline t :tag "Ghostscript options" string)))) (defcustom preview-image-type 'png "*Image type to be used in images." :group 'preview-gs :type (append '(choice) (mapcar (lambda (symbol) (list 'const (car symbol))) preview-image-creators) '((symbol :tag "Other")))) (defun preview-call-hook (symbol &rest rest) "Call a function from `preview-image-creators'. This looks up SYMBOL in the `preview-image-creators' entry for the image type `preview-image-type' and calls the hook function given there with the arguments specified there followed by REST. If such a function is specified in there, that is." (let ((hook (cdr (assq symbol (cdr (assq preview-image-type preview-image-creators)))))) (when hook (apply (car hook) (append (cdr hook) rest))))) (defvar TeX-active-tempdir nil "List of directory name, top directory name and reference count.") (make-variable-buffer-local 'TeX-active-tempdir) (defcustom preview-bb-filesize 1024 "Size of file area scanned for bounding box information." :group 'preview-gs :type 'integer) (defcustom preview-preserve-indentation t "*Whether to keep additional whitespace at the left of a line." :group 'preview-appearance :type 'boolean) (defun preview-extract-bb (filename) "Extract EPS bounding box vector from FILENAME." (with-temp-buffer (insert-file-contents-literally filename nil 0 preview-bb-filesize t) (goto-char (point-min)) (when (search-forward-regexp "%%BoundingBox:\ +\\([-+]?[0-9.]+\\)\ +\\([-+]?[0-9.]+\\)\ +\\([-+]?[0-9.]+\\)\ +\\([-+]?[0-9.]+\\)" nil t) (vector (if preview-preserve-indentation (min 72 (string-to-number (match-string 1))) (string-to-number (match-string 1))) (string-to-number (match-string 2)) (string-to-number (match-string 3)) (string-to-number (match-string 4)) )))) (defcustom preview-prefer-TeX-bb nil "*Prefer TeX bounding box to EPS one if available. If `preview-fast-conversion' is set, this option is not consulted since the TeX bounding box has to be used anyway." :group 'preview-gs :type 'boolean) (defcustom preview-TeX-bb-border 0.5 "*Additional space in pt around Bounding Box from TeX." :group 'preview-gs :type 'number) (defvar preview-coding-system nil "Coding system used for LaTeX process.") (make-variable-buffer-local 'preview-coding-system) (defvar preview-parsed-font-size nil "Font size as parsed from the log of LaTeX run.") (make-variable-buffer-local 'preview-parsed-font-size) (defvar preview-parsed-magnification nil "Magnification as parsed from the log of LaTeX run.") (make-variable-buffer-local 'preview-parsed-magnification) (defvar preview-parsed-pdfoutput nil "PDFoutput as parsed from the log of LaTeX run.") (make-variable-buffer-local 'preview-parsed-pdfoutput) (defvar preview-parsed-counters nil "Counters as parsed from the log of LaTeX run.") (make-variable-buffer-local 'preview-parsed-counters) (defvar preview-parsed-tightpage nil "Tightpage as parsed from the log of LaTeX run.") (make-variable-buffer-local 'preview-parsed-tightpage) (defun preview-get-magnification () "Get magnification from `preview-parsed-magnification'." (if preview-parsed-magnification (/ preview-parsed-magnification 1000.0) 1.0)) (defun preview-TeX-bb (list) "Calculate bounding box from (ht dp wd). LIST consists of TeX dimensions in sp (1/65536 TeX point)." (and (consp list) (let* ((dims (vconcat (mapcar #'(lambda (x) (/ x 65781.76)) list))) (box (vector (+ 72 (min 0 (aref dims 2))) (+ 720 (min (aref dims 0) (- (aref dims 1)) 0)) (+ 72 (max 0 (aref dims 2))) (+ 720 (max (aref dims 0) (- (aref dims 1)) 0)))) (border (if preview-parsed-tightpage (vconcat (mapcar #'(lambda(x) (/ x 65781.76)) preview-parsed-tightpage)) (vector (- preview-TeX-bb-border) (- preview-TeX-bb-border) preview-TeX-bb-border preview-TeX-bb-border)))) (dotimes (i 4 box) (aset box i (+ (aref box i) (aref border i))))))) (defcustom preview-gs-command (if (eq system-type 'windows-nt) "GSWIN32C.EXE" "gs") "*How to call gs for conversion from EPS. See also `preview-gs-options'." :group 'preview-gs :type 'string) (defcustom preview-gs-options '("-q" "-dDELAYSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4") "*Options with which to call gs for conversion from EPS. See also `preview-gs-command'." :group 'preview-gs :type '(repeat string)) (defvar preview-gs-queue nil "List of overlays to convert using gs. Buffer-local to the appropriate TeX process buffer.") (make-variable-buffer-local 'preview-gs-queue) (defvar preview-gs-outstanding nil "Overlays currently processed.") (make-variable-buffer-local 'preview-gs-outstanding) (defcustom preview-gs-outstanding-limit 2 "*Number of requests allowed to be outstanding. This is the number of not-yet-completed requests we might at any time have piped into Ghostscript. If this number is larger, the probability of Ghostscript working continuously is higher when Emacs is rather busy. If this number is smaller, redisplay will follow changes in the displayed buffer area faster." :group 'preview-gs :type '(restricted-sexp :match-alternatives ((lambda (value) (and (integerp value) (> value 0) (< value 10)))) :tag "small number")) (defvar preview-gs-answer nil "Accumulated answer of Ghostscript process.") (make-variable-buffer-local 'preview-gs-answer) (defvar preview-gs-image-type nil "Image type for gs produced images.") (make-variable-buffer-local 'preview-gs-image-type) (defvar preview-gs-sequence nil "Pair of sequence numbers for gs produced images.") (make-variable-buffer-local 'preview-gs-sequence) (defvar preview-scale nil "Screen scale of images. Magnify by this factor to make images blend with other screen content. Buffer-local to rendering buffer.") (make-variable-buffer-local 'preview-scale) (defvar preview-colors nil "Color setup list. An array with elements 0, 1 and 2 for background, foreground and border colors, respectively. Each element is a list of 3 real numbers between 0 and 1, or NIL of nothing special should be done for the color") (make-variable-buffer-local 'preview-colors) (defvar preview-gs-init-string nil "Ghostscript setup string.") (make-variable-buffer-local 'preview-gs-init-string) (defvar preview-ps-file nil "PostScript file name for fast conversion.") (make-variable-buffer-local 'preview-ps-file) (defvar preview-gs-dsc nil "Parsed DSC information.") (make-variable-buffer-local 'preview-gs-dsc) (defvar preview-resolution nil "Screen resolution where rendering started. Cons-cell of x and y resolution, given in dots per inch. Buffer-local to rendering buffer.") (make-variable-buffer-local 'preview-resolution) (defun preview-gs-resolution (scale xres yres) "Generate resolution argument for gs. Calculated from real-life factor SCALE and XRES and YRES, the screen resolution in dpi." (format "-r%gx%g" (/ (* scale xres) (preview-get-magnification)) (/ (* scale yres) (preview-get-magnification)))) (defun preview-gs-behead-outstanding (err) "Remove leading element of outstanding queue after error. Return element if non-nil. ERR is the error string to show as response of Ghostscript." (let ((ov (pop preview-gs-outstanding))) (when ov (preview-gs-flag-error ov err) (overlay-put ov 'queued nil)) ov)) (defvar preview-gs-command-line nil) (make-variable-buffer-local 'preview-gs-command-line) (defvar preview-gs-file nil) (make-variable-buffer-local 'preview-gs-file) (defcustom preview-fast-conversion t "*Set this for single-file PostScript conversion. This will have no effect when `preview-image-type' is set to `postscript'." :group 'preview-latex :type 'boolean) (defun preview-string-expand (arg &optional separator) "Expand ARG as a string. It can already be a string. Or it can be a list, then it is recursively evaluated using SEPARATOR as separator. If a list element is in itself a CONS cell, the CAR of the list (after symbol dereferencing) can evaluate to either a string, in which case it is used as a separator for the rest of the list, or a boolean (t or nil) in which case the rest of the list is either evaluated and concatenated or ignored, respectively. ARG can be a symbol, and so can be the CDR of a cell used for string concatenation." (cond ((stringp arg) arg) ((consp arg) (mapconcat #'identity (delq nil (mapcar (lambda(x) (if (consp x) (let ((sep (car x))) (while (and (symbolp sep) (not (memq sep '(t nil)))) (setq sep (symbol-value sep))) (if (stringp sep) (preview-string-expand (cdr x) sep) (and sep (preview-string-expand (cdr x))))) (preview-string-expand x))) arg)) (or separator ""))) ((and (symbolp arg) (not (memq arg '(t nil)))) (preview-string-expand (symbol-value arg) separator)) (t (error "Bad string expansion")))) (defconst preview-expandable-string ((lambda (f) (funcall f (funcall f 'sexp))) (lambda (x) `(choice string (repeat :tag "Concatenate" (choice string (cons :tag "Separated list" (choice (string :tag "Separator") (symbol :tag "Indirect separator or flag")) ,x) (symbol :tag "Indirect variable (no separator)"))) (symbol :tag "Indirect variable (with separator)")))) "Type to be used for `preview-string-expand'. Just a hack until we get to learn how to do this properly. Recursive definitions are not popular with Emacs, so we define this type just two levels deep. This kind of expandible string can either be just a string, or a cons cell with a separator string in the CAR, and either an explicit list of elements in the CDR, or a symbol to be consulted recursively.") (defcustom preview-dvipng-command "dvipng -picky -noghostscript %d -o \"%m/prev%%03d.png\"" "*Command used for converting to separate PNG images. You might specify options for converting to other image types, but then you'll need to adapt `preview-dvipng-image-type'." :group 'preview-latex :type 'string) (defcustom preview-dvipng-image-type 'png "*Image type that dvipng produces. You'll need to change `preview-dvipng-command' too, if you customize this." :group 'preview-latex :type '(choice (const png) (const gif) (symbol :tag "Other" :value png))) (defcustom preview-dvips-command "dvips -Pwww -i -E %d -o %m/preview.000" "*Command used for converting to separate EPS images." :group 'preview-latex :type 'string) (defcustom preview-fast-dvips-command "dvips -Pwww %d -o %m/preview.ps" "*Command used for converting to a single PS file." :group 'preview-latex :type 'string) (defcustom preview-pdf2dsc-command "pdf2dsc %s.pdf %m/preview.dsc" "*Command used for generating dsc from a PDF file." :group 'preview-latex :type 'string) (defun preview-gs-queue-empty () "Kill off everything remaining in `preview-gs-queue'." (mapc #'preview-delete preview-gs-outstanding) (dolist (ov preview-gs-queue) (if (overlay-get ov 'queued) (preview-delete ov))) (setq preview-gs-outstanding nil) (setq preview-gs-queue nil)) (defvar preview-error-condition nil "Last error raised and to be reported.") (defun preview-log-error (err context &optional process) "Log an error message to run buffer. ERR is the caught error syndrome, CONTEXT is where it occured, PROCESS is the process for which the run-buffer is to be used." (when (or (null process) (buffer-name (process-buffer process))) (with-current-buffer (or (and process (process-buffer process)) (current-buffer)) (save-excursion (goto-char (or (and process (process-buffer process) (marker-buffer (process-mark process)) (process-mark process)) (point-max))) (insert-before-markers (format "%s: %s\n" context (error-message-string err))) (display-buffer (current-buffer))))) (setq preview-error-condition err)) (defun preview-reraise-error (&optional process) "Raise an error that has been logged. Makes sure that PROCESS is removed from the \"Compilation\" tag in the mode line." (when preview-error-condition (unwind-protect (signal (car preview-error-condition) (cdr preview-error-condition)) (setq preview-error-condition nil compilation-in-progress (delq process compilation-in-progress))))) (defun preview-gs-sentinel (process string) "Sentinel function for rendering process. Gets the default PROCESS and STRING arguments and tries to restart Ghostscript if necessary." (condition-case err (let ((status (process-status process))) (when (memq status '(exit signal)) (setq compilation-in-progress (delq process compilation-in-progress))) (when (buffer-name (process-buffer process)) (with-current-buffer (process-buffer process) (goto-char (point-max)) (insert-before-markers "\n" mode-name " " string) (forward-char -1) (insert " at " (substring (current-time-string) 0 -5)) (forward-char 1) (TeX-command-mode-line process) (when (memq status '(exit signal)) ;; process died. ;; Throw away culprit, go on. (let* ((err (concat preview-gs-answer "\n" (process-name process) " " string)) (ov (preview-gs-behead-outstanding err))) (when (and (null ov) preview-gs-queue) (save-excursion (goto-char (if (marker-buffer (process-mark process)) (process-mark process) (point-max))) (insert-before-markers err))) (delete-process process) (if (or (null ov) (eq status 'signal)) ;; if process was killed explicitly by signal, or if nothing ;; was processed, we give up on the matter altogether. (progn (when preview-ps-file (condition-case nil (preview-delete-file preview-ps-file) (file-error nil))) (preview-gs-queue-empty)) ;; restart only if we made progress since last call (let (filenames) (dolist (ov preview-gs-outstanding) (setq filenames (overlay-get ov 'filenames)) (condition-case nil (preview-delete-file (nth 1 filenames)) (file-error nil)) (setcdr filenames nil))) (setq preview-gs-queue (nconc preview-gs-outstanding preview-gs-queue)) (setq preview-gs-outstanding nil) (preview-gs-restart))))))) (error (preview-log-error err "Ghostscript" process))) (preview-reraise-error process)) (defun preview-gs-filter (process string) "Filter function for processing Ghostscript output. Gets the usual PROCESS and STRING parameters, see `set-process-filter' for a description." (with-current-buffer (process-buffer process) (setq preview-gs-answer (concat preview-gs-answer string)) (while (string-match "GS\\(<[0-9]+\\)?>" preview-gs-answer) (let* ((pos (match-end 0)) (answer (substring preview-gs-answer 0 pos))) (setq preview-gs-answer (substring preview-gs-answer pos)) (condition-case err (preview-gs-transact process answer) (error (preview-log-error err "Ghostscript filter" process)))))) (preview-reraise-error)) (defun preview-gs-restart () "Start a new Ghostscript conversion process." (when preview-gs-queue (if preview-gs-sequence (setcar preview-gs-sequence (1+ (car preview-gs-sequence))) (setq preview-gs-sequence (list 1))) (setcdr preview-gs-sequence 1) (let* ((process-connection-type nil) (outfile (format "-dOutputFile=%s" (preview-ps-quote-filename (format "%s/pr%d-%%d.%s" (car TeX-active-tempdir) (car preview-gs-sequence) preview-gs-image-type)))) (process (apply #'start-process "Preview-Ghostscript" (current-buffer) preview-gs-command outfile preview-gs-command-line))) (goto-char (point-max)) (insert-before-markers "Running `Preview-Ghostscript' with ``" (mapconcat #'shell-quote-argument (append (list preview-gs-command outfile) preview-gs-command-line) " ") "''\n") (setq preview-gs-answer "") (process-kill-without-query process) (set-process-sentinel process #'preview-gs-sentinel) (set-process-filter process #'preview-gs-filter) (process-send-string process preview-gs-init-string) (setq mode-name "Preview-Ghostscript") (push process compilation-in-progress) (TeX-command-mode-line process) (set-buffer-modified-p (buffer-modified-p)) process))) (defun preview-gs-open (&optional setup) "Start a Ghostscript conversion pass. SETUP may contain a parser setup function." (let ((image-info (assq preview-image-type preview-gs-image-type-alist))) (setq preview-gs-image-type (nth 1 image-info)) (setq preview-gs-sequence nil) (setq preview-gs-command-line (append preview-gs-options (nthcdr 2 image-info)) preview-gs-init-string (format "{DELAYSAFER{.setsafe}if}stopped pop\ /.preview-BP currentpagedevice/BeginPage get dup \ null eq{pop{pop}bind}if def\ <>setpagedevice\ /preview-do{[count 3 roll save]3 1 roll dup length 0 eq\ {pop}{setpagedevice}{ifelse .runandhide}\ stopped{handleerror quit}if \ aload pop restore}bind def " (preview-gs-color-string preview-colors))) (preview-gs-queue-empty) (preview-parse-messages (or setup #'preview-gs-dvips-process-setup)))) (defun preview-gs-color-value (value) "Return string to be used as color value for an RGB component. Conversion from Emacs color numbers (0 to 65535) in VALUE to Ghostscript floats." (format "%g" (/ value 65535.0))) (defun preview-pdf-color-string (colors) "Return a string that patches PDF foreground color to work properly." ;; Actually, this is rather brutal. It will only be invoked in ;; cases, however, where previously it was not expected that ;; anything readable turned up, anyway. (let ((fg (aref colors 1))) (if fg (concat "/GS_PDF_ProcSet GS_PDF_ProcSet dup maxlength dict copy dup begin\ /graphicsbeginpage{//graphicsbeginpage exec " (mapconcat #'preview-gs-color-value fg " ") " 3 copy rg RG}bind store end readonly store ")))) (defun preview-gs-color-string (colors) "Return a string setting up colors" (let ((bg (aref colors 0)) (fg (aref colors 1)) (mask (aref colors 2)) (border (aref colors 3))) (concat (and (or (and mask border) (and bg (not fg))) "gsave ") (and bg (concat (mapconcat #'preview-gs-color-value bg " ") " setrgbcolor clippath fill ")) (and mask border (format "%s setrgbcolor false setstrokeadjust %g \ setlinewidth clippath strokepath \ matrix setmatrix true \ {2 index{newpath}if round exch round exch moveto pop false}\ {round exch round exch lineto}{curveto}{closepath}\ pathforall pop fill " (mapconcat #'preview-gs-color-value mask " ") (* 2 border))) ;; I hate antialiasing. Warp border to integral coordinates. (and (or (and mask border) (and bg (not fg))) "grestore ") (and fg (concat (mapconcat #'preview-gs-color-value fg " ") " setrgbcolor"))))) (defun preview-dvipng-color-string (colors res) "Return color setup tokens for dvipng. Makes a string of options suitable for passing to dvipng. Pure borderless black-on-white will return an empty string." (let ((bg (aref colors 0)) (fg (aref colors 1)) (mask (aref colors 2)) (border (aref colors 3))) (concat (and bg (format "--bg 'rgb %s' " (mapconcat #'preview-gs-color-value bg " "))) (and fg (format "--fg 'rgb %s' " (mapconcat #'preview-gs-color-value fg " "))) (and mask border (format "--bd 'rgb %s' " (mapconcat #'preview-gs-color-value mask " "))) (and border (format "--bd %d" (max 1 (round (/ (* res border) 72.0)))))))) (defun preview-gs-dvips-process-setup () "Set up Dvips process for conversions via gs." (unless (preview-supports-image-type preview-gs-image-type) (error "preview-image-type setting '%s unsupported by this Emacs" preview-gs-image-type)) (setq preview-gs-command-line (append preview-gs-command-line (list (preview-gs-resolution (preview-hook-enquiry preview-scale) (car preview-resolution) (cdr preview-resolution))))) (if preview-parsed-pdfoutput (preview-pdf2dsc-process-setup) (let ((process (preview-start-dvips preview-fast-conversion))) (setq TeX-sentinel-function #'preview-gs-dvips-sentinel) (list process (current-buffer) TeX-active-tempdir preview-ps-file preview-gs-image-type)))) (defun preview-dvipng-process-setup () "Set up dvipng process for conversion." (setq preview-gs-command-line (append preview-gs-command-line (list (preview-gs-resolution (preview-hook-enquiry preview-scale) (car preview-resolution) (cdr preview-resolution))))) (if preview-parsed-pdfoutput (if (preview-supports-image-type preview-gs-image-type) (preview-pdf2dsc-process-setup) (error "preview-image-type setting '%s unsupported by this Emacs" preview-gs-image-type)) (unless (preview-supports-image-type preview-dvipng-image-type) (error "preview-dvipng-image-type setting '%s unsupported by this Emacs" preview-dvipng-image-type)) (let ((process (preview-start-dvipng))) (setq TeX-sentinel-function #'preview-dvipng-sentinel) (list process (current-buffer) TeX-active-tempdir t preview-dvipng-image-type)))) (defun preview-pdf2dsc-process-setup () (let ((process (preview-start-pdf2dsc))) (setq TeX-sentinel-function #'preview-pdf2dsc-sentinel) (list process (current-buffer) TeX-active-tempdir preview-ps-file preview-gs-image-type))) (defun preview-dvips-abort () "Abort a Dvips run." (preview-gs-queue-empty) (condition-case nil (delete-file (let ((gsfile preview-gs-file)) (with-current-buffer TeX-command-buffer (funcall (car gsfile) "dvi")))) (file-error nil)) (when preview-ps-file (condition-case nil (preview-delete-file preview-ps-file) (file-error nil))) (setq TeX-sentinel-function nil)) (defalias 'preview-dvipng-abort 'preview-dvips-abort) ; "Abort a DviPNG run.") (defun preview-gs-dvips-sentinel (process command &optional gsstart) "Sentinel function for indirect rendering DviPS process. The usual PROCESS and COMMAND arguments for `TeX-sentinel-function' apply. Starts gs if GSSTART is set." (condition-case err (let ((status (process-status process)) (gsfile preview-gs-file)) (cond ((eq status 'exit) (delete-process process) (setq TeX-sentinel-function nil) (condition-case nil (delete-file (with-current-buffer TeX-command-buffer (funcall (car gsfile) "dvi"))) (file-error nil)) (if preview-ps-file (preview-prepare-fast-conversion)) (when gsstart (if preview-gs-queue (preview-gs-restart) (when preview-ps-file (condition-case nil (preview-delete-file preview-ps-file) (file-error nil)))))) ((eq status 'signal) (delete-process process) (preview-dvips-abort)))) (error (preview-log-error err "DviPS sentinel" process))) (preview-reraise-error process)) (defun preview-pdf2dsc-sentinel (process command &optional gsstart) "Sentinel function for indirect rendering PDF process. The usual PROCESS and COMMAND arguments for `TeX-sentinel-function' apply. Starts gs if GSSTART is set." (condition-case err (let ((status (process-status process))) (cond ((eq status 'exit) (delete-process process) (setq TeX-sentinel-function nil) (setq preview-gs-init-string (concat preview-gs-init-string (preview-pdf-color-string preview-colors))) (preview-prepare-fast-conversion) (when gsstart (if preview-gs-queue (preview-gs-restart) (when preview-ps-file (condition-case nil (preview-delete-file preview-ps-file) (file-error nil)))))) ((eq status 'signal) (delete-process process) (preview-dvips-abort)))) (error (preview-log-error err "PDF2DSC sentinel" process))) (preview-reraise-error process)) (defun preview-gs-close (process closedata) "Clean up after PROCESS and set up queue accumulated in CLOSEDATA." (setq preview-gs-queue (nconc preview-gs-queue closedata)) (if process (if preview-gs-queue (if TeX-process-asynchronous (if (and (eq (process-status process) 'exit) (null TeX-sentinel-function)) ;; Process has already finished and run sentinel (progn (when preview-ps-file (condition-case nil (preview-delete-file preview-ps-file) (file-error nil))) (preview-gs-restart)) (setq TeX-sentinel-function `(lambda (process command) (,(if preview-parsed-pdfoutput 'preview-pdf2dsc-sentinel 'preview-gs-dvips-sentinel) process command t)))) (TeX-synchronous-sentinel "Preview-DviPS" (cdr preview-gs-file) process)) ;; pathological case: no previews although we sure thought so. (delete-process process) (unless (eq (process-status process) 'signal) (preview-dvips-abort))))) (defun preview-dvipng-sentinel (process command &optional placeall) "Sentinel function for indirect rendering DviPNG process. The usual PROCESS and COMMAND arguments for `TeX-sentinel-function' apply. Places all snippets if PLACEALL is set." (condition-case err (let ((status (process-status process))) (cond ((eq status 'exit) (delete-process process) (setq TeX-sentinel-function nil) (when placeall (preview-dvipng-place-all))) ((eq status 'signal) (delete-process process) (preview-dvipng-abort)))) (error (preview-log-error err "DviPNG sentinel" process))) (preview-reraise-error process)) (defun preview-dvipng-close (process closedata) "Clean up after PROCESS and set up queue accumulated in CLOSEDATA." (if preview-parsed-pdfoutput (preview-gs-close process closedata) (setq preview-gs-queue (nconc preview-gs-queue closedata)) (if process (if preview-gs-queue (if TeX-process-asynchronous (if (and (eq (process-status process) 'exit) (null TeX-sentinel-function)) ;; Process has already finished and run sentinel (preview-dvipng-place-all) (setq TeX-sentinel-function (lambda (process command) (preview-dvipng-sentinel process command t)))) (TeX-synchronous-sentinel "Preview-DviPNG" (cdr preview-gs-file) process)) ;; pathological case: no previews although we sure thought so. (delete-process process) (unless (eq (process-status process) 'signal) (preview-dvipng-abort)))))) (defun preview-dsc-parse (file) "Parse DSC comments of FILE. Returns a vector with offset/length pairs corresponding to the pages. Page 0 corresponds to the initialization section." (with-temp-buffer (set-buffer-multibyte nil) (insert-file-contents-literally file) (let ((last-pt (point-min)) trailer pagelist lastbegin pt case-fold-search (level 0)) (while (search-forward-regexp "\ %%\\(?:\\(BeginDocument:\\)\\|\ \\(EndDocument[\n\r]\\)\\|\ \\(Page:\\)\\|\ \\(Trailer[\n\r]\\)\\)" nil t) (setq pt (match-beginning 0)) (cond ((null (memq (char-before pt) '(?\C-j ?\C-m nil)))) (trailer (error "Premature %%%%Trailer in `%s' at offsets %d/%d" file trailer pt)) ((match-beginning 1) (if (zerop level) (setq lastbegin pt)) (setq level (1+ level))) ((match-beginning 2) (if (zerop level) (error "Unmatched %%%%EndDocument in `%s' at offset %d" file pt) (setq level (1- level)))) ((> level 0)) ((match-beginning 3) (push (list last-pt (- pt last-pt)) pagelist) (setq last-pt pt)) ((match-beginning 4) (setq trailer pt)))) (unless (zerop level) (error "Unmatched %%%%BeginDocument in `%s' at offset %d" file lastbegin)) (push (list last-pt (- (or trailer (point-max)) last-pt)) pagelist) (vconcat (nreverse pagelist))))) (defun preview-gs-dsc-cvx (page dsc) "Generate PostScript code accessing PAGE in the DSC object. The returned PostScript code will need the file on top of the stack, and will replace it with an executable object corresponding to the wanted page." (let ((curpage (aref dsc page))) (format "dup %d setfileposition %d()/SubFileDecode filter cvx" (1- (car curpage)) (nth 1 curpage)))) (defun preview-ps-quote-filename (str &optional nonrel) "Make a PostScript string from filename STR. The file name is first made relative unless NONREL is not NIL." (unless nonrel (setq str (file-relative-name str))) (let ((index 0)) (while (setq index (string-match "[\\()]" str index)) (setq str (replace-match "\\\\\\&" t nil str) index (+ 2 index))) (concat "(" str ")"))) (defun preview-prepare-fast-conversion () "This fixes up all parameters for fast conversion." (let* ((file (if (consp (car preview-ps-file)) (if (consp (caar preview-ps-file)) (car (last (caar preview-ps-file))) (caar preview-ps-file)) (car preview-ps-file))) (all-files (if (and (consp (car preview-ps-file)) (consp (caar preview-ps-file))) (caar preview-ps-file) (list file)))) (setq preview-gs-dsc (preview-dsc-parse file)) (setq preview-gs-init-string (concat (format "{<> setuserparams \ .locksafe} stopped pop " (mapconcat 'preview-ps-quote-filename all-files "")) preview-gs-init-string (format "[%s(r)file]aload exch %s .runandhide aload pop " (preview-ps-quote-filename file) (preview-gs-dsc-cvx 0 preview-gs-dsc)))))) (defun preview-gs-urgentize (ov buff) "Make a displayed overlay render with higher priority. This function is used in fake conditional display properties for reordering the conversion order to prioritize on-screen images. OV is the overlay in question, and BUFF is the Ghostscript process buffer where the buffer-local queue is located." ;; It does not matter that ov gets queued twice in that process: the ;; first version to get rendered will clear the 'queued property. ;; It cannot get queued more than twice since we remove the ;; conditional display property responsible for requeuing here. ;; We don't requeue if the overlay has been killed (its buffer made ;; nil). Not necessary, but while we are checking... ;; We must return t. (preview-remove-urgentization ov) (when (and (overlay-get ov 'queued) (overlay-buffer ov)) (with-current-buffer buff (push ov preview-gs-queue))) t) (defun preview-gs-place (ov snippet box run-buffer tempdir ps-file imagetype) "Generate an image placeholder rendered over by Ghostscript. This enters OV into all proper queues in order to make it render this image for real later, and returns the overlay after setting a placeholder image. SNIPPET gives the number of the snippet in question for the file to be generated. BOX is a bounding box if we already know one via TeX. RUN-BUFFER is the buffer of the TeX process, TEMPDIR is the correct copy of `TeX-active-tempdir', PS-FILE is a copy of `preview-ps-file', IMAGETYPE is the image type for the file extension." (overlay-put ov 'filenames (unless (eq ps-file t) (list (preview-make-filename (or ps-file (format "preview.%03d" snippet)) tempdir)))) (overlay-put ov 'queued (vector box nil snippet)) (overlay-put ov 'preview-image (list (preview-icon-copy preview-nonready-icon))) (preview-add-urgentization #'preview-gs-urgentize ov run-buffer) (list ov)) (defun preview-mouse-open-error (string) "Display STRING in a new view buffer on click." (let ((buff (get-buffer-create "*Preview-Ghostscript-Error*"))) (with-current-buffer buff (kill-all-local-variables) (set (make-local-variable 'view-exit-action) #'kill-buffer) (setq buffer-undo-list t) (erase-buffer) (insert string) (goto-char (point-min))) (view-buffer-other-window buff))) (defun preview-mouse-open-eps (file &optional position) "Display eps FILE in a view buffer on click. Place point at POSITION, else beginning of file." (let ((default-major-mode (or (assoc-default "x.ps" auto-mode-alist #'string-match) default-major-mode)) (buff (get-file-buffer file))) (save-excursion (if buff (pop-to-buffer buff) (view-file-other-window file)) (goto-char (or position (point-min))) (if (eq major-mode 'ps-mode) ; Bundled with GNU Emacs (message "%s" (substitute-command-keys "\ Try \\[ps-run-start] \\[ps-run-buffer] and \ \\\\[ps-run-mouse-goto-error] on error offset." ))) (if (eq major-mode 'postscript-mode) ; Bundled with XEmacs, limited (message "%s" (substitute-command-keys "\ Try \\[ps-shell] and \\[ps-execute-buffer].")))))) (defun preview-gs-flag-error (ov err) "Make an eps error flag in overlay OV for ERR string." (let* ((filenames (overlay-get ov 'filenames)) (file (car (nth 0 filenames))) (outfile (format "-dOutputFile=%s" (preview-ps-quote-filename (car (nth 1 filenames))))) (ps-open `(lambda() (interactive "@") (preview-mouse-open-error ,(concat (mapconcat #'shell-quote-argument (append (list preview-gs-command outfile) preview-gs-command-line) " ") "\nGS>" preview-gs-init-string (aref (overlay-get ov 'queued) 1) err)))) (str (preview-make-clickable nil preview-error-icon "%s views error message %s more options" ps-open `(lambda() (interactive) (popup-menu '("PostScript error" ["View error" ,ps-open] ["View source" (lambda () (interactive "@") ,(if preview-ps-file `(preview-mouse-open-eps ,(if (consp (car file)) (nth 1 (car file)) (car file)) ,(nth 0 (aref preview-gs-dsc (aref (overlay-get ov 'queued) 2)))) `(preview-mouse-open-eps ,file)))])))))) (overlay-put ov 'strings (cons str str)) (preview-toggle ov))) (defun preview-gs-transact (process answer) "Work off Ghostscript transaction. This routine is the action routine called via the process filter. The Ghostscript process buffer of PROCESS will already be selected, and and the standard output of Ghostscript up to the next prompt will be given as ANSWER." (let ((ov (pop preview-gs-outstanding)) (have-error (not (string-match "\\`GS\\(<[0-9]+\\)?>\\'" answer )))) (when (and ov (overlay-buffer ov)) (let ((queued (overlay-get ov 'queued))) (when queued (let* ((bbox (aref queued 0)) (filenames (overlay-get ov 'filenames)) (oldfile (nth 0 filenames)) (newfile (nth 1 filenames))) (if have-error (preview-gs-flag-error ov answer) (condition-case nil (preview-delete-file oldfile) (file-error nil)) (overlay-put ov 'filenames (cdr filenames)) (preview-replace-active-icon ov (preview-create-icon (car newfile) preview-gs-image-type (preview-ascent-from-bb bbox) (aref preview-colors 2)))) (overlay-put ov 'queued nil))))) (while (and (< (length preview-gs-outstanding) preview-gs-outstanding-limit) (setq ov (pop preview-gs-queue))) (let ((queued (overlay-get ov 'queued))) (when (and queued (not (memq ov preview-gs-outstanding)) (overlay-buffer ov)) (let* ((filenames (overlay-get ov 'filenames)) (oldfile (car (nth 0 (nconc filenames (list (preview-make-filename (format "pr%d-%d.%s" (car preview-gs-sequence) (cdr preview-gs-sequence) preview-gs-image-type) TeX-active-tempdir)))))) (bbox (aset queued 0 (or (and preview-prefer-TeX-bb (aref queued 0)) (and (stringp oldfile) (preview-extract-bb oldfile)) (aref queued 0) (error "No bounding box")))) (snippet (aref queued 2)) (gs-line (format "%s<<%s>>preview-do\n" (if preview-ps-file (concat "dup " (preview-gs-dsc-cvx snippet preview-gs-dsc)) (format "%s(r)file cvx" (preview-ps-quote-filename (if (listp oldfile) (car (last oldfile)) oldfile)))) (if preview-parsed-tightpage "" (format "/PageSize[%g %g]/PageOffset[%g \ %g[1 1 dtransform exch]{0 ge{neg}if exch}forall]" (- (aref bbox 2) (aref bbox 0)) (- (aref bbox 3) (aref bbox 1)) (aref bbox 0) (aref bbox 1)))))) (setcdr preview-gs-sequence (1+ (cdr preview-gs-sequence))) (setq preview-gs-outstanding (nconc preview-gs-outstanding (list ov))) (aset queued 1 gs-line) ;; ignore errors because of dying processes: they will get ;; caught by the sentinel, anyway. (condition-case nil (process-send-string process gs-line) (error nil)))))) (unless preview-gs-outstanding (condition-case nil (process-send-eof process) (error nil))))) (defun preview-hook-enquiry (hook) "Gets a value from a configured hook. HOOK is a list or single item, for which the first resolving to non-nil counts. Entries can be a callable function, or a symbol that is consulted, or a value. Lists are evaluated recursively." (cond ((functionp hook) (funcall hook)) ((consp hook) (let (res) (while (and (not res) hook) (setq res (preview-hook-enquiry (car hook)) hook (cdr hook))) res)) ((and (symbolp hook) (boundp hook)) (symbol-value hook)) (t hook))) (defcustom preview-scale-function #'preview-scale-from-face "*Scale factor for included previews. This can be either a function to calculate the scale, or a fixed number." :group 'preview-appearance :type '(choice (function-item preview-scale-from-face) (const 1.0) (number :value 1.0) (function :value preview-scale-from-face))) (defcustom preview-default-document-pt 10 "*Assumed document point size for `preview-scale-from-face'. If the point size (such as 11pt) of the document cannot be determined from the document options itself, assume this size. This is for matching screen font size and previews." :group 'preview-appearance :type '(choice (const :tag "10pt" 10) (const :tag "11pt" 11) (const :tag "12pt" 12) (number :tag "Other" :value 11.0)) ) (defcustom preview-document-pt-list '(preview-parsed-font-size preview-auctex-font-size preview-default-document-pt) "*How `preview-document-pt' figures out the document size." :group 'preview-appearance :type '(repeat (choice ;; This is a bug: type function seems to match variables, too. (restricted-sexp :match-alternatives (functionp) :tag "Function" :value preview-auctex-font-size) (variable :value preview-parsed-font-size) (number :value 11)))) (defun preview-auctex-font-size () "Calculate the default font size of document. If packages, classes or styles were called with an option like 10pt, size is taken from the first such option if you had let your document be parsed by AucTeX." (catch 'return (dolist (option (TeX-style-list)) (if (string-match "\\`\\([0-9]+\\)pt\\'" option) (throw 'return (string-to-number (match-string 1 option))))))) (defsubst preview-document-pt () "Calculate the default font size of document." (preview-hook-enquiry preview-document-pt-list)) (defun preview-scale-from-face () "Calculate preview scale from `preview-reference-face'. This calculates the scale of EPS images from a document assumed to have a default font size given by function `preview-document-pt' so that they match the reference face in height." `(lambda nil (/ ,(/ (preview-inherited-face-attribute 'preview-reference-face :height 'default) 10.0) (preview-document-pt)))) (defvar preview-min-spec) (defun preview-make-image (symbol) "Make an image from a preview spec list. The first spec that is workable (given the current setting of `preview-min-spec') from the given symbol is used here. The icon is cached in the property list of the symbol." (let ((alist (get 'preview-min-alist symbol))) (cdr (or (assq preview-min-spec alist) (car (put symbol 'preview-min-alist (cons (cons preview-min-spec (preview-filter-specs (symbol-value symbol))) alist))))))) (defun preview-filter-specs (spec-list) "Find the first of the fitting specs and make an image." (let (image) (while (and spec-list (not (setq image (catch 'preview-filter-specs (preview-filter-specs-1 (car spec-list)))))) (setq spec-list (cdr spec-list))) image)) (defun preview-filter-specs-1 (specs) (and specs (if (get 'preview-filter-specs (car specs)) (apply (get 'preview-filter-specs (car specs)) specs) `(,(nth 0 specs) ,(nth 1 specs) ,@(preview-filter-specs-1 (nthcdr 2 specs)))))) (put 'preview-filter-specs :min #'(lambda (keyword value &rest args) (if (> value preview-min-spec) (throw 'preview-filter-specs nil) (preview-filter-specs-1 args)))) (defvar preview-datadir (file-name-directory load-file-name) "The directory relative to which package data may be found. This should be hardwired into the startup file containing the autoloads for preview-latex.") (put 'preview-filter-specs :file #'(lambda (keyword value &rest args) `(:file ,(expand-file-name value (expand-file-name "images" preview-datadir)) ,@(preview-filter-specs-1 args)))) (defun preview-ascent-from-bb (bb) "This calculates the image ascent from its bounding box. The bounding box BB needs to be a 4-component vector of numbers (can be float if available)." ;; baseline is at 1in from the top of letter paper (11in), so it is ;; at 10in from the bottom precisely, which is 720 in PostScript ;; coordinates. If our bounding box has its bottom not above this ;; line, and its top above, we can calculate a useful ascent value. ;; If not, something is amiss. We just use 100 in that case. (let ((bottom (aref bb 1)) (top (aref bb 3))) (if (and (<= bottom 720) (> top 720)) (round (* 100.0 (/ (- top 720.0) (- top bottom)))) 100))) (defface preview-face '((((background dark)) (:background "dark slate gray")) (t (:background "beige"))) "Face to use for the preview source." :group 'preview-appearance) (defface preview-reference-face '((t nil)) "Face consulted for colors and scale of active previews. Fallback to :inherit and 'default implemented." :group 'preview-appearance) (defcustom preview-auto-reveal '(eval (preview-arrived-via (key-binding [left]) (key-binding [right]) 'backward-char 'forward-char)) "*Cause previews to open automatically when entered. Possibilities are: T autoopens, NIL doesn't, a symbol will have its value consulted if it exists, defaulting to NIL if it doesn't. An integer will specify a maximum cursor movement distance. Larger movements won't open the preview. A CONS-cell means to call a function for determining the value. The CAR of the cell is the function to call which receives the CDR of the CONS-cell in the rest of the arguments, while point and current buffer point to the position in question. All of the options show reasonable defaults." :group 'preview-appearance :type '(choice (const :tag "Off" nil) (const :tag "On" t) (symbol :tag "Indirect variable" :value reveal-mode) (integer :tag "Maximum distance" :value 1) (cons :tag "Function call" :value (eval (preview-arrived-via (key-binding [left]) (key-binding [right]))) function (list :tag "Argument list" (repeat :inline t sexp))))) (defun preview-auto-reveal-p (mode distance) "Decide whether to auto-reveal. Returns non-NIL if region should be auto-opened. See `preview-auto-reveal' for definitions of MODE, which gets set to `preview-auto-reveal'. DISTANCE specifies the movement distance with which point has been reached in case it has been a movement starting in the current buffer." (cond ((symbolp mode) (and (boundp mode) (symbol-value mode))) ((integerp mode) (and distance (/= 0 distance) (<= (abs distance) mode))) ((consp mode) (apply (car mode) (cdr mode))) (t mode))) (defun preview-arrived-via (&rest list) "Indicate auto-opening. Returns non-NIL if called by one of the commands in LIST." (memq this-command list)) (defcustom preview-equality-transforms '(identity preview-canonical-spaces) "Transformation functions for region changes. These functions are tried in turn on the strings from the regions of a preview to decide whether a preview is to be considered changed. If any transform leads to equal results, the preview is considered unchanged." :group 'preview-appearance :type '(repeat function)) (defun preview-relaxed-string= (&rest args) "Check for functional equality of arguments. The arguments ARGS are checked for equality by using `preview-equality-transforms' on them until it is exhausted or one transform returns equality." (let ((lst preview-equality-transforms)) (while (and lst (not (apply #'string= (mapcar (car lst) args)))) (setq lst (cdr lst))) lst)) (defun preview-canonical-spaces (arg) "Convert ARG into canonical form. Removes comments and collapses white space, except for multiple newlines." (let (pos) (while (setq pos (string-match "\\s<.*[\n\r][ \t]*" arg pos)) (setq arg (replace-match "" t t arg 0))) (while (setq pos (string-match "[ \t]*\\(\\([ \t]\\)\\|[\n\r][ \t]*\\)" arg pos)) (setq arg (replace-match (if (match-beginning 2) " " "\n") t t arg 0) pos (1+ pos))) (while (setq pos (string-match "\n+" arg pos)) (if (string= "\n" (match-string 0 arg)) (setq arg (replace-match " " t t arg 0) pos (1+ pos)) (setq pos (match-end 0))))) arg) (defun preview-regenerate (ovr) "Pass the modified region in OVR again through LaTeX." (let ((begin (overlay-start ovr)) (end (overlay-end ovr))) (with-current-buffer (overlay-buffer ovr) (preview-delete ovr) (preview-region begin end)))) (defcustom preview-inner-environments '("Bmatrix" "Vmatrix" "aligned" "array" "bmatrix" "cases" "gathered" "matrix" "pmatrix" "smallmatrix" "split" "subarray" "vmatrix") "Environments not to be previewed on their own." :group 'preview-latex :type '(repeat string)) (defun preview-next-border (backwards) "Search for the next interesting border for `preview-at-point'. Searches backwards if BACKWARDS is non-nil." (let (history preview-state (pt (point))) (catch 'exit (while (null (memq (setq preview-state (if backwards (if (> (setq pt (previous-single-char-property-change pt 'preview-state)) (point-min)) (get-char-property (1- pt) 'preview-state) (throw 'exit (or history (point-min)))) (if (< (setq pt (next-single-char-property-change pt 'preview-state)) (point-max)) (get-char-property pt 'preview-state) (throw 'exit (or history (point-max)))))) '(active inactive))) (setq history (and (not preview-state) pt))) (or history pt)))) (defun preview-at-point () "Do the appropriate preview thing at point. If point is positioned on or inside of an unmodified preview area, its visibility is toggled. If not, the surroundings are run through preview. The surroundings don't extend into unmodified previews or past contiguous previews invalidated by modifications. Overriding any other action, if a region is active (`transient-mark-mode' or `zmacs-regions'), it is run through `preview-region'." (interactive) (if (TeX-active-mark) (preview-region (region-beginning) (region-end)) (catch 'exit (dolist (ovr (overlays-in (max (point-min) (1- (point))) (min (point-max) (1+ (point))))) (let ((preview-state (overlay-get ovr 'preview-state))) (when preview-state (unless (eq preview-state 'disabled) (preview-toggle ovr 'toggle (selected-window)) (throw 'exit t))))) (preview-region (preview-next-border t) (preview-next-border nil))))) (defun preview-disabled-string (ov) "Generate a before-string for disabled preview overlay OV." (concat (preview-make-clickable (overlay-get ov 'preview-map) preview-icon "\ %s regenerates preview %s more options" `(lambda() (interactive) (preview-regenerate ,ov))) ;; icon on separate line only for stuff starting on its own line (with-current-buffer (overlay-buffer ov) (save-excursion (save-restriction (widen) (goto-char (overlay-start ov)) (if (bolp) "\n" "")))))) (defun preview-disable (ovr) "Change overlay behaviour of OVR after source edits." (overlay-put ovr 'queued nil) (preview-remove-urgentization ovr) (overlay-put ovr 'preview-image nil) (overlay-put ovr 'timestamp nil) (setcdr (overlay-get ovr 'strings) (preview-disabled-string ovr)) (preview-toggle ovr) (overlay-put ovr 'preview-state 'disabled) (dolist (filename (overlay-get ovr 'filenames)) (condition-case nil (preview-delete-file filename) (file-error nil)) (overlay-put ovr 'filenames nil))) (defun preview-delete (ovr &rest ignored) "Delete preview overlay OVR, taking any associated file along. IGNORED arguments are ignored, making this function usable as a hook in some cases" (let ((filenames (overlay-get ovr 'filenames))) (overlay-put ovr 'filenames nil) (delete-overlay ovr) (dolist (filename filenames) (condition-case nil (preview-delete-file filename) (file-error nil))))) (defun preview-clearout (&optional start end timestamp) "Clear out all previews in the current region. When called interactively, the current region is used. Non-interactively, the region between START and END is affected. Those two values default to the borders of the entire buffer. If TIMESTAMP is non-nil, previews with a `timestamp' property of it are kept." (interactive "r") (dolist (ov (overlays-in (or start (point-min)) (or end (point-max)))) (and (overlay-get ov 'preview-state) (not (and timestamp (equal timestamp (overlay-get ov 'timestamp)))) (preview-delete ov)))) (defun preview-clearout-buffer (&optional buffer) "Clearout BUFFER from previews, current buffer if nil." (interactive) (if buffer (with-current-buffer buffer (preview-clearout)) (preview-clearout))) (defun preview-clearout-section () "Clearout previews from LaTeX section." (interactive) (save-excursion (LaTeX-mark-section) (preview-clearout (region-beginning) (region-end)))) (defun preview-clearout-at-point () "Clearout any preview at point." (interactive) (preview-clearout (max (point-min) (1- (point))) (min (point-max) (1+ (point))))) (defun preview-walk-document (func) "Cycle through all buffers belonging to current document. Each buffer having the same master file as the current file has FUNC called with its current buffer being set to it." (let* ((buffers (buffer-list)) (master (expand-file-name (TeX-master-file t))) (default-buffers (list (current-buffer) (find-buffer-visiting master)))) (while buffers (with-current-buffer (pop buffers) (when (or (memq (current-buffer) default-buffers) (and (memq major-mode '(plain-tex-mode latex-mode)) (or (stringp TeX-master) (eq TeX-master t)) (string= (expand-file-name (TeX-master-file t)) master))) (funcall func)))))) (defun preview-clearout-document () "Clear out all previews in current document. The document consists of all buffers that have the same master file as the current buffer. This makes the current document lose all previews." (interactive) (preview-walk-document #'preview-clearout-buffer)) (defun preview-kill-buffer-cleanup (&optional buf) "This is a cleanup function just for use in hooks. Cleans BUF or current buffer. The difference to `preview-clearout-buffer' is that previews associated with the last buffer modification time are kept." (with-current-buffer (or buf (current-buffer)) (save-restriction (widen) (preview-clearout (point-min) (point-max) (visited-file-modtime))))) (add-hook 'kill-buffer-hook #'preview-kill-buffer-cleanup) (add-hook 'before-revert-hook #'preview-kill-buffer-cleanup) (defvar preview-last-counter) (defun preview-extract-counters (ctr) (setq preview-last-counter (prog1 (copy-sequence ctr) (dolist (elt preview-last-counter) (setq ctr (delete elt ctr))))) (apply #'concat ctr)) (defun desktop-buffer-preview-misc-data (&rest ignored) "Hook function that extracts previews for persistent sessions." (unless (buffer-modified-p) (setq preview-last-counter nil) (save-restriction (widen) (let (save-info (timestamp (visited-file-modtime))) (dolist (ov (sort (overlays-in (point-min) (point-max)) (lambda (x y) (< (overlay-start x) (overlay-start y))))) (when (and (memq (overlay-get ov 'preview-state) '(active inactive)) (null (overlay-get ov 'queued)) (cdr (overlay-get ov 'preview-image))) (push (preview-dissect ov timestamp) save-info))) (and save-info (cons 'preview (cons timestamp (nreverse save-info)))))))) (eval-after-load "desktop" '(add-hook 'desktop-buffer-misc-functions #'desktop-buffer-preview-misc-data)) (defvar preview-temp-dirs nil "List of top level temporary directories in use from preview. Any directory not in this list will be cleared out by preview on first use.") (defun preview-dissect (ov timestamp) "Extract all persistent data from OV and TIMESTAMP it." (let ((filenames (butlast (nth 0 (overlay-get ov 'filenames))))) (overlay-put ov 'timestamp timestamp) (list (overlay-start ov) (overlay-end ov) (cdr (overlay-get ov 'preview-image)) filenames (let ((ctr (overlay-get ov 'preview-counters))) (and ctr (cons (preview-extract-counters (car ctr)) (preview-extract-counters (cdr ctr)))))))) (defun preview-buffer-restore-internal (buffer-misc) "Restore previews from BUFFER-MISC if proper. Remove them if they have expired." (let ((timestamp (visited-file-modtime)) tempdirlist files) (setq preview-parsed-counters nil) (when (eq 'preview (pop buffer-misc)) (preview-get-geometry) (if (equal (pop buffer-misc) timestamp) (dolist (ovdata buffer-misc) (setq tempdirlist (apply #'preview-reinstate-preview tempdirlist timestamp ovdata))) (dolist (ovdata buffer-misc) (setq files (nth 3 ovdata)) (condition-case nil (delete-file (nth 0 files)) (file-error nil)) (unless (member (nth 1 files) tempdirlist) (push (nth 1 files) tempdirlist))) (dolist (dir tempdirlist) (condition-case nil (delete-directory dir) (file-error nil))))))) (defun preview-buffer-restore (buffer-misc) "At end of desktop load, reinstate previews. This delay is so that minor modes changing buffer positions \(like `x-symbol-mode' does) will not wreak havoc. BUFFER-MISC is the appropriate data to be used." (add-hook 'desktop-delay-hook `(lambda () (with-current-buffer ,(current-buffer) (preview-buffer-restore-internal ',buffer-misc))))) (defun desktop-buffer-preview (desktop-buffer-file-name desktop-buffer-name desktop-buffer-misc) "Hook function for restoring persistent previews into a buffer." (when (and desktop-buffer-file-name (file-readable-p desktop-buffer-file-name)) (let ((buf (find-file-noselect desktop-buffer-file-name))) (if (eq (car desktop-buffer-misc) 'preview) (with-current-buffer buf (preview-buffer-restore desktop-buffer-misc) buf) buf)))) (eval-after-load "desktop" '(if (boundp 'desktop-buffer-mode-handlers) (add-to-list 'desktop-buffer-mode-handlers '(latex-mode . desktop-buffer-preview)) (add-hook 'desktop-buffer-handlers '(lambda () (desktop-buffer-preview desktop-buffer-file-name desktop-buffer-name desktop-buffer-misc))))) (defcustom preview-auto-cache-preamble 'ask "*Whether to generate a preamble cache format automatically. Possible values are nil, t, and `ask'." :group 'preview-latex :type '(choice (const :tag "Cache" t) (const :tag "Don't cache" nil) (const :tag "Ask" ask))) (defvar preview-dumped-alist nil "Alist of dumped masters. The elements are (NAME . ASSOC). NAME is the master file name \(without extension), ASSOC is what to do with regard to this format. Possible values: NIL means no format is available and none should be generated. T means no format is available, it should be generated on demand. If the value is a cons cell, the CAR of the cons cell is the command with which the format has been generated, and the CDR is some Emacs-flavor specific value used for maintaining a watch on possible changes of the preamble.") (defun preview-cleanout-tempfiles () "Clean out all directories and files with non-persistent data. This is called as a hook when exiting Emacs." (mapc #'preview-kill-buffer-cleanup (buffer-list)) (mapc #'preview-format-kill preview-dumped-alist)) (defun preview-inactive-string (ov) "Generate before-string for an inactive preview overlay OV. This is for overlays where the source text has been clicked visible. For efficiency reasons it is expected that the buffer is already selected and unnarrowed." (concat (preview-make-clickable (overlay-get ov 'preview-map) preview-icon "\ %s redisplays preview %s more options") ;; icon on separate line only for stuff starting on its own line (with-current-buffer (overlay-buffer ov) (save-excursion (save-restriction (widen) (goto-char (overlay-start ov)) (if (bolp) "\n" "")))))) (defun preview-dvipng-place-all () "Place all images dvipng has created, if any. Deletes the dvi file when finished." (let (filename queued oldfiles snippet) (dolist (ov (prog1 preview-gs-queue (setq preview-gs-queue nil))) (when (and (setq queued (overlay-get ov 'queued)) (setq snippet (aref (overlay-get ov 'queued) 2)) (setq filename (preview-make-filename (format "prev%03d.%s" snippet preview-dvipng-image-type) TeX-active-tempdir))) (if (file-exists-p (car filename)) (progn (overlay-put ov 'filenames (list filename)) (preview-replace-active-icon ov (preview-create-icon (car filename) preview-dvipng-image-type (preview-ascent-from-bb (aref queued 0)) (aref preview-colors 2))) (overlay-put ov 'queued nil)) (push filename oldfiles) (overlay-put ov 'filenames nil) (push ov preview-gs-queue)))) (if (setq preview-gs-queue (nreverse preview-gs-queue)) (progn (preview-start-dvips preview-fast-conversion) (setq TeX-sentinel-function (lambda (process command) (preview-gs-dvips-sentinel process command t))) (dolist (ov preview-gs-queue) (setq snippet (aref (overlay-get ov 'queued) 2)) (overlay-put ov 'filenames (list (preview-make-filename (or preview-ps-file (format "preview.%03d" snippet)) TeX-active-tempdir)))) (while (setq filename (pop oldfiles)) (condition-case nil (preview-delete-file filename) (file-error nil)))) (condition-case nil (let ((gsfile preview-gs-file)) (delete-file (with-current-buffer TeX-command-buffer (funcall (car gsfile) "dvi")))) (file-error nil))))) (defun preview-active-string (ov) "Generate before-string for active image overlay OV." (preview-make-clickable (overlay-get ov 'preview-map) (car (overlay-get ov 'preview-image)) "%s opens text %s more options")) (defun preview-make-filename (file tempdir) "Generate a preview filename from FILE and TEMPDIR. Filenames consist of a CONS-cell with absolute file name as CAR and TEMPDIR as CDR. TEMPDIR is a copy of `TeX-active-tempdir' with the directory name, the reference count and its top directory name elements. If FILE is already in that form, the file name itself gets converted into a CONS-cell with a name and a reference count." (if (consp file) (progn (if (consp (car file)) (setcdr (car file) (1+ (cdr (car file)))) (setcar file (cons (car file) 1))) file) (setcar (nthcdr 2 tempdir) (1+ (nth 2 tempdir))) (cons (expand-file-name file (nth 0 tempdir)) tempdir))) (defun preview-attach-filename (attached file) "Attaches the absolute file name ATTACHED to FILE." (if (listp (caar file)) (setcar (car file) (cons attached (caar file))) (setcar (car file) (list attached (caar file)))) file) (defun preview-delete-file (file) "Delete a preview FILE. See `preview-make-filename' for a description of the data structure. If the containing directory becomes empty, it gets deleted as well." (let ((filename (if (consp (car file)) (and (zerop (setcdr (car file) (1- (cdr (car file))))) (car (car file))) (car file)))) (if filename (unwind-protect (if (listp filename) (dolist (elt filename) (delete-file elt)) (delete-file filename)) (let ((tempdir (cdr file))) (when tempdir (if (> (nth 2 tempdir) 1) (setcar (nthcdr 2 tempdir) (1- (nth 2 tempdir))) (setcdr file nil) (delete-directory (nth 0 tempdir))))))))) (defvar preview-buffer-has-counters nil) (make-variable-buffer-local 'preview-buffer-has-counters) (defun preview-place-preview (snippet start end box counters tempdir place-opts) "Generate and place an overlay preview image. This generates the filename for the preview snippet SNIPPET in the current buffer, and uses it for the region between START and END. BOX is an optional preparsed TeX bounding BOX passed on to the `place' hook. COUNTERS is the info about saved counter structures. TEMPDIR is a copy of `TeX-active-tempdir'. PLACE-OPTS are additional arguments passed into `preview-parse-messages'. Returns a list with additional info from the placement hook. Those lists get concatenated together and get passed to the close hook." (preview-clearout start end tempdir) (let ((ov (make-overlay start end nil nil nil))) (when (fboundp 'TeX-overlay-prioritize) (overlay-put ov 'priority (TeX-overlay-prioritize start end))) (overlay-put ov 'preview-map (preview-make-clickable nil nil nil `(lambda(event) (interactive "e") (preview-toggle ,ov 'toggle event)) `(lambda(event) (interactive "e") (preview-context-menu ,ov event)))) (overlay-put ov 'timestamp tempdir) (when (cdr counters) (overlay-put ov 'preview-counters counters) (setq preview-buffer-has-counters t)) (prog1 (apply #'preview-call-hook 'place ov snippet box place-opts) (overlay-put ov 'strings (list (preview-active-string ov))) (preview-toggle ov t)))) ;; The following is a brutal hack. It relies on `begin' being let to ;; the start of the interesting area when TeX-region-create is being ;; called. (defun preview-counter-find (begin) "Fetch the next preceding or next preview-counters property. Factored out because of compatibility macros XEmacs would not use in advice." ;; The following two lines are bug workaround for Emacs < 22.1. (if (markerp begin) (setq begin (marker-position begin))) (or (car (get-char-property begin 'preview-counters)) (cdr (get-char-property (max (point-min) (1- begin)) 'preview-counters)) (cdr (get-char-property (max (point-min) (1- (previous-single-char-property-change begin 'preview-counters))) 'preview-counters)) (car (get-char-property (next-single-char-property-change begin 'preview-counters) 'preview-counters)))) (defadvice TeX-region-create (around preview-counters) "Write out counter information to region." (let ((TeX-region-extra (concat (and (boundp 'begin) preview-buffer-has-counters (mapconcat #'identity (cons "" (preview-counter-find (symbol-value 'begin))) "\\setcounter")) TeX-region-extra))) ad-do-it)) (defun preview-reinstate-preview (tempdirlist timestamp start end image filename &optional counters) "Reinstate a single preview. This gets passed TEMPDIRLIST, a list consisting of the kind of entries used in `TeX-active-tempdir', and TIMESTAMP, the time stamp under which the file got read in. It returns an augmented list. START and END give the buffer location where the preview is to be situated, IMAGE the image to place there, and FILENAME the file to use: a triple consisting of filename, its temp directory and the corresponding topdir. COUNTERS is saved counter information, if any." (when (or (null filename) (file-readable-p (car filename))) (when filename (unless (equal (nth 1 filename) (car TeX-active-tempdir)) (setq TeX-active-tempdir (or (assoc (nth 1 filename) tempdirlist) (car (push (append (cdr filename) (list 0)) tempdirlist)))) (setcar (cdr TeX-active-tempdir) (car (or (member (nth 1 TeX-active-tempdir) preview-temp-dirs) (progn (add-hook 'kill-emacs-hook #'preview-cleanout-tempfiles t) (push (nth 1 TeX-active-tempdir) preview-temp-dirs)))))) (setcar (nthcdr 2 TeX-active-tempdir) (1+ (nth 2 TeX-active-tempdir))) (setcdr filename TeX-active-tempdir) (setq filename (list filename))) (let ((ov (make-overlay start end nil nil nil))) (when (fboundp 'TeX-overlay-prioritize) (overlay-put ov 'priority (TeX-overlay-prioritize start end))) (overlay-put ov 'preview-map (preview-make-clickable nil nil nil `(lambda(event) (interactive "e") (preview-toggle ,ov 'toggle event)) `(lambda(event) (interactive "e") (preview-context-menu ,ov event)))) (when counters (overlay-put ov 'preview-counters (cons (mapcar #'cdr (if (string= (car counters) "") preview-parsed-counters (setq preview-parsed-counters (preview-parse-counters (car counters))))) (mapcar #'cdr (if (string= (cdr counters) "") preview-parsed-counters (setq preview-parsed-counters (preview-parse-counters (cdr counters))))))) (setq preview-buffer-has-counters t)) (overlay-put ov 'filenames filename) (overlay-put ov 'preview-image (cons (preview-import-image image) image)) (overlay-put ov 'strings (list (preview-active-string ov))) (overlay-put ov 'timestamp timestamp) (preview-toggle ov t))) tempdirlist) (defun preview-back-command (&optional nocomplex) "Move backward a TeX token. If NOCOMPLEX is set, only basic tokens and no argument sequences will be skipped over backwards." (let ((oldpos (point)) oldpoint) (condition-case nil (or (search-backward-regexp "\\(\\$\\$?\ \\|\\\\[^a-zA-Z@]\ \\|\\\\[a-zA-Z@]+\ \\|\\\\begin[ \t]*{[^}]+}\ \\)\\=" (line-beginning-position) t) nocomplex (if (eq ?\) (char-syntax (char-before))) (while (progn (setq oldpoint (point)) (backward-sexp) (and (not (eq oldpoint (point))) (eq ?\( (char-syntax (char-after)))))) (backward-char))) (error (goto-char oldpos))))) (defcustom preview-required-option-list '("active" "tightpage" "auctex" (preview-preserve-counters "counters")) "Specifies required options passed to the preview package. These are passed regardless of whether there is an explicit \\usepackage of that package present." :group 'preview-latex :type preview-expandable-string) (defcustom preview-preserve-counters nil "Try preserving counters for partial runs if set." :group 'preview-latex :type 'boolean) (defcustom preview-default-option-list '("displaymath" "floats" "graphics" "textmath" "sections" "footnotes") "*Specifies default options to pass to preview package. These options are only used when the LaTeX document in question does not itself load the preview package, namely when you use preview on a document not configured for preview. \"auctex\", \"active\", \"dvips\" and \"delayed\" need not be specified here." :group 'preview-latex :type '(list (set :inline t :tag "Options known to work" :format "%t:\n%v%h" :doc "The above options are all the useful ones at the time of the release of this package. You should not need \"Other options\" unless you upgraded to a fancier version of just the LaTeX style. Please also note that `psfixbb' fails to have an effect if `preview-fast-conversion' or `preview-prefer-TeX-bb' are selected." (const "displaymath") (const "floats") (const "graphics") (const "textmath") (const "sections") (const "footnotes") (const "showlabels") (const "psfixbb")) (set :tag "Expert options" :inline t :format "%t:\n%v%h" :doc "Expert options should not be enabled permanently." (const "noconfig") (const "showbox") (const "tracingall")) (repeat :inline t :tag "Other options" (string)))) (defcustom preview-default-preamble '("\\RequirePackage[" ("," . preview-default-option-list) "]{preview}[2004/11/05]") "*Specifies default preamble code to add to a LaTeX document. If the document does not itself load the preview package, that is, when you use preview on a document not configured for preview, this list of LaTeX commands is inserted just before \\begin{document}." :group 'preview-latex :type preview-expandable-string) (defcustom preview-LaTeX-command '("%`%l \"\\nonstopmode\\nofiles\ \\PassOptionsToPackage{" ("," . preview-required-option-list) "}{preview}\ \\AtBeginDocument{\\ifx\\ifPreview\\undefined" preview-default-preamble "\\fi}\"%' %t") "*Command used for starting a preview. See description of `TeX-command-list' for details." :group 'preview-latex :type preview-expandable-string) (defun preview-goto-info-page () "Read documentation for preview-latex in the info system." (interactive) (info "(preview-latex)")) (eval-after-load 'info '(add-to-list 'Info-file-list-for-emacs '("preview" . "preview-latex"))) (defvar preview-map (let ((map (make-sparse-keymap))) (define-key map "\C-p" #'preview-at-point) (define-key map "\C-r" #'preview-region) (define-key map "\C-b" #'preview-buffer) (define-key map "\C-d" #'preview-document) (define-key map "\C-f" #'preview-cache-preamble) (define-key map "\C-c\C-f" #'preview-cache-preamble-off) (define-key map "\C-i" #'preview-goto-info-page) ;; (define-key map "\C-q" #'preview-paragraph) (define-key map "\C-e" #'preview-environment) (define-key map "\C-s" #'preview-section) (define-key map "\C-w" #'preview-copy-region-as-mml) (define-key map "\C-c\C-p" #'preview-clearout-at-point) (define-key map "\C-c\C-r" #'preview-clearout) (define-key map "\C-c\C-s" #'preview-clearout-section) (define-key map "\C-c\C-b" #'preview-clearout-buffer) (define-key map "\C-c\C-d" #'preview-clearout-document) map)) (defun preview-copy-text (ov) "Copy the text of OV into the kill buffer." (save-excursion (set-buffer (overlay-buffer ov)) (copy-region-as-kill (overlay-start ov) (overlay-end ov)))) (defun preview-copy-mml (ov) "Copy an MML representation of OV into the kill buffer. This can be used to send inline images in mail and news when using MML mode." (when (catch 'badcolor (let ((str (car (preview-format-mml ov)))) (if str (if (eq last-command 'kill-region) (kill-append str nil) (kill-new str)) (error "No image file available"))) nil) (let (preview-transparent-border) (preview-regenerate ov)))) (defun preview-copy-region-as-mml (start end) (interactive "r") (when (catch 'badcolor (let (str lst dont-ask) (dolist (ov (overlays-in start end)) (when (setq str (preview-format-mml ov dont-ask)) (setq dont-ask (cdr str)) (and (>= (overlay-start ov) start) (<= (overlay-end ov) end) (push (list (- (overlay-start ov) start) (- (overlay-end ov) start) (car str)) lst)))) (setq str (buffer-substring start end)) (dolist (elt (nreverse (sort lst #'car-less-than-car))) (setq str (concat (substring str 0 (nth 0 elt)) (nth 2 elt) (substring str (nth 1 elt))))) (if (eq last-command 'kill-region) (kill-append str nil) (kill-new str))) nil) (let (preview-transparent-border) (preview-region start end)))) (autoload 'mailcap-extension-to-mime "mailcap") (defun preview-format-mml (ov &optional dont-ask) "Return an MML representation of OV as string. This can be used to send inline images in mail and news when using MML mode. If there is nothing current available, NIL is returned. If the image has a colored border and the user wants it removed when asked (unless DONT-ASK is set), 'badcolor is thrown a t. The MML is returned in the car of the result, DONT-ASK in the cdr." (and (memq (overlay-get ov 'preview-state) '(active inactive)) (not (overlay-get ov 'queued)) (let* ((text (with-current-buffer (overlay-buffer ov) (buffer-substring (overlay-start ov) (overlay-end ov)))) (image (cdr (overlay-get ov 'preview-image))) file type) (cond ((consp image) (and (not dont-ask) (nth 3 image) (if (y-or-n-p "Replace colored borders? ") (throw 'badcolor t) (setq dont-ask t))) (setq file (car (car (last (overlay-get ov 'filenames)))) type (mailcap-extension-to-mime (file-name-extension file))) (cons (format "<#part %s description=\"%s\" filename=%s> <#/part>" (if type (format "type=\"%s\" disposition=inline" type) "disposition=attachment") (if (string-match "[\n\"]" text) "preview-latex image" text) (if (string-match "[ \n<>]" file) (concat "\"" file "\"") file)) dont-ask)) ((stringp image) (cons image dont-ask)))))) (defun preview-active-contents (ov) "Check whether we have a valid image associated with OV." (and (memq (overlay-get ov 'preview-state) '(active inactive)) t)) (defun preview-context-menu (ov ev) "Pop up a menu for OV at position EV." (popup-menu `("Preview" ["Toggle" (preview-toggle ,ov 'toggle ',ev) (preview-active-contents ,ov)] ["Regenerate" (preview-regenerate ,ov)] ["Remove" (preview-delete ,ov)] ["Copy text" (preview-copy-text ,ov)] ["Copy MIME" (preview-copy-mml ,ov) (preview-active-contents ,ov)]) ev)) (defvar preview-TeX-style-dir) (defun preview-TeX-style-cooked () "Return `preview-TeX-style-dir' in cooked form. This will be fine for prepending to a `TEXINPUT' style environment variable, including an initial `.' at the front." (if (or (zerop (length preview-TeX-style-dir)) (member (substring preview-TeX-style-dir -1) '(";" ":"))) preview-TeX-style-dir (let ((sep (cond ((stringp TeX-kpathsea-path-delimiter) TeX-kpathsea-path-delimiter) ((string-match "\\`.[:]" (if (file-name-absolute-p preview-TeX-style-dir) preview-TeX-style-dir (expand-file-name preview-TeX-style-dir))) ";") (t ":")))) (concat "." sep preview-TeX-style-dir sep)))) (defun preview-set-texinputs (&optional remove) "Add `preview-TeX-style-dir' into `TEXINPUTS' variables. With prefix argument REMOVE, remove it again." (interactive "P") (let ((case-fold-search nil) (preview-TeX-style-dir (preview-TeX-style-cooked)) pattern) (if remove (progn (setq pattern (concat "\\`\\(TEXINPUTS[^=]*\\)=\\(.*\\)" (regexp-quote preview-TeX-style-dir))) (dolist (env (copy-sequence process-environment)) (if (string-match pattern env) (setenv (match-string 1 env) (and (or (< (match-beginning 2) (match-end 2)) (< (match-end 0) (length env))) (concat (match-string 2 env) (substring env (match-end 0)))))))) (setq pattern (regexp-quote preview-TeX-style-dir)) (dolist (env (cons "TEXINPUTS=" (copy-sequence process-environment))) (if (string-match "\\`\\(TEXINPUTS[^=]*\\)=" env) (unless (string-match pattern env) (setenv (match-string 1 env) (concat preview-TeX-style-dir (substring env (match-end 0)))))))))) (defcustom preview-TeX-style-dir nil "This variable contains the location of uninstalled TeX styles. If this is nil, the preview styles are considered to be part of the installed TeX system. Otherwise, it can either just specify an absolute directory, or it can be a complete TEXINPUTS specification. If it is the latter, it has to be followed by the character with which kpathsea separates path components, either `:' on Unix-like systems, or `;' on Windows-like systems. And it should be preceded with .: or .; accordingly in order to have . first in the search path. The `TEXINPUT' environment type variables will get this prepended at load time calling \\[preview-set-texinputs] to reflect this. You can permanently install the style files using \\[preview-install-styles]. Don't set this variable other than with customize so that its changes get properly reflected in the environment." :group 'preview-latex :set (lambda (var value) (and (boundp var) (symbol-value var) (preview-set-texinputs t)) (set var value) (and (symbol-value var) (preview-set-texinputs))) :type '(choice (const :tag "Installed" nil) (string :tag "Style directory or TEXINPUTS path"))) ;;;###autoload (defun preview-install-styles (dir &optional force-overwrite force-save) "Installs the TeX style files into a permanent location. This must be in the TeX search path. If FORCE-OVERWRITE is greater than 1, files will get overwritten without query, if it is less than 1 or nil, the operation will fail. The default of 1 for interactive use will query. Similarly FORCE-SAVE can be used for saving `preview-TeX-style-dir' to record the fact that the uninstalled files are no longer needed in the search path." (interactive "DPermanent location for preview TeX styles pp") (unless preview-TeX-style-dir (error "Styles are already installed")) (dolist (file (or (condition-case nil (directory-files (progn (string-match "\\`\\(\\.[:;]\\)?\\(.*?\\)\\([:;]\\)?\\'" preview-TeX-style-dir) (match-string 2 preview-TeX-style-dir)) t "\\.\\(sty\\|def\\|cfg\\)\\'") (error nil)) (error "Can't find files to install"))) (copy-file file dir (cond ((eq force-overwrite 1) 1) ((numberp force-overwrite) (> force-overwrite 1)) (t force-overwrite)))) (if (cond ((eq force-save 1) (y-or-n-p "Stop using non-installed styles permanently ")) ((numberp force-save) (> force-save 1)) (t force-save)) (customize-save-variable 'preview-TeX-style-dir nil) (customize-set-variable 'preview-TeX-style-dir nil))) ;;;###autoload (defun LaTeX-preview-setup () "Hook function for embedding the preview package into AUCTeX. This is called by `LaTeX-mode-hook' and changes AUCTeX variables to add the preview functionality." (remove-hook 'LaTeX-mode-hook #'LaTeX-preview-setup) (add-hook 'LaTeX-mode-hook #'preview-mode-setup) (define-key LaTeX-mode-map "\C-c\C-p" preview-map) (easy-menu-define preview-menu LaTeX-mode-map "This is the menu for preview-latex." '("Preview" "Generate previews" ["(or toggle) at point" preview-at-point] ["for environment" preview-environment] ["for section" preview-section] ["for region" preview-region (preview-mark-active)] ["for buffer" preview-buffer] ["for document" preview-document] "---" "Remove previews" ["at point" preview-clearout-at-point] ["from section" preview-clearout-section] ["from region" preview-clearout (preview-mark-active)] ["from buffer" preview-clearout-buffer] ["from document" preview-clearout-document] "---" "Turn preamble cache" ["on" preview-cache-preamble] ["off" preview-cache-preamble-off] "---" ("Customize" ["Browse options" (customize-group 'preview)] ["Extend this menu" (easy-menu-add-item nil '("Preview") (customize-menu-create 'preview))]) ["Read documentation" preview-goto-info-page] ["Report Bug" preview-report-bug])) (if (eq major-mode 'latex-mode) (preview-mode-setup)) (if (boundp 'desktop-buffer-misc) (preview-buffer-restore desktop-buffer-misc))) (defun preview-clean-subdir (dir) "Cleans out a temporary DIR with preview image files." (condition-case err (progn (mapc #'delete-file (directory-files dir t "\\`pr" t)) (delete-directory dir)) (error (message "Deletion of `%s' failed: %s" dir (error-message-string err))))) (defun preview-clean-topdir (topdir) "Cleans out TOPDIR from temporary directories. This does not erase the directory itself since its permissions might be needed for colloborative work on common files." (mapc #'preview-clean-subdir (condition-case nil (directory-files topdir t "\\`tmp" t) (file-error nil)))) (defun preview-create-subdirectory () "Create a temporary subdir for the current TeX process. If necessary, generates a fitting top directory or cleans out an existing one (if not yet visited in this session), then returns the name of the created subdirectory relative to the master directory, in shell-quoted form. `TeX-active-tempdir' is set to the corresponding TEMPDIR descriptor as described in `preview-make-filename'. The directory is registered in `preview-temp-dirs' in order not to be cleaned out later while in use." (let ((topdir (expand-file-name (TeX-active-master "prv")))) (if (file-directory-p topdir) (unless (member topdir preview-temp-dirs) ;; Cleans out the top preview directory by ;; removing subdirs possibly left from a previous session. (preview-clean-topdir topdir) (push topdir preview-temp-dirs)) (make-directory topdir) (add-to-list 'preview-temp-dirs topdir)) (add-hook 'kill-emacs-hook #'preview-cleanout-tempfiles t) (setq TeX-active-tempdir (list (make-temp-file (expand-file-name "tmp" (file-name-as-directory topdir)) t) topdir 0)) (shell-quote-argument (concat (file-name-as-directory (file-name-nondirectory topdir)) (file-name-nondirectory (nth 0 TeX-active-tempdir)))))) ;; Hook into TeX immediately if it's loaded, use LaTeX-mode-hook if not. (if (featurep 'latex) (LaTeX-preview-setup) (add-hook 'LaTeX-mode-hook #'LaTeX-preview-setup)) ;;;###autoload (add-hook 'LaTeX-mode-hook #'LaTeX-preview-setup) (defun preview-parse-counters (string) "Extract counter information from STRING." (let ((list preview-parsed-counters) (pos 0)) (while (eq pos (string-match " *\\({\\([^{}]+\\)}{[-0-9]+}\\)" string pos)) (setcdr (or (assoc (match-string 2 string) list) (car (push (list (match-string 2 string)) list))) (match-string 1 string)) (setq pos (match-end 1))) list)) (defun preview-parse-tightpage (string) "Build tightpage vector from STRING," (read (concat "[" string "]"))) (defvar preview-parse-variables '(("Fontsize" preview-parsed-font-size "\\` *\\([0-9.]+\\)pt\\'" 1 string-to-number) ("Magnification" preview-parsed-magnification "\\` *\\([0-9]+\\)\\'" 1 string-to-number) ("PDFoutput" preview-parsed-pdfoutput "" 0 stringp) ("Counters" preview-parsed-counters ".*" 0 preview-parse-counters) ("Tightpage" preview-parsed-tightpage "\\` *\\(-?[0-9]+ *\\)\\{4\\}\\'" 0 preview-parse-tightpage))) (defun preview-error-quote (string run-coding-system) "Turn STRING with potential ^^ sequences into a regexp. To preserve sanity, additional ^ prefixes are matched literally, so the character represented by ^^^ preceding extended characters will not get matched, usually." (let (output case-fold-search) (when (featurep 'mule) (setq string (encode-coding-string string run-coding-system))) (while (string-match "\\^\\{2,\\}\\(\\([@-_?]\\)\\|[8-9a-f][0-9a-f]\\)" string) (setq output (concat output (regexp-quote (substring string 0 (- (match-beginning 1) 2))) (if (match-beginning 2) (concat "\\(?:" (regexp-quote (substring string (- (match-beginning 1) 2) (match-end 0))) "\\|" (char-to-string (logxor (aref string (match-beginning 2)) 64)) "\\)") (char-to-string (string-to-number (match-string 1 string) 16)))) string (substring string (match-end 0)))) (setq output (concat output (regexp-quote string))) (if (featurep 'mule) (decode-coding-string output (or (and (boundp 'TeX-japanese-process-output-coding-system) TeX-japanese-process-output-coding-system) buffer-file-coding-system)) output))) (defun preview-parse-messages (open-closure) "Turn all preview snippets into overlays. This parses the pseudo error messages from the preview document style for LaTeX. OPEN-CLOSURE is called once it is certain that we have a valid output file, and it has to return in its CAR the PROCESS parameter for the CLOSE call, and in its CDR the final stuff for the placement hook." (with-temp-message "locating previews..." (let (TeX-error-file TeX-error-offset snippet box counters file line (lsnippet 0) lstart (lfile "") lline lbuffer lpoint lcounters string after-string error context-start context offset parsestate (case-fold-search nil) (run-buffer (current-buffer)) (run-coding-system preview-coding-system) (run-directory default-directory) tempdir close-data open-data fast-hook slow-hook) ;; clear parsing variables (dolist (var preview-parse-variables) (set (nth 1 var) nil)) (goto-char (point-min)) (unwind-protect (progn (while (re-search-forward "\ ^\\(!\\|\\(.*?\\):[0-9]+:\\) \\|\ \(\\(/*\ \\(?:\\.+[^()\r\n{} /]*\\|[^()\r\n{} ./]+\ \\(?: [^()\r\n{} ./]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)\ \\(?:/+\\(?:\\.+[^()\r\n{} /]*\\|[^()\r\n{} ./]+\ \\(?: [^()\r\n{} ./]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)?\\)*\\)\ )*\\(?: \\|\r?$\\)\\|\ \\()+\\)\\|\ !\\(?:offset(\\([---0-9]+\\))\\|\ name(\\([^)]+\\))\\)\\|\ ^Preview: \\([a-zA-Z]+\\) \\([^\n\r]*\\)\r?$" nil t) ;;; Ok, here is a line by line breakdown: ;;; match-alternative 1: ;;; error indicator for TeX error, either style. ;;; match-alternative 2: ;;; The same, but file-line-error-style, matching on file name. ;;; match-alternative 3: ;;; Too ugly to describe in detail. In short, we try to catch file ;;; names built from path components that don't contain spaces or ;;; other special characters once the file extension has started. ;;; ;;; Position for searching immediately after the file name so as to ;;; not miss closing parens or something. ;;; (match-string 3) is the file name. ;;; match-alternative 4: ;;; )+\( \|$\) ;;; a closing paren followed by the end of line or a space: a just ;;; closed file. ;;; match-alternative 5 (wrapped into one shy group with ;;; match-alternative 6, so that the match on first char is slightly ;;; faster): ;;; !offset(\([---0-9]+\)) ;;; an AUCTeX offset message. (match-string 5) is the offset itself ;;; !name(\([^)]+\)) ;;; an AUCTeX file name message. (match-string 6) is the file name ;;; TODO: Actually, the latter two should probably again match only ;;; after a space or newline, since that it what \message produces. ;;;disabled in prauctex.def: ;;;\(?:Ov\|Und\)erfull \\.*[0-9]*--[0-9]* ;;;\(?:.\{79\} ;;;\)*.*$\)\| ;;; This would have caught overfull box messages that consist of ;;; several lines of context all with 79 characters in length except ;;; of the last one. prauctex.def kills all such messages. (setq file (match-string-no-properties 2)) (cond ((match-beginning 1) (if (looking-at "\ \\(?:Preview\\|Package Preview Error\\): Snippet \\([---0-9]+\\) \\(started\\|ended\\(\ \\.? *(\\([---0-9]+\\)\\+\\([---0-9]+\\)x\\([---0-9]+\\))\\)?\\)\\.") (progn (when file (unless TeX-error-file (push nil TeX-error-file) (push nil TeX-error-offset)) (unless (car TeX-error-offset) (rplaca TeX-error-file file))) (setq snippet (string-to-number (match-string 1)) box (unless (string= (match-string 2) "started") (if (match-string 4) (mapcar #'(lambda (x) (* (preview-get-magnification) (string-to-number x))) (list (match-string 4) (match-string 5) (match-string 6))) t)) counters (mapcar #'cdr preview-parsed-counters) error (progn (setq lpoint (point)) (end-of-line) (buffer-substring lpoint (point))) ;; And the context for the help window. context-start (point) ;; And the line number to position the cursor. ;;; variant 1: profiling seems to indicate the regexp-heavy solution ;;; to be favorable. Removing incomplete characters from the error ;;; context is an absolute nuisance. line (and (re-search-forward "\ ^l\\.\\([0-9]+\\) \\(\\.\\.\\.\\(?:\\^*\\(?:[89a-f][0-9a-f]\\|[]@-\\_?]\\)\\|\ \[0-9a-f]?\\)\\)?\\([^\n\r]*?\\)\r? \\([^\n\r]*?\\)\\(\\(?:\\^+[89a-f]?\\)?\\.\\.\\.\\)?\r?$" nil t) (string-to-number (match-string 1))) ;; And a string of the context to search for. string (and line (match-string 3)) after-string (and line (buffer-substring (+ (match-beginning 4) (- (match-end 3) (match-beginning 0))) (match-end 4))) ;; And we have now found to the end of the context. context (buffer-substring context-start (point)) ;; We may use these in another buffer. offset (or (car TeX-error-offset) 0) file (car TeX-error-file)) (when (and (stringp file) (or (string= file "") (TeX-match-extension file))) ;; if we are the first time round, check for fast hooks: (when (null parsestate) (setq open-data (save-excursion (funcall open-closure)) tempdir TeX-active-tempdir) (dolist (lst (if (listp TeX-translate-location-hook) TeX-translate-location-hook (list TeX-translate-location-hook))) (let ((fast (and (symbolp lst) (get lst 'TeX-translate-via-list)))) (if fast (setq fast-hook (nconc fast-hook (list fast))) (setq slow-hook (nconc slow-hook (list lst))))))) (condition-case err (save-excursion (run-hooks 'slow-hook)) (error (preview-log-error err "Translation hook"))) (push (vector file (+ line offset) string after-string snippet box counters) parsestate))) ;; else normal error message (forward-line) (re-search-forward "^l\\.[0-9]" nil t) (forward-line 2))) ((match-beginning 3) ;; New file -- Push on stack (push (match-string-no-properties 3) TeX-error-file) (push nil TeX-error-offset) (goto-char (match-end 3))) ((match-beginning 4) ;; End of file -- Pop from stack (when (> (length TeX-error-file) 1) (pop TeX-error-file) (pop TeX-error-offset)) (goto-char (1+ (match-beginning 0)))) ((match-beginning 5) ;; Hook to change line numbers (setq TeX-error-offset (list (string-to-number (match-string 5))))) ((match-beginning 6) ;; Hook to change file name (setq TeX-error-file (list (match-string-no-properties 6)))) ((match-beginning 7) (let ((var (assoc (match-string-no-properties 7) preview-parse-variables)) (offset (- (match-beginning 0) (match-beginning 8))) (str (match-string-no-properties 8))) ;; paste together continuation lines: (while (= (- (length str) offset) 79) (search-forward-regexp "^\\([^\n\r]*\\)\r?$") (setq offset (- (length str)) str (concat str (match-string-no-properties 1)))) (when (and var (string-match (nth 2 var) str)) (set (nth 1 var) (funcall (nth 4 var) (match-string-no-properties (nth 3 var) str)))))))) (when (null parsestate) (error "LaTeX found no preview images"))) (unwind-protect (save-excursion (setq parsestate (nreverse parsestate)) (condition-case err (dolist (fun fast-hook) (setq parsestate (save-excursion (funcall fun parsestate)))) (error (preview-log-error err "Fast translation hook"))) (setq snippet 0) (dolist (state parsestate) (setq lsnippet snippet file (aref state 0) line (aref state 1) string (aref state 2) after-string (aref state 3) snippet (aref state 4) box (aref state 5) counters (aref state 6)) (unless (string= lfile file) (set-buffer (if (string= file "") (with-current-buffer run-buffer TeX-command-buffer) (find-file-noselect (expand-file-name file run-directory)))) (setq lfile file)) (save-excursion (save-restriction (widen) ;; a fast hook might have positioned us already: (if (number-or-marker-p string) (progn (goto-char string) (setq lpoint (if (number-or-marker-p after-string) after-string (line-beginning-position)))) (if (and (eq (current-buffer) lbuffer) (<= lline line)) ;; while Emacs does the perfectly correct ;; thing even when when the line differences ;; get zero or negative, I don't trust this ;; to be universally the case across other ;; implementations. Besides, if the line ;; number gets smaller again, we are probably ;; rereading the file, and restarting from ;; the beginning will probably be faster. (progn (goto-char lpoint) (if (/= lline line) (if (eq selective-display t) (re-search-forward "[\n\C-m]" nil 'end (- line lline)) (forward-line (- line lline))))) (goto-line line)) (setq lpoint (point)) (cond ((search-forward (concat string after-string) (line-end-position) t) (backward-char (length after-string))) ;;ok, transform ^^ sequences ((search-forward-regexp (concat "\\(" (setq string (preview-error-quote string run-coding-system)) "\\)" (setq after-string (preview-error-quote after-string run-coding-system))) (line-end-position) t) (goto-char (match-end 1))) ((search-forward-regexp (concat "\\(" (if (string-match "^[^\0-\177]\\{1,6\\}" string) (setq string (substring string (match-end 0))) string) "\\)" (if (string-match "[^\0-\177]\\{1,6\\}$" after-string) (setq after-string (substring after-string 0 (match-beginning 0))))) (line-end-position) t) (goto-char (match-end 1))) (t (search-forward-regexp string (line-end-position) t)))) (setq lline line lbuffer (current-buffer)) (if box (progn (if (and lstart (= snippet lsnippet)) (setq close-data (nconc (preview-place-preview snippet (save-excursion (preview-back-command (= (prog1 (point) (goto-char lstart)) lstart)) (point)) (point) (preview-TeX-bb box) (cons lcounters counters) tempdir (cdr open-data)) close-data)) (with-current-buffer run-buffer (preview-log-error (list 'error (format "End of Preview snippet %d unexpected" snippet)) "Parser"))) (setq lstart nil)) ;; else-part of if box (setq lstart (point) lcounters counters) ;; >= because snippets in between might have ;; been ignored because of TeX-default-extension (unless (>= snippet (1+ lsnippet)) (with-current-buffer run-buffer (preview-log-error (list 'error (format "Preview snippet %d out of sequence" snippet)) "Parser")))))))) (preview-call-hook 'close (car open-data) close-data)))))) (defun preview-get-geometry () "Transfer display geometry parameters from current display. Returns list of scale, resolution and colors. Calculation is done in current buffer." (condition-case err (let* ((geometry (list (preview-hook-enquiry preview-scale-function) (cons (/ (* 25.4 (display-pixel-width)) (display-mm-width)) (/ (* 25.4 (display-pixel-height)) (display-mm-height))) (preview-get-colors))) (preview-min-spec (* (cdr (nth 1 geometry)) (/ (preview-inherited-face-attribute 'preview-reference-face :height 'default) 720.0)))) (setq preview-icon (preview-make-image 'preview-icon-specs) preview-error-icon (preview-make-image 'preview-error-icon-specs) preview-nonready-icon (preview-make-image 'preview-nonready-icon-specs)) geometry) (error (error "Display geometry unavailable: %s" (error-message-string err))))) (defun preview-set-geometry (geometry) "Set geometry variables from GEOMETRY. Buffer-local `preview-scale', `preview-resolution', and `preview-colors' are set as given." (setq preview-scale (nth 0 geometry) preview-resolution (nth 1 geometry) preview-colors (nth 2 geometry))) (defun preview-start-dvipng () "Start a DviPNG process.." (let* ((file preview-gs-file) tempdir (res (/ (* (car preview-resolution) (preview-hook-enquiry preview-scale)) (preview-get-magnification))) (resolution (format " -D%d " res)) (colors (preview-dvipng-color-string preview-colors res)) (command (with-current-buffer TeX-command-buffer (prog1 (concat (TeX-command-expand preview-dvipng-command (car file)) " " colors resolution) (setq tempdir TeX-active-tempdir)))) (name "Preview-DviPNG")) (setq TeX-active-tempdir tempdir) (goto-char (point-max)) (insert-before-markers "Running `" name "' with ``" command "''\n") (setq mode-name name) (setq TeX-sentinel-function (lambda (process name) (message "%s: done." name))) (if TeX-process-asynchronous (let ((process (start-process name (current-buffer) TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (TeX-command-mode-line process) (set-process-filter process 'TeX-command-filter) (set-process-sentinel process 'TeX-command-sentinel) (set-marker (process-mark process) (point-max)) (push process compilation-in-progress) (sit-for 0) process) (setq mode-line-process ": run") (set-buffer-modified-p (buffer-modified-p)) (sit-for 0) ; redisplay (call-process TeX-shell nil (current-buffer) nil TeX-shell-command-option command)))) (defun preview-start-dvips (&optional fast) "Start a DviPS process. If FAST is set, do a fast conversion." (let* ((file preview-gs-file) tempdir (command (with-current-buffer TeX-command-buffer (prog1 (TeX-command-expand (if fast preview-fast-dvips-command preview-dvips-command) (car file)) (setq tempdir TeX-active-tempdir)))) (name "Preview-DviPS")) (setq TeX-active-tempdir tempdir) (setq preview-ps-file (and fast (preview-make-filename (preview-make-filename "preview.ps" tempdir) tempdir))) (goto-char (point-max)) (insert-before-markers "Running `" name "' with ``" command "''\n") (setq mode-name name) (setq TeX-sentinel-function (lambda (process name) (message "%s: done." name))) (if TeX-process-asynchronous (let ((process (start-process name (current-buffer) TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (TeX-command-mode-line process) (set-process-filter process 'TeX-command-filter) (set-process-sentinel process 'TeX-command-sentinel) (set-marker (process-mark process) (point-max)) (push process compilation-in-progress) (sit-for 0) process) (setq mode-line-process ": run") (set-buffer-modified-p (buffer-modified-p)) (sit-for 0) ; redisplay (call-process TeX-shell nil (current-buffer) nil TeX-shell-command-option command)))) (defun preview-start-pdf2dsc () "Start a PDF2DSC process." (let* ((file preview-gs-file) tempdir pdfsource (command (with-current-buffer TeX-command-buffer (prog1 (TeX-command-expand preview-pdf2dsc-command (car file)) (setq tempdir TeX-active-tempdir pdfsource (funcall `,(car file) "pdf"))))) (name "Preview-PDF2DSC")) (setq TeX-active-tempdir tempdir) (setq preview-ps-file (preview-attach-filename pdfsource (preview-make-filename (preview-make-filename "preview.dsc" tempdir) tempdir))) (goto-char (point-max)) (insert-before-markers "Running `" name "' with ``" command "''\n") (setq mode-name name) (setq TeX-sentinel-function (lambda (process name) (message "%s: done." name))) (if TeX-process-asynchronous (let ((process (start-process name (current-buffer) TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (TeX-command-mode-line process) (set-process-filter process 'TeX-command-filter) (set-process-sentinel process 'TeX-command-sentinel) (set-marker (process-mark process) (point-max)) (push process compilation-in-progress) (sit-for 0) process) (setq mode-line-process ": run") (set-buffer-modified-p (buffer-modified-p)) (sit-for 0) ; redisplay (call-process TeX-shell nil (current-buffer) nil TeX-shell-command-option command)))) (defun preview-TeX-inline-sentinel (process name) "Sentinel function for preview. See `TeX-sentinel-function' and `set-process-sentinel' for definition of PROCESS and NAME." (if process (TeX-format-mode-line process)) (let ((status (process-status process))) (if (memq status '(signal exit)) (delete-process process)) (when (eq status 'exit) (save-excursion (goto-char (point-max)) (forward-line -1) (if (search-forward "abnormally with code 1" nil t) (replace-match "as expected with code 1" t t) (if (search-forward "finished" nil t) (insert " with nothing to show")))) (condition-case err (preview-call-hook 'open) (error (preview-log-error err "LaTeX" process))) (preview-reraise-error process)))) (defcustom preview-format-extensions '(".fmt" ".efmt") "Possible extensions for format files. Those are just needed for cleanup." :group 'preview-latex :type '(repeat string)) (defun preview-format-kill (format-cons) "Kill a cached format. FORMAT-CONS is intended to be an element of `preview-dumped-alist'. Tries through `preview-format-extensions'." (dolist (ext preview-format-extensions) (condition-case nil (delete-file (preview-dump-file-name (concat (car format-cons) ext))) (file-error nil)))) (defun preview-dump-file-name (file) "Make a file name suitable for dumping from FILE." (if file (concat (file-name-directory file) "prv_" (progn (setq file (file-name-nondirectory file)) (while (string-match " " file) (setq file (replace-match "_" t t file))) file)) "prv_texput")) (defun preview-do-replacements (string replacements) "Perform replacements in string. STRING is the input string, REPLACEMENTS is a list of replacements. A replacement is a cons-cell, where the car is the match string, and the cdr is a list of strings or symbols. Symbols get dereferenced, and strings get evaluated as replacement strings." (let (rep case-fold-search) (while replacements (setq rep (pop replacements)) (cond ((symbolp rep) (setq string (preview-do-replacements string (symbol-value rep)))) ((string-match (car rep) string) (setq string (mapconcat (lambda(x) (if (symbolp x) (symbol-value x) (replace-match x t nil string))) (cdr rep) "")))))) string) (defconst preview-LaTeX-disable-pdfoutput '(("\\`\\(pdf[^ ]*\\)\ \\(\\( [-&]\\([^ \"]\\|\"[^\"]*\"\\)*\\|\ \"[-&][^\"]*\"\\)*\\)\\(.*\\)\\'" . ("\\1\\2 \"\\\\pdfoutput=0 \" \\5"))) "This replacement places `\"\\pdfoutput=0 \"' after the options of any command starting with `pdf'.") (defcustom preview-LaTeX-command-replacements nil "Replacement for `preview-LaTeX-command'. This is passed through `preview-do-replacements'." :group 'preview-latex :type '(repeat (choice (symbol :tag "Named replacement" :value preview-LaTeX-disable-pdfoutput) (cons (string :tag "Matched string") (repeat :tag "Concatenated elements for replacement" (choice (symbol :tag "Variable with literal string") (string :tag "non-literal regexp replacement"))))))) (defvar preview-format-name) (defcustom preview-dump-replacements '(preview-LaTeX-command-replacements ("\\`\\([^ ]+\\)\ \\(\\( +-\\([^ \\\\\"]\\|\\\\\\.\\|\"[^\"]*\"\\)*\\)*\\)\\(.*\\)\\'" . ("\\1 -ini -interaction=nonstopmode \"&\\1\" " preview-format-name ".ini \\5"))) "Generate a dump command from the usual preview command." :group 'preview-latex :type '(repeat (choice (symbol :tag "Named replacement") (cons string (repeat (choice symbol string)))))) (defcustom preview-undump-replacements '(("\\`\\([^ ]+\\)\ .*? \"\\\\input\" \\(.*\\)\\'" . ("\\1 -interaction=nonstopmode \"&" preview-format-name "\" \\2"))) "Use a dumped format for reading preamble." :group 'preview-latex :type '(repeat (choice (symbol :tag "Named replacement") (cons string (repeat (choice symbol string)))))) (defun preview-cache-preamble (&optional format-cons) "Dump a pregenerated format file. For the rest of the session, this file is used when running on the same master file. Returns the process for dumping, nil if there is still a valid format available. If FORMAT-CONS is non-nil, a previous format may get reused." (interactive) (let* ((dump-file (expand-file-name (preview-dump-file-name (TeX-master-file "ini")))) (master (TeX-master-file)) (format-name (expand-file-name master)) (preview-format-name (shell-quote-argument (preview-dump-file-name (file-name-nondirectory master)))) (master-file (expand-file-name (TeX-master-file t))) (command (preview-do-replacements (TeX-command-expand (preview-string-expand preview-LaTeX-command) 'TeX-master-file) preview-dump-replacements)) (preview-auto-cache-preamble nil)) (unless (and (consp (cdr format-cons)) (string= command (cadr format-cons))) (unless format-cons (setq format-cons (assoc format-name preview-dumped-alist))) (if format-cons (preview-cache-preamble-off format-cons) (setq format-cons (list format-name)) (push format-cons preview-dumped-alist)) ;; mylatex.ltx expects a file name to follow. Bad. `.tex' ;; in the tools bundle is an empty file. (write-region "\\ifx\\pdfoutput\\undefined\\else\ \\let\\PREVIEWdump\\dump\\def\\dump{% \\edef\\next{{\\catcode`\\ 9 \\pdfoutput=\\the\\pdfoutput\\relax\ \\the\\everyjob}}\\everyjob\\next\\catcode`\\ 10 \\let\\dump\\PREVIEWdump\\dump}\\fi\\input mylatex.ltx \\relax\n" nil dump-file) (TeX-save-document master) (prog1 (preview-generate-preview nil (file-name-nondirectory master) command) (add-hook 'kill-emacs-hook #'preview-cleanout-tempfiles t) (setq TeX-sentinel-function `(lambda (process string) (condition-case err (progn (if (and (eq (process-status process) 'exit) (zerop (process-exit-status process))) (preview-watch-preamble ',master-file ',command ',format-cons) (preview-format-kill ',format-cons)) (delete-file ',dump-file)) (error (preview-log-error err "Dumping" process))) (preview-reraise-error process))))))) (defun preview-cache-preamble-off (&optional old-format) "Clear the pregenerated format file. The use of the format file is discontinued. OLD-FORMAT may already contain a format-cons as stored in `preview-dumped-alist'." (interactive) (unless old-format (setq old-format (let ((master-file (expand-file-name (TeX-master-file)))) (or (assoc master-file preview-dumped-alist) (car (push (list master-file) preview-dumped-alist)))))) (preview-unwatch-preamble old-format) (preview-format-kill old-format) (setcdr old-format nil)) (defun preview-region (begin end) "Run preview on region between BEGIN and END." (interactive "r") (TeX-region-create (TeX-region-file TeX-default-extension) (buffer-substring begin end) (if buffer-file-name (file-name-nondirectory buffer-file-name) "") (save-restriction (widen) (let ((inhibit-point-motion-hooks t) (inhibit-field-text-motion t)) (+ (count-lines (point-min) begin) (save-excursion (goto-char begin) (if (bolp) 0 -1)))))) (preview-generate-preview t (TeX-region-file nil t) (preview-do-replacements (TeX-command-expand (preview-string-expand preview-LaTeX-command) 'TeX-region-file) preview-LaTeX-command-replacements))) (defun preview-buffer () "Run preview on current buffer." (interactive) (preview-region (point-min) (point-max))) ;; We have a big problem: When we are dumping preambles, diagnostics ;; issued in later runs will not make it to the output when the ;; predumped format skips the preamble. So we have to place those ;; after \begin{document}. This we can only do if regions never ;; include the preamble. We could do this in our own functions, but ;; that would not extend to the operation of C-c C-r g RET. So we ;; make this preamble skipping business part of TeX-region-create. ;; This will fail if the region is to contain just part of the ;; preamble -- a bad idea anyhow. (defadvice TeX-region-create (before preview-preamble preactivate activate) "Skip preamble for the sake of predumped formats." (when (string-match TeX-header-end (ad-get-arg 1)) (ad-set-arg 1 (prog1 (substring (ad-get-arg 1) (match-end 0)) (ad-set-arg 3 (with-temp-buffer (insert (substring (ad-get-arg 1) 0 (match-end 0))) (+ (ad-get-arg 3) (count-lines (point-min) (point-max)) (if (bolp) 0 -1)))))))) (defun preview-document () "Run preview on master document." (interactive) (TeX-save-document (TeX-master-file)) (preview-generate-preview nil (TeX-master-file nil t) (preview-do-replacements (TeX-command-expand (preview-string-expand preview-LaTeX-command) 'TeX-master-file) preview-LaTeX-command-replacements))) (defun preview-environment (count) "Run preview on LaTeX environment. This avoids running environments through preview that are indicated in `preview-inner-environments'. If you use a prefix argument COUNT, the corresponding level of outward nested environments is selected." (interactive "p") (save-excursion (let (currenv) (dotimes (i (1- count)) (setq currenv (LaTeX-current-environment)) (if (string= currenv "document") (error "No enclosing outer environment found")) (LaTeX-find-matching-begin)) (while (member (setq currenv (LaTeX-current-environment)) preview-inner-environments) (LaTeX-find-matching-begin)) (if (string= currenv "document") (error "No enclosing outer environment found")) (preview-region (save-excursion (LaTeX-find-matching-begin) (point)) (save-excursion (LaTeX-find-matching-end) (point)))))) (defun preview-section () "Run preview on LaTeX section." (interactive) (save-excursion (LaTeX-mark-section) (preview-region (region-beginning) (region-end)))) (defun preview-generate-preview (region-p file command) "Generate a preview. REGION-P is the region flag, FILE the file (without default extension and directory), COMMAND is the command to use. It returns the started process." (setq TeX-current-process-region-p region-p) (let* ((geometry (preview-get-geometry)) (commandbuff (current-buffer)) (pr-file (cons (if TeX-current-process-region-p 'TeX-region-file 'TeX-master-file) file)) (master (TeX-master-file)) (master-file (expand-file-name master)) (dumped-cons (assoc master-file preview-dumped-alist)) process) (unless dumped-cons (push (setq dumped-cons (cons master-file (if (eq preview-auto-cache-preamble 'ask) (y-or-n-p "Cache preamble? ") preview-auto-cache-preamble))) preview-dumped-alist)) (when (cdr dumped-cons) (let* (TeX-current-process-region-p) (setq process (preview-cache-preamble dumped-cons)) (if process (setq TeX-sentinel-function `(lambda (process string) (funcall ,TeX-sentinel-function process string) (TeX-inline-preview-internal ,command ,file ',pr-file ,commandbuff ',dumped-cons ',master ',geometry (buffer-string))))))) (or process (TeX-inline-preview-internal command file pr-file commandbuff dumped-cons master geometry)))) (defun TeX-inline-preview-internal (command file pr-file commandbuff dumped-cons master geometry &optional str) "Internal stuff for previewing. COMMAND and FILE should be explained in `TeX-command-list'. PR-FILE is the target file name in the form for `preview-gs-file'. COMMANDBUFF, DUMPED-CONS, MASTER, and GEOMETRY are internal parameters, STR may be a log to insert into the current log." (set-buffer commandbuff) (let* ((preview-format-name (shell-quote-argument (preview-dump-file-name (file-name-nondirectory master)))) (process (TeX-run-command "Preview-LaTeX" (if (consp (cdr dumped-cons)) (preview-do-replacements command preview-undump-replacements) command) file))) (condition-case err (progn (when str (save-excursion (goto-char (point-min)) (insert str) (when (= (process-mark process) (point-min)) (set-marker (process-mark process) (point))))) (preview-set-geometry geometry) (setq preview-gs-file pr-file) (setq TeX-sentinel-function 'preview-TeX-inline-sentinel) (when (featurep 'mule) (setq preview-coding-system (or (and (boundp 'TeX-japanese-process-output-coding-system) TeX-japanese-process-output-coding-system) (with-current-buffer commandbuff buffer-file-coding-system))) (when preview-coding-system (setq preview-coding-system (preview-buffer-recode-system (coding-system-base preview-coding-system)))) (set-process-coding-system process preview-coding-system)) (TeX-parse-reset) (setq TeX-parse-function 'TeX-parse-TeX) (if TeX-process-asynchronous process (TeX-synchronous-sentinel "Preview-LaTeX" file process))) (error (preview-log-error err "Preview" process) (delete-process process) (preview-reraise-error process))))) (defconst preview-version (eval-when-compile (let ((name "$Name: release_11_87 $") (rev "$Revision: 1.286 $")) (or (when (string-match "\\`[$]Name: *release_\\([^ ]+\\) *[$]\\'" name) (setq name (match-string 1 name)) (while (string-match "_" name) (setq name (replace-match "." t t name))) name) (if (string-match "\\`[$]Revision: *\\([^ ]+\\) *[$]\\'" rev) (format "CVS-%s" (match-string 1 rev))) "unknown"))) "Preview version. If not a regular release, CVS revision of `preview.el'.") (defconst preview-release-date (eval-when-compile (let ((date "$Date: 2011/01/23 18:53:55 $")) (string-match "\\`[$]Date: *\\([0-9]+\\)/\\([0-9]+\\)/\\([0-9]+\\)" date) (format "%s.%s%s" (match-string 1 date) (match-string 2 date) (match-string 3 date)))) "Preview release date. In the form of yyyy.mmdd") (defun preview-dump-state (buffer) (condition-case nil (progn (unless (local-variable-p 'TeX-command-buffer) (setq buffer (with-current-buffer buffer (TeX-active-buffer)))) (when (bufferp buffer) (insert "\nRun buffer contents:\n\n") (if (< (buffer-size buffer) 5000) (insert-buffer-substring buffer) (insert-buffer-substring buffer 1 2500) (insert "...\n\n[...]\n\n\t...") (insert-buffer-substring buffer (- (buffer-size buffer) 2500) (buffer-size buffer))) (insert "\n"))) (error nil))) ;;;###autoload (defun preview-report-bug () "Report a bug in the preview-latex package." (interactive) (let ((reporter-prompt-for-summary-p "Bug report subject: ")) (reporter-submit-bug-report "bug-auctex@gnu.org" (if (string-match "^CVS-" preview-version) (concat "preview-" (substring preview-version 4)) preview-version) '(AUCTeX-version LaTeX-command-style image-types preview-image-type preview-image-creators preview-dvipng-image-type preview-dvipng-command preview-pdf2dsc-command preview-gs-command preview-gs-options preview-gs-image-type-alist preview-fast-conversion preview-prefer-TeX-bb preview-dvips-command preview-fast-dvips-command preview-scale-function preview-LaTeX-command preview-required-option-list preview-preserve-counters preview-default-option-list preview-default-preamble preview-LaTeX-command-replacements preview-dump-replacements preview-undump-replacements preview-auto-cache-preamble preview-TeX-style-dir) `(lambda () (preview-dump-state ,(current-buffer))) (lambda () (insert (format "\nOutput from running `%s -h':\n" preview-gs-command)) (call-process preview-gs-command nil t nil "-h") (insert "\n")) "Remember to cover the basics. Including a minimal LaTeX example file exhibiting the problem might help." ))) (eval-when-compile (when (boundp 'preview-compatibility-macros) (dolist (elt preview-compatibility-macros) (if (consp elt) (fset (car elt) (cdr elt)) (fmakunbound elt))))) (makunbound 'preview-compatibility-macros) (provide 'preview) ;;; preview.el ends here auctex-11.87/preview/auto.el.in0000644000000000000000000000017410226436354015110 0ustar rootroot@lispGS@ (add-to-list 'load-path @lisppackagelispdir@) (defvar preview-datadir @lisppackagedatadir@) @lisppackagetexstyles@ auctex-11.87/preview/prv-emacs.el0000644000000000000000000005260210751352553015434 0ustar rootroot;;; prv-emacs.el --- GNU Emacs specific code for preview.el ;; Copyright (C) 2001, 02, 03, 04, 05 Free Software Foundation, Inc. ;; Author: David Kastrup ;; Keywords: convenience, tex, wp ;; 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: ;; ;;; Code: (require 'tex-site) (require 'tex) (require 'latex) (defvar preview-compatibility-macros nil "List of macros only present when compiling/loading.") (defcustom preview-transparent-color '(highlight :background) "Color to appear transparent in previews. Set this to something unusual when using `preview-transparent-border', to the default background in most other cases." :type '(radio (const :tag "None" nil) (const :tag "Autodetect" t) (color :tag "By name" :value "white") (list :tag "Take from face" :value (default :background) (face) (choice :tag "What to take" (const :tag "Background" :value :background) (const :tag "Foreground" :value :foreground)))) :group 'preview-appearance) ;;; Note that the following default introduces a border only when ;;; Emacs blinks politely when point is on an image (the tested ;;; unrelated function was introduced at about the time image blinking ;;; became tolerable). (defcustom preview-transparent-border (unless (fboundp 'posn-object-x-y) 1.5) "Width of transparent border for previews in pt. Setting this to a numeric value will add a border of `preview-transparent-color' around images, and will turn the heuristic-mask setting of images to default to 't since then the borders are correctly detected even in case of palette operations. If the transparent color is something not present otherwise in the image, the cursor display will affect just this border. A width of 0 is interpreted by PostScript as meaning a single pixel, other widths are interpreted as PostScript points (1/72 of 1in)" :group 'preview-appearance :type '(choice (const :value nil :tag "No border") (number :value 1.5 :tag "Border width in pt"))) (defun preview-get-heuristic-mask () "Get heuristic-mask to use for previews. Consults `preview-transparent-color'." (cond ((stringp preview-transparent-color) (color-values preview-transparent-color)) ((or (not (consp preview-transparent-color)) (integerp (car preview-transparent-color))) preview-transparent-color) (t (color-values (preview-inherited-face-attribute (nth 0 preview-transparent-color) (nth 1 preview-transparent-color) 'default))))) (defsubst preview-create-icon-1 (file type ascent border) `(image :file ,file :type ,type :ascent ,ascent ,@(and border '(:mask (heuristic t))))) (defun preview-create-icon (file type ascent border) "Create an icon from FILE, image TYPE, ASCENT and BORDER." (list (preview-create-icon-1 file type ascent border) file type ascent border)) (put 'preview-filter-specs :type #'(lambda (keyword value &rest args) (if (image-type-available-p value) `(image :type ,value ,@(preview-filter-specs-1 args)) (throw 'preview-filter-specs nil)))) ;; No defcustom here: does not seem to make sense. (defvar preview-tb-icon-specs '((:type xpm :file "prvtex24.xpm") (:type xbm :file "prvtex24.xbm"))) (defvar preview-tb-icon nil) (defun preview-add-urgentization (fun ov &rest rest) "Cause FUN (function call form) to be called when redisplayed. FUN must be a form with OV as first argument, REST as the remainder, returning T." (let ((dispro (overlay-get ov 'display))) (unless (eq (car dispro) 'when) (overlay-put ov 'display `(when (,fun ,ov ,@rest) . ,dispro))))) (defun preview-remove-urgentization (ov) "Undo urgentization of OV by `preview-add-urgentization'. Returns the old arguments to `preview-add-urgentization' if there was any urgentization." (let ((dispro (overlay-get ov 'display))) (when (eq (car-safe dispro) 'when) (prog1 (car (cdr dispro)) (overlay-put ov 'display (cdr (cdr dispro))))))) (defsubst preview-icon-copy (icon) "Prepare a later call of `preview-replace-active-icon'." ;; This is just a GNU Emacs specific efficiency hack because it ;; is easy to do. When porting, don't do anything complicated ;; here, rather deliver just the unchanged icon and make ;; `preview-replace-active-icon' do the necessary work of replacing ;; the icon where it actually has been stored, probably ;; in the car of the strings property of the overlay. This string ;; might probably serve as a begin-glyph as well, in which case ;; modifying the string in the strings property would change that ;; glyph automatically. (cons 'image (cdr icon))) (defsubst preview-replace-active-icon (ov replacement) "Replace the active Icon in OV by REPLACEMENT, another icon." (let ((img (overlay-get ov 'preview-image))) (setcdr (car img) (cdar replacement)) (setcdr img (cdr replacement)))) (defvar preview-button-1 [mouse-2]) (defvar preview-button-2 [mouse-3]) (defmacro preview-make-clickable (&optional map glyph helpstring click1 click2) "Generate a clickable string or keymap. If MAP is non-nil, it specifies a keymap to add to, otherwise a new one is created. If GLYPH is given, the result is made to display it wrapped in a string. In that case, HELPSTRING is a format string with one or two %s specifiers for preview's clicks, displayed as a help-echo. CLICK1 and CLICK2 are functions to call on preview's clicks." `(let ((resmap ,(or map '(make-sparse-keymap)))) ,@(if click1 `((define-key resmap preview-button-1 ,click1))) ,@(if click2 `((define-key resmap preview-button-2 ,click2))) ,(if glyph `(propertize "x" 'display ,glyph 'mouse-face 'highlight 'help-echo ,(if (stringp helpstring) (format helpstring preview-button-1 preview-button-2) `(format ,helpstring preview-button-1 preview-button-2)) 'keymap resmap) 'resmap))) (defvar preview-overlay nil) (put 'preview-overlay 'modification-hooks '(preview-handle-modification)) (put 'preview-overlay 'insert-in-front-hooks '(preview-handle-insert-in-front)) (put 'preview-overlay 'insert-behind-hooks '(preview-handle-insert-behind)) ;; We have to fake our way around atomicity. ;; Here is the beef: for best intuitiveness, we want to have ;; insertions be carried out as expected before iconized text ;; passages, but we want to insert *into* the overlay when not ;; iconized. A preview that has become empty can not get content ;; again: we remove it. A disabled preview needs no insert-in-front ;; handler. (defvar preview-change-list nil "List of tentatively changed overlays.") (defcustom preview-dump-threshold "^ *\\\\begin *{document}[ %]*$" "*Regexp denoting end of preamble. This is the location up to which preamble changes are considered to require redumping of a format." :group 'preview-latex :type 'string) (defun preview-preamble-changed-function (ov after-change beg end &optional length) "Hook function for change hooks on preamble. See info node `(elisp) Overlay Properties' for definition of OV, AFTER-CHANGE, BEG, END and LENGTH." (let ((format-cons (overlay-get ov 'format-cons))) (preview-unwatch-preamble format-cons) (preview-format-kill format-cons) (setcdr format-cons t))) (defun preview-watch-preamble (file command format-cons) "Set up a watch on master file FILE. FILE can be an associated buffer instead of a filename. COMMAND is the command that generated the format. FORMAT-CONS contains the format info for the main format dump handler." (let ((buffer (if (bufferp file) file (find-buffer-visiting file))) ov) (setcdr format-cons (cons command (when buffer (with-current-buffer buffer (save-excursion (save-restriction (widen) (goto-char (point-min)) (unless (re-search-forward preview-dump-threshold nil t) (error "Can't find preamble of `%s'" file)) (setq ov (make-overlay (point-min) (point))) (overlay-put ov 'format-cons format-cons) (overlay-put ov 'insert-in-front-hooks '(preview-preamble-changed-function)) (overlay-put ov 'modification-hooks '(preview-preamble-changed-function)) ov)))))))) (defun preview-unwatch-preamble (format-cons) "Stop watching a format on FORMAT-CONS. The watch has been set up by `preview-watch-preamble'." (when (consp (cdr format-cons)) (when (cddr format-cons) (delete-overlay (cddr format-cons))) (setcdr (cdr format-cons) nil))) (defun preview-register-change (ov) "Register not yet changed OV for verification. This stores the old contents of the overlay in the `preview-prechange' property and puts the overlay into `preview-change-list' where `preview-check-changes' will find it at some later point of time." (unless (overlay-get ov 'preview-prechange) (if (eq (overlay-get ov 'preview-state) 'disabled) (overlay-put ov 'preview-prechange t) (overlay-put ov 'preview-prechange (save-restriction (widen) (buffer-substring-no-properties (overlay-start ov) (overlay-end ov))))) (push ov preview-change-list))) (defun preview-check-changes () "Check whether the contents under the overlay have changed. Disable it if that is the case. Ignores text properties." (dolist (ov preview-change-list) (condition-case nil (with-current-buffer (overlay-buffer ov) (let ((text (save-restriction (widen) (buffer-substring-no-properties (overlay-start ov) (overlay-end ov))))) (if (zerop (length text)) (preview-delete ov) (unless (or (eq (overlay-get ov 'preview-state) 'disabled) (preview-relaxed-string= text (overlay-get ov 'preview-prechange))) (overlay-put ov 'insert-in-front-hooks nil) (overlay-put ov 'insert-behind-hooks nil) (preview-disable ov))))) (error nil)) (overlay-put ov 'preview-prechange nil)) (setq preview-change-list nil)) (defun preview-handle-insert-in-front (ov after-change beg end &optional length) "Hook function for `insert-in-front-hooks' property. See info node `(elisp) Overlay Properties' for definition of OV, AFTER-CHANGE, BEG, END and LENGTH." (if after-change (unless undo-in-progress (if (eq (overlay-get ov 'preview-state) 'active) (move-overlay ov end (overlay-end ov)))) (preview-register-change ov))) (defun preview-handle-insert-behind (ov after-change beg end &optional length) "Hook function for `insert-behind-hooks' property. This is needed in case `insert-before-markers' is used at the end of the overlay. See info node `(elisp) Overlay Properties' for definition of OV, AFTER-CHANGE, BEG, END and LENGTH." (if after-change (unless undo-in-progress (if (eq (overlay-get ov 'preview-state) 'active) (move-overlay ov (overlay-start ov) beg))) (preview-register-change ov))) (defun preview-handle-modification (ov after-change beg end &optional length) "Hook function for `modification-hooks' property. See info node `(elisp) Overlay Properties' for definition of OV, AFTER-CHANGE, BEG, END and LENGTH." (unless after-change (preview-register-change ov))) (defun preview-toggle (ov &optional arg event) "Toggle visibility of preview overlay OV. ARG can be one of the following: t displays the overlay, nil displays the underlying text, and 'toggle toggles. If EVENT is given, it indicates the window where the event occured, either by being a mouse event or by directly being the window in question. This may be used for cursor restoration purposes." (let ((old-urgent (preview-remove-urgentization ov)) (preview-state (if (if (eq arg 'toggle) (null (eq (overlay-get ov 'preview-state) 'active)) arg) 'active 'inactive)) (strings (overlay-get ov 'strings))) (unless (eq (overlay-get ov 'preview-state) 'disabled) (overlay-put ov 'preview-state preview-state) (if (eq preview-state 'active) (progn (overlay-put ov 'category 'preview-overlay) (if (eq (overlay-start ov) (overlay-end ov)) (overlay-put ov 'before-string (car strings)) (dolist (prop '(display keymap mouse-face help-echo)) (overlay-put ov prop (get-text-property 0 prop (car strings)))) (overlay-put ov 'before-string nil)) (overlay-put ov 'face nil)) (dolist (prop '(display keymap mouse-face help-echo)) (overlay-put ov prop nil)) (overlay-put ov 'face 'preview-face) (unless (cdr strings) (setcdr strings (preview-inactive-string ov))) (overlay-put ov 'before-string (cdr strings))) (if old-urgent (apply 'preview-add-urgentization old-urgent)))) (if event (preview-restore-position ov (if (windowp event) event (posn-window (event-start event)))))) (defsubst preview-buffer-recode-system (base) "This is supposed to translate unrepresentable base encodings into something that can be used safely for byte streams in the run buffer. A noop for Emacs." base) (defun preview-mode-setup () "Setup proper buffer hooks and behavior for previews." (set (make-local-variable 'desktop-save-buffer) #'desktop-buffer-preview-misc-data) (add-hook 'pre-command-hook #'preview-mark-point nil t) (add-hook 'post-command-hook #'preview-move-point nil t) (easy-menu-add preview-menu LaTeX-mode-map) (unless preview-tb-icon (setq preview-tb-icon (preview-filter-specs preview-tb-icon-specs))) (when preview-tb-icon (define-key LaTeX-mode-map [tool-bar preview] `(menu-item "Preview at point" preview-at-point :image ,preview-tb-icon :help "Preview on/off at point"))) (when buffer-file-name (let* ((filename (expand-file-name buffer-file-name)) format-cons) (when (string-match (concat "\\." TeX-default-extension "\\'") filename) (setq filename (substring filename 0 (match-beginning 0)))) (setq format-cons (assoc filename preview-dumped-alist)) (when (consp (cdr format-cons)) (preview-unwatch-preamble format-cons) (preview-watch-preamble (current-buffer) (cadr format-cons) format-cons))))) (defvar preview-marker (make-marker) "Marker for fake intangibility.") (defvar preview-temporary-opened nil) (defvar preview-last-location nil "Restored cursor position marker for reopened previews.") (make-variable-buffer-local 'preview-last-location) (defun preview-mark-point () "Mark position for fake intangibility." (when (eq (get-char-property (point) 'preview-state) 'active) (unless preview-last-location (setq preview-last-location (make-marker))) (set-marker preview-last-location (point)) (set-marker preview-marker (point)) (preview-move-point)) (set-marker preview-marker (point))) (defun preview-restore-position (ov window) "Tweak position after opening/closing preview. The treated overlay OV has been triggered in WINDOW. This function records the original buffer position for reopening, or restores it after reopening. Note that by using the mouse, you can open/close overlays not in the active window." (when (eq (overlay-buffer ov) (window-buffer window)) (with-current-buffer (overlay-buffer ov) (if (eq (overlay-get ov 'preview-state) 'active) (setq preview-last-location (set-marker (or preview-last-location (make-marker)) (window-point window))) (when (and (markerp preview-last-location) (eq (overlay-buffer ov) (marker-buffer preview-last-location)) (< (overlay-start ov) preview-last-location) (> (overlay-end ov) preview-last-location)) (set-window-point window preview-last-location)))))) (defun preview-move-point () "Move point out of fake-intangible areas." (preview-check-changes) (let* (newlist (pt (point)) (lst (overlays-at pt)) distance) (setq preview-temporary-opened (dolist (ov preview-temporary-opened newlist) (and (overlay-buffer ov) (eq (overlay-get ov 'preview-state) 'inactive) (if (and (eq (overlay-buffer ov) (current-buffer)) (or (<= pt (overlay-start ov)) (>= pt (overlay-end ov)))) (preview-toggle ov t) (push ov newlist))))) (when lst (if (or disable-point-adjustment global-disable-point-adjustment (preview-auto-reveal-p preview-auto-reveal (setq distance (and (eq (marker-buffer preview-marker) (current-buffer)) (- pt (marker-position preview-marker)))))) (preview-open-overlays lst) (while lst (setq lst (if (and (eq (overlay-get (car lst) 'preview-state) 'active) (> pt (overlay-start (car lst)))) (overlays-at (setq pt (if (and distance (< distance 0)) (overlay-start (car lst)) (overlay-end (car lst))))) (cdr lst)))) (goto-char pt))))) (defun preview-open-overlays (list &optional pos) "Open all previews in LIST, optionally restricted to enclosing POS." (dolist (ovr list) (when (and (eq (overlay-get ovr 'preview-state) 'active) (or (null pos) (and (> pos (overlay-start ovr)) (< pos (overlay-end ovr))))) (preview-toggle ovr) (push ovr preview-temporary-opened)))) (defadvice replace-highlight (before preview) "Make `query-replace' open preview text about to be replaced." (preview-open-overlays (overlays-in (ad-get-arg 0) (ad-get-arg 1)))) (defcustom preview-query-replace-reveal t "*Make `query-replace' autoreveal previews." :group 'preview-appearance :type 'boolean :require 'preview :set (lambda (symbol value) (set-default symbol value) (if value (ad-enable-advice 'replace-highlight 'before 'preview) (ad-disable-advice 'replace-highlight 'before 'preview)) (ad-activate 'replace-highlight)) :initialize #'custom-initialize-reset) ;; Check whether the four-argument form of `face-attribute' exists. ;; If not, we will get a `wrong-number-of-arguments' error thrown. ;; Use `defun' instead of `defsubst' here so that the decision may be ;; reverted at load time if you are compiling with one Emacs and using ;; another. (if (condition-case nil (progn (face-attribute 'default :height nil nil) t) (wrong-number-of-arguments nil)) (defun preview-inherited-face-attribute (face attribute &optional inherit) "Fetch face attribute while adhering to inheritance. This searches FACE for an ATTRIBUTE, using INHERIT for resolving unspecified or relative specs. See the fourth argument of function `face-attribute' for details." (face-attribute face attribute nil inherit)) (defun preview-inherited-face-attribute (face attribute &optional inherit) "Fetch face attribute while adhering to inheritance. This searches FACE for an ATTRIBUTE. If it is 'unspecified, first inheritance is consulted (if INHERIT is non-NIL), then INHERIT is searched if it is a face or a list of faces. Relative specs are evaluated recursively until they get absolute or are not resolvable. Relative specs are float values." (let ((value (face-attribute face attribute))) (when inherit (setq inherit (append (let ((ancestors (face-attribute face :inherit))) (cond ((facep ancestors) (list ancestors)) ((consp ancestors) ancestors))) (cond ((facep inherit) (list inherit)) ((consp inherit) inherit))))) (cond ((null inherit) value) ((floatp value) (let ((avalue (preview-inherited-face-attribute (car inherit) attribute (or (cdr inherit) t)))) (cond ((integerp avalue) (round (* avalue value))) ((floatp avalue) (* value avalue)) (t value)))) ((eq value 'unspecified) (preview-inherited-face-attribute (car inherit) attribute (or (cdr inherit) t))) (t value))))) (defun preview-get-colors () "Return colors from the current display. Fetches the current screen colors and makes a vector of colors as numbers in the range 0..65535. Pure borderless black-on-white will return triple NIL. The fourth value is the transparent border thickness." (let ((bg (color-values (preview-inherited-face-attribute 'preview-reference-face :background 'default))) (fg (color-values (preview-inherited-face-attribute 'preview-reference-face :foreground 'default))) (mask (preview-get-heuristic-mask))) (if (equal '(65535 65535 65535) bg) (setq bg nil)) (if (equal '(0 0 0) fg) (setq fg nil)) (unless (and (numberp preview-transparent-border) (consp mask) (integerp (car mask))) (setq mask nil)) (vector bg fg mask preview-transparent-border))) (defmacro preview-mark-active () "Return t if the mark is active." 'mark-active) (defun preview-import-image (image) "Convert the printable IMAGE rendition back to an image." (cond ((stringp image) (propertize image 'face 'preview-face)) ((eq (car image) 'image) image) (t (preview-create-icon-1 (nth 0 image) (nth 1 image) (nth 2 image) (if (< (length image) 4) (preview-get-heuristic-mask) (nth 3 image)))))) (defsubst preview-supports-image-type (imagetype) "Check if IMAGETYPE is supported." (image-type-available-p imagetype)) (provide 'prv-emacs) ;;; prv-emacs.el ends here auctex-11.87/preview/COPYING0000644000000000000000000010451310751352554014250 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 of the License, or (at your option) any later version. This program 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 this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . auctex-11.87/preview/configure0000755000000000000000000044523612056205161015125 0ustar rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for preview-latex 11.84. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-auctex@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='preview-latex' PACKAGE_TARNAME='preview-latex' PACKAGE_VERSION='11.84' PACKAGE_STRING='preview-latex 11.84' PACKAGE_BUGREPORT='bug-auctex@gnu.org' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS TEXHASH packagetexstyles lisppackagetexstyles previewdocdir previewtexmfdir texmfdir TEX TEXMFGEN PDFLATEX LATEX lispGS GS auctexdir PLAT_LISP packagedatadir lisppackagedatadir packagelispdir lisppackagelispdir previewstartfile lispdir packagedir EMACS_FLAVOR XEMACS EMACS INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_emacs with_xemacs enable_build_dir_test with_packagedir with_lispdir with_previewstartfile with_packagelispdir with_packagedatadir with_tex_site with_texmf_dir with_tex_dir with_doc_dir ' ac_precious_vars='build_alias host_alias target_alias GS TEXHASH' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures preview-latex 11.84 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/preview-latex] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of preview-latex 11.84:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-build-dir-test test for build directory inside `load-path' (on by default) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-emacs[=PATH] Use Emacs to build (on PATH if given) --with-xemacs[=PATH] Use XEmacs to build (on PATH if given) --with-packagedir=DIR package DIR for XEmacs --with-lispdir=DIR A place in load-path for Lisp files; most files will be place in a subdirectory. --with-previewstartfile=FILE What file to use for preview startup. --with-packagelispdir=DIR Directory for the package lisp files. --with-packagedatadir=DIR Where the data files go. --with-tex-site=DIR Location of AUCTeX's tex-site.el, if not standard --with-texmf-dir=DIR TEXMF tree to install into, or --without-texmf-dir for runtime config --with-tex-dir=DIR Location to install preview TeX sources --with-doc-dir=DIR Location to install preview.dvi Some influential environment variables: GS Ghostscript executable for batch operation TEXHASH command to update the TeX filename database. Set to : to skip updating the database on installation. This is the default for --without-texmf-dir Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF preview-latex configure 11.84 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by preview-latex $as_me 11.84, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Import unquoted variables. TEX="$TEX_UNQUOTED" packagedir="$packagedir_unquoted" packagelispdir="$packagelispdir_unquoted" packagedatadir="$packagedatadir_unquoted" EMACS="$EMACS_UNQUOTED" # Check for (X)Emacs, report its path, flavor and prefix # Apparently, if you run a shell window in Emacs, it sets the EMACS # environment variable to 't'. Let's undo the damage. if test "${EMACS}" = "t"; then EMACS="" fi # Check whether --with-emacs was given. if test "${with_emacs+set}" = set; then : withval=$with_emacs; if test "${withval}" = "yes"; then EMACS=emacs elif test "${withval}" = "no"; then EMACS=xemacs else EMACS="${withval}"; fi fi # Check whether --with-xemacs was given. if test "${with_xemacs+set}" = set; then : withval=$with_xemacs; if test "x${withval}" != xno then if test "x${with_emacs}" != xno -a "x${with_emacs}" != x then as_fn_error $? "cannot use both Emacs and XEmacs" "$LINENO" 5 fi if test "x${withval}" = "xyes" then EMACS=xemacs else EMACS="${withval}" fi elif test "x${with_emacs}" = xno then as_fn_error $? "need to use either Emacs or XEmacs" "$LINENO" 5 fi fi # "${prefix}/bin" is for Windows users for ac_prog in ${EMACS} emacs xemacs do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_EMACS+:} false; then : $as_echo_n "(cached) " >&6 else case $EMACS in [\\/]* | ?:[\\/]*) ac_cv_path_EMACS="$EMACS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in ${PATH} "${prefix}/bin" do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_EMACS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi EMACS=$ac_cv_path_EMACS if test -n "$EMACS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5 $as_echo "$EMACS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$EMACS" && break done test -n "$EMACS" || EMACS="""" if test -z "${EMACS}"; then as_fn_error $? "(X)Emacs not found! Aborting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS} is XEmacs" >&5 $as_echo_n "checking if ${EMACS} is XEmacs... " >&6; } elisp="(if (featurep (quote xemacs)) \"yes\" \"no\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 XEMACS="`cat ${OUTPUT}`" echo "=> ${XEMACS}" >& 5 2>&1 rm -f ${OUTPUT} if test "${XEMACS}" = "yes"; then EMACS_FLAVOR=xemacs EMACS_NAME="XEmacs" elif test "${XEMACS}" = "no"; then EMACS_FLAVOR=emacs EMACS_NAME="Emacs" else as_fn_error $? "Unable to run ${EMACS}! Aborting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${XEMACS}" >&5 $as_echo "${XEMACS}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${EMACS_NAME} prefix" >&5 $as_echo_n "checking for ${EMACS_NAME} prefix... " >&6; } elisp="(condition-case nil (let* ((prefix (directory-file-name (file-name-directory (executable-find cmd)))) (parent (directory-file-name (file-name-directory prefix)))) (if (string= (file-name-nondirectory prefix) \"bin\") (setq prefix parent) (if (string= (file-name-nondirectory parent) \"bin\") (setq prefix (directory-file-name (file-name-directory parent))))) prefix) (error "NONE"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${EMACS}" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${EMACS}" >& 5 2>&1 emacsprefix="`cat ${OUTPUT}`" echo "=> ${emacsprefix}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${emacsprefix}\"" >&5 $as_echo "\"${emacsprefix}\"" >&6; } if test ${EMACS_FLAVOR} = xemacs then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS_NAME} is recent enough" >&5 $as_echo_n "checking if ${EMACS_NAME} is recent enough... " >&6; } elisp="(cond ((< emacs-major-version 21) \"no\") ((> emacs-major-version 21) \"yes\") ((< emacs-minor-version 04) \"no\") (t \"yes\"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 result="`cat ${OUTPUT}`" echo "=> ${result}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${result}" >&5 $as_echo "${result}" >&6; } if test "${result}" != "yes" then as_fn_error $? "This package requires at least ${EMACS_NAME} version 21.4 Aborting!" "$LINENO" 5 fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS_NAME} is recent enough" >&5 $as_echo_n "checking if ${EMACS_NAME} is recent enough... " >&6; } elisp="(cond ((< emacs-major-version 21) \"no\") ((> emacs-major-version 21) \"yes\") ((< emacs-minor-version 01) \"no\") (t \"yes\"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 result="`cat ${OUTPUT}`" echo "=> ${result}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${result}" >&5 $as_echo "${result}" >&6; } if test "${result}" != "yes" then as_fn_error $? "This package requires at least ${EMACS_NAME} version 21.1 Aborting!" "$LINENO" 5 fi fi # The Debian package uses `--disable-build-dir-test'; normal users should # never need to modify the default behavior. # Check whether --enable-build-dir-test was given. if test "${enable_build_dir_test+set}" = set; then : enableval=$enable_build_dir_test; if ! [ "X-${enableval}" = "X-no" ] then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is valid" >&5 $as_echo_n "checking if build directory is valid... " >&6; } elisp="(if (or (member (directory-file-name default-directory) load-path)\ (member (file-name-as-directory default-directory) load-path))\ \"no\" \"yes\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 valid_build_dir="`cat ${OUTPUT}`" echo "=> ${valid_build_dir}" >& 5 2>&1 rm -f ${OUTPUT} if test "${valid_build_dir}" = "no"; then as_fn_error $? "Build directory inside load-path! Aborting!" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is valid" >&5 $as_echo_n "checking if build directory is valid... " >&6; } elisp="(if (or (member (directory-file-name default-directory) load-path)\ (member (file-name-as-directory default-directory) load-path))\ \"no\" \"yes\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 valid_build_dir="`cat ${OUTPUT}`" echo "=> ${valid_build_dir}" >& 5 2>&1 rm -f ${OUTPUT} if test "${valid_build_dir}" = "no"; then as_fn_error $? "Build directory inside load-path! Aborting!" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test ${EMACS_FLAVOR} = "xemacs" ; then PLAT_LISP=prv-xemacs.el # Check whether --with-packagedir was given. if test "${with_packagedir+set}" = set; then : withval=$with_packagedir; packagedir="`echo ${withval} | sed 's/^~\//${HOME}\//;s/[\/\\]$//'`" else if test ${EMACS_FLAVOR} = xemacs; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XEmacs package directory" >&5 $as_echo_n "checking for XEmacs package directory... " >&6; } for currentprefix in '${datadir}/xemacs/xemacs-packages' \ '${libdir}/xemacs/xemacs-packages' \ '${datadir}' '${libdir}' "${emacsprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" >& 5 2>&1 packagedir="`cat ${OUTPUT}`" echo "=> ${packagedir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$packagedir" != NONE; then break; fi; done if test "x${packagedir}" = xNONE -o -z "${packagedir}"; then as_fn_error $? "not found, exiting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagedir}" >&5 $as_echo "${packagedir}" >&6; } else packagedir=no fi fi else PLAT_LISP=prv-emacs.el packagedir=no fi if test "X${packagedir}" = Xno then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where lisp files go" >&5 $as_echo_n "checking where lisp files go... " >&6; } # Check whether --with-lispdir was given. if test "${with_lispdir+set}" = set; then : withval=$with_lispdir; lispdir="${withval}" fi if test "X${lispdir}" = X; then if test "X${packagedir}" = Xno; then # Test paths relative to prefixes for currentprefix in '${datadir}/'${EMACS_FLAVOR} '${libdir}/'${EMACS_FLAVOR} \ "${emacsprefix}/share/${EMACS_FLAVOR}" \ '${datadir}' '${libdir}' "${emacsprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" >& 5 2>&1 lispdir="`cat ${OUTPUT}`" echo "=> ${lispdir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$lispdir" != NONE; then break; fi; done if test "${lispdir}" = "NONE"; then # No? notify user. as_fn_error $? "Cannot locate lisp directory, use --with-lispdir, --datadir, or possibly --prefix to rectify this" "$LINENO" 5 fi else # XEmacs lispdir="${packagedir}/lisp" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lispdir}" >&5 $as_echo "${lispdir}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking what file to use for preview startup" >&5 $as_echo_n "checking what file to use for preview startup... " >&6; } # Check whether --with-previewstartfile was given. if test "${with_previewstartfile+set}" = set; then : withval=$with_previewstartfile; previewstartfile="${withval}" else _tmpdir_="${lispdir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$_tmpdir_" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "_tmpdir_=`sed ${__ac_tmp__} <&5 $as_echo "${previewstartfile}" >&6; } test "X$packagelispdir" = X && packagelispdir="${lispdir}/preview" test "X$packagedatadir" = X && packagedatadir="${packagelispdir}" else #lispdir is only used for determining relative files. lispdir="${packagedir}" test "X$packagelispdir" = X && packagelispdir="${packagedir}/lisp/preview" previewstartfile="${packagelispdir}"/auto-autoloads.el test "X$packagedatadir" = X && packagedatadir="${packagedir}/etc/preview" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the package lisp files go" >&5 $as_echo_n "checking where the package lisp files go... " >&6; } # Check whether --with-packagelispdir was given. if test "${with_packagelispdir+set}" = set; then : withval=$with_packagelispdir; packagelispdir="${withval}" fi tmpdir="${packagelispdir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lisppackagelispdir="`cat ${OUTPUT}`" echo "=> ${lisppackagelispdir}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagelispdir}" >&5 $as_echo "${packagelispdir}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the data files go" >&5 $as_echo_n "checking where the data files go... " >&6; } # Check whether --with-packagedatadir was given. if test "${with_packagedatadir+set}" = set; then : withval=$with_packagedatadir; packagedatadir="${withval}" fi tmpdir="${packagedatadir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lisppackagedatadir="`cat ${OUTPUT}`" echo "=> ${lisppackagedatadir}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagedatadir}" >&5 $as_echo "${packagedatadir}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the location of AUCTeX's tex-site.el" >&5 $as_echo_n "checking for the location of AUCTeX's tex-site.el... " >&6; } # Check whether --with-tex-site was given. if test "${with_tex_site+set}" = set; then : withval=$with_tex_site; auctexdir="${withval}" ; __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$withval" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "withval=`sed ${__ac_tmp__} <&6 else elisp="(condition-case nil (directory-file-name (file-name-directory (locate-library \"tex-site\"))) (error \"\"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 EMACS_cv_ACCEPTABLE_AUCTEX="`cat ${OUTPUT}`" echo "=> ${EMACS_cv_ACCEPTABLE_AUCTEX}" >& 5 2>&1 rm -f ${OUTPUT} if test -z "${EMACS_cv_ACCEPTABLE_AUCTEX}" ; then as_fn_error $? "Can't find AUCTeX! Please install it! Check the PROBLEMS file for details." "$LINENO" 5 fi fi auctexdir="${EMACS_cv_ACCEPTABLE_AUCTEX}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${auctexdir}" >&5 $as_echo "${auctexdir}" >&6; } for ac_prog in gs GSWIN32C.EXE do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_GS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$GS"; then ac_cv_prog_GS="$GS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_GS="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GS=$ac_cv_prog_GS if test -n "$GS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5 $as_echo "$GS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GS" && break done test -n "$GS" || GS="NONE" elisp="(if (member dir (list \"NONE\" (if (eq system-type 'windows-nt) \"GSWIN32C.EXE\" \"gs\"))) \"\" \`(defvar preview-gs-command ,dir))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((dir(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${GS}" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((dir(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${GS}" >& 5 2>&1 lispGS="`cat ${OUTPUT}`" echo "=> ${lispGS}" >& 5 2>&1 rm -f ${OUTPUT} # Extract the first word of "latex", so it can be a program name with args. set dummy latex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LATEX+:} false; then : $as_echo_n "(cached) " >&6 else case $LATEX in [\\/]* | ?:[\\/]*) ac_cv_path_LATEX="$LATEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LATEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_LATEX" && ac_cv_path_LATEX="NONE" ;; esac fi LATEX=$ac_cv_path_LATEX if test -n "$LATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5 $as_echo "$LATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${LATEX}"x = NONEx ; then as_fn_error $? "LaTeX not found, aborting! You must install LaTeX for preview to work." "$LINENO" 5 fi # Extract the first word of "pdflatex", so it can be a program name with args. set dummy pdflatex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PDFLATEX+:} false; then : $as_echo_n "(cached) " >&6 else case $PDFLATEX in [\\/]* | ?:[\\/]*) ac_cv_path_PDFLATEX="$PDFLATEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PDFLATEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PDFLATEX=$ac_cv_path_PDFLATEX if test -n "$PDFLATEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 $as_echo "$PDFLATEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Determine which latex-style components to install # To match .sty, .def, .cfg, but _not_ .drv TEXMFGEN=`sed -n 's/^%.*file[{]\\([^}.]*\\.[sdc][tef][yfg]\\)[}].*/\\1/p' latex/preview.dtx` # Replace newlines with spaces. TEXMFGEN="`echo ${TEXMFGEN}`" # Extract the first word of "tex", so it can be a program name with args. set dummy tex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEX+:} false; then : $as_echo_n "(cached) " >&6 else case $TEX in [\\/]* | ?:[\\/]*) ac_cv_path_TEX="$TEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TEX" && ac_cv_path_TEX="NONE" ;; esac fi TEX=$ac_cv_path_TEX if test -n "$TEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEX" >&5 $as_echo "$TEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${TEX}"x = NONEx ; then as_fn_error $? "NONE" "$LINENO" 5 fi # Check whether --with-texmf-dir was given. if test "${with_texmf_dir+set}" = set; then : withval=$with_texmf_dir; texmfdir="${withval}" ; if test "x${texmfdir}" = xno then previewtexmfdir="${packagedatadir}/latex" previewdocdir="${packagedatadir}/doc" else __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$withval" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "withval=`sed ${__ac_tmp__} <&5 $as_echo_n "checking for prefix from kpsepath... " >&6; } elisp="(condition-case nil (let* ((prefix (directory-file-name (file-name-directory (executable-find cmd)))) (parent (directory-file-name (file-name-directory prefix)))) (if (string= (file-name-nondirectory prefix) \"bin\") (setq prefix parent) (if (string= (file-name-nondirectory parent) \"bin\") (setq prefix (directory-file-name (file-name-directory parent))))) prefix) (error "NONE"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" kpsepath >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" kpsepath >& 5 2>&1 texprefix="`cat ${OUTPUT}`" echo "=> ${texprefix}" >& 5 2>&1 rm -f ${OUTPUT} if test "x${texprefix}" != "xNONE" then { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${texprefix}\"" >&5 $as_echo "\"${texprefix}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TDS-compliant directory" >&5 $as_echo_n "checking for TDS-compliant directory... " >&6; } pathoutput="`kpsepath -n latex tex`" for currentprefix in '${datadir}/texmf' "${texprefix}/share/texmf-local" "${texprefix}/share/texmf" "${texprefix}/texmf-local" "${texprefix}/texmf" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (pathoutput(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" "${pathoutput}" >& 5 2>&1 texmfdir="`cat ${OUTPUT}`" echo "=> ${texmfdir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$texmfdir" != NONE; then break; fi; done if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewdocdir="${texmfdir}/doc/latex/styles" previewtexmfdir="${texmfdir}/tex/latex/preview" fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TeX directory hierarchy" >&5 $as_echo_n "checking for TeX directory hierarchy... " >&6; } for currentprefix in '${datadir}/texmf' "${texprefix}/share/texmf-local" "${texprefix}/share/texmf" "${texprefix}/texmf-local" "${texprefix}/texmf" '${datadir}' "${texprefix}/share" "${texprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (pathoutput(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" "${pathoutput}" >& 5 2>&1 texmfdir="`cat ${OUTPUT}`" echo "=> ${texmfdir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$texmfdir" != NONE; then break; fi; done if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewtexmfdir="${texmfdir}/preview" previewdocdir="${texmfdir}/preview" fi fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TeX input directory" >&5 $as_echo_n "checking for TeX input directory... " >&6; } for currentprefix in '${datadir}' "${texprefix}/share" "${texprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (pathoutput(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" "${pathoutput}" >& 5 2>&1 texmfdir="`cat ${OUTPUT}`" echo "=> ${texmfdir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$texmfdir" != NONE; then break; fi; done if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewtexmfdir="${texmfdir}" previewdocdir="${texmfdir}" fi fi fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Cannot find the texmf directory! Please use --with-texmf-dir=dir to specify where the preview tex files go" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${texmfdir}" >&5 $as_echo "${texmfdir}" >&6; } fi fi echo Preview will be placed in ${previewtexmfdir} echo Preview docs will be placed in ${previewdocdir} if test "x${texmfdir}" = "xno" then packagetexstyles="${packagedatadir}/latex" tmpdir="${packagetexstyles}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lisppackagetexstyles="`cat ${OUTPUT}`" echo "=> ${lisppackagetexstyles}" >& 5 2>&1 rm -f ${OUTPUT} lisppackagetexstyles="(defvar preview-TeX-style-dir ${lisppackagetexstyles})" test "X${TEXHASH}" = X && TEXHASH=: else lisppackagetexstyles= fi # Be very careful about assuming things about the available hash programs # MiKTeX comes with a braindead link to mktexlsr, apparently, so first # try the regular utility from them. if test "X${TEXHASH}" = "X" then # Extract the first word of "texhash", so it can be a program name with args. set dummy texhash; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEXHASH+:} false; then : $as_echo_n "(cached) " >&6 else case $TEXHASH in [\\/]* | ?:[\\/]*) ac_cv_path_TEXHASH="$TEXHASH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEXHASH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi TEXHASH=$ac_cv_path_TEXHASH if test -n "$TEXHASH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXHASH" >&5 $as_echo "$TEXHASH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "initexmf", so it can be a program name with args. set dummy initexmf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_TEXHASH+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$TEXHASH"; then ac_cv_prog_TEXHASH="$TEXHASH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_TEXHASH="initexmf -u" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi TEXHASH=$ac_cv_prog_TEXHASH if test -n "$TEXHASH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXHASH" >&5 $as_echo "$TEXHASH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "X${TEXHASH}" = X then for ac_prog in mktexlsr MakeTeXls-R do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEXHASH+:} false; then : $as_echo_n "(cached) " >&6 else case $TEXHASH in [\\/]* | ?:[\\/]*) ac_cv_path_TEXHASH="$TEXHASH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEXHASH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi TEXHASH=$ac_cv_path_TEXHASH if test -n "$TEXHASH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXHASH" >&5 $as_echo "$TEXHASH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$TEXHASH" && break done test -n "$TEXHASH" || TEXHASH=":" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glaring installation conflicts" >&5 $as_echo_n "checking for glaring installation conflicts... " >&6; } exppackagelispdir="$packagelispdir" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$exppackagelispdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "exppackagelispdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -eval "(let* ((packagelispdir(pop command-line-args-left)) (previewstartfile(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${exppackagelispdir}" "${exppreviewstartfile}" >& 5 2>&1 shadows="`cat ${OUTPUT}`" echo "=> ${shadows}" >& 5 2>&1 rm -f ${OUTPUT} if test "NONE${shadows}" != NONE then conflictsmsg="Conflicts with previous installations have been detected. Please fix them before continuing. " { $as_echo "$as_me:${as_lineno-$LINENO}: result: ouch! " >&5 $as_echo "ouch! " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ${shadows} " >&5 $as_echo "$as_me: WARNING: ${shadows} " >&2;} else conflictsmsg= { $as_echo "$as_me:${as_lineno-$LINENO}: result: probably none" >&5 $as_echo "probably none" >&6; } fi texmfdir="`sed 's/[^-0-9a-zA-Z_./:$]/\\\\&/g;s/[$]\\\\[{(]\\([^)}]*\\)\\\\[})]/${\\1}/g' <confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by preview-latex $as_me 11.84, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ preview-latex config.status 11.84 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "auto.el") CONFIG_FILES="$CONFIG_FILES auto.el" ;; "latex/Makefile") CONFIG_FILES="$CONFIG_FILES latex/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cat >&2 <$(DESTDIR)$(packagedatadir)/.nosearch install-images: $(ICON_SOURCES) -$(MKINSTALLDIRS) $(DESTDIR)$(packagedatadir)/images for x in $(ICON_SOURCES); do \ echo $(INSTALL_DATA) $$x $(DESTDIR)$(packagedatadir)/images ; \ $(INSTALL_DATA) $$x $(DESTDIR)$(packagedatadir)/images ; \ done install-texmf: (cd latex ; $(MAKE) DESTDIR=$(DESTDIR) install) install-startup: test $(packagedir) != no || $(MAKE) preview-latex.el test $(packagedir) != no || \ $(INSTALL_DATA) preview-latex.el $(DESTDIR)$(previewstartfile) $(LISP_OBJS): $(LISP_SOURCES) for x in $(LISP_SOURCES) ; do \ echo $(ELCC) $(AUCTEX) -f batch-byte-compile $$x ; \ $(ELCC) $(AUCTEX) -f batch-byte-compile $$x ; \ done preview-latex.el: preview.el auto.el rm -f preview-latex.el -$(EMACS) -batch -no-site-file -no-init-file $(AUTOLOAD) ; \ test -r $@ || { \ echo ";; Auto-generated preview-latex.el" > $@ ; \ echo " " >> $@ ; \ $(EMACS) -batch -no-site-file -no-init-file $(AUTOLOAD) ; \ } cat auto.el >> $@ .PHONY: clean distclean maintainer-clean tarball-ready clean: rm -f latex.out testdocstrip.tex preview-latex.el rm -rf *.prv *.elc *~ *.aux *.dvi *.log (cd latex ; $(MAKE) clean) distclean: clean rm -f config.log config.cache config.status rm -f Makefile */Makefile auto.el maintainer-clean: $(MAKE) distclean rm -rf autom4te.cache auctex-11.87/preview/preview-latex.spec0000644000000000000000000002012610751355731016662 0ustar rootroot# Spec file for preview-latex # Maintainer: auctex-devel@gnu.org # Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. %define HAVE_EMACS %(which emacs >/dev/null 2>/dev/null && echo 1 || echo 0) %define HAVE_XEMACS %(which xemacs >/dev/null 2>/dev/null && echo 1 || echo 0) %define FOR_SUSE %{?suse_version:1}%{!?suse_version:0} %if %{FOR_SUSE} %define distri .suse %define commongroup Productivity/Editors/Emacs # This is awful, but I don't have the clue to avoid it: %define xemacspkgdir %{_datadir}/xemacs/xemacs-packages %define xemacspkgconfdir ${datadir}/xemacs/xemacs-packages %else %define distri .fedora %define commongroup Applications/Editors # This is awful, but I don't have the clue to avoid it: %define xemacspkgdir %{_datadir}/xemacs/xemacs-packages %define xemacspkgconfdir ${datadir}/xemacs/xemacs-packages %endif # we use xemacs-packages because the system packages can be found # here, and preview-latex is not yet a part of any sumo tarball or # similar. The choice for AUCTeX would probably be site-packages # instead. Summary: Emacs/LaTeX inline preview Name: preview-latex Version: 0.9.1 Release: 1%{distri} License: GPL BuildArchitectures: noarch URL: http://www.gnu.org/software/auctex Source0: ftp://ftp.gnu.org/pub/auctex/%{name}-%{version}.tar.gz Group: %{commongroup} BuildRoot: %{_tmppath}/%{name}-root Prereq: info Requires: ghostscript >= 6.51 Requires: tetex tetex-dvips BuildRequires: texinfo >= 4.0 %description Does your neck hurt from turning between previewer windows and the source too often? This Elisp/LaTeX package will render your displayed LaTeX equations right into the editing window where they belong. %package common Summary: Emacs/LaTeX inline preview (LaTeX style and docs) Group: %{commongroup} %description common Does your neck hurt from turning between previewer windows and the source too often? This Elisp/LaTeX package will render your displayed LaTeX equations right into the editing window where they belong. This package contains the LaTeX style files and the documentation. %package emacs Summary: Emacs/LaTeX inline preview (GNU Emacs lisp files) Group: %{commongroup} Requires: %{name}-common = %{version}-%{release} Requires: emacs >= 21.1 Requires: auctex >= 11.0 Obsoletes: preview-latex %description emacs Does your neck hurt from turning between previewer windows and the source too often? This Elisp/LaTeX package will render your displayed LaTeX equations right into the editing window where they belong. This package contains the lisp modules for GNU Emacs 21.1 or higher. %package xemacs Summary: Emacs/LaTeX inline preview (XEmacs lisp files) Group: %{commongroup} Requires: %{name}-common = %{version}-%{release} Requires: xemacs >= 21.4.9 Conflicts: xemacs = 21.4.16 %description xemacs Does your neck hurt from turning between previewer windows and the source too often? This Elisp/LaTeX package will render your displayed LaTeX equations right into the editing window where they belong. This package contains the lisp modules for XEmacs 21.4.9 or higher. %prep %setup -c -q %if %{HAVE_EMACS} mkdir emacs pushd emacs ln -sf ../%{name}-%{version}/* . popd %endif %if %{HAVE_XEMACS} mkdir xemacs pushd xemacs ln -sf ../%{name}-%{version}/* . popd %endif %build for i in *emacs; do pushd $i # The below will make the package build from a tar straight from CVS # NOT RECOMMENDED, but useful for testing! test -f ./configure || ./autogen.sh # --with-packagedir repairs RedHat XEmacs braindamage texmf-dir # moves the installation to a location searched before the (possibly # conflicting) system tree. Unfortunately, this is the site-wide # tree that we should not really be touching. Sigh. if [ $i = "emacs" ]; then %configure '--with-lispdir=${datadir}/emacs/site-lisp/site-start.d' \ --with-packagelispdir=../preview '--with-texmf-dir=${prefix}/local/share/texmf' else %configure --with-xemacs '--with-packagedir=%{xemacspkgconfdir}' '--with-texmf-dir=${prefix}/local/share/texmf' fi make 'infodir=%{_infodir}' cd doc make preview-latex.pdf popd done %install rm -rf '%{buildroot}' for i in *emacs; do pushd $i if [ $i == "emacs" ]; then # Make directory non-searchable. mkdir -p '%{buildroot}%{_datadir}/emacs/site-lisp/preview' touch .nosearch install -c -m 644 .nosearch \ '%{buildroot}%{_datadir}/emacs/site-lisp/preview' %makeinstall TEXHASH=: else # XEmacs MANIFEST doesn't get created unless the target dir exists mkdir -p %{buildroot}%{xemacspkgdir}/pkginfo %makeinstall TEXHASH=: fi popd done # Package documentation in /usr/share/doc/preview-latex-n.n # rather than /usr/share/doc/preview-latex-common-n.n %define docs %{_defaultdocdir}/%{name}-%{version} mkdir -p '%{buildroot}%{docs}' pushd %{name}-%{version} for i in ChangeLog circ.tex COPYING FAQ INSTALL PROBLEMS README \ RELEASE TODO doc/preview-latex.pdf; do cp -R "$i" '%{buildroot}%{docs}' done cp latex/README '%{buildroot}%{docs}/README-preview' # Remove dir file that has been created by the makeinfo calls because this # file will not been included in the rpm distribution (make RPM 4.1+ happy) # Apparently RPM 4.2 removes the file itself? rm -f '%{buildroot}%{_infodir}/dir' %clean rm -rf '%{buildroot}' %post common /sbin/install-info '--info-dir=%{_infodir}' '%{_infodir}/preview-latex.info' texhash /usr/local/share/texmf %preun common # $1 is the number of versions of this package installed # after this uninstallation if [ $1 -eq 0 ]; then /sbin/install-info '--info-dir=%{_infodir}' --delete \ '%{_infodir}/preview-latex.info' fi %files common %defattr(-,root,root) %dir %{_prefix}/local/share/texmf/tex/latex/preview %{_prefix}/local/share/texmf/tex/latex/preview/*.sty %{_prefix}/local/share/texmf/tex/latex/preview/*.def %config %{_prefix}/local/share/texmf/tex/latex/preview/*.cfg %doc %{_prefix}/local/share/texmf/doc/latex/styles/preview.dvi %doc %{_infodir}/preview-latex.info* %doc %{docs} %if %{HAVE_EMACS} %files emacs %defattr(-,root,root) %{_datadir}/emacs/site-lisp/preview %{_datadir}/emacs/site-lisp/site-start.d/preview-latex.el %endif %if %{HAVE_XEMACS} %files xemacs %defattr(-,root,root) %{xemacspkgdir}/lisp/preview %{xemacspkgdir}/etc/preview %verify() %{xemacspkgdir}/pkginfo/MANIFEST.preview %endif %changelog * Wed Jul 28 2004 David Kastrup - Remove 8bit-test stuff, some changes to directories. * Mon Apr 12 2004 David Kastrup - bump XEmacs requirements to 21.4.9 * Thu Jan 29 2004 Jan-ke Larsson - add support for SuSE (kudos to Martin Vth ) * Wed Aug 7 2002 David Kastrup - add FAQ * Tue Apr 16 2002 David Kastrup - allow split info file, docs now go in preview-latex-n.n * Mon Apr 15 2002 Jan-Ake Larsson - Docs now goes in preview-latex-n.n-n directory * Wed Apr 10 2002 Jan-Ake Larsson - Triple-rpm simplifications * Sun Mar 31 2002 Jan-Ake Larsson - Prepare for 0.7, initial triple rpm attempt * Sun Mar 10 2002 David Kastrup - Prepare for 0.6.1 * Tue Feb 19 2002 Jan-Ake Larsson - Added site-start.d support and prauctex.cfg config file * Thu Feb 14 2002 Jan-Ake Larsson - Adjusted for 0.6 * Wed Jan 23 2002 Jan-Ake Larsson - Initial build. auctex-11.87/preview/prv-xemacs.el0000644000000000000000000006506410751352553015632 0ustar rootroot;;; prv-xemacs.el --- XEmacs support for preview-latex ;; Copyright (C) 2001, 02, 03, 04, 05, ;; 2006 Free Software Foundation, Inc. ;; Author: David Kastrup ;; Keywords: convenience, tex, wp ;; 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: ;; ;;; Code: (require 'overlay) (require 'tex-site) (require 'tex) (require 'latex) ;; Compatibility macros and functions. (eval-when-compile (defvar preview-compatibility-macros nil "List of macros only present when compiling/loading uncompiled.") (defmacro preview-defmacro (name &rest rest) (push (if (fboundp name) (cons name (symbol-function name)) name) preview-compatibility-macros) `(eval-when-compile (defmacro ,name ,@rest))) (push 'preview-defmacro preview-compatibility-macros)) (preview-defmacro assoc-default (key alist test) `(cdr (assoc* ,key ,alist :test #'(lambda(a b) (funcall ,test b a))))) (preview-defmacro display-mm-height () '(device-mm-height)) (preview-defmacro display-mm-width () '(device-mm-width)) (preview-defmacro display-pixel-height () '(device-pixel-height)) (preview-defmacro display-pixel-width () '(device-pixel-width)) (preview-defmacro line-beginning-position () '(point-at-bol)) (preview-defmacro line-end-position () '(point-at-eol)) ;; This is not quite the case, but unless we're playing with duplicable extents, ;; the two are equivalent in XEmacs. (preview-defmacro match-string-no-properties (&rest args) `(match-string ,@args)) (preview-defmacro face-attribute (face attr) (cond ((eq attr :height) `(round (/ (* ,(/ 720.0 25.4) (face-height ,face) (device-mm-height)) (device-pixel-height)))) ((eq attr :foreground) `(face-foreground-instance ,face)) ((eq attr :background) `(face-background-instance ,face)) (t (error 'unimplemented (format "Don't know how to fake %s" attr))))) (preview-defmacro make-temp-file (prefix dir-flag) (if (not dir-flag) (error 'unimplemented "Can only fake make-temp-file for directories")) `(let (file) (while (condition-case () (progn (setq file (make-temp-name ,prefix)) (make-directory file) nil) (file-already-exists t)) nil) file)) (preview-defmacro set-buffer-multibyte (multibyte) "Set the representation type of the current buffer. If MULTIBYTE is non-`nil', the buffer becomes multibyte. If MULTIBYTE is `nil', the buffer becomes unibyte. Because XEmacs does not implement multibyte versus unibyte buffers per se (they just have encodings which may be unibyte or multibyte), this is only implemented for the `nil' case." (if (not multibyte) `(if (fboundp 'set-buffer-file-coding-system) (set-buffer-file-coding-system 'binary)) (error 'unimplemented "`set-buffer-multibyte is only implemented for the binary case."))) (preview-defmacro next-single-char-property-change (pos prop) "Return the position of next property change for a specific property. This is like `next-single-property-change', except that if no change is found before the end of the buffer, it returns \(point-max) rather than `nil'." `(or (next-single-property-change ,pos ,prop) (point-max))) (preview-defmacro previous-single-char-property-change (pos prop) "Return the position of previous property change for a specific property. This is like `next-single-property-change', except that if no change is found before the end of the buffer, it returns \(point-min) rather than `nil'." `(or (previous-single-property-change ,pos ,prop) (point-min))) (preview-defmacro with-temp-message (message &rest body) "Display MESSAGE temporarily if non-nil while BODY is evaluated. The original message is restored to the echo area after BODY has finished. The value returned is the value of the last form in BODY. MESSAGE is written to the message log buffer if `message-log-max' is non-nil. If MESSAGE is nil, the echo area and message log buffer are unchanged. Use a MESSAGE of \"\" to temporarily clear the echo area. The message is displayed with label `progress'; see `display-message'." (let ((current-message (make-symbol "current-message")) (temp-message (make-symbol "with-temp-message"))) `(let ((,temp-message ,message) (,current-message)) (unwind-protect (progn (when ,temp-message (setq ,current-message (current-message)) (display-message 'progress ,temp-message)) ,@body) (and ,temp-message (if ,current-message (display-message 'progress ,current-message) (message nil))))))) (defun preview-mark-active () "Return t if the mark is active." (and (mark) t)) (defvar preview-transparent-border) ;; Images. (defsubst preview-supports-image-type (imagetype) "Return whether IMAGETYPE is supported by XEmacs." (memq imagetype (image-instantiator-format-list))) ;; TODO: Generalize this so we can create the fixed icons using it. ;; Argh, dired breaks :file :( ;; This is a temporary kludge to get around that until a fixed dired ;; or a fixed XEmacs is released. (defun preview-create-icon-1 (file type ascent) "Create an icon from FILE, image TYPE and ASCENT." (let ((glyph (make-glyph (vector type :file file :data (with-temp-buffer (insert-file-contents-literally file) (buffer-string)))))) (set-glyph-baseline glyph ascent) glyph)) (defun preview-create-icon (file type ascent border) "Create an icon from FILE, image TYPE, ASCENT and BORDER." (list (preview-create-icon-1 file type ascent) file type ascent border)) (defvar preview-ascent-spec) (put 'preview-filter-specs :type #'(lambda (keyword value &rest args) (if (preview-supports-image-type value) (let* (preview-ascent-spec (glyph (make-glyph `[,value ,@(preview-filter-specs-1 args)]))) (when preview-ascent-spec (set-glyph-baseline glyph preview-ascent-spec)) glyph) (throw 'preview-filter-specs nil)))) (put 'preview-filter-specs :ascent #'(lambda (keyword value &rest args) (setq preview-ascent-spec value) (preview-filter-specs-1 args))) ;; No defcustom here: does not seem to make sense. (defvar preview-tb-icon-specs '((:type xpm :file "prvtex-cap-up.xpm" :ascent 75) (:type xbm :file "prvtex24.xbm" :ascent 75))) (defvar preview-tb-icon nil) ;; Image frobbing. (defun preview-add-urgentization (fun ov &rest rest) "Cause FUN (function call form) to be called when redisplayed. FUN must be a form with OV as first argument, REST as the remainder, returning T. An alternative is to give what `preview-remove-urgentization' returns, this will reinstate the previous state." (set-extent-initial-redisplay-function ov (if (null rest) fun `(lambda (ov) (,fun ,ov ,@rest))))) (defun preview-remove-urgentization (ov) "Undo urgentization of OV by `preview-add-urgentization'. Returns the old arguments to `preview-add-urgentization' if there was any urgentization." (prog1 (list (extent-property ov 'initial-redisplay-function) ov) (set-extent-initial-redisplay-function ov nil))) (defsubst preview-icon-copy (icon) "Prepare for a later call of `preview-replace-active-icon'." icon) (defsubst preview-replace-active-icon (ov replacement) "Replace the active Icon in OV by REPLACEMENT, another icon." (set-extent-property ov 'preview-image replacement) (add-text-properties 0 1 (list 'end-glyph (car replacement)) (car (extent-property ov 'strings))) (if (eq (extent-property ov 'preview-state) 'active) (set-extent-end-glyph ov (car replacement)))) (defvar preview-button-1 'button2) (defvar preview-button-2 'button3) ;; The `x' and invisible junk is because XEmacs doesn't bother to insert ;; the extents of a zero-length string. Bah. ;; When this is fixed, we'll autodetect this case and use zero-length ;; strings where possible. (defmacro preview-make-clickable (&optional map glyph helpstring click1 click2) "Generate a clickable string or keymap. If MAP is non-nil, it specifies a keymap to add to, otherwise a new one is created. If GLYPH is given, the result is made to display it wrapped in a string. In that case, HELPSTRING is a format string with one or two %s specifiers for preview's clicks, displayed as a help-echo. CLICK1 and CLICK2 are functions to call on preview's clicks." `(let (,@(and glyph '((res (copy-sequence "x")))) (resmap ,(or map '(make-sparse-keymap)))) ,@(if click1 `((define-key resmap preview-button-1 ,click1))) ,@(if click2 `((define-key resmap preview-button-2 ,click2))) ,@(if glyph `((add-text-properties 0 1 (list 'end-glyph ,glyph 'mouse-face 'highlight 'preview-balloon-help ,(if (stringp helpstring) (format helpstring preview-button-1 preview-button-2) `(format ,helpstring preview-button-1 preview-button-2)) 'preview-keymap resmap) res) res) '(resmap)))) (defun preview-click-reroute (ov event) "If OV received a click EVENT on a glyph, reroute to special map." (let ((oldmap (extent-keymap ov))) (unwind-protect (progn (set-extent-keymap ov (and (event-over-glyph-p event) (extent-property ov 'preview-keymap))) (dispatch-event event)) (set-extent-keymap ov oldmap)))) (defun preview-reroute-map (ov) "Get rerouting keymap for OV for catching glyph clicks only." (let ((map (make-sparse-keymap)) (fun `(lambda (event) (interactive "e") (preview-click-reroute ,ov event)))) (define-key map preview-button-1 fun) (define-key map preview-button-2 fun) map)) (defun preview-balloon-reroute (ov) "Give balloon help only if over glyph of OV." (and (eq ov (event-glyph-extent (mouse-position-as-motion-event))) (extent-property ov 'preview-balloon-help))) ;; Most of the changes to this are junking the use of overlays; ;; a bit of it is different, and there's a little extra paranoia. ;; We also have to move the image from the begin to the end-glyph ;; whenever the extent is invisible because of a bug in XEmacs-21.4's ;; redisplay engine. (defun preview-toggle (ov &optional arg event) "Toggle visibility of preview overlay OV. ARG can be one of the following: t displays the overlay, nil displays the underlying text, and 'toggle toggles. If EVENT is given, it indicates the window where the event occured, either by being a mouse event or by directly being the window in question. This may be used for cursor restoration purposes." (if (not (bufferp (extent-object ov))) (error 'wrong-type-argument ov)) (let ((old-urgent (preview-remove-urgentization ov)) (preview-state (if (if (eq arg 'toggle) (not (eq (extent-property ov 'preview-state) 'active)) arg) 'active 'inactive)) (strings (extent-property ov 'strings))) (unless (eq (extent-property ov 'preview-state) 'disabled) (set-extent-property ov 'preview-state preview-state) (if (eq preview-state 'active) (progn (unless (extent-keymap ov) (set-extent-keymap ov (preview-reroute-map ov)) (set-extent-property ov 'balloon-help #'preview-balloon-reroute)) (set-extent-begin-glyph ov nil) (set-extent-end-glyph-layout ov 'text) (set-extent-end-glyph ov (get-text-property 0 'end-glyph (car strings))) (set-extent-properties ov '(invisible t isearch-open-invisible ignore isearch-invisible t face nil)) (dolist (prop '(preview-keymap mouse-face preview-balloon-help)) (set-extent-property ov prop (get-text-property 0 prop (car strings))))) (unless (cdr strings) (setcdr strings (preview-inactive-string ov))) (set-extent-end-glyph ov nil) (set-extent-begin-glyph-layout ov 'text) (set-extent-begin-glyph ov (get-text-property 0 'end-glyph (cdr strings))) (set-extent-properties ov `(face preview-face mouse-face nil invisible nil isearch-invisible nil preview-keymap ,(get-text-property 0 'preview-keymap (cdr strings)) preview-balloon-help ,(get-text-property 0 'preview-balloon-help (cdr strings))))) (if old-urgent (apply 'preview-add-urgentization old-urgent)))) (if event (preview-restore-position ov (if (windowp event) event (event-window event))))) ; Does FALLBACKS need to be implemented? Likely not. (defmacro preview-inherited-face-attribute (face attribute &optional fallbacks) "Fetch face attribute while adhering to inheritance. This searches FACE and all its ancestors for an ATTRIBUTE. FALLBACKS is unused." `(face-attribute ,face ,attribute)) (defun preview-get-colors () "Return colors from the current display. Fetches the current screen colors and makes a vector of colors as numbers in the range 0..65535. Pure borderless black-on-white will return quadruple NIL." (let ((bg (color-instance-rgb-components (preview-inherited-face-attribute 'preview-reference-face :background 'default))) (fg (color-instance-rgb-components (preview-inherited-face-attribute 'preview-reference-face :foreground 'default)))) (if (equal '(65535 65535 65535) bg) (setq bg nil)) (if (equal '(0 0 0) fg) (setq fg nil)) (vector bg fg nil nil))) (defcustom preview-use-balloon-help nil "*Is balloon help enabled in preview-latex?" :group 'preview-appearance :type 'boolean) (defcustom preview-buffer-recoding-alist (if (and (= emacs-major-version 21) (< emacs-minor-version 5)) '((utf-8-unix . raw-text-unix) (utf-8-dos . raw-text-dos) (utf-8-mac . raw-text-mac) (utf-8 . raw-text))) "Translate buffer encodings into process encodings. TeX is sometimes bad dealing with 8bit encodings and rather bad dealing with multibyte encodings. So the process encoding output might need to get temporarily reprocessed into the original byte stream before the buffer characters can be identified. XEmacs 21.4 is rather bad at preserving incomplete multibyte characters in that process. This variable makes it possible to use a reconstructable coding system in the run buffer instead. Specify an alist of base coding system names here, which you can get using \(coding-system-name (coding-system-base buffer-file-coding-system)) in properly detected buffers." :group 'preview-latex :type '(repeat (cons symbol symbol))) (defun preview-buffer-recode-system (base) "This is supposed to translate unrepresentable base encodings into something that can be used safely for byte streams in the run buffer. XEmacs mule-ucs is so broken that this may be needed." (or (cdr (assq (coding-system-name base) preview-buffer-recoding-alist)) base)) (defun preview-mode-setup () "Setup proper buffer hooks and behavior for previews." (set (make-local-variable 'desktop-save-buffer) #'desktop-buffer-preview-misc-data) (mapc #'make-local-hook '(pre-command-hook post-command-hook before-change-functions after-change-functions)) (add-hook 'pre-command-hook #'preview-mark-point nil t) (add-hook 'post-command-hook #'preview-move-point nil t) (and preview-use-balloon-help (not (and (boundp 'balloon-help-mode) balloon-help-mode)) (balloon-help-minor-mode 1)) (add-hook 'before-change-functions #'preview-handle-before-change nil t) (add-hook 'after-change-functions #'preview-handle-after-change nil t) (easy-menu-add preview-menu) (unless preview-tb-icon (setq preview-tb-icon (preview-filter-specs preview-tb-icon-specs)) (when preview-tb-icon (setq preview-tb-icon (vector (list preview-tb-icon) #'preview-at-point t "Preview on/off at point")))) ;;; [Courtesy Stephen J. Turnbull, with some modifications ;;; Message-ID: <87el9fglsj.fsf@tleepslib.sk.tsukuba.ac.jp> ;;; I could not have figured this out for the world] ;;; Hm, there really ought to be a way to get the spec that would be ;;; instantiated in a given domain (when preview-tb-icon (let ((tb (cdadar (or (specifier-spec-list default-toolbar (current-buffer)) (specifier-spec-list default-toolbar 'global))))) (unless (member preview-tb-icon tb) (set-specifier default-toolbar (append tb (list preview-tb-icon)) (current-buffer))))) (when buffer-file-name (let* ((filename (expand-file-name buffer-file-name)) format-cons) (when (string-match (concat "\\." TeX-default-extension "\\'") filename) (setq filename (substring filename 0 (match-beginning 0)))) (setq format-cons (assoc filename preview-dumped-alist)) (when (consp (cdr format-cons)) (preview-unwatch-preamble format-cons) (preview-watch-preamble (current-buffer) (cadr format-cons) format-cons))))) (defvar preview-marker (make-marker) "Marker for fake intangibility.") (defvar preview-temporary-opened nil) (defvar preview-last-location nil "Restored cursor position marker for reopened previews.") (make-variable-buffer-local 'preview-last-location) (defun preview-mark-point () "Mark position for fake intangibility." (when (eq (get-char-property (point) 'preview-state) 'active) (unless preview-last-location (setq preview-last-location (make-marker))) (set-marker preview-last-location (point)) (set-marker preview-marker (point)) (preview-move-point)) (set-marker preview-marker (point))) (defun preview-restore-position (ov window) "Tweak position after opening/closing preview. The treated overlay OV has been triggered in WINDOW. This function records the original buffer position for reopening, or restores it after reopening. Note that by using the mouse, you can open/close overlays not in the active window." (when (eq (extent-object ov) (window-buffer window)) (with-current-buffer (extent-object ov) (if (eq (extent-property ov 'preview-state) 'active) (setq preview-last-location (set-marker (or preview-last-location (make-marker)) (window-point window))) (when (and (markerp preview-last-location) (eq (extent-object ov) (marker-buffer preview-last-location)) (< (extent-start-position ov) preview-last-location) (> (extent-end-position ov) preview-last-location)) (set-window-point window preview-last-location)))))) (defun preview-move-point () "Move point out of fake-intangible areas." (preview-check-changes) (let (newlist (pt (point)) distance) (setq preview-temporary-opened (dolist (ov preview-temporary-opened newlist) (and (extent-object ov) (not (extent-detached-p ov)) (eq (extent-property ov 'preview-state) 'inactive) (if (and (eq (extent-object ov) (current-buffer)) (or (<= pt (extent-start-position ov)) (>= pt (extent-end-position ov)))) (preview-toggle ov t) (push ov newlist))))) (if (preview-auto-reveal-p preview-auto-reveal (setq distance (and (eq (marker-buffer preview-marker) (current-buffer)) (- pt (marker-position preview-marker))))) (map-extents #'preview-open-overlay nil pt pt nil nil 'preview-state 'active) (let (newpt) (while (setq newpt (map-extents #'preview-skip-overlay nil pt pt (and distance (< distance 0)) nil 'preview-state 'active)) (setq pt newpt)) (goto-char pt))))) (defun preview-skip-overlay (ovr backward) "Skip point over OVR, BACKWARD is set if backwards. Returns new position or NIL." (if backward (and (> (extent-start-position ovr) (point-min)) (1- (extent-start-position ovr))) (and (<= (extent-end-position ovr) (point-max)) (> (extent-end-position ovr) (extent-start-position ovr)) (extent-end-position ovr)))) (defun preview-open-overlay (ovr ignored) "Open the active preview OVR, IGNORED gets ignored. NIL is returned: this is for `map-extents'." (preview-toggle ovr) (push ovr preview-temporary-opened) nil) (defadvice isearch-highlight (before preview protect disable) "Make isearch open preview text that's a search hit. Also make `query-replace' open preview text about to be replaced." (map-extents #'preview-open-overlay nil (ad-get-arg 0) (ad-get-arg 1) nil nil 'preview-state 'active)) (defcustom preview-query-replace-reveal t "*Make `isearch' and `query-replace' autoreveal previews." :group 'preview-appearance :type 'boolean :require 'preview :set (lambda (symbol value) (set-default symbol value) (if value (ad-enable-advice 'isearch-highlight 'before 'preview) (ad-disable-advice 'isearch-highlight 'before 'preview)) (ad-activate 'isearch-highlight)) :initialize #'custom-initialize-reset) ;; Here is the beef: for best intuitiveness, we want to have ;; insertions be carried out as expected before iconized text ;; passages, but we want to insert *into* the overlay when not ;; iconized. A preview that has become empty can not get content ;; again: we remove it. A disabled preview needs no insert-in-front ;; handler. (defvar preview-change-list nil "List of tentatively changed overlays.") (defcustom preview-dump-threshold "^ *\\\\begin *{document}[ %]*$" "*Regexp denoting end of preamble. This is the location up to which preamble changes are considered to require redumping of a format." :group 'preview-latex :type 'string) (defvar preview-preamble-format-cons nil "Where our preamble is supposed to end.") (make-variable-buffer-local 'preview-preamble-format-cons) (defun preview-preamble-check-change (beg end) "Hook function for change hooks on preamble. Reacts to changes between BEG and END." (when (and (consp (cdr preview-preamble-format-cons)) (cddr preview-preamble-format-cons) (< beg (cddr preview-preamble-format-cons))) (preview-unwatch-preamble preview-preamble-format-cons) (preview-format-kill preview-preamble-format-cons) (setcdr preview-preamble-format-cons t))) (defun preview-watch-preamble (file command format-cons) "Set up a watch on master file FILE. FILE can be an associated buffer instead of a filename. COMMAND is the command that generated the format. FORMAT-CONS contains the format info for the main format dump handler." (let ((buffer (if (bufferp file) file (find-buffer-visiting file))) ov) (setq preview-preamble-format-cons nil) (setcdr format-cons (cons command (when buffer (with-current-buffer buffer (save-excursion (save-restriction (widen) (goto-char (point-min)) (unless (re-search-forward preview-dump-threshold nil t) (error "Can't find preamble of `%s'" file)) (setq preview-preamble-format-cons format-cons) (point))))))))) (defun preview-unwatch-preamble (format-cons) "Stop watching a format on FORMAT-CONS. The watch has been set up by `preview-watch-preamble'." (when (consp (cdr format-cons)) (setcdr (cdr format-cons) nil))) (defun preview-register-change (ov map-arg) "Register not yet changed OV for verification. This stores the old contents of the overlay in the `preview-prechange' property and puts the overlay into `preview-change-list' where `preview-check-changes' will find it at some later point of time. MAP-ARG is ignored; it is usually generated by `map-extents'." (unless (extent-property ov 'preview-prechange) (if (eq (extent-property ov 'preview-state) 'disabled) (set-extent-property ov 'preview-prechange t) (set-extent-property ov 'preview-prechange (save-restriction (widen) (buffer-substring-no-properties (extent-start-position ov) (extent-end-position ov))))) (push ov preview-change-list)) nil) (defun preview-check-changes () "Check whether the contents under the overlay have changed. Disable it if that is the case. Ignores text properties." (dolist (ov preview-change-list) (condition-case nil (with-current-buffer (extent-object ov) (let ((text (save-restriction (widen) (buffer-substring-no-properties (extent-start-position ov) (extent-end-position ov))))) (if (or (zerop (length text)) (extent-detached-p ov)) (preview-delete ov) (unless (or (eq (extent-property ov 'preview-state) 'disabled) (preview-relaxed-string= text (extent-property ov 'preview-prechange))) (preview-disable ov))))) (error nil)) (set-extent-property ov 'preview-prechange nil)) (setq preview-change-list nil)) (defun preview-handle-before-change (beg end) "Hook function for `before-change-functions'. Receives BEG and END, the affected region." (map-extents #'preview-register-change nil beg end nil nil 'preview-state) (preview-preamble-check-change beg end)) (defun preview-handle-after-change (beg end length) "Hook function for `after-change-functions'. Receives BEG and END, the affected region, and LENGTH of an insertion." (when (and preview-change-list (zerop length) (not (eq this-command 'undo))) (map-extents (lambda (ov maparg) (set-extent-endpoints ov maparg (extent-end-position ov))) nil beg beg end 'start-in-region 'preview-state 'active) (map-extents (lambda (ov maparg) (set-extent-endpoints ov (extent-start-position ov) maparg)) nil end end beg 'end-in-region 'preview-state 'active))) (defun preview-import-image (image) "Convert the printable IMAGE rendition back to an image." (cond ((stringp image) (setq image (copy-sequence image)) (add-text-properties 0 (length image) '(face preview-face) image) image) ((eq (car image) 'image) (let ((plist (cdr image))) (preview-create-icon-1 (plist-get plist :file) (plist-get plist :type) (plist-get plist :ascent)))) (t (preview-create-icon-1 (nth 0 image) (nth 1 image) (nth 2 image))))) (provide 'prv-xemacs) ;;; Local variables: ;;; eval: (put 'preview-defmacro 'lisp-indent-function 'defun) ;;; end: ;;; prv-xemacs.el ends here auctex-11.87/preview/ChangeLog0000644000000000000000000016233311517074517014774 0ustar rootroot2011-01-23 Ralf Angeli * preview.el (preview-auto-reveal): Add `forward-char' and `backward-char' to commands on which to open an overlay. 2010-10-14 Ralf Angeli * preview.el (preview-gs-options): Start gs with -dDELAYSAFER instead of -dSAFER. (preview-prepare-fast-conversion): Add relevant files to PermitFileReading list of paths. 2010-02-14 Ralf Angeli * latex/preview.dtx: Add support for XeTeX. 2009-06-18 Ralf Angeli * preview.el (preview-start-pdf2dsc): Determine the PDF source depending on the previews being generated from the master or the region file. 2008-05-10 Reiner Steib * preview.el (preview-auto-cache-preamble): Fix markup in in doc string. 2008-02-03 Ralf Angeli * Relicense all "GPLv2 or later" files to "GPLv3 or later". * COPYING: Switch to GPLv3. * preview/Makefile.in, preview/configure.ac, preview/preview-latex.spec, preview/latex/Makefile.in: Add copyright and license notices. 2007-04-29 Ralf Angeli * preview.el (preview-parse-messages): Match any closing parenthesis. 2007-03-25 David Kastrup * prv-xemacs.el (preview-dump-threshold): * prv-emacs.el (preview-dump-threshold): Make the dump threshold closely match what mylatex.ltx expects. * latex/preview.dtx: Have the counter output appear before the snippet start/end messages in order to have the counter maintenance work out correctly regardless of the order of `auctex' and `counters' options to preview.el. 2007-02-09 Masayuki Ataka * preview.el (preview-report-bug): Use `AUCTeX-version' instead of `AUC-TeX-version'. Reported by Ikumi Keita . 2007-01-12 Ralf Angeli * configure.ac: Bump version number. 2006-12-01 David Kastrup * prv-emacs.el (preview-move-point): Do not error out if `distance' is nil. * prv-xemacs.el (preview-supports-image-type): Move so that the following comment makes sense. 2006-12-01 Ralf Angeli * prv-xemacs.el (preview-move-point): Do not error out if `distance' is nil. 2006-10-24 David Kastrup * prv-xemacs.el (preview-move-point): rearrange for calling `preview-auto-reveal' with DISTANCE argument. * prv-emacs.el (preview-remove-urgentization): Small optimization. (preview-move-point): Rearrange to be more efficient in the absence of overlays. * preview.el (preview-auto-reveal): Fetch keybindings of [left] and [right] at runtime. Change proposed default accordingly. (preview-at-point): Fix change from 2005-03-15 for cursor restoration. (preview-auto-reveal-p): Implement integer MODE and take DISTANCE argument. (preview-auto-reveal): Allow DISTANCE. 2006-10-19 David Kastrup * prv-xemacs.el (preview-defmacro): Use `fboundp' instead of `functionp'. (add-to-list): compatibility function not needed anymore since 2006-10-11 change. 2006-10-18 David Kastrup * preview.el (eval-when-compile): restore function definitions of compatibility macros. * prv-xemacs.el (preview-defmacro): Also redefine functions that actually exist, but save their definition. * preview.el (preview-parse-messages): Fix bad regexp. 2006-10-16 David Kastrup * preview.el (preview-parse-messages): Rearrange the regexp for matching and renumber the matches and match strings accordingly. 2006-10-11 David Kastrup * preview.el (LaTeX-preview-setup): Move setup of `TeX-error-description-list' and `TeX-expand-list' to AUCTeX proper. 2006-10-10 David Kastrup * preview.el (preview-gs-filter): Fix prompt match expression to allow stack garbage > 10. (preview-gs-open): Assume `.runandhide' is defined (Ghostscript 6.53 and greater). Don't check Ghostscript stack for correctness, just leave garbage. (preview-prepare-fast-conversion): Use `.runandhide' to ignore garbage left by preamble (such as Omega fonts). (preview-LaTeX-command): Use "%'" and "%t" expansion strings in order to allow filenames with spaces in them. (preview-goto-info-page): Use `info' instead of `Info-goto-node'. (preview-parse-messages): Spike up terminal log file name tracing in order to have a reasonable chance of detecting spaces in file names. (preview-parse-messages): Massage match string for partial strings to deal better with TeX-quoted control sequences. (preview-dump-file-name): The format name should not contain spaces. Replace them with underlines. (preview-dump-replacements, preview-undump-replacements): Use a different replacement in order to work with the new `preview-LaTeX-command'. (preview-cache-preamble): shell-quote `preview-format-name'. Keep `mylatex.ltx' from ignoring spaces in file names. (TeX-inline-preview-internal): shell-quote `preview-format-name'. 2006-09-29 David Kastrup * preview.el (preview-gs-command): Make default depend on `system-type', using "GSWIN32C.EXE" on `windows-nt'. * configure.ac: If no GhostScript or the standard setting for the operating system is found, don't override the default. 2006-09-21 David Kastrup * preview.el (preview-TeX-style-cooked): Fix bugs. (preview-set-texinputs): Use `preview-TeX-style-cooked'. (preview-TeX-style-dir): Change doc string to reflect new behavior of `preview-set-texinputs'. (preview-install-styles): Try to deal with `preview-TeX-style-dir' properly. Bomb out if no styles found to install. (preview-report-bug): Add `preview-TeX-style-dir' to reported variables. * configure.ac: Remove `--with-kpathseasep' option. 2006-09-01 David Kastrup * prv-xemacs.el (preview-import-image): Allow strings as image properties. * prv-emacs.el (preview-remove-urgentization) (preview-import-image): Allow strings as image properties. * preview.el (preview-clearout, preview-kill-buffer-cleanup) (preview-place-preview): Use `timestamp' field universally for dealing with when to overwrite and when to retain images, don't rely on filename internals. (desktop-buffer-preview-misc-data): Use `preview-image' to judge the availability of savable data. (preview-reinstate-preview): Allow saving images without associated filenames. (preview-format-mml): Deal with string type images. 2006-08-25 David Kastrup * latex/preview.dtx: Use eTeX's `\protected' on redefinitions when available. 2006-08-15 David Kastrup * latex/preview.dtx: Change from 2006-07-12 could lose the `AtBeginDvi' material. Fix that. Disable preview within output routine. And actually hijack `\output' instead of doing it half way. 2006-07-28 Reiner Steib * latex/Makefile.in (install-texmf): Only update the relevant ls-R file. 2006-07-25 David Kastrup * latex/preview.dtx: Allow two optional parameters as in memoir.cls for sections. Also preview chapter headings. 2006-07-23 Ralf Angeli * configure.ac: Fix spelling of MiKTeX. 2006-07-12 David Kastrup * latex/preview.dtx: Add a font-lock helping comment, remove preview's hook into the output routine, deactivate `\shipout' in a cleaner manner. 2006-07-11 David Kastrup * latex/preview.dtx: Fix XymTeX catcodes again. 2006-07-10 Ralf Angeli * Makefile.in, latex/Makefile.in (datarootdir): New variable used by autoconf 2.59e. 2006-06-12 Ralf Angeli * latex/README: Streamline. Add sections. Clean up. 2006-06-08 David Kastrup * latex/README: Adapt to new realities. 2006-05-25 David Kastrup * latex/preview.dtx: Add another fix for XyMTeX (which got the catcode for @ wrong). 2006-05-25 Ralf Angeli * configure.ac: Bump version number. Update address of FSF in GPL notices. 2006-04-20 David Kastrup * preview.el (preview-parse-messages): Adapt parser to `-file-line-error-style' messages. Try to make the detection of the current file more robust. Utilize file-line-error messages for that purpose if they are present. 2006-03-22 Ralf Angeli * Makefile.in (.PHONY, install): Remove `install-metadata'. (install-metadata): Remove. 2006-03-22 David Kastrup * prv-install.el (preview-make-package-xemacs): Accept list of files to be appended. 2006-03-14 Ralf Angeli * configure.ac: Use `AC_PROG_MAKE_SET' instead of deprecated `AC_SET_MAKE'. 2006-02-21 Ikumi Keita * preview.el (preview-error-quote, TeX-inline-preview-internal): Fix the problem that preview-latex put the preview-image in wrong place if user compiles iso-2022-jp file on Windows or UNIX, by using TeX-japanese-process-output-coding-system for preview-coding-system instead of buffer-file-coding-system if tex-jp.el is loaded. 2006-01-29 Ralf Angeli * Makefile.in (install-metadata): Let `for' loop return an exit status of 0. 2006-01-20 Reiner Steib * preview.el (preview-TeX-style-cooked): Fix cond expression. 2006-01-17 David Kastrup * preview.el (preview-TeX-style-cooked): New function, to be used later. Just checked in so that nobody else feels compelled writing it. 2006-01-14 David Kastrup * configure.ac: Remove infodir and INSTALL_INFO checks. Don't check for TEXHASH if it is already set. 2006-01-13 David Kastrup * preview.el (preview-parse-messages): Some ugly fix for `' style error messages. 2005-12-31 David Kastrup * Makefile.in (ELCC, AUCTEX): Put "." in front of load-path to avoid picking up outdated `prv-*.el*' files from the installation directory. 2005-12-17 Ralf Angeli * configure.ac: Bump version number. 2005-10-24 Ralf Angeli * configure.ac: Import `TEX' in unquoted form. 2005-10-13 Ralf Angeli * configure.ac: Change wrongly used `previewdatadir' to `previewlispdir'. Change version number in `AC_INIT'. 2005-10-03 Ralf Angeli * prv-xemacs.el (preview-check-changes): Delete detached extents. 2005-09-27 Ralf Angeli * configure.ac: Document option for specifying AUCTeX startfile as --with-previewstartfile, not --with-preview-startfile which does not work. Use matching package names for determining the kpathsea path separator both internally and in the option name which now is --with-kpathseasep. Fix the quadrigraph for the closing bracket in the kpathsesep-related error message. 2005-09-25 Ralf Angeli * latex/preview.dtx: Add space for nicer formatting in version output. Adapt checksum. 2005-09-25 David Kastrup * latex/preview.dtx: Try fixing the release parsing/grouping. 2005-09-25 Ralf Angeli * latex/README (CTAN): Bump version number. * latex/preview.dtx: Fix case in release tag parsing. 2005-09-24 David Kastrup * latex/preview.dtx: Try parsing version correctly by treating underlines in the release tag properly. 2005-09-24 Ralf Angeli * preview.el (preview-version): Extract version number from release tag. 2005-08-18 Ralf Angeli * configure.ac: Import unquoted variables from top-level configure script. 2005-07-15 David Kastrup * latex/preview.dtx: Don't talk nonsense about the footnote macro, and don't define it nonsensical for AUCTeX. Reproduce `\@startsection' command to keep numbering correct in default configuration for AUCTeX. 2005-07-14 David Kastrup * configure.ac: protect against packagedir starting with `-' 2005-07-11 David Kastrup * preview.el (preview-at-point): Join adjacent touched previews for regeneration. * prv-emacs.el (preview-mode-setup): * prv-xemacs.el (preview-mode-setup): Use correct string for resetting watch on preamble. 2005-07-05 David Kastrup * preview.el (preview-string-expand): Allow substrings to be controlled by booleans. (preview-expandable-string): Adapt type to that. (preview-required-option-list): Make dependent on `preview-preserve-counters'. (preview-preserve-counters): New boolean. 2005-06-30 jalar * latex/preview.dtx: : added comments 2005-06-28 Jan-Ake Larsson * latex/preview.dtx: Add version number in a \special, in dvips mode. Fix mismatched parantheses. 2005-06-27 David Kastrup * latex/preview.dtx: Put version into `\pr@version'. 2005-06-27 Jan-Ake Larsson * latex/preview.dtx: Add backwards-compatibility for dvipng <= 1.5 * latex/preview.dtx: Add preview@tightpage 2005-06-24 David Kastrup * prv-install.el (preview-make-package-xemacs): Add author-version. * preview.el (preview-TeX-style-dir): Change docs. * latex/Makefile.in (preview.dvi): Depend on preview.sty (preview.pdf): Same here. * configure.ac: Remove checks for PERL and info-related stuff. Add . into search path first. * Makefile.in (texmf): Depend on latex/Makefile (latex/Makefile, auto.el, configure, Makefile, config.status): targets to make sure that Makefile and stuff are up to date. (install-metadata): pass author version into prv-install.el 2005-06-21 Ralf Angeli * configure.ac: Make message at end of configuration clearer. Remove redundant build hint. * .cvsignore: Remove irrelevant entries. 2005-06-21 David Kastrup * configure.ac: correct comparison. 2005-06-20 David Kastrup * RELEASE: Remove (folded into ../RELEASE). 2005-06-18 David Kastrup * preview.el (preview-gs-dvips-process-setup) (preview-dvipng-process-setup): Improve error message. (preview-parse-messages): Don't throw error on nil parsestate if we are in error unwinding mode already. 2005-06-14 David Kastrup * README.CVS: Remove. Top file should be sufficient. * autogen.sh: Remove. We have its functionality in the top directory. 2005-06-08 Ralf Angeli * Makefile.in (docs, install-docs): Remove. (all): Do not depend on `docs' anymore. (.PHONY): Do not depend on `docs' and `install-docs' anymore. (clean, maintainer-clean): Do not descend into doc directory anymore. * autogen.sh: Do not generate documentation anymore. * configure.ac: Remove doc/Makefile from AC_OUTPUT. * doc/todo.texi: Move to AUCTeX's main doc/ directory as preview-todo.texi. * doc/readme.texi: Move to AUCTeX's main doc/ directory as preview-readme.texi. * doc/problems.texi: Move to AUCTeX's main doc/ directory as preview-problems.texi. * doc/preview-dtxdoc.pl, doc/preview-latex.texi: Move to AUCTeX's main doc/ directory. * doc/faq.texi: Move to AUCTeX's main doc/ directory as preview-faq.texi. * doc/copying.texi: Move to AUCTeX's main doc/ directory. * doc/Makefile.in: Remove. * doc/.cvsignore: Remove. 2005-06-06 David Kastrup * configure.ac: Remove call to MAKEINFO_CHECK_MACROS: we expect a recent enough makeinfo version for bootstrapping, anyway. * doc/Makefile.in (MAKEINFO_MACROS): remove (TEXINFOINCLUDES): Remove unused TEXIPWD hack. Troublesome. 2005-06-04 David Kastrup * doc/Makefile.in (TEXIFILES): Oops, depends on ../../doc/macros.texi * latex/Makefile.in (MKINSTALLDIRS): * doc/Makefile.in (MKINSTALLDIRS): * Makefile.in (MKINSTALLDIRS): Use mkinstalldirs from AUCTeX. * mkinstalldirs: remove in favor of ../mkinstalldirs * doc/Makefile.in (TEXI2HTML): Use TEXI* tools and TEXINFOINCLUDES. (../README): et al. Depend on ../../doc/macros.texi * configure.ac: Check and test for TEXI* as well. Quotify if necessary. * autogen.sh: Look in .. for macros. * doc/Makefile.in (preview-latex.dvi): Use texi2dvi. (preview-latex.pdf): Use texi2pdf. (preview-latex.ps): Use -Ppdf option. (preview-latex.info, ../README, ../FAQ, ../PROBLEMS, ../TODO): deal with ../../doc/macros.texi 2005-05-25 David Kastrup * circ.tex (section{Die gerade Linie}): Make the intentional errors more conspicuous. 2005-05-24 David Kastrup * aclocal.m4: Use elif for prettiness. * prv-xemacs.el (preview-mode-setup): Change watch condition. (preview-watch-preamble): Accept command. (preview-unwatch-preamble): Change unwatch method. (preview-preamble-check-change): Change check. * prv-emacs.el (preview-preamble-changed-function): First unwatch preamble, then kill format. (preview-watch-preamble): Accept command to watch for. (preview-unwatch-preamble): Adapt to new `format-cons' format. (preview-mode-setup): Change watch condition. * preview.el (preview-dumped-alist): Change definition. (preview-parse-messages): Use `string-to-number' instead of obsoleted `string-to-int'. (preview-cache-preamble): Add format-cons arg. Only cache preamble if there is no cache with the same command yet. Precalculate command and check whether it matches previous one. If so, omit dumping. (preview-region, preview-document): Expand command here. (preview-generate-preview): Accept expanded command. Always tentatively dump command (unless disabled) and set sentinel only if this succeeded. (TeX-inline-preview-internal): Set command buffer at start. Use `commandbuff' argument rather than `TeX-command-buffer'. Raise error at different point. 2005-05-22 David Kastrup * aclocal.m4: Allow --with-emacs=sth and --without-xemacs and similar combinations as long as they are more or less consistent. 2005-05-21 Ralf Angeli * prv-install.el (preview-make-package-xemacs): Cater for XEmacs 21.5 which uses a different interface for generating autoloads at present. 2005-05-21 David Kastrup * doc/wininstall.texi: Editing changes. Last checkin before removal. * doc/install.texi: Editing changes. Last checkin before removal. * doc/faq.texi (Customization): Don't use @var inappropriately. * autogen.sh: Remove generation of auto.texi. * doc/preview-latex.texi (Installation): Refer to AUCTeX manual. (Keys and lisp): Some formatting changes. * doc/Makefile.in (TEXIFILES): Remove wininstall.texi and install.texi. (DISTTEXTS): Remove ../INSTALL and ../INSTALL.windows (../INSTALL, ../INSTALL.windows): Remove. * doc/problems.texi (Known problems): Remove old AUCTeX advice. Remove explicit node names. (Emacs problems): Rewrite. Mention precompiled CVS Emacsen. Refer to AUCTeX manual. (AUCTeX prior to 11.0): Remove. (Too small bounding boxes): Reword. (x-symbol interoperation): Explain 8-bit cleanliness somewhat more. 2005-05-20 Ralf Angeli * preview.el (preview-specs-type): Use an extra :value keyword to avoid a bug in `widget-convert' of XEmacs 21.4 and Emacs 21. 2005-05-18 David Kastrup * doc/preview-dtxdoc.pl: Don't use \n in character ranges since it is not actually a character in Windows. 2005-05-17 David Kastrup * Makefile.in (lisp): Rewrite condition to make `make -n' work, also non-Posix shells. (install-metadata): Rewrite stuff for non-Posix shells. (preview-latex.el): Same here. (install-metadata): ignore return state of mkinstalldirs. 2005-05-02 David Kastrup * doc/wininstall.texi: * doc/install.texi: Overhaul, use auto.texi. * doc/Makefile.in (../INSTALL, ../INSTALL.windows): add auto.texi dependence. (maintainer-clean): remove auto.texi. * autogen.sh: Generate auto.texi * README.CVS: Some modifications. * aclocal.m4 (EMACS_PATH_LISPDIR): better help. 2005-05-01 David Kastrup * doc/install.texi (Configure): Synch with auctex. 2005-04-30 David Kastrup * configure.ac: Use existing variables packagedatadir, packagelispdir. If configuring a package and infodir is defaulted, disable install-info. Disable TEXHASH when installing --without-texmfdir. Move TEXHASH test. * aclocal.m4: Use existing lispdir variable. * prv-install.el (preview): don't require (preview-make-package-xemacs): several changes to command line options. * Makefile.in (lisp): rename from elisp for harmony with AUCTeX. (install-images): rename from install-icons. (install-metadata): new options for prv-install.el 2005-04-29 David Kastrup * aclocal.m4: echo date correctly. 2005-04-28 David Kastrup * aclocal.m4 (AUCTEX_AUTO_DIR): simplify. (AC_LISPIFY_DIR): add third argument. Simplify a few common expressions. 2005-04-27 David Kastrup * aclocal.m4: sed paranoia. 2005-04-27 Ralf Angeli * aclocal.m4 (AC_DATE_VERSION_FROM_CHANGELOG): Escape `+'. Add regexp group. Close function. 2005-04-27 David Kastrup * preview.el (TeX-inline-preview-internal): Don't try interpreting coding-system if it is nil. * aclocal.m4 (AC_DATE_VERSION_FROM_CHANGELOG): actually look into the ChangeLog file. Uh. * latex/README (Note): Add bug reporting address. 2005-04-19 David Kastrup * preview.el (preview-install-styles): Add autoload cookie. 2005-04-18 David Kastrup * preview.el (preview-dump-state): New function to get run buffer info. (preview-report-bug): Use it. * Makefile.in (install-metadata): include directories in `MANIFEST'. 2005-04-16 David Kastrup * latex/preview.dtx: Work around another ntheorem bug affecting showlabels. 2005-04-12 David Kastrup * configure.ac: Don't bother about pre-2.5 autoconf versions. * doc/faq.texi (Customization): Remove lamentation that PDF foreground is fixed to black. * preview.el (preview-pdf-color-string): New function. (preview-pdf2dsc-sentinel): Use it. * configure.ac: renamed from configure.in 2005-04-11 jalar * configure.in: Minimal changes to printouts 2005-04-11 Ralf Angeli * preview.el (preview-set-texinputs): Fix grouping. 2005-04-11 David Kastrup * prv-install.el (preview-make-package-xemacs): Don't generate manifest and take package name from command line. * configure.in: Don't expose `lispdir'. Explain `TEXHASH', `PERL', `MAKEINFO', `INSTALL_INFO'. * latex/Makefile.in (texmfdir): Don't import. * Makefile.in (lispdir): Don't import. * preview.el (preview-counter-find): Fix bug with `(marker)'. * latex/Makefile.in (exec_prefix, libdir): Export. * doc/install.texi (Configure): Explain `--without-texmf-dir'. (Advice for package providers): Don't trash talk AUCTeX preactivation. (Advice for package providers): Mention `--without-texmf-dir'. * doc/Makefile.in (exec_prefix, libdir): export. * preview.el (preview-datadir): Use instead of `preview-icondir'. (preview-filter-specs): Use it. (preview-TeX-style-dir): New variable for uninstalled styles (preview-set-texinputs): Add or remove it from TEXINPUTS environment. (preview-TeX-style-dir): proper customization. (preview-install-styles): New function to install styles permanently. * configure.in: use `packagedatadir' instead of `icondir'. Add check for `kpathseaseparator'. Shell-quote and export `exec_prefix' and `libdir'. * auto.el.in (preview-datadir): replace preview-icondir, and add `lisppackagetexstyles' invocation. * aclocal.m4 (TEX_PATH_TEXMFDIR): Allow --without-texmf-dir, stop quoting a bunch of stuff, fix reference to load-file-name. * Makefile.in (exec_prefix, libdir, packagedatadir): export since the XEmacs tree might call them. (.PHONY, install): add install-nosearch target. (install-nosearch): Install .nosearch file. (install-icons): Use `$(packagedatadir)/images' instead of `$(icondir)' 2005-04-10 David Kastrup * configure.in: Use new backquote syntax. * doc/install.texi (Configure): Clarify. 2005-04-10 Ralf Angeli * latex/preview.dtx: Dvipng --> dvipng. * RELEASE, circ.tex, configure.in, preview.el, doc/faq.texi, doc/install.texi, doc/preview-latex.texi, doc/problems.texi, doc/readme.texi, doc/wininstall.texi, latex/README, latex/preview.dtx: GhostScript --> Ghostscript. 2005-04-08 David Kastrup * Makefile.in (previewstartfile): import. (install-startup): split lines with `$(MAKE)' and `$(INSTALL_DATA)' so that `make -n' will properly recurse. * aclocal.m4 (AC_LISPIFY_DIR): resolve relative paths below ${lispdir} hierarchy. AC_SUBST both lisp variant of directory as well as original. * configure.in: Add `--with-preview-startfile', use new semantics of `AC_LISPIFY_DIR', drop `AC_MAKE_FILENAME_ABSOLUTE' stuff. * doc/install.texi (Configure): explain new semantics of `--with-lispdir' and new `--with-preview-startfile'. * doc/wininstall.texi: Document changes semantics for `--with-lispdir' and new `with-preview-startfile'. 2005-04-07 David Kastrup * aclocal.m4 (EMACS_LISP): properly echo result to log file. (EMACS_EXAMINE_INSTALLATION_DIR): check that the result of file-relative-name is not absolute, which can happen for unrelated drives on Windows. (AC_FULL_EXPAND): also check, set and restore exec_prefix if not set. 2005-04-05 Ralf Angeli * configure.in: Cosmetics for ./configure --help. * preview.el (desktop-buffer-preview): Return buffer even if no information about previews is found. 2005-04-04 David Kastrup * preview-latex.spec (URL, Source0): Fix addresses to point to AUCTeX. Oops. 2005-04-03 David Kastrup * Release 0.9.1 * latex/preview.dtx: Don't let negative dimensions into tightpage comment. * doc/macros.texi: Make @previewlatex swallow argument in links. Don't scrap sf declaration. Make it correct in links. * doc/readme.texi (What use is it?): * doc/problems.texi: * doc/install.texi (Top): Work around raisesection bug. * doc/Makefile.in (../INSTALL, ../INSTALL.windows, ../README) (../FAQ, ../TODO): Remove --no-validate option. (../PROBLEMS): remove --no-validate option, and number sections. * doc/faq.texi: Make validatable top entry. Don't raise sections until after the first chapter. This is insane, but otherwise everything will be unnumbered. * configure.in: Expand `packagelispdir' and `lispdir' before checking for conflicts. 2005-04-02 David Kastrup * autogen.sh: Remove autom4te.cache * doc/Makefile.in (.PHONY): Add a few targets. * doc/readme.texi (Basic modes of operation): Correct dvipng information. * autogen.sh: make preview-latex.info generation work by passing in PERL default. * README.CVS: Mention that `perl' is needed for autogen.sh, and that `makeinfo' might need to be up to date. * latex/README: Renamed from latex/README-preview. Overhaul availability. * doc/macros.texi: Synchronize to AUCTeX. * Makefile.in (tarball-ready): Remove this target for now: it can't be used consistently really. It is probably better to do just run autogen.sh on a freshly exported archive. * doc/Makefile.in (DISTTEXTS): Targets in parent dir. (../INSTALL, ../INSTALL.windows, ../README, ../FAQ, ../PROBLEMS) (../TODO): New targets instead of targets in current dir. (clean): Don't remove targets in this dir. (maintainer-clean): Remove DISTTEXTS targets. * autogen.sh: Use make for generating distribution texts and also pregenerate the info file. * Makefile.in (emacsprefix): Remove. (.PHONY): Collect phony targets here. (DISTTEXTS): Move to doc/Makefile.in (tarball-ready): Adapt * preview-latex.spec: Change version number. Change directory choice to "xemacs-packages" on fedora. * doc/wininstall.texi: Mention that Perl is not needed if working with the default tarball. * doc/preview-latex.texi: Bump versions numbers, fix copyrights. * doc/readme.texi (Activating preview-latex): Don't talk about half a dozen non-sensical things. (Availability): Change information to match move into AUCTeX. * configure.in: Add check for load-path shadowing. * aclocal.m4 (TEX_PATH_TEXMFDIR): We want "${texprefix}/share" in most cases. 2005-04-01 David Kastrup * doc/faq.texi: Some changes. This thing really is an outdated unmaintained abomination. We need to do something about it at one time. 2005-04-01 Ralf Angeli * aclocal.m4 (EMACS_EXAMINE_INSTALLATION_DIR): Repair quoting. 2005-04-01 David Kastrup * RELEASE: rearrange. Mention AUCTeX 11.80 as target. * aclocal.m4(EMACS_EXAMINE_INSTALLATION_DIR): avoid trailing `/.'. (TEX_PATH_TEXMFDIR): search order changed. * latex/Makefile.in (prefix, datadir, texmfdir, previewtexmfdir) (previewdocdir): Use (null) to mask Windows backslashes. * configure.in: Adjust version info. * aclocal.m4 (EMACS_PATH_PREFIX): just generate a single output. (EMACS_PROG_EMACS): Check for `emacsprefix'. (EMACS_EXAMINE_INSTALLATION_DIR): accept list of prefix variables as second argument. Decompose and compare directory names starting from the back. (EMACS_PATH_PACKAGEDIR): search in several prefixes. (EMACS_PATH_LISPDIR): same. (TEX_PATH_TEXMFDIR): set `texprefix' from kpsepath. Use new `EMACS_EXAMINE_INSTALLATION_DIR' for getting TeX directories. 2005-03-31 David Kastrup * configure.in: Don't set prefix if it is not set. * aclocal.m4 (EMACS_PATH_PREFIX): new function. (AC_FULL_EXPAND): set `prefix' from `ac_default_prefix' before expansion if it is unset. 2005-03-31 jalar * Makefile.in: * aclocal.m4: Add $emacsprefix 2005-03-31 David Kastrup * RELEASE: Update release info. 2005-03-30 Ralf Angeli * Makefile.in (use-hint): Fix spelling. * preview.el (preview-report-bug): Use "preview-" prefix in version information. 2005-03-29 David Kastrup * configure.in (auctexdir): Use `AC_ARG_VAR' on `GS' and `TEXHASH' (should probably also be used on a few other environment variables). Use `AC_SHELL_QUOTIFY' on `GS'. 2005-03-28 David Kastrup * preview.el (preview): Change home page address to AUCTeX. (preview-report-bug): Change bug reporting address. * doc/readme.texi (Contacts): Change mailing list info. * doc/problems.texi: Change mailing list info. * doc/faq.texi (Introduction to FAQ): Change mailing list address. * preview.el (if): Use (featurep 'xemacs) instead of `(string-match "XEmacs" (emacs-version))'. (preview-at-point): Don't check for XEmacs, just use `TeX-active-mark' instead. 2005-03-24 Ralf Angeli * Makefile.in (distclean, maintainer-clean, tarball-ready): Delete autom4te.cache in maintainer-clean and tarball-ready targets. 2005-03-24 Jan-Ake Larsson * doc/Makefile.in: Add *.pdf to clean target and preview-dtxdoc.texi to maintainer-clean 2005-03-23 jalar * doc/Makefile.in: * Makefile.in: add maintainer-clean target * Makefile.in: add tarball-ready target * configure.in: Add check for perl * doc/Makefile.in: Use the configure-provided $PERL 2005-03-22 David Kastrup * preview.el (preview-counter-find): Coerce `begin' to integer to work around an Emacs 21.x bug. * Makefile.in (install): Install startup file before docs. * doc/Makefile.in (preview-latex/index.html): Don't ignore exit status of makeinfo (this target is on-demand only, anyway). * doc/preview-dtxdoc.pl: Accept two arguments so that output file will not get clobbered if Perl is not operative. 2005-03-19 David Kastrup * prv-xemacs.el (preview-buffer-recoding-alist): Madness variable. (preview-buffer-recode-system): Use it. (tex-site, tex, latex): Require them. * prv-emacs.el (tex-site, tex, latex): require them to silence byte compiler. (preview-buffer-recode-system): Compatibility function. Probably not necessary for Emacs. * preview.el (TeX-overlay-prioritize): don't redefine, test for its presence at runtime. Less invasive, less offensive to the byte compiler. (preview-coding-system): New buffer-local variable to indicate the coding system used for processes. (preview-place-preview, preview-reinstate-preview): Use `TeX-overlay-prioritize' only if it exists. (mailcap-extension-to-mime): Use an autoload form instead of `require' at runtime. (preview-format-mml): Use `mailcap-extension-to-mime' directly (preview-error-quote): take coding system of LaTeX process as second argument. (preview-parse-messages): initialize `run-coding-system' from `preview-coding-system'. Use it for calling `preview-error-quote'. (TeX-inline-preview-internal): Initialize `preview-coding-system' and make process use it. 2005-03-18 David Kastrup * preview.el (TeX-region-create): Try shutting up the byte compiler at load time. * doc/install.texi: Mention that "the usual procedure" is for site-wide installation. (Advice for package providers): Mention site-start.el. (Advice for non-privileged users): Adapt to new conventions. Some other small changes. * preview.el (TeX-overlay-prioritize): correct stupid typo. (preview-log-error): Pop up run buffer in case of error. 2005-03-17 David Kastrup * preview.el (tex-site): Require loads of stuff at the beginning: preview.el is supposed to be autoloaded, so we can just load everything that needs to get loaded, anyway. (TeX-overlay-prioritize): alias to "ignore" if not defined elsewhere. This will not set priorities. (eval-when-compile): move out most requires. (preview-place-preview): Use TeX-overlay-prioritize instead of TeX-fold-prioritize. (preview-counter-find): Pass begin in to reduce one compilation error message. (TeX-region-create): Don't preactivate `preview-counter' advice. (preview-reinstate-preview): Rename priority function to `TeX-overlay-prioritize'. (LaTeX-preview-setup): Remove requires. (TeX-region-create): Explicitly activate `preview-preamble' advice even though it is preactivated. 2005-03-16 David Kastrup * prv-emacs.el: Use the four-argument version of `face-attribute' if it exists. 2005-03-15 David Kastrup * doc/install.texi (Configure): Be somewhat more verbose. Be explicit about Emacs-only options. * doc/wininstall.texi: Warn against Winzip. Reorganize docs somewhat and clarify about Emacs-only procedures. * doc/preview-latex.texi (Keys and lisp): Document preview-at-point allowing active region. * preview.el (preview-at-point): Remove nonsensical arguments. Instead, allow for an active region. * configure.in: Add `packagelispdir' to quoted Makefile variables. 2005-03-14 David Kastrup * latex/preview.dtx: Reformat the kaboodle to look nicer. Move \nofiles to auctex option. * latex/README-preview (Note): Mention \nofiles problem. * preview.el (preview-LaTeX-command): Add \nofiles to startup. 2005-03-14 Masayuki Ataka * preview.el (TeX-fold-prioritize): autoload. (preview-place-preview, preview-reinstate-preview): Use it. 2005-03-07 David Kastrup * preview.el (preview-gs-open): Make better error message for junk left over on PostScript stack, so that we may better pass the buck. 2005-03-05 David Kastrup * latex/preview.dtx: Fix psfixbb option that must have become illegal at some time accidentally. * doc/install.texi (Loading the package): Explain that preview-latex.el should already be installed in-place. 2005-03-04 David Kastrup * Organizational: preview-latex development has been moved from into the AUCTeX CVS Archive on . 2005-03-03 David Kastrup * Release 0.9 * prv-install.el (preview-make-package-xemacs): Add directory information from autoe.el to autoloads. * Makefile.in (elisp): generate preview-latex.el only when no package system. (install-el): Depend on auto.el (install-startup): Make and install preview-latex.el only when no package system. * prv-emacs.el (preview-create-icon-1): Use adaptive heuristic mask for transparency. * preview-latex.spec: Make preview.dvi. But preview-latex.pdf * latex/Makefile.in (all): Generate both dvi and pdf. (install-texmf-doc): Install DVI (faster, compact). * latex/Makefile.in (install-texmf-doc): Install PDF instead of DVI file. * doc/wininstall.texi: Simplify, rearrange, adapt to new installation scheme. Add links to CVS precompiled versions. * doc/install.texi (Prerequisites): Revamp. (Configure): Add explanations. * preview-latex.spec: Change rpm name to include "fedora". Adapt to new configure stuff. Use pdf doc instead of DVI. * configure.in: icondir is absolute, reorder some stuff to maintain directory locality. * aclocal.m4: Change a lot of $x to ${x}. Simplify some stuff. * RELEASE: Add information for release. * configure.in: Correct prefix check. Add Emacs version check. * aclocal.m4: Move several functions around, completely overhaul the stuff to just detect material in prefix-related directories. Remove docstrip config detection, add version checking of major and minor version. Rely on prefix being set by configure.in. 2005-03-02 David Kastrup * Makefile.in (install-el): no means no for packagedir. * configure.in: Set prefix. * aclocal.m4: Use "no" for no packagedir in XEmacs. Don't save prefix and stuff. Expand stuff at some points. * doc/wininstall.texi: Use executable name directly to save confusion. * prv-xemacs.el (preview-filter-specs): Rework specs. * prv-emacs.el (preview-filter-specs): Translate :type fields. * preview.el (preview-min-spec): Move. (preview-filter-specs): Move from prv-emacs.el and prv-xemacs.el. (preview-filter-specs-1): simplify. (preview-icondir): Create icondir preset variable. (preview-filter-specs): expand file specs against it here instead of prv-emacs.el and prv-xemacs.el. * configure.in: Adapt to new variables. Remove check for image-supporting Emacs: it is probably not reliable on consoles. Add packagelispdir and icondir options. (GS): Don't try GSWIN32.EXE. Create lispGS in auto.el * autogen.sh: Use --output option for makeinfo to get tableofcontents in FAQ. * doc/Makefile.in (.PHONY): Add install here. * Makefile.in (install-el): Adapt targets to packagelispdir. (.PHONY): Add install target for case insensitive filesystems. * aclocal.m4: Rewrite EMACS_EXAMINE_PACKAGEDIR. EMACS_LISP now gets one argument less. EMACS_TEST_LISP_DIR makes just one pass. EMACS_PATH_LISPDIR expands less. AC_LISPIFY_DIR is a new function. AC_MAKE_FILENAME_ABSOLUTE AC_LISP_RELATIVE new functions. 2005-02-26 David Kastrup * doc/readme.texi (Basic modes of operation): Adapt PDFLaTeX explanation to newer AUCTeX versions. * preview.el (preview-error-icon-specs): Choose somewhat oversized errors. Adapt to set. (preview-gs-restart, preview-gs-transact): Change image file name prefix to `pr'. (preview-clean-subdir): When cleaning out subdirectories, match `pr' instead of `pre'. * Makefile.in (ICON_SOURCES): Adapt to existing set. 2005-02-25 David Kastrup * preview.el (preview-gs-options): Remove "-dDELAYSAFER" from option list. (preview-gs-sequence): New variable. (preview-gs-sentinel): Don't repeat startup echo if GhostScript fails before prompting the first time. (preview-gs-sentinel): When restarting, remove expected file names from `preview-gs-outstanding'. (preview-gs-restart): generate a unique output file name pattern from `preview-gs-sequence' (preview-gs-restart): list start command quoted. (preview-gs-open): initialize `preview-gs-sequence'. (preview-gs-open): if historic "DELAYSAFER" is still configured, start safe mode manually. Remove all settings of OutputFile, and all runandhide stuff. (preview-gs-place): Don't generate a filename that might not be needed. (preview-gs-flag-error): Generate a synthetic OutputFile option. Use it in error messages. (preview-gs-transact): generate output file name in outstanding queue. Don't fiddle with OutputFile settings. Advance `preview-gs-sequence'. (preview-dvipng-place-all): Generate file name. * prv-xemacs.el (null-device): Remove compatibility definition. 2005-02-18 David Kastrup * preview.el (preview-specs-setter): New function. (preview-nonready-icon-specs): Choose slightly smaller icons. (preview-nonready-icon-specs, preview-error-icon-specs) (preview-icon-specs): Use `preview-specs-setter'. * doc/wininstall.texi: Mention case problems. * doc/install.texi (Prerequisites): Update AUCTeX version info. * doc/problems.texi (Middle-clicks paste instead of toggling): Remove reference to patches directory. Should no longer be necessary. (Problems with GhostScript): Mention use of gswin32.exe instead of gswin32c.exe as a problem source. * preview.el (preview-nonready-icon-specs): Add size 14. * images/prvwrk24.xpm: New icon, dimmer, better shape. * images/prvwrk20.xpm: New icon * images/prvwrk16.xpm: New icon * images/prvwrk14.xpm: New icon * images/prvwrk12.xpm: New icon 2005-02-15 David Kastrup * preview.el (preview-error-quote): Encode to raw-text to get unibyte string. 2005-02-13 David Kastrup * doc/preview-latex.texi (The Emacs interface): Adapt to new `preview-use-balloon-help' default. * doc/faq.texi (Customization): Adapt to new `preview-use-balloon-help' default. * prv-xemacs.el (preview-use-balloon-help): Default to nil. * preview.el (preview-gs-flag-error): For consistency, make error icons have a context menu on right mouse button. 2005-02-11 David Kastrup * doc/preview-latex.texi (Keys and lisp): Change descriptions to cater only for interactive use. (Keys and lisp): Explain mouse-3 better. (Keys and lisp): Move preview-copy-region-as-mml explanation up. Explain about the new border avoidance behavior. (The Emacs interface): Explain about how to adapt the various icon-specs. * preview.el (preview-specs-type): Type for specs defcustom. (preview-nonready-icon-specs, preview-error-icon-specs) (preview-icon-specs): move lower and make defcustom from it. 2005-02-10 David Kastrup * prv-emacs.el (preview-mode-setup): Only define a preview toolbar entry when the icon is valid. * RELEASE: Mention the new icons. * prv-xemacs.el (preview-tb-icon): Use this instead of (preview-icon-toolbar-button): in order to match `preview-tb-icon-specs', as in prv-emacs.el (preview-mode-setup): Don't install a toolbar item when no icon image can be generated properly. 2005-02-09 David Kastrup * prv-xemacs.el (add-to-list): only provide definition for three-argument version if XEmacs doesn't. May be removed at some time completely. (null-device): Only defvar if unbound in order not to munge the doc string. (preview-transparent-border): Silence the byte-compiler. (preview-supports-image-type): Move earlier. (preview-filter-specs): Correct a few typos. (preview-filter-specs): Don't forget to call `make-glyph'. (preview-mode-setup): Correct toolbar icon setup. * preview.el (preview-error-quote): Remove unused variable `char'. * doc/faq.texi (Requirements): Stop talking about ancient XEmacs versions. (Requirements): Mention Emacs 22 instead of 21.4 * doc/install.texi (Prerequisites): same * doc/problems.texi (Emacs problems): same * preview-latex.spec (Conflicts): xemacs = 21.4.16 * RELEASE: Add some dvipng information, more detailed recommendations. * preview.el (preview-region, preview-buffer, TeX-region-create) (preview-document, preview-environment, preview-section): Move down to avoid byte compiler warnings. * images/*: lots of renaming/moving stuff around. * configure.in: remove ICONFORM stuff. * Makefile.in (ICONFORM): removed. (ICON_SOURCES): Change to different list. * prv-xemacs.el (preview-nonready-icon, preview-error-icon) (preview-icon, preview-tb-icon): Removed in this form. (preview-ascent-spec): New symbol for storing minimal data when parsing specs. (preview-filter-specs): New function. (preview-icon-copy): Replaces `preview-nonready-copy'. (preview-mode-setup): Create toolbar button. * prv-emacs.el (preview-nonready-icon, preview-error-icon) (preview-icon): removed. (preview-filter-specs): New function. (preview-tb-icon-specs, preview-tb-icon): New variables for the toolbar icon. (preview-icon-copy): replaces `preview-nonready-copy' (preview-mode-setup): Initialize `preview-tb-icon' * preview.el (preview-nonready-icon-specs) (preview-nonready-icon, preview-error-icon-specs) (preview-error-icon, preview-icon-specs, preview-icon) (preview-min-spec): New variables. (preview-gs-place): Use `preview-icon-copy' instead of `preview-nonready-copy' (preview-make-image): New function. (preview-filter-specs-1): New function. (preview-buffer-restore-internal): Call `preview-get-geometry' for having size information. This may be incorrect at restore time. (preview-get-geometry): Also constitute `preview-icon', `preview-error-icon' and `preview-nonready-icon'. 2005-02-06 David Kastrup * doc/wininstall.texi: Add note about `gswin32c.exe'. 2005-01-29 David Kastrup * preview-latex.spec (Release): Bump version to prerelease, make some changes that look like they'd fit into AUCTeX's scheme. * RELEASE: Some changes and mentions. * doc/preview-dtxdoc.pl: Convert AUC\TeX reference as well. Convert `\#' to `#'. * latex/preview.dtx: Add `#' and `:' letters and documentation. Make all commands pass on `#' on cleanly. Don't eliminate last `{}' last in argument lists. * latex/Makefile.in (preview.pdf): New target. Since PDFs are used for external documentation usually, generate only the description (for internal docs, dvi is fine and adding the code, too). * configure.in: Bump version number. check for PDFLaTeX. 2005-01-26 David Kastrup * preview.el (preview-copy-mml, preview-copy-region-as-mml) (preview-format-mml): Ask whether user really wants to use bordered graphics. (preview-error-quote): Fix typo. Make the condition to call decode-coding-string depend on (featurep 'mule) to match choice for using raw process output. (preview-get-geometry): Return the geometry instead of manipulating a buffer. (preview-set-geometry): New function to set the geometry into buffer-local variables. (preview-generate-preview): Start by getting geometry. (TeX-inline-preview-internal): Additional geometry argument. Don't switch into buffer where we are already. 2005-01-25 David Kastrup * prv-emacs.el: Don't use transparent borders when Emacs is new enough to have tolerable blinking. * preview.el (preview-dvipng-color-string): Pass the border into dvipng. (preview-dvipng-place-all): Record the border in the image data structure. 2005-01-24 David Kastrup * RELEASE: Ask for dvipng 1.4, mention utf-8 capability. * preview.el (preview-error-quote): Don't regexp codes out of the ASCII range, and convert the resulting string using the buffer encoding. This makes for utf-8. (preview-parse-messages): Change match mechanism. (TeX-inline-preview-internal): Set process encoding to raw-text since TeX may deliver mixtures of encoded and clean bytes. 2005-01-19 Jan-Ake Larsson * aclocal.m4: sync with AUCTeX 2005-01-17 jalar * ChangeLog.1: Move dvipng changes to its Changelog 2004-11-05 David Kastrup * doc/readme.texi (What use is it?): New section. * doc/preview-latex.texi (The Emacs interface) (The preview images): Add a bit of information concerning PDF/dvipng operation. * preview.el (preview-default-preamble): Require specific date of preview package. * latex/preview.dtx: Let bop-hook and eop-hook work only on outer level, so that previews can contain dvips -E generated files. 2004-10-23 David Kastrup * preview.el (preview): Change group to 'AUCTeX. 2004-10-21 David Kastrup * prv-xemacs.el (preview-mode-setup): Add `desktop-save-buffer' setup. * prv-emacs.el (preview-mode-setup): Add `desktop-save-buffer' setup. * preview.el (desktop-buffer-preview-misc-data): Let arguments be ignored for desktop 2.06. Add to `desktop-buffer-misc-functions' only after desktop has been loaded. (desktop-buffer-preview): take arguments for desktop 206. 2004-10-18 David Kastrup * prv-xemacs.el (glyph-image-type): Removed. (preview-create-icon-1, preview-create-icon): like in prv-emacs.el. (preview-replace-active-icon): Use defsubst. (preview-ps-image): Removed. (preview-move-point): Reorganized. (preview-export-image): Removed. (preview-import-image): Changed to new preview-image semantics. * prv-emacs.el (preview-create-icon): replace macro with defsubst, add border argument. (preview-replace-active-icon): defsubst, and cater for new preview-image structure. (preview-int-bb, preview-ps-image): Removed, only needed for postscript device. (preview-move-point): Reorganized. (preview-export-image): Removed. * preview.el (preview-image-creators): Remove postscript device, it did not work, anyway. (preview-dvipng-color-string): Add resolution to args in order to properly convert border thickness. (preview-gs-dvips-sentinel): Delete unused `gsfile' variable. (preview-eps-open, preview-eps-dvips-process-setup, preview-eps-place): Removed. (preview-gs-place, preview-gs-transact, preview-dissect) (preview-dvipng-place-all, preview-active-string) (preview-reinstate-preview): add construction info to `preview-image' property. (preview-start-dvipng): Calculate resolution info correctly. (preview-at-point): Fix an awful typo. 2004-10-14 David Kastrup * latex/preview.dtx: Make the end of snarfed environments behave normally if the environment is not being snarfed. 2004-10-14 Jan-ke Larsson * doc/wininstall.texi: Adjust text to conform with the AUCTeX aclocal. * configure.in: Add VALID_BUILD_DIR 2004-10-13 Jan-ke Larsson * configure.in: Adjust for the aclocal.m4 sync with AUCTeX * aclocal.m4: Sync with AUCTeX. Well, almost. Don't use the version test. 2004-10-09 David Kastrup * preview.el (preview-dvipng-command): Use -picky option. (preview-error-quote): Convert character to buffer encoding if mule allows it. (preview-parse-messages): Strip incomplete 8bit character transliterations from the error context. 2004-08-21 Reiner Steib * doc/install.texi: Markup fixes, see "(texinfo)command". * doc/wininstall.texi: Ditto. 2004-08-09 David Kastrup * doc/preview-latex.texi: Bump version number. (top): Change preview-latex typesetting convention. (Keys and lisp): AUCTeX menus are not changed. (Simple customization): Don't talk about `.dvi'. (For advanced users): Menu `The preview images' instead of `On EPS previews'. (The Emacs interface): Take PDF into account. (The preview images): Describe `preview-gs-image-type-alist', `preview-dvipng-image-type'. * doc/faq.texi (Introduction to FAQ): Change submission address to preview-latex-devel since this appears to better reflect reality. * latex/preview.dtx (showlabels): work around ntheorem/amsmath bug. * preview.el (preview-gs-image-type-alist): Add fallback for 'postscript image type (not yet used). (preview-dvipng-command): Add documentation about `preview-dvipng-image-type'. Change options to `-picky -noghostscript' to work with dvipng 1.2. (preview-dvipng-image-type): New variable. (preview-gs-open): Don't barf until we know what device will actually be used. (preview-gs-dvips-process-setup): Complain about unavailable devices here. (preview-dvipng-process-setup): And here. (preview-dvipng-process-setup, preview-dvipng-place-all): Use `preview-dvipng-image-type'. (preview-TeX-inline-sentinel): Change "abnormally with code 1" and "finished" exit status message. (preview-dump-replacements, preview-undump-replacements): Don't match command name as specifically. (preview-report-bug): Report more variables. 2004-08-07 David Kastrup * doc/macros.texi: New @ConTeXt{} macro, change appearance of @previewlatex{}. * doc/faq.texi (Customization): Presentation classes should work mostly. (Customization): Remove troubleshooting for `xy.sty'. (Requirements): Add AUCTeX 11.50 for PDFLaTeX. (Requirements): Mention dvipng. (Customization): PDFLaTeX is supported now. (Customization): ConTeXt is supported by AUCTeX, PDFLaTeX too. `Only' style support is missing now. * latex/preview.dtx: workaround for `xy.sty' in `textmath' code. 2004-08-04 David Kastrup * aclocal.m4: Merge a few AUCTeX changes. 2004-08-03 David Kastrup * preview.el (preview-walk-document): Current buffer and its master are always considered part of the document. (preview-dvipng-command): Use -noghostscript option. (preview-dvipng): Remove the almost unused customization group 'preview-dvipng. 2004-08-02 David Kastrup * preview.el (preview-extract-bb): remove old outcommented version. (preview-dvipng-command): Use -no-image-on-warn option. (preview-pdf2dsc-process-setup): Oops, just use `preview-gs-image-type' here. (preview-dvipng-sentinel): Don't delete dvi file since it might be needed in `dvipng-place-all'. (preview-dvipng-place-all): Start dvips/GhostScript if some image files are missing. Delete dvi file if none are missing. 2004-07-28 David Kastrup * doc/problems.texi (Too small bounding boxes): Fix node crosslinks. * latex/preview.dtx: Tiny change to placate font-latex. * latex/README-preview: Explain that PDF may be produced. * doc/wininstall.texi: Remove advice about failing byte-compiles: we should have this covered by now. * doc/problems.texi (LaTeX international characters): remove node. * doc/preview-latex.texi (Misplaced previews): Refer to x-symbol node instead of 8bit testing. * doc/install.texi (Configure): Remove --disable-8bit-test description. * preview.el (preview-parse-messages): Simplify line match. * preview-latex.spec: Several changes of %{buildroot} uses and of infodir. Doubtful whether this will work with Fedora. * configure.in: Remove all 8bit-cleanness testing. * aclocal.m4 (EMACS_LISP): just write out a string expression without change or echo. Document the macro. * doc/Makefile.in (prefix) (packagedir) (datadir) (infodir): preserve trailing backslashes. * Makefile.in (INSTALL) (INSTALL_DATA): Don't munge them for trailing backslashes. 2004-07-27 David Kastrup * preview.el (preview-dvipng): New customization group. (preview-image-creators): Remove ghostscript options here. (preview-gs-image-type-alist): New variable for lookup of Ghostscript options. (preview-gs-open): Remove imagetype and gs-optionlist arguments. Instead, look them up in preview-gs-image-type-alist. (preview-gs-dvips-process-setup): Setup GhostScript command line at different place. (preview-gs-dvips-process-setup): Use preview-gs-image-type, not preview-image-type for extension. (preview-dvipng-open): Removed. (preview-dvipng-process-setup): Setup GhostScript fallback. (preview-pdf2dsc-process-setup): Don't setup GhostScript here. (preview-error-quote): Fix bugs, only convert last ^^ sequence when a long string of ^^ exists. 2004-07-16 David Kastrup * Makefile.in (INSTALL_DATA): Use `$(null)' at end of variables at end of lines instead of `#' 2004-07-15 David Kastrup * preview.el (preview-format-mml): Somewhat different code. (preview-error-quote): New function for generating a matching regexp to deal with ^^ type error messages. In short: forget about 8-bit-cleanliness. (preview-parse-messages): Use it. 2004-05-08 David Kastrup * preview.el (preview-format-mml): Determine MIME format from file name properly. And don't return anything for bad overlays. * Split ChangeLog.1 off, create dvipng/ChangeLog. * preview.el (preview-gs-sentinel): Add info about GhostScript finishing to run buffer. (preview-gs-restart): Same for start. (preview-gs-color-string): Cater for border without mask color (didn't we do that already?) 2004-04-23 David Kastrup * preview.el (preview-gs-color-string) (preview-dvipng-color-string): Try to do something reasonably sane when a non-nil border thickness is specified, but no color. 2004-04-20 Reiner Steib * .cvsignore: Added "autom4te.cache". 2004-04-19 Reiner Steib * doc/preview-latex.texi (Simple customization): Don't "unlispify" variable names. 2004-04-12 David Kastrup * Release 0.8.1 * preview.el (preview-dump-replacements): Use regexp not triggering bugs in older Emacsen. (preview-dump-replacements): Same here. * RELEASE, configure.in, doc/preview-latex.texi: Adapt to 0.8.1 * preview-latex.spec: xemacspkgdir has changed in recent XEmacs releases for Redhat. * prv-xemacs.el (preview-mode-setup): Remove non-existent menu. * prv-emacs.el (preview-mode-setup): Remove non-existent menu "copied" from TeX-command-list to Command menu. * Release 0.8 * RELEASE: prepare for 0.8 * preview-latex.spec: prepare for 0.8, bump XEmacs to 21.4.9. ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/RELEASE0000644000000000000000000001375612055735327012551 0ustar rootrootRelease notes for AUCTeX 11.87 with preview-latex ================================================= AUCTeX provides by far the most wide-spread and sophisticated environment for editing LaTeX, TeX, ConTeXt and Texinfo documents with Emacs or XEmacs. Combined with packages like RefTeX, flyspell and others it is pretty much without peer as a comprehensive authoring solution for a large variety of operating system platforms and TeX distributions. It supports document-dependent completion and syntax highlighting, easily accessible menus, jumping to error locations in the source file, a number of editing shortcuts, intelligent indentation and filling of text during entry, and WYSIWYG previews of graphical elements like math formulas right in the Emacs source buffer, by virtue of its preview-latex component. One part of the preview-latex subsystem is the central `preview.sty' file that is independently useful for a number of applications and is available in unbundled form from CTAN.[1] AUCTeX needs volunteers in particular for non-programming tasks: documentation writing, tutorials, translations, reference material, sleuth work, testing. New features and fixed bugs in this release ------------------------------------------- AUCTeX now supports Biber in conjunction with biblatex in addition to BibTeX. Each AUCTeX mode now has its own abbrev table. On Emacsen which provide the possibility to inherit abbrevs from other tables, the abbrevs from the Text mode abbrev table are available as well. Newly defined abbrevs are written to the mode-specific tables, though. The file tex-fptex.el was removed. Forward/backward search for Evince has been improved. If Emacs is compiled with DBUS support and a recent Evince version (3.x) is installed, the communication goes over the desktop bus instead of the command line, resulting in more accurate positioning of point in Emacs and highlighting of the target paragraph in Evince. A problem where Ghostscript threw an /invalidfileaccess error when running preview-latex was fixed. A lot of smaller fixes and additions have been made. Requirements ------------ It is required that you use at least GNU Emacs 21 or XEmacs 21.4. XEmacs requires at least version 1.84 of the xemacs-base package (released on 01/27/2004) or a sumo tarball dated 02/02/2004 or newer for compiling AUCTeX: please use the XEmacs package system for upgrading if necessary. The preview-latex subsystem requires image support. This is available with GNU Emacs 21.3 under the X window system. For Windows[2], Mac OS X (Carbon, Cocoa)[3] or native GTK+ toolkit support, at least version 22.1 of GNU Emacs is required. Emacs 22 and later is the recommended platform for AUCTeX in general. If you prefer XEmacs, it will work in version 21.4.10 or later. You'll also need a working LaTeX installation and Ghostscript. dvipng[4] (version 1.4 or later), a very fast DVI converter, can be used to speed up the conversion. Availability ------------ AUCTeX can be downloaded in various formats from . At release time, we provide the source tarball, a precompiled version for Emacs on Windows, and a platform-independent XEmacs package file (which you have to install yourself using XEmacs' own package system, after using it for removing the previous version of AUCTeX). The easiest way for using AUCTeX, of course, is using versions of Emacs that already include AUCTeX or a software package management system for your operating system which provides you with the latest release. The XEmacs package file can be discerned by `pkg' in its name. It is usually more recent than what gets distributed from XEmacs servers and as part of the Sumo tarball. A separate directory for each release contains some stuff from the tarball, such as ChangeLog, printable manuals, and a reference sheet. The download area is mirrored to the directory support/auctex on CTAN. AUCTeX is licensed under the GNU General Public License version 3. You'll find more information at the web site of AUCTeX , including its mailing list addresses. Future development and additional information --------------------------------------------- AUCTeX is proceeding as a GNU project with the long-term intent of merging it into Emacs. For that reason, all new contributors need to assign copyright to their contributions to the FSF (the usual procedure for Emacs contributors). The same holds for past contributors. The principal authors and maintainers have already done so, but it would require a diligent and diplomatic volunteer to find and ask the rest. Current project manager is David Kastrup. Paypal contributions to would be appreciated in order to compensate for time, money and hardware required for presenting AUCTeX at conferences. Extensions may be commissioned: enquire on the developer list (see above). Other than that, volunteering for tasks remains the most effective way of helping AUCTeX development. The following people contributed to this release series (in alphabetical order): Ralf Angeli, Masayuki Ataka, Thomas Baumann, Vincent Belache, Berend de Boer, Ken Brown, Joshua Buhl, Patrice Dumas, Miguel Frasson, Peter S. Galbraith, Patrick Gundlach, Tassilo Horn, Yvon Hevel, Mads Jensen, Arne Jrgensen, David Kastrup, Ikumi Keita, Philip Kime, Joost Kremers, Frank Kster, Jan-ke Larsson, Antoine Levitt, Dan Nicolaescu, Piet van Oostrum, Augusto Ritter Stoffel, Davide G. M. Salvetti, Holger Sparr, Mike Sperber, Reiner Steib, Christian Schlauer, Shiro Takeda, Mark Trettin (Please accept our apologies if we forgot somebody.) Footnotes: [1] [2] You can get a precompiled version of Emacs for Windows at . [3] See e.g. for a list of precompiled versions of Emacs for Mac OS X. [4] dvipng is available via its project page and from CTAN. auctex-11.87/auctex.el.in0000644000000000000000000000041410234424521013735 0ustar rootroot;;; auctex.el ;; ;; This can be used for starting up AUCTeX. The following somewhat ;; strange trick causes tex-site.el to be loaded in a way that can be ;; safely undone using (unload-feature 'tex-site). ;; (autoload 'TeX-load-hack @lisptexsite@) (TeX-load-hack) auctex-11.87/mkinstalldirs0000755000000000000000000000340010251673412014325 0ustar rootroot: # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case "${1}" in -h | --help | --h* ) # -h for help echo "${usage}" 1>&2; exit 0 ;; -m ) # -m PERM arg shift test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } dirmode="${1}" shift ;; -- ) shift; break ;; # stop option processing -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option * ) break ;; # first non-opt arg esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 3 # End: # mkinstalldirs ends here auctex-11.87/context-en.el0000644000000000000000000001733711450440206014136 0ustar rootroot;;; context-en.el --- Support for the ConTeXt english interface. ;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. ;; Maintainer: Berend de Boer ;; 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 is loaded by context.el when required. ;;; Code: ;; Build upon ConTeXt (require 'context) ;;; ConText macro names ;;; Code: (defvar ConTeXt-environment-list-en '("alignment" "appendices" "background" "backmatter" "bodymatter" "bodypart" "buffer" "code" "color" "columns" "combination" "encoding" "extroductions" "fact" "formula" "framedcode" "framedtext" "frontmatter" "helptext" "hiding" "itemize" "legend" "line" "linecorrection" "linenumbering" "lines" "localenvironment" "localfootnotes" "makeup" "mapping" "marginblock" "marginedge" "marginrule" "mode" "narrower" "notmode" "opposite" "packed" "pagecomment" "pagefigure" "positioning" "postponing" "quotation" "raster" "register" "standardmakeup" "table" "tabulate" "TEXpage" "text" "textbackground" "typing" "unpacked" ;; project structure "component" "environment" "product" "project" ;; flowcharts, if you have loaded this module "FLOWcell" "FLOWchart" ;; typesetting computer languages "EIFFEL" "JAVA" "JAVASCRIPT" "MP" "PASCAL" "PERL" "SQL" "TEX" "XML" ;; some metapost environments "MPpositiongraphic" "useMPgraphic" "MPcode" "reusableMPgraphic" "uniqueMPgraphic") "List of the ConTeXt en interface start/stop pairs.") (defvar ConTeXt-define-list-en '("accent" "background" "blank" "block" "blocks" "bodyfont" "bodyfontenvironment" "buffer" "casemap" "character" "color" "colorgroup" "combinedlist" "command" "description" "enumeration" "float" "font" "fontsynonym" "framedtext" "head" "indenting" "label" "logo" "overlay" "palet" "program" "startstop" "type" "typing") "List of the names of ConTeXt en interface macro's that define things.") (defvar ConTeXt-setup-list-en '("align" "arranging" "background" "backgrounds" "blackrules" "blank" "block" "bodyfont" "bodyfontenvironment" "bottom" "bottomtexts" "buffer" "capitals" "caption" "captions" "color" "colors" "columns" "combinations" "combinedlist" "descriptions" "enumerations" "externalfigures" "fillinlines" "fillinrules" "float" "floats" "footer" "footertexts" "footnodedefinition" "footnotes" "framed" "framedtexts" "head" "header" "headertexts" "headnumber" "heads" "headtext" "hyphenmark" "indentations" "indenting" "inmargin" "interlinespace" "itemize" "items" "labeltext" "language" "layout" "linenumbering" "lines" "list" "makeup" "marginblocks" "marginrules" "marking" "narrower" "oppositeplacing" "pagecomment" "pagenumber" "pagenumbering" "palet" "papersize" "paragraphs" "quote" "referencing" "register" "screens" "section" "sectionblock" "sorting" "spacing" "subpagenumber" "synonyms" "text" "textrules" "texttexts" "thinrules" "tolerance" "top" "toptexts" "type" "typing" "underbar" "whitespace") "List of the names of ConTeXt en interface macro's that setup things.") ;; referencing in ConTeXt (defvar ConTeXt-referencing-list-en '("in" "at" "about" "pagereference" "textreference" "reference") "List of ConTeXt en macro's that are used for referencing." ) ;; lists some place macro's as well, should perhaps be under separate menu (defvar ConTeXt-other-macro-list-en '("abbreviation" "adaptlayout" "at" "combinepages" "copypages" "externalfigure" "framed" "from" "input" "insertpages" "filterpages" "getbuffer" "goto" "hideblocks" "keepblocks" "leftaligned" "midaligned" "obeyspaces" "page" "placecontent" "placeexternalfigure" "placefigure" "placelogos" "placetable" "processblocks" "protect" "raggedcenter" "rightaligned" "rotate" "scale" "selectblocks" "showexternalfigures" "slicepages" "useexternalfigure" "unprotect" "url" "useblocks" "usemodule" "useURL" "version") "List of ConTeXt en interface macro's that are not an environment nor a setup.") (defun ConTeXt-define-command-en (what) "The ConTeXt en interface way of creating a define command." (concat "define" what)) (defun ConTeXt-setup-command-en (what) "The ConTeXt en interface way of creating a setup command." (concat "setup" what)) (defvar ConTeXt-project-structure-list-en '("project" "environment" "product" "component") "List of the names of ConTeXt project structure elements for its en interface. List should be in logical order.") (defvar ConTeXt-section-block-list-en '("frontmatter" "bodymatter" "appendices" "backmatter") "List of the names of ConTeXt section blocks for its en interface. List should be in logical order.") ;; TODO: ;; ConTeXt has alternative sections like title and subject. Currently ;; the level is used to find the section name, so the alternative ;; names are never found. Have to start using the section name instead ;; of the number. (defvar ConTeXt-section-list-en '(("part" 0) ("chapter" 1) ("section" 2) ("subsection" 3) ("subsubsection" 4)) ;; ("title" 1) ;; ("subject" 2) ;; ("subsubject" 3) ;; ("subsubsubject" 4) "List of the names of ConTeXt sections for its en interface.") (defvar ConTeXt-text-en "text" "The ConTeXt en interface body text group.") (defvar ConTeXt-item-list-en '("item" "its" "mar" "ran" "sub" "sym") "The ConTeXt macro's that are variants of item.") (defcustom ConTeXt-default-environment-en "itemize" "*The default environment when creating new ones with `ConTeXt-environment'." :group 'ConTeXt-en-environment :type 'string) (defvar ConTeXt-extra-paragraph-commands-en '("crlf" "par" "place[A-Za-z]+") "List of ConTeXt macros that should have their own line. That is, besides the section(-block) commands.") ;; Emacs en menu names and labels should go here ;; to be done ;;; Mode (defun ConTeXt-en-mode-initialization () "ConTeXt english interface specific initialization." (mapc 'ConTeXt-add-environments (reverse ConTeXt-environment-list-en)) (TeX-add-symbols '("but" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("item" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("items" [ConTeXt-arg-setup] (TeX-arg-string "Comma separated list")) '("its" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("nop" (TeX-arg-literal " ")) '("ran" TeX-arg-string (TeX-arg-literal " ")) '("sub" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("sym" (TeX-arg-string "Symbol") (TeX-arg-literal " ")))) ;;;###autoload (defun context-en-mode () "Major mode for editing files for ConTeXt using its english interface. Special commands: \\{ConTeXt-mode-map} Entering `context-mode' calls the value of `text-mode-hook', then the value of TeX-mode-hook, and then the value of context-mode-hook." (interactive) ;; set the ConTeXt interface (setq ConTeXt-current-interface "en") ;; initialization (ConTeXt-mode-common-initialization) (ConTeXt-en-mode-initialization) ;; set mode line (setq TeX-base-mode-name "ConTeXt-en") (TeX-set-mode-name)) (provide 'context-en) ;;; context-en.el ends here auctex-11.87/auctex.spec0000644000000000000000000001724411340222524013671 0ustar rootroot# Spec file for AUCTeX # Maintainer: auctex-devel@gnu.org # Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. %define FOR_SUSE %{?suse_version:1}%{!?suse_version:0} %if %{FOR_SUSE} %define distri .suse %define commongroup Productivity/Editors/Emacs %define texgroup Productivity/Publishing/TeX/Utilities %define xemacspkgdir %{_datadir}/xemacs/xemacs-packages %else %define distri .fedora %define commongroup Applications/Editors %define texgroup Applications/Publishing %define xemacspkgdir %{_datadir}/xemacs/site-packages %endif Summary: Enhanced TeX modes for Emacsen Name: auctex Version: 11.86 Release: 1%{distri} License: GPL Group: %{commongroup} URL: http://www.gnu.org/software/auctex/ Source0: ftp://ftp.gnu.org/pub/gnu/auctex/%{name}-%{version}.tar.gz BuildArchitectures: noarch BuildRoot: %{_tmppath}/%{name}-root %description AUCTeX is an extensible package that supports writing and formatting TeX files for most variants of Emacs. AUCTeX supports many different TeX macro packages, including AMS-TeX, LaTeX, Texinfo and basic support for ConTeXt. Documentation can be found under /usr/share/doc, e.g. the reference card (tex-ref.pdf) and the FAQ. The AUCTeX manual is available in Emacs info (C-h i d m AUCTeX RET). On the AUCTeX home page, we provide manuals in various formats. This version of AUCTeX comes with preview-latex, an addictive productivity tool providing a fine-grained interactive folding WYSIWYG display in the source buffer. %package emacs Summary: Enhanced TeX modes for GNU Emacs Group: %{commongroup} Requires: emacs >= 21 Obsoletes: ge_auc emacs-auctex auctex preview-latex-emacs Conflicts: emacspeak < 18 Provides: auctex %description emacs AUCTeX is an extensible package that supports writing and formatting TeX files for most variants of Emacs. AUCTeX supports many different TeX macro packages, including AMS-TeX, LaTeX, Texinfo and basic support for ConTeXt. Documentation can be found under /usr/share/doc, e.g. the reference card (tex-ref.pdf) and the FAQ. The AUCTeX manual is available in Emacs info (C-h i d m AUCTeX RET). On the AUCTeX home page, we provide manuals in various formats. This package is for GNU Emacs. XEmacs users should use the package system for installation. The package enables AUCTeX modes system-wide. The README file contains information how users may override this choice. %package -n preview-tetex Summary: LaTeX files for preview.sty Group: %{texgroup} Requires: tetex Obsoletes: preview-latex-common Provides: preview-tetex preview-latex-common %description -n preview-tetex The LaTeX package preview.sty can be used for extracting selected parts of LaTeX documents into graphics of their own. Various TeX and editing applications use this as a subsystem. AUCTeX by now comes with its own integrated version of preview-latex and the style files and does not require this package, and newer versions of teTeX might already contain preview.sty (in which case the resulting conflict is probably best solved by not installing this package). %prep %setup %build # The below will make the package build from a tar straight from CVS # NOT RECOMMENDED, but useful for testing! test -f ./configure || ./autogen.sh %configure --with-emacs INSTALL_INFO=: --without-texmf-dir make pushd doc make tex-ref.pdf popd %install rm -rf %{buildroot} mkdir -p %{buildroot}{%{_datadir}/emacs/site-lisp,%{_infodir}} %if %{FOR_SUSE} cat < %{buildroot}%{_datadir}/emacs/site-lisp/suse-start-auctex.el ;; suse-start-auctex.el ;; This file enables AUCTeX globally: (load "auctex.el" nil t t) ;; See (info "(auctex)Introduction") on how to disable AUCTeX. EOFA cat < %{buildroot}%{_datadir}/emacs/site-lisp/suse-start-preview-latex.el ;; suse-start-preview-latex.el ;; This file enables preview-latex globally: (load "preview-latex.el" nil t t) EOFP %else mkdir -p %{buildroot}%{_datadir}/emacs/site-lisp/site-start.d %endif %makeinstall install-docs mkdir -p %{buildroot}%{_datadir}/texmf/tex/latex/preview cp -p preview/latex/*.{sty,def,cfg} %{buildroot}%{_datadir}/texmf/tex/latex/preview mkdir -p %{buildroot}%{_datadir}/texmf/doc/latex/styles cp -p preview/latex/preview.dvi %{buildroot}%{_datadir}/texmf/doc/latex/styles %post emacs /sbin/install-info --info-dir=%{_infodir} %{_infodir}/auctex.info /sbin/install-info --info-dir=%{_infodir} %{_infodir}/preview-latex.info %preun emacs # $1 is the number of versions of this package installed # after this uninstallation if [ $1 -eq 0 ]; then /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/auctex.info /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/preview-latex.info fi %clean rm -rf %{buildroot} %post -n preview-tetex /usr/bin/mktexlsr %{_datadir}/texmf %postun -n preview-tetex /usr/bin/mktexlsr %{_datadir}/texmf %files -n preview-tetex %defattr(-,root,root) %{_datadir}/texmf/tex/latex/preview %config %{_datadir}/texmf/tex/latex/preview/prauctex.cfg %{_datadir}/texmf/doc/latex/styles/preview.dvi %files emacs %defattr(-,root,root) %doc RELEASE COPYING INSTALL README TODO FAQ CHANGES %doc doc/tex-ref.pdf # %doc --parents preview/RELEASE preview/README preview/INSTALL preview/TODO preview/FAQ %doc %{_infodir}/* # %exclude %{_infodir}/dir %{_datadir}/emacs/site-lisp/%{name} %{_localstatedir}/%{name} %config %{_datadir}/emacs/site-lisp/tex-site.el %if %{FOR_SUSE} %{_datadir}/emacs/site-lisp/auctex.el %{_datadir}/emacs/site-lisp/preview-latex.el %{_datadir}/emacs/site-lisp/suse-start-auctex.el %{_datadir}/emacs/site-lisp/suse-start-preview-latex.el %else %{_datadir}/emacs/site-lisp/site-start.d/auctex.el %{_datadir}/emacs/site-lisp/site-start.d/preview-latex.el %endif %changelog # Shouldn't changelog include changes in the package instead of changes in the # spec file? * Tue Jun 6 2006 Reiner Steib - Update to AUCTeX 11.83 * Wed Dec 28 2005 Reiner Steib - Remove bogus preview directory. Add preview-latex in description. * Sat Dec 17 2005 Reiner Steib - Update for AUCTeX 11.82. * Tue May 3 2005 David Kastrup - include preview-latex, so outdate other stuff. * Fri Jan 21 2005 David Kastrup - Conflict with outdated Emacspeak versions * Fri Jan 14 2005 David Kastrup - Install and remove auctex.info, not auctex * Thu Aug 19 2004 David Kastrup - Change tex-site.el to overwriting config file mode. New naming scheme. * Mon Aug 16 2004 David Kastrup - Attempt a bit of SuSEism. Might work if we are lucky. * Sat Dec 7 2002 David Kastrup - Change addresses to fit move to Savannah. * Mon Apr 15 2002 Jan-Ake Larsson - Adjusted TeX-macro-global and put autoactivation in preinstall script so that it can be chosen at install time. * Tue Feb 19 2002 Jan-Ake Larsson - Added site-start.el support * Sat Feb 16 2002 Jan-Ake Larsson - Prerelease 11.11 auctex-11.87/INSTALL0000644000000000000000000004744312056205161012564 0ustar rootrootInstalling AUCTeX ***************** The simplest way of installing AUCTeX is by using the Emacs package manager integrated in Emacs 24 and greater (ELPA). Simply do `M-x package-list-packages RET', mark the auctex package for installation with `i', and hit `x' to execute the installation procedure. That's all. The remainder of this section is about installing AUCTeX from a release tarball or from a checkout of the AUCTeX repository. Installing AUCTeX should be simple: merely `./configure', `make', and `make install' for a standard site-wide installation (most other installations can be done by specifying a `--prefix=...' option). On many systems, this will already activate the package, making its modes the default instead of the built-in modes of Emacs. If this is not the case, consult *note Loading the package::. Please read through this document fully before installing anything. The installation procedure has changed as compared to earlier versions. Users of MS Windows are asked to consult the file `INSTALL.windows'. 1 Prerequisites *************** * A recent version of Emacs, alternatively XEmacs Emacs 20 is no longer supported, and neither is XEmacs with a version of `xemacs-base' older than 1.84 (released in sumo from 02/02/2004). Using preview-latex requires a version of Emacs compiled with image support. While the X11 version of Emacs 21 will likely work, Emacs 22 and later is preferred. Windows Precompiled versions are available from `ftp://ftp.gnu.org/gnu/emacs/windows/'. Mac OS X For an overview of precompiled versions of Emacs for Mac OS X see for example `http://www.emacswiki.org/cgi-bin/wiki/EmacsForMacOS'. GNU/Linux Most GNU/Linux distributions nowadays provide a recent variant of Emacs via their package repositories. Self-compiled Compiling Emacs yourself requires a C compiler and a number of tools and development libraries. Details are beyond the scope of this manual. Instructions for checking out the source code can be found at `https://savannah.gnu.org/bzr/?group=emacs'. If you really need to use Emacs 21 on platforms where this implies missing image support, you should disable the installation of preview-latex (see below). While XEmacs (version 21.4.15, 21.4.17 or later) is supported, doing this in a satisfactory manner has proven to be difficult. This is mostly due to technical shortcomings and differing API's which are hard to come by. If AUCTeX is your main application for XEmacs, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. * A working TeX installation Well, AUCTeX would be pointless without that. Processing documentation requires TeX, LaTeX and Texinfo during installation. preview-latex requires Dvips for its operation in DVI mode. The default configuration of AUCTeX is tailored for teTeX or TeXlive-based distributions, but can be adapted easily. * A recent Ghostscript This is needed for operation of preview-latex in both DVI and PDF mode. Most versions of Ghostscript nowadays in use should work fine (version 7.0 and newer). If you encounter problems, check the `PROBLEMS' file. * The `texinfo' package Strictly speaking, you can get away without it if you are building from the distribution tarball, have not modified any files and don't need a printed version of the manual: the pregenerated info file is included in the tarball. At least version 4.0 is required. For some known issues with various software, see the `PROBLEMS' file. 2 Configure *********** The first step is to configure the source code, telling it where various files will be. To do so, run ./configure OPTIONS (Note: if you have fetched AUCTeX from CVS rather than a regular release, you will have to first follow the instructions in `README.CVS'). On many machines, you will not need to specify any options, but if `configure' cannot determine something on its own, you'll need to help it out with one of these options: `--prefix=`/usr/local'' All automatic placements for package components will be chosen from sensible existing hierarchies below this: directories like `man', `share' and `bin' are supposed to be directly below PREFIX. Only if no workable placement can be found there, in some cases an alternative search will be made in a prefix deduced from a suitable binary. `/usr/local' is the default PREFIX, intended to be suitable for a site-wide installation. If you are packaging this as an operating system component for distribution, the setting `/usr' will probably be the right choice. If you are planning to install the package as a single non-priviledged user, you will typically set PREFIX to your home directory. `--with-emacs[=/PATH/TO/EMACS]' If you are using a pretest which isn't in your `$PATH', or `configure' is not finding the right Emacs executable, you can specify it with this option. `--with-xemacs[=/PATH/TO/XEMACS]' Configure for generation under XEmacs (Emacs is the default). Again, the name of the right XEmacs executable can be specified, complete with path if necessary. `--with-packagedir=/DIR' This XEmacs-only option configures the directory for XEmacs packages. A typical user-local setting would be `~/.xemacs/xemacs-packages'. If this directory exists and is below PREFIX, it should be detected automatically. This will install and activate the package. `--without-packagedir' This XEmacs-only option switches the detection of a package directory and corresponding installation off. Consequently, the Emacs installation scheme will be used. This might be appropriate if you are using a different package system/installer than the XEmacs one and want to avoid conflicts. The Emacs installation scheme has the following options: `--with-lispdir=/DIR' This Emacs-only option specifies the location of the `site-lisp' directory within `load-path' under which the files will get installed (the bulk will get installed in a subdirectory). `./configure' should figure this out by itself. `--with-auctexstartfile=`auctex.el'' `--with-previewstartfile=`preview-latex.el'' This is the name of the respective startup files. If LISPDIR contains a subdirectory `site-start.d', the start files are placed there, and `site-start.el' should load them automatically. Please be aware that you must not move the start files after installation since other files are found _relative_ to them. `--with-packagelispdir=`auctex'' This is the directory where the bulk of the package gets located. The startfile adds this into LOAD-PATH. `--with-auto-dir=/DIR' You can use this option to specify the directory containing automatically generated information. It is not necessary for most TeX installs, but may be used if you don't like the directory that configure is suggesting. `--help' This is not an option specific to AUCTeX. A number of standard options to `configure' exist, and we do not have the room to describe them here; a short description of each is available, using `--help'. If you use `--help=recursive', then also preview-latex-specific options will get listed. `--disable-preview' This disables configuration and installation of preview-latex. This option is not actually recommended. If your Emacs does not support images, you should really upgrade to a newer version. Distributors should, if possible, refrain from distributing AUCTeX and preview-latex separately in order to avoid confusion and upgrade hassles if users install partial packages on their own. `--with-texmf-dir=/DIR --without-texmf-dir' This option is used for specifying a TDS-compliant directory hierarchy. Using `--with-texmf-dir=/DIR' you can specify where the TeX TDS directory hierarchy resides, and the TeX files will get installed in `/DIR/tex/latex/preview/'. If you use the `--without-texmf-dir' option, the TeX-related files will be kept in the Emacs Lisp tree, and at runtime the `TEXINPUTS' environment variable will be made to point there. You can install those files into your own TeX tree at some later time with `M-x preview-install-styles RET'. `--with-tex-dir=/DIR' If you want to specify an exact directory for the preview TeX files, use `--with-tex-dir=/DIR'. In this case, the files will be placed in `/DIR', and you'll also need the following option: `--with-doc-dir=/DIR' This option may be used to specify where the TeX documentation goes. It is to be used when you are using `--with-tex-dir=/DIR', but is normally not necessary otherwise. 3 Build/install *************** Once `configure' has been run, simply enter make at the prompt to byte-compile the lisp files, extract the TeX files and build the documentation files. To install the files into the locations chosen earlier, type make install You may need special privileges to install, e.g., if you are installing into system directories. 4 Loading the package ********************* You can detect the successful activation of AUCTeX and preview-latex in the menus after loading a LaTeX file like `preview/circ.tex': AUCTeX then gives you a `Command' menu, and preview-latex gives you a `Preview' menu. For XEmacs, if the installation occured into a valid package directory (which is the default), then this should work out of the box. With Emacs (or if you explicitly disabled use of the package system), the startup files `auctex.el' and `preview-latex.el' may already be in a directory of the `site-start.d/' variety if your Emacs installation provides it. In that case they should be automatically loaded on startup and nothing else needs to be done. If not, they should at least have been placed somewhere in your `load-path'. You can then load them by placing the lines (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) into your init file. If you explicitly used `--with-lispdir', you may need to add the specified directory into Emacs' `load-path' variable by adding something like (add-to-list 'load-path "~/elisp") before the above lines into your Emacs startup file. For site-wide activation in GNU Emacs, see below. Once activated, the modes provided by AUCTeX are used per default for all supported file types. If you want to change the modes for which it is operative instead of the default, use M-x customize-variable TeX-modes If you want to remove a preinstalled AUCTeX completely before any of its modes have been used, (unload-feature 'tex-site) should accomplish that. 5 Providing AUCTeX as a package ******************************* As a package provider, you should make sure that your users will be served best according to their intentions, and keep in mind that a system might be used by more than one user, with different preferences. There are people that prefer the built-in Emacs modes for editing TeX files, in particular plain TeX users. There are various ways to tell AUCTeX even after auto-activation that it should not get used, and they are described in the `README' file. So if you have users that don't want to use the preinstalled AUCTeX, they can easily get rid of it. Activating AUCTeX by default is therefore a good choice. If the installation procedure did not achieve this already by placing `auctex.el' and `preview-latex.el' into a possibly existing `site-start.d' directory, you can do this by placing (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) in the system-wide `site-start.el'. If your package is intended as an XEmacs package or to accompany a precompiled version of Emacs, you might not know which TeX system will be available when preview-latex gets used. In this case you should build using the `--without-texmf-dir' option described previously. This can also be convenient for systems that are intended to support more than a single TeX distribution. Since more often than not TeX packages for operating system distributions are either much more outdated or much less complete than separately provided systems like TeX Live, this method may be generally preferable when providing packages. The following package structure would be adequate for a typical fully supported Unix-like installation: `preview-tetex' Style files and documentation for `preview.sty', placed into a TeX tree where it is accessible from the teTeX executables usually delivered with a system. If there are other commonly used TeX system packages, it might be appropriate to provide separate packages for those. `auctex-emacs-tetex' This package will require the installation of `preview-tetex' and will record in `TeX-macro-global' where to find the TeX tree. It is also a good idea to run emacs -batch -f TeX-auto-generate-global when either AUCTeX or teTeX get installed or upgraded. If your users might want to work with a different TeX distribution (nowadays pretty common), instead consider the following: `auctex-emacs' This package will be compiled with `--without-texmf-dir' and will consequently contain the `preview' style files in its private directory. It will probably not be possible to initialize `TeX-macro-global' to a sensible value, so running `TeX-auto-generate-global' does not appear useful. This package would neither conflict with nor provide `preview-tetex'. `auctex-xemacs-tetex' `auctex-xemacs' Those are the obvious XEmacs equivalents. For XEmacs, there is the additional problem that the XEmacs sumo package tree already possibly provides its own version of AUCTeX, and the user might even have used the XEmacs package manager to updating this package, or even installing a private AUCTeX version. So you should make sure that such a package will not conflict with existing XEmacs packages and will be at an appropriate place in the load order (after site-wide and user-specific locations, but before a distribution-specific sumo package tree). Using the `--without-packagedir' option might be one idea to avoid conflicts. Another might be to refrain from providing an XEmacs package and just rely on the user or system administrator to instead use the XEmacs package system. 6 Installation for non-privileged users *************************************** Often people without system administration privileges want to install software for their private use. In that case you need to pass more options to the `configure' script. For XEmacs users, this is fairly easy, because the XEmacs package system has been designed to make this sort of thing practical: but GNU Emacs users (and XEmacs users for whom the package system is for some reason misbehaving) may need to do a little more work. The main expedient is using the `--prefix' option to the `configure' script, and let it point to the personal home directory. In that way, resulting binaries will be installed under the `bin' subdirectory of your home directory, manual pages under `man' and so on. It is reasonably easy to maintain a bunch of personal software, since the prefix argument is supported by most `configure' scripts. You'll have to add something like `/home/myself/share/emacs/site-lisp' to your `load-path' variable, if it isn't there already. XEmacs users can achieve the same end by pointing `configure' at an appropriate package directory (normally `--with-packagedir=~/.xemacs/xemacs-packages' will serve). The package directory stands a good chance at being detected automatically as long as it is in a subtree of the specified PREFIX. Now here is another thing to ponder: perhaps you want to make it easy for other users to share parts of your personal Emacs configuration. In general, you can do this by writing `~myself/' anywhere where you specify paths to something installed in your personal subdirectories, not merely `~/', since the latter, when used by other users, will point to non-existent files. For yourself, it will do to manipulate environment variables in your `.profile' resp. `.login' files. But if people will be copying just Elisp files, their copies will not work. While it would in general be preferable if the added components where available from a shell level, too (like when you call the standalone info reader, or try using `preview.sty' for functionality besides of Emacs previews), it will be a big help already if things work from inside of Emacs. Here is how to do the various parts: Making the Elisp available ========================== In GNU Emacs, it should be sufficient if people just do (load "~myself/share/emacs/site-lisp/auctex.el" nil t t) (load "~myself/share/emacs/site-lisp/preview-latex.el" nil t t) where the path points to your personal installation. The rest of the package should be found relative from there without further ado. In XEmacs, you should ask the other users to add symbolic links in the subdirectories `lisp', `info' and `etc' of their `~/.xemacs/xemacs-packages/' directory. (Alas, there is presently no easy programmatic way to do this, except to have a script do the symlinking for them.) Making the Info files available =============================== For making the info files accessible from within Elisp, something like the following might be convenient to add into your or other people's startup files: (eval-after-load 'info '(add-to-list 'Info-directory-list "~myself/info")) In XEmacs, as long as XEmacs can see the package, there should be no need to do anything at all; the info files should be immediately visible. However, you might want to set `INFOPATH' anyway, for the sake of standalone readers outside of XEmacs. (The info files in XEmacs are normally in `~/.xemacs/xemacs-packages/info'.) Making the LaTeX style available ================================ If you want others to be able to share your installation, you should configure it using `--without-texmf-dir', in which case things should work as well for them as for you. 7 Customizing ************* Most of the site-specific customization should already have happened during configuration of AUCTeX. Any further customization can be done with customization buffers directly in Emacs. Just type `M-x customize-group RET AUCTeX RET' to open the customization group for AUCTeX or use the menu entries provided in the mode menus. Editing the file `tex-site.el' as suggested in former versions of AUCTeX should not be done anymore because the installation routine will overwrite those changes. You might check some variables with a special significance. They are accessible directly by typing `M-x customize-variable RET RET'. -- User Option: TeX-macro-global Directories containing the site's TeX style files. Normally, AUCTeX will only allow you to complete macros and environments which are built-in, specified in AUCTeX style files or defined by yourself. If you issue the `M-x TeX-auto-generate-global' command after loading AUCTeX, you will be able to complete on all macros available in the standard style files used by your document. To do this, you must set this variable to a list of directories where the standard style files are located. The directories will be searched recursively, so there is no reason to list subdirectories explicitly. Automatic configuration will already have set the variable for you if it could use the program `kpsewhich'. In this case you normally don't have to alter anything. auctex-11.87/style/0000755000000000000000000000000012056205160012656 5ustar rootrootauctex-11.87/style/jreport.el0000644000000000000000000000034710216252636014677 0ustar rootroot;;; jreport.el - Special code for jreport style. ;; $Id: jreport.el,v 1.3 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "jreport" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; jreport.el ends here auctex-11.87/style/hyperref.el0000644000000000000000000001137611126222566015042 0ustar rootroot;;; hyperref.el --- AUCTeX style for the hyperref class. ;; Copyright (C) 2008 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2008-06-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 the hyperref package. ;;; Code: (defvar LaTeX-hyperref-package-options '("a4paper" "a5paper" "anchorcolor" "b5paper" "backref" "baseurl" "bookmarks" "bookmarksnumbered" "bookmarksopen" "bookmarksopenlevel \maxdimen" "bookmarkstype" "breaklinks" "CJKbookmarks" "citebordercolor" "citecolor" "colorlinks" "debug" "draft" "dvipdf" "dvipdfm" "dvipdfmx" "dvips" "dvipsone" "dviwindo" "encap" "executivepaper" "extension" "filebordercolor" "filecolor" "final" "frenchlinks" "hyperfigures" "hyperfootnotes" "hyperindex" "hypertex" "hypertexnames" "implicit" "latex2html" "legalpaper" "letterpaper" "linkbordercolor" "linkcolor" "linktocpage" "menubordercolor" "menucolor" "nativepdf" "naturalnames" "nesting" "pageanchor" "pagebackref" "pagebordercolor" "pagecolor" "pdfauthor" "pdfborder" "pdfcenterwindow" "pdfcreator" "pdfdirection" "pdfdisplaydoctitle" "pdfduplex" "pdffitwindow" "pdfhighlight" "pdfkeywords" "pdflang" "pdfmark" "pdfmenubar" "pdfnewwindow" "pdfnonfullscreenpagemode" "pdfnumcopies" "pdfpagelayout" "pdfpagemode" "pdfpagelabels" "pdfpagescrop" "pdfpagetransition" "pdfpicktrackbypdfsize" "pdfprintarea" "pdfprintclip" "pdfprintpagerange" "pdfprintscaling" "pdfproducer" "pdfstartpage" "pdfstartview" "pdfsubject" "pdftex" "pdftitle" "pdftoolbar" "pdfview" "pdfviewarea" "pdfviewclip" "pdfwindowui" "plainpages" "ps2pdf" "raiselinks" "runbordercolor" "setpagesize" "tex4ht" "textures" "unicode" "urlbordercolor" "urlcolor" "verbose" "vtex" "xetex") "Package options for the hyperref package.") (TeX-add-style-hook "hyperref" (lambda () ;; hyperref.sty loads url.sty (TeX-run-style-hooks "url") (TeX-add-symbols '("href" "URL" "Text") '("nolinkurl" t) '("hyperbaseurl" t) '("hyperimage" "Image URL" "Text") '("hyperdef" "Category" "Name" "Text") '("hyperref" "URL" "Category" "Name" "Text") '("hyperlink" "Name" "Text") '("hypertarget" "Name" "Text") '("phantomsection" 0) '("autoref" TeX-arg-ref) '("ref*" TeX-arg-ref) '("pageref*" TeX-arg-ref) '("pdfstringdef" "Macro name" "TeX string") '("texorpdfstring" "TeX string" "PDF string") '("hypercalcbp" t) '("Acrobatmenu" "Menu option" "Text") '("TextField" ["Parameters"] "Label") '("CheckBox" ["Parameters"] "Label") '("ChoiceMenu" ["Parameters"] "Label" "Choices") '("PushButton" ["Parameters"] "Label") '("Submit" ["Parameters"] "Label") '("Reset" ["Parameters"] "Label") '("LayoutTextField" "Label" "Field") '("LayoutChoiceField" "Label" "Field") '("LayoutCheckField" "Label" "Field") '("MakeRadioField" "Width" "Height") '("MakeCheckField" "Width" "Height") '("MakeTextField" "Width" "Height") '("MakeChoiceField" "Width" "Height") '("MakeButtonField" "Text")) (add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref") ;; Fontification (when (and (fboundp 'font-latex-add-keywords) (fboundp 'font-latex-set-syntactic-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("href" "{{") ("nolinkurl" "{") ("hyperbaseurl" "{") ("hyperimage" "{{") ("hyperdef" "{{{") ("hyperref" "{{{{") ("hyperlink" "{{") ("hypertarget" "{{") ("autoref" "{") ("ref" "*{") ("pageref" "*{")) 'reference) ;; For syntactic fontification, e.g. verbatim constructs. (font-latex-set-syntactic-keywords)) ;; RefTeX (when (fboundp 'reftex-ref-style-activate) (reftex-ref-style-activate "Hyperref")))) ;;; hyperref.el ends here auctex-11.87/style/fancyref.el0000644000000000000000000001022710751352552015007 0ustar rootroot;;; fancyref.el --- AUCTeX style file with support for fancyref.sty ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "fancyref" (lambda () (TeX-add-symbols ;; The macros with label arguments '("fref" [ TeX-arg-fancyref-format ] TeX-arg-label) '("Fref" [ TeX-arg-fancyref-format ] TeX-arg-label) ;; The macros which define new prefixes and formats '("fancyrefchangeprefix" TeX-arg-macro "Prefix") '("Frefformat" TeX-arg-fancyref-format TeX-arg-macro "Output") '("frefformat" TeX-arg-fancyref-format TeX-arg-macro "Output") ;; The delimiter "fancyrefargdelim" ;; All those names and abbreviations. ;; Part "fancyrefpartlabelprefix" "Frefpartname" "frefpartname" ;; Chapter "fancyrefchalabelprefix" "Frefchaname" "frefchaname" ;; Section "fancyrefseclabelprefix" "Frefsecname" "frefsecname" ;; Equation "fancyrefeqlabelprefix" "Frefeqname" "frefeqname" ;; Figure "fancyreffiglabelprefix" "Freffigname" "freffigname" "Freffigshortname" ;; Footnote "fancyreffnlabelprefix" "Freffnname" "freffnname" ;; Item "fancyrefitemlabelprefix" "Frefitemname" "frefitemname" ;; Table "fancyreftablabelprefix" "Freftabname" "freftabname" "Freftabshortname" ;; Page "Frefpgname" "frefpgname" "Frefpgshortname" ;; On "Frefonname" "frefonname" ;; See "Frefseename" "frefseename" ;; The spacing macros "fancyrefloosespacing" "fancyreftightspacing" "fancyrefdefaultspacing" ;; And the hook "fancyrefhook") ;; Insatall completion for labels and formats (setq TeX-complete-list (append '(("\\\\[fF]ref\\(\\[[^]]*\\]\\)?{\\([^{}\n\r\\%,]*\\)" 2 LaTeX-label-list "}") ("\\\\[fF]ref\\[\\([^{}\n\r\\%,]*\\)" 1 LaTeX-fancyref-formats "]") ("\\\\[fF]refformat{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-fancyref-formats "}")) TeX-complete-list)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("fref" "[{") ("Fref" "[{")) 'reference)))) ;; The following list keeps a list of available format names ;; Note that this list is only updated when a format is used, not ;; during buffer parsing. We could install a regexp to look for ;; formats, but this would not work in multifile documents since the ;; formats are not written out to the auto files. ;; For now, we just leave it at that. (defvar LaTeX-fancyref-formats '(("plain") ("vario") ("margin") ("main")) "List of formats for fancyref.") (defun LaTeX-fancyref-formats () LaTeX-fancyref-formats) (defun TeX-arg-fancyref-format (optional &optional prompt definition) "Prompt for a fancyref format name. If the user gives an unknown name, add it to the list." (let ((format (completing-read (TeX-argument-prompt optional prompt "Format") LaTeX-fancyref-formats))) (if (not (string-equal "" format)) (add-to-list 'LaTeX-fancyref-formats (list format))) (TeX-argument-insert format optional))) (defvar LaTeX-fancyref-package-options '("english" "german" "loose" "margin" "paren" "plain" "tight" "vario") "Package options for the fancyref package.") ;;; fancyref.el ends here auctex-11.87/style/french.el0000644000000000000000000000315211351171674014457 0ustar rootroot;;; french.el --- AUCTeX style for the `french' babel option. ;; Copyright (C) 2010 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2010-03-20 ;; 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: ;; Set up AUCTeX for editing French text in connection with the ;; `french' babel option. The file basically loads the style file for ;; the `frenchb' babel option. ;; ;; Support for the FrenchPro package by Bernard Gaulle is _not_ ;; included. If the presence of FrenchPro is detected, the `frenchb' ;; support is not loaded. ;;; Code: (TeX-add-style-hook "french" (lambda () (when (and (member "babel" TeX-active-styles) (not (member "frenchpro" TeX-active-styles)) (not (member "frenchle" TeX-active-styles)) (not (member "mlp" TeX-active-styles))) (TeX-run-style-hooks "frenchb")))) ;;; french.el ends here auctex-11.87/style/pst-node.el0000644000000000000000000001760111152077736014752 0ustar rootroot;;; pst-node.el --- AUCTeX style for `pst-node.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; Created: 21 Jun 2007 ;; Based on: Jean-Philippe Georget's pst-plot.el ;; Keywords: latex, pstricks, auctex, emacs ;; 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 `pst-node.sty'. ;;; TODO: ;; ;; -- self parsing of possible node names ;; -- adding more macro support ;;; Code: (defalias 'LaTeX-pst-node 'LaTeX-pst-point) (defvar LaTeX-pstnode-parameters-completion-regexp "\\(npos\\|nrot\\)" "Regexp for `string-match'ing a parameter.") (defvar LaTeX-pstnode-parameters-boolean-regexp "show\\([a-zA-Z]+\\)" "Regexp for `string-match'ing a parameter.") (defvar LaTeX-pstnode-npos-list '(".25" ".5" ".75" "1" "1.5" "2") "A list of values for npos in nput.") (defvar LaTeX-pstnode-nrot-list '(":U" ":D" ":R" ":L") "A list of values for nrot in nput.") (defvar LaTeX-pstnode-psmatrix-list '("mnode" "emnode" "name" "nodealign" "mocl" "rowsep" "colsep" "mnodesize") "A list of values for trimode in pstribox.") ;;; Parameters (defvar LaTeX-pstnode-parameters-history nil "History of values for parameters in pst-node.") (defvar LaTeX-pstnode-parameters-value-history nil "History of parameter values in pst-node.") (defvar LaTeX-pstnode-parameters-name-list '("angle" "angleA" "angleB" "arcangle" "arcangleA" "arcangleB" "arm" "armA" "armB" "boxsize" "colsep" "framesize" "href" "loopsize" "ncurv" "ncurvA" "ncurvB" "nodesepA" "nodesepB" "npos" "nrot" "offset" "offsetA" "offsetB" "radius" "vref" "Xnodesep" "XnodesepA" "XnodesepB" "Ynodesep" "YnodesepA" "YnodesepB") "A list of parameters' name in pst-node.") (defvar LaTeX-pstnode-parameters-name-history nil "History of parameter names in pst-node.") ;;; Derived Functions from pstricks.el defuns (defun LaTeX-pstnode-parameter-value (param) "See documentation of `LaTeX-package-parameter-value'." (LaTeX-package-parameter-value param "pstnode")) (defun LaTeX-pstnode-parameters-pref-and-chosen (param &optional noskip) "See documentation of `LaTeX-package-parameters-pref-and-chosen'." (LaTeX-package-parameters-pref-and-chosen param "pstnode" noskip)) (defun LaTeX-pstnode-parameters (optional &optional preparam param) "See documentation of `LaTeX-package-parameters-pref-and-chosen'." (LaTeX-package-parameters optional "pstnode" preparam param)) ;;; Macros (defun LaTeX-pstnode-macro-nput (optional &optional arg) "Return \\nput arguments after querying." (insert "[rot=" (LaTeX-pst-angle) "]{" (LaTeX-pst-angle) "}{" (LaTeX-pst-node) "}")) (defun LaTeX-pstnode-macro-cnodeput (optional &optional arg) "Return \\cnodeput arguments after querying." (let ((rotation (if current-prefix-arg (LaTeX-pst-angle) nil)) (pnt (if current-prefix-arg (LaTeX-pst-point) nil))) (insert (if rotation (format "{%s}" rotation) "") (if pnt (format "(%s)" pnt) "") "{" (LaTeX-pst-node) "}"))) (defun LaTeX-pstnode-macro-nc (optional &optional arg) "Return \\nc* arguments after querying." (let ((arrows (LaTeX-pst-arrows))) (insert (if arrows (format "{%s}" arrows) "") "{" (LaTeX-pst-node) "}{" (LaTeX-pst-node) "}"))) (defun LaTeX-pstnode-macro-pc (optional &optional arg) "Return \\pc* arguments after querying." (let ((arrows (LaTeX-pst-arrows))) (insert (if arrows (format "{%s}" arrows) "") "(" (LaTeX-pst-point) ")(" (LaTeX-pst-point) ")"))) (defun LaTeX-pstnode-macro-tnabcput (optional &optional arg) "Return \\t?put or \\n?put arguments after querying." (TeX-argument-insert (LaTeX-pstnode-parameters-pref-and-chosen '("nrot" "npos")) optional)) ;;; Environments (defun LaTeX-pstnode-env-psmatrix (env) "Return psmatrix environment with arguments." (let ((opt (completing-read-multiple "Options: " LaTeX-pstnode-psmatrix-list))) (LaTeX-insert-environment env opt))) (TeX-add-style-hook "pst-node" (function (lambda () (LaTeX-add-environments '("psmatrix" LaTeX-pstnode-env-psmatrix)) (TeX-add-symbols '("MakeShortNab" 2) '("MakeShortTablr" 4) '("PSTnodesLoaded" 0) '("nput" LaTeX-pstnode-macro-nput TeX-arg-macro) '("cnodeput" [LaTeX-pst-parameters] LaTeX-pstnode-macro-cnodeput t) '("Cnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t) '("cnode" [LaTeX-pstnode-parameters] "Radius" t) '("fnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t) '("fnode*" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t) '("dotnode" [LaTeX-pstnode-parameters] LaTeX-pst-point-in-parens t) '("pnode" LaTeX-pst-point-in-parens t) '("Rnode" [LaTeX-pstnode-parameters ("href" "vref")] (TeX-arg-eval LaTeX-pst-point) t) '("rnode" [LaTeX-pstnode-parameters ("ref")] (TeX-arg-eval LaTeX-pst-point) t) '("circlenode" [LaTeX-pst-parameters] (TeX-arg-eval LaTeX-pst-point) t) '("dianode" [LaTeX-pst-parameters] "Node Name" t) '("ovalnode" [LaTeX-pst-parameters] "Node Name" t) '("trinode" [LaTeX-pst-parameters] "Node Name" t) '("dotnode" [LaTeX-pst-parameters] LaTeX-pst-point-in-parens "Node Name") '("naput" [LaTeX-pstnode-macro-tnabcput] t) '("nbput" [LaTeX-pstnode-macro-tnabcput] t) '("ncput" [LaTeX-pstnode-macro-tnabcput] t) '("taput" [LaTeX-pstnode-macro-tnabcput] t) '("tbput" [LaTeX-pstnode-macro-tnabcput] t) '("thput" [LaTeX-pstnode-macro-tnabcput] t) '("tlput" [LaTeX-pstnode-macro-tnabcput] t) '("trput" [LaTeX-pstnode-macro-tnabcput] t) '("tvput" [LaTeX-pstnode-macro-tnabcput] t) '("ncline" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncarc" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncdiag" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncdiagg" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncbar" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncangle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncangles" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncloop" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("nccurve" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("nccircle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("ncarcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-nc) '("pcline" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pccurve" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcarc" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcbar" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcdiag" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcdiagg" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcangle" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcangles" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcloop" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("pcarcbox" [LaTeX-pst-parameters] LaTeX-pstnode-macro-pc) '("psspan" (TeX-arg-eval LaTeX-pst-input-int)) '("psrowhook" t) '("pscolhook" t)) (TeX-run-style-hooks "pstricks")))) ;;; pst-node.el ends here auctex-11.87/style/amsmath.el0000644000000000000000000001400410751352553014642 0ustar rootroot;;; amsmath.el --- Style hook for the AMS-LaTeX amsmath package. ;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. ;; FIXME: What about the copyright for <= 2001? ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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 will also load the amstext, amsbsy and amsopn style files. ;;; Code: (TeX-add-style-hook "amsmath" (function (lambda () (LaTeX-add-environments '("align" LaTeX-env-label) '("gather" LaTeX-env-label) '("flalign" LaTeX-env-label) '("multline" LaTeX-env-label) '("alignat" LaTeX-amsmath-env-alignat) '("alignat*" LaTeX-amsmath-env-alignat) '("xalignat" LaTeX-amsmath-env-alignat) '("xalignat*" LaTeX-amsmath-env-alignat) '("xxalignat" LaTeX-amsmath-env-alignat) '("aligned" LaTeX-amsmath-env-aligned) '("gathered" LaTeX-amsmath-env-aligned) "align*" "gather*" "flalign*" "multline*" "equation*" "split" "cases" "matrix" "smallmatrix" "pmatrix" "bmatrix" "Bmatrix" "vmatrix" "Vmatrix" "subequations" '("subarray" "Alignment")) (TeX-add-symbols '("eqref" TeX-arg-ref) '("numberwithin" TeX-arg-counter "Section level") '("raisetag" "Dimension") '("intertext" t) '("hdotsfor" ["Stretch"] "Number of columns to cover") '("xleftarrow" ["Below"] "Above") '("xrightarrow" ["Below"] "Above") '("overset" "Accent symbol" "Symbol") '("underset" "Accent symbol" "Symbol") '("dfrac" 2) '("tfrac" 2) '("binom" 2) '("dbinom" 2) '("tbinom" 2) '("genfrac" "Left delimiter" "Right delimiter" "Thickness" "Mathstyle" 2) '("cfrac" ["position (l or r)"] t) '("smash" ["where (t or b)"] t) '("sideset" "Left" "Right") '("tag" "(Tag)") '("tag*" "Tag") '("displaybreak" ["Weight (0..4)"]) '("allowdisplaybreaks" ["Weight (1..4)"]) '("substack" t) '("leftroot" "Push root index left by") '("uproot" "Push root index upward by") '("boxed" t) '("mspace" t) '("mod" t) '("pmod" t) '("pod" t) '("overleftrightarrow" t) '("underleftarrow" t) '("underrightarrow" t) '("underleftrightarrow" t) '("dddot" t) '("ddddot" t) "bmod" "notag" "dots" "dotsb" "dotsc" "dotsi" "dotsm" "dotso" "nobreakdash" "lvert" "rvert" "lVert" "rVert" "iint" "iiint" "iiiint" "idotsint" ) (setq LaTeX-item-list (append '(("split" . LaTeX-item-equation) ("multline" . LaTeX-item-equation) ("multline*" . LaTeX-item-equation) ("gather" . LaTeX-item-equations) ("gather*" . LaTeX-item-equation) ("gathered" . LaTeX-item-equation) ("align" . LaTeX-item-equations) ("align*" . LaTeX-item-equation) ("aligned" . LaTeX-item-equation) ("alignat" . LaTeX-item-equations) ("alignat*" . LaTeX-item-equation) ("xalignat" . LaTeX-item-equations) ("xalignat*" . LaTeX-item-equation) ("xxalignat" . LaTeX-item-equation) ("flalign" . LaTeX-item-equations) ("flalign*" . LaTeX-item-equation) ("matrix" . LaTeX-item-equation) ("pmatrix" . LaTeX-item-equation) ("bmatrix" . LaTeX-item-equation) ("Bmatrix" . LaTeX-item-equation) ("vmatrix" . LaTeX-item-equation) ("Vmatrix" . LaTeX-item-equation) ("cases" . LaTeX-item-equation)) LaTeX-item-list)) ;; When `LaTeX-amsmath-label' is nil, use value of LaTeX-equation-label: (unless LaTeX-amsmath-label (setq LaTeX-amsmath-label LaTeX-equation-label)) (setq LaTeX-label-alist (append '(("align" . LaTeX-amsmath-label) ("alignat" . LaTeX-amsmath-label) ("xalignat" . LaTeX-amsmath-label) ("multline" . LaTeX-amsmath-label) ("flalign" . LaTeX-amsmath-label) ("gather" . LaTeX-amsmath-label)) LaTeX-label-alist)) ;; amsmath includes amstext, amsbsy, & amsopn. ;; So we run their hooks, too. (TeX-run-style-hooks "amstext" "amsbsy" "amsopn") ;; If RefTeX is loaded, make it recognize the amsmath environments. (when (fboundp 'reftex-add-to-label-alist) (reftex-add-to-label-alist '(AMSTeX)))))) (defun LaTeX-amsmath-env-alignat (env) (let ((ncols (read-string "Number of columns: "))) (LaTeX-insert-environment env (concat TeX-grop ncols TeX-grcl)) (and (not (string= "xxalignat" env)) (not (string= "*" (substring env -1))) (LaTeX-label env) (newline-and-indent)))) (defun LaTeX-amsmath-env-aligned (env) (let ((where (read-string "(optional) Vertical position (t or b): "))) (if (string= where "") (setq where "") (setq where (concat "[" where "]"))) (LaTeX-insert-environment env where))) (defun LaTeX-item-equation () (end-of-line 0) (just-one-space) (insert "\\\\") (forward-line 1) (indent-according-to-mode)) (defun LaTeX-item-equations () (LaTeX-item-equation) (let ((environment (LaTeX-current-environment 1))) (and (LaTeX-label environment) (newline-and-indent)))) (defvar LaTeX-amsmath-package-options '("intlimits" "nointlimits" "sumlimits" "nosumlimits" "namelimits" "nonamelimits" "leqno" "reqno" "centertags" "tbtags" "cmex10" "fleqn" "?") "Package options for the amsmath package.") ;;; amsmath.el ends here. auctex-11.87/style/babel.el0000755000000000000000000000750010751352552014262 0ustar rootroot;;; babel.el --- AUCTeX style for `babel.sty' ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2005-05-29 ;; 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 `babel.sty'. ;;; Code: (defvar LaTeX-babel-language-list '("acadian" "afrikaans" "american" "austrian""bahasa" "basque" "brazil" "brazilian" "breton" "british" "bulgarian" "canadian" "canadien" "catalan" "croatian" "czech" "danish" "dutch" "english" "esperanto" "estonian" "finnish" "francais" "frenchb" "french" "galician" "german" "germanb" "greek" "polutonikogreek" "hebrew" "hungarian" "icelandic" "irish" "italian" "latin" "lowersorbian" "magyar" "naustrian" "ngerman" "norsk" "samin" "nynorsk" "polish" "portuges" "portuguese" "romanian" "russian" "scottish" "serbian" "slovak" "slovene" "spanish" "swedish" "turkish" "ukrainian" "uppersorbian" "welsh" "UKenglish" "USenglish") "List of languages supported by the babel LaTeX package.") (if (fboundp 'defvaralias) (defvaralias 'LaTeX-babel-package-options 'LaTeX-babel-language-list) (defvar LaTeX-babel-package-options LaTeX-babel-language-list "Package options for the babel package.")) (defun LaTeX-babel-active-languages () "Return a list of languages used in the document." (let (active-languages) (dolist (elt LaTeX-babel-language-list) (when (member elt TeX-active-styles) (add-to-list 'active-languages (list elt)))) active-languages)) (defun TeX-arg-babel-lang (optional &optional prompt) "Prompt for a language with completion and insert it as an argument." (TeX-argument-insert (completing-read "Language: " (LaTeX-babel-active-languages)) nil)) (defun LaTeX-env-babel-lang (env) "Prompt for a language and insert it as an argument of ENV." (LaTeX-insert-environment env (format "{%s}" (completing-read "Language: " (LaTeX-babel-active-languages))))) (TeX-add-style-hook "babel" (lambda () ;; New symbols (TeX-add-symbols '("selectlanguage" TeX-arg-babel-lang) '("foreignlanguage" TeX-arg-babel-lang t) "languagename" '("iflanguage" TeX-arg-babel-lang t nil) '("useshorthands" t) '("defineshorthand" t nil) '("aliasshorthand" t nil) '("languageshorthands" TeX-arg-babel-lang) '("shorthandon" t) '("shorthandoff" t) '("languageattribute" TeX-arg-babel-lang t)) ;; New environments (LaTeX-add-environments '("otherlanguage" LaTeX-env-babel-lang) '("otherlanguage*" LaTeX-env-babel-lang) '("hyphenrules" LaTeX-env-babel-lang)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("selectlanguage" "{") ("foreignlanguage" "{{") ("iflanguage" "{{{") ("languagename" "") ("useshorthands" "{") ("languageshorthands" "{") ("shorthandon" "{") ("shorthandoff" "{")) 'function) (font-latex-add-keywords '(("defineshorthand" "{{") ("aliasshorthand" "{{") ("languageattribute" "{{")) 'variable)))) ;;; babel.el ends here auctex-11.87/style/german.el0000644000000000000000000000332211437005421014451 0ustar rootroot;;; german.el --- Setup AUCTeX for editing German text. ;;; Commentary: ;; ;; Cater for some specialities of `(n)german.sty', e.g. special quote ;; and hyphen strings or that `"' makes the following letter an ;; umlaut. ;;; Code: (defvar LaTeX-german-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `german.sty'.") (modify-syntax-entry ?\" "w" LaTeX-german-mode-syntax-table) (TeX-add-style-hook "german" (lambda () (set-syntax-table LaTeX-german-mode-syntax-table) ;; XXX: Handle former customizations of the now defunct ;; German-specific variables. References to the respective ;; variables are to be deleted in future versions. (now = 2005-04-01) (unless (eq (car TeX-quote-language) 'override) (let ((open-quote (if (and (boundp 'LaTeX-german-open-quote) LaTeX-german-open-quote) LaTeX-german-open-quote "\"`")) (close-quote (if (and (boundp 'LaTeX-german-close-quote) LaTeX-german-close-quote) LaTeX-german-close-quote "\"'")) (q-after-q (if (and (boundp 'LaTeX-german-quote-after-quote) LaTeX-german-quote-after-quote) LaTeX-german-quote-after-quote t))) (setq TeX-quote-language `("german" ,open-quote ,close-quote ,q-after-q)))) (setq LaTeX-babel-hyphen-language "german") ;; Fontification of quotation marks. (when (and (eq TeX-install-font-lock 'font-latex-setup) (featurep 'font-latex)) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\">" "\"<" german)) ;; Prevent "| from leading to color bleed. (font-latex-add-to-syntax-alist (list (cons ?\" "\\")))) (run-hooks 'TeX-language-de-hook))) ;;; german.el ends here auctex-11.87/style/biblatex.el0000644000000000000000000000304512050755572015007 0ustar rootroot;;; biblatex.el --- AUCTeX style for `biblatex.sty' ;; Copyright (C) 2012 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2012-11-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: ;; This file adds support for `biblatex.sty'. ;;; Code: (TeX-add-style-hook "biblatex" (lambda () ;; Unfortunately `(member "backend=biber" TeX-active-styles)' does ;; not work as a test because "backend=biber" is added to ;; `TeX-active-styles' after "biblatex". So we check the value of ;; `LaTeX-biblatex-use-biber' and let the user set it if desired. (when LaTeX-biblatex-use-Biber (setq LaTeX-using-Biber t)))) ;; TODO: Add package options. (defvar LaTeX-biblatex-package-options nil "Package options for the biblatex package.") ;;; biblatex.el ends here auctex-11.87/style/graphicx.el0000644000000000000000000002415111016206070015004 0ustar rootroot;;; graphicx.el --- AUCTeX style file for graphicx.sty ;; Copyright (C) 2000, 2004, 2005 by Free Software Foundation, Inc. ;; Author: Ryuichi Arafune ;; 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 includegraphcics macro in graphicx style. ;; Acknowledgements ;; Dr. Thomas Baumann ;; David Kastrup ;; Masayuki Akata ;;; Code: (TeX-add-style-hook "graphicx" (lambda () (TeX-add-symbols '("reflectbox" "Argument") '("resizebox" "Width" "Height" "Argument") '("resizebox*" "Width" "Total height" "Argument") '("rotatebox" [ "Options" ] "Angle" "Argument") '("scalebox" "Horizontal scale" [ "Vertical scale" ] "Argument") '("includegraphics" LaTeX-arg-includegraphics)) ;; 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)))) (defun LaTeX-includegraphics-extensions (&optional list) "Return appropriate extensions for input files to \\includegraphics." ;; FIXME: This function may check for latex/pdflatex later. (concat "\\." (mapconcat 'identity (or list LaTeX-includegraphics-extensions) "$\\|\\.") "$")) (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." ;; Drop latex/pdflatex differences for now. Might be (re-)included later. (completing-read "Image file: " (TeX-delete-dups-by-car (mapcar 'list (TeX-search-files nil LaTeX-includegraphics-extensions t t))) 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. This option doesn't works with Emacs 21.3 or XEmacs. See `LaTeX-includegraphics-read-file' for more." (file-relative-name (read-file-name "Image file: " nil nil nil nil ;; FIXME: Emacs 21.3 and XEmacs 21.4.15 dont have PREDICATE as the sixth ;; argument (Emacs 21.3: five args; XEmacs 21.4.15: sixth is HISTORY). (lambda (fname) (or (file-directory-p fname) (string-match (LaTeX-includegraphics-extensions) fname)))) (TeX-master-directory))) (defun LaTeX-arg-includegraphics (prefix) "Ask for mandantory and optional arguments for the \\includegraphics command. The extent of the optional arguments is determined by the prefix argument and `LaTeX-includegraphics-options-alist'." (let* ((maybe-left-brace "[") (maybe-comma "") show-hint (image-file (funcall LaTeX-includegraphics-read-file)) (incl-opts (cond ((numberp (if (listp current-prefix-arg) (setq current-prefix-arg (car current-prefix-arg)) current-prefix-arg)) (cdr (assq current-prefix-arg LaTeX-includegraphics-options-alist))) ;; If no prefix is given, use `0' and tell the user about the ;; prefix. ((eq current-prefix-arg nil) (setq show-hint t) (cdr (assq 0 LaTeX-includegraphics-options-alist))) (t (cdr (assq 0 LaTeX-includegraphics-options-alist))))) ;; Order the optional aruments like in the tables in epslatex.ps, ;; page 14. But collect y-or-n options at the end, so that the use ;; can skip some options by typing `RET RET ... RET n n n ... n' ;; ;; Options from Table 1 (epslatex.ps, page 14): (totalheight (TeX-arg-maybe 'totalheight incl-opts '(read-string (concat "Total Height (" TeX-default-unit-for-image "): ")))) (height (TeX-arg-maybe 'height incl-opts ;; Either totalheight or height make sense: '(when (zerop (length totalheight)) (read-string (concat "Figure height (" TeX-default-unit-for-image "): "))))) (width (TeX-arg-maybe 'width incl-opts '(read-string (concat "Figure width (" TeX-default-unit-for-image "): ")))) (scale (TeX-arg-maybe 'angle incl-opts ;; If size is already specified, don't ask for scale: '(when (zerop (+ (length totalheight) (length height) (length width))) (read-string "Scale: ")))) (angle (TeX-arg-maybe 'angle incl-opts '(read-string "Rotation angle: "))) (origin (TeX-arg-maybe 'origin incl-opts '(read-string (concat "Origin (any combination of `lcr' (horizontal) " "and `tcbB' (vertical)): ")))) (page ;; Not in any table; Only for PDF. (TeX-arg-maybe 'page incl-opts '(read-string "Page: "))) (bb (TeX-arg-maybe 'bb incl-opts '(y-or-n-p "Set Bounding Box? "))) ;; Table 2: (viewport (TeX-arg-maybe 'viewport incl-opts '(y-or-n-p "Set viewport? "))) (trim (TeX-arg-maybe 'trim incl-opts '(and (not viewport) (y-or-n-p "Set trim? ")))) ;; Table 3: (clip (TeX-arg-maybe 'clip incl-opts ;; If viewport, we also use clip. '(or viewport (y-or-n-p "Clipping figure? ")))) (keepaspectratio (TeX-arg-maybe 'keepaspectratio incl-opts ;; If we have width and [total]height... '(or (and (not (zerop (length width))) (or (not (zerop (length totalheight))) (not (zerop (length height))))) (y-or-n-p "Keep Aspectratio? ")))) ;; Used for bb, trim, viewport, ...: llx lly urx ury) ;; Now insert stuff... (when (not (zerop (length totalheight))) (insert maybe-left-brace maybe-comma "totalheight=" (car (TeX-string-divide-number-unit totalheight)) (if (zerop (length (car (cdr (TeX-string-divide-number-unit totalheight))))) TeX-default-unit-for-image (car (cdr (TeX-string-divide-number-unit totalheight))))) (setq maybe-comma ",") (setq maybe-left-brace "")) (when (not (zerop (length height))) (insert maybe-left-brace maybe-comma "height=" (car (TeX-string-divide-number-unit height)) (if (zerop (length (car (cdr (TeX-string-divide-number-unit height))))) TeX-default-unit-for-image (car (cdr (TeX-string-divide-number-unit height))))) (setq maybe-comma ",") (setq maybe-left-brace "")) (when (not (zerop (length width))) (insert maybe-left-brace maybe-comma "width=" (car (TeX-string-divide-number-unit width)) (if (zerop (length (car (cdr (TeX-string-divide-number-unit width))))) TeX-default-unit-for-image (car (cdr (TeX-string-divide-number-unit width))))) (setq maybe-comma ",") (setq maybe-left-brace "")) (when (not (zerop (length scale))) (insert maybe-left-brace maybe-comma "scale=" scale) (setq maybe-comma ",") (setq maybe-left-brace "")) (when (not (zerop (length angle))) (insert maybe-left-brace maybe-comma "angle=" angle) (setq maybe-comma ",") (setq maybe-left-brace "")) (when (not (zerop (length origin))) (insert maybe-left-brace maybe-comma "origin=" origin) (setq maybe-comma ",") (setq maybe-left-brace "")) (when bb (setq llx (read-string "Bounding Box lower left x: ")) (setq lly (read-string "Bounding Box lower left y: ")) (setq urx (read-string "Bounding Box upper right x: ")) (setq ury (read-string "Bounding Box upper right y: ")) (insert maybe-left-brace maybe-comma "bb=" llx " " lly " " urx " " ury) (setq maybe-comma ",") (setq maybe-left-brace "")) ;; (when viewport (setq llx (read-string "Viewport lower left x: ")) (setq lly (read-string "Viewport lower left y: ")) (setq urx (read-string "Viewport upper right x: ")) (setq ury (read-string "Viewport upper right y: ")) (insert maybe-left-brace maybe-comma "viewport=" llx " " lly " " urx " " ury) (setq maybe-comma ",") (setq maybe-left-brace "")) (when trim (setq llx (read-string "Trim lower left x: ")) (setq lly (read-string "Trim lower left y: ")) (setq urx (read-string "Trim Upper right x: ")) (setq ury (read-string "Trim Upper right y: ")) (insert maybe-left-brace maybe-comma "trim=" llx " " lly " " urx " " ury) (setq maybe-comma ",") (setq maybe-left-brace "")) ;; (when clip (insert maybe-left-brace maybe-comma "clip") (setq maybe-comma ",") (setq maybe-left-brace "")) (when keepaspectratio (insert maybe-left-brace maybe-comma "keepaspectratio") (setq maybe-comma ",") (setq maybe-left-brace "")) ;; (when (not (zerop (length page))) (insert maybe-left-brace maybe-comma "page=" page) (setq maybe-comma ",") (setq maybe-left-brace "")) ;; (if (zerop (length maybe-left-brace)) (insert "]")) (TeX-insert-braces 0) (insert (if LaTeX-includegraphics-strip-extension-flag ;; We don't have `replace-regexp-in-string' in all (X)Emacs versions: (with-temp-buffer (insert image-file) (goto-char (point-max)) (when (search-backward-regexp (LaTeX-includegraphics-extensions) nil t 1) (replace-match "")) (buffer-string)) image-file)) (when show-hint (message (concat "Adding `C-u C-u' before the command asks for more optional arguments." "\nSee `LaTeX-includegraphics-options-alist' for details.")) (sit-for 3)) t)) ;;; graphicx.el ends here auctex-11.87/style/captcont.el0000644000000000000000000000267010751352552015030 0ustar rootroot;; captcont.el --- AUCTeX style file for captcont.sty ;; Copyright (C) 2003, 2005 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Maintainer: auctex-devel@gnu.org ;; 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 captcont.sty ;;; Code: (TeX-add-style-hook "captcont" (lambda () (TeX-add-symbols '("captcont" [ "list entry" ] "Caption") '("captcont*" [ "list entry" ] "Caption")) ;; Fontification (when (featurep 'font-latex) (font-latex-add-keywords '(("captcont" "*[{")) 'textual)))) (defvar LaTeX-captcont-package-options '("figbotcap" "figtopcap" "tabbotcap" "tabtopcap") "Package options for the captcont package.") ;;; captcont.el ends here auctex-11.87/style/slovak.el0000644000000000000000000000062611542463456014520 0ustar rootroot;;; slovak.el --- Setup AUCTeX for editing Slovak text. (TeX-add-style-hook "slovak" (lambda () (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("slovak" "\\uv{" "}" ,TeX-quote-after-quote))) (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\"<" "\">" french))) (run-hooks 'TeX-language-sk-hook))) auctex-11.87/style/CJK.el0000644000000000000000000000526511130146436013621 0ustar rootroot;;; CJK.el --- AUCTeX style for the CJK package. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-01-04 ;; 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 the CJK package, version 4.8.0 ;; (22-May-2008). ;;; Code: (defvar LaTeX-CJK-package-options '("lowercase" "global" "local" "active" "encapsulated") "Package options for the CJK package.") (defvar LaTeX-CJK-enc-list '("Bg5" "Bg5+" "HK" "GB" "GBt" "GBK" "JIS" "JIS2" "SJIS" "KS" "UTF8" "CNS1" "CNS2" "CNS3" "CNS4" "CNS5" "CNS6" "CNS7" "CEFX" "CEFY") "List of encodings supported by the CJK package.") (defun LaTeX-env-CJK (env) "Prompt for the arguments of ENV and insert it. The function can be used for CJK and CJK* environments." (LaTeX-insert-environment env (concat (let ((font-enc (read-string "(Optional) Font encoding: "))) (unless (zerop (length font-enc)) (format "[%s]" font-enc))) (format "{%s}" (completing-read "Encoding: " (mapcar 'list LaTeX-CJK-enc-list))) (format "{%s}" (read-string "Font family: "))))) (TeX-add-style-hook "CJK" (lambda () ;; New symbols (TeX-add-symbols '("CJKencfamily" ["Font encoding"] "Encoding" "Font family") '("CJKchar" ["Encoding"] "First byte" "Second byte") '("CJKcaption" 1) '("CJKfamily" 1) '("CJKfontenc" "Encoding" "Font encoding") '("CJKenc" 1) '("Unicode" "First byte" "Second byte") '("CJKsymbols" 2) '("CJKsymbol" 1) "CJKbold" "CJKnormal" "CJKboldshift" "CJKCJKchar" "CJKhangulchar" "CJKlatinchar" "CJKhwkatakana" "CJKnohwkatakana" "CJKglue" "CJKtolerance" "CJKtilde" "nbs" "standardtilde" "CJKspace" "CJKnospace" "CJKindent" '("CJKaddEncHook" 2) "CJKkern" "CJKverbatim") ;; New environments (LaTeX-add-environments '("CJK" LaTeX-env-CJK) '("CJK*" LaTeX-env-CJK)))) ;;; CJK.el ends here auctex-11.87/style/j-book.el0000644000000000000000000000034110216252636014365 0ustar rootroot;;; j-book.el - Special code for j-book style. ;; $Id: j-book.el,v 1.3 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "j-book" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; j-book.el ends here auctex-11.87/style/tabularx.el0000644000000000000000000000317511150263060015025 0ustar rootroot;;; tabularx.el --- AUCTeX style for the tabularx package. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-02-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 the tabularx package. ;;; Code: (defvar LaTeX-tabularx-package-options '("infoshow" "debugshow") "Package options for the tabularx package.") (TeX-add-style-hook "tabularx" (lambda () ;; New symbols (TeX-add-symbols "tracingtabularx" '("tabularxcolumn" 0)) ;; New environments (LaTeX-add-environments ;; XXX: The tabularx environment takes the same arguments as the ;; tabular* environment. However, the supported tokens in the ;; format can differ, so at some point in time we might want to ;; separate tabular* and tabularx. '("tabularx" LaTeX-env-tabular*)))) ;;; tabularx.el ends here auctex-11.87/style/dinbrief.el0000644000000000000000000001203611016206070014760 0ustar rootroot;;; dinbrief.el - Special code for LaTeX-Style dinbrief. ;; Contributed by Werner Fink ;; Please direct comments to him. ;;; Commentary: ;; LaTeX-Style: dinbrief.sty ;; Server: rusinfo.rus.uni-stuttgart.de ;; Directory: /pub/soft/tex/macros/latex/contrib/letters ;;; Code: (TeX-add-style-hook "dinbrief" (function (lambda () (LaTeX-add-environments '("letter" LaTeX-recipient-hook)) (TeX-add-symbols '("Absender" "Absender: ") '("Postvermerk" "Postvermerk: ") '("Datum" "Datum: ") '("Betreff" "Betreff: ") '("Behandlungsvermerk" "Behandlungsvermerk: ") '("Verteiler" "Verteiler: ") "makelabel" "Retourlabel" '("Anlagen" "Anlagen: ") '("Fenster" "Fenster \(ja/nein\): ") '("Retouradresse" "Retouradresse: ") '("signature" "Unterschrift: ") '("opening" "Anrede: ") '("closing" "Schlu\"s: "))))) (defun LaTeX-recipient-hook (environment) "Insert ENVIRONMENT and prompt for recipient and address." (let ((sender (read-string "Absender: " (user-full-name))) (recipient (read-string "Empf\"anger: ")) (address (read-string "Anschrift: ")) (postvermerk (read-string "Postvermerk: ")) (date (read-string "Datum: " (LaTeX-today))) (betreff (read-string "Betreff: ")) (vermerk (read-string "Behandlungsvermerk: ")) (verteil (read-string "Verteiler: ")) (anlage (read-string "Anlagen: ")) (opening (read-string "Anrede: ")) (closing (read-string "Schlu\"s: ")) (fenster (read-string "Fenster \(ja/nein\): ")) (signature (read-string "Unterschrift: ")) ) (if (not (zerop (length sender))) (progn (insert TeX-esc "Absender" TeX-grop sender TeX-grcl) (newline-and-indent))) (if (not (zerop (length postvermerk))) (progn (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl) (newline-and-indent))) (if (not (zerop (length betreff))) (progn (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl) (newline-and-indent))) (if (not (zerop (length vermerk))) (progn (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl) (newline-and-indent))) (if (not (zerop (length verteil))) (progn (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl) (newline-and-indent))) (if (not (zerop (length anlage))) (progn (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl) (newline-and-indent))) (if (string= fenster "ja") (progn (insert TeX-esc "Fenster") (let ((retouradr (read-string "Retouradresse: " (user-full-name)))) (newline-and-indent) (if (not (zerop (length retouradr))) (progn (insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl) (newline-and-indent)))))) (if (not (zerop (length signature))) (progn (insert TeX-esc "signature" TeX-grop signature TeX-grcl) (newline-and-indent))) (if (not (zerop (length date))) (progn (insert TeX-esc "Datum" TeX-grop date TeX-grcl) (newline-and-indent))) (newline-and-indent) (let ((indentation (current-column))) (LaTeX-insert-environment environment (concat TeX-grop recipient (if (not (zerop (length address))) (concat (if (not (zerop (length recipient))) (concat " " TeX-esc TeX-esc " ")) address)) TeX-grcl)) (save-excursion ; Fix indentation of address (if (search-backward TeX-grcl nil 'move) (let ((addr-end (point-marker))) (if (search-backward TeX-grop nil 'move) (let ((addr-column (current-column))) (while (search-forward (concat TeX-esc TeX-esc) (marker-position addr-end) 'move) (progn (newline) (indent-to addr-column)))))))) (insert "\n") (indent-to indentation)) (insert TeX-esc "opening" TeX-grop (if (zerop (length opening)) (concat TeX-esc " ") opening) TeX-grcl "\n") (indent-relative-maybe) (save-excursion (insert "\n" TeX-esc "closing" TeX-grop (if (zerop (length closing)) (concat TeX-esc " ") closing) TeX-grcl "\n") (indent-relative-maybe)))) (defun LaTeX-today nil "Return a string representing todays date according to flavor." (interactive) (let ((ctime-string (current-time-string)) (month-alist '(("Jan" . "Januar") ("Feb" . "Februar") ("Mar" . "M\\\"arz") ("Apr" . "April") ("May" . "Mai") ("Jun" . "Juni") ("Jul" . "Juli") ("Aug" . "August") ("Sep" . "September") ("Oct" . "Oktober") ("Nov" . "November") ("Dec" . "Dezember")))) (string-match "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" ctime-string) (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) (month (substring ctime-string (match-beginning 1) (match-end 1))) (day (substring ctime-string (match-beginning 2) (match-end 2)))) (if (assoc month month-alist) (progn (setq month (cdr (assoc month month-alist))) (if (> 2 (length day)) (setq day (concat "0" day))))) (format "Stuttgart, den %s. %s %s" day month year)))) ;;; dinbrief.el ends here auctex-11.87/style/ltxdoc.el0000644000000000000000000000222610751352551014506 0ustar rootroot;;; ltxdoc.el --- AUCTeX style for `ltxdoc.cls' ;; Copyright (C) 2004 Free Software Foundation, Inc. ;; Author: Frank Kster ;; Maintainer: auctex-devel@gnu.org ;; 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 `ltxdoc.cls'. ;;; Code: (TeX-add-style-hook "ltxdoc" (lambda () (TeX-run-style-hooks "doc") (TeX-run-style-hooks "ltx-base"))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/style/virtex.el0000644000000000000000000000732311443122254014527 0ustar rootroot;;; virtex.el - Common code for all TeX formats. ;; Author: Per Abrahamsen ;;; Code: (TeX-add-style-hook "virtex" (lambda () (TeX-add-symbols "/" "above" "abovedisplayshortskip" "abovedisplayskip" "abovewithdelims" "accent" "adjdemerits" "advance" "afterassignment" "aftergroup" "atop" "atopwithdelims" "badness" "baselineskip" "batchmode" "begingroup" "belowdisplayshortskip" "belowdisplayskip" "binoppenalty" "botmark" "box" "boxmaxdepth" "brokenpenalty" "catcode" "char" "chardef" "cleaders" "closein" "closeout" "clubpenalty" "copy" "count" "countdef" "cr" "crcr" "csname" "day" "deadcycles" "def" "defaulthyphenchar" "defaultskewchar" "delcode" "delimiter" "delimiterfactor" "delimitershortfall" "dimen" "dimendef" "discretionary" "displayindent" "displaylimits" "displaystyle" "displaywidowpenalty" "displaywidth" "divide" "doublehyphendemerits" "dp" "dump" "edef" "else" "emergencystretch" "end" "endcsname" "endgroup" "endinput" "endlinechar" "eqno" "errhelp" "errmessage" "errorcontextlines" "errorstopmode" "escapechar" "everycr" "everydisplay" "everyhbox" "everyjob" "everymath" "everypar" "everyvbox" "exhyphenpenalty" "expandafter" "fam" "fi" "finalhyphendemerits" "firstmark" "floatingpenalty" "font" "fontdimen" "fontname" "futurelet" "gdef" "global" "globaldefs" "halign" "hangafter" "hangindent" "hbadness" "hbox" "hfil" "hfill" "hfilneg" "hfuzz" "hoffset" "holdinginserts" "hrule" "hsize" "hskip" "hss" "ht" "hyphenpenation" "hyphenchar" "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim" "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode" "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox" "ifvoid" "ifx" "ignorespaces" "immediate" "indent" "input" "inputlineno" "insert" "insertpenalties" "interlinepenalty" "jobname" "kern" "language" "lastbox" "lastkern" "lastpenalty" "lastskip" "lccode" "leaders" "left" "lefthyphenmin" "leftskip" "leqno" "let" "limits" "linepenalty" "lineskip" "lineskiplimit" "long" "looseness" "lower" "lowercase" "mag" "markaccent" "mathbin" "mathchar" "mathchardef" "mathchoise" "mathclose" "mathcode" "mathinner" "mathhop" "mathopen" "mathord" "mathpunct" "mathrel" "mathsurround" "maxdeadcycles" "maxdepth" "meaning" "medmuskip" "message" "mkern" "month" "moveleft" "moveright" "mskip" "multiply" "muskip" "muskipdef" "newlinechar" "noalign" "noboundary" "noexpand" "noindent" "nolimits" "nonscript" "nonstopmode" "nulldelimiterspace" "nullfont" "number" "omit" "openin" "openout" "or" "outer" "output" "outputpenalty" "overfullrule" "parfillskip" "parindent" "parskip" "pausing" "postdisplaypenalty" "predisplaypenalty" "predisplaysize" "pretolerance" "relpenalty" "rightskip" "scriptspace" "showboxbreadth" "showboxdepth" "smallskipamount" "spaceskip" "splitmaxdepth" "splittopskip" "tabskip" "thickmuskip" "thinmuskip" "time" "tolerance" "topskip" "tracingcommands" "tracinglostchars" "tracingmacros" "tracingonline" "tracingoutput" "tracingpages" "tracingparagraphs" "tracingrestores" "tracingstats" "uccode" "uchyph" "underline" "unhbox" "unhcopy" "unkern" "unpenalty" "unskip" "unvbox" "unvcopy" "uppercase" "vadjust" "valign" "vbadness" "vbox" "vcenter" "vfil" "vfill" "vfilneg" "vfuzz" "voffset" "vrule" "vsize" "vskip" "vss" "vtop" "wd" "widowpenalty" "write" "xdef" "xleaders" "xspaceskip" "year"))) ;;; virtex.el ends here auctex-11.87/style/amsbook.el0000644000000000000000000000032206716766737014664 0ustar rootroot;;; amsbook.el --- Style hook for the AMS-LaTeX book document class. ;;; Code: (TeX-add-style-hook "amsbook" (function (lambda () (TeX-run-style-hooks "amsmath" "amsthm")))) ;;; amsbook.el ends here. auctex-11.87/style/nomencl.el0000644000000000000000000000414610751352551014647 0ustar rootroot;;; nomencl.el --- AUCTeX style for the nomencl class. ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-10-09 ;; 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 the nomencl package. ;;; Code: (defvar LaTeX-nomencl-package-options '("refeq" "norefeq" "refpage" "norefpage" "prefix" "noprefix" "cfg" "nocfg" "intoc" "notintoq" "compatible" "noncompatible" "croatian" "danish" "english" "french" "german" "italian" "polish" "portuguese" "russian" "spanish" "ukrainian") "Package options for the nomencl package.") (TeX-add-style-hook "nomencl" (lambda () (TeX-add-symbols '("makenomenclature" 0) '("printnomenclature" ["Label width"]) '("nomenclature" ["Prefix"] "Symbol" "Description") "nomrefeq" "nomrefpage" "nomrefeqpage" "nomnorefeq" "nomnorefpage" "nomnorefeqpage" '("nomlabelwidth" 0) '("nomname" 0) '("nomgroup" 0) '("nompreamble" 0) '("nompostamble" 0) '("nomitemsep" 0) '("nomprefix" 0) '("nomlabel" 0) '("nomentryend" 0) '("eqdeclaration" 0) '("pagedeclaration" 0)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("nomenclature" "[{{")) 'reference)))) ;;; nomencl.el ends here auctex-11.87/style/amsbsy.el0000644000000000000000000000061110326661055014503 0ustar rootroot;;; amsbsy.el --- Style hook for the AMS-LaTeX amsbsy package. ;;; ;;; AUTHOR: Carsten Dominik ;;; Code: (TeX-add-style-hook "amsbsy" (function (lambda () (TeX-add-symbols '("boldsymbol" "Symbol") '("pmb" "Symbol") )))) (defvar LaTeX-amsbsy-package-options nil "Package options for the amsbsy package.") ;;; amsbsy.el ends here. auctex-11.87/style/MinionPro.el0000644000000000000000000000447710751352553015137 0ustar rootroot;;; MinionPro.el -- AUCTeX style for MinionPro.sty ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Mark Trettin ;; Maintainer: auctex-devel@gnu.org ;; Created: 2005-11-26 ;; 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 `MinionPro.sty' (v2.0). ;;; Code (TeX-add-style-hook "MinionPro" (lambda () (TeX-add-symbols ;; New symbols '("figureversion" (TeX-arg-eval completing-read "Figure style: " '(("text") ("osf") ("lining") ("lf") ("tabular") ("tab") ("proportional") ("prop")))) '("smallfrac" "Numerator" "Denominator") '("slantfrac" "Numerator" "Denominator") ;; IMHO they should be added to the other \text.. and \..shape commands '("textsw" 1) '("textssc" 1) "sscshape" "swshape") ;; Run style hook for amsmath which is loaded via MnSymbol (TeX-run-style-hooks "amsmath") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("smallfrac" "{{") ("slantfrac" "{{") ("textsw" "{") ("textssc" "{")) 'textual) (font-latex-add-keywords '(("figureversion" "{")) 'variable)))) (defvar LaTeX-MinionPro-package-options '("smallfamily" "medfamily" "fullfamily" "noopticals" "opticals" "slides" "textosf" "mathosf" "osf" "textlf" "mathlf" "lf" "mathtabular" "mnsy" "cmsy" "swash" "abx" "amsbb" "fourierbb" "lucidabb" "mixedgreek" "italicgreek" "frenchmath" "minionint" "footnotefigures") "Package options for the MinionPro package.") ;;; MinionPro.el ends here auctex-11.87/style/verbatim.el0000644000000000000000000000245510751352550015025 0ustar rootroot;;; verbatim.el --- Style hook for the verbatim package. ;; Copyright (C) 2001 Free Software Foundation, Inc. ;; Author: Masayuki Ataka ;; Maintainer: auctex-devel@gnu.org ;; Created: 2001/05/01 ;; 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: ;; M-x TeX-auto-generate verbatim.sty makes garbages. ;;; Code (TeX-add-style-hook "verbatim" (function (lambda () (LaTeX-add-environments "comment") (TeX-add-symbols '("verbatiminput" TeX-arg-file))))) (defvar LaTeX-verbatim-package-options nil "Package options for the verbatim package.") ;;; verbatim.el ends here. auctex-11.87/style/psfig.el0000644000000000000000000000440711016206071014312 0ustar rootroot;;; psfig.el - Support for the psfig style option. ;; Contributed by Marc Gemis ;; Please direct comments to him. ;;; Code: (TeX-add-style-hook "psfig" (function (lambda () ;; probable some of the following symbols may be removed (TeX-add-symbols "protect" "figurepath" "fbox" "other" "letter" "other" "then" "Sine" "Cosine" "psdraft" "psfull" "psscalefirst" "psrotatefirst" "psnodraftbox" "psdraftbox" "pssilent" "psnoisy" "minmaxtest" '("psfig" TeX-arg-psfig) '("psfigurepath" t) ) (LaTeX-add-environments '("psfigure" LaTeX-env-psfigure) ) ))) (defun TeX-arg-psfig (optional) "Ask for file, width and length. Insert psfig macro" (let ((psfile (read-file-name "PS-file: " "" "" nil)) (figwidth (read-string "Figure width: ")) (figheight (read-string "Figure height: ")) ) (insert TeX-grop "figure=" psfile) (if (not (zerop (length figwidth))) (insert ",width=" figwidth)) (if (not (zerop (length figheight))) (insert ",height=" figheight)) (insert TeX-grcl) ) ) (defun LaTeX-env-psfigure (environment) "Create with \\label and \\caption and \\psfig commands." (let ((float (read-string "Float to: " LaTeX-float)) (caption (read-string "Caption: ")) (label (read-string "Label: " LaTeX-figure-label)) ; gf: ask if this should be centered (psfile (read-file-name "PS-file: " "" "" nil)) (figwidth (read-string "Figure width: ")) (figheight (read-string "Figure height: ")) ) (setq LaTeX-float (if (zerop (length float)) LaTeX-float float)) (LaTeX-insert-environment "figure" (concat LaTeX-optop LaTeX-float LaTeX-optcl)) (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop "figure=" psfile) (if (not (zerop (length figwidth))) (insert ",width=" figwidth)) (if (not (zerop (length figheight))) (insert ",height=" figheight)) (insert TeX-grcl TeX-grcl) (if (zerop (length caption)) () (newline-and-indent) (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) (if (or (zerop (length label)) (equal LaTeX-figure-label label)) () (newline-and-indent) (insert TeX-esc "label" TeX-grop label TeX-grcl)) (forward-line 2))) ;;; psfig.el ends here auctex-11.87/style/multicol.el0000644000000000000000000000356111537221223015036 0ustar rootroot;;; multicol.el --- AUCTeX style for `multicol.sty' ;; Copyright (C) 2011 Free Software Foundation, Inc. ;; Author: Mads Jensen ;; Maintainer: auctex-devel@gnu.org ;; Created: 2011-01-24 ;; 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 `multicol.sty'. ;;; Code: (TeX-add-style-hook "multicol" (lambda () (LaTeX-add-environments '("multicols" "Number of columns" [ "Text across columns" ] [ "Local value for \\premulticols" ]) '("multicols*" "Number of columns" [ "Text across columns" ] [ "Local value for \\premulticols" ])) (TeX-add-symbols '("multicoltolerance" 0) '("multicolpretolerance" 0) '("premulticols" 0) '("postmulticols" 0) '("multicolsep" 0) '("multicolbaselineskip" 0) '("multicolovershoot" 0) '("multicolundershoot" 0) '("columnsep" 0) '("columnseprule" 0) '("columnseprulecolor" 0) '("raggedcolumns" 0) '("flushcolumns" 0) "columnbreak"))) (defvar LaTeX-multicol-package-options '("errorshow" "infoshow" "balancingshow" "markshow" "debugshow" "grid") "Package options for the multicol package.") ;;; multicol.el ends here auctex-11.87/style/scrbook.el0000644000000000000000000000406110751355551014655 0ustar rootroot;;; scrbook.el --- AUCTeX style for scrbook.cls ;; Copyright (C) 2002, 2005 Free Software Foundation ;; Author: Mark Trettin ;; Created: 2002-09-26 ;; 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 `scrbook.cls'. This file needs ;; `scrbase.el'. ;;; Code: (TeX-add-style-hook "scrbook" (lambda () (LaTeX-largest-level-set "chapter") ;; load basic definitons (TeX-run-style-hooks "scrbase") (TeX-add-symbols "chapapp" "raggeddictum" '("chapappifchapterprefix" "Additional text") '("setpartpreamble" [ TeX-arg-KOMA-setpreamble ] [ "Width" ] t) '("setchapterpreamble" [ TeX-arg-KOMA-setpreamble ] [ "Width" ] t) '("dictum" [ "Author" ] t)) (LaTeX-section-list-add-locally '("addchap" 1)) (make-local-variable 'LaTeX-section-label) (setq LaTeX-section-label (append LaTeX-section-label '(("addchap" . nil)))) ;; Definitions for font-latex (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; Textual keywords (font-latex-add-keywords '(("addchap" "[{") ("setpartpreamble" "[[{") ("setchapterpreamble" "[[{") ("dictum" "[{")) 'textual) ;; Sectioning keywords (font-latex-add-keywords '(("addchap" "[{")) 'sectioning-1)))) ;;; scrbook.el ends here auctex-11.87/style/ltx-base.el0000644000000000000000000000574010751352551014734 0ustar rootroot;;; ltx-base.el --- AUCTeX style for basic LaTeX commands. ;; Copyright (C) 2004 Free Software Foundation, Inc. ;; Author: Frank Kster ;; Maintainer: auctex-devel@gnu.org ;; 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 general support for basic LaTeX commands used for ;; writing LaTeX class files (.cls), style files (.sty) and package ;; files (.dtx). ;;; Code: (TeX-add-style-hook "ltx-base" (function (lambda () (TeX-add-symbols '("DeclareRobustCommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("CheckCommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("@addtoreset" TeX-arg-counter "Within counter" "counter") '("addvspace" "space") '("addpenalty" "penalty") '("ProvidesClass" "name" [ "release information" ]) '("ProvidesPackage" "name" [ "release information" ]) '("ProvidesFile" "filename" [ "release information" ]) '("NeedsTeXFormat" "format" [ "release" ]) '("DeclareOption" "option" t) ;; would be great if DeclareOption RET * RET would give ;; \DeclareOption*! "DeclareOption*" '("CurrentOption" 0) '("PassOptionsToPackage" "option list" "package") '("ExecuteOptions" "option list") "ProcessOptions" "ProcessOptions*" '("OptionNotUsed" 0) ;; candidate for opt/mand toggling '("RequirePackage" [ "option list" ] "package" [ "release" ]) '("LoadClass" [ "option list" ] "class" [ "release" ]) "AtEndOfPackage" "AtEndOfClass" "AtBeginDocument" "AtEndDocument" '("IfFileExists" "filename" 2) '("InputIfFileExists" "filename" 2) '("PackageWarning" "name" t) '("PackageWarningNoLine" "name" t) '("PackageInfo" "name" t) '("PackageError" "name" "short text" t) '("ClassWarning" "name" t) '("ClassWarningNoLine" "name" t) '("ClassInfo" "name" t) '("ClassError" "name" "short text" t) '("MessageBreak" 0) '("@ifpackageloaded" "package" 2) '("@ifpackagelater" "package" "date" 2) '("@ifpackagewith" "package" "options" 2) '("message" "Log Message") '("@ifundefined" "Macro Name" 2) '("@ifnextchar" (TeX-arg-literal " ") (TeX-arg-free "character") 2 ) "expandafter")))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/style/nicefrac.el0000644000000000000000000000272710751352551014771 0ustar rootroot;;; nicefrac.el --- AUCTeX style for the LaTeX package `nicefrac.sty' (v0.9b) ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Christian Schlauer ;; Maintainer: auctex-devel@gnu.org ;; 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 `nicefrac.sty'. ;;; Code: (TeX-add-style-hook "nicefrac" (lambda () (TeX-add-symbols '("nicefrac" [ "Font changing command" ] "Numerator" "Denominator")) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("nicefrac" "[{{")) 'textual)))) (defvar LaTeX-nicefrac-package-options '("nice" "ugly") "Package options for the nicefrac package.") ;;; nicefrac.el ends here auctex-11.87/style/paralist.el0000644000000000000000000000703310751352551015031 0ustar rootroot;;; paralist.el -- AUCTeX style for paralist.sty ;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2003-10-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 `paralist.sty'. ;;; Code: ;; Insert an itemize-ish environment and ask for an optional label (defun LaTeX-paralist-env-item-opt-label (environment) "Insert ENVIRONMENT, an optional label and the first item." (LaTeX-insert-environment environment (let ((label (read-string "(Optional) Label: "))) (concat (unless (zerop (length label)) (format "[%s]" label))))) (LaTeX-find-matching-begin) (end-of-line 1) (delete-char 1) (delete-horizontal-space) (LaTeX-insert-item)) (TeX-add-style-hook "paralist" (lambda () ;; Add compactdesc to the list of environments which have an optional ;; argument for each item. (add-to-list 'LaTeX-item-list '("compactdesc" . LaTeX-item-argument)) ;; New symbols (TeX-add-symbols '("pointedenum") '("pointlessenum") '("paradescriptionlabel") '("setdefaultitem" "First level" "Second level" "Third level" "Fourth level") '("setdefaultenum" "First level" "Second level" "Third level" "Fourth level") '("setdefaultleftmargin" "First level" "Second level" "Third level" "Fourth level" "Fifth level" "Sixth level")) ;; New environments (LaTeX-add-environments '("asparaenum" LaTeX-paralist-env-item-opt-label) '("inparaenum" LaTeX-paralist-env-item-opt-label) '("compactenum" LaTeX-paralist-env-item-opt-label) '("asparaitem" LaTeX-paralist-env-item-opt-label) '("inparaitem" LaTeX-paralist-env-item-opt-label) '("compactitem" LaTeX-paralist-env-item-opt-label) '("compactdesc" LaTeX-env-item) ;; FIXME: Should not be available if package is loaded with option ;; `olditem': '("itemize" LaTeX-paralist-env-item-opt-label) ;; FIXME: Should not be available if package is loaded with option ;; `oldenum': '("enumerate" LaTeX-paralist-env-item-opt-label) ;; FIXME: Only defined if package is loaded with option ;; `defblank': '("asparablank" LaTeX-env-item) '("inparablank" LaTeX-env-item)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("setdefaultitem" "{{{{") ("setdefaultenum" "{{{{") ("setdefaultleftmargin" "{{{{{{")) 'variable)))) (defvar LaTeX-paralist-package-options '("newitem" "olditem" "newenum" "oldenum" "alwaysadjust" "neveradjust" "neverdecrease" "increaseonly" "defblank" "pointedenum" "pointlessenum" "cfg" "nocfg" "flushright" "flushleft") "Package options for the paralist package.") ;;; paralist.el ends here auctex-11.87/style/danish.el0000644000000000000000000000102111542463456014455 0ustar rootroot;;; danish.el --- Setup AUCTeX for editing Danish text. ;;; Code: (TeX-add-style-hook "danish" (lambda () (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("danish" "\"`" "\"'" ,TeX-quote-after-quote))) (setq LaTeX-babel-hyphen-language "danish") ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\">" "\"<" german))) (run-hooks 'TeX-language-dk-hook))) ;;; danish.el ends here auctex-11.87/style/index.el0000644000000000000000000000520410751352552014320 0ustar rootroot;;; index.el --- AUCTeX support for indices with index.sty. ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "index" (lambda () (TeX-add-symbols ;; New indices '("newindex" [ "Counter" ] "Tag" "Extension of raw index" "Extension of processed index" "Index title") '("renewindex" [ "Counter" ] "Tag" "Extension of raw index" "Extension of processed index" "Index title") "makeindex" '("disableindex" "Tag[,tag...]") ;; Printing the index '("printindex" [ "Indextag" ] [ "Prologue" ]) "indexspace" ;; Index entries '("index" [ TeX-arg-index-tag ] TeX-arg-index) '("index*" [ TeX-arg-index-tag ] TeX-arg-index) ;; Showidx-like stuff "proofmodetrue" "proofmodefalse" '("indexproofstyle" "Style") ;; Shortcuts (THESE ARE DEPRECATED AND SHOULD NOT BE USED "shortindexingon" "shortindexinoff") ;; Parsing index macros (setq LaTeX-auto-regexp-list (append ;; The first regexp is faster, but less accurate ;;'(("\\\\index\\*?\\[[^{}]*\\]{\\([^}]*\\)" ;; 1 LaTeX-auto-index-entry)) ;; The second regexp is very good, but slower. '(("\\\\index\\*?\\[[^{}]*\\]{\\([^}{]*\\({[^}{]*\\({[^}{]*\\({[^}{]*}[^}{]*\\)*}[^}{]*\\)*}[^}{]*\\)*\\)}" 1 LaTeX-auto-index-entry)) LaTeX-auto-regexp-list)) ;; Completion for the index entries in \index and |see commands (setq TeX-complete-list (append '(("\\\\index\\*?\\(\\[[^][{}]*\\]\\)?{\\([^{}\n\r]*\\)" 2 LaTeX-index-entry-list) ("|see{\\([^}]*\\)" 1 LaTeX-index-entry-list)) TeX-complete-list)) ;; RefTeX support (and (fboundp 'reftex-add-index-macros) (reftex-add-index-macros '(index))))) (defvar LaTeX-index-package-options nil "Package options for the index package.") ;;; index.el ends here auctex-11.87/style/epsf.el0000644000000000000000000000212111043427301014127 0ustar rootroot;;; epsf.el - Support for the epsf style option. ;; Contributed by Marc Gemis ;;; Code: (TeX-add-style-hook "epsf" (lambda () (TeX-add-symbols '("epsfsize" TeX-arg-epsfsize) '("epsffile" TeX-arg-file) '("epsfbox" TeX-arg-file) "epsflly" "epsfury" "testit" "epsfgetlitbb" "epsfnormal" "epsfgetbb" "other" "epsfsetgraph" "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab" "epsfllx" "epsflly" "epsfury" "epsfverbosetrue"))) (defun TeX-arg-epsfsize (optional &optional prompt definition) "Create a line that print epsf figures at a certain percentage" (interactive) (let ((scale (read-string "Scale in percent (default 75): "))) (setq scale (if (zerop (length scale)) "75" scale)) (save-excursion ; append #1#{scale#1} (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl) ; insert \def before \epsfsize (beginning-of-line 1) (newline) (insert TeX-esc "def") (forward-line -1) (insert "% From now on print figures at " scale "% of original size")) (end-of-line))) ;;; epsf.el ends here auctex-11.87/style/book.el0000644000000000000000000000033010216252636014134 0ustar rootroot;;; book.el - Special code for book style. ;; $Id: book.el,v 1.5 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "book" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; book.el ends here auctex-11.87/style/scrbase.el0000644000000000000000000001705310751352551014637 0ustar rootroot;;; scrbase.el --- AUCTeX style for the KOMA-Script bundle. ;; Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. ;; Author: Mark Trettin ;; Created: 2002-09-26 ;; 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 the KOMA-Script bundle. This file ;; contains the base definitions that work with all KOMA-Script ;; classes (scrarctl.cls, scrreprt.cls, scrbook.cls and scrlttr2.cls). ;; You need this file since it's loaded from the class-styles. ;;; Code: (TeX-add-style-hook "scrbase" (lambda () (TeX-add-symbols "appendixmore" "autodot" '("addtokomafont" TeX-arg-KOMA-fontelements t) '("areaset" [ "BCOR" ] "Width" "Height") '("captionabove" [ "Lof entry" ] "Caption") '("captionbelow" [ "Lof entry" ] "Caption") '("cleardoubleemptypage") '("cleardoubleplainpage") '("cleardoublestandardpage") '("dedication" t) '("deffootnote" [ "Mark width" ] "Indent" "Parindent" "Definition") '("deffootnotemark" "Definition") '("extratitle" t) '("ifpdfoutput" t nil) '("ifthispageodd" t nil) '("lowertitleback" t) '("maketitle" [ "Pagenumber" ]) '("marginline" t) '("publishers" "Publishers") '("sectionmark" "Running head") '("setbibpreamble" "Preamble") '("setcaphanging") '("setcapindent" "Indent") '("setcapindent*" "X-Indent") '("setcapmargin" [ "Margin left" ] "Margin") '("setcapmargin*" [ "Margin inside" ] "Margin") '("setcapwidth" [ TeX-arg-KOMA-capjust ] "Width") '("setindexpreamble" "Preamble") '("setkomafont" TeX-arg-KOMA-fontelements t) '("subject" "Subject") '("subsectionmark" "Running head") '("textsubscript" "Text") '("thanks" "Footnote") '("thefootnotemark") '("titlehead" t) '("uppertitleback" t) '("usekomafont" TeX-arg-KOMA-fontelements)) (LaTeX-add-environments '("labeling" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((delim (read-string "(Optional) Delimiter: ")) (width (read-string "Longest item: "))) (concat (if (not (zerop (length delim))) (format "[%s]" delim)) (format "{%s}" width)))) (LaTeX-find-matching-begin) (end-of-line 1) (LaTeX-insert-item))) '("addmargin" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((leftin (read-string "(Optional) Left Indentation: ")) (indent (read-string "Indentation: "))) (concat (if (not (zerop (length leftin))) (format "[%s]" leftin)) (format "{%s}" indent)))))) '("addmargin*" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((innin (read-string "(Optional) Inner Indentation: ")) (indent (read-string "Indentation: "))) (concat (if (not (zerop (length innin))) (format "[%s]" innin)) (format "{%s}" indent)))))) '("captionbeside" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((lofent (read-string "(Optional) Lof Entry: ")) (title (read-string "Caption: ")) (place (read-string "(Optional) Placement (l,r,o,i): ")) (width (read-string "(Optional) Width: ")) (offset (read-string "(Optional) Offset: "))) (concat (if (not (zerop (length lofent))) (format "[%s]" lofent)) (format "{%s}" title) (if (not (zerop (length place))) (format "[%s]" place)) (if (not (zerop (length width))) (format "[%s]" width)) (and (not (zerop (length place))) (not (zerop (length offset))) (format "[%s]%s" offset (if (y-or-n-p "Starred? ") "*" ""))))))))) (LaTeX-section-list-add-locally '(("addpart" 0) ("addsec" 2) ("minisec" 7))) ;; This doesn't work. Maybe it's RefTeX's label insertion? (make-local-variable 'LaTeX-section-label) (setq LaTeX-section-label (append LaTeX-section-label '(("addpart" . nil) ("addsec" . nil) ("minisec" . nil)))) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; Textual keywords (font-latex-add-keywords '(("captionabove" "[{") ("captionbelow" "[{") ("dedication" "{") ("extratitle" "{") ("lowertitleback" "{") ("maketitle" "[") ("marginline" "{") ("publishers" "{") ("subject" "{") ("sectionmark" "{") ("setbibpreamble" "{") ("setindexpreamble" "{") ("subsectionmark" "{") ("textsubscript" "{") ("titlehead" "{") ("uppertitleback" "{")) 'textual) ;; Function keywords (font-latex-add-keywords '(("deffootnote" "[{{{") ("deffootnotemark" "{") ("ifpdfoutput" "{{") ("ifthispageodd" "{{")) 'function) ;; Variable keywords (font-latex-add-keywords '(("addtokomafont" "{{") ("areaset" "[{{") ("setcaphanging" "") ("setcapindent" "{") ("setcapmargin" "*[{") ("setcapwidth" "[{") ("setkomafont" "{{") ("typearea" "[{") ("usekomafont" "{")) 'variable) ;; Warning keywords (font-latex-add-keywords '("cleardoublestandardpage" "cleardoubleplainpage" "cleardoubleemptypage") 'warning) ;; Sectioning keywords (font-latex-add-keywords '(("addpart" "[{")) 'sectioning-1) (font-latex-add-keywords '(("addsec" "[{")) 'sectioning-2) (font-latex-add-keywords '(("minisec" "[{")) 'sectioning-4)))) (defun TeX-arg-KOMA-setpreamble (optional &optional prompt) "Prompt for KOMA-Script's \\set*preamble position with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Position") '(("") ("l") ("r") ("c") ("o") ("u") ("lo") ("lu") ("ro") ("ru") ("co") ("cu")) nil t) optional)) (defun TeX-arg-KOMA-capjust (optional &optional prompt) "Prompt for KOMA-Script's \\setcapwidth justification with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Justification") '(("") ("l") ("r") ("c") ("i") ("o")) nil t) optional)) (defun TeX-arg-KOMA-fontelements (optional &optional prompt) "Prompt for KOMA-Script's fontelements with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Element") '(("") ("caption") ("captionlabel") ("descriptionlabel") ("dictum") ("dictumauthor") ("dictumtext") ("footnote") ("footnotelabel") ("footnotereference") ("pagefoot") ("pagehead") ("pagenumber") ("pagination") ("sectioning") ("part") ("partnumber") ("chapter") ("section") ("subsection") ("subsubsection") ("paragraph") ("subparagraph") ("title") ("disposition") ("minisec")) nil t) optional)) (add-to-list 'LaTeX-item-list '("labeling" . LaTeX-item-argument)) ;;; scrbase.el ends here auctex-11.87/style/shortvrb.el0000644000000000000000000000366611315426375015076 0ustar rootroot;;; shortvrb.el --- AUCTeX style for `shortvrb.sty' ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-12-23 ;; 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 `shortvrb.sty'. ;; XXX: We might want provide users with the possibility to activate ;; something like this for any file (incl. Plain TeX). That would ;; bring us one step closer to the goal of displaying texbook.tex ;; without font locking going haywire. ;; FIXME: The code does not work for preview.dtx because in that file ;; the style list is empty. In its master file, preview.drv, it ;; works, however. However, even if the style file is loaded by hand, ;; it fails to fontify verbatim text in the documentation parts of the ;; file. ;;; Code: (TeX-add-style-hook "shortvrb" (lambda () ;; Fontification (when (and LaTeX-shortvrb-chars (fboundp 'font-latex-set-syntactic-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (let (syntax-alist) (dolist (char LaTeX-shortvrb-chars) (add-to-list 'syntax-alist (cons char "|"))) (font-latex-add-to-syntax-alist syntax-alist))))) ;;; shortvrb.el ends here auctex-11.87/style/dk.el0000644000000000000000000000034105503702320013573 0ustar rootroot;;; dk.el - Setup AUC TeX for editing Danish text. ;; $Id: dk.el,v 1.2 1993/12/15 21:42:40 amanda Exp $ ;;; Code: (TeX-add-style-hook "dk" (function (lambda () (run-hooks 'TeX-language-dk-hook)))) ;;; dk.el ends here auctex-11.87/style/mdwlist.el0000644000000000000000000000421610751352551014675 0ustar rootroot;;; mdwlist.el --- AUCTeX style for `mdwlist.sty' ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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 `mdwlist.sty'. ;;; Code: (TeX-add-style-hook "mdwlist" (lambda () (TeX-add-symbols '("makecompactlist" "New environment" "Existing environment") '("suspend" "Environment") ; this could be done nicer by automatically '("resume" "Environment")) ; determining the environment (LaTeX-add-environments '("enumerate*" LaTeX-env-item) '("itemize*" LaTeX-env-item) '("description*" LaTeX-env-item)) ;; Indentation and filling (make-local-variable 'LaTeX-begin-regexp) (setq LaTeX-begin-regexp (concat LaTeX-begin-regexp "\\|resume\\b")) (make-local-variable 'LaTeX-end-regexp) (setq LaTeX-end-regexp (concat LaTeX-end-regexp "\\|suspend\\b")) (make-local-variable 'paragraph-start) (setq paragraph-start (concat paragraph-start "\\|[ \t]*" TeX-comment-start-regexp "*[ \t]*" (regexp-quote TeX-esc) "\\(resume\\b\\|suspend\\b\\)")) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("makecompactlist" "{{") ("suspend" "[{") ("resume" "[{[")) 'function)))) (defvar LaTeX-mdwlist-package-options nil "Package options for the mdwlist package.") ;;; mdwlist.el ends here auctex-11.87/style/doc.el0000644000000000000000000000771111442647016013763 0ustar rootroot;;; doc.el --- AUCTeX style for `doc.sty' ;; Copyright (C) 2004, 2008 Free Software Foundation, Inc. ;; Author: Frank Kster ;; Maintainer: auctex-devel@gnu.org ;; 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 `doc.sty'. ;;; Code: (defun LaTeX-env-no-comment (environment) "Insert ENVIRONMENT and make sure there is no commented empty line inside." (LaTeX-insert-environment environment) (unless (TeX-active-mark) (when (save-excursion (beginning-of-line) (looking-at (concat "[ \t]+$\\|[ \t]*" TeX-comment-start-regexp "+[ \t]*$"))) (delete-region (line-beginning-position) (line-end-position)) (indent-according-to-mode)))) (defun LaTeX-doc-after-insert-macrocode (env start end) "Make sure the macrocode environment is properly formatted after insertion." (when (TeX-member env '("macrocode" "macrocode*") 'string-equal) (save-excursion (goto-char end) (skip-chars-backward " \t") (when (bolp) (insert "%") (indent-according-to-mode)) (goto-char start) (skip-chars-backward " \t") (when (bolp) (insert "%") (indent-according-to-mode))))) (TeX-add-style-hook "doc" (lambda () (add-to-list (make-local-variable 'LaTeX-indent-environment-list) '("macrocode" current-indentation)) (add-to-list 'LaTeX-indent-environment-list '("macrocode*" current-indentation)) (add-hook 'LaTeX-after-insert-env-hooks 'LaTeX-doc-after-insert-macrocode nil t) (LaTeX-add-environments "theglossary" '("macrocode" LaTeX-env-no-comment) '("macrocode*" LaTeX-env-no-comment) '("macro" "Macro")) (TeX-add-symbols "EnableCrossrefs" "DisableCrossrefs" "DoNotIndex" "DontCheckModules" "CheckModules" "Module" '("DescribeMacro" "Macro") '("DescribeEnv" "Environment") "verbatim" "verb" "parg" "oarg" "marg" "meta" "cmd" "makelabel" "MacroFont" "MacroFont" "AltMacroFont" "AltMacroFont" "PrintMacroName" "PrintDescribeMacro" "PrintDescribeEnv" "PrintEnvName" "MakePrivateLetters" "actualchar" "quotechar" "levelchar" "encapchar" "verbatimchar" "SpecialIndex" "SpecialMainIndex" "SpecialMainEnvIndex" "SpecialUsageIndex" "SpecialEnvIndex" "SortIndex" "LeftBraceIndex" "RightBraceIndex" "PercentIndex" "OldMakeindex" "PercentIndex" "IndexPrologue" "IndexParms" "subitem" "subsubitem" "indexspace" "efill" "pfill" "PrintIndex" '("changes" "version" "date (YYYY/MM/DD)") "generalname" "RecordChanges" "GlossaryPrologue" "GlossaryParms" "PrintChanges" "AlsoImplementation" "StopEventually" "OnlyDescription" "Finale" "IndexInput" "maketitle" "MakeShortVerb" "DeleteShortVerb" "MakeShortverb" "DeleteShortverb" "CheckSum" "CharacterTable" "CharTableChanges" "CodelineNumbered" "CodelineIndex" "PageIndex" "theCodelineNo" "theCodelineNo" "DocstyleParms" "MakePercentIgnore" "MakePercentComment" "DocInput" "DocInclude" "GetFileInfo" "filename" "fileinfo") (TeX-run-style-hooks "shortvrb"))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/style/j-report.el0000644000000000000000000000035310216252636014751 0ustar rootroot;;; j-report.el - Special code for j-report style. ;; $Id: j-report.el,v 1.3 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "j-report" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; j-report.el ends here auctex-11.87/style/dutch.el0000644000000000000000000000035405503702322014312 0ustar rootroot;;; dutch.el - Setup AUC TeX for editing Dutch text. ;; $Id: dutch.el,v 1.2 1993/12/15 21:42:42 amanda Exp $ ;;; Code: (TeX-add-style-hook "dutch" (function (lambda () (run-hooks 'TeX-language-nl-hook)))) ;;; dutch.el ends here auctex-11.87/style/ngerman.el0000644000000000000000000000330311437005407014632 0ustar rootroot;;; ngerman.el --- Setup AUCTeX for editing German text. ;;; Commentary: ;; ;; Cater for some specialities of `(n)german.sty', e.g. special quote ;; and hyphen strings or that `"' makes the following letter an ;; umlaut. ;;; Code: (defvar LaTeX-german-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `german.sty'.") (modify-syntax-entry ?\" "w" LaTeX-german-mode-syntax-table) (TeX-add-style-hook "ngerman" (lambda () (set-syntax-table LaTeX-german-mode-syntax-table) ;; XXX: Handle former customizations of the now defunct ;; German-specific variables. References to the respective ;; variables are to be deleted in future versions. (now = 2005-04-01) (unless (eq (car TeX-quote-language) 'override) (let ((open-quote (if (and (boundp 'LaTeX-german-open-quote) LaTeX-german-open-quote) LaTeX-german-open-quote "\"`")) (close-quote (if (and (boundp 'LaTeX-german-close-quote) LaTeX-german-close-quote) LaTeX-german-close-quote "\"'")) (q-after-q (if (and (boundp 'LaTeX-german-quote-after-quote) LaTeX-german-quote-after-quote) LaTeX-german-quote-after-quote t))) (setq TeX-quote-language `("ngerman" ,open-quote ,close-quote ,q-after-q)))) (setq LaTeX-babel-hyphen-language "ngerman") ;; Fontification (when (and (eq TeX-install-font-lock 'font-latex-setup) (featurep 'font-latex)) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\">" "\"<" german)) ;; Prevent "| from leading to color bleed. (font-latex-add-to-syntax-alist (list (cons ?\" "\\")))) (run-hooks 'TeX-language-de-hook))) ;;; ngerman.el ends here auctex-11.87/style/amsthm.el0000644000000000000000000000330010751352552014475 0ustar rootroot;;; amsthm.el --- Style hook for the AMS-LaTeX amsthm package. ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "amsthm" (function (lambda () (LaTeX-add-environments '("proof" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((heading (read-string "(optional) Heading: "))) (if (string= heading "") "" (format "[%s]" heading)))))) ) (TeX-add-symbols '("newtheorem" "Environment name" ["Share numbering with"] "Heading" ["Number subordinated in each"]) '("newtheorem*" "Environment name" "Heading") '("theoremstyle" LaTeX-amsthm-complete-theoremstyle) )))) (defun LaTeX-amsthm-complete-theoremstyle (&rest ignore) (insert TeX-grop (completing-read "Style: " '(("plain" . nil) ("definition" . nil) ("remark" . nil))) TeX-grcl)) ;;; amsthm.el ends here auctex-11.87/style/lettrine.el0000644000000000000000000000416511537221244015040 0ustar rootroot;;; lettrine.el --- AUCTeX style for `lettrine.sty' ;; Copyright (C) 2011 Free Software Foundation, Inc. ;; Author: Mads Jensen ;; 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 `lettrine.sty'. ;;; Code: (defvar LaTeX-lettrine-key-val-options '(("lines") ("lhang") ("loversize") ("lraise") ("findent") ("nindent") ("slope") ("ante") ("image" ("true"))) "Key=value options for \\lettrine") (TeX-add-style-hook "lettrine" (lambda () (TeX-add-symbols '("lettrine" [ TeX-arg-key-val LaTeX-lettrine-key-val-options ] "Letter" "Text") '("LettrineImageFalse" 0) ;; all of the below can be configured with either \setlength or ;; \renewcommand '("LettrineFont" 0) '("LettrineFontHook" 0) '("LettrineTextFont" 0) '("LettrineWidth" 0) '("DefaultLhang" 0) '("DefaultLoversize" 0) '("DefaultLraise" 0) '("DefaultFindent" 0) '("DefaultNindent" 0) '("DefaultSlope" 0) ;; above settings can also be input a file, and pointed to with ;; \renewcommand '("DefaultOptionsFile" 0)) ;; Fontification (when (and (fboundp 'font-latex-add-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("lettrine" "[{{")) 'textual)))) (defvar LaTeX-lettrine-package-options nil "Package options for the lettrine package.") ;;; lettrine.el ends here auctex-11.87/style/flashcards.el0000644000000000000000000000352211127711174015321 0ustar rootroot;;; flashcards.el --- AUCTeX style for the flashcards class. ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-04-23 ;; 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 the flashcards class. ;;; Code: (TeX-add-style-hook "flashcards" (lambda () (TeX-add-symbols '("cardfrontstyle" ["Format"] "Style") '("cardfrontfoot" "Footer text") '("cardbackstyle" ["Format"] "Style") '("cardfrontheadstyle" ["Format"] "Style") '("cardfrontfootstyle" ["Format"] "Style") "cardmargin" "cardpaper" "cardpapermode" "cardrows" "cardcolumns" "cardheight" "cardwidth") (LaTeX-add-environments '("flashcard" ["Header"] "Front side")) ;; Fontification (when (and (fboundp 'font-latex-add-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("cardfrontstyle" "[{") ("cardfrontfoot" "{") ("cardbackstyle" "[{") ("cardfrontheadstyle" "[{") ("cardfrontfootstyle" "[{")) 'variable)))) ;;; flashcards.el ends here auctex-11.87/style/naustrian.el0000644000000000000000000000230111316225770015207 0ustar rootroot;;; naustrian.el --- AUCTeX style for the `naustrian' babel option. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-12-28 ;; 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: ;; Set up AUCTeX for editing Austrian text in connection with the ;; `naustrian' babel option. ;;; Code: (TeX-add-style-hook "naustrian" (lambda () (TeX-run-style-hooks "ngerman"))) ;;; naustrian.el ends here auctex-11.87/style/austrian.el0000644000000000000000000000227311316225752015041 0ustar rootroot;;; austrian.el --- AUCTeX style for the `austrian' babel option. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-12-28 ;; 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: ;; Set up AUCTeX for editing Austrian text in connection with the ;; `austrian' babel option. ;;; Code: (TeX-add-style-hook "austrian" (lambda () (TeX-run-style-hooks "german"))) ;;; austrian.el ends here auctex-11.87/style/scrpage2.el0000644000000000000000000001104310751352551014714 0ustar rootroot;;; scrpage2.el --- AUCTeX style for scrpage2.sty. ;; Author: Ralf Angeli ;; Created: 2003-11-01 ;; 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 `scrpage2.sty'. ;;; Code: (TeX-add-style-hook "scrpage2" (lambda () ;; New symbols (TeX-add-symbols '("lehead" [ "scrplain-left-even" ] "scrheadings-left-even") '("cehead" [ "scrplain-center-even" ] "scrheadings-center-even") '("rehead" [ "scrplain-right-even" ] "scrheadings-right-even") '("lefoot" [ "scrplain-left-even" ] "scrheadings-left-even") '("cefoot" [ "scrplain-center-even" ] "scrheadings-center-even") '("refoot" [ "scrplain-right-even" ] "scrheadings-right-even") '("lohead" [ "scrplain-left-odd" ] "scrheadings-left-odd") '("cohead" [ "scrplain-center-odd" ] "scrheadings-center-odd") '("rohead" [ "scrplain-right-odd" ] "scrheadings-right-odd") '("lofoot" [ "scrplain-left-odd" ] "scrheadings-left-odd") '("cofoot" [ "scrplain-center-odd" ] "scrheadings-center-odd") '("rofoot" [ "scrplain-right-odd" ] "scrheadings-right-odd") '("ihead" [ "scrplain-inside" ] "scrheadings-inside") '("chead" [ "scrplain-center" ] "scrheadings-center") '("ohead" [ "scrplain-outside" ] "scrheadings-outside") '("ifoot" [ "scrplain-inside" ] "scrheadings-inside") '("cfoot" [ "scrplain-center" ] "scrheadings-center") '("ofoot" [ "scrplain-outside" ] "scrheadings-outside") '("clearscrheadfoot") '("clearscrheadings") '("clearscrplain") '("automark" [ "Right page" ] "Left page") '("headmark") '("manualmark") '("pagemark") '("leftmark") '("rightmark") '("setfootwidth" [ "Offset" ] "Width") '("setheadwidth" [ "Offset" ] "Width") '("setfootbotline" [ "Length" ] "Thickness") '("setfootsepline" [ "Length" ] "Thickness") '("setheadtopline" [ "Length" ] "Thickness") '("setheadsepline" [ "Length" ] "Thickness") '("deftripstyle" "Name" [ "Thickness of outer line" ] [ "Thickness of inner line" ] "Inner box of page head" "Center box of page head" "Outer box of page head" "Inner box of page foot" "Center box of page foot" "Outer box of page foot") '("defpagestyle" "Name" "Head definition" "Foot definition") '("newpagestyle" "Name" "Head definition" "Foot definition") '("renewpagestyle" "Name" "Head definition" "Foot definition") '("providepagestyle" "Name" "Head definition" "Foot definition")) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("lehead" "[{") ("cehead" "[{") ("rehead" "[{") ("lefoot" "[{") ("cefoot" "[{") ("refoot" "[{") ("lohead" "[{") ("cohead" "[{") ("rohead" "[{") ("lofoot" "[{") ("cofoot" "[{") ("rofoot" "[{") ("ihead" "[{") ("chead" "[{") ("ohead" "[{") ("ifoot" "[{") ("cfoot" "[{") ("ofoot" "[{") ("automark" "[{") ("setfootwidth" "[{") ("setheadwidth" "[{") ("setfootbotline" "[{") ("setfootsepline" "[{") ("setheadtopline" "[{") ("setheadsepline" "[{")) 'variable) (font-latex-add-keywords '(("deftripstyle" "{[[{{{{{{") ("defpagestyle" "{{{") ("newpagestyle" "{{{") ("renewpagestyle" "{{{") ("providepagestyle" "{{{")) 'function)))) (defvar LaTeX-scrpage2-package-options '("headinclude" "headexclude" "footinclude" "footexclude" "mpinclude" "mpexclude" "headtopline" "headsepline" "footsepline" "footbotline" "plainheadtopline" "plainheadsepline" "plainfootsepline" "plainfootbotline" "ilines" "clines" "olines" "automark" "manualmark" "autooneside" "markuppercase" "markusedcase" "nouppercase" "komastyle" "standardstyle") "Package options for the scrpage2 package.") ;;; scrpage2.el ends here auctex-11.87/style/jurabib.el0000644000000000000000000003535510751352552014641 0ustar rootroot;;; jurabib.el --- AUCTeX style for the `jurabib' package ;; Copyright (C) 2004, 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-10-05 ;; 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 the `jurabib' package. ;; Currently only the citation-related commands are supported. Feel ;; free to complete the support and send the result to the AUCTeX ;; mailing list. But be aware that the code can only be included if ;; you assign the copyright to the FSF. ;;; Code: (TeX-add-style-hook "jurabib" (lambda () ;; Taken from natbib.el and adapted. (let ((citecmds '(("cite" . 2) ("cite*" . 2) ("citetitle" . 2) ("fullcite" . 2) ("citet" . 1) ("citealt" . 1) ("citep" . 2) ("citealp" . 2) ("citeauthor" . 2) ("citeyear" . 2) ("footcite" . 2) ("footcite*" . 2) ("footcitetitle" . 2) ("footfullcite" . 2) ("footcitet" . 1) ("footcitealt" . 1) ("footcitep" . 2) ("footcitealp" . 2) ("footciteauthor" . 2) ("footciteyear" . 2)))) ;; Add these symbols (apply 'TeX-add-symbols (mapcar (lambda (cmd) (cond ((= (cdr cmd) 0) ;; No optional arguments (list (car cmd) 'TeX-arg-cite)) ((= (cdr cmd) 1) ;; Just one optional argument, the post note (list (car cmd) '(TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil) 'TeX-arg-cite)) ((= (cdr cmd) 2) ;; Pre and post notes (list (car cmd) '(TeX-arg-conditional TeX-arg-cite-note-p (natbib-note-args) nil) 'TeX-arg-cite)))) citecmds)) ;; Special cases (TeX-add-symbols ;; FIXME: Completing read for field. '("citefield" ; \citefield[]{}{} (TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil) "Field" TeX-arg-cite) '("footcitefield" ; \footcitefield[]{}{} (TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil) "Field" TeX-arg-cite)) ;; Make an entry in TeX-complete-list (add-to-list 'TeX-complete-list (list (concat "\\\\\\(" (mapconcat (lambda (x) (regexp-quote (car x))) (append citecmds '(("citefield") ("footcitefield"))) "\\|") "\\)\\(\\[[^]\n\r\\%]*\\]\\)*{\\([^{}\n\r\\%,]*,\\)*" "\\([^{}\n\r\\%,]*\\)") 4 'LaTeX-bibitem-list "}")) ;; Add further symbols (TeX-add-symbols '("citefullfirstfortype" 1) '("citenotitlefortype" 1) '("citeswithoutentry" 1) '("citetitlefortype" 1) '("citeworkwithtitle" 1) '("nextcitefull" 1) '("nextcitenotitle" 1) '("nextcitereset" 1) '("nextciteshort" 1) '("jurabibsetup" 1)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("cite" "*[[{") ("citetitle" "[[{") ("fullcite" "[[{") ("citet" "[{") ("citealt" "[{") ("citep" "[[{") ("citealp" "[[{") ("citeauthor" "[[{") ("citeyear" "[[{") ("footcite" "[[{") ("footcite*" "[[{") ("footcitetitle" "[[{") ("footfullcite" "[[{") ("footcitet" "[{") ("footcitealt" "[{") ("footcitep" "[[{") ("footcitealp" "[[{") ("footciteauthor" "[[{") ("footciteyear" "[[{") ("citefield" "[{{") ("footcitefield" "[{{")) 'reference) (font-latex-add-keywords '(("citeswithoutentry" "{") ("nextcitefull" "{") ("nextcitenotitle" "{") ("nextcitereset" "{") ("nextciteshort" "{")) 'function) (font-latex-add-keywords '(("citenotitlefortype" "{") ("citetitlefortype" "{") ("jurabibsetup" "{")) 'variable)) ;; Tell RefTeX (Thanks, Carsten) (when (and (fboundp 'reftex-set-cite-format) ;; Is it `reftex-cite-format' customized? (not (get 'reftex-cite-format 'saved-value))) ;; Check if RefTeX supports jurabib. (if (assoc 'jurabib reftex-cite-format-builtin) ;; Yes, use the provided default. (reftex-set-cite-format 'jurabib) ;; No, set it by hand. (reftex-set-cite-format '((?\C-m . "\\cite{%l}") (?c . "\\cite[?][]{%l}") (?t . "\\citet{%l}") (?p . "\\citep{%l}") (?e . "\\citep[e.g.][?]{%l}") (?s . "\\citep[see][?]{%l}") (?u . "\\fullcite{%l}") (?i . "\\citetitle{%l}") (?a . "\\citeauthor{%l}") (?e . "\\citefield{?}{%l}") (?y . "\\citeyear{%l}") (?f . "\\footcite{%l}") (?F . "\\footcite[?][]{%l}") (?l . "\\footfullcite{%l}")))))) ;; FIXME: The following list is the edited output of ;; `TeX-auto-generate' which probably includes internal macros of ;; jurabib. Unfortunately the macros which should be accessible to ;; the user are not fully documented at the time of this writing. ;; But instead of including only the limited part which is ;; documented we rather give the user a bit too much. The list ;; should be reduced when there is proper documentation, though. (TeX-add-symbols '("Wrapquotes" 1) '("apyformat" 1) '("artnumberformat" 1) '("artvolnumformat" 2) '("artvolumeformat" 1) '("artyearformat" 1) '("bibAnnote" 1) '("bibAnnoteFile" 1) '("bibAnnotePath" 1) '("bibEIMfont" 1) '("bibIMfont" 1) '("bibYear" 1) '("bibedformat" 1) '("bibedinformat" 1) '("bibenf" 5) '("biblenf" 5) '("bibnf" 5) '("bibnumberformat" 1) '("bibrenf" 5) '("bibrlenf" 5) '("bibrnf" 5) '("biburlfont" 1) '("edfont" 1) '("formatarticlepages" ["argument"] 2) '("fsted" 1) '("fullnameoxfordcrossref" 1) '("incolledformat" 5) '("jbArchPages" 1) '("jbPages" 1) '("jbannoteformat" 1) '("jbapifont" 1) '("jbarchnameformat" 1) '("jbarchsig" 2) '("jbartPages" 1) '("jbartcrossrefchecked" ["argument"] 1) '("jbauthorindexfont" 1) '("jbbibargs" 5) '("jbbibyearformat" 1) '("jbcitationoyearformat" 1) '("jbcitationyearformat" 1) '("jbcrossrefchecked" ["argument"] 1) '("jbedafti" 1) '("jbedbyincollcrossreflong" 1) '("jbedbyincollcrossrefshort" 1) '("jbedbyincollcrossrefshortnoapy" 1) '("jbedbyincollcrossrefshortwithapy" 1) '("jbedition" 1) '("jbeditorindexfont" 1) '("jbendnote" 1) '("jbflanguage" 1) '("jbincollcrossref" 2) '("jbisbn" 1) '("jbissn" 1) '("jbnote" 2) '("jborganizationindexfont" 1) '("jbpagesformat" 1) '("jbprformat" 1) '("jbrealcitation" 2) '("jbshortarchformat" 1) '("jbshortsubarchformat" 1) '("jbsy" 1) '("jbtiafed" 1) '("lookatfortype" 1) '("nobibliography" 1) '("nocitebuthowcited" 1) '("numberandseries" 2) '("pageadd" 1) '("pernumberformat" 1) '("pervolnumformat" 2) '("pervolumeformat" 1) '("peryearformat" 1) '("revnumberformat" 1) '("revvolnumformat" 2) '("revvolumeformat" 1) '("revyearformat" 1) '("snded" 1) '("textitswitch" 1) '("translator" 3) '("volumeformat" 1) "Bibbfsasep" "Bibbfsesep" "Bibbstasep" "Bibbstesep" "Bibbtasep" "Bibbtesep" "Bibchaptername" "Bibetal" "Edbyname" "IbidemMidName" "IbidemName" "NAT" "OpCit" "Reprint" "SSS" "Transfrom" "Volumename" "addtoalllanguages" "afterfoundersep" "aftervolsep" "ajtsep" "alsothesisname" "aprname" "augname" "bibBTsep" "bibJTsep" "bibPageName" "bibPagesName" "bibaesep" "bibaldelim" "bibaltformatalign" "bibandname" "bibanfont" "bibansep" "bibapifont" "bibapyldelim" "bibapyrdelim" "bibarchpagename" "bibarchpagesname" "bibardelim" "bibartperiodhowcited" "bibatsep" "bibauthormultiple" "bibbdsep" "bibbfsasep" "bibbfsesep" "bibbstasep" "bibbstesep" "bibbtasep" "bibbtesep" "bibbtfont" "bibbtsep" "bibbudcsep" "bibces" "bibchapterlongname" "bibchaptername" "bibcite" "bibcolumnsep" "bibcommenthowcited" "bibcontinuedname" "bibcrossrefcite" "bibcrossrefciteagain" "bibeandname" "bibedformat" "bibefnfont" "bibeimfont" "bibelnfont" "bibenf" "bibfnfmt" "bibfnfont" "bibhowcited" "bibibidfont" "bibidemPfname" "bibidemPmname" "bibidemPnname" "bibidemSfname" "bibidemSmname" "bibidemSnname" "bibidempfname" "bibidempmname" "bibidempnname" "bibidemsfname" "bibidemsmname" "bibidemsnname" "bibimfont" "bibincollcrossrefcite" "bibincollcrossrefciteagain" "bibjtfont" "bibjtsep" "bibleftcolumn" "bibleftcolumnadjust" "bibleftcolumnstretch" "biblenf" "biblnfmt" "biblnfont" "bibnf" "bibnotcited" "bibpagename" "bibpagesname" "bibpagesnamesep" "bibpldelim" "bibprdelim" "bibrevtfont" "bibrightcolumn" "bibrightcolumnadjust" "bibrightcolumnstretch" "bibsall" "bibsdanish" "bibsdutch" "bibsenglish" "bibsfinnish" "bibsfrench" "bibsgerman" "bibsitalian" "bibsnfont" "bibsnorsk" "bibsportuguese" "bibsspanish" "bibtabularitemsep" "bibtfont" "bibtotalpagesname" "biburlprefix" "biburlsuffix" "bibvolumecomment" "bibvtfont" "bothaesep" "bpubaddr" "byname" "citetitleonly" "citeyearpar" "commaename" "commaname" "dateldelim" "daterdelim" "decname" "diffpageibidemmidname" "diffpageibidemname" "edbyname" "edbysep" "editionname" "editorname" "editorsname" "enoteformat" "etalname" "etalnamenodot" "febname" "fifthedname" "firstedname" "footcitetitleonly" "formatpages" "foundername" "fourthedname" "fromdutch" "fromenglish" "fromfinnish" "fromfrench" "fromgerman" "fromitalian" "fromnorsk" "fromportuguese" "fromspanish" "herename" "howcitedprefix" "howcitedsuffix" "ibidem" "ibidemmidname" "ibidemname" "idemPfedbyname" "idemPfname" "idemPmedbyname" "idemPmname" "idemPnedbyname" "idemPnname" "idemSfedbyname" "idemSfname" "idemSmedbyname" "idemSmname" "idemSnedbyname" "idemSnname" "idemmidname" "idemname" "idempfedbyname" "idempfname" "idempmedbyname" "idempmname" "idempnedbyname" "idempnname" "idemsfedbyname" "idemsfname" "idemsmedbyname" "idemsmname" "idemsnedbyname" "idemsnname" "incollinname" "inname" "inseriesname" "janname" "jbCheckedFirst" "jbFirst" "jbFirstAbbrv" "jbJunior" "jbLast" "jbNotRevedNoVonJr" "jbNotRevedNoVonNoJr" "jbNotRevedOnlyLast" "jbNotRevedVonJr" "jbNotRevedVonNoJr" "jbPAGES" "jbPageName" "jbPages" "jbPagesName" "jbRevedFirstNoVonJr" "jbRevedFirstNoVonNoJr" "jbRevedFirstOnlyLast" "jbRevedFirstVonJr" "jbRevedFirstVonNoJr" "jbRevedNotFirstNoVonJr" "jbRevedNotFirstNoVonNoJr" "jbRevedNotFirstOnlyLast" "jbRevedNotFirstVonJr" "jbRevedNotFirstVonNoJr" "jbVon" "jbactualauthorfnfont" "jbactualauthorfont" "jbaddtomakehowcited" "jbaensep" "jbafterstartpagesep" "jbannotatorfont" "jbapifont" "jbarchnamesep" "jbarchpagename" "jbarchpagesname" "jbartPages" "jbatsep" "jbauthorfnfont" "jbauthorfont" "jbauthorfontifannotator" "jbauthorinfo" "jbbeforestartpagesep" "jbbfsasep" "jbbfsesep" "jbbookedaftertitle" "jbbstasep" "jbbstesep" "jbbtasep" "jbbtesep" "jbbtfont" "jbbtitlefont" "jbcitationyearformat" "jbcrossrefchecked" "jbdisablecitationcrossref" "jbdoitem" "jbdonotindexauthors" "jbdonotindexeditors" "jbdonotindexorganizations" "jbdotafterbibentry" "jbdotafterendnote" "jbdy" "jbedbyincollcrossrefcite" "jbedbyincollcrossrefciteagain" "jbedition" "jbedseplikecite" "jbeimfont" "jbfirstcitepageranges" "jbfootnoteformat" "jbfootnotenumalign" "jbfulltitlefont" "jbhowcitedcomparepart" "jbhowcitednormalpart" "jbhowsepannotatorfirst" "jbhowsepannotatorlast" "jbhowsepbeforetitle" "jbhowsepbeforetitleae" "jbhowsepbeforetitleibidemname" "jbignorevarioref" "jbimfont" "jbindexbib" "jbindexonlyfirstauthors" "jbindexonlyfirsteditors" "jbindexonlyfirstorganizations" "jbindextype" "jblookforgender" "jbmakeinbib" "jbmakeinbiblist" "jbmakeindexactual" "jbnotsamearch" "jbonlyforbib" "jbonlyforcitations" "jbonlyforfirstcitefullbegin" "jbonlyforfirstcitefullend" "jborgauthorfont" "jboyearincitation" "jbpagename" "jbpagenamenodot" "jbpages" "jbpagesep" "jbpagesname" "jbpagesnamesep" "jbsamearch" "jbsamesubarch" "jbsamesubarchindent" "jbshorttitlefont" "jbshowbibextralabel" "jbssedbd" "jbsubarchsep" "jbsuperscripteditionafterauthor" "jbtitlefont" "jbts" "jburldef" "jbuseidemhrule" "jbyear" "jbyearaftertitle" "julname" "junname" "jurthesisname" "marname" "mastersthesisname" "mayname" "nofirstnameforcitation" "noibidem" "noidem" "nopage" "novname" "numbername" "octname" "ofseriesname" "opcit" "organizationname" "origPAGES" "origartPages" "origbibces" "origcrossref" "origpages" "osep" "phdthesisname" "reprint" "reprintname" "reviewbyname" "reviewname" "reviewofname" "samepageibidemmidname" "samepageibidemname" "secondedname" "sepname" "sndecmd" "snded" "sndeditorname" "sndeditorsname" "technicalreportname" "testnosig" "textandname" "texteandname" "theHlvla" "theHlvlb" "theHlvlc" "theHlvld" "theHlvle" "theHlvlf" "theHlvlg" "theHlvlh" "theHlvli" "theHlvlj" "theHlvlk" "theHlvll" "thedname" "thirdedname" "trans" "transby" "transfrom" "updatename" "updatesep" "urldatecomment" "volname" "volumename" "volumeofname"))) ;;; jurabib.el ends here auctex-11.87/style/listings.el0000644000000000000000000001651611170667137015061 0ustar rootroot;;; listings.el --- AUCTeX style for `listings.sty' ;; Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-10-17 ;; 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 `listings.sty'. ;; ;; FIXME: Please make me more sophisticated! ;;; Code: ;; The following are options taken from chapter 4 of the listings ;; manual (2006/05/08 Version 1.3c). Experimental options described ;; in chapter 5 are not included. (defvar LaTeX-listings-key-val-options '(;; Space and placement ("float" ("t" "b" "p" "h")) ; Support [*] as an optional prefix and that ; tbph are not exclusive. ("floatplacement" ("t" "b" "p" "h")) ("aboveskip") ("belowskip") ("lineskip") ("boxpos" ("b" "c" "t")) ;; The printed range ("print" ("true" "false")) ("firstline") ("lastline") ("linerange") ("showlines" ("true" "false")) ("emptylines") ("gobble") ;; Languages and styles ("style") ("language") ("alsolanguage") ("defaultdialect") ("printpod" ("true" "false")) ("usekeywordsintag" ("true" "false")) ("tagstyle") ("markfirstintag") ("makemacrouse" ("true" "false")) ;; Figure out the appearance ("basicstyle") ("identifierstyle") ("commentstyle") ("stringstyle") ("keywordstyle") ("classoffset") ("texcsstyle") ("directivestyle") ("emph") ("moreemph") ("deleteemph") ("emphstyle") ("delim") ("moredelim") ("deletedelim") ;; Getting all characters right ("extendedchars" ("true" "false")) ("inputencoding") ; Could make use of `latex-inputenc-coding-alist'. ("upquote" ("true" "false")) ("tabsize") ("showtabs" ("true" "false")) ("tab") ("showspaces" ("true" "false")) ("showstringspaces" ("true" "false")) ("formfeed") ;; Line numbers ("numbers" ("none" "left" "right")) ("stepnumber") ("numberfirstline" ("true" "false")) ("numberstyle") ("numbersep") ("numberblanklines" ("true" "false")) ("firstnumber" ("auto" "last")) ; Can also take a number. ("name") ;; Captions ("title") ("caption") ; Insert braces? ("label") ("nolol" ("true" "false")) ("captionpos" ("t" "b")) ; Can be a subset of tb. ("abovecaptionskip") ("belowcaptionskip") ;; Margins and line shape ("linewidth") ("xleftmargin") ("xrightmargin") ("resetmargins" ("true" "false")) ("breaklines" ("true" "false")) ("breakatwhitespace" ("true" "false")) ("prebreak") ("postbreak") ("breakindent") ("breakautoindent" ("true" "false")) ;; Frames ("frame" ("none" "leftline" "topline" "bottomline" "lines" "single" "shadowbox" ;; Alternative to the above values. A subset of trblTRBL can be ;; given. "t" "r" "b" "l" "T" "R" "B" "L")) ("frameround" ("t" "f")) ; The input actually has to be four times {t,f}. ("framesep") ("rulesep") ("framerule") ("framexleftmargin") ("framexrightmargin") ("framextopmargin") ("framebottommargin") ("backgroundcolor") ("rulecolor") ("fillcolor") ("fulesepcolor") ("frameshape") ;; Indexing ("index") ("moreindex") ("deleteindex") ("indexstyle") ;; Column alignment ("columns" ("fixed" "flexible" "fullflexible")) ; Also supports an optional ; argument with {c,l,r}. ("flexiblecolumns" ("true" "false")) ("keepspaces" ("true" "false")) ("basewidth") ("fontadjust" ("true" "false")) ;; Escaping to LaTeX ("texcl" ("true" "false")) ("mathescape" ("true" "false")) ("escapechar") ("escapeinside") ("escapebegin") ("escapeend") ;; Interface to fancyvrb ("fancyvrb" ("true" "false")) ("fvcmdparams") ("morefvcmdparams") ;; Language definitions ("keywordsprefix") ("keywords") ("morekeywords") ("deletekeywords") ("texcs") ("moretexcs") ("deletetexcs") ("directives") ("moredirectives") ("deletedirectives") ("sensitive" ("true" "false")) ("alsoletter") ("alsodigit") ("alsoother") ("otherkeywords") ("tag") ("string") ("morestring") ("deletestring") ("comment") ("morecomment") ("deletecomment") ("keywordcomment") ("morekeywordcomment") ("deletekeywordcomment") ("keywordcommentsemicolon") ("podcomment" ("true" "false"))) "Key=value options for listings macros and environments.") (TeX-add-style-hook "listings" (lambda () ;; New symbols (TeX-add-symbols '("lstalias" ["Alias dialect"] "Alias" ["Dialect"] "Language") '("lstdefinestyle" "Style name" (TeX-arg-key-val LaTeX-listings-key-val-options)) '("lstinline" TeX-arg-verb) '("lstinputlisting" [TeX-arg-key-val LaTeX-listings-key-val-options] TeX-arg-file) "lstlistoflistings" '("lstnewenvironment" "Name" ["Number or arguments"] ["Default argument"] "Starting code" "Ending code") '("lstset" (TeX-arg-key-val LaTeX-listings-key-val-options))) ;; New environments (LaTeX-add-environments '("lstlisting" LaTeX-env-args [TeX-arg-key-val LaTeX-listings-key-val-options])) ;; Filling (make-local-variable 'LaTeX-indent-environment-list) (add-to-list 'LaTeX-indent-environment-list '("lstlisting" current-indentation)) (make-local-variable 'LaTeX-verbatim-regexp) (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|lstlisting")) (add-to-list 'LaTeX-verbatim-environments-local "lstlisting") (add-to-list 'LaTeX-verbatim-macros-with-delims-local "lstinline") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "lstinline") ;; Fontification (when (and (fboundp 'font-latex-add-keywords) (fboundp 'font-latex-set-syntactic-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("lstnewenvironment" "{[[{{")) 'function) (font-latex-add-keywords '(("lstinputlisting" "[{")) 'reference) (font-latex-add-keywords '(("lstinline" "[{") ; The second argument should ; actually be verbatim. ("lstlistoflistings" "")) 'textual) (font-latex-add-keywords '(("lstalias" "{{") ("lstdefinestyle" "{{") ("lstset" "{")) 'variable) ;; For syntactic fontification, e.g. verbatim constructs. (font-latex-set-syntactic-keywords) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)))) (defvar LaTeX-listings-package-options '("draft" "final" "savemem" "noaspects") "Package options for the listings package.") ;;; listings.el ends here auctex-11.87/style/graphics.el0000644000000000000000000000030207211451225014775 0ustar rootroot;;; graphics.el --- Handle graphical commands in LaTeX 2e. ;;; Code: (TeX-add-style-hook "graphics" (function (lambda () (TeX-run-style-hooks "graphicx")))) ;;; graphics.el ends here. auctex-11.87/style/letter.el0000644000000000000000000001106411523530130014475 0ustar rootroot;;; letter.el - Special code for letter style. ;; Copyright (C) 1993 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: ;; You may want to define this in tex-site.el to contain your ;; organizations address. (defvar LaTeX-letter-sender-address "" "Initial value when prompting for a sender address in the letter style.") (TeX-add-style-hook "letter" (function (lambda () (LaTeX-add-environments '("letter" LaTeX-env-recipient)) (TeX-add-symbols '("name" "Sender: ") '("address" "Sender address: ") '("signature" "Signature: ") '("opening" "Opening: ") '("closing" "Closing: "))))) (defun LaTeX-env-recipient (environment) "Insert ENVIRONMENT and prompt for recipient and address." (let ((sender (read-string "Sender: " (user-full-name))) (sender-address (read-string "Sender address: " LaTeX-letter-sender-address)) (recipient (read-string "Recipient: ")) (address (read-string "Recipient address: ")) (signature (read-string "Signature: ")) (opening (read-string "Opening: ")) (closing (read-string "Closing: ")) (date (read-string "Date: " (LaTeX-today)))) (insert TeX-esc "name" TeX-grop sender TeX-grcl) (newline-and-indent) (if (not (zerop (length sender-address))) (progn (setq LaTeX-letter-sender-address sender-address) (insert TeX-esc "address" TeX-grop sender-address TeX-grcl) (newline-and-indent))) (if (not (zerop (length signature))) (progn (insert TeX-esc "signature" TeX-grop signature TeX-grcl) (newline-and-indent))) (if (not (zerop (length date))) (progn (insert TeX-esc "renewcommand" TeX-grop TeX-esc "today" TeX-grcl TeX-grop date TeX-grcl) (newline-and-indent))) (newline-and-indent) (let ((indentation (current-column))) (LaTeX-insert-environment environment (concat TeX-grop recipient (if (not (zerop (length address))) (concat (if (not (zerop (length recipient))) (concat " " TeX-esc TeX-esc " ")) address)) TeX-grcl)) (save-excursion ; Fix indentation of address (if (search-backward TeX-grcl nil 'move) (let ((addr-end (point-marker))) (if (search-backward TeX-grop nil 'move) (let ((addr-column (current-column))) (while (search-forward (concat TeX-esc TeX-esc) (marker-position addr-end) 'move) (progn (newline) (indent-to addr-column)))))))) (insert "\n") (indent-to indentation)) (insert TeX-esc "opening" TeX-grop (if (zerop (length opening)) (concat TeX-esc " ") opening) TeX-grcl "\n") (indent-relative-maybe) (save-excursion (insert "\n" TeX-esc "closing" TeX-grop (if (zerop (length closing)) (concat TeX-esc " ") closing) TeX-grcl "\n") (indent-relative-maybe)))) (defun LaTeX-today nil "Return a string representing todays date according to flavor." (interactive) (let ((ctime-string (current-time-string)) (month-alist '(("Jan". "01") ("Feb" . "02") ("Mar" . "03") ("Apr" . "04") ("May" . "05") ("Jun" . "06") ("Jul" . "07") ("Aug" . "08") ("Sep" . "09") ("Oct" . "10") ("Nov" . "11") ("Dec" . "12")))) (string-match "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" ctime-string) (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) (month (substring ctime-string (match-beginning 1) (match-end 1))) (day (substring ctime-string (match-beginning 2) (match-end 2)))) (if (assoc month month-alist) (progn (setq month (cdr (assoc month month-alist))) (if (> 2 (length day)) (setq day (concat "0" day))))) (format "%s-%s-%s" year month day)))) ;;; letter.el ends here auctex-11.87/style/jura.el0000644000000000000000000000215710751352552014156 0ustar rootroot;;; jura.el --- AUCTeX style for `jura.cls' ;; Copyright (C) 2004 Free Software Foundation, Inc. ;; Author: Frank Kster ;; Maintainer: auctex-devel@gnu.org ;; 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 `jura.cls'. ;;; Code: (TeX-add-style-hook "jura" (lambda () (TeX-run-style-hooks "alphanum"))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/style/swedish.el0000644000000000000000000000063211542463456014664 0ustar rootroot;;; swedish.el --- Setup AUCTeX for editing Swedish text. ;;; Commentary: ;; ;; Apparently the Swedes use ''this style'' quotations. (TeX-add-style-hook "swedish" (lambda () (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("swedish" "''" ,TeX-close-quote ,TeX-quote-after-quote))) (setq LaTeX-babel-hyphen-language "swedish") (run-hooks 'TeX-language-sv-hook))) auctex-11.87/style/pst-grad.el0000644000000000000000000000413111152100034014706 0ustar rootroot;;; pst-grad.el --- AUCTeX style for `pst-grad.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; Created: 21 Jun 2007 ;; Keywords: latex, pstricks, auctex, emacs ;; 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 `pst-grad.sty'. ;;; TODO: ;; ;; -- ;;; Code: ;;; Parameters (defvar LaTeX-pstgrad-parameters-name-list '("gradangle" "gradbegin" "gradend" "gradlines" "gradmidpoint" "gradientHSB" "GradientCircle" "GradientPos" "GradientScale") "A list of parameter names in pst-grad.") ;;; Aliases (defvaralias 'LaTeX-pst-gradbegin-list 'LaTeX-pst-color-list) (defvaralias 'LaTeX-pst-gradend-list 'LaTeX-pst-color-list) ;;; Hook (TeX-add-style-hook "pst-grad" (function (lambda () (TeX-run-style-hooks "pstricks") (unless (member "gradient" LaTeX-pst-fillstyle-list) (setq LaTeX-pst-fillstyle-list (append LaTeX-pst-fillstyle-list '("gradient"))) (setq LaTeX-pst-parameters-completion-regexp (concat (substring LaTeX-pst-parameters-completion-regexp 0 -2) "\\|gradbegin\\|gradend\\)"))) (make-local-variable 'LaTeX-pst-parameters-name-list) (setq LaTeX-pst-parameters-name-list (append LaTeX-pstgrad-parameters-name-list LaTeX-pst-parameters-name-list))))) ;;; pst-grad.el ends here auctex-11.87/style/frenchb.el0000644000000000000000000000442111542463456014625 0ustar rootroot;;; frenchb.el --- AUCTeX style for the `frenchb' babel option. ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2005-10-28 ;; 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: ;; Set up AUCTeX for editing French text. In particular for commands ;; provided by the `frenchb' option of the `babel' LaTeX package. The ;; `frenchb' option is equivalent to the `francais' option and since ;; babel version 3.7j with the `french' option. `french', however, is ;; ambiguous because another package by that name made by Bernard ;; Gaulle could be loaded. In order to avoid this, either `frenchb' ;; (or `francais') or `frenchle' (or `frenchPRO') should be used. See ;; the documentation of `frenchb' at ;; . ;;; Code: (TeX-add-style-hook "frenchb" (lambda () (TeX-add-symbols "og" "fg" "up" "ier" "iere" "iers" "ieres" "ieme" "iemes" '("bsc" t) "primo" "secundo" "tertio" "quarto" "No" "no" "degre" "degres" "DecimalMathComma" "StandardMathComma" '("nombre" "Nombre") "ThinSpaceInFrenchNumbers" "FrenchLayout" "StandardLayout") (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("french" "\\og " (lambda () (concat "\\fg" (unless (member "xspace" TeX-active-styles) "{}"))) ,TeX-quote-after-quote))) (run-hooks 'TeX-language-fr-hook))) ;;; frenchb.el ends here auctex-11.87/style/booktabs.el0000644000000000000000000000446610751352552015026 0ustar rootroot;;; booktabs.el -- AUCTeX style for booktabs.sty ;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2003-10-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 `booktabs.sty'. ;;; Code: (defun LaTeX-booktabs-arg-paren (optional prompt) "Prompt for a value and use parentheses when it is inserted. If OPTIONAL is non-nil the parameter is labeled as optional. PROMPT is the value of the prompt to be shown." (let ((< "\(") (> "\)")) (TeX-parse-argument optional prompt))) (TeX-add-style-hook "booktabs" (lambda () ;; New symbols (TeX-add-symbols '("toprule" [ "Thickness" ]) '("midrule" [ "Thickness" ]) '("bottomrule" [ "Thickness" ]) ;; FIXME: The qestion for the trim parameter will only be asked if ;; a value for the thickness parameter was given. Is this a ;; feature of `TeX-parse-arguments'? '("cmidrule" [ "Thickness" ] [ LaTeX-booktabs-arg-paren "Trim" ] "Column(s)") '("addlinespace" [ "Height" ]) '("morecmidrules") '("specialrule" "Thickness" "Space above" "Space below")) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("toprule" "[") ("midrule" "[") ("bottomrule" "[") ("cmidrule" "[({") ("addlinespace" "[") ("morecmidrules" "") ("specialrule" "{{{")) 'function)))) (defvar LaTeX-booktabs-package-options nil "Package options for the booktabs package.") ;;; booktabs.el ends here auctex-11.87/style/pdfsync.el0000644000000000000000000000610111036733740014653 0ustar rootroot;;; pdfsync.el --- AUCTeX style for `pdfsync.sty' ;; Copyright (C) 2005, 2008 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2005-12-28 ;; 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 `pdfsync.sty'. ;;; Code: (defun LaTeX-pdfsync-output-page () "Return page number in output file corresponding to buffer position." (let* ((line (TeX-line-number-at-pos)) (master (TeX-active-master)) (file (file-name-sans-extension (file-relative-name (buffer-file-name) (file-name-directory master)))) (pdfsync-file (concat master ".pdfsync")) (buf-live-p (get-file-buffer pdfsync-file)) (sync-record "0") (sync-line "-1") (sync-page "1") last-match) (when (file-exists-p pdfsync-file) (with-current-buffer (find-file-noselect pdfsync-file) (save-restriction (goto-char (point-min)) ;; Narrow region to file in question. (when (not (string= file master)) (re-search-forward (concat "^(" file "\\(.tex\\)?$") nil t) (let ((beg (match-beginning 0))) (goto-char beg) (narrow-to-region (line-beginning-position 2) (progn (forward-sexp) (point)))) (goto-char (point-min))) ;; Look for the record number. (catch 'break (while (re-search-forward "^(\\|^l \\([0-9]+\\) \\([0-9]+\\)" nil t) (cond ((string= (match-string 0) "(") (goto-char (match-beginning 0)) (forward-sexp)) ((> (string-to-number (match-string 2)) line) (throw 'break nil)) (t (setq sync-record (match-string 1) sync-line (match-string 2) last-match (match-beginning 0)))))) ;; Look for the page number. (goto-char (or last-match (point-min))) ;; There might not be any p or s lines for the current file, ;; so make it possible to search further. (widen) (catch 'break (while (re-search-forward "^p \\([0-9]+\\)" nil t) (when (>= (string-to-number (match-string 1)) (string-to-number sync-record)) (re-search-backward "^s \\([0-9]+\\)" nil t) (setq sync-page (match-string 1)) (throw 'break nil))))) ;; Kill the buffer if it was loaded by us. (unless buf-live-p (kill-buffer (current-buffer))))) sync-page)) (TeX-add-style-hook "pdfsync" (lambda () (setq TeX-source-correlate-output-page-function 'LaTeX-pdfsync-output-page))) ;;; pdfsync.el ends here auctex-11.87/style/francais.el0000644000000000000000000000250010751352552014773 0ustar rootroot;;; francais.el --- AUCTeX style for the `francais' babel option. ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2005-10-28 ;; 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: ;; Set up AUCTeX for editing French text. In particular for commands ;; provided by the `francais' option of the `babel' LaTeX package. As ;; this is equivalent to the `frenchb' option, this file only loads ;; `frenchb.el'. ;;; Code: (TeX-add-style-hook "francais" (lambda () (TeX-run-style-hooks "frenchb"))) ;;; francais.el ends here auctex-11.87/style/emp.el0000644000000000000000000000563011016206070013761 0ustar rootroot;;; emp.el --- AUCTeX support for emp.sty ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Yvon Henel aka TeXnicien de surface ;; Maintainer: auctex-devel@gnu.org ;; 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. ;; version 1.0 2004-03-04 ;;; Code: (TeX-add-style-hook "emp" (function (lambda () (TeX-add-symbols "empuse" "empTeX" "empaddtoTeX" "emprelude" "empaddtoprelude" "unitlength" ) (LaTeX-add-environments '("empfile" LaTeX-env-empfile) '("emp" LaTeX-env-emp-gen) '("empdef" LaTeX-env-emp-gen) '("empgraph" LaTeX-env-emp-gen) '("empcmds") )))) (defun LaTeX-env-emp-gen (environment-name) "Ask for file, width and length. Insert environment-name environment Used for emp, empdef, and empgraph environments." (let ((emp-fig-name (read-string "figure name: " "")) (emp-fig-width (read-string "figure width: " "1" )) (emp-fig-height (read-string "figure height: " "1" )) ;;; emp.sty demands a width and a height for each of the ;;; emp, empdef, and empgraph environments ;;; we give them 1 by default ;;; not necessarily the best thing to do? ) (if (not (zerop (length emp-fig-name))) (progn (setq LaTeX-emp-fig-name (concat LaTeX-optop emp-fig-name LaTeX-optcl)) (LaTeX-insert-environment environment-name LaTeX-emp-fig-name)) (LaTeX-insert-environment environment-name)) (forward-line -1) (end-of-line) (insert "(" emp-fig-width "," emp-fig-height ")") (forward-line 1) (indent-according-to-mode) )) (defun LaTeX-env-empfile (optional) "Ask for file. Insert empfile environment" (let ((empfile (read-string "empfile: " ""))) (if (not (zerop (length empfile))) (progn (setq LaTeX-emp-file-name (concat LaTeX-optop empfile LaTeX-optcl)) (setq mpost-emp-file-name (concat empfile ".mp")) (LaTeX-insert-environment "empfile" LaTeX-emp-file-name)) (progn (setq mpost-emp-file-name "\\jobname") (LaTeX-insert-environment "empfile"))) (if LaTeX-write18-enabled-p (progn (forward-line 1) (end-of-line) (newline-and-indent) (insert "\\immediate\\write18{mpost -tex=latex " mpost-emp-file-name TeX-grcl) (forward-line -2))))) ;;; emp.el ends here auctex-11.87/style/plhb.el0000644000000000000000000000166405523021747014144 0ustar rootroot;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty ;; $Id: plhb.el,v 1.1 1994/01/30 21:17:27 amanda Exp $ ;;; Commentary: ;; ;; `plhb.sty' use `"' to make next character Polish. ;; `plhb.sty' J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl ;;; Code: (defvar LaTeX-plhb-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `plhb.sty'.") (modify-syntax-entry ?\" "w" LaTeX-plhb-mode-syntax-table) (TeX-add-style-hook "plhb" (function (lambda () (set-syntax-table LaTeX-plhb-mode-syntax-table) (make-local-variable 'TeX-open-quote) (make-local-variable 'TeX-close-quote) (make-local-variable 'TeX-command-default) (make-local-variable 'TeX-quote-after-quote) (setq TeX-open-quote "\"<") (setq TeX-close-quote "\">") (setq TeX-quote-after-quote t) (setq TeX-command-default "plLaTeX") (run-hooks 'TeX-language-pl-hook)))) ;;; plhb.el ends here auctex-11.87/style/jbook.el0000644000000000000000000000033410216252636014312 0ustar rootroot;;; jbook.el - Special code for jbook style. ;; $Id: jbook.el,v 1.3 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "jbook" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; jbook.el ends here auctex-11.87/style/report.el0000644000000000000000000000034210216252636014520 0ustar rootroot;;; report.el - Special code for report style. ;; $Id: report.el,v 1.3 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "report" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; report.el ends here auctex-11.87/style/varioref.el0000644000000000000000000000432610751352550015030 0ustar rootroot;;; varioref.el --- AUCTeX style file with support for varioref.sty ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "varioref" (lambda () (TeX-add-symbols ;; The macros with label arguments '("vref" TeX-arg-label) '("vpageref" [ "Same page text" ] [ "different page text" ] TeX-arg-label) '("fullref" TeX-arg-label) ;; And the other macros used for customization "reftextbefore" "reftextfacebefore" "reftextafter" "reftextfaceafter" "reftextfaraway" "vreftextvario" "vrefwarning") ;; Install completion for labels (setq TeX-complete-list (append '(("\\\\vref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") ("\\\\vpageref\\(\\[[^]]*\\]\\)*{\\([^{}\n\r\\%,]*\\)" 2 LaTeX-label-list "}")) TeX-complete-list)))) (defvar LaTeX-varioref-package-options '("draft" "final" "afrikaans" "american" "austrian" "naustrian" "brazil" "breton" "catalan" "croatian" "czech" "danish" "dutch" "english" "esperanto" "finnish" "french" "galician" "german" "ngerman" "greek" "italian" "magyar" "norsk" "nynorsk" "polish" "portuges" "romanian" "russian" "slovak" "slovene" "spanish" "swedish" "turkish" "francais" "germanb") "Package options for the varioref package.") ;;; varioref.el ends here auctex-11.87/style/units.el0000644000000000000000000000317710751352551014361 0ustar rootroot;;; units.el --- AUCTeX style for the LaTeX package `units.sty' (v0.9b) ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Christian Schlauer ;; Maintainer: auctex-devel@gnu.org ;; 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 `units.sty'. ;;; Code: (TeX-add-style-hook "units" (lambda () (TeX-add-symbols '("unit" [ "Value" ] "Unit") '("unitfrac" [ "Value" ] "Unit in numerator" "Unit in denominator")) ;; units.sty requires the package nicefrac.sty, thus we enable the ;; macros of nicefrac.sty, too (TeX-run-style-hooks "nicefrac") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("unit" "[{") ("unitfrac" "[{{")) 'textual)))) (defvar LaTeX-units-package-options '("tight" "loose") "Package options for the units package.") ;;; units.el ends here auctex-11.87/style/url.el0000644000000000000000000000534310751352550014015 0ustar rootroot;;; url.el --- AUCTeX style for `url.sty' ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-10-13 ;; 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 `url.sty'. ;;; Code: (TeX-add-style-hook "url" (lambda () ;; New symbols (TeX-add-symbols "Url" "UrlBigBreakPenalty" "UrlBigBreaks" "UrlBreakPenalty" "UrlBreaks" "UrlFont" "UrlLeft" "UrlNoBreaks" "UrlOrds" "UrlRight" "UrlSpecials" "path" "url" "urldef" '("urlstyle" TeX-arg-urlstyle)) (add-to-list 'LaTeX-verbatim-macros-with-delims-local "path") (add-to-list 'LaTeX-verbatim-macros-with-delims-local "url") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "path") (add-to-list 'LaTeX-verbatim-macros-with-braces-local "url") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("path" "{") ("url" "{")) 'reference) (font-latex-add-keywords '(("Url" "") ("UrlBigBreakPenalty" "") ("UrlBigBreaks" "") ("UrlBreakPenalty" "") ("UrlBreaks" "") ("UrlFont" "") ("UrlLeft" "") ("UrlNoBreaks" "") ("UrlOrds" "") ("UrlRight" "") ("UrlSpecials" "") ("urldef" "") ("urlstyle" "{")) 'variable) ;; For syntactic fontification, e.g. verbatim constructs. (font-latex-set-syntactic-keywords) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)))) (defun TeX-arg-urlstyle (optional &optional prompt) "Prompt for style used in \\urlstyle with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Style") (mapcar 'list '("rm" "same" "sf" "tt")) nil t) optional)) (defvar LaTeX-url-package-options '("hyphens" "obeyspaces" "spaces" "LY1" "T1" "allowmove") "Package options for the url package.") ;;; url.el ends here auctex-11.87/style/jsbook.el0000644000000000000000000000034210216252636014474 0ustar rootroot;;; jsbook.el - Special code for jsbook style. ;; $Id: jsbook.el,v 1.2 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "jsbook" (lambda () (LaTeX-largest-level-set "chapter"))) ;;; jsbook.el ends here auctex-11.87/style/icelandic.el0000644000000000000000000000345311542463456015135 0ustar rootroot;;; icelandic.el --- AUCTeX style for the `icelandic' babel option. ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-03-11 ;; 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: ;; Set up AUCTeX for editing Icelandic text in connection with the ;; `icelandic' babel option. ;;; Code: (defvar LaTeX-icelandic-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `icelandic.sty'.") (modify-syntax-entry ?\" "w" LaTeX-icelandic-mode-syntax-table) (TeX-add-style-hook "icelandic" (lambda () (set-syntax-table LaTeX-icelandic-mode-syntax-table) (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language '("icelandic" "\"`" "\"'" t))) (setq LaTeX-babel-hyphen-language "icelandic") ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\"<" "\">" french))) (run-hooks 'TeX-language-is-hook))) ;;; icelandic.el ends here auctex-11.87/style/natbib.el0000644000000000000000000001041211442646776014461 0ustar rootroot;;; natbib.el --- Style hook for the natbib package ;; Copyright (C) 1997, 1998, 2004, 2007 Free Software Foundation, Inc. ;; Authors: Berwin Turlach ;; Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "natbib" (function (lambda () ;; The number in the cdr of the following list indicates how many ;; optional note arguments we consider useful. Prompting for those ;; arguments will still depend upon `TeX-arg-cite-note-p'. (let ((citecmds '(("cite" . 0) ("citet" . 1) ("citet*" . 1) ("citealt" . 1) ("citealt*" . 1) ("citep" . 2) ("citep*" . 2) ("citealp" . 2) ("citealp*" . 2) ("citeauthor" . 0) ("citeauthor*" . 0) ("citefullauthor" . 0) ("citeyear" . 0) ("citeyearpar" . 0) ("shortcites" . 0)))) ;; Add these symbols (apply 'TeX-add-symbols (mapcar (lambda (cmd) (cond ((= (cdr cmd) 0) ;; No optional arguments (list (car cmd) 'TeX-arg-cite)) ((= (cdr cmd) 1) ;; Just one optional argument, the post note (list (car cmd) '(TeX-arg-conditional TeX-arg-cite-note-p (["Post-note"]) nil) 'TeX-arg-cite)) ((= (cdr cmd) 2) ;; Pre and post notes (list (car cmd) '(TeX-arg-conditional TeX-arg-cite-note-p (natbib-note-args) nil) 'TeX-arg-cite)))) citecmds)) ;; Add the other symbols (TeX-add-symbols '("citetext" "Text") '("bibpunct" ["Post note separator"] "Opening bracket" "Closing bracket" "Punctuation between multiple citations" "style [n]umeric [s]uperscript [a]uthor-year" "Punctuation between author and year" "Punctuation between years for common authors") '("citestyle" "Style") '("citeindextrue") '("citeindexfalse") '("citeindextype")) ;; Make an entry in TeX-complete-list (add-to-list 'TeX-complete-list (list (concat "\\\\\\(" (mapconcat (lambda (x) (regexp-quote (car x))) citecmds "\\|") "\\)\\(\\[[^]\n\r\\%]*\\]\\)*{\\([^{}\n\r\\%,]*,\\)*\\([^{}\n\r\\%,]*\\)") 4 'LaTeX-bibitem-list "}"))) ;; Fontification (when (and (fboundp 'font-latex-add-keywords) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("cite" "*[[{") ("citet" "*[[{") ("citealt" "*[[{") ("citep" "*[[{") ("citealp" "*[[{") ("citeauthor" "*[[{") ("citefullauthor" "[[{") ("citeyear" "[[{") ("citeyearpar" "[[{") ("shortcites" "{")) 'reference)) ;; Tell RefTeX (if (fboundp 'reftex-set-cite-format) (reftex-set-cite-format 'natbib))))) (defun natbib-note-args (optional &optional prompt definition) "Prompt for two note arguments a natbib citation command." (if TeX-arg-cite-note-p (let* ((pre (read-string (TeX-argument-prompt optional optional "Pre-note"))) (post (read-string (TeX-argument-prompt optional optional "Post-note")))) (if (not (string= pre "")) (insert "[" pre "]")) (if (not (string= post "")) (insert "[" post "]") ;; Make sure that we have an empty post note if pre is not empty (if (string= pre "") (insert "[]")))))) (defvar LaTeX-natbib-package-options '("numbers" "super" "authoryear" "round" "square" "angle" "curly" "comma" "colon" "nobibstyle" "bibstyle" "openbib" "sectionbib" "sort" "sort&compress" "longnamesfirst" "nonamebreak") "Package options for the natbib package.") ;; natbib.el ends here auctex-11.87/style/article.el0000644000000000000000000000034610216252636014634 0ustar rootroot;;; article.el - Special code for article style. ;; $Id: article.el,v 1.4 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "article" (lambda () (LaTeX-largest-level-set "section"))) ;;; article.el ends here auctex-11.87/style/polish.el0000644000000000000000000000333011542463456014512 0ustar rootroot;;; polish.el --- AUCTeX style for the `polish' babel option. ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-01-08 ;; 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: ;; Set up AUCTeX for editing Polish text in connection with the ;; `polish' babel option. ;;; Code: (defvar LaTeX-polish-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `polish.sty'.") (modify-syntax-entry ?\" "w" LaTeX-polish-mode-syntax-table) (TeX-add-style-hook "polish" (lambda () (set-syntax-table LaTeX-polish-mode-syntax-table) (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language '("polish" "\"`" "\"'" t))) ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\"<" "\">" french))) (run-hooks 'TeX-language-pl-hook))) ;;; polish.el ends here auctex-11.87/style/prosper.el0000644000000000000000000001363311016206071014675 0ustar rootroot;;; prosper.el --- Prosper style file for AUCTeX ;; Copyright (C) 2001, 2002 by Philip Lord, Nevin Kapur ;; Authors: Phillip Lord ;; Nevin Kapur ;; Keywords: tex, wp, prosper ;; Version: 0.6 ;; URL: http://www.mts.jhu.edu/~kapur/emacs/prosper.el ;; This 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. ;;; Commentary: ;; This is a propser (http://prosper.sourceforge.net/) style file for ;; AUCTeX. ;;; Installation: ;; ;; For this file to work you need to have a working installation of ;; AucTeX. After that installtion is simple. Put this file into one of ;; the directories specified in `TeX-style-path', with the name ;; "style" rather than "auto" as it might get over written in the ;; latter. ;; ;; Then stick the current for into your .emacs ;; (eval-after-load "latex" ;; '(add-to-list 'LaTeX-style-list '("prosper"))) ;; ;; ;; And that should be it. You check whether it's worked or not by ;; opening a prosper document, and trying `LaTeX-environment'. "slide" ;; should be available by tab completion and it should ask you about ;; overlays. ;; ;; The environment "prosper" should be inserted immediately after the ;; document environment. It will prompt you for options available ;; under prosper and create a skeleton document. ;;; Bugs: ;; ;; Currently the documentclass expansion doesn't work, unless you ;; enter a documentclass line to let auctex know which style files to ;; load. Then delete this and do it again. Not good. I know no way ;; around this. ;;; Code: ;; Constants: ;;;; This is partly working now, and it a little neater than it ;;;; was. The main problem is that the redefinition of "documentclass" ;;;; does not happen until its all too late, so that stuff never ;;;; happens correctly. This is easy enough to fix by fiddling with ;;;; auctex. I shall have to download the latest version, and see if ;;;; its already been fixed. (defconst LaTeX-prosper-version "$Id: prosper.el,v 1.5 2008/05/25 06:50:33 angeli Exp $" "prosper.el version.") (defconst LaTeX-prosper-transition-styles '("Split" "Blinds" "Box" "Wipe" "Dissolve" "Glitter" "Replace") "List of transition styles provided by prosper.") (defconst LaTeX-prosper-slide-styles '("alienglow" "autumn" "azure" "contemporain" "darkblue" "default" "frames" "lignesbleues" "nuancegris" "troispoints" "alcatel" "gyom" "pascal" "rico" )) (defun LaTeX-prosper-insert-title (optional) (newline) (mapc (lambda(f) (TeX-insert-macro f) (newline)) '("title" "subtitle" "author" "email" "institution" "slideCaption" "Logo" "DefaultTransition")) (LaTeX-insert-environment "document") (TeX-insert-macro "maketitle")) ;; Utility functions (defun LaTeX-prosper-arg-pdftransition (environment) (let ((default (if (boundp 'LaTeX-prosper-transition-history) (car LaTeX-prosper-transition-history) "Replace"))) (TeX-argument-insert (completing-read (TeX-argument-prompt nil (format "Transition (Default %s) " default) t) (mapcar 'list LaTeX-prosper-transition-styles) nil t nil 'LaTeX-prosper-transition-history default) nil))) (defun LaTeX-prosper-slide-style-prompt() (completing-read "Slide Style?" (mapcar 'list LaTeX-prosper-slide-styles) nil nil nil nil "default" )) (defun LaTeX-prosper-insert-options(environment) (insert "[" ) (insert (LaTeX-prosper-slide-style-prompt) " ") (mapc (lambda(f) (if (y-or-n-p (car f)) (insert (car (cdr f)) " "))) '(("Draft?" "draft") ("Color Slides?" "slideColor") ("Disable running total on each slide?" "nototal") ("Is the final version going to be PDF?" "pdf") ("Are you going to use Adobe Distiller" "distiller"))) (delete-char -1) (insert "]")) (defun LaTeX-prosper-insert-slide (environment) (if (y-or-n-p "Surround with overlay ?") (progn (TeX-insert-macro "overlays") (if (search-backward "{" 0 t) (progn (goto-char (+ 1 (point))) (insert "%\n"))))) (let ((title (read-string "Title: "))) (LaTeX-insert-environment "slide" (concat TeX-grop title TeX-grcl)))) ;; AUCTeX configuration (TeX-add-style-hook "prosper" (function (lambda () (LaTeX-add-environments '("slide" LaTeX-prosper-insert-slide) '("itemstep" LaTeX-env-item) '("Itemize" LaTeX-env-item)) (TeX-add-symbols '("documentclass" LaTeX-prosper-insert-options LaTeX-prosper-insert-title) '("title" "Title of the presentation") '("subtitle" "Subtitle of the presentation") '("author" "Author name") '("email" "Author email") '("institution" "Author institution") '("slideCaption" "Caption for slide") '("Logo" "Logo") '("displayVersion" TeX-arg-free) '("DefaultTransition" LaTeX-prosper-arg-pdftransition) '("NoFrenchBabelItemize" TeX-arg-free) '("part" LaTeX-prosper-arg-part) '("overlays" "Number of overlays" t) '("FontTitle" "Color slides" "Black & White Slides") '("FontText" "Color slides" "Black & White Slides") '("fontTitle" "Text") '("fontText" "Text") '("ColorFoot" "Color") '("PDFtransition" LaTeX-prosper-arg-pdftransition) '("myitem" "Level" "Definition") '("fromSlide" "Number" t) '("fromSlide*" "Number" t) '("onlySlide" "Number" t) '("onlySlide*" "Number" t) '("OnlySlide" "Number") '("UntilSlide" "Number") '("untilSlide*" "Number") '("PDForPS" TeX-arg-conditional) '("onlyInPS" t) '("onlyInPDF" t) '("FromSlide" "Number"))))) ;;; prosper.el ends here auctex-11.87/style/scrlttr2.el0000644000000000000000000001666410751352551015003 0ustar rootroot;;; scrlttr2.el --- AUCTeX style for scrlttr2.cls. ;; Copyright (C) 2002, 2007 Free Software Foundation ;; Author: Mark Trettin ;; Created: 2002-10-26 ;; 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 `scrlttr2.cls'. ;; Since I just recently switched from `g-brief.cls' to the ;; KOMA-Script letter class *and* I don't really write many ;; snailmails, there are probably some superflous macros included and ;; important ones left out. Comments appreciated. ;; I left out any length and positioning macros since those should be ;; set in a personal `*.lco'-File. IMHO. ;;; Code (TeX-add-style-hook "scrlttr2" (lambda () (TeX-add-symbols '("AtBeginLetter" t) '("KOMAoptions" t) '("LetterOptionNeedsPapersize" "Name of lco file" "Paper size") '("LoadLetterOption" "Name of lco file") '("addrchar" "Initial letter") '("addrentry" "Lastname" "Firstname" "Address" "Telephone" "F1" "F2" "F3" "F4" "Key") '("addtokomafont" TeX-arg-KOMA-scrlttr-fontelements t) '("addtolengthplength" [ "Factor" ] "Name of length" "Name of pseudo length") '("addtoreffields" TeX-arg-KOMA-scrlttr-vars) '("adrchar" "Initial letter") '("adrentry" "Lastname" "Firstname" "Address" "Telephone" "F1" "F2" "Comment" "Key") '("bankname" t) '("captionsUKenglish" nil) '("captionsUSenglish" nil) '("captionsamerican" nil) '("captionsaustrian" nil) '("captionsbritish" nil) '("captionscroatian" nil) '("captionsdutch" nil) '("captionsenglish" nil) '("captionsfrench" nil) '("captionsgerman" nil) '("captionsitalian" nil) '("captionsngerman" nil) '("captionsspanish" nil) '("cc" t) '("ccname" t) '("cleardoubleemptypage") '("cleardoubleplainpage") '("cleardoublestandardpage") '("closing" "Closing Phrase") '("customername" t) '("dateUKenglish" nil) '("dateUSenglish" nil) '("dateamerican" nil) '("dateaustrian" nil) '("datebritish" nil) '("datecroatian" nil) '("datedutch" nil) '("dateenglish" nil) '("datefrench" nil) '("dategerman" nil) '("dateitalian" nil) '("datename" t) '("datengerman" nil) '("datespanish" nil) '("emailname" t) '("encl" t) '("enclname" t) '("faxname" t) '("firstfoot" t) '("firsthead" t) '("headfromname" t) '("headtoname" t) '("ifkomavarempty" TeX-arg-KOMA-scrlttr-vars 2) '("ifkomavarempty*" TeX-arg-KOMA-scrlttr-vars 2) '("invoicename" t) '("myrefname" t) '("newcaptionname" "Language" "Term" "Definition") '("newkomavar" [ "Description" ] "Name") '("newkomavar*" [ "Description" ] "Name") '("nextfoot" t) '("nexthead" t) '("opening" "Opening") '("pagename" t) '("phonename" t) '("providecaptionname" "Language" "Term" "Definition") '("ps") '("raggedsignature" nil) '("renewcaptionname" "Language" "Term" "Definition") '("setkomafont" TeX-arg-KOMA-scrlttr-fontelements t) '("setkomavar" TeX-arg-KOMA-scrlttr-vars [ "Description" ] t) '("setkomavar*" TeX-arg-KOMA-scrlttr-vars "Description") '("setlengthtoplength" [ "Factor" ] "Name of length" "Name of pseudo length") '("subjectname" t) '("usekomafont" TeX-arg-KOMA-scrlttr-fontelements) '("usekomavar" [ "Command" ] TeX-arg-KOMA-scrlttr-vars) '("usekomavar*" [ "Command" ] TeX-arg-KOMA-scrlttr-vars) '("useplength" "Name") '("wwwname" t) '("yourmailname" t) '("yourrefname" t)) (LaTeX-add-environments '("letter" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((options (read-string "Optional options: ")) (recip (read-string "Recipient: "))) (concat (if (not (zerop (length options))) (format "[%s]" options)) (format "{%s}" recip))))))) ;; Definitions for font-latex (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; Textual keywords (font-latex-add-keywords '(("addrentry" "{{{{{{{{{") ("adrentry" "{{{{{{{{") ("bankname" "{") ("cc" "{") ("ccname" "{") ("closing" "{") ("customername" "{") ("datename" "{") ("emailname" "{") ("encl" "{") ("enclname" "{") ("faxname" "{") ("firstfoot" "{") ("firsthead" "{") ("headfromname" "{") ("headtoname" "{") ("invoicename" "{") ("myrefname" "{") ("nextfoot" "{") ("nexthead" "{") ("opening" "{") ("pagename" "{") ("phonename" "{") ("ps" "") ("subjectname" "{") ("wwwname" "{") ("yourmailname" "{") ("yourrefname" "{")) 'textual) ;; Function keywords (font-latex-add-keywords '(("AtBeginLetter" "{") ("LetterOptionNeedsPapersize" "{{") ("LoadLetterOption" "{") ("addrchar" "{") ("adrchar" "{") ("ifkomavarempty" "*{{{")) 'function) ;; Variable keywords (font-latex-add-keywords '(("KOMAoptions" "{") ("addtokomafont" "{{") ("addtolengthplength" "[{{") ("addtoreffields" "{") ("newcaptionname" "{{{") ("newkomavar" "*[{") ("providecaptionname" "{{{") ("renewcaptionname" "{{{") ("setkomafont" "{{") ("setkomavar" "*{[{") ("setlengthtoplength" "[{{") ("usekomafont" "{") ("usekomavar" "*[{") ("useplength" "{")) 'variable) ;; Warning keywords (font-latex-add-keywords '("cleardoublestandardpage" "cleardoubleplainpage" "cleardoubleemptypage") 'warning)))) (defun TeX-arg-KOMA-scrlttr-vars (optional &optional prompt) "Prompt for KOMA-Script's scrlttr2 predefined variables with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Variable") '(("") ("backaddress") ("backaddressseparator") ("ccseparator") ("customer") ("date") ("emailseparator") ("enclseparator") ("faxseparator") ("frombank") ("fromaddress") ("fromemail") ("fromfax") ("fromlogo") ("fromname") ("fromphone") ("fromurl") ("invoice") ("location") ("myref") ("place") ("placeseparator") ("phoneseparator") ("signature") ("specialmail") ("subject") ("subjectseparator") ("title") ("toname") ("toaddress") ("yourmail") ("yourref")) nil nil) optional)) (defun TeX-arg-KOMA-scrlttr-fontelements (optional &optional prompt) "Prompt for KOMA-Script's scrlttr2 fontelements with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Element") '(("") ("backaddress") ("descriptionlabel") ("fromaddress") ("fromname") ("pagefoot") ("pagehead") ("pagenumber") ("subject") ("title")) nil t) optional)) ;;; scrlttr2.el ends here auctex-11.87/style/amstext.el0000644000000000000000000000053510326661055014677 0ustar rootroot;;; amstext.el --- Style hook for the AMS-LaTeX amstext package. ;;; ;;; AUTHOR: Carsten Dominik ;;; Code: (TeX-add-style-hook "amstext" (function (lambda () (TeX-add-symbols '("text" t))))) (defvar LaTeX-amstext-package-option nil "Package options for the amstext package.") ;;; amstext.el ends here. auctex-11.87/style/scrartcl.el0000644000000000000000000000124310216252636015023 0ustar rootroot;;; -*- emacs-lisp -*- ;;; scrartcl.el -- AUCTeX style for scrartcl.cls ;; Copyright (C) 2002, 2005 Free Software Foundation ;; License: GPL, see the file COPYING in the base directory of AUCTeX ;; Author: Mark Trettin ;; Created: 2002-09-26 ;; Version: $Id: scrartcl.el,v 1.4 2005/03/17 10:02:06 angeli Exp $ ;; Keywords: tex ;;; Commentary: ;; This file adds support for `scrartcl.cls'. This file needs ;; `scrbase.el'. ;; This file is part of AUCTeX. ;;; Code: (TeX-add-style-hook "scrartcl" (lambda () (LaTeX-largest-level-set "section") ;; load basic definitons (TeX-run-style-hooks "scrbase"))) ;;; scrartcl.el ends here auctex-11.87/style/polski.el0000644000000000000000000000324211542463456014517 0ustar rootroot;;; polski.el --- AUCTeX style for `polski.sty'. ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-01-11 ;; 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: ;; Set up AUCTeX for editing Polish text in connection with ;; `polski.sty'. ;;; Code: (defvar LaTeX-polski-package-options '("plmath" "nomathsymbols" "MeX" "T1" "QX" "OT1" "OT4" "prefixinginverb" "noprefixinginverb" "roku" "r." "noroku") "Package options for polski.sty.") (TeX-add-style-hook "polski" (lambda () (TeX-add-symbols ;; Dashes "dywiz" "pauza" "ppauza") ;; Quotation marks (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language '("polski" ",," "''" t))) ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '(",," "''"))) (run-hooks 'TeX-language-pl-hook))) ;;; polski.el ends here auctex-11.87/style/CJKutf8.el0000644000000000000000000000220211130162461014410 0ustar rootroot;;; CJKutf8.el --- AUCTeX style for the CJKutf8 package. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-01-04 ;; 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 the CJKutf8 package. ;;; Code: (TeX-add-style-hook "CJKutf8" (lambda () (TeX-run-style-hooks "CJK"))) ;;; CJKutf8.el ends here auctex-11.87/style/bulgarian.el0000644000000000000000000000350411542463456015163 0ustar rootroot;;; bulgarian.el --- AUCTeX style for the `bulgarian' babel option. ;; Copyright (C) 2008 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2008-06-28 ;; 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: ;; Set up AUCTeX for editing Bulgarian text in connection with the ;; `bulgarian' babel option. ;;; Code: (defvar LaTeX-bulgarian-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `bulgarian.sty'.") (modify-syntax-entry ?\" "w" LaTeX-bulgarian-mode-syntax-table) (TeX-add-style-hook "bulgarian" (lambda () (set-syntax-table LaTeX-bulgarian-mode-syntax-table) (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("bulgarian" "\"`" "\"'" ,TeX-quote-after-quote))) (setq LaTeX-babel-hyphen-language "bulgarian") ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"`" "\"'")) (font-latex-add-quotes '("\"<" "\">" french))) (run-hooks 'TeX-language-bg-hook))) ;;; bulgarian.el ends here auctex-11.87/style/csquotes.el0000644000000000000000000002272410751352552015065 0ustar rootroot;;; csquotes.el --- AUCTeX style for `csquotes.sty' ;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-11-29 ;; 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 `csquotes.sty', version 3.7. ;;; Code: ;; FIXME: It would be nice to be able to dump this function in favor ;; of a generalized handling of additional arguments for environments ;; specified via `LaTeX-add-environments'. `TeX-parse-arguments' and ;; friends would be the functions to be used for that, but those ;; functions currently insert text directly into the buffer. There ;; would either have to be a way of preventing this and letting them ;; return a string, or the insertion could happen in a temporary buffer ;; and the buffer content be returned. (defun LaTeX-csquotes-insert-environment (env &rest args) "Insert environment ENV considering optional arguments ARGS. This is basically a variant of `LaTeX-environment-menu' specialized for csquotes.el. ARGS can be made up of strings and vectors containing single strings. Plain strings will be used as prompts for mandatory arguments and strings in vectors as prompts for optional arguments of the environment to be inserted. That means, in contrast to `LaTeX-environment-menu' it supports the insertion of optional arguments." (let (env-extra prompt optional user-input) (dolist (elt args) (if (vectorp elt) (setq prompt (aref elt 0) optional t) (setq prompt elt optional nil)) (setq user-input (read-string (TeX-argument-prompt optional prompt nil))) (unless (and optional (zerop (length user-input))) (setq env-extra (concat env-extra (if optional LaTeX-optop TeX-grop) user-input (if optional LaTeX-optcl TeX-grcl))))) (LaTeX-insert-environment env env-extra))) (TeX-add-style-hook "csquotes" (lambda () (let ((quote-style-variant-list '(("quotes") ("guillemets") ("american") ("british") ("oldstyle") ("imprimerie") ("swiss"))) (quote-style-name-list '(("danish") ("dutch") ("english") ("finnish") ("french") ("german") ("italian") ("norwegian") ("swedish")))) ;; New symbols (TeX-add-symbols '("enquote" 1) '("enquote*" 1) '("foreignquote" 2) '("foreignquote*" 2) '("hyphenquote" 2) '("hyphenquote*" 2) '("textquote" ["Citation"] ["Punctuation"] t) '("textquote*" ["Citation"] ["Punctuation"] t) '("foreigntextquote" "Language" ["Citation"] ["Punctuation"] t) '("foreigntextquote*" "Language" ["Citation"] ["Punctuation"] t) '("hyphentextquote" "Language" ["Citation"] ["Punctuation"] t) '("hyphentextquote*" "Language" ["Citation"] ["Punctuation"] t) '("blockquote" ["Citation"] ["Punctuation"] t) '("foreignblockquote" "Language" ["Citation"] ["Punctuation"] t) '("hyphenblockquote" "Language" ["Citation"] ["Punctuation"] t) `("setquotestyle" [ (TeX-arg-eval completing-read "Quote style variant: " ',quote-style-variant-list) ] (TeX-arg-eval completing-read "Quote style name or alias: " ',quote-style-name-list)) "setquotestyle*" '("MakeInnerQuote" "Character") '("MakeOuterQuote" "Character") '("MakeAutoQuote" "Opening quotation mark" "Closing quotation mark") '("MakeAutoQuote*" "Opening quotation mark" "Closing quotation mark") '("MakeForeignQuote" "Babel's language name" "Opening quotation mark" "Closing quotation mark") '("MakeForeignQuote*" "Babel's language name" "Opening quotation mark" "Closing quotation mark") '("MakeHyphenQuote" "Babel's language name" "Opening quotation mark" "Closing quotation mark") '("MakeHyphenQuote" "Babel's language name" "Opening quotation mark" "Closing quotation mark") '("MakeBlockQuote" "Opening quotation mark" "Delimiter for citation" "Closing quotation mark") '("MakeForeignBlockQuote" "Language" "Opening quotation mark" "Delimiter for citation" "Closing quotation mark") '("MakeHyphenBlockQuote" "Language" "Opening quotation mark" "Delimiter for citation" "Closing quotation mark") "EnableQuotes" "DisableQuotes" "VerbatimQuotes" "DeleteQuotes" '("textcquote" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("textcquote*" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("foreigntextcquote" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("foreigntextcquote*" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("hyphentextcquote" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("hyphentextcquote*" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("blockcquote" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("foreignblockcquote" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) '("hyphenblockcquote" "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"] t) `("DeclareQuoteStyle" [ (TeX-arg-eval completing-read "Quote style variant: " ',quote-style-variant-list) ] (TeX-arg-eval completing-read "Quote style name: " ',quote-style-name-list) ["Outer quote initialization"] ["Inner quote initialization"] "Opening outer quotation mark" ["Middle outer quotation mark"] "Closing outer quotation mark" ["Kerning between adjoining marks"] "Opening inner quotation mark" ["Middle inner quotation mark"] "Closing inner quotation mark") `("DeclareQuoteAlias" [ (TeX-arg-eval completing-read "Quote style variant: " ',quote-style-variant-list) ] (TeX-arg-eval completing-read "Quote style name: " ',quote-style-name-list) "Alias name") '("DeclareQuoteOption" 1) '("ExecuteQuoteOptions" 1) '("DeclarePlainStyle" "Opening outer quotation mark" "Closing outer quotation mark" "Opening inner quotation mark" "Closing inner quotation mark") '("SetBlockThreshold" "Number of lines") '("SetBlockEnvironment" "Environment") '("SetCiteCommand" "Command") "mkcitation" "mkccitation" "mkpreblockpunct" "mkmidblockpunct" "mkfinblockpunct" "mkpretextpunct" "mkmidtextpunct" "mkfintextpunct" "mkpredisppunct" "mkmiddisppunct" "mkfindisppunct" '("ifblockquote" 2) '("ifquotepunct" 2) '("ifquoteterm" 2) '("ifquoteperiod" 2) '("ifquotecomma" 2) '("ifquotesemicolon" 2) '("ifquotecolon" 2) '("ifquoteexclam" 2) '("ifquotequestion" 2) '("ifstringblank" 2) '("BlockquoteDisable" 1)) ;; New environments (LaTeX-add-environments "quoteblock" "quotetext" '("displayquote" LaTeX-csquotes-insert-environment ["Citation"] ["Punctuation"]) '("foreigndisplayquote" LaTeX-csquotes-insert-environment "Language" ["Citation"] ["Punctuation"]) '("hyphendisplayquote" LaTeX-csquotes-insert-environment "Language" ["Citation"] ["Punctuation"]) '("displaycquote" LaTeX-csquotes-insert-environment ["Pre-note"] ["Post-note"] "Key" ["Punctuation"]) '("foreigndisplaycquote" LaTeX-csquotes-insert-environment "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"]) '("hyphendisplaycquote" LaTeX-csquotes-insert-environment "Language" ["Pre-note"] ["Post-note"] "Key" ["Punctuation"])) ;; Quotation marks (when (and (> (length LaTeX-csquotes-open-quote) 0) (> (length LaTeX-csquotes-close-quote) 0)) (setq TeX-quote-language `(override ,LaTeX-csquotes-open-quote ,LaTeX-csquotes-close-quote ,LaTeX-csquotes-quote-after-quote))) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("DisableQuotes" "") ("RestoreQuotes" "")) 'function) (font-latex-add-keywords '(("enquote" "*{") ("foreignquote" "*{{") ("hyphenquote" "*{{") ("textcquote" "*[[{[{") ("foreigntextcquote" "*{[[{[{") ("hyphentextcquote" "*{[[{[{") ("textquote" "*[[{") ("foreigntextquote" "*{[[{") ("hyphentextquote" "*{[[{") ("blockquote" "[[{") ("foreignblockquote" "{[[{") ("hyphenblockquote" "{[[{") ("blockcquote" "[[{[{") ("foreignblockcquote" "{[[{[{") ("hyphenblockcquote" "{[[{[{")) 'textual) (font-latex-add-keywords '(("setquotestyle" "[{") ("MakeOuterQuote" "{") ("MakeInnerQuote" "{") ("MakeAutoQuote" "*{{") ("MakeForeignQuote" "*{{{") ("MakeHyphenQuote" "*{{{") ("MakeBlockQuote" "{{{") ("MakeForeignBlockQuote" "{{{{") ("MakeHyphenBlockQuote" "{{{{") ("DeclareQuoteStyle" "[{[[{[{[{[{") ("DeclareQuoteAlias" "[{{") ("DeclareQuoteOption" "{") ("DeclarePlainStyle" "{{{{") ("SetBlockThreshold" "{") ("SetBlockEnvironment" "{") ("SetCiteCommand" "{")) 'variable))))) ;;; csquotes.el ends here auctex-11.87/style/czech.el0000644000000000000000000000041011542463456014304 0ustar rootroot;;; czech.el --- Setup AUCTeX for editing Czech text. (TeX-add-style-hook "czech" (lambda () (unless (eq (car TeX-quote-language) 'override) (setq TeX-quote-language `("czech" "\\uv{" "}" ,TeX-quote-after-quote))) (run-hooks 'TeX-language-cz-hook))) auctex-11.87/style/pst-plot.el0000644000000000000000000001142611152077655015002 0ustar rootroot;;; pst-plot.el --- AUCTeX style for `pst-plot.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; Created: 21 Jun 2007 ;; Based on: Jean-Philippe Georget's pst-plot.el ;; Keywords: latex, pstricks, auctex, emacs ;; 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 `pst-plot.sty'. ;;; TODO: ;; ;; -- improve symbol support (especially the pstScalePoints macros) ;; -- check for multido.el necessity ;;; Code: ;; Self Parsing -- see (info "(auctex)Hacking the Parser") (defvar LaTeX-auto-pstplot-regexp-list '(("\\\\\\(save\\|read\\)data{?\\(\\\\[a-zA-Z]+\\)}?" 2 LaTeX-auto-pstplot)) "List of regular expressions to extract arguments of \\*data macros.") (defvar LaTeX-auto-pstplot nil "Temporary for parsing \\*data definitions.") (defun LaTeX-pstplot-cleanup () "Move symbols from `LaTeX-auto-pstplot to `TeX-auto-symbol'." (mapcar (lambda (symbol) ;; (setq TeX-symbol-list (cons (list symbol 0) TeX-symbol-list)) ;; (setq TeX-auto-symbol (cons (list symbol 0) TeX-auto-symbol))) (add-to-list 'LaTeX-pstplot-datasets symbol)) LaTeX-auto-pstplot)) (defun LaTeX-pstplot-prepare () "Clear `LaTeX-auto-pstplot' before use." (setq LaTeX-auto-pstplot nil)) (add-hook 'TeX-auto-prepare-hook 'LaTeX-pstplot-prepare) (add-hook 'TeX-auto-cleanup-hook 'LaTeX-pstplot-cleanup) ;;; Parameters (defvar LaTeX-pstplot-datasets nil "List of parsed data sets defined with \\savedata or \\readdata.") (defvar LaTeX-pstplot-parameters-name-list '("axesstyle" "labels" "plotpoints" "plotstyle" "showorigin" "ticks" "ticksize" "tickstyle") "A list of parameters' name in pst-plot.") (defvar LaTeX-pst-ticks-list '(t "none" "all" "x" "y") "A list of values for ticks in pst-plot.") (defvaralias 'LaTeX-pst-labels-list 'LaTeX-pst-ticks-list) (defvar LaTeX-pst-plotstyle-list '(t "dots" "line" "polygon" "curve" "ecurve" "ccurve") "A list of values for tickstyles in pst-plot.") (defvar LaTeX-pst-tickstyle-list '(t "full" "top" "bottom") "A list of values for tickstyles in pst-plot.") (defvar LaTeX-pst-axesstyle-list '(t "axes" "frame" "none") "A list of values for axesstyles in pst-plot.") ;;; Macros (defun LaTeX-pst-macro-psaxes (optional &optional arg) "Return \\psaxes arguments after querying." (let* ((cpref (if current-prefix-arg (car current-prefix-arg) 0)) (arrows (LaTeX-pst-arrows)) (pnt1 (if (> cpref 4) (LaTeX-pst-point) nil)) (pnt2 (if (> cpref 0) (LaTeX-pst-point) nil)) (pnt3 (LaTeX-pst-point))) ;; insert \psaxes arguments (insert (if arrows (format "{%s}" arrows) "") (if pnt1 (format "(%s)" pnt1) "") (if pnt2 (format "(%s)" pnt2) "") "(" pnt3 ")"))) ;;; Derived defuns (defun LaTeX-pstplot-datasets-read () (TeX-arg-compl-list "Datasets" LaTeX-pstplot-datasets)) ;;; Hook (TeX-add-style-hook "pst-plot" (function (lambda () (mapcar 'TeX-auto-add-regexp LaTeX-auto-pstplot-regexp-list) (TeX-add-symbols '("readdata" "Macro Name" TeX-arg-file) '("savedata" "Macro Name" ["Values"]) '("dataplot" ["Options"] (TeX-arg-eval LaTeX-pstplot-datasets-read)) '("fileplot" ["Options"] TeX-arg-file) '("listplot" ["Options"] "Values") '("pstScalePoints" "X-Mod" "Y-Mod") '("psplot" [LaTeX-pst-parameter] "xmin" "xmax" t) '("parametricplot" [LaTeX-pst-parameter] "xmin" "xmax" t) '("psaxes" [LaTeX-pst-parameters] LaTeX-pst-macro-psaxes) "pshlabel" "psvlabel") (TeX-run-style-hooks "pstricks" "multido") (unless (string-match "plotstyle" LaTeX-pst-parameters-completion-regexp) (setq LaTeX-pst-parameters-completion-regexp (concat (substring LaTeX-pst-parameters-completion-regexp 0 -2) "\\|plotstyle\\|ticks\\|tickstyle\\|axesstyle\\|labels\\)"))) (make-local-variable 'LaTeX-pst-parameters-name-list) (setq LaTeX-pst-parameters-name-list (append LaTeX-pstplot-parameters-name-list LaTeX-pst-parameters-name-list))))) ;;; pst-plot.el ends here auctex-11.87/style/.nosearch0000644000000000000000000000010710035531771014464 0ustar rootroot;; AUCTeX style/ and auto/ directories should not appear in load path. auctex-11.87/style/italian.el0000644000000000000000000000411010751352552014625 0ustar rootroot;;; italian.el --- Setup AUCTeX for editing Italian text. ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Davide G. M. Salvetti ;; Maintainer: Davide G. M. Salvetti ;; Created: 2004-05-12 ;; 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: ;; ;; I believe that the Italian correct quoting is achieved with `\"<' and ;; `\">'. However, I will be glad to see a normative reference. -- DGMS ;;; Code: (defvar TeX-language-it-hook nil "Hook run for Italian texts.") (TeX-add-style-hook "italian" (lambda () ;; XXX: Handle former customizations of the now defunct ;; Italian-specific variables. References to the respective ;; variables are to be deleted in future versions. (now = 2005-04-01) (unless (eq (car TeX-quote-language) 'override) (let ((open-quote (if (and (boundp 'LaTeX-italian-open-quote) LaTeX-italian-open-quote) LaTeX-italian-open-quote "\"<")) (close-quote (if (and (boundp 'LaTeX-italian-close-quote) LaTeX-italian-close-quote) LaTeX-italian-close-quote "\">"))) (setq TeX-quote-language `("italian" ,open-quote ,close-quote TeX-quote-after-quote)))) ;; Fontification of quotation marks. (when (fboundp 'font-latex-add-quotes) (font-latex-add-quotes '("\"<" "\">" french))) (run-hooks 'TeX-language-it-hook))) ;;; italian.el ends here auctex-11.87/style/beamer.el0000644000000000000000000002754711451652337014464 0ustar rootroot;;; beamer.el --- AUCTeX style for the latex-beamer class ;; Copyright (C) 2003, 2004, 2005,2008 Free Software Foundation ;; Author: Thomas Baumann ;; Created: 2003-12-20 ;; 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 the latex-beamer class. ;;; Code: (defun LaTeX-beamer-after-insert-env (env start end) "Do beamer-specific stuff after the insertion of an environment." ;; Add `fragile' as an optional argument to the frame environment if ;; a verbatim environment is inserted. (when (and (TeX-member env (LaTeX-verbatim-environments) 'string-equal) (save-excursion (goto-char start) (string-equal (LaTeX-current-environment) "frame"))) (save-excursion (when (re-search-backward "\\\\begin[ \t]*{frame}" nil t) (let ((end-of-begin (match-end 0))) (goto-char end-of-begin) (while (forward-comment 1)) (if (eq (char-after) (string-to-char LaTeX-optop)) (progn (forward-char) (insert "fragile") (unless (looking-at (concat "[ \t]*" LaTeX-optcl)) (insert ","))) (goto-char end-of-begin) (insert "[fragile]"))))))) (TeX-add-style-hook "beamer" (lambda () (add-hook 'LaTeX-after-insert-env-hooks 'LaTeX-beamer-after-insert-env nil t) (unless LaTeX-beamer-section-labels-flag (make-local-variable 'LaTeX-section-hook) (setq LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title LaTeX-section-section))) (setq LaTeX-item-list (append '(("itemize" . LaTeX-item-beamer) ("enumerate" . LaTeX-item-beamer)) LaTeX-item-list)) (LaTeX-paragraph-commands-add-locally "frametitle") (TeX-add-symbols '("alert" 1) '("alt" TeX-arg-beamer-overlay-spec 2) '("beamerbutton" 1) '("beamergotobutton" 1) '("beamerreturnbutton" 1) '("beamerskipbutton" 1) '("frame" TeX-arg-beamer-frametitle) '("frametitle" 1) '("hyperlink" TeX-arg-beamer-overlay-spec 2) '("hyperlinkslideprev" TeX-arg-beamer-overlay-spec 1) '("hyperlinkslidenext" TeX-arg-beamer-overlay-spec 1) '("hyperlinkframestart" TeX-arg-beamer-overlay-spec 1) '("hyperlinkframeend" TeX-arg-beamer-overlay-spec 1) '("hyperlinkframestartnext" TeX-arg-beamer-overlay-spec 1) '("hyperlinkframeendprev" TeX-arg-beamer-overlay-spec 1) '("hyperlinkpresentationstart" TeX-arg-beamer-overlay-spec 1) '("hyperlinkpresentationend" TeX-arg-beamer-overlay-spec 1) '("hyperlinkappendixstart" TeX-arg-beamer-overlay-spec 1) '("hyperlinkappendixend" TeX-arg-beamer-overlay-spec 1) '("hyperlinkdocumentstart" TeX-arg-beamer-overlay-spec 1) '("hyperlinkdocumentend" TeX-arg-beamer-overlay-spec 1) '("hypertarget" TeX-arg-beamer-overlay-spec 2) '("institute" 1) '("invisible" TeX-arg-beamer-overlay-spec 1) '("label" TeX-arg-beamer-overlay-spec 1) '("logo" 1) '("note" TeX-arg-beamer-note 1) '("only" TeX-arg-beamer-overlay-spec 1) '("onslide" TeX-arg-beamer-overlay-spec) '("partpage") '("pause") '("structure" TeX-arg-beamer-overlay-spec 1) '("temporal" TeX-arg-beamer-overlay-spec 3) '("titlepage") '("titlegraphic" 1) '("uncover" TeX-arg-beamer-overlay-spec 1) '("usetheme" LaTeX-arg-beamer-theme) '("useinnertheme" LaTeX-arg-beamer-inner-theme) '("useoutertheme" LaTeX-arg-beamer-outer-theme) '("usecolortheme" LaTeX-arg-beamer-color-theme) '("usefonttheme" LaTeX-arg-beamer-font-theme) '("usetheme" LaTeX-arg-beamer-theme) '("visible" TeX-arg-beamer-overlay-spec 1)) (LaTeX-add-environments '("actionenv") '("alertblock" 1) '("beamerboxesrounded" 1) '("block" (lambda (env &rest ignore) (LaTeX-insert-environment env (format "{%s}" (read-string "Title: "))))) '("column" "Width") "columns" "columnsonlytextwidth" '("exampleblock" 1) '("frame" (lambda (env &rest ignore) (let ((title (read-string "(Optional) Title: "))) (LaTeX-insert-environment env) (unless (zerop (length title)) (save-excursion (LaTeX-find-matching-begin) (end-of-line) (LaTeX-newline) (insert (format "\\frametitle{%s}" title)) ;; This works because \frametitle is a ;; paragraph command. (backward-char) (LaTeX-fill-paragraph)))))) '("onlyenv" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((overlay (read-string "(Optional) Overlay: "))) (unless (zerop (length overlay)) (format "<%s>" overlay)))))) '("overlayarea" "Area width" "Area height") '("overprint" (lambda (env &rest ignore) (LaTeX-insert-environment env (let ((width (read-string "(Optional) Area width: "))) (unless (zerop (length width)) (format "[%s]" width)))))) "semiverbatim") (make-local-variable 'LaTeX-indent-environment-list) (add-to-list 'LaTeX-indent-environment-list '("semiverbatim" current-indentation)) (make-local-variable 'LaTeX-verbatim-regexp) (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|semiverbatim")) (add-to-list 'LaTeX-verbatim-environments-local "semiverbatim") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("frametitle" "<[{")) 'slide-title) ;; For syntactic fontification, e.g. verbatim constructs. (font-latex-set-syntactic-keywords) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)))) (defun TeX-arg-beamer-overlay-spec (optional &optional prompt) "Prompt for overlay specification." (let ((overlay (read-string "(Optional) Overlay: "))) (unless (zerop (length overlay)) (insert "<" overlay ">")) (indent-according-to-mode))) (defun TeX-arg-beamer-frametitle (optional &optional prompt) "Prompt for the frametitle." (let ((title (read-string "Title: "))) (if (not (zerop (length title))) (insert TeX-grop TeX-esc "frametitle" TeX-grop title TeX-grcl TeX-grcl) (insert TeX-grop TeX-grcl)))) (defun LaTeX-item-beamer () "Insert a new item with an optional overlay argument. You can turn off the prompt for the overlay argument by setting `LaTeX-beamer-item-overlay-flag' to nil. Calling the function with a prefix argument prompts for the overlay specification unconditionally." (if (listp current-prefix-arg) (setq current-prefix-arg (car current-prefix-arg)) current-prefix-arg) (TeX-insert-macro "item") (delete-horizontal-space) (if (or current-prefix-arg LaTeX-beamer-item-overlay-flag) (TeX-arg-beamer-overlay-spec 0)) (insert " ") (indent-according-to-mode)) (defun TeX-arg-beamer-note (optional &optional prompt) "Prompt for overlay specification and optional argument." (let ((overlay (read-string "(Optional) Overlay: ")) (options (read-string "(Optional) Options: "))) (unless (zerop (length overlay)) (insert "<" overlay ">")) (unless (zerop (length options)) (insert "[" options "]")) (indent-according-to-mode))) (defun LaTeX-beamer-search-themes (&optional regexp extensions length) "Search for beamer themes matching REGEXP with EXTENSIONS. The function removes the first LENGTH characters and the extension of the file and returns a list of strings. LENGTH may also be a string. Then the length of the string is used." (let* ((match (or regexp "^beamertheme[A-Z]")) (exts (or extensions '("tex" "sty"))) (chars (cond ((integerp length) length) ((stringp length) (string-width length)) ;; Try some DWIM magic... ((and (not length) (string-match "beamer[A-Za-z0-9]*theme" match)) (- (match-end 0) (match-beginning 0))) (t (error "Invalid length: `%s'" length))))) ;; (message "match=`%s' chars=`%s'" match chars) (TeX-delete-duplicate-strings (delete nil (mapcar (lambda (file) (let ((case-fold-search nil)) (and (numberp (string-match match file)) (substring file chars)))) (TeX-search-files nil exts t t)))))) (defun LaTeX-arg-beamer-theme (&rest ignore) "Prompt for beamer theme with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt nil nil "Theme") (mapcar 'list (cond ((eq LaTeX-beamer-themes 'local) (set (make-local-variable 'LaTeX-beamer-themes) (LaTeX-beamer-search-themes))) ((functionp LaTeX-beamer-themes) (funcall LaTeX-beamer-themes)) ((listp LaTeX-beamer-themes) LaTeX-beamer-themes) (t (error "`LaTeX-beamer-themes' should be a list: `%s'" LaTeX-beamer-themes)))) nil nil nil) t)) (defun LaTeX-arg-beamer-inner-theme (&rest ignore) "Prompt for beamer inner theme with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt nil nil "Theme") (mapcar 'list (cond ((eq LaTeX-beamer-inner-themes 'local) (set (make-local-variable 'LaTeX-beamer-inner-themes) (LaTeX-beamer-search-themes "^beamerinnertheme"))) ((functionp LaTeX-beamer-inner-themes) (funcall LaTeX-beamer-inner-themes)) ((listp LaTeX-beamer-inner-themes) LaTeX-beamer-inner-themes) (t (error "`LaTeX-beamer-inner-themes' should be a list: `%s'" LaTeX-beamer-inner-themes)))) nil nil nil) t)) (defun LaTeX-arg-beamer-outer-theme (&rest ignore) "Prompt for beamer outer theme with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt nil nil "Theme") (mapcar 'list (cond ((eq LaTeX-beamer-outer-themes 'local) (set (make-local-variable 'LaTeX-beamer-outer-themes) (LaTeX-beamer-search-themes "^beameroutertheme"))) ((functionp LaTeX-beamer-outer-themes) (funcall LaTeX-beamer-outer-themes)) ((listp LaTeX-beamer-outer-themes) LaTeX-beamer-outer-themes) (t (error "`LaTeX-beamer-outer-themes' should be a list: `%s'" LaTeX-beamer-outer-themes)))) nil nil nil) t)) (defun LaTeX-arg-beamer-color-theme (&rest ignore) "Prompt for beamer color theme with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt nil nil "Theme") (mapcar 'list (cond ((eq LaTeX-beamer-color-themes 'local) (set (make-local-variable 'LaTeX-beamer-color-themes) (LaTeX-beamer-search-themes "^beamercolortheme"))) ((functionp LaTeX-beamer-color-themes) (funcall LaTeX-beamer-color-themes)) ((listp LaTeX-beamer-color-themes) LaTeX-beamer-color-themes) (t (error "`LaTeX-beamer-color-themes' should be a list: `%s'" LaTeX-beamer-color-themes)))) nil nil nil) t)) (defun LaTeX-arg-beamer-font-theme (&rest ignore) "Prompt for beamer font theme with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt nil nil "Theme") (mapcar 'list (cond ((eq LaTeX-beamer-font-themes 'local) (set (make-local-variable 'LaTeX-beamer-font-themes) (LaTeX-beamer-search-themes "^beamerfonttheme"))) ((functionp LaTeX-beamer-font-themes) (funcall LaTeX-beamer-font-themes)) ((listp LaTeX-beamer-font-themes) LaTeX-beamer-font-themes) (t (error "`LaTeX-beamer-font-themes' should be a list: `%s'" LaTeX-beamer-font-themes)))) nil nil nil) t)) ;;; beamer.el ends here auctex-11.87/style/alltt.el0000644000000000000000000000351710751352553014337 0ustar rootroot;;; alltt.el --- AUCTeX style for `alltt.sty' ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-04-30 ;; 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 `alltt.sty'. ;;; Code: (TeX-add-style-hook "alltt" (lambda () (LaTeX-add-environments "alltt") (make-local-variable 'LaTeX-indent-environment-list) (add-to-list 'LaTeX-indent-environment-list '("alltt" current-indentation)) (make-local-variable 'LaTeX-verbatim-regexp) (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|alltt")) (add-to-list 'LaTeX-verbatim-environments-local "alltt") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; For syntactic fontification, e.g. verbatim constructs. (font-latex-set-syntactic-keywords) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)))) (defvar LaTeX-alltt-package-options nil "Package options for the alltt package.") ;;; alltt.el ends here auctex-11.87/style/multido.el0000644000000000000000000000320411152077613014662 0ustar rootroot;;; multido.el --- AUCTeX style for `multido.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; Created: 21 Jun 2007 ;; Based on: Jean-Philippe Georget's multido.el ;; Keywords: latex, pstricks, auctex, emacs ;; 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 `multido.sty'. ;;; TODO: ;; ;; -- better argument support for multido ;; -- parsing for fpAdd resp. fpSub ;;; Code: (TeX-add-style-hook "multido" (function (lambda () (TeX-add-symbols '("multido" "\var=+-" "Repititions" t) '("Multido" "\var=+-" "Repititions" t) '("mmultido" "\var=+-" "Repititions" t) '("MMultido" "\var=+-" "Repititions" t) "multidostop" "multidocount" '("fpAdd" "Summand 1" "Summand 2" "Register") '("fpSub" "Minuend" "Subtrahend" "Register"))))) ;;; multido.el ends here auctex-11.87/style/latexinfo.el0000644000000000000000000001304510751352552015204 0ustar rootroot;;; latexinfo.el - Support for LaTeXinfo files. ;; Copyright (C) 1993 Marc Gemis ;; Author: Marc Gemis ;; Version: $Id: latexinfo.el,v 1.7 2008/02/03 14:53:30 angeli Exp $ ;; This program 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 program 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 this program; if not, write to the Free Software ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Code: ;;; LaTeXinfo mode (defvar TeX-latexinfo-node-regexp '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label) "Matches LaTeXinfo \\node commands, only current node will be found. We ignore next, previous and up fields.") (defvar LaTeXinfo-mode nil "Non-nil means LaTeXinfo minor mode is active.") (make-variable-buffer-local 'LaTeXinfo-mode) (defvar LaTeXinfo-mode-map nil "Keymap containing LaTeXinfo commands.") (if LaTeXinfo-mode-map () (setq LaTeXinfo-mode-map (make-sparse-keymap)) (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer) (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region) (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure) (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure) (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node) (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure)) (or (assq 'LaTeXinfo-mode minor-mode-map-alist) (setq minor-mode-map-alist (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map) minor-mode-map-alist))) (defun TeX-arg-latexinfo-index (optional &optional prompt) "Prompt for a LaTeXinfo index type with completion." (TeX-argument-insert (completing-read (TeX-argument-prompt optional prompt "Index") '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky")) nil t) optional)) (defun LaTeX-item-latexinfo-menu () "Insert a new menu item" (insert "* ::") (backward-char 2)) (defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ?? "Place pointer on the node given by the user, read node with completion This fails when the user types in the label of something else" (interactive) (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list)))) (goto-char (point-min)) (if (re-search-forward (concat TeX-esc "node[ \\t]+" node-name "," "\\|" TeX-esc "label{" LaTeX-section-label node-name "\\|" TeX-esc "label{" node-name ) (point-max) t) (beginning-of-line 1) (error "No such node")))) ;;; Hook (TeX-add-style-hook "latexinfo" (function (lambda () (require 'latexinfo) (require 'latexinfo-structure) (require 'min-map) (setq LaTeXinfo-mode t) (TeX-auto-add-regexp TeX-latexinfo-node-regexp) (TeX-add-symbols '("node" (TeX-arg-literal " ") (TeX-arg-free TeX-arg-define-label "Node name") (TeX-arg-literal ", ") (TeX-arg-free TeX-arg-label "Next node") (TeX-arg-literal ", ") (TeX-arg-free TeX-arg-label "Previous node") (TeX-arg-literal ", ") (TeX-arg-free TeX-arg-label "Up node")) '("setfilename" TeX-arg-file) '("var" t) '("dfn" t) '("emph" t) '("kbd" t) '("code" t) '("samp" t) '("key" t) '("ctrl" t) '("file" t) '("comment" (TeX-arg-literal " ") (TeX-arg-free "Comment")) '("c" (TeX-arg-literal " ") (TeX-arg-free "Comment")) '("cindex" t) '("cpsubindex" 2) '("cpindexbold" t) '("newindex" TeX-arg-latexinfo-index) '("br" nil) '("w" "Text") '("dots" nil) '("refill" nil) '("bullet" nil) '("copyright" nil) '("sp" nil) '("xref" TeX-arg-label) '("pxref" TeX-arg-label) '("inforef" (TeX-arg-literal "{") (TeX-arg-free "Name of node") (TeX-arg-literal ", ") (TeX-arg-free "Name for note") (TeX-arg-literal ", ") (TeX-arg-free TeX-arg-file "Info file") (TeX-arg-literal "}"))) (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex" "example" "same" "display" "format") ; Menu's have a special kind of items (make-local-variable 'LaTeX-item-list) (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu) LaTeX-item-list)) (make-local-variable 'TeX-font-list) (setq TeX-font-list (list (list ?\C-b (concat TeX-esc "b{") "}") (list ?\C-c (concat TeX-esc "sc{") "}") (list ?\C-e (concat TeX-esc "emph{") "}") (list ?\C-i (concat TeX-esc "i{") "}") (list ?\C-r (concat TeX-esc "r{") "}") (list ?\C-s (concat TeX-esc "samp{") "}") (list ?\C-t (concat TeX-esc "t{") "}") (list ?s (concat TeX-esc "strong{") "}") (list ?\C-f (concat TeX-esc "file{") "}") (list ?\C-d (concat TeX-esc "dfn{") "}") (list ?\C-v (concat TeX-esc "var{") "}") (list ?k (concat TeX-esc "key{") "}") (list ?\C-k (concat TeX-esc "kbd{") "}") (list ?c (concat TeX-esc "code{") "}") (list ?C (concat TeX-esc "cite{") "}"))) ;; need the following stuff to let xref and pxref work (make-local-variable 'LaTeX-section-label) (setq LaTeX-section-label "")))) ;;; latexinfo.el ends here auctex-11.87/style/alphanum.el0000644000000000000000000000635510751352553015027 0ustar rootroot;;; alphanum.el --- AUCTeX style for `alphanum.sty' ;; Copyright (C) 2004 Free Software Foundation, Inc. ;; Author: Frank Kster ;; Maintainer: auctex-devel@gnu.org ;; 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 is file alphanum.el, which makes AUCTeX usable with jura.cls ;; and its style file alphanum.sty. ;; ;; Contributed by Frank Kster . The code for ;; reftex has been written by Carsten Dominik, the maintainer of ;; reftex, but all the errors are mine. ;;; Code: (defun TeX-arg-none (arg) (insert " ")) (defun reftex-get-section-level-alphanum () (save-excursion ; preserve position (save-match-data ; preserve matching data (important!) ;; Go back to the beginning of the sectioning command (goto-char (match-beginning 0)) ;; Define an initial level number, depending on the current macro. (let* ((macro (reftex-match-string 3)) ; "toc" or "sub" (lev (cond ((string= macro "toc") 1) ; min level for "toc" ((string= macro "sub") 2) ; min level for "sub" (t 0))) ;; Make a regular expression which will match sectioning commands ;; and the levelup macro. (re (concat "\\(^[^%]*\\\\levelup\\>\\)" "\\|" "\\(" reftex-section-regexp "\\)"))) ;; Now parse backwards for all sectioning and levelup macros, ;; and keep track of the relative level changes. (while (re-search-backward re nil t) (cond ((match-beginning 1) ;; levelup matched, reduce level counter (setq lev (1- lev))) ((string= (reftex-match-string 4) "toc") ;; a toc entry, nothing changes ) ((string= (reftex-match-string 4) "sub") ;; a sub entry, increase level counter (setq lev (1+ lev))))) ;; return the level lev)))) (TeX-add-style-hook "alphanum" (lambda () (LaTeX-largest-level-set "chapter") (TeX-add-symbols '("levelup" TeX-arg-none)) (make-local-variable 'LaTeX-section-list) (LaTeX-section-list-add-locally '(("part" 0) ;; the levels don't make sense with alphanum, I randomly chose 0... ("toc" 0) ("sub" 0)) t) (setq LaTeX-section-label '(("part" . "part:") ("toc" . "sec:") ("sub" . "sec:"))) ;; ;; ****************** reftex part ****************** ;; this won't work in multifile documents, but at least there is ;; something. (if (fboundp 'reftex-add-section-levels) (reftex-add-section-levels '(("toc" . reftex-get-section-level-alphanum) ("sub" . reftex-get-section-level-alphanum)))))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: auctex-11.87/style/jsarticle.el0000644000000000000000000000036010216252636015165 0ustar rootroot;;; jsarticle.el - Special code for jsarticle style. ;; $Id: jsarticle.el,v 1.2 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "jsarticle" (lambda () (LaTeX-largest-level-set "section"))) ;;; jsarticle.el ends here auctex-11.87/style/multind.el0000644000000000000000000000407410751352551014670 0ustar rootroot;;; multind.el --- AUCTeX support for multiple indices with multind.sty. ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "multind" (lambda () ;; Commands (TeX-add-symbols '("makeindex" "Indextag") '("index" TeX-arg-index-tag TeX-arg-index) '("printindex" TeX-arg-index-tag "Title") "printindex" "indexspace") ;; Parsing index macros (setq LaTeX-auto-regexp-list (append ;; The first regexp is faster, but less accurate ;; '(("\\\\index\\*?{[^{}]*}{\\([^}]*\\)" 1 LaTeX-auto-index-entry)) ;; The second regexp is very good, but slower '(("\\\\index\\*?{[^{}]*}{\\([^}{]*\\({[^}{]*\\({[^}{]*\\({[^}{]*}[^}{]*\\)*}[^}{]*\\)*}[^}{]*\\)*\\)}" 1 LaTeX-auto-index-entry)) LaTeX-auto-regexp-list)) ;; Completion for index entries in the |see and \index commands (setq TeX-complete-list (append '(("\\\\index{[^{}]*}{\\([^{}\n\r]*\\)" 1 LaTeX-index-entry-list) ("|see{\\([^}]*\\)" 1 LaTeX-index-entry-list)) TeX-complete-list)) ;; RefTeX support (and (fboundp 'reftex-add-index-macros) (reftex-add-index-macros '(multind))))) (defvar LaTeX-multind-package-options nil "Package options for the multind package.") ;;; multind.el ends here auctex-11.87/style/amsart.el0000644000000000000000000000032206716766737014520 0ustar rootroot;;; amsart.el --- Style hook for the AMS-LaTeX article document class. ;;; Code: (TeX-add-style-hook "amsart" (function (lambda () (TeX-run-style-hooks "amsmath" "amsthm")))) ;;; amsart.el ends here. auctex-11.87/style/dk-bib.el0000644000000000000000000000363311016206070014331 0ustar rootroot;;; dk-bib.el --- AUCTeX style for `dk-bib.sty' ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Arne Jrgensen ;; 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 Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary: ;; Prompt for package option for dk-bib.sty. ;;; Code: (defun LaTeX-dk-bib-package-options nil "Prompt for package options for the dk-bib package." (let ((options (mapconcat 'identity (TeX-completing-read-multiple "Options: " '(("isbn") ("issn") ("url") ("annote") ("printing") ("apalike") ("fixcitedash=false") ("ordinals2word") ("ordinaldepth="))) ",")) (depth -1)) (when (string-match "\\(ordinaldepth=\\)\\([^0-9]\\|$\\)" options) (while (or (< depth 0) (> depth 20)) (setq depth (if (fboundp 'read-number) (read-number "Ordinal depth: ") (string-to-number (read-string "Ordinal depth: ")))) (when (or (< depth 0) (> depth 20)) (message "Ordinal depth must be between 0 and 20") (sit-for 1))) (setq options (concat (substring options 0 (match-end 1)) (number-to-string depth) (substring options (match-end 1))))) options)) ;; Local Variables: ;; coding: iso-8859-1 ;; End: ;;; dk-bib.el ends here auctex-11.87/style/foils.el0000644000000000000000000000303411043427262014320 0ustar rootroot;;; foils.el - Special code for FoilTeX. ;; $Id: foils.el,v 1.5 2008/07/28 20:40:18 angeli Exp $ ;;; Code: (require 'timezone) (TeX-add-style-hook "foils" (function (lambda () (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils) (setq LaTeX-default-style "foils") (setq LaTeX-default-options '("landscape")) (TeX-add-symbols '("foilhead" [ "Rubric-body separation" ] "Foil rubric"))))) (defun LaTeX-style-foils nil "Prompt for and insert foiltex options." (let* ((date (timezone-parse-date (current-time-string))) (year (string-to-number (aref date 0))) (month (string-to-number (aref date 1))) (day (string-to-number (aref date 2))) (title (read-string "Title: "))) (save-excursion (goto-char (point-max)) (re-search-backward ".begin.document.") (insert TeX-esc "title" TeX-grop title TeX-grcl "\n") (insert TeX-esc "author" TeX-grop (user-full-name) TeX-grcl "\n") (insert TeX-esc "date" TeX-grop (format "%d-%02d-%02d" year month day) TeX-grcl "\n") (insert "" TeX-esc "MyLogo" TeX-grop TeX-grcl "\n") (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n") (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n") (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n") (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n") (re-search-forward ".begin.document.") (end-of-line) (newline-and-indent) (insert "" TeX-esc "maketitle\n\n")) (forward-line -1))) ;;; foils.el ends here auctex-11.87/style/j-article.el0000644000000000000000000000036010216252636015057 0ustar rootroot;;; j-article.el - Special code for j-article style. ;; $Id: j-article.el,v 1.4 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "j-article" (lambda () (LaTeX-largest-level-set "section"))) ;;; j-article.el ends here auctex-11.87/style/setspace.el0000644000000000000000000000343111703374534015022 0ustar rootroot;;; setspace.el --- AUCTeX style for `setspace.sty' ;; Copyright (C) 2011 Free Software Foundation, Inc. ;; Author: Mads Jensen ;; Created: 2011-04-16 ;; 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 `setspace.sty'. ;;; Code: (TeX-add-style-hook "setspace" (lambda () (TeX-add-symbols '("setstretch" "Stretch") '("setdisplayskipstretch" "Stretch") '("SetSinglespace" "Stretch") '("onehalfspacing" 0) '("doublespacing" 0) '("singlespacing" 0)) (LaTeX-add-environments '("spacing" "Stretch") "singlespace" "singlespace*" "onehalfspace" "doublespace") (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("singlespacing" "") ("doublespacing" "") ("onehalfspacing" "")) 'function)))) (defvar LaTeX-setspace-package-options '("doublespacing" "onehalfspacing" "singlespacing" "nodisplayskipstretch") "Package options for the setspace package.") ;;; setspace.el ends here auctex-11.87/style/harvard.el0000644000000000000000000001176011442647045014646 0ustar rootroot;;; harvard.el --- Support for Harvard Citation style package for AUCTeX. ;; Copyright (C) 1994, 1997, 2005 Free Software Foundation, Inc. ;; Author: Berwin Turlach ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "harvard" (function (lambda () (LaTeX-add-environments '("thebibliography" LaTeX-env-harvardbib ignore)) (TeX-add-symbols "harvardand" '("citeasnoun" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) TeX-arg-cite) '("possessivecite" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) TeX-arg-cite) '("citeaffixed" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) TeX-arg-cite "Affix") '("citeyear" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) TeX-arg-cite) '("citename" (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) TeX-arg-cite) '("citationstyle" (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu")))) '("citationmode" (TeX-arg-eval completing-read "Citation mode: " '(("full") ("abbr") ("default")))) '("harvardparenthesis" (TeX-arg-eval completing-read "Harvardparenthesis: " '(("round") ("curly") ("angle") ("square")))) '("bibliographystyle" (TeX-arg-eval completing-read "Bibliography style: " '(("agsm") ("apsr") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands") ("econometrica"))) ignore) '("harvarditem" [ "Short citation" ] "Complete citation" "Year" TeX-arg-define-cite)) (setq TeX-complete-list (append '(("\\\\citeasnoun\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeasnoun{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\possessivecite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\possessivecite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citename\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citename{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeaffixed\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeaffixed{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeaffixed{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" 2 LaTeX-bibitem-list) ("\\\\citeyear\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeyear{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") ("\\\\citeyear{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" 2 LaTeX-bibitem-list)) TeX-complete-list)) (setq LaTeX-auto-regexp-list (append '(("\\\\harvarditem{\\([a-zA-Z][^%#'()={}]*\\)}{\\([0-9][^, %\"#'()={}]*\\)}{\\([a-zA-Z][^, %\"#'()={}]*\\)}" 3 LaTeX-auto-bibitem) ("\\\\harvarditem\\[[^][\n\r]+\\]{\\([a-zA-Z][^%#'()={}]*\\)}{\\([0-9][^, %\"#'()={}]*\\)}{\\([a-zA-Z][^, %\"#'()={}]*\\)}" 3 LaTeX-auto-bibitem) ) LaTeX-auto-regexp-list)) (setq LaTeX-item-list (cons '("thebibliography" . LaTeX-item-harvardbib) LaTeX-item-list)) ;; Tell RefTeX (when (fboundp 'reftex-set-cite-format) (reftex-set-cite-format 'harvard))))) (defun LaTeX-env-harvardbib (environment &optional ignore) "Insert ENVIRONMENT with label for harvarditem." (LaTeX-insert-environment environment (concat TeX-grop "xx" TeX-grcl)) (end-of-line 0) (delete-char 1) (delete-horizontal-space) (LaTeX-insert-item)) ;; Analog to LaTeX-item-bib from latex.el (defun LaTeX-item-harvardbib () "Insert a new harvarditem." (TeX-insert-macro "harvarditem")) (defvar LaTeX-harvard-package-options '("full" "abbr" "default" "agsmcite" "dcucite" "round" "curly" "angle" "square" "none") "Package options for the harvard package.") ;; harvard.el ends here auctex-11.87/style/comment.el0000644000000000000000000000450110751352552014652 0ustar rootroot;;; comment.el --- AUCTeX style for `comment.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2007-03-18 ;; 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., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. ;;; Commentary: ;; This file adds support for `comment.sty'. ;;; Code: (TeX-add-style-hook "comment" (lambda () ;; New symbols (TeX-add-symbols '("includecomment" "Name") '("excludecomment" "Name") '("specialcomment" "Name" "Before commands" "After commands") '("processcomment" "Name" "Each-line commands" "Before commands" "After commands")) ;; New environments (mapc 'LaTeX-add-environments LaTeX-comment-env-list) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; For syntactic fontification. (add-to-list 'font-latex-syntactic-keywords-extra ;; \begin is supposed to start at the beginning of a line. `(,(format "^\\\\begin *{\\(?:%s\\)}.*\\(\n\\)" (regexp-opt LaTeX-comment-env-list)) (1 "<" t))) (add-to-list 'font-latex-syntactic-keywords-extra ;; \end is supposed to start at the beginning of a line. `(,(format "^\\(\\\\\\)end *{\\(?:%s\\)}" (regexp-opt LaTeX-comment-env-list)) (1 ">" t))) (font-latex-set-syntactic-keywords) (font-latex-add-keywords '(("includecomment" "{") ("excludecomment" "{") ("specialcomment" "{{{") ("processcomment" "{{{{")) 'variable) ;; Tell font-lock about the update. (setq font-lock-set-defaults nil) (font-lock-set-defaults)))) ;;; comment.el ends here auctex-11.87/style/pstricks.el0000644000000000000000000010100511273333153015043 0ustar rootroot;;; pstricks.el --- AUCTeX style for the `pstricks' package. ;; Copyright (C) 2007, 2009 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; 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 ;;; 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: ;;; 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--\\(list\\|history\\) have to exist. \(Used to define functions named LaTeX-pst-.\))" (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 (completing-read-multiple (concat "Params (use for history or RET for choices): ") nlist nil nil nil hlist)) ;; (if (and (string= "" (car param)) (= (length param) 1)) (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 [-][!]. (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\\|\\\\|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 "{" (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) (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)) ;; FIXME: This does not seem to work unless one does a manual reparse. ;; Check e.g. with "\definecolor" and "fillcolor=". (add-hook 'TeX-auto-prepare-hook 'LaTeX-pst-prepare) (add-hook 'TeX-auto-cleanup-hook 'LaTeX-pst-cleanup) ;;; 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 "\\(") beg 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 (member "pst-pdf" TeX-active-styles) (TeX-PDF-mode-off)) (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)))) ;;; pstricks.el ends here auctex-11.87/style/slides.el0000644000000000000000000000237310751352551014477 0ustar rootroot;;; slides.el --- AUCTeX style for the `slides' document class ;; Copyright (C) 2004 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2004-04-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 the `slides' document class. Currently ;; the support is very limited. You are welcome to improve it. ;;; Code: (TeX-add-style-hook "slides" (lambda () (LaTeX-add-environments "slide" "overlay" "note"))) ;;; slides.el ends here auctex-11.87/style/pst-slpe.el0000644000000000000000000000417411152077773014772 0ustar rootroot;;; pst-slpe.el --- AUCTeX style for `pst-slpe.sty' ;; Copyright (C) 2007 Free Software Foundation, Inc. ;; Author: Holger Sparr ;; Created: 21 Jun 2007 ;; Keywords: latex, pstricks, auctex, emacs ;; 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 `pst-slpe.sty'. ;;; TODO: ;; ;; -- ;;; Code: ;;; Parameters (defvar LaTeX-pstslpe-parameters-name-list '("slopeangle" "slopecenter" "slopecolors" "slopebegin" "slopeend" "sloperadius" "slopesteps") "A list of parameter names in pst-slpe.") ;;; Aliases (defvaralias 'LaTeX-pst-slopebegin-list 'LaTeX-pst-color-list) (defvaralias 'LaTeX-pst-slopeend-list 'LaTeX-pst-color-list) ;;; Define hook (TeX-add-style-hook "pst-slpe" (function (lambda () (TeX-run-style-hooks "pstricks") (unless (member "slope" LaTeX-pst-fillstyle-list) (setq LaTeX-pst-fillstyle-list (append LaTeX-pst-fillstyle-list '("slope" "slopes" "ccslope" "ccslopes" "radslope" "radslopes"))) (setq LaTeX-pst-parameters-completion-regexp (concat (substring LaTeX-pst-parameters-completion-regexp 0 -2) "\\|slopebegin\\|slopeend\\)"))) (make-local-variable 'LaTeX-pst-parameters-name-list) (setq LaTeX-pst-parameters-name-list (append LaTeX-pstslpe-parameters-name-list LaTeX-pst-parameters-name-list))))) ;;; pst-slpe.el ends here auctex-11.87/style/amsopn.el0000644000000000000000000000101310326661055014477 0ustar rootroot;;; amsopn.el --- Style hook for the AMS-LaTeX amsopn package. ;;; ;;; AUTHOR: Carsten Dominik ;;; Code: (TeX-add-style-hook "amsopn" (function (lambda () (TeX-add-symbols '("DeclareMathOperator" "Operator (with \\)" "Text") '("DeclareMathOperator*" "Operator (with \\)" "Text") '("operatorname" t) '("operatorname*" t))))) (defvar LaTeX-amsopn-package-options '("namelimits" "nonamelimits") "Package options for the amsopn package.") ;;; amsopn.el ends here. auctex-11.87/style/plfonts.el0000644000000000000000000000172505523021745014700 0ustar rootroot;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty ;; $Id: plfonts.el,v 1.1 1994/01/30 21:17:25 amanda Exp $ ;;; Commentary: ;; ;; `plfonts.sty' use `"' to make next character Polish. ;; `plfonts.sty' L. Holenderski, IIUW, lhol@mimuw.edu.pl ;;; Code: (defvar LaTeX-plfonts-mode-syntax-table (copy-syntax-table LaTeX-mode-syntax-table) "Syntax table used in LaTeX mode when using `plfonts.sty'.") (modify-syntax-entry ?\" "w" LaTeX-plfonts-mode-syntax-table) (TeX-add-style-hook "plfonts" (function (lambda () (set-syntax-table LaTeX-plfonts-mode-syntax-table) (make-local-variable 'TeX-open-quote) (make-local-variable 'TeX-close-quote) (make-local-variable 'TeX-quote-after-quote) (make-local-variable 'TeX-command-default) (setq TeX-open-quote "\"<") (setq TeX-close-quote "\">") (setq TeX-quote-after-quote t) (setq TeX-command-default "plLaTeX") (run-hooks 'TeX-language-pl-hook)))) ;;; plfonts.el ends here auctex-11.87/style/makeidx.el0000644000000000000000000000301410751352551014627 0ustar rootroot;;; makeidx.el --- AUCTeX support for makeidx.sty ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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. ;;; Code: (TeX-add-style-hook "makeidx" (lambda () (TeX-add-symbols "printindex" "indexspace") ;; Parsing the default index macro is defined in latex.el ;; The same is true form completion in the index macro ;; Completion for the |see macro (setq TeX-complete-list (append '(("|see{\\([^{}\n\r]*\\)" 1 LaTeX-index-entry-list)) TeX-complete-list)) ;; RefTeX support (and (fboundp 'reftex-add-index-macros) (reftex-add-index-macros '(default))))) (defvar LaTeX-makeidx-package-options nil "Package options for the makeidx package.") ;;; makeidx.el ends here auctex-11.87/style/subfigure.el0000644000000000000000000000451610751352551015210 0ustar rootroot;;; subfigure.el --- AUCTeX style file for subfigure.sty ;; Copyright (C) 2003, 2005 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Maintainer: auctex-devel@gnu.org ;; 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 subfigure.sty ;;; Code: (TeX-add-style-hook "subfigure" (lambda () (TeX-add-symbols '("subfigure" [ "list entry" ] [ "sub caption" ] "figure") '("subtable" [ "list entry" ] [ "sub caption" ] "figure") '("Subref" TeX-arg-label) '("subref" TeX-arg-label)) ;; TODO: add \subfig* lengths ;; Install completion for labels: (setq TeX-complete-list (append '(("\\\\subref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") ("\\\\Subref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}")) TeX-complete-list)) ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("subfigure" "[[{") ("subtable" "[[{")) 'textual) (font-latex-add-keywords '(("Subref" "{") ("subref" "{")) 'reference)))) (defvar LaTeX-subfigure-package-options '("normal" "hang" "center" "centerlast" "nooneline" "raggedright" "isu" "anne" "scriptsize" "footnotesize" "small" "normalsize" "large" "Large" "rm" "sf" "tt" "md" "bf" "up" "it" "sl" "sc" "RM" "SF" "TT" "MD" "BF" "IT" "SL" "SC" "UP" "figbotcap" "figtopcap" "tabbotcap" "tabtopcap" "FIGBOTCAP" "FIGTOPCAP" "TABBOTCAP" "TABTOPCAP" "loose" "tight") "Package options for the subfigure package.") ;;; subfigure.el ends here auctex-11.87/style/amstex.el0000644000000000000000000000406310751352553014515 0ustar rootroot;;; amstex.el --- AMS-LaTeX support. ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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 is only needed when using AMS-LaTeX 1.1 and LaTeX 2.09. ;; In later versions of LaTeX and AMS-LaTeX this file is never used, ;; because there is no longer a class or package name amstex. ;; ;; As far as AUCTeX is concerned, the old amstex style is fairly ;; similar to the new amsmath package. So we will just run that hook ;; here. ;; ;; amsmath.el should not be loaded, if an AMS-TeX (in contrast to ;; AMS-LaTeX) file is opened. The commands defined in amsmath.el ;; mostly have no meaning in this case and errors about unknown ;; variables or functions may occur due to latex.el possibly not being ;; loaded. ;;; Code: (TeX-add-style-hook "amstex" (function (lambda () (unless (memq major-mode '(plain-tex-mode ams-tex-mode)) (TeX-run-style-hooks "amsmath"))))) (defvar LaTeX-amstex-package-options '("noamsfonts" "psamsfonts" "intlimits" "nointlimits" "sumlimits" "nosumlimits" "namelimits" "nonamelimits" "leqno" "reqno" "centertags" "tbtags" "fleqn" "righttag" "ctagsplt" "intlim" "nosumlim" "nonamelm") "Package options for the amstex package.") ;;; amstex.el ends here. auctex-11.87/style/xspace.el0000644000000000000000000000271711546111761014500 0ustar rootroot;;; xspace.el --- AUCTeX style for `xspace.sty' ;; Copyright (C) 2011 Free Software Foundation, Inc. ;; Author: Mads Jensen ;; Created: 2011-02-01 ;; 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 `xspace.sty'. ;;; Code: (TeX-add-style-hook "xspace" (lambda () (TeX-add-symbols '("xspace" 0) "xspaceaddexception" "xspaceremoveexception") ;; Fontification (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) (font-latex-add-keywords '(("xspace" "") ("xspaceaddexception" "{") ("xspaceremoveexception" "{")) 'function)))) (defvar LaTeX-xspace-package-options nil "Package options for the xspace package.") ;;; xspace.el ends here auctex-11.87/style/jarticle.el0000644000000000000000000000035310216252636015004 0ustar rootroot;;; jarticle.el - Special code for jarticle style. ;; $Id: jarticle.el,v 1.4 2005/03/17 10:02:06 angeli Exp $ ;;; Code: (TeX-add-style-hook "jarticle" (lambda () (LaTeX-largest-level-set "section"))) ;;; jarticle.el ends here auctex-11.87/style/ruby.el0000644000000000000000000000256411130147465014175 0ustar rootroot;;; ruby.el --- AUCTeX style for the ruby package. ;; Copyright (C) 2009 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: auctex-devel@gnu.org ;; Created: 2009-01-04 ;; 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 the ruby package. ;;; Code: (defvar LaTeX-ruby-package-options '("overlap" "nooverlap" "CJK" "latin") "Package options for the ruby package.") (TeX-add-style-hook "ruby" (lambda () (TeX-add-symbols '("rubyoverlap" 0) '("rubynooverlap" 0) '("rubyCJK" 0) '("rubylatin" 0) '("rubysize" 0) '("rubysep" 0) '("ruby" t nil)))) ;;; ruby.el ends here auctex-11.87/style/inputenc.el0000644000000000000000000000521310751352552015036 0ustar rootroot;;; inputenc.el --- AUCTeX style for `inputenc.sty' ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Arne Jrgensen ;; 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 Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. ;;; Commentary: ;; This file adds support for `inputenc.sty'. ;;; Code: (defun LaTeX-inputenc-package-options nil "Prompt for package options for the inputenc package." ;; separate the condition in three to silence the byte compiler (if (boundp 'latex-inputenc-coding-alist) (when (fboundp 'latexenc-coding-system-to-inputenc) (when (fboundp 'latexenc-inputenc-to-coding-system) (let ((default (latexenc-coding-system-to-inputenc (or coding-system-for-write buffer-file-coding-system))) (selected 'undecided)) (setq selected (completing-read (if default (format "Input encoding (default %s): " default) "Input encoding: ") (mapcar 'car latex-inputenc-coding-alist) nil nil nil nil default)) ;; if necessary offer to set the coding system for saving ;; this buffer based on the selected input encoding (when (and (null (coding-system-equal (coding-system-base (or coding-system-for-write buffer-file-coding-system)) (coding-system-base (latexenc-inputenc-to-coding-system selected)))) (y-or-n-p "Set coding system for saving this buffer? ") (set-buffer-file-coding-system (coding-system-base (latexenc-inputenc-to-coding-system selected))) (message nil))) ;; return selected input encoding selected))) (read-string "Input encoding: "))) (defun LaTeX-arg-inputenc-inputenc (optional) "Prompt for input encoding." (TeX-argument-insert (LaTeX-inputenc-package-options) nil)) (TeX-add-style-hook "inputenc" (lambda () ;; New symbols (TeX-add-symbols '("inputencoding" LaTeX-arg-inputenc-inputenc)))) ;; Local Variables: ;; coding: iso-8859-1 ;; End: ;;; inputenc.el ends here auctex-11.87/style/scrreprt.el0000644000000000000000000000403410751352551015054 0ustar rootroot;;; scrreprt.el --- AUCTeX style for scrreprt.cls. ;; Copyright (C) 2002, 2005 Free Software Foundation ;; Author: Mark Trettin ;; Created: 2002-09-26 ;; 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 `scrreprt.cls'. This file needs ;; `scrbase.el'. ;;; Code: (TeX-add-style-hook "scrreprt" (lambda () (LaTeX-largest-level-set "chapter") ;; load basic definitons (TeX-run-style-hooks "scrbase") (TeX-add-symbols "chapapp" "raggeddictum" '("chapappifchapterprefix" "Additional text") '("setpartpreamble" [ TeX-arg-KOMA-setpreamble ] [ "Width" ] t) '("setchapterpreamble" [ TeX-arg-KOMA-setpreamble ] [ "Width" ] t) '("dictum" [ "Author" ] t)) (LaTeX-section-list-add-locally '("addchap" 1)) (make-local-variable 'LaTeX-section-label) (setq LaTeX-section-label (append LaTeX-section-label '(("addchap" . nil)))) ;; Definitions for font-latex (when (and (featurep 'font-latex) (eq TeX-install-font-lock 'font-latex-setup)) ;; Textual keywords (font-latex-add-keywords '(("addchap" "[{") ("setpartpreamble" "[[{") ("setchapterpreamble" "[[{") ("dictum" "[{")) 'textual) ;; Sectioning keywords (font-latex-add-keywords '(("addchap" "[{")) 'sectioning-1)))) ;;; scrreprt.el ends here auctex-11.87/context-nl.el0000644000000000000000000001657311450440221014143 0ustar rootroot;;; context-nl.el --- Support for the ConTeXt dutch interface. ;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. ;; Maintainer: Berend de Boer ;; 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 is loaded by context.el when required. ;;; Code: ;; Build upon ConTeXt (require 'context) ;;; ConText macro names (defvar ConTeXt-environment-list-nl '("achtergrond" "alinea" "bloktekst" "buffer" "citaat" "combinatie" "commentaar" "deelomgeving" "document" "doordefinitie" "doornummering" "figuur" "formule" "gegeven" "interactiemenu" "kadertekst" "kantlijn" "kleur" "kolommen" "legenda" "lokaal" "lokalevoetnoten" "margeblok" "naamopmaak" "naast" "opelkaar" "opmaak" "opsomming" "overlay" "overzicht" "paginafiguur" "positioneren" "profiel" "regel" "regelcorrectie" "regelnummeren" "regels" "smaller" "symboolset" "synchronisatie" "tabel" "tabellen" "tabulatie" "tekstlijn" "typen" "uitlijnen" "uitstellen" "vanelkaar" "verbergen" "versie" ;; project structure "omgeving" "onderdeel" "produkt" "project" ;; flowcharts, if you have loaded this module "FLOWcell" "FLOWchart" ;; typesetting computer languages "EIFFEL" "JAVA" "JAVASCRIPT" "MP" "PASCAL" "PERL" "SQL" "TEX" "XML" ;; some metapost environments "MPpositiongraphic" "useMPgraphic" "MPcode" "reusableMPgraphic" "uniqueMPgraphic") "List of the ConTeXt nl interface start/stop pairs.") (defvar ConTeXt-define-list-nl '("achtergrond" "startstop" "typen") "List of ConTeXt nl interface macro's that define things.") (defvar ConTeXt-setup-list-nl '("achtergronden" "achtergrond" "alineas" "arrangeren" "blanko" "blok" "blokjes" "blokkopje" "blokkopjes" "boven" "boventeksten" "brieven" "buffer" "buttons" "citeren" "clip" "combinaties" "commentaar" "doordefinieren" "doornummeren" "doorspringen" "dunnelijnen" "externefiguren" "formules" "formulieren" "hoofd" "hoofdteksten" "inmarge" "inspringen" "interactiebalk" "interactie" "interactiemenu" "interactiescherm" "interlinie" "invullijnen" "invulregels" "items" "kaderteksten" "kantlijn" "kapitalen" "kleuren" "kleur" "kolommen" "kop" "kopnummer" "koppelteken" "koppen" "koptekst" "korps" "korpsomgeving" "labeltekst" "layout" "legenda" "lijndikte" "lijn" "lijst" "margeblokken" "markering" "naastplaatsen" "nummeren" "omlijnd" "onder" "onderstrepen" "onderteksten" "opmaak" "opsomming" "paginanummer" "paginanummering" "paginaovergangen" "palet" "papierformaat" "papier" "paragraafnummeren" "plaatsblok" "plaatsblokken" "plaatsblokkensplitsen" "positioneren" "profielen" "programmas" "publicaties" "rasters" "referentielijst" "refereren" "regelnummeren" "regels" "register" "roteren" "samengesteldelijst" "sectieblok" "sectie" "sheets" "smaller" "sorteren" "spatiering" "stickers" "strut" "strut" "subpaginanummer" "symboolset" "synchronisatiebalk" "synchronisatie" "synoniemen" "systeem" "taal" "tabellen" "tab" "tabulatie" "tekst" "tekstlijnen" "tekstpositie" "tekstteksten" "tekstvariabele" "tolerantie" "type" "typen" "uitlijnen" "uitvoer" "url" "velden" "veld" "versies" "voet" "voetnootdefinitie" "voetnoten" "voetteksten" "witruimte") "List of the names of ConTeXt nl interface macro's that setup things.") ;; referencing in ConTeXt (defvar ConTeXt-referencing-list-nl '("in" "op" "over" "paginareferentie" "tekstreferentie" "referentie") "List of ConTeXt en macro's that are used for referencing." ) (defvar ConTeXt-other-macro-list-nl '("regellinks" "regelmidden" "regelrechts" "toonexternefiguren") "List of ConTeXt nl interface macro's that are not an environment nor a setup.") (defun ConTeXt-define-command-nl (what) "The ConTeXt nl interface way of creating a define command." (concat "definieer" what)) (defun ConTeXt-setup-command-nl (what) "The ConTeXt nl interface way of creating a setup command." (concat "stel" what "in")) (defvar ConTeXt-project-structure-list-nl '("project" "omgeving" "produkt" "onderdeel") "List of the names of ConTeXt project structure elements for its nl interface. List should be in logical order.") (defvar ConTeXt-section-block-list-nl '("inleidingen" "hoofdteksten" "bijlagen" "uitleidingen") "List of the names of ConTeXt section blocks for its nl interface. List should be in logical order.") ;; TODO: ;; ConTeXt has alternative sections like title and subject. Currently ;; the level is used to find the section name, so the alternative ;; names are never found. Have to start using the section name instead ;; of the number. (defvar ConTeXt-section-list-nl '(("deel" 0) ("hoofdstuk" 1) ("paragraaf" 2) ("subparagraaf" 3) ("subsubparagraaf" 4)) ;; ("title" 1) ;; ("subject" 2) ;; ("subsubject" 3) ;; ("subsubsubject" 4) "List of the names of ConTeXt sections for its nl interface.") (defvar ConTeXt-text-nl "tekst" "The ConTeXt nl interface body text group.") (defvar ConTeXt-item-list-nl '("som" "its" "mar" "ran" "sub" "sym") "The ConTeXt macro's that are variants of item.") (defcustom ConTeXt-default-environment-nl "opsomming" "*The default environment when creating new ones with `ConTeXt-environment'." :group 'ConTeXt-nl-environment :type 'string) (defvar ConTeXt-extra-paragraph-commands-nl '("crlf" "par" "plaats[A-Za-z]+") "List of ConTeXt macros that should have their own line. That is, besides the section(-block) commands.") ;; Emacs en menu names and labels should go here ;; to be done ;;; Mode (defun ConTeXt-nl-mode-initialization () "ConTeXt dutch interface specific initialization." (mapc 'ConTeXt-add-environments (reverse ConTeXt-environment-list-nl)) (TeX-add-symbols '("but" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("som" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("items" [ConTeXt-arg-setup] (TeX-arg-string "Comma separated list")) '("its" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("nop" (TeX-arg-literal " ")) '("ran" TeX-arg-string (TeX-arg-literal " ")) '("sub" ConTeXt-arg-define-ref (TeX-arg-literal " ")) '("sym" (TeX-arg-string "Symbol") (TeX-arg-literal " ")))) ;;;###autoload (defun context-nl-mode () "Major mode for editing files for ConTeXt using its dutch interface. Special commands: \\{ConTeXt-mode-map} Entering `context-mode' calls the value of `text-mode-hook', then the value of TeX-mode-hook, and then the value of context-mode-hook." (interactive) ;; set the ConTeXt interface (setq ConTeXt-current-interface "nl") ;; initialization (ConTeXt-mode-common-initialization) (ConTeXt-nl-mode-initialization) ;; set mode line (setq TeX-base-mode-name "ConTeXt-nl") (TeX-set-mode-name)) (provide 'context-nl) ;;; context-nl.el ends here auctex-11.87/configure.ac0000644000000000000000000001347512055735327014032 0ustar rootrootdnl Autoconf script for AUCTeX dnl Maintainer: auctex-devel@gnu.org dnl Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. dnl This file is part of AUCTeX. dnl AUCTeX is free software; you can redistribute it and/or modify it dnl under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 3, or (at your option) dnl any later version. dnl AUCTeX is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl You should have received a copy of the GNU General Public License dnl along with AUCTeX; see the file COPYING. If not, write to the Free dnl Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, dnl MA 02110-1301, USA. AC_INIT(auctex,11.87,bug-auctex@gnu.org) AC_CHECK_PROGS_REQUIRED(MAKECMD, make, [make not found, aborting!]) AC_PROG_MAKE_SET AC_PROG_INSTALL AC_DATE_VERSION_FROM_CHANGELOG(AUCTEXDATE,AUCTEXVERSION) AC_SUBST(AUCTEXDATE) AC_SUBST(AUCTEXVERSION) EMACS_PROG_EMACS if test ${EMACS_FLAVOR} = xemacs then EMACS_CHECK_VERSION(21,4) else EMACS_CHECK_VERSION(21,1) fi EMACS_CHECK_MULE # The Debian package uses `--disable-build-dir-test'; normal users should # never need to modify the default behavior. AC_ARG_ENABLE([build-dir-test], [ --enable-build-dir-test test for build directory inside `load-path' (on by default)], [if ! [[ "X-${enableval}" = "X-no" ]] then VALID_BUILD_DIR fi], [VALID_BUILD_DIR]) if test ${EMACS_FLAVOR} = "xemacs" ; then EMACS_PATH_PACKAGEDIR else packagedir=no fi if test "X${packagedir}" = Xno then EMACS_PATH_LISPDIR AC_MSG_CHECKING(what file to use for auctex startup) AC_ARG_WITH(auctexstartfile, [[ --with-auctexstartfile=FILE What file to use for auctex startup.]], [[ auctexstartfile="${withval}" ]], [ _tmpdir_="${lispdir}" AC_FULL_EXPAND(_tmpdir_) if test -d "${_tmpdir_}/site-start.d" then auctexstartfile="${lispdir}/site-start.d/auctex.el" else auctexstartfile="${lispdir}/auctex.el" fi]) AC_MSG_RESULT([[${auctexstartfile}]]) packagelispdir="${lispdir}/auctex" packagedatadir="${packagelispdir}" texsitedir="${lispdir}" else #lispdir is only used for determining relative files. lispdir="${packagedir}" packagelispdir="${packagedir}/lisp/auctex" texsitedir="$packagelispdir" auctexstartfile="${packagelispdir}"/auto-autoloads.el packagedatadir="${packagedir}/etc/auctex" infodir="${packagedir}/info" INSTALL_INFO=: fi AC_SUBST(auctexstartfile) AC_MSG_CHECKING([where the package lisp files go]) AC_ARG_WITH(packagelispdir, [[ --with-packagelispdir=DIR Directory for the package lisp files.]], [packagelispdir=["${withval}"]]) AC_LISPIFY_DIR(packagelispdir,[["${texsitedir}/tex-site.el"]]) AC_MSG_RESULT([[${packagelispdir}]]) AC_MSG_CHECKING([where the data files go]) AC_ARG_WITH(packagedatadir, [[ --with-packagedatadir=DIR Where the data files go.]], [packagedatadir=["${withval}"]]) AC_LISPIFY_DIR(packagedatadir,[["${texsitedir}/tex-site.el"]]) AC_MSG_RESULT([[${packagedatadir}]]) AC_LISPIFY_DIR(texsite,[["${auctexstartfile}"]],tex-site.el) AC_MSG_CHECKING(where the info files go) AC_MSG_RESULT([[${infodir}]]) AC_SUBST(packagedir) if test $EMACS_FLAVOR = "xemacs" -a "$infodir" = '${prefix}/info'; then if test $packagedir != 'no'; then infodir='${packagedir}/info' fi fi AUCTEX_AUTO_DIR AC_LISPIFY_DIR(autodir,"${texsitedir}/tex-site.el") AC_PATH_PROG(TEX, tex, :) AC_PATH_PROG(PDFTEX, pdftex, :) AC_PATH_PROG(DVIPS, dvips, :) AC_ARG_VAR(PERL,[Perl executable. If set to :, some documentation cannot be regenerated, but installation of an unmodified tarball will succeed.]) if test "x$PERL" = x then AC_PATH_PROG(PERL, perl, :) fi AC_ARG_VAR(MAKEINFO,[Makeinfo executable. If set to :, some documentation cannot be regenerated, but installation of an unmodified tarball will succeed.]) AC_PATH_PROG(MAKEINFO, makeinfo, :) AC_PATH_PROG(TEXI2HTML, texi2html, :) AC_PATH_PROG(TEXI2DVI, texi2dvi, :) AC_PATH_PROG(TEXI2PDF, texi2pdf, :) AC_ARG_VAR(INSTALL_INFO, [install-info executable. Set to : to skip making a dir file. This is the default when installing into an XEmacs package.]) if test "X${INSTALL_INFO}" = X then AC_PATH_PROG(INSTALL_INFO, install-info, :, ${PATH} /usr/sbin /sbin) fi AC_ARG_ENABLE(preview, [ --disable-preview disable inclusion of preview-latex], [preview_enabled="$enableval"], [preview_enabled="yes"]) AC_SUBST(preview_enabled) if test "X${preview_enabled}" = Xyes then auctexdir=..; export auctexdir export PDFTEX export DVIPS # Export unquoted variables. TEX_UNQUOTED="$TEX" export TEX_UNQUOTED packagedir_unquoted="$packagedir" export packagedir_unquoted packagelispdir_unquoted="$packagelispdir" export packagelispdir_unquoted packagedatadir_unquoted="$packagedatadir" export packagedatadir_unquoted EMACS_UNQUOTED="$EMACS" export EMACS_UNQUOTED AC_CONFIG_SUBDIRS(preview) fi AC_SUBST(subdirs) AC_SHELL_QUOTIFY(prefix) AC_SHELL_QUOTIFY(localstatedir) AC_SHELL_QUOTIFY(packagedir) AC_SHELL_QUOTIFY(packagelispdir) AC_SHELL_QUOTIFY(packagedatadir) AC_SHELL_QUOTIFY(lispdir) AC_SHELL_QUOTIFY(infodir) AC_SHELL_QUOTIFY(datadir) AC_SHELL_QUOTIFY(autodir) AC_SHELL_QUOTIFY(auctexstartfile) AC_SHELL_QUOTIFY(EMACS) AC_SHELL_QUOTIFY(INSTALL_INFO) AC_SHELL_QUOTIFY(PERL) AC_SHELL_QUOTIFY(MAKEINFO) AC_SHELL_QUOTIFY(TEX) AC_SHELL_QUOTIFY(PDFTEX) AC_SHELL_QUOTIFY(DVIPS) AC_SHELL_QUOTIFY(TEXI2HTML) AC_SHELL_QUOTIFY(TEXI2DVI) AC_SHELL_QUOTIFY(TEXI2PDF) AC_OUTPUT(Makefile tex-site.el.out:tex-site.el.in doc/Makefile auctex.el) cat >&2 < ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation ;; Author: KOBAYASHI Shinji ;; Maintainer: Masayuki Ataka ;; 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 was written by KOBAYASHI Shinji ;; based on many patches developed by Japanese NetNews community. ;; Japanese message translation by MATUI Takao . ;;; Code: (require 'latex) ;;; Customization (defgroup AUCTeX-jp nil "Japanese support in AUCTeX." :group 'AUCTeX) (defcustom japanese-TeX-engine-default 'ptex "Default TeX engine for Japanese TeX." :group 'AUCTeX-jp :type '(choice (const :tag "pTeX" ptex) (const :tag "jTeX" jtex) (const :tag "upTeX" uptex))) (setq TeX-engine-alist-builtin (append TeX-engine-alist-builtin '((ptex "pTeX" "ptex %(kanjiopt)" "platex %(kanjiopt)" "eptex") (jtex "jTeX" "jtex" "jlatex" nil) (uptex "upTeX" "euptex" "uplatex" "euptex")))) ;; $B=gD4$K9T$1$PITMW$K$J$k!#(B (defcustom japanese-TeX-command-list ;; Changed to double quotes for Windows afflicted people. I don't ;; use the %(latex) and %(tex) shorthands here because I have not ;; clue whether Omega-related versions exist. --dak '(("jTeX" "%(PDF)jtex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode) :help "Run NTT jTeX") ("jLaTeX" "%(PDF)jlatex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (latex-mode) :help "Run NTT jLaTeX") ("pTeX" "%(PDF)ptex %(kanjiopt)%`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode) :help "Run ASCII pTeX") ("pLaTeX" "%(PDF)platex %(kanjiopt)%`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (latex-mode) :help "Run ASCII pLaTeX") ("Mendex" "mendex %(mendexkopt)%s" TeX-run-command nil t :help "Create index file with mendex") ("jBibTeX" "jbibtex %s" TeX-run-BibTeX nil t :help "Run jBibTeX") ("pBibTeX" "pbibtex %(kanjiopt)%s" TeX-run-BibTeX nil t :help "Run pBibTeX")) "Additional list of commands, especially for Japanese. For detail, see `TeX-command-list', to which this list is appended." :group 'AUCTeX-jp :type '(repeat (group :value ("" "" TeX-run-command nil t) (string :tag "Name") (string :tag "Command") (choice :tag "How" :value TeX-run-command (function-item TeX-run-command) (function-item TeX-run-format) (function-item TeX-run-TeX) (function-item TeX-run-interactive) (function-item TeX-run-BibTeX) (function-item TeX-run-compile) (function-item TeX-run-shell) (function-item TeX-run-discard) (function-item TeX-run-background) (function-item TeX-run-silent) (function-item TeX-run-discard-foreground) (function-item TeX-run-function) (function-item TeX-run-discard-or-function) (function :tag "Other")) (boolean :tag "Prompt") (choice :tag "Modes" (const :tag "All" t) (set (const :tag "Plain TeX" plain-tex-mode) (const :tag "LaTeX" latex-mode) (const :tag "DocTeX" doctex-mode) (const :tag "ConTeXt" context-mode) (const :tag "Texinfo" texinfo-mode) (const :tag "AmSTeX" ams-tex-mode))) (repeat :tag "Menu elements" :inline t sexp)))) ;; $B=gD4$K9T$1$PITMW$K$J$k!#(B (setq TeX-command-list (append japanese-TeX-command-list '(("-" "" ignore nil t)) ;; separator for command menu TeX-command-list)) ;; $B;CDj=hCV!#(Btex.el $B$K$K$b$b$C$HH=7?$N%*%W%7%g%s$,$"$k$,!"(B ;; $BA4ItLLE]8+$F$k$H%-%j$,$J$$$N$G!"$3$l$/$i$$$G$$$$$@$m$&!#(B ;; jsarticle.el $B$d(B jsbook.el $B$GDI2CJ,$N=hM}$r;E9~$a$P$$$$$N$+$bCN$l$J$$!#(B ;; $B;CDj=hCV!#(Btex.el $B$KA0$O0c$&$+$b!D!#(B (euc-jis-2004 . "euc") (iso-2022-jp-2004 . "jis") (japanese-shift-jis-2004 . "sjis") (japanese-cp932 . "sjis") (eucjp-ms . "euc")))))) (defun japanese-TeX-get-encoding-string () "Return coding option string for Japanese pTeX family. For inappropriate encoding, nil instead." (or (japanese-TeX-coding-ejsu buffer-file-coding-system) ;; $BJ#?t%U%!%$%k$KJ,3d$7$?J8=q$N>l9g!"(Bemacs $B$G3+$$$?%U%!%$%k$,F|K\(B ;; $B8l$r#1;z$b4^$^$J$$$3$H$,$"$k!#$3$N$?$a!"$=$N%U%!%$%k$N(B ;; buffer-file-coding-system $B$OF|K\8l%3!<%I$,ITDj$KN1$^$C$F(B ;; $B$7$^$&2DG=@-$,$"$k!#$=$N$h$&$J>l9g!"(Bmaster file $B$N(B ;; buffer-file-coding-system $B$r;H$&!#(B (if (stringp TeX-master) ; $B<+J,$,;R%U%!%$%k$N$H$-(B (let ((buf (get-file-buffer (TeX-master-file t)))) (if buf (japanese-TeX-coding-ejsu (with-current-buffer buf buffer-file-coding-system))))) ;; $B$=$l$G$b7h$a$i$l$J$$>l9g$O(B buffer-file-coding-system $B$N(B ;; default $BCM$r;H$&!#(B (japanese-TeX-coding-ejsu (default-value 'buffer-file-coding-system)))) ) ;;; Japanese TeX modes (defvar japanese-TeX-mode nil "Non-nil means the current buffer handles Japanese TeX/LaTeX.") (make-variable-buffer-local 'japanese-TeX-mode) (put 'japanese-TeX-mode 'permanent-local t) ;;;###autoload (defun japanese-plain-tex-mode () "Major mode in AUCTeX for editing Japanese plain TeX files. Set `japanese-TeX-mode' to t, and enter `TeX-plain-tex-mode'." (interactive) (setq japanese-TeX-mode t) (TeX-plain-tex-mode)) (defun japanese-plain-tex-mode-initialization () "Japanese plain-TeX specific initializations." (when japanese-TeX-mode ; (setq TeX-command-default japanese-TeX-command-default) (TeX-engine-set japanese-TeX-engine-default))) (add-hook 'plain-TeX-mode-hook 'japanese-plain-tex-mode-initialization) ;;;###autoload (defun japanese-latex-mode () "Major mode in AUCTeX for editing Japanese LaTeX files. Set `japanese-TeX-mode' to t, and enter `TeX-latex-mode'." (interactive) (setq japanese-TeX-mode t) (TeX-latex-mode)) (defun japanese-latex-mode-initialization () "Japanese LaTeX specific initializations." (when japanese-TeX-mode ; (setq TeX-command-default japanese-LaTeX-command-default) (TeX-engine-set ;; class file $BL>$KMj$k$N$O@5$7$$$N$+!)(B ;; jLaTeX $B$K$b(B jarticle $B$O0l1~$"$k$7!"(BpLaTeX $B$G$b<+J,$G(B j-article $B$r(B ;; $B%$%s%9%H!<%k$7$F;H$C$F$$$1$J$$K!$O$J$$!#(B (cond ((TeX-match-style "\\`u[jt]\\(article\\|report\\|book\\)\\'\\|\\`uplatex\\'") 'uptex) ((TeX-match-style "\\`[jt]s?\\(article\\|report\\|book\\)\\'") 'ptex) ((TeX-match-style "\\`j-\\(article\\|report\\|book\\)\\'") 'jtex) (t japanese-TeX-engine-default))) (setq LaTeX-default-style japanese-LaTeX-default-style) ; (setq TeX-command-BibTeX ; (if (and (eq TeX-engine 'ptex) (executable-find "pbibtex")) ; "pBibTeX" "jBibTeX")) )) (add-hook 'LaTeX-mode-hook 'japanese-latex-mode-initialization) ;;; Support for various self-insert-command (fset 'japanese-TeX-self-insert-command (cond ((fboundp 'can-n-egg-self-insert-command) 'can-n-egg-self-insert-command) ((fboundp 'egg-self-insert-command) 'egg-self-insert-command) ((fboundp 'canna-self-insert-command) 'canna-self-insert-command) (t 'self-insert-command))) (defun TeX-insert-punctuation () "Insert point or comma, cleaning up preceding space." (interactive) (expand-abbrev) (if (TeX-looking-at-backward "\\\\/\\(}+\\)" 50) (replace-match "\\1" t)) (call-interactively 'japanese-TeX-self-insert-command)) ;;; Error Messages (if japanese-TeX-error-messages (setq TeX-error-description-list '(("Bad \\\\line or \\\\vector argument.*" . "$B@~$N79$-$r;XDj$9$k!$(B\\line$B$^$?$O(B\\vector$B$N:G=i$N0z?t$,IT@5$G$9!%(B") ("Bad math environment delimiter.*" . "$B?t<0%b!<%ICf$G?t<0%b!<%I3+;O%3%^%s%I(B\\[$B$^$?$O(B\\($B!$$^$?$O!$?t<0%b!<%I30$G(B $B?t<0%b!<%I=*N;%3%^%s%I(B\\]$B$^$?$O(B\\)$B$r(BTeX$B$,8+$D$1$^$7$?!%$3$NLdBj$O!$?t<0%b!<(B $B%I$N%G%j%_%?$,%^%C%A$7$F$$$J$+$C$?$j!$3g8L$N%P%i%s%9$,$H$l$F$$$J$+$C$?$j$9(B $B$k$?$a$K@8$8$^$9!%(B") ("Bad use of \\\\\\\\.*" . "\\\\$B%3%^%s%I$,%Q%i%0%i%UCf$K$"$j$^$7$?!%$3$N;H$$$+$?$OL50UL#$G$9!%(B $B$3$N%(%i!<%a%C%;!<%8$O(B\\\\$B$,(Bcentering$B4D6-$d(Bflushing$B4D6-$G;H$o$l$?(B $B;~!$$"$k$$$O(Bcentering/flushing$B@k8@$,M-8z$J$H$3$m$G;H$o$l$?;~$K@8$8$^$9!%(B") ("\\\\begin{[^ ]*} ended by \\\\end{[^ ]*}." . "$BBP1~$9$k(B\\begin$BL?Na$N$J$$(B\\end$BL?Na$r(BLaTeX$B$,8+$D$1$^$7$?!%(B\\end$BL?Na$N4D(B $B6-L>$r4V0c$($?$+!$M>J,$J(B\\begin$BL?Na$,$"$k$+!$(B\\end$BL?Na$r$o$9$l$?$+$N$$$:(B $B$l$+$G$7$g$&!%(B") ("Can be used only in preamble." . "$B%W%j%"%s%V%k$G$7$+;H$($J$$(B\\documentclass$B!&(B\\nofiles$B!&(B\\includeonly \\makeindex$B!&(B\\makeglossary$B$N$&$A$N$$$:$l$+$,(B\\begin{document}$B$h$j$b(B $B8e$G;H$o$l$F$$$k$N$r(BLaTeX$B$,8!=P$7$^$7$?!%$3$N%(%i!<$O(B\\begin{document} $B$,M>J,$K$"$C$?;~$K$b@8$8$^$9!%(B") ("Command name [^ ]* already used.*" . "$B$9$G$KDj5A$5$l$F$$$kL?NaL>$^$?$O4D6-L>$KBP$7$F(B\\newcommand$B!&(B \\newenvironment$B!&(B\\newlength$B!&(B\\newsavebox$B!&(B\\newtheorem$B$N$&$A$N$$$:(B $B$l$+$rA0$NL?Na$,<+F0(B $BE*$KDj5A$5$l$k$N$G!$4{$KB8:_$9$k4D6-$HF1L>$NL?Na$ODj5A$G$-$^$;$s(B)$B!%?7(B $B$7$$L>A0$r9M$($k$+!$(B\\newcommand$B$+(B\\newenvironment$B$N>l9g$J$iBP1~$9$k(B \\renew...$BL?Na$r;H$o$J$1$l$P$J$j$^$;$s!%(B") ("Counter too large." . "1. $BJ8;z$G=g=xIU$1$5$l$?$b$N!$$?$V$sHV9fIU$1$5$l$?%j%9%H4D6-$N%i%Y%k$,!$(B 26$B$h$j$bBg$-$$HV9f$ro$KD9$$%j%9%H$r;H$C$F$$$k$+!$(B $B%+%&%s%?$r:F@_Dj$7$F$7$^$C$?$+$N$$$:$l$+$G$7$g$&!%(B 2. $B5SCm$,J8;z$^$?$O5SCm5-9f$G=g=x$E$1$5$l$F$$$^$9$,!$J8;z$^$?$O5-9f$r(B $B;H$$@Z$C$F$7$^$$$^$7$?!%$*$=$i$/(B\\thanks$BL?Na$N;H$$$9$.$G$9!%(B") ("Environment [^ ]* undefined." . "$BDj5A$5$l$F$$$J$$4D6-$KBP$9$k(B\\begin$BL?Na$r(BLaTeX$B$,8+$D$1$^$7$?!%$*$=$i$/(B $B4D6-L>$r4V0c$($?$N$G$7$g$&!%(B") ("Float(s) lost." . "parbox$B$N$J$+$K(Bfigure$B4D6-!&(Btable$B4D6-$^$?$O(B\\marginpar$BL?Na$,$"$j$^$7$?(B \($B$J$*!$(Bparbox$B$O(Bminipage$B4D6-$+(B\\parbox$BL?Na$K$h$C$F:n$i$l$k$+!$5SCm$d?^(B $B$J$I$KBP$7$F(BLaTeX$B$,@8@.$9$k$b$N$G$9(B\)$B!%$3$l$O=PNO;~$N%(%i!<$J$N$G!$860x(B $B$H$J$C$F$$$k4D6-$"$k$$$OL?Na$O!$(BLaTeX$B$,LdBj$rH/8+$7$?>l=j$h$j$b$@$$$V(B $B$sA0$K$"$k2DG=@-$,$"$j$^$9!%=PNO$5$l$F$$$J$$?^!&I=!&K5Cm$J$I$,$$$/$D$+(B $B$"$k$+$b$7$l$^$;$s$,!$$=$l$i$,860x$G$"$k$H$O8B$j$^$;$s!%(B") ("Illegal character in array arg." . "array$B4D6-$^$?$O(Btabular$B4D6-$N0z?t!$$^$?$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t(B $B$NCf$KIT@5$JJ8;z$,$"$j$^$7$?!%(B") ("Missing \\\\begin{document}." . "\\begin{document}$BL?Na$h$jA0$K(BLaTeX$B$,=PNO$r9T$J$C$F$7$^$$$^$7$?!%(B \\begin{document}$BL?Na$rK:$l$?$+!$%W%j%"%s%V%k$K2?$+4V0c$$$,$"$k$N$G$7$g$&!%(B $BBG$A4V0c$$$K$h$kJ8;z$d!$@k8@$N8m$j$K$h$k2DG=@-$b$"$j$^$9!%Nc$($P!$0z?t$r(B $B0O$`3g8L$rH4$+$7$?$H$+!$L?NaL>$N(B\\$B$rK:$l$?>l9g$J$I$G$9!%(B") ("Missing p-arg in array arg.*" . "array$B4D6-!&(Btabular$B4D6-$N0z?t!$$"$k$$$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t$NCf$K!$(B $B3g8L$K0O$^$l$?I=8=$N$D$$$F$$$J$$(Bp$B$,$"$j$^$7$?!%(B") ("Missing @-exp in array arg." . "array$B4D6-!&(Btabular$B4D6-$N0z?t!$$"$k$$$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t$NCf$K!$(B @$BI=8=$N$D$$$F$$$J$$(B@$B$,$"$j$^$7$?!%(B") ("No such counter." . "\\setcounter$BL?Na$^$?$O(B\\addtocounter$BL?Na$G!$B8:_$7$J$$%+%&%s%?$,;XDj$5$l(B $B$^$7$?!%$*$=$i$/$?$@$N%?%$%W%_%9$G$7$g$&!%$?$@$7!$%(%i!<$,(Baux$B%U%!%$%k$NCf(B $B$G@8$8$?>l9g$O!$(B\\newcounter$BL?Na$r%W%j%"%s%V%k$N30$G;H$C$?$N$@$H;W$o$l$^$9!%(B") ("Not in outer par mode." . "figure$B4D6-!&(Btable$B4D6-$"$k$$$O(B\\marginpar$BL?Na$,?t<0%b!<%I$^$?$O(Bparbox$B$NCf(B $B$G;H$o$l$^$7$?!%(B") ("\\\\pushtabs and \\\\poptabs don't match." . "\\pushtabs$B$HBP1~$7$J$$(B\\poptabs$B$,$_$D$+$C$?$+!$$^$?$O!$BP1~$9$k(B\\poptabs $B$r$b$?$J$$(B\\pushtabs$B$,$"$k$N$K(B\\end{tabbing}$B$,8=$l$F$7$^$$$^$7$?!%(B") ("Something's wrong--perhaps a missing \\\\item." . "$B%j%9%H4D6-$NCf$K(B\\item$BL?Na$,$J$$$N$,:G$b$"$j$=$&$J%1!<%9$G$9!%(B thebibliography$B4D6-$G0z?t$rK:$l$?>l9g$K$b@8$8$^$9!%(B") ("Tab overflow." . "\\=$B$,!$(BLaTeX$B$G5v$5$l$k%?%V%9%H%C%W$N:GBg?t$rD6$($F$$$^$9!%(B") ("There's no line here to end." . "\\newline$BL?Na$^$?$O(B\\\\$BL?Na$,%Q%i%0%i%U4V$K$"$j$^$9!%$3$N;H$$$+$?$O(B $BL50UL#$G$9!%$b$76u9T$r$"$1$?$$$N$G$7$?$i!$(B\\vspace$B$r;H$C$F$/$@$5$$!%(B") ("This may be a LaTeX bug." . "$B$^$C$?$/$o$1$,$o$+$i$J$/$J$C$F$7$^$$$^$7$?!%$?$V$s$3$l0JA0$K8!=P$5$l$?(B $B%(%i!<$N$;$$$@$H;W$o$l$^$9!%$7$+$7!$(BLaTeX$B<+BN$N%P%0$G$"$k2DG=@-$b$"$j$^$9!%(B $B$b$7$3$N%(%i!<$,F~NO%U%!%$%k$KBP$9$k:G=i$N%(%i!<$G$"$j!$2?$b4V0c$$$,8+$D(B $B$+$i$J$$>l9g$O!$$=$N%U%!%$%k$rJ]B8$7$F!$%m!<%+%k%,%$%I$K=q$+$l$F$$$k@UG$(B $B/$J$/$H$b(B4$BCJ3,$^$G$O5v$5$l$F$$$^$9(B($BIaDL$O(B $B$=$l$G==J,$G$7$g$&(B)$B!%(B") ("Too many unprocessed floats." . "$B$3$N%(%i!<$O(B1$B%Z!<%8Cf$N(B\\marginpar$BL?Na$,B?$9$.$k$?$a$K@8$8$k>l9g$b$"(B $B$j$^$9$,!$$b$C$H$"$j$=$&$J$N$O!$8B3&$rD6$($F?^$dI=$rJ]B8$7$h$&$H$7$?>l(B $B9g$G$9!%D9$$J8=q$rAHHG$7$F$$$/$H$-!$(BLaTeX$B$O?^$dI=$r8D!9$KJ]B8$7!$%Z!<(B $B%8$NJ,3d$r9T$J$&;~$K$=$l$i$rA^F~$7$^$9!%$3$N%(%i!<$O!$%Z!<%8$X$NJ,3d$,(B $B9T$J$o$l$kA0$K!$$"$^$j$K$bB?$/$N(Bfigure$B4D6-$d(Btable$B4D6-$,8+$D$+$C$?>l9g(B $B$K@8$8$^$9!%$3$NLdBj$O4D6-$N$&$A$N$$$/$D$+$rJ8=q$N=*$o$j$NJ}$K0\F0$9$l(B $B$P2r7h$G$-$^$9!%$^$?!$$3$N%(%i!<$O(B``logjam''$B$K$h$C$F@8$8$k$3$H$b$"$j$^(B $B$9!%(B``logjam''$B$H$O!$(BLaTeX$B$,=P8==g=xDL$j$K$7$+?^I=$r=PNO$G$-$J$$$;$$$G!$(B $B?^I=$N=PNO$,(B1$B%v=j$G$b$D$^$k$H$=$N8e$m$N?^I=$,8.JB$_$9$Y$F$D$C$+$($F$7$^(B $B$&$3$H$r$$$$$^$9!%$3$N%8%c%`$N860x$O!$Bg$-$9$.$F(B1$B%Z!<%8$J$$$7$O%*%W%7%g(B $B%s0z?t$G;XDj$5$l$?0LCV$K<}$^$i$J$$$h$&$J?^$dI=$G$"$k2DG=@-$,$"$j$^$9!%$3(B $B$l$O!$0z?t$K(Bp$B%*%W%7%g%s$,;XDj$5$l$F$$$J$$$H5/$-$d$9$/$J$j$^$9!%(B") ("Undefined tab position." . "\\>$B!&(B\\+$B!&(B\\-$B$^$?$O(B\\<$BL?Na$G!$B8:_$7$J$$%?%V0LCV!$$9$J$o$A(B\\=$BL?Na$GDj(B $B5A$5$l$F$$$J$$%?%V0LCV$r;XDj$7$h$&$H$7$F$$$^$9!%(B") ("\\\\< in mid line." . "\\<$BL?Na$,(Btabbing$B4D6-$N9T$NESCf$K8=$l$^$7$?!%$3$NL?Na$O9T$N@hF,$K$J$1$l$P(B $B$J$j$^$;$s!%(B") ("Double subscript." . "$B?t<0Cf$N(B1$B$D$NNs$K(B2$B$D$N2eIU$-J8;z$,$D$$$F$$$^$9!%Nc$($P(Bx^{2}^{3}$B$N$h$&$K!%(B $B$3$N$h$&$JI=8=$OL50UL#$G$9!%(B") ("Extra alignment tab has been changed to \\\\cr." . "array$B4D6-$^$?$O(Btabular$B4D6-$N(B1$BNsCf$K$"$k9`L\$,B?$9$.$^$9!%8@$$49$($k$H!$(B $BNs$N=*$o$j$^$G$K$"$k(B&$B$N?t$,B?$9$.$^$9!%$*$=$i$/A0$NNs$N:G8e$K(B\\\\$B$r$D$1(B $B$k$N$rK:$l$?$N$G$7$g$&!%(B") ("Extra \\}, or forgotten \\$." . "$B3g8L$^$?$O?t<0%b!<%I$N%G%j%_%?$,@5$7$/BP1~$7$F$$$^$;$s!%$*$=$i$/(B{$B!&(B\\[$B!&(B \\($B$"$k$$$O(B$$B$N$&$A$N$$$:$l$+$r=q$-K:$l$?$N$G$7$g$&!%(B") ("Font [^ ]* not loaded: Not enough room left." . "$B$3$NJ8=q$O8B3&$h$j$bB?$/$N%U%)%s%H$r;H$C$F$$$^$9!%$b$7J8=q$NItJ,$4$H$K(B $BJL!9$N%U%)%s%H$,;H$o$l$F$$$k$N$J$i!$J,3d$7$F=hM}$9$l$PLdBj$O2r7h$5$l$^$9!%(B") ("I can't find file `.*'." . "$BI,MW$J%U%!%$%k$,8+$D$+$j$^$;$s$G$7$?!%$b$78+$D$+$i$J$$%U%!%$%k$N3HD%;R(B $B$,(Btex$B$N>l9g!$$"$J$?$,;XDj$7$?%U%!%$%k!$$9$J$o$A%a%$%s%U%!%$%k$^$?$O(B \\input$BL?Na!&(B\\include$BL?Na$GA^F~$5$l$k%U%!%$%k$,8+$D$+$i$J$$$N$G$9!%(B $B3HD%;R$,(Bsty$B$G$"$l$P!$B8:_$7$J$$J8=q%9%?%$%k$^$?$O%9%?%$%k%*%W%7%g%s$r(B $B;XDj$7$h$&$H$7$F$$$^$9!%(B") ("Illegal parameter number in definition of .*" . "$B$3$l$O$*$=$i$/!$(B\\newcommand$B!&(B\\renewcommand$B!&(B\\newenvironment$B$^$?$O(B \\renewenvironment$BL?Na$N$J$+$G(B#$B$,@5$7$/;H$o$l$J$+$C$?$?$a$K@8$8$?%(%i!<(B $B$G$9!%(B\\#$BL?Na$H$7$F;H$o$l$k>l9g$r=|$1$P!$(B#$B$H$$$&J8;z$O!$Nc$($P(B2$BHVL\$N(B $B0z?t$r;XDj$9$k(B#2$B$N$h$&$K!$0z?t%Q%i%a!<%?$H$7$F$7$+;H$($^$;$s!%$^$?!$(B $B$3$N%(%i!<$O!$>e$K$"$2$?(B4$B$D$N%3%^%s%I$,$*8_$$$KF~$l;R$K$J$C$F$$$k>l9g(B $B$d!$(B\\newenvironment$BL?Na!&(B\\renewenvironment$BL?Na$G(B#2$B$N$h$&$J%Q%i%a!<%?(B $B$,:G8e$N0z?t$NCf$G;H$o$l$F$$$k>l9g$K$b@8$8$^$9!%(B") ("Illegal unit of measure ([^ ]* inserted)." . "$B$b$7(B ! Missing number, treated as zero. $B$H$$$&%(%i!<$,5/$-$?D>8e$G$"$l$P!$$3$N%(%i!<$N860x$b$=$l$HF1$8$G$9!%(B $B$=$&$G$J$$>l9g$O!$(BLaTeX$B$,0z?t$H$7$F(Blength$B$r4|BT$7$F$$$k$N$K(Bnumber$B$,(B $B8=$l$?$3$H$r0UL#$7$F$$$^$9!%$3$N%(%i!<$N:G$b$"$j$,$A$J860x$OD9$5(B0$B$r(B $BI=$o$9(B0in$B$N$h$&$JI=8=$NBe$o$j$K(B0$B$H$+$$$F$7$^$&$3$H$K$"$j$^$9!%$?$@$7!$(B $BL?Na$N0z?t$r=q$-K:$l$?>l9g$K$b$3$N%(%i!<$,@8$8$k$3$H$,$"$j$^$9!%(B") ("Misplaced alignment tab character \\&." . "array$B$^$?$O(Btabular$B4D6-$G$N9`L\6h@Z$j$K$N$_;H$o$l$k$Y$-J8;z(B&$B$,IaDL$NJ8(B $B$NCf$K$"$j$^$7$?!%$?$V$s(B\\&$B$HF~NO$7$?$+$C$?$N$G$7$g$&!%(B") ("Missing control sequence inserted." . "$B$3$N%(%i!<$O!$$*$=$i$/L?NaL>$G$J$$$b$N$r(B\\newcommand$B!&(B\\renewcommand$B!&(B \\newlength$B$^$?$O(B\\newsavebox$B$NBh(B1$B0z?t$H$7$F;H$C$?$?$a$K@8$8$?$N$G$7$g$&!%(B") ("Missing number, treated as zero." . "$B$3$N%(%i!<$O$?$$$F$$!$0z?t$H$7$F(Bnumber$B$^$?$O(Blength$B$rI,MW$H$7$F$$$kL?Na$K(B $BBP$7$F0z?t$,M?$($i$l$J$+$C$?$?$a$K@8$8$^$9!%0z?t$r=q$-K:$l$?$N$+!$%F%-%9%H(B $B$NCf$NBg3g8L(B([])$B$,%*%W%7%g%s0z?t$N;XDj$H4V0c$($i$l$F$7$^$C$?$+$N$I$A$i$+$G(B $B$7$g$&!%$^$?!$?t$r@8@.$9$k(B\\value$B$N$h$&$JL?Na$d(Blength$BL?Na$NA0$K(B\\protect$B$r(B $BCV$$$?>l9g$K$b$3$N%(%i!<$O@8$8$^$9!%(B") ("Missing [{}] inserted." . "TeX$B$O4{$K$o$1$,$o$+$i$J$/$J$C$F$$$^$9!%%(%i!<%a%C%;!<%8$K$h$C$F<($5$l$F(B $B$$$k>l=j$O$?$V$sF~NO$K4V0c$$$,$"$C$?$H$3$m$h$j$b8e$m$K$J$C$F$7$^$C$F$$$k(B $B$G$7$g$&!%(B") ("Missing \\$ inserted." . "$B$*$=$i$/!$?t<0%b!<%ICf$G$7$+;H$($J$$L?Na$r(BTeX$B$,?t<0%b!<%I30$G8!=P$7$?(B $B$N$@$H;W$o$l$^$9!%FC$K5-=R$5$l$F$$$J$$8B$j!$(BLaTeX Book(Lamport$BCx(B,$BLu=q(B $B$O%"%9%-!<=PHG(B)$B$N(B3.3$B@a$K$"$kE:;z!&J,?t!&?t3X5-9f$J$I$N%3%^%s%I$O$9$Y$F(B $B?t<0%b!<%I$G$7$+;H$($J$$$N$@$H$$$&$3$H$KCm0U$7$F$/$@$5$$!%$?$H$(L?Na$,(B $B?t<04D6-$NCf$K$"$C$?$H$7$F$b!$(Bbox$B$r@8@.$9$kL?Na$N0z?t$r=hM}$7$O$8$a$?(B $B;~E@$G$O!$(BTeX$B$O$^$@?t<0%b!<%I$KF~$C$F$$$J$$$N$G$9!%$^$?!$$3$N%(%i!<$O!$(B $B?t<0%b!<%ICf$G(BTeX$B$,6u9T$r8!=P$7$?>l9g$K$b@8$8$^$9!%(B") ("Not a letter." . "\\hyphenation$BL?Na$N0z?t$NCf$K$J$K$+@5$7$/$J$$$b$N$,$"$j$^$9!%(B") ("Paragraph ended before [^ ]* was complete." . "$BL?Na$N0z?t$NCf$KIT@5$J6u9T$,F~$C$F$7$^$C$F$$$^$9!%$*$=$i$/0z?t$N=*$o$j(B $B$KJD$83g8L$r$D$1$k$N$rK:$l$?$N$G$7$g$&!%(B") ("\\\\[^ ]*font [^ ]* is undefined .*" . "$B$3$N%(%i!<$O$"$^$j0lHLE*$G$J$$%U%)%s%H$,?t<0%b!<%I$G;H$o$l$?;~$K@8$8(B $B$^$9!%Nc$($P!$5SCm$NCf$N?t<0$G(B\\sc$BL?Na$,;H$o$l$k$H!$(Bfootnotesize$B$N(B small caps$B%U%)%s%H$,8F$S$@$5$l$k$3$H$K$J$j$^$9!%$3$NLdBj$O(B\\load$BL?Na$r(B $B;H$($P2r7h$G$-$^$9!%(B") ("Font .* not found." . "$BL$CN$N(Bfamily/series/shape/size$B$NAH$_9g$o$;$N%U%)%s%H$,;XDj$5$l$^$7$?!%(B $B$3$N%(%i!<$,5/$-$k%1!<%9$O(B2$B$D9M$($i$l$^$9!%(B 1) \\size$B%^%/%m$G;H$($J$$%5%$%:$rA*Br$7$h$&$H$7$?!%(B 2) $B$=$&$G$J$1$l$P!$4IM}l9g$I$&$9$l(B $B$P$$$$$N$+$rH=CG$9$kJ}K!$r0J2<$K@bL@$7$^$9!%$b$7LdBj$,F~NO%U%!%$%kCf$N(B $B%(%i!<$K$"$k>l9g$O!$8D!9$N%(%i!<$r2r7h$7$F$$$/J}K!$r$H$k$N$,$h$$$G$7$g(B $B$&!%(BLaTeX$B$,C;$$%U%!%$%k$G%a%b%j$r;H$$$-$k$3$H$O$a$C$?$K$"$j$^$;$s$+$i!$(B $B%(%i!<$N5/$-$?0LCV$h$jA0$K=hM}$7$?%Z!<%8$,?t%Z!<%8$7$+$J$1$l$P!$$^$:4V(B $B0c$$$J$/F~NO%U%!%$%k$KLdBj$,$"$k$O$:$G$9!%(B $B%(%i!<%a%C%;!<%8$N:G8e$K!$(BTeX$B$,;H$$$-$C$F$7$^$C$?%a%b%j$NO@a!&(B\\caption$B!&(B\\addcontentsline$B$"$k$$$O(B\\addtocontents$BL?Na$N0z?t$H(B $B$7$FM?$($?%F%-%9%H$,D9$9$.$k>l9g$K@8$8$k$3$H$,$"$j$^$9!%$3$N%(%i!<$O(B $B$?$$$F$$(B\\end{document}$B$r=hM}$7$F$$$k;~$K@8$8$^$9$,!$(B\\tableofcontents$B!&(B \\listoffigures$B$"$k$$$O(B\\listoftables$BL?Na$rl9g$K$b5/$-$k(B $B$3$H$,$"$j$^$9!%$3$NLdBj$r2r7h$9$k$K$O!$$b$C$HC;$$%F%-%9%H$r%*%W%7%g%s(B $B0z?t$H$7$FM?$($F$/$@$5$$!%L\e$K%O%$%U%M!<%7%g%s>pJs$rM?$($h$&$H$7$F$$$^$9!%(B $B$"$^$j;H$o$J$$C18l$N(B\\hyphenation$BL?Na$r$NDj5A$^$?$OAj8_;2>H%i%Y%k$NDj5A$,B?$9$.$^$9!%(B input stack size ================ $B$3$N%(%i!<$O$*$=$i$/L?NaDj5ACf$N8m$j$K$h$k$b$N$G$9!%Nc$($P!$l9g$N$$$:$l$+$G$9!%(B \(1\)$BHs>o$KD9$/J#;($JL?Na$r?tB?$/Dj5A$7$?!%(B(2)index$B$^$?$O(Bglossary$B$r:n$C(B $B$F$$$k$H$-!$(B1$B%Z!<%8Cf$K$"$^$j$K$bB?$/$N(B\\index$B$^$?$O(B\\glossary$BL?Na$,$"(B $B$k!%(B(3)$B@8@.$N$?$a$N>pJs$r(BTeX$B$,J];}$7$-$l$J$$$h$&$J!$$"$^$j$K$bJ#;($J%Z!<(B $B%8$r@8@.$7$h$&$H$7$?!%:G=i$N(B2$B$D$NLdBj$N2r7hJ}K!$OL@$i$+$G$9!%L?NaDj5A(B $B$N?t$"$k$$$O(B\\index$B!&(B\\glossary$BL?Na$N?t$r8:$i$9$3$H$G$9!%(B3$BHVL\$NLdBj$O(B $B$A$g$C$HLq2p$G$9!%$3$l$O!$Bg$-$J(Btabbing$B!&(Btabular$B!&(Barray$B!&(Bpicture$B4D6-$N(B $B$;$$$G@8$8$k$3$H$,$"$j$^$9!%=PNO0LCV$,7hDj$5$l$k$N$rBT$C$F$$$k?^$dI=$G(B TeX$B$N%a%b%j$,$$$C$Q$$$K$J$C$F$$$k$N$+$b$7$l$^$;$s!%K\Ev$K(BTeX$B$NMFNL$rD6(B $B$($F$7$^$C$?$N$+$I$&$+D4$Y$k$?$a$K$O!$%(%i!<$N5/$3$C$?>l=j$ND>A0$K(B \\clearpage$BL?Na$rF~$l$F$b$&0lEY%3%s%Q%$%k$rM5$,$G$-$k$+$b$7$l$^$;$s(B(\\pagebreak$BL?Na$G$O$@$a$G$9(B)$B!%$b$7?^$dI=(B $B$,N/$^$C$F$$$k$3$H$,LdBj$J$N$J$i$P!$?^I=$r$b$C$H8e$m$NJ}$K0\F0$9$k$H$+!$(B $B$"$k$$$O$b$C$HA0$N;~E@$G=PNO$5$l$k$h$&$K$9$l$P2sHr$G$-$^$9!%$b$7$^$@J8(B $B=q$r:n@.$7$F$$$kESCf$J$i!$$H$j$"$($:(B\\clearpage$BL?Na$rF~$l$F$*$$$F!$:G(B $B=*HG$r:n$k;~$^$G$3$NLdBj$OC*>e$2$7$F$*$-$^$7$g$&!%F~NO%U%!%$%k$,JQ$o$k(B $B$HLdBj$,2r>C$5$l$k>l9g$b$"$k$N$G$9!%(B pool size ========= $BAj8_;2>H$N(B\\label$B$,B?$9$.$k$+!$L?Na$NDj5A$,B?$9$.$k$+$N$I$A$i$+$G$9!%(B $B@53N$K$$$($P!$Dj5A$7$?%i%Y%kL>$*$h$SL?NaL>$K;H$C$?J8;z?t$,B?$9$.$k$H$$(B $B$&$3$H$G$9!%$G$9$+$i!$$b$C$HC;$$L>A0$r;H$($P$3$NLdBj$O2r7h$7$^$9!%$?$@(B $B$7!$$3$N%(%i!<$O!$(B\\setcounter$B$J$I$N%+%&%s%?L?Na$d(B\\newenvironment$B!&(B \\newtheorem$BL?Na$N0z?t$N=*$o$j$r<($91&3g8L$rK:$l$?>l9g$K$b@8$8$^$9!%(B save size ========= $B$3$N%(%i!<$O!$@k8@$NM-8zHO0O$dL?Na!&4D6-$,$"$^$j$K$b?<$/F~$l;R$K$J$C$F(B $B$$$k>l9g$K@8$8$^$9!%$?$H$($P!$(B\\multiput$BL?Na$N0z?t$K(Bpicture$B4D6-$,$"$j!$(B $B$=$N$J$+$K(B\\footnotesize$B@k8@$,$"$j!$$=$N@k8@$NM-8zHO0O$K(B\\multiput$BL?Na(B $B$,$"$C$F!$$=$N0z?t$K(B... $B$H$$$&$h$&$J>l9g$G$9!%(B") ("Text line contains an invalid character." . "$BF~NOCf$KIT@5$JJ8;z$,4^$^$l$F$$$^$9!%%U%!%$%k:n@.$N8m$j$K$h$C$F%F%-%9%H(B $B%(%G%#%?$,$3$NJ8;z$rA^F~$7$F$7$^$C$?$N$G$7$g$&!%l9g$K$O%m!<%+%k%,%$%I$r8+$F$/$@$5$$!%(B") ("Undefined control sequence." . "TeX$B$,L$Dj5A$NL?NaL>$rH/8+$7$^$7$?!%$*$=$i$/F~NO$N8m$j$G$7$g$&!%$b$7$3(B $B$N%(%i!<$,(BLaTeX$BL?Na$N=hM}Cf$K@8$8$?>l9g$O!$$=$NL?Na$O4V0c$C$?0LCV$KCV$+(B $B$l$F$$$^$9!%Nc$($P!$%j%9%H4D6-$NCf$G$J$$$N$K(B\\item$BL?Na$,;H$o$l$?>l9g$J$I(B $B$G$9!%$^$?!$(B\\documentclass$BL?Na$,$J$$>l9g$K$b$3$N%(%i!<$,@8$8$^$9!%(B") ("Use of [^ ]* doesn't match its definition." . "$B$*$=$i$/IA2h$N$?$a$NL?Na$@$H;W$o$l$^$9$,!$0z?t$N;H$$$+$?$,4V0c$C$F$$(B $B$^$9!%4V0c$C$F$$$k$N$,(B\\@array$BL?Na$N>l9g$O!$(Barray$B4D6-$+(Btabular$B4D6-$G$N(B @$BI=8=$N0z?t$K$J$K$+8m$j$,$"$k$N$G$7$g$&!%(Bfragile$B$JL?Na$,(B\\protect$B$5$l$F(B $B$$$J$$$N$+$b$7$l$^$;$s!%(B") ("You can't use `macro parameter character \\#' in [^ ]* mode." . "$BFCl=j$,8+$D$+$i$J$+$C$?$N$G!$(B1$B9T$K<}$^$k$Y$-J,NL0J>e(B $B$N=PNO$,9T$J$o$l$F$7$^$$$^$7$?!%(B") ("Overfull \\\\vbox .*" . "$B%Z!<%8J,3d$N$?$a$NE,@Z$J>l=j$,8+$D$+$i$J$+$C$?$N$G!$(B1$B%Z!<%8$K<}$^$k$Y$-(B $BJ,NL0J>e$N=PNO$,9T$J$o$l$F$7$^$$$^$7$?!%(B") ("Underfull \\\\hbox .*" . "$BM>J,$J?bD>%9%Z!<%9$,$J$$$+$I$&$+=PNO$r3N$+$a$F$/$@$5$$!%$b$7$"$l$P!$$=(B $B$l$O(B\\\\$BL?Na$^$?$O(B\\newline$BL?Na$K4X78$9$kLdBj$N$?$a$K@8$8$?$b$N$G$9!%Nc(B $B$($P(B2$B$D$N(B\\\\$BL?Na$,B3$$$F$$$k>l9g$J$I$G$9!%$3$N7Y9p$O(Bsloppypar$B4D6-$d(B \\sloppy$B@k8@$N;HMQ!$$"$k$$$O(B\\linebreak$BL?Na$NA^F~$J$I$K$h$k>l9g$b$"$j$^$9!%(B") ("Underfull \\\\vbox .*" . "$B%Z!<%8$rJ,3d$9$k$?$a$NE,@Z$J>l=j$,8+$D$1$i$l$:!$==J,$J%F%-%9%H$N$J$$(B $B%Z!<%8$,$G$-$F$7$^$$$^$7$?!%(B") ;; New list items should be placed here ;; ;; ("err-regexp" . "context") ;; ;; the err-regexp item should match anything (".*" . "$B$4$a$s$J$5$$!%3:Ev$9$k%X%k%W%a%C%;!<%8$,$"$j$^$;$s!%(B")))) (provide 'tex-jp) ;;; tex-jp.el ends here auctex-11.87/images/0000755000000000000000000000000012056205151012763 5ustar rootrootauctex-11.87/images/bibtex.xpm0000644000000000000000000000305110130171404014757 0ustar rootroot/* XPM */ static char * bibtex14_xpm[] = { "24 24 55 1", " c None s backgroundToolBarColor", ". c #353535", "+ c #877D55", "@ c #B9AD74", "# c #606060", "$ c #878585", "% c #A89C6A", "& c #726A49", "* c #070705", "= c #9A9A9A", "- c #59533A", "; c #938960", "> c #C9C7BF", ", c #7C7C7C", "' c #3D3928", ") c #AFA379", "! c #AFAEA8", "~ c #938A63", "{ c #3F3B2A", "] c #8E865E", "^ c #B6AA72", "/ c #424242", "( c #373737", "_ c #4E4C41", ": c #565344", "< c #746D4E", "[ c #7E7652", "} c #8E845A", "| c #B0A46E", "1 c #775E5E", "2 c #F5F4F3", "3 c #D7D5D0", "4 c #BCB8AC", "5 c #A39F94", "6 c #817E71", "7 c #605D4F", "8 c #8A8058", "9 c #92885C", "0 c #826A6A", "a c #CACACA", "b c #FFFFFF", "c c #E6E6E5", "d c #D0D0D0", "e c #CCCCCC", "f c #C4C2B8", "g c #B5B2A5", "h c #918F84", "i c #59564C", "j c #F6F6F6", "k c #F3F2F0", "l c #AEAEAE", "m c #727272", "n c #909090", "o c #DCDCDC", "p c #A3A3A3", " ", " ", " .............. ", " .+@@@@@@@@@@@+# ", " $.@@@@@@@@@@@+. ", " .%&*@@@@@@@@@.= ", " .+@--@@*@-;@@+.> ", " $.@-*@@@@;*@@@.=>, ", " .%@*@*@*@'*@@+.>>..", " .+@*;--&&&*)*@.=>!, ", " $.@@@*-@*@*~~*@.>>,= ", " .%@@@@@@@@@{{@.=>!. ", " .+@@@@@@@@@@@@+.>>,= ", " $.]^@@@@@@@@@@@.=>!. ", " /(_:<[}|@@@@@@+.>>,= ", " /12234567:<[89.>>!. ", " /0abbb2cdefghi>>>,= ", " $#$ajbbbbbkcc>>!. ", " l=mnajbbbbbo>,= ", " l=mnajbbc>. ", " l=mnac,= ", " l=m. ", " p ", " "}; auctex-11.87/images/dvips.xpm0000644000000000000000000000322110130171404014626 0ustar rootroot/* XPM */ static char * dvips66_xpm[] = { "24 24 62 1", " c None s backgroundToolBarColor", ". c #4C4C4C", "+ c #000000", "@ c #7C7C7C", "# c #577A4D", "$ c #4C6B43", "% c #37452B", "& c #76996C", "* c #9BB594", "= c #648C58", "- c #DAE3D6", "; c #445636", "> c #67865E", ", c #A7BDA0", "' c #8EAB86", ") c #526741", "! c #425D3A", "~ c #4C603C", "{ c #566B43", "] c #5A7046", "^ c #869CB4", "/ c #00244C", "( c #002248", "_ c #0050A9", ": c #006FEB", "< c #0066D9", "[ c #00336D", "} c #295E29", "| c #5ABD5A", "1 c #001070", "2 c #004BA2", "3 c #0078FF", "4 c #0075FC", "5 c #004DB6", "6 c #00072F", "7 c #0047FF", "8 c #006DFF", "9 c #0042CA", "0 c #00169E", "a c #000A45", "b c #488148", "c c #0024FF", "d c #0027FF", "e c #0056ED", "f c #001FA7", "g c #00179F", "h c #4CA14C", "i c #4D904D", "j c #001DCE", "k c #4FA64F", "l c #000B4C", "m c #0023F5", "n c #001492", "o c #000E65", "p c #00010B", "q c #001AB9", "r c #0022F0", "s c #001387", "t c #000942", "u c #0037C4", "v c #6C84B7", "w c #000C57", " .+. ++++ ", " @+##$+@ +++%++ ", " +&**&=+ + +%+ ", " .#*-*&=$. +;+ ", " +>,*'==$+ +)+ ", " .#&&==#!. ++))~++ ", " +#==#$+ +{]{+ ", " @+!$!+@ +)+ ", " .+. + ", " ", " ^/ ", " ^(_:<[ ", "}}}| } } } 12:333456", "} } } } } 17833390a", "} } b b } 1cd7efg0a", "} } hiih } 1cccj000a", "} } bb } 1cccj000a", "}}}| kk } lmccj0nop", " lqrjst ", " uuuv vuuv 1w ", " u u u ", " uuuv vuuv ", " u u ", " u vuuv "}; auctex-11.87/images/exec.xpm0000644000000000000000000000252410130171404014432 0ustar rootroot/* XPM */ static char * exec6_xpm[] = { "24 24 41 1", " c None s backgroundToolBarColor", ". c #9F9D96", "+ c #3A3A3A", "@ c #B3B3B1", "# c #000000", "$ c #807D74", "% c #3C3C3C", "& c #76746B", "* c #5D5C55", "= c #6D6B63", "- c #65635C", "; c #8C8B89", "> c #E4E3E1", ", c #E2E2E2", "' c #484641", ") c #888781", "! c #B0AFAD", "~ c #A8A7A1", "{ c #908E86", "] c #97958E", "^ c #595854", "/ c #605E57", "( c #898883", "_ c #464542", ": c #4A4947", "< c #43423E", "[ c #E2E2E1", "} c #B6B5AF", "| c #494847", "1 c #434242", "2 c #464644", "3 c #E6E6E4", "4 c #484846", "5 c #DFDEDC", "6 c #B0AFA9", "7 c #D5D4D1", "8 c #93918B", "9 c #D6D5D2", "0 c #ABA9A3", "a c #494943", "b c #464540", " ", " . ++ @ ", " #@#..#.# ", " .@...$$$%. ", " #..&$*=# ", " +..&##@--+ ", " +.$$#;@-%+ ", " #$*@@$%# ", " @.$=--%%%. ", " #%#-%#%# ", " . ++ . %%% ", " %% %>% %% ", " %,@%'.'%)%% ", " %!~...{]$'% ", " %..^/($&% ", " %%'./_:<.='%% ", " %[}.^|123$-/% ", " %%'.(<4;5-'%% ", " %6$}378-%% ", " %90.$$&&*'% ", " %%^%'&'%a%% ", " %% %b%*%% ", " %%% ", " "}; auctex-11.87/images/amstex.xpm0000644000000000000000000001015710142361117015015 0ustar rootroot/* XPM */ static char * amstex_xpm[] = { "24 24 180 2", " c None s backgroundToolBarColor", ". c #3E9543", "+ c #409644", "@ c #3D9D45", "# c #3F9B42", "$ c #4C2A1F", "% c #4E3124", "& c #727E51", "* c #598A4E", "= c #5B6647", "- c #88624F", "; c #89383B", "> c #8B343B", ", c #6D5852", "' c #506D48", ") c #4C843E", "! c #648752", "~ c #B8A789", "{ c #80624D", "] c #7D6951", "^ c #FFFFC1", "/ c #94A676", "( c #8F8668", "_ c #977567", ": c #A86660", "< c #986C6A", "[ c #758660", "} c #708C60", "| c #6A6C4E", "1 c #C3C599", "2 c #988167", "3 c #5A3125", "4 c #561E1C", "5 c #958066", "6 c #BEA384", "7 c #68372B", "8 c #672124", "9 c #5B392F", "0 c #94917B", "a c #AFAC91", "b c #B8B39C", "c c #BDBCA0", "d c #B39073", "e c #582522", "f c #712E2B", "g c #6F292C", "h c #83826F", "i c #908F88", "j c #F8FFFD", "k c #686C8D", "l c #D7DBB8", "m c #716D76", "n c #7B7B92", "o c #D5D5B3", "p c #DBBD9A", "q c #81463B", "r c #691A19", "s c #838270", "t c #888791", "u c #6462D0", "v c #2C2B87", "w c #DAD9C7", "x c #868394", "y c #716DDC", "z c #2F2C94", "A c #C7C6B7", "B c #D2AF8D", "C c #84473C", "D c #6D1E1F", "E c #6E262C", "F c #BDBDAB", "G c #878593", "H c #909095", "I c #C0BEAF", "J c #A09EAD", "K c #A6A5A9", "L c #C19978", "M c #7C3D33", "N c #641C1F", "O c #662633", "P c #DBDCB8", "Q c #B4B492", "R c #E5D9AA", "S c #9F755A", "T c #50231F", "U c #672424", "V c #8E3B4B", "W c #E4E3BC", "X c #A5A28D", "Y c #D2D1B5", "Z c #E7E5C1", "` c #E3DFC0", " . c #E4CCA2", ".. c #894E3A", "+. c #461715", "@. c #632524", "#. c #95404E", "$. c #777776", "%. c #C0B396", "&. c #AAAB90", "*. c #463F31", "=. c #665E46", "-. c #7C7968", ";. c #B3AF92", ">. c #D4BD97", ",. c #804B37", "'. c #461F19", "). c #42201F", "!. c #5A4F43", "~. c #504334", "{. c #979183", "]. c #DCD8B5", "^. c #D0BC9D", "/. c #C8A487", "(. c #82493F", "_. c #3F1310", ":. c #401613", "<. c #664B46", "[. c #DCD9BC", "}. c #B8B59D", "|. c #8C8977", "1. c #E9E7C0", "2. c #A2897B", "3. c #AE8872", "4. c #CFB89A", "5. c #A6715F", "6. c #4B1D19", "7. c #68272E", "8. c #6E2933", "9. c #453E37", "0. c #767361", "a. c #7F8170", "b. c #7B7B6C", "c. c #8E897E", "d. c #827F6E", "e. c #83876F", "f. c #847E70", "g. c #9C7964", "h. c #662F2A", "i. c #5D2D2E", "j. c #783C3F", "k. c #87826E", "l. c #B3B99A", "m. c #D1D1AB", "n. c #DFDDB9", "o. c #C3B191", "p. c #826453", "q. c #6D2B2A", "r. c #884144", "s. c #772B2F", "t. c #702F34", "u. c #AEA28C", "v. c #C1C3A2", "w. c #AEA07E", "x. c #C8C09F", "y. c #C4C6A3", "z. c #B6886B", "A. c #774237", "B. c #7E3E3D", "C. c #854748", "D. c #78373B", "E. c #6A2932", "F. c #5F343C", "G. c #7C474A", "H. c #815655", "I. c #7F534F", "J. c #8A5C54", "K. c #74504B", "L. c #8C615F", "M. c #7E2C29", "N. c #8C4240", "O. c #7C322F", "P. c #703634", "Q. c #6D1B27", "R. c #975F59", "S. c #631D22", "T. c #65101D", "U. c #000000", "V. c #868686", "W. c #AFAEAE", " . + @ # $ ", " % & * = - ; > , ' ) ! ~ { ", " ] ^ / ( _ : < [ } | 1 2 3 4 ", " 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ 6 7 8 ", " 9 ^ 0 a ^ b 0 c ^ ^ d e f g ", " h i j k l m j n o ^ p q r ", " s t u v w x y z A ^ B C D E ", " ] F G H ^ I J K ^ ^ L M N O ", " ] ^ P Q ^ ^ ^ ^ ^ ^ R S T U V ", " ] ^ W X Y Z ` ^ ^ ^ ^ ...+.@.#. ", " $.$.%.%.&.*.=.-.;.%.%.%.^ >.,.'.). ", " %.%.^ ^ !.~.{.].^ ^ ^ ^./.(._.:. ", " $.$.<.[.^ }.|.1.^ 2.3.4.^ 5.6.7.8. ", " 9.0.a.b.c.d.e.f.^ ^ g.h.i.j. ", " k.^ l.^ ^ m.n.^ o.p.q.r.s.t. ", " u.v.%.w.x.y.z.A.B.C.D.E.F. ", " G.H.I.J.K.L.M.N.O.P. ", " Q.R. S. T. ", " ", " U.U. V.U.U.W. ", " U. U. U.U.V.U.V. U. ", " U. U. U. U. U. V.U.U.V. ", " U.U.U.U. U. U. U. U. ", " U.V. U. U. U. U. U.U.U.V. "}; auctex-11.87/images/view.xpm0000644000000000000000000000145110130171404014456 0ustar rootroot/* XPM */ static char * view15_xpm[] = { "24 24 4 1", " c None s backgroundToolBarColor", ". c #000000", "+ c #565656", "@ c #FFFFFF", " ", " ", " ", " ", " ... ", " .+ . ", " .+ . ", " .+ .+ ", " .+ .+ ... ", " .+ .+ ..", " .... .+ .", " .@@ +. .+ .+", " .@@@ +. .+ .+ ", " .@@@ . .... .+ ", " . @ ...@@ +.. ", " +. +. .@@@ +. ", " +.++. .@@@ . ", " +.. . @ . ", " +. +. ", " +.++. ", " +.. ", " ", " ", " "}; auctex-11.87/images/tex.xpm0000644000000000000000000001167510130171404014315 0ustar rootroot/* XPM */ static char * tex6_xpm[] = { "24 24 233 2", " c None s backgroundToolBarColor", ". c #3D9944", "+ c #3E9842", "@ c #3DA243", "# c #3C9B47", "$ c #3EA442", "% c #290400", "& c #304116", "* c #3E8D43", "= c #3F7744", "- c #977C5E", "; c #842835", "> c #9C3635", ", c #94506A", "' c #54764E", ") c #3DBA41", "! c #386C34", "~ c #CABC9A", "{ c #C1AE8E", "] c #795642", "^ c #907F62", "/ c #FFFFC1", "( c #94AC73", "_ c #664535", ": c #8A6A61", "< c #6D302B", "[ c #943A3B", "} c #772437", "| c #52382D", "1 c #664940", "2 c #99A578", "3 c #6E4835", "4 c #6D5642", "5 c #9DBA88", "6 c #A3B181", "7 c #A3A982", "8 c #B9968B", "9 c #BF8A7F", "0 c #CAA8A0", "a c #6F9966", "b c #CEE6B0", "c c #3E8946", "d c #808C6A", "e c #947F66", "f c #916B50", "g c #370708", "h c #5D181B", "i c #664437", "j c #F2DBB4", "k c #621E1C", "l c #782C33", "m c #411712", "n c #82806E", "o c #868266", "p c #C1BFA2", "q c #C7C2A8", "r c #82806A", "s c #84826C", "t c #E8E8C7", "u c #D1B08B", "v c #4A1A16", "w c #5C2628", "x c #7F3630", "y c #6B262B", "z c #82826F", "A c #BBBABD", "B c #F8FFFD", "C c #404448", "D c #48424A", "E c #FFFEFF", "F c #BBC0BB", "G c #9C6D56", "H c #5D201D", "I c #712723", "J c #868471", "K c #A29EF2", "L c #3132E4", "M c #181766", "N c #807E80", "O c #2F29CF", "P c #A46D56", "Q c #6C0E12", "R c #6B2731", "S c #7F7F6F", "T c #8E8BE8", "U c #141369", "V c #504D7F", "W c #848081", "X c #2725AA", "Y c #A46F58", "Z c #833A33", "` c #040400", " . c #BFBE98", ".. c #7F7F6C", "+. c #8D523D", "@. c #580F16", "#. c #66283A", "$. c #312B23", "%. c #DCDFBB", "&. c #E4D7A8", "*. c #B48566", "=. c #4E3025", "-. c #3F0810", ";. c #9C4256", ">. c #31302E", ",. c #E2E0C7", "'. c #ACA896", "). c #CFD1B0", "!. c #ECE6CB", "~. c #F0D9AC", "{. c #A26048", "]. c #50271C", "^. c #3D030C", "/. c #392F26", "(. c #E4E2CB", "_. c #ACAA92", ":. c #48453B", "<. c #878364", "[. c #83806D", "}. c #B2B496", "|. c #CFBD94", "1. c #8C5037", "2. c #4C2318", "3. c #351114", "4. c #522B2B", "5. c #B07F6B", "6. c #62433A", "7. c #A0876A", "8. c #BFBB96", "9. c #B8C2A0", "0. c #1E140C", "a. c #35210C", "b. c #2B2106", "c. c #A09A96", "d. c #CCBF9A", "e. c #AA8368", "f. c #B4846A", "g. c #AE826A", "h. c #D2B89A", "i. c #EAD0AA", "j. c #9E6852", "k. c #542D25", "l. c #441C16", "m. c #312019", "n. c #5F2D31", "o. c #604835", "p. c #A29A8F", "q. c #3D3123", "r. c #A09698", "s. c #BFBBA2", "t. c #C7BB9C", "u. c #B38A71", "v. c #A05250", "w. c #1A0400", "x. c #520308", "y. c #350010", "z. c #584C44", "A. c #444637", "B. c #7F625E", "C. c #834A3F", "D. c #AA7F6D", "E. c #D2BC9E", "F. c #E6E4BD", "G. c #A66456", "H. c #2B0702", "I. c #602A2B", "J. c #5A2229", "K. c #3C3831", "L. c #6F6B58", "M. c #797B6D", "N. c #484A3E", "O. c #ACA7A2", "P. c #4C463E", "Q. c #807E71", "R. c #686F5A", "S. c #605F56", "T. c #E0D9BC", "U. c #FDFACB", "V. c #C5BD9C", "W. c #8B5E4E", "X. c #561F1A", "Y. c #582E2F", "Z. c #6F3A3A", "`. c #814247", " + c #94947D", ".+ c #858B75", "++ c #9C9E81", "@+ c #E0DBBB", "#+ c #CFC19C", "$+ c #483325", "%+ c #661718", "&+ c #995657", "*+ c #732428", "=+ c #7B2C2E", "-+ c #655347", ";+ c #DACDA6", ">+ c #F6E5B8", ",+ c #73503A", "'+ c #643433", ")+ c #894043", "!+ c #9C5156", "~+ c #681B23", "{+ c #873E43", "]+ c #5D2E34", "^+ c #623C46", "/+ c #775A50", "(+ c #858271", "_+ c #987B71", ":+ c #524024", "<+ c #7D6C56", "[+ c #8A806F", "}+ c #7B826D", "|+ c #853626", "1+ c #894A3C", "2+ c #75292C", "3+ c #93594C", "4+ c #623739", "5+ c #8B5A56", "6+ c #4E0E1C", "7+ c #7E3F47", "8+ c #804047", "9+ c #6E3A3D", "0+ c #9F6662", "a+ c #A05A62", "b+ c #4C2626", "c+ c #A45862", "d+ c #731C21", "e+ c #964648", "f+ c #722020", "g+ c #620818", "h+ c #A0675E", "i+ c #561014", "j+ c #5A0414", " ", " . + @ + # $ % ", " % & * = - ; > , ' = ) ! ~ { ] ", " ^ / ( _ : < [ } | ' 1 _ 2 ~ % 3 ", " 4 / 5 6 7 8 9 0 a b c d / e f g h ", " i / / / / / / / / / / / j 3 k l ", " m / n o p / q r s t / / u v w x y ", " z z A B C / D E F n / / j G H I ", " J z K L M / N K O M / / j P h Q R ", " S z T U V / W T X V / / u Y h Z ", " ` t ...t / t . ./ / / u +.h @.#. ", " $.%./ ../ / / / / / / / &.*.=.-.Z ;. ", " >.,./ '.)./ / !./ / / / / ~.{.].^.Z ;. ", " /.(./ _.:.<.[...}./ / / / / |.1.2.3.4. ", "5.5.6.7.8.9.0.a.b.c.d.e.5.f.g.h.i.j.k.l.m.n. ", " o./ / / p.q.r.s./ / / / / t.u.v.w.x. ", "5.5.y.z./ / / A./ / / B.C.D.E.F.G.H.I.;.J. ", " K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. ", " +/ .+/ / / ++@+/ / #+$+%+&+*+=+ ", " -+/ / / ;+/ / / >+,+'+)+!+~+{+]+^+ ", " /+(+_+:+<+[+}+|+1+2+3+4+5+6+ ", " 7+7+8+9+0+a+b+c+d+e+ f+ ", " g+h+ i+ j+ ", " "}; auctex-11.87/images/execviewps.xpm0000644000000000000000000000172510130171404015672 0ustar rootroot/* XPM */ static char * execviewps12_xpm[] = { "24 24 15 1", " c None s backgroundToolBarColor", ". c #0037C4", "+ c #6C84B7", "@ c #000000", "# c #FFFFFF", "$ c #3A3A3A", "% c #65635C", "& c #9F9D96", "* c #807D74", "= c #3C3C3C", "- c #76746B", "; c #5D5C55", "> c #6D6B63", ", c #B3B3B1", "' c #8C8B89", " ...+ +..+ ", " . . . . ", " . . . ", " ...+ +..+ ", " . . ", " . . . ", " @@ . +..+ ", " @ @ ", " @ @ ", " @ @ @@ ", " @@ @ @ ", "@# @ @ @ ", "@## @ @@ @ @ ", "@## @@@# @@ ", " @ @ @## @ $$ ", " @@ @## @ @%@&&@%@ ", " @ @ %&&&***= ", " @@ @&&-*;>@ ", " $&&-@@,%%$", " $&**@',%=$", " @*;,,*=@ ", " %*>%%=== ", " @=@%=@=@ ", " $$ "}; auctex-11.87/images/viewpdf.xpm0000644000000000000000000000220510130171403015145 0ustar rootroot/* XPM */ static char * viewpdf5_xpm[] = { "24 24 27 1", " c None s backgroundToolBarColor", ". c #090909", "+ c #000000", "@ c #292929", "# c #8E8E8E", "$ c #2D2D2D", "% c #303030", "& c #2B2B2B", "* c #3C3C3C", "= c #1F1F1F", "- c #101010", "; c #1A1A1A", "> c #2E2E2E", ", c #FFFFFF", "' c #C3C3C3", ") c #252525", "! c #191919", "~ c #131313", "{ c #1D1D1D", "] c #0D0D0D", "^ c #121212", "/ c #444444", "( c #3B3B3B", "_ c #3D3D3D", ": c #080808", "< c #B50000", "[ c #AA7979", " .+ ", " @# + ", " $# @ ", " %# &# ", " @# ++ ", " *=- ;# + ", " >,,') !# ~ ", " >,, + !# {# ", " ],, ++ *=- =# ", " #^ /+ >,,')# ", " ($_: >,, + ", " ## ],, + ", " #^ /+ ", " ($_: ", " ## ", " ", " <<<[ <<<[ <<<[", " < < < < < ", " < < < < < ", " <<<[ < < <<[ ", " < < < < ", " < < < < ", " < <<<[ < ", " "}; auctex-11.87/images/exectex.xpm0000644000000000000000000001006210130171404015147 0ustar rootroot/* XPM */ static char * exectex40_xpm[] = { "24 24 176 2", " c None s backgroundToolBarColor", ". c #3E9543", "+ c #409644", "@ c #3D9D45", "# c #3F9B42", "$ c #4C2A1F", "% c #4E3124", "& c #727E51", "* c #598A4E", "= c #5B6647", "- c #88624F", "; c #89383B", "> c #8B343B", ", c #6D5852", "' c #506D48", ") c #4C843E", "! c #648752", "~ c #B8A789", "{ c #80624D", "] c #7D6951", "^ c #FFFFC1", "/ c #94A676", "( c #8F8668", "_ c #977567", ": c #A86660", "< c #986C6A", "[ c #758660", "} c #708C60", "| c #6A6C4E", "1 c #C3C599", "2 c #988167", "3 c #5A3125", "4 c #958066", "5 c #BEA384", "6 c #68372B", "7 c #672124", "8 c #5B392F", "9 c #94917B", "0 c #AFAC91", "a c #B8B39C", "b c #BDBCA0", "c c #B39073", "d c #582522", "e c #712E2B", "f c #83826F", "g c #908F88", "h c #F8FFFD", "i c #686C8D", "j c #D7DBB8", "k c #716D76", "l c #7B7B92", "m c #D5D5B3", "n c #DBBD9A", "o c #81463B", "p c #691A19", "q c #838270", "r c #888791", "s c #6462D0", "t c #2C2B87", "u c #DAD9C7", "v c #868394", "w c #716DDC", "x c #2F2C94", "y c #C7C6B7", "z c #D2AF8D", "A c #84473C", "B c #6D1E1F", "C c #975F59", "D c #BDBDAB", "E c #878593", "F c #909095", "G c #C0BEAF", "H c #A09EAD", "I c #A6A5A9", "J c #C19978", "K c #7C3D33", "L c #641C1F", "M c #DBDCB8", "N c #B4B492", "O c #E5D9AA", "P c #9F755A", "Q c #50231F", "R c #672424", "S c #E4E3BC", "T c #A5A28D", "U c #D2D1B5", "V c #E7E5C1", "W c #E3DFC0", "X c #E4CCA2", "Y c #894E3A", "Z c #461715", "` c #632524", " . c #979183", ".. c #665E46", "+. c #C0B396", "@. c #AAAB90", "#. c #463F31", "$. c #7C7968", "%. c #B3AF92", "&. c #D4BD97", "*. c #804B37", "=. c #461F19", "-. c #42201F", ";. c #5A4F43", ">. c #504334", ",. c #DCD8B5", "'. c #D0BC9D", "). c #C8A487", "!. c #82493F", "~. c #3F1310", "{. c #401613", "]. c #664B46", "^. c #DCD9BC", "/. c #B8B59D", "(. c #8C8977", "_. c #E9E7C0", ":. c #A2897B", "<. c #AE8872", "[. c #CFB89A", "}. c #A6715F", "|. c #4B1D19", "1. c #68272E", "2. c #767361", "3. c #7F8170", "4. c #7B7B6C", "5. c #8E897E", "6. c #827F6E", "7. c #83876F", "8. c #847E70", "9. c #9C7964", "0. c #662F2A", "a. c #5D2D2E", "b. c #783C3F", "c. c #87826E", "d. c #B3B99A", "e. c #D1D1AB", "f. c #DFDDB9", "g. c #C3B191", "h. c #826453", "i. c #6D2B2A", "j. c #884144", "k. c #772B2F", "l. c #3A3A3A", "m. c #AEA28C", "n. c #C1C3A2", "o. c #AEA07E", "p. c #C8C09F", "q. c #C4C6A3", "r. c #B6886B", "s. c #774237", "t. c #7E3E3D", "u. c #854748", "v. c #78373B", "w. c #000000", "x. c #65635C", "y. c #9F9D96", "z. c #7C474A", "A. c #815655", "B. c #7F534F", "C. c #8A5C54", "D. c #74504B", "E. c #8C615F", "F. c #7E2C29", "G. c #8C4240", "H. c #7C322F", "I. c #703634", "J. c #807D74", "K. c #3C3C3C", "L. c #6D1B27", "M. c #631D22", "N. c #65101D", "O. c #76746B", "P. c #5D5C55", "Q. c #6D6B63", "R. c #B3B3B1", "S. c #8C8B89", " . + @ # $ ", " % & * = - ; > , ' ) ! ~ { ", " ] ^ / ( _ : < [ } | 1 2 3 ", " 4 ^ ^ ^ ^ ^ ^ ^ ^ ^ 5 6 7 ", " 8 ^ 9 0 ^ a 9 b ^ ^ c d e ", " f g h i j k h l m ^ n o p ", " q r s t u v w x y ^ z A B C ", " ] D E F ^ G H I ^ ^ J K L ", " ] ^ M N ^ ^ ^ ^ ^ ^ O P Q R C ", " ] ^ S T U V W ^ ^ ^ ^ X Y Z ` ", " ...+.+.@.#...$.%.+.+.+.^ &.*.=.-. ", " +.+.^ ^ ;.>. .,.^ ^ ^ '.).!.~.{. ", " ...].^.^ /.(._.^ :.<.[.^ }.|.1. ", " 2.2.3.4.5.6.7.8.^ ^ 9.0.a.b. ", " c.^ d.^ ^ e.f.^ g.h.i.j.k. l.l. ", " m.n.+.o.p.q.r.s.t.u.v. w.x.w.y.y.w.x.w. ", " z.A.B.C.D.E.F.G.H.I. x.y.y.y.J.J.J.K. ", " L.C M. N. w.y.y.O.J.P.Q.w. ", " l.y.y.O.w.w.R.x.x.l.", " l.y.J.J.w.S.R.x.K.l.", " w.J.P.R.R.J.K.w. ", " x.J.Q.x.x.K.K.K. ", " w.K.w.x.K.w.K.w. ", " l.l. "}; auctex-11.87/images/execpdftex.xpm0000644000000000000000000001012510130171404015641 0ustar rootroot/* XPM */ static char * execpdftex11_xpm[] = { "24 24 178 2", " c None s backgroundToolBarColor", ". c #3E9543", "+ c #409644", "@ c #3D9D45", "# c #3F9B42", "$ c #4C2A1F", "% c #4E3124", "& c #727E51", "* c #598A4E", "= c #5B6647", "- c #88624F", "; c #89383B", "> c #8B343B", ", c #6D5852", "' c #506D48", ") c #4C843E", "! c #648752", "~ c #B8A789", "{ c #80624D", "] c #7D6951", "^ c #FFFFC1", "/ c #94A676", "( c #8F8668", "_ c #977567", ": c #A86660", "< c #986C6A", "[ c #758660", "} c #708C60", "| c #6A6C4E", "1 c #C3C599", "2 c #988167", "3 c #5A3125", "4 c #958066", "5 c #BEA384", "6 c #68372B", "7 c #672124", "8 c #5B392F", "9 c #94917B", "0 c #AFAC91", "a c #B8B39C", "b c #BDBCA0", "c c #B39073", "d c #582522", "e c #712E2B", "f c #83826F", "g c #908F88", "h c #F8FFFD", "i c #686C8D", "j c #D7DBB8", "k c #716D76", "l c #7B7B92", "m c #D5D5B3", "n c #DBBD9A", "o c #81463B", "p c #691A19", "q c #838270", "r c #888791", "s c #6462D0", "t c #2C2B87", "u c #DAD9C7", "v c #868394", "w c #716DDC", "x c #2F2C94", "y c #C7C6B7", "z c #D2AF8D", "A c #84473C", "B c #6D1E1F", "C c #975F59", "D c #BDBDAB", "E c #878593", "F c #909095", "G c #C0BEAF", "H c #A09EAD", "I c #A6A5A9", "J c #C19978", "K c #7C3D33", "L c #641C1F", "M c #DBDCB8", "N c #B4B492", "O c #E5D9AA", "P c #9F755A", "Q c #50231F", "R c #672424", "S c #E4E3BC", "T c #A5A28D", "U c #D2D1B5", "V c #E7E5C1", "W c #E3DFC0", "X c #E4CCA2", "Y c #894E3A", "Z c #461715", "` c #632524", " . c #665E46", ".. c #C0B396", "+. c #AAAB90", "@. c #463F31", "#. c #7C7968", "$. c #B3AF92", "%. c #D4BD97", "&. c #804B37", "*. c #461F19", "=. c #42201F", "-. c #5A4F43", ";. c #504334", ">. c #979183", ",. c #DCD8B5", "'. c #D0BC9D", "). c #C8A487", "!. c #82493F", "~. c #3F1310", "{. c #401613", "]. c #664B46", "^. c #DCD9BC", "/. c #B8B59D", "(. c #8C8977", "_. c #E9E7C0", ":. c #A2897B", "<. c #AE8872", "[. c #CFB89A", "}. c #A6715F", "|. c #4B1D19", "1. c #68272E", "2. c #767361", "3. c #7F8170", "4. c #7B7B6C", "5. c #8E897E", "6. c #827F6E", "7. c #83876F", "8. c #847E70", "9. c #9C7964", "0. c #662F2A", "a. c #5D2D2E", "b. c #783C3F", "c. c #87826E", "d. c #B3B99A", "e. c #D1D1AB", "f. c #DFDDB9", "g. c #C3B191", "h. c #826453", "i. c #6D2B2A", "j. c #884144", "k. c #772B2F", "l. c #3A3A3A", "m. c #AEA28C", "n. c #C1C3A2", "o. c #AEA07E", "p. c #C8C09F", "q. c #C4C6A3", "r. c #B6886B", "s. c #774237", "t. c #7E3E3D", "u. c #854748", "v. c #78373B", "w. c #000000", "x. c #65635C", "y. c #9F9D96", "z. c #7C474A", "A. c #815655", "B. c #7F534F", "C. c #8A5C54", "D. c #74504B", "E. c #8C615F", "F. c #7E2C29", "G. c #8C4240", "H. c #7C322F", "I. c #703634", "J. c #807D74", "K. c #3C3C3C", "L. c #6D1B27", "M. c #631D22", "N. c #65101D", "O. c #76746B", "P. c #5D5C55", "Q. c #6D6B63", "R. c #B3B3B1", "S. c #B50000", "T. c #AA7979", "U. c #8C8B89", " . + @ # $ ", " % & * = - ; > , ' ) ! ~ { ", " ] ^ / ( _ : < [ } | 1 2 3 ", " 4 ^ ^ ^ ^ ^ ^ ^ ^ ^ 5 6 7 ", " 8 ^ 9 0 ^ a 9 b ^ ^ c d e ", " f g h i j k h l m ^ n o p ", " q r s t u v w x y ^ z A B C ", " ] D E F ^ G H I ^ ^ J K L ", " ] ^ M N ^ ^ ^ ^ ^ ^ O P Q R C ", " ] ^ S T U V W ^ ^ ^ ^ X Y Z ` ", " .....+.@. .#.$.......^ %.&.*.=. ", "....^ ^ -.;.>.,.^ ^ ^ '.).!.~.{. ", " .].^.^ /.(._.^ :.<.[.^ }.|.1. ", " 2.2.3.4.5.6.7.8.^ ^ 9.0.a.b. ", " c.^ d.^ ^ e.f.^ g.h.i.j.k. l.l. ", " m.n...o.p.q.r.s.t.u.v. w.x.w.y.y.w.x.w. ", " z.A.B.C.D.E.F.G.H.I. x.y.y.y.J.J.J.K. ", " L.C M. N. w.y.y.O.J.P.Q.w. ", " l.y.y.O.w.w.R.x.x.l.", " S.S.T. S.S.T. S.S.T. l.y.J.J.w.U.R.x.K.l.", " S. S. S. S. S. w.J.P.R.R.J.K.w. ", " S.S.T. S. S. S.S. x.J.Q.x.x.K.K.K. ", " S. S. S. S. w.K.w.x.K.w.K.w. ", " S. S.S.T. S. l.l. "}; auctex-11.87/images/ltx-symb-turn-off.xpm0000644000000000000000000000204510126326661017035 0ustar rootroot/* XPM */ static char * ltx_symb_turn_off_xpm[] = { "24 24 20 1", " c None s backgroundToolBarColor", ". c #AEAEAE", "+ c #000000", "@ c #0A0A0A", "# c #1F1F1F", "$ c #C9C9C9", "% c #353535", "& c #999999", "* c #4D4D4D", "= c #777777", "- c #141414", "; c #878787", "> c #686868", ", c #5A5A5A", "' c #FF5858", ") c #FFB9B9", "! c #FF0000", "~ c #FF9595", "{ c #414141", "] c #292929", " ", " ", " ", ".+@########++@$ ", " %@& .*@= ", " $--$ ;% ", " .@% >$ ", " ,+= ", " %@. ", " $--$ ' ' ", " &+* )!' '!)", " *@$ ~!~ ", " $#; ~!~ ", " %, )!' '!)", " >% ' ' ", " ;#$ &$ ", " .-. ${ ", " ]; .], ", " *]>>>>>>>>]++. ", "${{{{{{{{{{{{* ", " ", " ", " ", " "}; auctex-11.87/images/sep.xpm0000644000000000000000000000033710130171404014275 0ustar rootroot/* XPM */ static char * sep_xpm[] = { "1 24 2 1", " c None s backgroundToolBarColor", ". c #776758", " ", " ", " ", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", " ", " ", " "}; auctex-11.87/images/viewps.xpm0000644000000000000000000000220410130171403015015 0ustar rootroot/* XPM */ static char * viewps8_xpm[] = { "24 24 27 1", " c None s backgroundToolBarColor", ". c #090909", "+ c #000000", "@ c #292929", "# c #8E8E8E", "$ c #2D2D2D", "% c #303030", "& c #2B2B2B", "* c #3C3C3C", "= c #1F1F1F", "- c #101010", "; c #1A1A1A", "> c #2E2E2E", ", c #FFFFFF", "' c #C3C3C3", ") c #252525", "! c #191919", "~ c #131313", "{ c #1D1D1D", "] c #0D0D0D", "^ c #121212", "/ c #444444", "( c #3B3B3B", "_ c #3D3D3D", ": c #080808", "< c #0037C4", "[ c #6C84B7", " .+ ", " @# + ", " $# @ ", " %# &# ", " @# ++ ", " *=- ;# + ", " >,,') !# ~ ", " >,, + !# {# ", " ],, ++ *=- =# ", " #^ /+ >,,')# ", " ($_: >,, + ", " ## ],, + ", " #^ /+ ", " ($_: ", " ## ", " ", " <<<[ [<<[ ", " < < < < ", " < < < ", " <<<[ [<<[ ", " < < ", " < < < ", " < [<<[ ", " "}; auctex-11.87/images/execerror.xpm0000644000000000000000000000207510130171404015505 0ustar rootroot/* XPM */ static char * execerror12_xpm[] = { "24 24 22 1", " c None s backgroundToolBarColor", ". c #B09400", "+ c #605000", "@ c #9C8400", "# c #FFD906", "$ c #FED90A", "% c #957F0D", "& c #DEBD0E", "* c #6F5D00", "= c #8F7900", "- c #655500", "; c #3A3A3A", "> c #000000", ", c #65635C", "' c #9F9D96", ") c #807D74", "! c #3C3C3C", "~ c #76746B", "{ c #5D5C55", "] c #6D6B63", "^ c #B3B3B1", "/ c #8C8B89", " ", " ", " .++. ", " @##@. ", " +$###+ ", " ..#++#.. ", " +$#++#$+ ", " ..##++##.. ", " +$##%%##$+ ", " ..###&&###.. ", " +####**###$+ ", " +##########+ ", " =--------= ", " ", " ;; ", " >,>''>,> ", " ,''')))! ", " >''~){]> ", " ;''~>>^,,;", " ;'))>/^,!;", " >){^^)!> ", " ,)],,!!! ", " >!>,!>!> ", " ;; "}; auctex-11.87/images/gv.xpm0000644000000000000000000000653410130171404014127 0ustar rootroot/* XPM */ static char * gv7_xpm[] = { "24 24 131 2", " c None s backgroundToolBarColor", ". c #9F9F9F", "+ c #2F2F2F", "@ c #373737", "# c #323232", "$ c #303030", "% c #525252", "& c #ECECEC", "* c #FFFFFF", "= c #F4F4F4", "- c #BE5858", "; c #FD6F6F", "> c #FF7070", ", c #FF9898", "' c #FFE1E1", ") c #FE7070", "! c #C96363", "~ c #FF6B6B", "{ c #DD6666", "] c #FDCFCF", "^ c #FFD1D1", "/ c #FF8888", "( c #FFCACA", "_ c #F37C7C", ": c #F56767", "< c #DA6363", "[ c #ECE6E6", "} c #F2F2F2", "| c #B6B6B6", "1 c #D0CBCB", "2 c #FD8686", "3 c #FE7878", "4 c #FE8787", "5 c #DCD6D6", "6 c #E1E1E1", "7 c #F5EFEF", "8 c #895B5B", "9 c #848484", "0 c #000000", "a c #2B2B2B", "b c #DAACAC", "c c #F3C5C5", "d c #414141", "e c #4C4C4C", "f c #B18383", "g c #5B5B5B", "h c #F86969", "i c #A5A5A5", "j c #3E3E3E", "k c #E4B6B6", "l c #F6C8C8", "m c #5D5D5D", "n c #6C6C6C", "o c #F56666", "p c #1C1C1C", "q c #AFAFAF", "r c #F6F6F6", "s c #FA9494", "t c #F67F7F", "u c #FFF9F9", "v c #FCFCFC", "w c #EDEDED", "x c #F3EDED", "y c #FF7878", "z c #F6F0F0", "A c #F8F8F8", "B c #EB7474", "C c #DA7373", "D c #E2E2E2", "E c #A4A4A4", "F c #F0F0F0", "G c #D5D5D5", "H c #393939", "I c #161616", "J c #8C8C8C", "K c #F7F7F7", "L c #BEBEBE", "M c #191919", "N c #989898", "O c #BCBCBC", "P c #2A2A2A", "Q c #1B1B1B", "R c #313131", "S c #AAAAAA", "T c #C7C7C7", "U c #101010", "V c #D3D3D3", "W c #595959", "X c #E4E4E4", "Y c #969696", "Z c #FBFBFB", "` c #D1D1D1", " . c #717171", ".. c #0A0A0A", "+. c #B7B7B7", "@. c #EEEEEE", "#. c #F9F9F9", "$. c #DBDBDB", "%. c #EBEBEB", "&. c #D2D2D2", "*. c #6E6E6E", "=. c #7D7D7D", "-. c #EAEAEA", ";. c #A2A2A2", ">. c #CCCCCC", ",. c #E8E8E8", "'. c #4E4E4E", "). c #ABABAB", "!. c #F5F5F5", "~. c #6B6B6B", "{. c #171717", "]. c #434343", "^. c #CECECE", "/. c #4D4D4D", "(. c #ADADAD", "_. c #D0D0D0", ":. c #9E9E9E", "<. c #808080", "[. c #FAFAFA", "}. c #858585", "|. c #A0A0A0", "1. c #BDBDBD", "2. c #838383", "3. c #181818", "4. c #8F8F8F", "5. c #959595", "6. c #D6D6D6", "7. c #DDDDDD", "8. c #C1C1C1", "9. c #7B7B7B", "0. c #8E8E8E", " ", " . + @ @ @ # . ", " $ % & * * * = % % ", " - ; > , ' * ' , > ) ! ", " ~ { ] ^ / > ( > / ^ ^ _ : ", " ~ < [ } | 1 2 3 4 5 | 6 7 { ~ ", " ~ 8 * 9 0 a b ~ c d 0 e * f ~ ", " $ g h 8 * i 0 j k ~ l m 0 n * f o 0 g ", " p q r s t u v w x 4 y / z w A u B C D D @ ", " p E F ' > / ^ ^ / > ( > / ^ ^ / ) ' * G H ", " I @ J K ' , > > , ' * ' , > > , ' * L E H ", " M N * * * * * * * * * * * * * O P Q ", " R S * * * * * * * * * * * T a ", " U S * * * * * * * * * * * V W ", " U S * * * * * * * * * * * X Y U ", " U S * * * * * * * * * * * Z ` ... ", " R +.* * Z @.#.* * * * * $.%.* &.*.Q ", " 0 =.%.* * -.;.>.v v * * ,.'.).!.v >.~.{. ", " ].q * * * ^./.(.A A * * _.p :.%.* %.:.p ", " @ <.@.* [.r }.R |.1.1.L L 2.3.:.%.%.%.4.Q ", " H 5.6.7.8.).0 0 j % % % % M 0 9.9.9. .% ", " 3. .0.0.m @ % % % % ", " @ @ @ @ ", " "}; auctex-11.87/images/execdvips.xpm0000644000000000000000000000215210130171404015475 0ustar rootroot/* XPM */ static char * execdvips36_xpm[] = { "24 24 25 1", " c None s backgroundToolBarColor", ". c #295E29", "+ c #5ABD5A", "@ c #488148", "# c #818181", "$ c #4CA14C", "% c #4D904D", "& c #ADADAD", "* c #4FA64F", "= c #6E6E6E", "- c #545454", "; c #999999", "> c #3A3A3A", ", c #000000", "' c #65635C", ") c #9F9D96", "! c #0037C4", "~ c #6C84B7", "{ c #807D74", "] c #3C3C3C", "^ c #76746B", "/ c #5D5C55", "( c #6D6B63", "_ c #B3B3B1", ": c #8C8B89", " ", " ...+ . . . ", " . . . . . ", " . . . . . ", " . . @ @ . ", " # . . $%%$ . ", " #& . . @@ . ", " #& ...+ ** . ", " = ", " - ", " # ", " - ; ", " ;- ", " ;-- ", " >> ", " ,',)),', ", " !!!~ ~!!~ '))){{{] ", " ! ! ! ! ,))^{/(, ", " ! ! ! >))^,,_''>", " !!!~ ~!!~ >){{,:_']>", " ! ! ,{/__{], ", " ! ! ! '{('']]] ", " ! ~!!~ ,],'],], ", " >> "}; auctex-11.87/images/jumpdvi.xpm0000644000000000000000000000266210130171404015167 0ustar rootroot/* XPM */ static char * jumpdvi19_xpm[] = { "24 24 47 1", " c None s backgroundToolBarColor", ". c #212121", "+ c #EAD4CB", "@ c #E3C5BA", "# c #DBB4A4", "$ c #EEDED7", "% c #FAF7F5", "& c #F2E5E1", "* c #D2AC99", "= c #000000", "- c #8D9E7C", "; c #CDD9C2", "> c #DEE6D7", ", c #DAE2D1", "' c #9BAD89", ") c #B79382", "! c #707D63", "~ c #B4C6A2", "{ c #ACC098", "] c #636E57", "^ c #AB8A7A", "/ c #E4E9DD", "( c #657158", "_ c #C49F8D", ": c #C3D1B5", "< c #808F70", "[ c #4C5442", "} c #58634E", "| c #E6EBE0", "1 c #D4DDC9", "2 c #CAD7BE", "3 c #90A17F", "4 c #5F6A53", "5 c #535C49", "6 c #E9EDE4", "7 c #616D56", "8 c #A8BC95", "9 c #7C8B6E", "0 c #4C5443", "a c #B6C2AA", "b c #5E6953", "c c #295E29", "d c #5ABD5A", "e c #488148", "f c #4CA14C", "g c #4D904D", "h c #4FA64F", " ", " ", " ", " ... ", " ..+@#.. ", " .$%&@*. ", " =======+#**. ", " =-;>,'=###). ", " =!~{]=##*^. ", " ==/;{(]=#*_. ", " ==/;:{<[}=)).. ", " =|12{{34=5=.. ", " =6{{{7= == ", " =>890= ", " =a]= ", " =b= ", " = cccd c c c ", " c c c c c ", " c c c c c ", " c c e e c ", " c c fggf c ", " c c ee c ", " cccd hh c ", " "}; auctex-11.87/images/pspdf.xpm0000644000000000000000000000306610130171404014624 0ustar rootroot/* XPM */ static char * pspdf5_xpm[] = { "24 24 56 1", " c None s backgroundToolBarColor", ". c #869CB4", "+ c #00244C", "@ c #000000", "# c #002248", "$ c #0050A9", "% c #006FEB", "& c #0066D9", "* c #00336D", "= c #37452B", "- c #001070", "; c #004BA2", "> c #0078FF", ", c #0075FC", "' c #004DB6", ") c #00072F", "! c #0047FF", "~ c #006DFF", "{ c #0042CA", "] c #00169E", "^ c #000A45", "/ c #445636", "( c #0024FF", "_ c #0027FF", ": c #0056ED", "< c #001FA7", "[ c #00179F", "} c #526741", "| c #001DCE", "1 c #4C603C", "2 c #566B43", "3 c #5A7046", "4 c #000B4C", "5 c #0023F5", "6 c #001492", "7 c #000E65", "8 c #00010B", "9 c #001AB9", "0 c #0022F0", "a c #001387", "b c #000942", "c c #000C57", "d c #D37F71", "e c #0037C4", "f c #6C84B7", "g c #CE918A", "h c #D4897A", "i c #67102D", "j c #C47474", "k c #D69788", "l c #CB8984", "m c #D79C8D", "n c #C8807D", "o c #5A5A5A", "p c #B50000", "q c #AA7979", " .+ @@@@ ", " .#$%&* @@@=@@ ", " -;%>>>,') @ @=@ ", " -!~>>>{]^ @/@ ", " -(_!:<[]^ @}@ ", " -(((|]]]^ @@}}1@@ ", " -(((|]]]^ @232@ ", " 45((|]678 @}@ ", " 490|ab @ ", " -c ", " @ ", " @d@ ", " eeef feef @ghi@ ", " e e e @jgkii@ ", " eeef feef @jlgmiii@ ", " e e @jnlgmiiii@", " e e e @jnlgkiii@ ", " e feef o@jnhii@ ", " o@di@ ", "pppq pppq pppq @@ ", "p p p p p ", "pppq p p ppq ", "p p p p ", "p pppq p "}; auctex-11.87/images/dropdown.xpm0000644000000000000000000000071410126326661015355 0ustar rootroot/* XPM */ static char * dropdown_xpm[] = { "10 24 3 1", " c None s backgroundToolBarColor", ". c #292C29", "+ c #B3B3B3", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . . ", " ... ... ", " ...... ", " .... ", " .. ", " ++ ", " ", " ", " ", " ", " ", " ", " ", " "}; auctex-11.87/images/dvipdf.xpm0000644000000000000000000000245110130171404014761 0ustar rootroot/* XPM */ static char * dvipdf4_xpm[] = { "24 24 38 1", " c None s backgroundToolBarColor", ". c #4C4C4C", "+ c #000000", "@ c #7C7C7C", "# c #577A4D", "$ c #4C6B43", "% c #37452B", "& c #76996C", "* c #9BB594", "= c #648C58", "- c #DAE3D6", "; c #445636", "> c #67865E", ", c #A7BDA0", "' c #8EAB86", ") c #526741", "! c #425D3A", "~ c #4C603C", "{ c #566B43", "] c #5A7046", "^ c #295E29", "/ c #5ABD5A", "( c #D37F71", "_ c #CE918A", ": c #D4897A", "< c #67102D", "[ c #488148", "} c #C47474", "| c #D69788", "1 c #4CA14C", "2 c #4D904D", "3 c #CB8984", "4 c #D79C8D", "5 c #C8807D", "6 c #4FA64F", "7 c #5A5A5A", "8 c #B50000", "9 c #AA7979", " .+. ++++ ", " @+##$+@ +++%++ ", " +&**&=+ + +%+ ", " .#*-*&=$. +;+ ", " +>,*'==$+ +)+ ", " .#&&==#!. ++))~++ ", " +#==#$+ +{]{+ ", " @+!$!+@ +)+ ", " .+. + ", " ", " + ", "^^^/ ^ ^ ^ +(+ ", "^ ^ ^ ^ ^ +_:<+ ", "^ ^ [ [ ^ +}_|<<+ ", "^ ^ 1221 ^ +}3_4<<<+ ", "^ ^ [[ ^ +}53_4<<<<+", "^^^/ 66 ^ +}53_|<<<+ ", " 7+}5:<<+ ", " 7+(<+ ", "8889 8889 8889 ++ ", "8 8 8 8 8 ", "8889 8 8 889 ", "8 8 8 8 ", "8 8889 8 "}; auctex-11.87/images/execviewpdf.xpm0000644000000000000000000000172510130171404016021 0ustar rootroot/* XPM */ static char * execviewpdf4_xpm[] = { "24 24 15 1", " c None s backgroundToolBarColor", ". c #B50000", "+ c #AA7979", "@ c #000000", "# c #FFFFFF", "$ c #3A3A3A", "% c #65635C", "& c #9F9D96", "* c #807D74", "= c #3C3C3C", "- c #76746B", "; c #5D5C55", "> c #6D6B63", ", c #B3B3B1", "' c #8C8B89", " ...+ ...+ ...+", " . . . . . ", " . . . . . ", " ...+ . . ..+ ", " . . . . ", " . . . . ", " @@ . ...+ . ", " @ @ ", " @ @ ", " @ @ @@ ", " @@ @ @ ", "@# @ @ @ ", "@## @ @@ @ @ ", "@## @@@# @@ ", " @ @ @## @ $$ ", " @@ @## @ @%@&&@%@ ", " @ @ %&&&***= ", " @@ @&&-*;>@ ", " $&&-@@,%%$", " $&**@',%=$", " @*;,,*=@ ", " %*>%%=== ", " @=@%=@=@ ", " $$ "}; auctex-11.87/images/error.xpm0000644000000000000000000000154610130171404014642 0ustar rootroot/* XPM */ static char * error22_xpm[] = { "24 24 8 1", " c None s backgroundToolBarColor", ". c #847000", "+ c #000000", "@ c #F0C900", "# c #AB9100", "$ c #887821", "% c #AA9629", "& c #51470D", " ", " ", " .++. ", " +@@@@+ ", " #.@@@@.# ", " +@@@@@@+ ", " #.@@@@@@.# ", " +@@@++@@@+ ", " #.@@@++@@@.# ", " +@@@@++@@@@+ ", " #.@@@@++@@@@.# ", " +@@@@@++@@@@@+ ", " #.@@@@@++@@@@@.# ", " +@@@@@@$$@@@@@@+ ", " #.@@@@@@%%@@@@@@.# ", " +@@@@@@@@@@@@@@@@+ ", " .#@@@@@@@++@@@@@@@#. ", " &@@@@@@@@++@@@@@@@@& ", " &@@@@@@@@@@@@@@@@@@& ", " +@@@@@@@@@@@@@@@@+ ", " .++++++++++++++. ", " ", " ", " "}; auctex-11.87/images/execviewdvi.xpm0000644000000000000000000000202210130171404016021 0ustar rootroot/* XPM */ static char * execviewdvi11_xpm[] = { "24 24 19 1", " c None s backgroundToolBarColor", ". c #295E29", "+ c #5ABD5A", "@ c #488148", "# c #4CA14C", "$ c #4D904D", "% c #000000", "& c #4FA64F", "* c #FFFFFF", "= c #3A3A3A", "- c #65635C", "; c #9F9D96", "> c #807D74", ", c #3C3C3C", "' c #76746B", ") c #5D5C55", "! c #6D6B63", "~ c #B3B3B1", "{ c #8C8B89", " ...+ . . . ", " . . . . . ", " . . . . . ", " . . @ @ . ", " . . #$$# . ", " . . @@ . ", " %% ...+ && . ", " % % ", " % % ", " % % %% ", " %% % % ", "%* % % % ", "%** % %% % % ", "%** %%%* %% ", " % % %** % == ", " %% %** % %-%;;%-% ", " % % -;;;>>>, ", " %% %;;'>)!% ", " =;;'%%~--=", " =;>>%{~-,=", " %>)~~>,% ", " ->!--,,, ", " %,%-,%,% ", " == "}; auctex-11.87/images/viewdvi.xpm0000644000000000000000000000230210130171404015155 0ustar rootroot/* XPM */ static char * viewdvi11_xpm[] = { "24 24 31 1", " c None s backgroundToolBarColor", ". c #090909", "+ c #000000", "@ c #292929", "# c #8E8E8E", "$ c #2D2D2D", "% c #303030", "& c #2B2B2B", "* c #3C3C3C", "= c #1F1F1F", "- c #101010", "; c #1A1A1A", "> c #2E2E2E", ", c #FFFFFF", "' c #C3C3C3", ") c #252525", "! c #191919", "~ c #131313", "{ c #1D1D1D", "] c #0D0D0D", "^ c #121212", "/ c #444444", "( c #3B3B3B", "_ c #3D3D3D", ": c #080808", "< c #295E29", "[ c #5ABD5A", "} c #488148", "| c #4CA14C", "1 c #4D904D", "2 c #4FA64F", " .+ ", " @# + ", " $# @ ", " %# &# ", " @# ++ ", " *=- ;# + ", " >,,') !# ~ ", " >,, + !# {# ", " ],, ++ *=- =# ", " #^ /+ >,,')# ", " ($_: >,, + ", " ## ],, + ", " #^ /+ ", " ($_: ", " ## ", " ", " <<<[ < < <", " < < < < <", " < < < < <", " < < } } <", " < < |11| <", " < < }} <", " <<<[ 22 <", " "}; auctex-11.87/images/execbibtex.xpm0000644000000000000000000000556410130171404015637 0ustar rootroot/* XPM */ static char * execbibtex8_xpm[] = { "24 24 100 2", " c None s backgroundToolBarColor", ". c #1F1D12", "+ c #222017", "@ c #211F15", "# c #211F14", "$ c #0C0B07", "% c #5E5737", "& c #B7AB72", "* c #BFB480", "= c #BAAF77", "- c #B9AD74", "; c #9A9061", "> c #545144", ", c #AFA98C", "' c #776F4F", ") c #C0B684", "! c #625C3D", "~ c #767675", "{ c #A79D6F", "] c #BEB37E", "^ c #93895C", "/ c #59574E", "( c #A3A3A2", "_ c #807A59", ": c #BCB17E", "< c #B9AE75", "[ c #B8AC73", "} c #7E7650", "| c #5B5B5B", "1 c #ACACAA", "2 c #202120", "3 c #60593A", "4 c #BAAE76", "5 c #A39966", "6 c #363635", "7 c #B4B4B3", "8 c #82857F", "9 c #171816", "0 c #8A825C", "a c #B9AD75", "b c #6D6748", "c c #6A6A6A", "d c #A9AAA6", "e c #363735", "f c #95948C", "g c #A39C82", "h c #7A7356", "i c #BBB079", "j c #BBAF78", "k c #20201C", "l c #B3B3B2", "m c #767774", "n c #20211F", "o c #1A1112", "p c #5D413D", "q c #555540", "r c #7C7A58", "s c #4D4830", "t c #8B8A89", "u c #ADADAB", "v c #4F514E", "w c #1E1616", "x c #BA9797", "y c #DCD6D3", "z c #CDCDCA", "A c #575651", "B c #1B1A19", "C c #ABABA9", "D c #777775", "E c #080808", "F c #1B1212", "G c #846666", "H c #A5A09E", "I c #D4D2C6", "J c #E7E6DF", "K c #F1F0EC", "L c #A9AAA8", "M c #4F514D", "N c #585442", "O c #6D6D66", "P c #DEDBCA", "Q c #EAE9E4", "R c #BEC0B9", "S c #878A84", "T c #000000", "U c #47453A", "V c #50504D", "W c #999474", "X c #363731", "Y c #020201", "Z c #3A3A3A", "` c #65635C", " . c #9F9D96", ".. c #807D74", "+. c #3C3C3C", "@. c #76746B", "#. c #5D5C55", "$. c #6D6B63", "%. c #B3B3B1", "&. c #8C8B89", " ", " . + @ # # # # $ ", " % & * = - - - ; > ", " , ' ) = - - - - ! ~ ", " % { ] - - - - ^ / ( ", " , _ : < - - - [ } | 1 2 ", " 3 ] 4 - - - - 5 6 7 8 9 ", " % 0 ] a - - - - b c d e f ", " g h i j - - - - - k l m n ", " o p q r ; 5 - - s t u v f ", " w x y z u ~ A q B C D E ", " F G H I J K K K z L M f ", " v M N O f P Q R S T ", " ( D U V W X f ", " ( v Y Z Z ", " T ` T . .T ` T ", " ` . . .......+. ", " T . .@...#.$.T ", " Z . .@.T T %.` ` Z ", " Z .....T &.%.` +.Z ", " T ..#.%.%...+.T ", " ` ..$.` ` +.+.+. ", " T +.T ` +.T +.T ", " Z Z "}; auctex-11.87/images/pdftex.xpm0000644000000000000000000001014110130171404014772 0ustar rootroot/* XPM */ static char * pdftex22_xpm[] = { "24 24 179 2", " c None s backgroundToolBarColor", ". c #3E9543", "+ c #409644", "@ c #3D9D45", "# c #3F9B42", "$ c #4C2A1F", "% c #4E3124", "& c #727E51", "* c #598A4E", "= c #5B6647", "- c #88624F", "; c #89383B", "> c #8B343B", ", c #6D5852", "' c #506D48", ") c #4C843E", "! c #648752", "~ c #B8A789", "{ c #80624D", "] c #7D6951", "^ c #FFFFC1", "/ c #94A676", "( c #8F8668", "_ c #977567", ": c #A86660", "< c #986C6A", "[ c #758660", "} c #708C60", "| c #6A6C4E", "1 c #C3C599", "2 c #988167", "3 c #5A3125", "4 c #561E1C", "5 c #958066", "6 c #BEA384", "7 c #68372B", "8 c #672124", "9 c #5B392F", "0 c #94917B", "a c #AFAC91", "b c #B8B39C", "c c #BDBCA0", "d c #B39073", "e c #582522", "f c #712E2B", "g c #6F292C", "h c #83826F", "i c #908F88", "j c #F8FFFD", "k c #686C8D", "l c #D7DBB8", "m c #716D76", "n c #7B7B92", "o c #D5D5B3", "p c #DBBD9A", "q c #81463B", "r c #691A19", "s c #838270", "t c #888791", "u c #6462D0", "v c #2C2B87", "w c #DAD9C7", "x c #868394", "y c #716DDC", "z c #2F2C94", "A c #C7C6B7", "B c #D2AF8D", "C c #84473C", "D c #6D1E1F", "E c #6E262C", "F c #BDBDAB", "G c #878593", "H c #909095", "I c #C0BEAF", "J c #A09EAD", "K c #A6A5A9", "L c #C19978", "M c #7C3D33", "N c #641C1F", "O c #662633", "P c #DBDCB8", "Q c #B4B492", "R c #E5D9AA", "S c #9F755A", "T c #50231F", "U c #672424", "V c #8E3B4B", "W c #E4E3BC", "X c #A5A28D", "Y c #D2D1B5", "Z c #E7E5C1", "` c #E3DFC0", " . c #E4CCA2", ".. c #894E3A", "+. c #461715", "@. c #632524", "#. c #95404E", "$. c #777776", "%. c #C0B396", "&. c #AAAB90", "*. c #463F31", "=. c #665E46", "-. c #7C7968", ";. c #B3AF92", ">. c #D4BD97", ",. c #804B37", "'. c #461F19", "). c #42201F", "!. c #5A4F43", "~. c #504334", "{. c #979183", "]. c #DCD8B5", "^. c #D0BC9D", "/. c #C8A487", "(. c #82493F", "_. c #3F1310", ":. c #401613", "<. c #664B46", "[. c #DCD9BC", "}. c #B8B59D", "|. c #8C8977", "1. c #E9E7C0", "2. c #A2897B", "3. c #AE8872", "4. c #CFB89A", "5. c #A6715F", "6. c #4B1D19", "7. c #68272E", "8. c #6E2933", "9. c #453E37", "0. c #767361", "a. c #7F8170", "b. c #7B7B6C", "c. c #8E897E", "d. c #827F6E", "e. c #83876F", "f. c #847E70", "g. c #9C7964", "h. c #662F2A", "i. c #5D2D2E", "j. c #783C3F", "k. c #87826E", "l. c #B3B99A", "m. c #D1D1AB", "n. c #DFDDB9", "o. c #C3B191", "p. c #826453", "q. c #6D2B2A", "r. c #884144", "s. c #772B2F", "t. c #702F34", "u. c #AEA28C", "v. c #C1C3A2", "w. c #AEA07E", "x. c #C8C09F", "y. c #C4C6A3", "z. c #B6886B", "A. c #774237", "B. c #7E3E3D", "C. c #854748", "D. c #78373B", "E. c #6A2932", "F. c #5F343C", "G. c #7C474A", "H. c #815655", "I. c #7F534F", "J. c #8A5C54", "K. c #74504B", "L. c #8C615F", "M. c #7E2C29", "N. c #8C4240", "O. c #7C322F", "P. c #703634", "Q. c #6D1B27", "R. c #975F59", "S. c #631D22", "T. c #65101D", "U. c #B50000", "V. c #AA7979", " . + @ # $ ", " % & * = - ; > , ' ) ! ~ { ", " ] ^ / ( _ : < [ } | 1 2 3 4 ", " 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ 6 7 8 ", " 9 ^ 0 a ^ b 0 c ^ ^ d e f g ", " h i j k l m j n o ^ p q r ", " s t u v w x y z A ^ B C D E ", " ] F G H ^ I J K ^ ^ L M N O ", " ] ^ P Q ^ ^ ^ ^ ^ ^ R S T U V ", " ] ^ W X Y Z ` ^ ^ ^ ^ ...+.@.#. ", " $.$.%.%.&.*.=.-.;.%.%.%.^ >.,.'.). ", " %.%.^ ^ !.~.{.].^ ^ ^ ^./.(._.:. ", " $.$.<.[.^ }.|.1.^ 2.3.4.^ 5.6.7.8. ", " 9.0.a.b.c.d.e.f.^ ^ g.h.i.j. ", " k.^ l.^ ^ m.n.^ o.p.q.r.s.t. ", " u.v.%.w.x.y.z.A.B.C.D.E.F. ", " G.H.I.J.K.L.M.N.O.P. ", " Q.R. S. T. ", " ", " U.U.U.V. U.U.U.V. U.U.U.V. ", " U. U. U. U. U. ", " U.U.U.V. U. U. U.U.V. ", " U. U. U. U. ", " U. U.U.U.V. U. "}; auctex-11.87/images/ltx-symb-turn-on.xpm0000644000000000000000000000202510126326661016675 0ustar rootroot/* XPM */ static char * ltx_symb_turn_on_xpm[] = { "24 24 19 1", " c None s backgroundToolBarColor", ". c #AEAEAE", "+ c #000000", "@ c #0A0A0A", "# c #1F1F1F", "$ c #C9C9C9", "% c #353535", "& c #999999", "* c #4D4D4D", "= c #777777", "- c #141414", "; c #878787", "> c #686868", ", c #5A5A5A", "' c #79DECA", ") c #00AA88", "! c #5DC8B3", "~ c #414141", "{ c #292929", " ", " ", " ", ".+@########++@$ ", " %@& .*@= ", " $--$ ;% ", " .@% >$ ", " ,+= '", " %@. ) ", " $--$ )) ", " &+* ')! )) ", " *@$ )))) ", " $#; !)) ", " %, ')' ", " >% ", " ;#$ &$ ", " .-. $~ ", " {; .{, ", " *{>>>>>>>>{++. ", "$~~~~~~~~~~~~* ", " ", " ", " ", " "}; auctex-11.87/bib-cite.el0000644000000000000000000032252110751352555013536 0ustar rootroot;;; bib-cite.el --- test ;; bib-cite.el - Display \cite, \ref or \label / Extract refs from BiBTeX file. ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2003, 2004, 2005 ;; Free Software Foundation ;; Author: Peter S. Galbraith ;; Created: 06 July 1994 ;; Version: 3.28 (Feb 23 2005) ;; Keywords: bibtex, cite, auctex, emacs, xemacs ;;; This file is not part of GNU Emacs. ;; This package 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 package 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. ;; LCD Archive Entry: ;; bib-cite|Peter Galbraith|GalbraithP@dfo-mpo.gc.ca| ;; Display \cite, \ref or \label / Extract refs from BiBTeX file.| ;; 21-May-1997|3.01|~/misc/bib-cite.el.gz| ;; ---------------------------------------------------------------------------- ;;; Commentary: ;; This minor-mode is used in various TeX modes to display or edit references ;; associated with \cite commands, or matching \ref and \label commands. ;; New versions of this package (if they exist) may be found at: ;; http://people.debian.org/~psg/elisp/bib-cite.el ;; and in AUCTeX's CVS archive at ;; http://savannah.gnu.org/cgi-bin/viewcvs/auctex/auctex/ ;; Operating Systems: ;; Works in unix, DOS and OS/2. Developped under Linux. ;; AUCTeX users: ;; AUCTeX is a super-charged LaTeX mode for emacs. Get it at: ;; ;; ftp://ftp.gnu.org/pub/gnu/auctex/ ;; ;; WWW users may want to check out the AUCTeX page at ;; http://www.gnu.org/software/auctex/ ;; ;; bib-cite.el is included in the AUCTeX distribution. Therefore, if ;; you use AUCTeX and didn't obtained bib-cite.el separately, make sure ;; that you are actually using the more recent version. ;; RefTeX users: ;; RefTeX is a package with similar functions to bib-cite. ;; http://www.astro.uva.nl/~dominik/Tools/reftex/ ;; RefTeX is bundled and preinstalled with Emacs since version 20.2. ;; It was also bundled with XEmacs 19.16--20.x. ;; ;; I suggest that you use RefTeX to help you type-in text as it's functions ;; are better suited to this task than bib-cite, and use bib-cite's features ;; when you proof-read the text. ;; If you wish bib-cite to use RefTeX's reftex-view-crossref command to ;; display and find \label's and \cite bibliography entries, set the variable ;; bib-cite-use-reftex-view-crossref to t. ;; MS-DOS users: ;; Multifile documents are supported by bib-cite by using etags (TAGS files) ;; which contains a bug for MSDOS (at least for emacs 19.27 it does). ;; Get the file ;; http://people.debian.org/~psg/elisp/bib-cite.etags-bug-report ;; to see what patches to make to etags.c to fix it. ;; Description: ;; ~~~~~~~~~~~ ;; This package is used in various TeX modes to display or edit references ;; associated with \cite commands, or matching \eqref, \ref and \label ;; commands (so I actually overstep BiBTeX bounds here...). ;; ;; These are the functions: ;; ;; bib-display bib-display-mouse ;; - Display citation, \ref or \label under point ;; bib-find bib-find-mouse ;; - Edit citation, \ref or \label under point ;; bib-find-next - Find next occurrence of a \ref or \eqref ;; bib-make-bibliography - Make BiBTeX file containing only cite keys used. ;; bib-apropos - Search BiBTeX source files for keywords. ;; bib-etags - Refreshes (or builds) the TAGS files for ;; multi-file documents. ;; bib-create-auto-file - Used in bibtex-mode to create cite key ;; completion .el file for AUCTeX. ;; bib-highlight-mouse - Highlight \cite, \ref and \label commands in ;; green when the mouse is over them. ;; About Cite Commands and related functions: ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;; Various flavors of \cite commands are allowed (as long as they contain ;; the word `cite') and they may optionally have bracketed [] options. ;; Bibtex Cross-references are displayed, and @string abbreviations are ;; substituted or included. ;; ;; The \cite text is found (by emacs) in the bibtex source files listed in the ;; \bibliography command. The BiBTeX files can be located in a search path ;; defined by an environment variable (typically BIBINPUTS, but you can change ;; this). ;; ;; All citations used in a buffer can also be listed in a new bibtex buffer by ;; using bib-make-bibliography. This is useful to make a bibtex file for a ;; document from a large bibtex database. In this case, cross-references are ;; included, as well as the @string commands used. The @string abbreviations ;; are not substituted. ;; ;; The bibtex files can also be searched for entries matching a regular ;; expression using bib-apropos. ;; Usage instructions: ;; ~~~~~~~~~~~~~~~~~~ ;; bib-display Bound to Mouse-3 when specially highlighted. ;; In Hyperbole, bound to the Assist key. ;; Bound to `\C-c b d' ;; ;; bib-display will show the bibtex entry or the corresponding label or ;; ref commands from anywhere within a document. ;; With cursor on the \cite command itslef ;; -> display all citations of the cite command from the BiBTeX source. ;; With cursor on a particular cite key within the brackets ;; -> display that citation's text from the BiBTeX source file(s). ;; ;; Example: ;; ;; \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} ;; ^Cursor -> Display-all-citations ^Cursor -> Display-this-citation ;; ;; With cursor on a \label command ;; -> Display first matching \ref command in the document ;; With cursor on a \ref command ;; -> Display environment associated with the matching \label command. ;; ;; Finding a ref or label within a multi-file document requires a TAGS file, ;; which is automatically generated for you. This enables you to then use ;; any tags related emacs features. ;; ;; bib-find Bound to Mouse-2 when specially highlighted. ;; In Hyperbole, bound to the Action key. ;; Bound to `\C-c b f' ;; ;; bib-find will select the buffer and move point to the BiBTeX source file ;; at the proper citation for a cite command, or move point to anywhere ;; within a document for a label or ref command. The ref chosen is the ;; first occurrance within a document (using a TAGS file). If point is ;; moved within the same buffer, mark is set before the move and a message ;; stating so is given. If point is moved to another file, this is done in ;; a new window using tag functions. ;; ;; The next occurrence of a \ref or \eqref command may be found by invoking ;; bib-find-next, usually bound to `C-c b n'. ;; ;; For multi-file documents, you must be using AUCTeX (so that bib-cite can ;; find the master file) and all \input and \include commands must be first ;; on a line (not preceeded by any non-white text). ;; ;; bib-make-bibliography: Bound to `\C-c b m' ;; ;; Extract citations used in the current document from the \bibliography{} ;; file(s). Put them into a new suitably-named buffer. In a AUCTeX ;; multi-file document, the .aux files are used to find the cite keys (for ;; speed). You will be warned if these are out of date. ;; ;; This buffer is not saved to a file. It is your job to save it to whatever ;; name you wish. Note that AUCTeX has a unique name space for LaTeX and ;; BiBTeX files, so you should *not* name the bib file associated with ;; example.tex as example.bib! Rather, name it something like ;; example-bib.bib. ;; ;; bib-apropos: Bound to `\C-c b a' ;; ;; Searches the \bibliography{} file(s) for entries containing a keyword and ;; display them in the *help* buffer. You can trim down your search by using ;; bib-apropos in the *Help* buffer after the first invocation. the current ;; buffer is also searched for keyword matches if it is in bibtex-mode. ;; ;; It doesn't display cross-references nor does it substitute or display ;; @string commands used. It could easily be added, but it's faster this ;; way. Drop me a line if this would be a useful addition. ;; ;; If you find yourself entering a cite command and have forgotten which key ;; you want, but have entered a few initial characters as in `\cite{Gal', ;; then invoke bib-apropos. It will take that string (in this case `Gal') as ;; an initial response to the apropos prompt. You are free to edit it, or ;; simply press carriage return. ;; ;; bib-etags: Bound to `\C-c b e' ;; ;; Creates a TAGS file for AUCTeX's multi-file document (or refreshes it). ;; This is used by bib-find when editing multi-file documents. The TAGS file ;; is created automatically, but it isn't refreshed automatically. So if ;; bib-find can't find something, try running bib-etags again. ;; ;; bib-create-auto-file: ;; ;; Use this when editing a BiBTeX buffer to generate the AUCTeX .el file ;; which tell emacs about all its cite keys. I've added this command to ;; bibtex-mode pull-down menu. ;; ;; bib-highlight-mouse: Bound to `\C-c b h' ;; ;; Highlights \cite, \ref and \label commands in green when the mouse is over ;; them. By default, a call to this function is added to LaTeX-mode-hook ;; (via bib-cite-initialize) if you set bib-highlight-mouse-t to true. But ;; you may want to run this command to refresh the highlighting for newly ;; edited text. ;; Installation instructions: ;; ~~~~~~~~~~~~~~~~~~~~~~~~~ ;; bib-cite is a minor-mode, so you could invoke it in a LaTeX-mode hook. ;; e.g. If you are using AUCTeX (http://www.gnu.org/software/auctex/), you ;; could use: ;; ;; (autoload 'turn-on-bib-cite "bib-cite") ;; (add-hook 'LaTeX-mode-hook 'turn-on-bib-cite) ;; ;; If you are using Emacs' regular LaTeX-mode, use instead: ;; ;; (autoload 'turn-on-bib-cite "bib-cite") ;; (add-hook 'latex-mode-hook 'turn-on-bib-cite) ;; ;; bib-cite can be used with AUCTeX, or stand-alone. If used with AUCTeX on a ;; multi-file document (and AUCTeX's parsing is used), then all \bibliography ;; commands in the document will be found and used. ;; --- ;; The following variable can be unset (like shown) to tell bib-cite to ;; not give advice messages about which commands to use to find the next ;; occurrence of a search: ;; ;; (setq bib-novice nil) ;; --- ;; If you wish bib-cite to use RefTeX's reftex-view-crossref command to ;; display and find \label's and \cite bibliography entries, set the variable ;; bib-cite-use-reftex-view-crossref to t: ;; ;; (setq bib-cite-use-reftex-view-crossref t) ;; --- ;; The following variable determines whether we will attempt to highlight ;; citation, ref and label commands in green when they are under the ;; mouse. When highlighted, the mouse keys work to call bib-display ;; (bound to [mouse-3]) and bib-find (bound to [mouse-2]). If you use a ;; mode other than LaTeX-mode, you'll want to call bib-highlight-mouse with ;; a hook (See how we do this at the end of this file with the add-hook ;; command). ;; ;; (setq bib-highlight-mouse-t nil) ;; --- ;; The variable bib-switch-to-buffer-function sets the function used to ;; select buffers (if they differ from the original) in bib-cite commands ;; bib-make-bibliography, bib-display, bib-find ;; You may use `switch-to-buffer' `switch-to-buffer-other-window' or ;; `switch-to-buffer-other-frame'. ;; --- ;; If you use DOS or OS/2, you may have to set the following variable: ;; ;; (setq bib-dos-or-os2-variable t) ;; ;; if bib-cite.el fails to determine that you are using DOS or OS/2. ;; Try `C-h v bib-dos-or-os2-variable' to see if it needs to be set manually. ;; --- ;; bib-cite needs to call the etags program with its output file option ;; and also with the append option (usually -a). ;; I figured that DOS and OS/2 would use "etags /o=" instead of the unix ;; variant "etags -o ", but users have reported differently. So while the ;; unix notation is used here, you can reset it if you need to like so: ;; ;; (setq bib-etags-command "etags /r='/.*\\\(eq\|page\|[fvF]\)ref.*/' /o=") ;; (setq bib-etags-append-command ;; "etags /r='/.*\\\(eq\|page\|[fvF]\)ref.*/' /a /o=") ;; --- ;; For multi-file documents, a TAGS file is generated by etags. ;; By default, its name is TAGS. You can change this like so: ;; ;; (setq bib-etags-filename "TAGSLaTeX") ;; --- ;; If your environment variable to find BiBTeX files is not BIBINPUTS, then ;; reset it with the following variable (here, assuming it's TEXBIB instead): ;; ;; (setq bib-bibtex-env-variable "TEXBIB") ;; ;; Note that any directory ending in a double slash will cause bib-cite to ;; search recursively through subdirectories for your .bib files. This can ;; be slow, so use this judiciously. ;; e.g. setenv BIBINPUTS .:/home/psg/LaTeX/bibinputs// ;; -> all directories below /home/psg/LaTeX/bibinputs/ will be ;; searched. ;; ;; If your bibtex setup works but Emacs can't see the environment variable ;; correctly (Check `C-h v process-environment'), then customize the ;; variable `bib-cite-inputs' (e.g. `M-x customize-variable bib-cite-imputs') ;; ;; --- ;; If you do not wish bib-display to substitute @string abbreviations, ;; then set the following variable like so: ;; ;; (setq bib-substitute-string-in-display nil) ;; --- ;; Warnings are given when @string abbreviations are not defined in your bib ;; files. The exception is for months, usually defined in style files. If you ;; use other definitions in styles file (e.g. journals), then you may add them ;; to the `bib-substitute-string-in-display' list variable. ;; If you find circumstances in which this package fails, please let me know. ;; Things for me to do in later versions: ;; - treat @Strings correctly, not just in isolation. ;; - use `kpsewhich -expand-path='$BIBINPUTS'` instead of BIBINPUTS. ;; - jmv@di.uminho.pt (Jose Manuel Valenca) wants: ;; - prompt for \cite as well as \label and \ref ;; (and use AUCTeX's completion list) ;; - implement string concatenation, with #[ \t\n]*STRING_NAME ;; - Create new command to substitute @string text in any bibtex buffer. ;; ---------------------------------------------------------------------------- ;;; Change log: ;; V3.28 Feb 23 2005 - Ralf Angeli ;; - Some doc fixes in the commentary section. ;; V3.27 Feb 09 2005 - PSG ;; - Patch from Peter Heslin. TeX-master can now have symbol values. ;; V3.26 Aug 06 2004 - Reiner Steib ;; - Changed URL of AUCTeX. Use "AUCTeX", not "auc-tex" (skipped Change log). ;; V3.25 Feb 15 2004 - PSG ;; - Check existence of font-lock-unset-defaults; no longer defined in CVS ;; Emacs. Thanks to Adrian Lanz for reporting the problem. ;; V3.24 Oct 28 2003 - PSG ;; - bib-cite-file-directory-p: new function to replace ff-paths code. ;; V3.23 Oct 09 2003 - PSG ;; - some checkdoc cleanup; not yet complete. ;; V3.22 Sep 17 2003 - PSG ;; - bib-cite-aux-inputs: new defcustom. ;; - minor cleanup for `match-string'. ;; V3.21 Sep 08 2003 - PSG ;; - Ripping out off-topic imenu code. ;; V3.20 Aug 14 2003 - PSG ;; - psg-checkfor-file-list: Allow for relative directoties as entries in ;; BIBINPUTS. ;; - bib-cite-inputs: new defcustom equivalent to BIBINPUTS. ;; - bib-label-help-echo-format: fixed defcustom. ;; - psg-list-env: code cleanup. ;; - trailing whitespace cleanup. ;; V3.19 Apr 06 2003 - PSG ;; Remove code that ran when defcustom not present. ;; Remove hilit19 obsolete code. ;; V3.18 Mar 27 2003 - Bruce Ravel ;; Play well with the varioref and fancyref latex styles (vref, fref, Fref). ;; V3.17 May 01 2001 - (RCS V1.38) ;; - XEmacs has imenu after all. ;; V3.16 Dec 20 99 - (RCS V1.37) ;; - Added customize support. ;; V3.15 Dec 20 99 - (RCS V1.36) ;; - Removed stupid debugging code that I had left in. ;; V3.14 Dec 20 99 - ;; - New variable bib-ref-regexp for \ref regexp to match \label constructs ;; and added \pageref. (RCS V1.34) ;; - Edited bib-etags-command snd bib-etags-append-command to match. ;; V3.13 Dec 20 99 - (RCS V1.32) ;; - License changed to GPL. ;; - Kai Engelhardt bib-master-file takes .ltx extension ;; - imenu--create-LaTeX-index-for-document and bib-document-TeX-files ;; edited to accept .ltx extension. ;; - Michael Steiner added journals to @string ;; abbrevs and contributed `member-cis' to complaces @strings in a ;; case-insensitive manner. ;; V3.12 Dec 10 98 - Bruce Ravel (RCS V1.30) ;; Fixed bib-label-help. ;; V3.11 Oct 06 98 - PSG (RCS V1.29) ;; Quote \ character fot replace-match; ;; Applies to: @String{JGR = "J. Geophys.\ Res."} ;; V3.10 Sep 21 98 - Matt Hodges (RCS V1.28) ;; Removed instance of expand-file-name due to new behaviour in Emacs-20.3. ;; V3.09 Sep 09 98 - PSG (RCS V1.27) ;; Added support for \eqref; Added bib-find-next. ;; V3.08 Aug 20 98 - PSG (RCS V1.26) ;; Fixed imenu bug (prev-pos (point-max)) ;; V3.07 Nov 20 97 - Christoph Wedler (RCS V1.24) ;; bib-ext-list variable made permanent-local, otherwise VC registration ;; would use two extents for each reference etc. This was not a visible bug. ;; V3.06 Nov 12 97 - PSG (RCS V1.23) ;; Support use of reftex's reftex-view-crossref command. ;; V3.05 Nov 12 97 - Vladimir Alexiev (RCS V1.22) ;; regexp-quote the bibliography keys so a key like galbraith+kelley97 works ;; V3.04 Aug 25 97 - Christoph Wedler (RCS V1.20) ;; (bib-highlight-mouse): Would bug out on detached extents, ;; e.g. when killing a whole citation. ;; V3.03 Jul 16 97 - Christoph Wedler (RCS V1.18) ;; turn-on-bib-cite back to non-interactive. ;; V3.02 Jul 11 97 - Christoph Wedler (RCS V1.17) ;; * auctex/bib-cite.el (turn-on-bib-cite): Make interactive. ;; Argument to `bib-cite-minor-mode' is 1. ;; (bib-label-help-echo-format): New variable. ;; (bib-label-help-echo): New function. ;; (bib-label-help): Addition argument format. ;; (bib-highlight-mouse): Set extent property `help-echo' for XEmacs. ;; V3.01 May 22 97 - Diego Calvanese (RCS V1.16) ;; bib-make-bibliography handles commas separated citations in aux files. ;; V3.00 May 16 97 - Peter Galbraith (RCS V1.15) ;; bib-cite is now a minor mode. ;; V2.32 Apr 30 97 - Anders Stenman (RCS V1.14) ;; - Support for balloon-help. ;; V2.31 Mar 20 97 - Christoph Wedler (RCS V1.12) ;; - Better fontification of help buffer as bibtex or latex for XEmacs. ;; V2.30 Feb 10 97 - Peter Galbraith (RCS V1.11) ;; - Better fontification of help buffer as bibtex or latex. ;; V2.29 Jan 29 97 - Peter Galbraith (RCS V1.10) ;; - imenu looks for `\label{stuff}' instead of `\label' ;; V2.28 Jan 22 97 - Peter Galbraith (RCS V1.9) ;; - Bug in bib-create-auto-file. ;; V2.27 Dec 31 96 - Peter Galbraith (RCS V1.8) ;; - allow spaces between cite keys. ;; - Vladimir Alexiev ;; Allow () delimiters as well as {}. ;; Better check on bibtex-menu ;; Erase *bibtex-bibliography* buffer. ;; V2.26 Sep 24 96 - Peter Galbraith (RCS V1.7) ;; imenu bug fix. ;; V2.25 Sep 23 96 - Anders Stenman (RCS V1.6) ;; XEmacs bib-cite-fontify-help-as-latex bug fix. ;; V2.24 Aug 19 96 - Peter Galbraith (RCS V1.3) ;; XEmacs bug fix, minor defvars - Vladimir Alexiev ;; V2.23 Aug 13 96 - Peter Galbraith (RCS V1.2) ;; XEmacs - Add bib-cite entries to bibtex-mode popup menu. ;; V2.22 July 22 96 - Peter Galbraith (RCS V1.1) ;; local-map has `m' for bib-make-bibliography instead of `b' ;; set-buffer-menubar in XEmacs so that menu disappears after use. ;; V2.21 July 12 96 - Peter Galbraith ;; Define `\C-c b' keymap for both plain tex and auctex, in XEmacs and emacs. ;; Separate menu-bar menu in gnu emacs. ;; font-lock support for bib-display'ed citations (bibtex fontification) ;; and for matching \ref{} and \labels (latex fontification). ;; buffer-substring-no-properties in bib-apropos ;; (bug in completing-read with mouse faces) ;; imenu-sort-function made local and nil. ;; imenu--LaTeX-name-and-position fixed for section name containing "\" ;; Various other things... (whitespace within label strings, etc...) ;; V2.20 June 25 96 - Peter Galbraith ;; imenu fixed for emacs-19.31. ;; V2.19 May 13 96 ;; PSG: ;; - @string substitution fixed; bib-edit-citation fixed when buffer exists; ;; Christoph Wedler : ;; - Added bib-switch-to-buffer-function ;; - (setq tags-always-exact nil) for xemacs ;; - removed eval-after-load foe xemacs ;; V2.18 May 06 96 - PSG ;; New eval-after-load from Fred Devernay ;; V2.17 May 03 96 - PSG ;; Fixed bug introduced in V2.16, reported by Dennis Dams ;; V2.16 May 02 96 - Vladimir Alexiev ;; - somewhat compatible with Hyperbole by binding bib-find and bib-display to ;; the Action and Assist keys inside the bib-highlight-mouse-keymap. ;; - makes more liberal provisions for users with a tty. ;; V2.15 Apr 09 96 - ;; - fix "Buffer read-only" error caused by mouse-face text properties ;; patch by Piet van Oostrum ;; - Use tmm non-X menu, patch by Vladimir Alexiev ;; - input{file.txt} would not work. ;; bug report: David Kastrup ;; V2.14 Feb 26 96 - PSG - define eval-after-load for xemacs ;; Frederic Devernay's suggestion. ;; V2.13 Feb 08 96 - Peter Galbraith - Fixed recursive use of bib-apropos. ;; V2.12 Jan 19 96 - Peter Galbraith ;; emacs-19.30's [down-mouse-1] is defined (rather than [mouse-1]), so ;; bib-highlight-mouse-keymap now has [down-mouse-1] defined to override it. ;; V2.11 Nov 21 95 - Peter Galbraith ;; - Fixed bib-create-auto-file when bib file loaded before LaTeX file. ;; - Michal Mnuk's better imenu labels menu ;; - [mouse-1] and [mouse-2] key defs for highlighted regions. ;; - Improve X menus. ;; - Skip over style files in bib-document-TeX-files. ;; - Add menus and mouse highlighting for xemacs ;; Anders Stenman Dima Barsky ;; - Check bib-use-imenu before calling LaTeX-hook-setq-imenu. ;; From: Kurt Hornik ;; - Remove mouse face properties before inserting new ones. ;; From: Peter Whaite ;; V2.10 Aug 17 95 - Peter Galbraith - fatal bugs in bib-make-bibliography. ;; V2.09 Jul 19 95 - Peter Galbraith ;; - Had introduced bug in search-directory-tree. synced with ff-paths.el. ;; V2.08 Jul 13 95 - Peter Galbraith ;; Fred Douglis says etags should be required ;; V2.07 Jul 04 95 - Peter Galbraith ;; - Minor changes with filename manipulations (careful with DOS...) ;; - Problem if auc-tex not already loaded -> LaTeX-mode-map ;; V2.06 Jul 03 95 - Peter Galbraith - Added recursion through BIBINPUTS path. ;; V2.05 Jun 22 95 - Peter Galbraith Bug: Hanno Wirth ;; bib-get-citations would truncate @String{KEY ="J. {\"u} Res."} ;; V2.04 Jun 19 95 - Peter Galbraith - ;; - use bibtex-mode syntax table in bib buffer, else bib-apropos truncates ;; an article if it contains an unbalanced closing parenthesis. ;; - bib-highlight-mouse would mark a buffer modified ;; V2.03 May 16 95 - Peter Galbraith - ;; auc-tec menu compatible with old "AUC TeX" pull-down name ;; V2.02 May 10 95 - Peter Galbraith - ;; bug report by Bodo Huckestein (getenv env) under DOS ;; V2.01 Mar 27 95 - Peter Galbraith - No imenu on xemacs; check BIBINPUT also ;; V2.00 Mar 27 95 - Peter Galbraith ;; - bib-find and bib-display replace bib-edit-citation and ;; bib-display-citation ;; - bib-apropos now take initial guess from start of cite argument at point. ;; - Multi-file support for bib-make-bibliography using .aux files. ;; - \label and \ref functionality for bib-find and bib-display: ;; - \label may appear within an \begin\end or to label a (sub-)section. ;; - Cursor on \label, goto first \ref, set next i-search to pattern. ;; - Cursor on \ref, goto \label or display it's environment or section. ;; - Works on hidden code! ;; V1.08 Jan 16 95 - Peter Galbraith ;; bib-apropos can be used within *Help* buffer to trim a search. ;; V1.07 Dec 13 94 - Peter Galbraith ;; - Fixed: multi-line @string commands in non-inserted display. ;; - Fixed: quoted \ character in @string commands. ;; - BiBTeX comments should not affect bib-cite ;; - Fixed bib-apropos (from Christoph Wedler ) ;; Faster now, and avoids infinite loops. ;; - Added bib-edit-citation to edit a bibtex files about current citation. ;; - Allow space and newlines between citations: \cite{ entry1, entry2} ;; - Added bib-substitute-string-in-display, bib-string-ignored-warning ;; and bib-string-regexp. ;; - bib-display-citation (from Markus Stricker ) ;; Could not find entry with trailing spaces ;; V1.06 Nov 20 94 - Peter Galbraith ;; - Fixed bib-apropos for: ;; hilighting without invoking bibtex mode. ;; display message when no matches found. ;; would search only last bib file listed (forgot to `goto-char 1') ;; - Fixed bib-make-bibliography that would only see first citation in a ;; multi-key \cite command (found by Michail Rozman ;; - bib-make-bibliography didn't see \cite[A-Z]* commands. ;; Found by Richard Stanton ;; ************************************************** ;; - * Completely rewritten code to support crossrefs * ;; ************************************************** ;; - autodetection of OS/2 and DOS for bib-dos-or-os2-variable ;; - Created bib-display-citation-mouse ;; - bib-apropos works in bibtex-mode on the current buffer ;; - bibtex entry may have comma on next line (!) ;; @ARTICLE{Kiryati-91 ;; , YEAR = {1991 } ;; ... ;; V1.05 Nov 02 94 - Peter Galbraith ;; - bug fix by rossmann@TI.Uni-Trier.DE (Jan Rossmann) ;; for (boundp 'TeX-check-path) instead of fboundp. Thanks! ;; - Translate environment variable set by bib-bibtex-env-variable. ;; (suggested by Richard Stanton ) ;; - add bib-dos-or-os2-variable to set environment variable path separator ;; - Add key-defs for any tex-mode and auc-tex menu-bar entries. ;; [in auc-tec TeX-mode-map is common to both TeX and LaTeX at startup ;; (but TeX-mode-map is only copied to LaTeX-mode-map at initilisation) ;; in plain emacs, use tex-mode-map for both TeX and LaTeX.] ;; - Add key def for bibtex-mode to create auc-tex's parsing file. ;; - Fix bugs found by ;; - fix bib-get-citation for options ;; - fix bib-get-citation for commas preceeded citation command ;; - better regexp for citations and their keys. ;; - Added @string support for any entry (not just journal entries). ;; (I had to disallow numbers in @string keys because of years. ;; Is that ok?) ;; - added bib-apropos ;; V1.04 Oct 24 94 - Peter Galbraith ;; - Don't require dired-aux, rather define the function we need from it. ;; - Regexp-quote the re-search for keys. ;; - Name the bib-make-bibliography buffer diffently than LaTeX buffer ;; because auc-tex's parsing gets confused if same name base is used. ;; V1.03 Oct 24 94 - Peter Galbraith - require dired-aux for dired-split ;; V1.02 Oct 19 94 - Peter Galbraith ;; - If using auc-tex with parsing activated, use auc-tex's functions ;; to find all \bibliography files in a multi-file document. ;; - Find bib files in pwd, BIBINPUTS environment variable path and ;; TeX-check-path elisp variable path. ;; - Have the parser ignore \bibliography that is on a commented `%' line. ;; (patched by Karl Eichwalder ) ;; - Allow for spaces between entry type and key in bib files: ;; (e.g @Article{ key} ) ;; (suggested by Nathan E. Doss ) ;; - Allows options in \cite command (e.g. agu++ package \cite[e.g.][]{key}) ;; - Includes @String{} abbreviations for `journal' entries ;; V1.01 July 07 94 - Peter Galbraith - \bibliography command may have list of ;; BibTeX files. All must be readable. ;; V1.00 July 06 94 - Peter Galbraith - Created ;; ---------------------------------------------------------------------------- ;;; Code: (eval-when-compile (require 'cl)) (defgroup bib-cite nil "bib-cite, LaTeX minor-mode to display \\cite, \\ref and \\label commands." :group 'tex) (defcustom bib-cite-use-reftex-view-crossref nil "*Non-nil means, RefTeX will be used to find cross references. When this variable is non-nil, both `bib-find' and `bib-display' will call a function in RefTeX to find or display the cross reference of a \\ref or \\cite macro at point." :group 'bib-cite :type 'boolean) (defcustom bib-novice t "*Give advice to novice users about what commands to use next." :group 'bib-cite :type 'boolean) (defcustom bib-switch-to-buffer-function 'switch-to-buffer "*Function used to select buffers if they differ from the original. You may use `switch-to-buffer' `switch-to-buffer-other-window' or `switch-to-buffer-other-frame'." :group 'bib-cite :type '(choice (function-item switch-to-buffer) (function-item switch-to-buffer-other-window) (function-item switch-to-buffer-other-frame))) (defcustom bib-highlight-mouse-t t "*Call bib-highlight-mouse from `LaTeX-mode-hook' to add green highlight." :group 'bib-cite :type 'boolean) (defcustom bib-label-help-echo-format "button2 finds %s, button3 displays %s" "*Format string for info if the mouse is over LaTeX commands. If nil, do not display info." :group 'bib-cite :type '(radio (const :tag "Don't display info" nil) string)) (defcustom bib-bibtex-env-variable "BIBINPUTS" "*Environment variable setting the path where BiBTeX input files are found. BiBTeX 0.99b manual says this should be TEXBIB. Another version says it should BSTINPUTS. I don't know anymore! The colon character (:) is the default path separator in unix, but you may use semi-colon (;) for DOS or OS/2 if you set bib-dos-or-os2-variable to t." :group 'bib-cite :type 'string) (defcustom bib-cite-inputs nil "*List of directories to search for .bib files. This is in addition to those listed in the environment variable specified by `bib-bibtex-env-variable'." :group 'bib-cite :type '(repeat (file :format "%v"))) (defcustom bib-cite-aux-inputs nil "*List of directories to search for .aux files. MiKTeX has the LaTeX option -aux-directory to store .aux files in an alternate directory. You may set this variable to let bib-cite find these .aux files." :group 'bib-cite :type '(repeat (file :format "%v"))) (defcustom bib-dos-or-os2-variable (or (equal 'emx system-type) (equal 'ms-dos system-type)) ;; Under OS/2 system-type equals emx ;; Under DOS system-type equals ms-dos "*Whether you use DOS or OS/2 for bib-make-bibliography/bib-display. It tells bib-make-bibliography and bib-display to translate the BIBINPUTS environment variable using the \";\" character as a path separator and to translate DOS' backslash to slash. e.g. Use a path like \"c:\\emtex\\bibinput;c:\\latex\\bibinput\" \(You can change the environment variable which is searched by setting the elisp variable bib-bibtex-env-variable)" :group 'bib-cite :type 'boolean) (defcustom bib-etags-command "etags -r '/.*\\\\\\(eq\\|page\\|[fvF]\\)ref.*/' -o " "*Variable for the etags command and its output option. In unix, this is usually \"etags -r '/.*\\\(eq\|page\|[fvF]\)ref.*/' -o \" \(we use the -r option to tell etags to list AMS-LaTeX's \\eqref command.) In DOS and OS/2, this *may* be different, e.g. using slashes like \"etags /o=\" If so, set it this variable." :group 'bib-cite :type 'string) (defcustom bib-etags-append-command "etags -r '/.*\\\\\\(eq\\|page\\|[fvF]\\)ref.*/' -a -o " "*Variable for the etags command and its append and output option. In unix, this is usually \"etags -r '/.*\\\(eq\|page\|[fvF]\)ref.*/' -a -o \" In DOS and OS/2, this *may* be \"etags /a /o=\" If so, set it this variable." :group 'bib-cite :type 'string) (defcustom bib-etags-filename "TAGS" "*Variable for the filename generated by etags, by defaults this TAGS. but you may want to change this to something like TAGSLaTeX such that it can coexist with some other tags file in your master file directory." :group 'bib-cite :type 'string) (defcustom bib-ref-regexp "\\\\\\(eq\\|page\\|[fvF]\\)?ref" "*Regular expression for \\ref LaTeX commands that have a matching \\label. without the curly bracket. If you change this variable and you use multi-file documents, make sure you also edit the variables bib-etags-command and bib-etags-append-command." :group 'bib-cite :type 'regexp) (defcustom bib-substitute-string-in-display t "*Determines if bib-display will substitute @string definitions. If t, then the @string text is substituted. If nil, the text is not substituted but the @string entry is included." :group 'bib-cite :type 'boolean) (defcustom bib-string-ignored-warning '("jan" "feb" "mar" "apr" "may" "jun" "jul" "aug" "sep" "sept" "oct" "nov" "dec" "acmcs" "acta" "cacm" "ibmjrd" "ibmjs" "ieeese" "ieeetcad" "ieeetc" "ipl" "jacm" "jcss" "scp" "sicomp" "tcs" "tocs" "tods" "tog" "toms" "toois" "toplas" ) "*@string abbreviations for which a warning is not given if not defined. These are usually month abbreviations (or journals) defined in a style file." :group 'bib-cite :type '(repeat (string :tag "Entry"))) ;;<<<<< (prefix-numeric-value arg) 0) (not bib-cite-minor-mode))) (cond (bib-cite-minor-mode ;Setup the minor-mode ;; Christoph Wedler's suggestion for xemacs ;; Added for version 2.19 (if (boundp 'tags-always-exact) (progn (make-local-variable 'tags-always-exact) (setq tags-always-exact nil))) ;; mouse overlay (if bib-highlight-mouse-t (progn (bib-cite-setup-highlight-mouse-keymap) (bib-highlight-mouse) (make-local-hook 'after-change-functions) (add-hook 'after-change-functions 'bib-cite-setup-mouse-function nil t))) (if bib-cite-is-XEmacs (progn (or (local-variable-p 'current-menubar (current-buffer)) (set-buffer-menubar current-menubar)) (add-submenu nil bib-cite-minor-mode-menu)))) (t ;;;Undo the minor-mode ;; mouse overlay (cond (bib-cite-is-XEmacs (while bib-ext-list (delete-extent (car bib-ext-list)) (setq bib-ext-list (cdr bib-ext-list)))) (t (remove-hook 'after-change-functions 'bib-cite-setup-mouse-function t) (let ((before-change-functions) (after-change-functions)) ;; FIXME This detroys all mouse-faces and local-maps! ;; FIXME Hope no other package is using them in this buffer! (remove-text-properties (point-min) (point-max) '(mouse-face t local-map t))))) (if bib-cite-is-XEmacs (delete-menu-item '("BCite")))))) ;;This must be eval'ed when the LaTeX mode is in use. ;; bib-highlight-mouse-keymap is a local variable so each buffer can have it's ;; own. (defun bib-cite-setup-highlight-mouse-keymap () "Set up the bib-cite text in the current buffer to be clickable." (make-local-variable 'bib-highlight-mouse-keymap) (setq bib-highlight-mouse-keymap ;;; First, copy the local keymap so we don't have `disappearing' menus ;;; when the mouse is moved over a \ref, \label or \cite command. ;;; FIXME: Check out (mouse-major-mode-menu) to see how it grabs the local ;;; menus to display. Maybe on `highlighted' commands we could only ;;; display the bib-cite stuff (or a subset of it). (let ((m (copy-keymap (current-local-map)))) (cond (bib-cite-is-XEmacs (set-keymap-name m 'bib-highlight-mouse-keymap) (cond ;;action-key stuff from Vladimir Alexiev ((commandp 'action-key) ;; for hyperbole. The Right Way is to define implicit buttons ;; (defib) bib-cite and label-ref instead of overriding ;; action-key and assist key, so that eg smart key help can ;; be obtained, but I'm lazy. (substitute-key-definition 'action-key 'bib-find m global-map) (substitute-key-definition 'assist-key 'bib-display m global-map) (substitute-key-definition 'action-key-depress 'bib-find-mouse m global-map) (substitute-key-definition 'assist-key-depress 'bib-display-mouse m global-map) (substitute-key-definition 'action-mouse-key nil m global-map) (substitute-key-definition 'assist-mouse-key nil m global-map)) (t ; xemacs, not hyperbole (define-key m "\e\r" 'bib-find-mouse) ; bug Fixed in V2.17 (define-key m "\e\n" 'bib-display-mouse) ;bug Fixed in V2.17 ;;(define-key m [(shift button1)] 'bib-display-mouse) (define-key m [button3] 'bib-display-mouse) (define-key m [button2] 'bib-find-mouse)))) (t ; emacs 19 (cond ((commandp 'action-key) (substitute-key-definition 'action-key 'bib-find m global-map) (substitute-key-definition 'assist-key 'bib-display m global-map) (substitute-key-definition 'action-mouse-key-emacs19 'bib-find-mouse m global-map) (substitute-key-definition 'assist-mouse-key-emacs19 'bib-display-mouse m global-map) (substitute-key-definition 'action-key-depress-emacs19 nil m global-map) (substitute-key-definition 'assist-key-depress-emacs19 nil m global-map)) (t ; emacs 19, not hyperbole (define-key m [down-mouse-3] 'bib-display-mouse) (define-key m [mouse-2] 'bib-find-mouse))))) m))) ;;;###autoload (defun turn-on-bib-cite () "Unconditionally turn on Bib Cite mode." (bib-cite-minor-mode 1)) (defun bib-cite-setup-mouse-function (beg end old-len) (save-excursion (save-match-data (save-restriction (narrow-to-region (progn (goto-char beg) (beginning-of-line) (point)) (progn (goto-char end) (forward-line 1) (point))) (bib-highlight-mouse))))) (defvar bib-cite-minor-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-cba" 'bib-apropos) (define-key map "\C-cbb" 'bib-make-bibliography) (define-key map "\C-cbd" 'bib-display) (define-key map "\C-cbe" 'bib-etags) (define-key map "\C-cbf" 'bib-find) (define-key map "\C-cbn" 'bib-find-next) (define-key map "\C-cbh" 'bib-highlight-mouse) map) "Bib-cite minor-mode keymap.") (easy-menu-define bib-cite-minor-mode-menu bib-cite-minor-mode-map "Menu keymap for bib-cite." '("BCite" ["Make BibTeX bibliography buffer" bib-make-bibliography t] ["Display citation or matching \\ref or \\label" bib-display t] ["Find BibTeX citation or matching \\ref or \\label" bib-find t] ["Search apropos BibTeX files" bib-apropos t] ["Build TAGS file for multi-file document" bib-etags (bib-master-file)] ["Refresh \\cite, \\ref and \\label mouse highlight" bib-highlight-mouse t])) ;; Install ourselves: (or (assq 'bib-cite-minor-mode minor-mode-alist) (setq minor-mode-alist (cons '(bib-cite-minor-mode " BCite") minor-mode-alist))) (or (assq 'bib-cite-minor-mode minor-mode-map-alist) (setq minor-mode-map-alist (cons (cons 'bib-cite-minor-mode bib-cite-minor-mode-map) minor-mode-map-alist))) ;;; Add a menu entry to bibtex.el (Perhaps I should not do this). (cond ((and (string-match "XEmacs\\|Lucid" emacs-version) (or window-system (fboundp 'smart-menu))) ;text menus by Bob Weiner ;; ;; xemacs under X with AUCTeX ;; ;; Add to bibtex.el's popup menu (defvar bib-cite-xemacs-bibtex-mode-menu '("---" "Bib-Cite" "---" ["Search apropos BibTeX files" bib-apropos t] ["Create AUCTeX auto parsing file" bib-create-auto-file t]) "Submenu of bibtex-mode menu, used by bib-cite.") (if (boundp 'bibtex-menu) ;; Add menu now (setq bibtex-menu (append bibtex-menu bib-cite-xemacs-bibtex-mode-menu)) ;; Setup to add menu later (defun bib-cite-bibtex-mode-hook () (if (boundp 'bibtex-menu) (progn (setq bibtex-menu (append bibtex-menu bib-cite-xemacs-bibtex-mode-menu)) (remove-hook 'bibtex-mode-hook 'bib-cite-bibtex-mode-hook)))) (add-hook 'bibtex-mode-hook 'bib-cite-bibtex-mode-hook)) ) ((and (not (string-match "XEmacs\\|Lucid" emacs-version)) (string-equal "19" (substring emacs-version 0 2)) (or window-system (fboundp 'tmm-menubar))) ; 19.30 - Will autoload if necessary ;; ;; emacs-19 under X-windows (or non-X with tmm) ;; ;; This *almost* makes me want to switch over to XEmacs... ;; to AUCTeX auto file for a bibtex buffer (eval-after-load "bibtex" '(progn (cond ((lookup-key bibtex-mode-map [menu-bar move/edit]) (define-key-after (lookup-key bibtex-mode-map [menu-bar move/edit]) [bib-nil] '("---" . nil) '"--") (define-key-after (lookup-key bibtex-mode-map [menu-bar move/edit]) [bib-apropos] '("Search Apropos" . bib-apropos) 'bib-nil) (define-key-after (lookup-key bibtex-mode-map [menu-bar move/edit]) [auc-tex-parse] '("Create AUCTeX auto parsing file" . bib-create-auto-file) 'bib-apropos)) ((lookup-key bibtex-mode-map [menu-bar bibtex-edit]) (define-key-after (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) [bib-nil] '("---" . nil) '"--") (define-key-after (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) [bib-apropos] '("Search Apropos" . bib-apropos) 'bib-nil) (define-key-after (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) [auc-tex-parse] '("Create AUCTeX auto parsing file" . bib-create-auto-file) 'bib-apropos))))))) ;; Following from bibtex.el (defvar bib-cite-bibtex-font-lock-keywords '(("^\\( \\|\t\\)*\\(@[A-Za-z]+\\)[ \t]*[({]\\([][A-Za-z0-9.:;?!`'()/*@_+=|<>-]+\\)?" (2 font-lock-function-name-face) (3 font-lock-reference-face nil t)) ;; reference type and reference label ("^[ \t]*\\(OPT[^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*\\)[ \t]*=" 1 font-lock-comment-face) ;; optional field names (treated as comments) ("^[ \t]*\\([^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*\\)[ \t]*=" 1 font-lock-variable-name-face) ;; field names "Default expressions to fontify in BibTeX mode.")) (defvar bib-cite-bibtex-mode-syntax-table (let ((st (make-syntax-table))) ;; [alarson:19920214.1004CST] make double quote a string quote (modify-syntax-entry ?\" "\"" st) (modify-syntax-entry ?$ "$$ " st) (modify-syntax-entry ?% "< " st) (modify-syntax-entry ?' "w " st) (modify-syntax-entry ?@ "w " st) (modify-syntax-entry ?\\ "\\" st) (modify-syntax-entry ?\f "> " st) (modify-syntax-entry ?\n "> " st) (modify-syntax-entry ?~ " " st) st)) ;; Code from bibtex.el ends ;; @string starts with a letter and does not contain any of ""#%'(),={} ;; Here we do not check that the field contains only one string field and ;; nothing else. (defvar bib-string-regexp "^[, \t]*[a-zA-Z]+[ \t]*=[ \t]*\\([a-zA-Z][^#%'(),={}\" \t\n]*\\)" "Regular expression for field containing a @string.") (defun bib-display () "Display BibTeX citation or matching \\ref or \\label command under point. If text under cursor is a \\cite command, then display its BibTeX info from \\bibliography input file. Example with cursor located over cite command or arguments: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} ^Display-all-citations ^Display-this-citation If text under cursor is a \\ref command, then display environment associated with its matching \\label command. If text under cursor is a \\label command, then display the text around the first matching \\ref command. The user is prompted for a \\label or \\ref is nothing suitable is found under the cursor. The first prompt is for a label. If you answer with an empty string, a second prompt for a ref will be given. A TAGS file is created and used for multi-file documents under auctex." (interactive) (let ((cite)(ref)(label)) (save-excursion (if (not (looking-at "\\\\")) (search-backward "\\" nil t)) (if (looking-at bib-ref-regexpc) (setq ref t) (if (looking-at "\\\\label{") (setq label t) (setq cite t)))) (cond ;; reftex doesn't handle label->ref ((and bib-cite-use-reftex-view-crossref (or ref cite)) ;;;FIXME: reftex doesn't want point on \ref or \cite part, but on keyword (require 'reftex) (reftex-view-crossref nil)) (cite (bib-display-citation)) (t (bib-display-label))))) (defun bib-find () "Edit BibTeX citation or find matching \\ref or \\label command under point. For multi-entry cite commands, the cursor should be on the actual cite key desired (otherwise a random entry will be selected). e.g.: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} ^Display-this-citation If text under cursor is a \\ref command, then point is moved to its matching \\label command. If text under cursor is a \\label command, then point is moved to the first matching \\ref command. The user is prompted for a \\label or \\ref is nothing suitable is found under the cursor. The first prompt is for a label. If you answer with an empty string, a second prompt for a ref will be given. A TAGS file is created and used for multi-file documents under auctex." (interactive) (let ((cite)(ref)(label)) (save-excursion (if (not (looking-at "\\\\")) (search-backward "\\" nil t)) (if (looking-at bib-ref-regexpc) (setq ref t) (if (looking-at "\\\\label{") (setq label t) (setq cite t)))) (cond ;; reftex doesn't handle label->ref ((and bib-cite-use-reftex-view-crossref (or ref cite)) (require 'reftex) (reftex-view-crossref t)) (cite (bib-edit-citation)) (t (bib-find-label))))) (defvar bib-cite-search-ring nil "Bib-cite intenal variable to hold last \\ref or \\eqref find.") (defun bib-find-next (&optional prev-p) "Find next occurrence of a \ref or \eqref. This is made necessary because we now use a regexp to find tags in multi-file documents, and the Emacs command `find-tag' doesn't allow to interactively find the next occurrence of a regexp." (interactive "P") (if (bib-master-file) ;Multi-file document (if prev-p (find-tag t '- t) (find-tag t t t)) (if bib-cite-search-ring ;;FIXME: Should first make sure I move off initial \ref{}. (let ((regexp (concat bib-ref-regexpc bib-cite-search-ring "}"))) (if prev-p (if (not (re-search-backward regexp nil t)) (message "No previous occurrence of reference %s" bib-cite-search-ring)) (if (not (re-search-forward regexp nil t)) (message "No next occurrence of reference %s" bib-cite-search-ring)))) (message "Sorry, no previous reference to find. Use bib-find?")))) (defun bib-display-mouse (EVENT) "Display BibTeX citation or matching \\ref or \\label under mouse EVENT. See bib-display." (interactive "e") (mouse-set-point EVENT) (bib-display)) (defun bib-find-mouse (EVENT) "Edit BibTeX citation or find matching \\ref or \\label under mouse EVENT. See bib-find." (interactive "e") (mouse-set-point EVENT) (bib-find)) (defun bib-apropos () "Display BibTeX entries containing a keyword from bibliography file. The files specified in the \\bibliography command are searched unless the current buffer is in `bibtex-mode' or is the Help buffer. In those cases, *it* is searched. This allows you to trim down a search further by using bib-apropos sequentially." ;;(interactive "sBibTeX apropos: ") (interactive) (let* ((keylist (and (boundp 'TeX-auto-update) ;Avoid error in FRAMEPOP (fboundp 'LaTeX-bibitem-list) ;Use this if using auctex (LaTeX-bibitem-list))) (keyword (bib-apropos-keyword-at-point)) (keyword (completing-read "BiBTeX apropos: " keylist nil nil keyword)) (the-text)(key-point)(start-point) (new-buffer-f (and (not (string-match "^bib" mode-name)) (not (string-equal "*Help*" (buffer-name))))) (bib-buffer (or (and new-buffer-f (bib-get-bibliography nil)) (current-buffer)))) (save-excursion (set-buffer bib-buffer) (goto-char (point-min)) (while (and (re-search-forward "^[ \t]*@" nil t) (re-search-forward keyword nil t)) (setq key-point (point)) ;To make sure this is within entry (re-search-backward "^[ \t]*@" nil t) (setq start-point (point)) (forward-list 1) (if (< (point) key-point) ;And this is that test... (goto-char key-point) ;Not within entry, skip it. (setq the-text (cons (concat (buffer-substring start-point (point)) "\n") the-text)))) (if (not the-text) (message "Sorry, no matches found.") (with-output-to-temp-buffer "*Help*" (mapcar 'princ (nreverse the-text))) (bib-cite-fontify-help-as-bibtex) (if bib-novice (message (substitute-command-keys (concat "Use \\[bib-apropos] again in the *help* buffer" " to trim the search"))))) (if new-buffer-f (kill-buffer bib-buffer))))) (defvar bib-document-citekeys-obarray-warnings nil "Bib-cite internal variable.") (defun bib-make-bibliography () "Extract citations used in the current document from \bibliography{} file(s). Put them into a buffer named after the current buffer, with extension .bib. In an AUCTeX multi-file document, parsing must be on and the citation keys are extracted from the .aux files. In a plain LaTeX buffer (not multi-file), the cite keys are extracted from the text itself. Therefore the text need not have been previously processed by LaTeX. This function is useful when you want to share a LaTeX file, and therefore want to create a bibtex file containing only the references used in the document." (interactive) (let* ((the-keys-obarray (or (bib-document-citekeys-obarray) (bib-buffer-citekeys-obarray))) ;1st in case of error (new-buffer (create-file-buffer (concat (substring (buffer-name) 0 (or (string-match "\\." (buffer-name)) (length (buffer-name)))) "-bib.bib"))) (bib-buffer (bib-get-bibliography nil)) (the-warnings (bib-get-citations the-keys-obarray bib-buffer new-buffer nil))) (kill-buffer bib-buffer) ;;; (switch-to-buffer new-buffer) (funcall bib-switch-to-buffer-function new-buffer) (bibtex-mode) (if (or bib-document-citekeys-obarray-warnings the-warnings) (progn (cond ((and bib-document-citekeys-obarray-warnings the-warnings) (with-output-to-temp-buffer "*Help*" (princ bib-document-citekeys-obarray-warnings the-warnings))) (bib-document-citekeys-obarray-warnings (with-output-to-temp-buffer "*Help*" (princ bib-document-citekeys-obarray-warnings))) (the-warnings (with-output-to-temp-buffer "*Help*" (princ the-warnings)))) (setq bib-document-citekeys-obarray-warnings nil) ;Reset (bib-cite-fontify-red))) (if bib-novice (message (substitute-command-keys "Use \\[save-buffer] to save this buffer to a file."))))) (defun bib-cite-fontify-red (&optional limit) "Fontify *Help* buffer in red-bold up to optional LIMIT." (if (and window-system ;Not exactly correct for XEmacs (not (facep 'red-bold))) (progn (copy-face 'bold 'red-bold) (set-face-foreground 'red-bold "red"))) (save-excursion (set-buffer "*Help*") (let ((before-change-functions) (after-change-functions)) (put-text-property (point-min)(or limit (point-max)) 'face 'red-bold)))) (defun bib-cite-fontify-help-xemacs (defaults) (if (fboundp 'font-lock-set-defaults-1) ; >= XEmcas 19.14 (progn (set-buffer "*Help*") (setq font-lock-defaults-computed nil font-lock-keywords nil) (font-lock-set-defaults-1 (and defaults (font-lock-find-font-lock-defaults defaults))) (font-lock-fontify-buffer) (setq font-lock-defaults-computed nil font-lock-keywords nil) (font-lock-set-defaults-1)))) (defun bib-cite-fontify-help-as-bibtex () (save-excursion (cond ((not (featurep 'font-lock)) nil) ;No font-lock! Stop here. ;; font-lock under Emacs and XEmacs ((string-match "XEmacs\\|Lucid" emacs-version) ;; XEmacs (bib-cite-fontify-help-xemacs 'bibtex-mode)) (t ;; Emacs (set-buffer "*Help*") (let ((font-lock-defaults '(bib-cite-bibtex-font-lock-keywords nil t ((?$ . "\"")(?\" . "."))))) (if font-lock-mode (font-lock-mode) (if (fboundp 'font-lock-unset-defaults) (font-lock-unset-defaults)) (font-lock-unfontify-buffer)) (font-lock-fontify-buffer)))))) (defun bib-cite-fontify-help-as-latex () (save-excursion (cond ((not (featurep 'font-lock)) nil) ;No font-lock! Stop here. ;; font-lock under Emacs and XEmacs ((string-match "XEmacs\\|Lucid" emacs-version) ;; XEmacs, not necessary to do s.th. special for font-latex, we do *not* ;; want the buffer-local faces! (bib-cite-fontify-help-xemacs 'latex-mode)) (t ;; Emacs (set-buffer "*Help*") ;; Actually, don't want to `permanently' affect *Help* buffer... ;;(if (featurep 'font-latex) ;; (font-latex-setup) ;; Rather I should deal with this in the `let' form: ;; (make-local-variable 'font-lock-string-face) ;; (setq font-lock-string-face font-latex-math-face ;; font-latex-string-face (default-value 'font-lock-string-face)) (let ((font-lock-defaults (if (featurep 'font-latex) '((font-latex-keywords font-latex-keywords-1 font-latex-keywords-2) nil nil ((?\( . ".") (?\) . ".") (?$ . "\"")) nil (font-lock-comment-start-regexp . "%") (font-lock-mark-block-function . mark-paragraph)) '(tex-font-lock-keywords nil nil ((?$ . "\"")))))) (if font-lock-mode (font-lock-mode) (if (fboundp 'font-lock-unset-defaults) (font-lock-unset-defaults)) (font-lock-unfontify-buffer)) (font-lock-fontify-buffer)))))) (defvar bib-document-TeX-files-warnings nil "Bib-cite internal variable.") (defun bib-etags (&optional masterdir) "Invoke etags on all tex files of the document in directory MASTERDIR. Store the TAGS file in the master-directory. Expect errors if you use this outside of auctex or within a plain single-file document. Also makes sure that the TAGS buffer is updated. See variables bib-etags-command and bib-etags-filename" (interactive) (require 'etags) (let* ((the-file-list (bib-document-TeX-files)) (the-file (car the-file-list)) (dir (or masterdir (bib-master-directory))) (the-tags-file (expand-file-name bib-etags-filename dir)) (the-tags-buffer (get-file-buffer the-tags-file))) ;; Create TAGS file with first TeX file (master file) (shell-command (concat bib-etags-command the-tags-file " " the-file)) (setq the-file-list (cdr the-file-list)) ;; Append to TAGS file for all other TeX files. (while the-file-list (setq the-file (car the-file-list)) (shell-command (concat bib-etags-append-command the-tags-file " " the-file)) (setq the-file-list (cdr the-file-list))) (if the-tags-buffer ;buffer existed; we must refresh it. (save-excursion (set-buffer the-tags-buffer) (revert-buffer t t))) ;; Check value of tags-file-name against the-tags-file (or (equal the-tags-file tags-file-name) ;make sure it's current (visit-tags-table the-tags-file)) ;(set (make-local-variable 'tags-file-name) the-tags-file)) ;; above should not be needed ;; Weird Bug: ;; (visit-tags-table-buffer) seems to get called twice when called by ;; find-tag on an undefined tag. The second time, it's in the TAGS ;; buffer and returns an error because TAGS buffer does have ;; tags-file-name set. ;; To get around this. I'm setting this variable in the TAGS buffer. ;; Skip this in XEmacs (Changed by Anders Stenman) (if (and (not (string-match "XEmacs\\|Lucid" emacs-version)) (get-file-buffer the-tags-file)) (save-excursion (set-buffer (get-file-buffer the-tags-file)) (set (make-local-variable 'tags-file-name) the-tags-file)))) (if bib-document-TeX-files-warnings ;free variable loose in emacs! (progn (with-output-to-temp-buffer "*Help*" (princ bib-document-TeX-files-warnings)) (setq bib-document-TeX-files-warnings nil) ;Reset (bib-cite-fontify-red)))) (defun bib-Is-hidden () "Return true is current point is hidden." (if (not selective-display) nil ;Not hidden if not using this... (save-excursion (if (not (re-search-backward "[\n\^M]" nil t)) nil ;Play safe (if (string-equal (match-string 0) "\n") nil t))))) (defun bib-highlight-mouse () "Make that nice green highlight when the mouse is over LaTeX commands." (interactive) ;;;Comment this out. User should be able to use bib-highlight-mouse ;;;to try it out regardless of bib-highlight-mouse-t. ;;;Check bib-highlight-mouse-t only in automated cases. ;;; ;;; (if (and bib-highlight-mouse-t ;;; ;;window-system) ;Do nothing unless under X ;;; ) ;;; *all of code was here* ;;; ) (save-excursion (let ((s)(e)(extent)(local-extent-list bib-ext-list) (inhibit-read-only t) (modified (buffer-modified-p))) ;put-text-property changing this? ;; * peta Wed Nov 8 16:27:29 1995 -- better remove the mouse face ;; properties first. (setq bib-ext-list nil) ;Reconstructed below... (if (string-match "XEmacs\\|Lucid" emacs-version) (while local-extent-list (setq extent (car local-extent-list)) (if (or (extent-detached-p extent) (and (<= (point-min)(extent-start-position extent)) (>= (point-max)(extent-end-position extent)))) (delete-extent extent) (setq bib-ext-list (cons extent bib-ext-list))) (setq local-extent-list (cdr local-extent-list))) ;; Remove properties for regular emacs ;; FIXME This detroys all mouse-faces and local-maps! ;; FIXME Hope no other package is using them in this buffer! (let ((before-change-functions) (after-change-functions)) (remove-text-properties (point-min) (point-max) '(mouse-face t local-map t)))) (goto-char (point-min)) (while (re-search-forward (concat "\\\\\\(" (substring bib-ref-regexp 2) "\\|label\\|[A-Za-z]*cite[A-Za-z]*\\(\\[.*\\]\\)?\\){[^}]*}") nil t) (setq s (match-beginning 0)) (setq e (match-end 0)) (cond ((string-match "XEmacs\\|Lucid" emacs-version) (setq extent (make-extent s e)) (setq bib-ext-list (cons extent bib-ext-list)) (set-extent-property extent 'highlight t) (set-extent-property extent 'start-open t) (set-extent-property extent 'balloon-help 'bib-label-help) (set-extent-property extent 'help-echo 'bib-label-help-echo) (set-extent-property extent 'keymap bib-highlight-mouse-keymap)) (t (let ((before-change-functions) (after-change-functions) ;;(this-overlay (make-overlay s e)) ) ;;; Even using overlays doens't help here. If bib-highlight-mouse-keymap ;;; does not include the AucTeX menus, then these disappear when we click ;;; onto a \cite command. Perhaps using bib-cite as a minor mode will fix ;;; this? For now, bib-cite must be loaded after these menus are built. ;;; It must therefore be loaded in a mode-hook. (put-text-property s e 'local-map bib-highlight-mouse-keymap) (put-text-property s e 'mouse-face 'highlight) ;;(overlay-put this-overlay 'local-map bib-highlight-mouse-keymap) ;;(overlay-put this-overlay 'mouse-face 'highlight) )))) (set-buffer-modified-p modified)))) (defun bib-toggle-highlight () "Toggle the enabling of bib-cite entries as clickable things." ;; FIXME: do something about after-change stuff? (interactive) (if (setq bib-highlight-mouse-t (not bib-highlight-mouse-t)) (bib-highlight-mouse) (let ((modified (buffer-modified-p)) (inhibit-read-only t)) (cond ((string-match "XEmacs\\|Lucid" emacs-version) (while bib-ext-list (delete-extent (car bib-ext-list)) (setq bib-ext-list (cdr bib-ext-list)))) (t (let ((before-change-functions) (after-change-functions)) (remove-text-properties (point-min) (point-max) '(mouse-face local-map))))) (set-buffer-modified-p modified)))) (defun bib-label-help-echo (object) (if bib-label-help-echo-format (bib-label-help object bib-label-help-echo-format))) ;;; Balloon-help callback. Anders Stenman ;;; Patched by Bruce Ravel (defun bib-label-help (object &optional format) (or format (setq format "Use mouse button 2 to find the %s. Use mouse button 3 to display the %s.")) (save-match-data (let* ((string (extent-string object)) (type (cond ((string-match "^\\\\[A-Za-z]*cite[A-Za-z]*" string) "citation") ((string-match (concat "^" bib-ref-regexp) string) "\\label{}") ((string-match "^\\\\label" string) "\\ref{}") (t "this (unknown) reference")))) (format format type type)))) ;;---------------------------------------------------------------------------- ;; Routines to display or edit a citation's bibliography (defun bib-display-citation () "Do the displaying of cite info. Return t if found cite key, nil otherwise. Example with cursor located over cite command or arguments: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} ^Display-all-citations ^Display-this-citation" (save-excursion (let* ((the-keys-obarray (bib-get-citekeys-obarray)) ;1st in case of error (work-buffer (get-buffer-create "*bibtex-work*")) (bib-buffer (bib-get-bibliography nil)) (the-warnings (bib-get-citations the-keys-obarray bib-buffer work-buffer bib-substitute-string-in-display)) (the-warn-point)) (if the-warnings (progn (set-buffer work-buffer) (goto-char 1) (insert the-warnings) (setq the-warn-point (point)))) (with-output-to-temp-buffer "*Help*" (set-buffer work-buffer) (princ (buffer-substring 1 (point-max)))) (bib-cite-fontify-help-as-bibtex) (if the-warn-point (bib-cite-fontify-red the-warn-point)) (kill-buffer bib-buffer) (kill-buffer work-buffer)))) (defun bib-edit-citation () "Do the edit of cite info. Return t if found cite key, nil otherwise. Find and and put edit point in bib file associated with a BibTeX citation under cursor from \bibliography input file. In a multi-entry cite command, the cursor should be on the actual cite key desired (otherwise a random entry will be selected). e.g.: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} ^Display-this-citation" (let ((the-keys-obarray (bib-get-citekeys-obarray)) ;1st in case of error (bib-buffer (bib-get-bibliography t)) (the-key)(the-file)) (save-excursion (mapatoms ;Do this for each cite-key found... (lambda (cite-key) (setq the-key (symbol-name cite-key))) the-keys-obarray) (set-buffer bib-buffer) (goto-char (point-min)) (if (not (re-search-forward (concat "@[^{(]+[{(][\t ]*" (regexp-quote the-key) "[ ,\n]") nil t)) (progn (kill-buffer bib-buffer) (error "Sorry, could not find bib entry for %s" the-key)) (re-search-backward "%%%Filename: \\([^\n]*\\)" nil t) (setq the-file (match-string 1)) (kill-buffer bib-buffer))) ;;; (find-file the-file) (funcall bib-switch-to-buffer-function (find-file-noselect the-file)) (goto-char (point-min)) ;V2.19 fix (re-search-forward (concat "@[^{(]+[{(][\t ]*" (regexp-quote the-key) "[ ,\n]") nil t))) ;;-------------------------------------------------------------------------- ;; Function for bib-apropos (defun bib-apropos-keyword-at-point () "Return the keyword under point for initial input to bib-apropos prompt." (save-excursion (let ((here (point))) (cond ((and (re-search-backward "[\n{, ]" nil t) (string-equal "{" (buffer-substring (match-beginning 0) (match-end 0)))) (if (fboundp 'buffer-substring-no-properties) (buffer-substring-no-properties (1+ (point)) here) (buffer-substring (1+ (point)) here))))))) ;;-------------------------------------------------------------------------- ;; Functions for Displaying or moving to matching \ref or \label command (defun bib-display-label () "Display environment or first ref associated with a label. The label or ref name is extracted from the text under the cursor, or the user is prompted is nothing suitable is found. The first prompt is for a label. If you answer with an empty string, a second prompt for a ref will be given." (let ((the-regexp (bib-guess-or-prompt-for-label))) (if (not the-regexp) (message "No name given") (bib-display-or-find-label the-regexp t)))) (defun bib-find-label () "Move to a label, or the first occurance of a ref. The label or ref name is extracted from the text under the cursor. If nothing suitable is found, the user is prompted. The first prompt is for a label. If you answer with an empty string, a second prompt for a ref will be given. If within a single file document: You can move back with C-xC-x as the mark is set before moving. You can search for next occurrances of a ref command with C-sC-s. If within a multi-file document (in auctex only) You can move back with C-xC-x if within the same buffer. If not, just select your previous buffer. You can search for next occurrances of a ref command with tag commands: C-u M-. Find next alternate definition of last tag specified. C-u - M-. Go back to previous tag found." (let ((the-regexp (bib-guess-or-prompt-for-label))) (if (not the-regexp) (message "No name given") (bib-display-or-find-label the-regexp nil)))) ;;-------------------------------------------------------------------------- ;; Functions for Displaying or moving to matching \ref or \label command (defun bib-display-or-find-label (the-regexp displayf) ;; work horse for bib-find-label and bib-display-label (let* ((masterfile (bib-master-file)) (masterdir (and masterfile (file-name-directory masterfile))) (new-point)(new-buffer)) (save-excursion ;; Now we are either in a simple file, or with a multi-file document (cond (masterfile ;Multi-file document (cond (displayf ;Display only (set-buffer (bib-etags-find-noselect the-regexp masterdir)) (re-search-forward the-regexp nil t) ;; ...because tags puts point on beginning of line (if (string-match "^\\\\\\\\label" the-regexp) (bib-display-this-environment) ;display the label's environment (bib-display-this-ref))) ; display the ref's context (t ;Move to it (setq new-buffer (bib-etags-find-noselect the-regexp masterdir)) (if bib-novice (message (substitute-command-keys (concat "Use \\[bib-find-next] to find the next occurrence " "and C-u \\[bib-find-next] to find previous.")))) (if (equal new-buffer (current-buffer)) (setq new-point (point)))))) ;Moving with the same buffer (t ;Single-file document (goto-char (point-min)) (cond ((re-search-forward the-regexp nil t) (if displayf (if (string-match "^\\\\label" the-regexp) (bib-display-this-environment) ;Display the environment (bib-display-this-ref)) ; display the ref's context (setq new-point (match-beginning 0)) ;or move there (if (string-match "{\\(.*\\)}" the-regexp) (setq bib-cite-search-ring (match-string 1 the-regexp))) (if bib-novice (message (substitute-command-keys (concat "Use \\[bib-find-next] to find the next occurrence " "and C-u \\[bib-find-next] to find previous.")))))) (t (message "Sorry, cannot find it (%s)" the-regexp)))))) (if new-point (progn (push-mark (point) t nil) ;We've moving there... push mark (goto-char new-point)) (if new-buffer ;We've changing buffer ;;(switch-to-buffer new-buffer) (funcall bib-switch-to-buffer-function new-buffer))) (if (bib-Is-hidden) (save-excursion (beginning-of-line) (show-entry))))) (defvar bib-label-prompt-map nil) (if bib-label-prompt-map () (setq bib-label-prompt-map (copy-keymap minibuffer-local-completion-map)) (define-key bib-label-prompt-map " " 'self-insert-command)) (defun bib-guess-or-prompt-for-label () "Guess from context, or prompt the user for a label command." (save-excursion (if (not (looking-at "\\\\")) ;If not on beginning of a command (re-search-backward "[\\]" (save-excursion (beginning-of-line)(point)) t)) (cond ((looking-at bib-ref-regexpc) ;On \ref, looking for matching \label (let ((b (progn (search-forward "{" nil t)(forward-char -1)(point))) (e (progn (forward-sexp 1)(point)))) (concat "\\\\label" (regexp-quote (buffer-substring b e))))) ((looking-at "\\\\label{") ;On \label, looking for matching \ref (let ((b (progn (search-forward "{" nil t)(forward-char -1)(point))) (e (progn (forward-sexp 1)(point)))) (concat bib-ref-regexp (regexp-quote (buffer-substring b e))))) (t ;Prompt the user (let* ((minibuffer-local-completion-map bib-label-prompt-map) (the-alist (create-alist-from-list (cdr (reverse LaTeX-label-list)))) ;;; LaTeX-label-list example: ;;; '(("label3" "label4")("label1" "label2") nil) ;; so let's get rid of that nil part in embedded list. (the-name (if (string-equal "18" (substring emacs-version 0 2)) (completing-read "Label: " the-alist nil nil nil) (completing-read "Label: " the-alist nil nil nil 'LaTeX-find-label-hist-alist)))) (if (not (equal the-name "")) (concat "\\\\label{" (regexp-quote the-name) "}") ;; else try to get a \ref (if (string-equal "18" (substring emacs-version 0 2)) (setq the-name (completing-read "Ref: " the-alist nil nil nil)) (setq the-name (completing-read "Ref: " the-alist nil nil nil 'LaTeX-find-label-hist-alist))) (if (not (equal the-name "")) (concat bib-ref-regexpc (regexp-quote the-name) "}") nil))))))) (defun bib-display-this-ref () "Display a few lines around current point." (cond ((bib-Is-hidden) (with-output-to-temp-buffer "*BiBTemp*" (princ (buffer-substring (save-excursion (let ((i 3)) (while (and (> i 0) (re-search-backward "[\n\^M]" nil t) (setq i (1- i))))) (point)) (save-excursion (let ((i 3)) (while (and (> i 0) (re-search-forward "[\n\^M]" nil t) (setq i (1- i))))) (point))))) (set-buffer "*BiBTemp*") (while (search-forward "\^M" nil t) (replace-match "\n" nil t)) (goto-char 1) (if (looking-at "\n") ;Remove first empty line... (delete-char 1)) (with-output-to-temp-buffer "*Help*" (princ (buffer-substring 1 (point-max)))) (bib-cite-fontify-help-as-latex) (kill-buffer "*BiBTemp*")) (t (with-output-to-temp-buffer ; display the ref's context "*Help*" (princ (buffer-substring (save-excursion (forward-line -2)(point)) (save-excursion (forward-line 3)(point))))) (bib-cite-fontify-help-as-latex)))) (defun bib-display-this-environment () "Display the environment associated with a label, or its section name. Assumes point is already on the label. Does not save excursion." ;; Bugs: The method used here to detect the environment is *not* foolproof. ;; It will get confused, for example, between two figure environments, ;; picking out both instead of the section label above them. But since ;; users typically puts their labels next to the section declaration, ;; I'm satisfied with this... for now. ;; I could have used the following AUCTeX functions: ;; LaTeX-current-environment ;; Function: Return the name (a string) of the enclosing LaTeX environment. ;; LaTeX-current-section ;; Function: Return the level of the section that contain point. ;; but then this code would only work as part of AUCTeX... (let ((the-point (point)) (end-point (point)) (the-environment)(foundf)) (while (and (not foundf) (goto-char end-point) ;Past end of last search (re-search-forward "\\(^\\|\^M\\)[ \t]*\\\\end{\\([^}]*\\)}" nil t)) (setq end-point (point)) (setq the-environment (match-string 2)) (and (not (string-match "document" the-environment)) (re-search-backward (concat "\\(^\\|\^M\\)[ \t]*\\\\begin{" (regexp-quote the-environment) "}")) (<= (point) the-point) (setq foundf t))) (if foundf ;A good environment (progn (cond ((bib-Is-hidden) ;Better way is: replace-within-string (with-output-to-temp-buffer "*BiBTemp*" (princ (buffer-substring (point) end-point))) (set-buffer "*BiBTemp*") (while (search-forward "\^M" nil t) (replace-match "\n" nil t)) (goto-char 1) (if (looking-at "\n") ;Remove first empty line... (delete-char 1)) (with-output-to-temp-buffer "*Help*" (princ (buffer-substring 1 (point-max)))) (kill-buffer "*BiBTemp*")) (t (with-output-to-temp-buffer "*Help*" (princ (buffer-substring (point) end-point))))) (bib-cite-fontify-help-as-latex)) ;; Just find the section declaration (goto-char the-point) (if (re-search-backward ;;; "\\(^\\|\^M\\)[ \t]*\\\\\\(sub\\)*section{\\([^}]*\\)}" nil t) ;;; Michael Steiner patch "\\(^\\|\^M\\)[ \t]*\\\\\\(\\(sub\\)*section\\|chapter\\|part\\)\\*?\ {\\([^}]*\\)}" nil t) (message (match-string 0)) (error "Sorry, could not find an environment or section declaration"))))) (defvar LaTeX-find-label-hist-alist nil "History list for LaTeX-find-label.") (defvar LaTeX-label-list nil "Used by AUCTeX to store label names.") (defun create-alist-from-list (the-list) "Return a single list from a THE-LIST that may contain either items or lists. e.g. turns '((\"label3\" \"label4\")(\"label1\" \"label2\") \"label\") into '((\"label3\") (\"label4\") (\"label1\") (\"label2\") (\"label\"))" (mapcar 'list (bib-cite-mh-list-to-string the-list))) ;;; ;;; Following two functions from mh-utils.el (part of GNU emacs) ;;; I have changed the names in case these functions change what they do. ;;; (defun bib-cite-mh-list-to-string (l) "Flattens the list L and make every element of the new list into a string." (nreverse (bib-cite-mh-list-to-string-1 l))) (defun bib-cite-mh-list-to-string-1 (l) (let ((new-list nil)) (while l (cond ((null (car l))) ((symbolp (car l)) (setq new-list (cons (symbol-name (car l)) new-list))) ((numberp (car l)) (setq new-list (cons (int-to-string (car l)) new-list))) ((equal (car l) "")) ((stringp (car l)) (setq new-list (cons (car l) new-list))) ((listp (car l)) (setq new-list (nconc (bib-cite-mh-list-to-string-1 (car l)) new-list))) (t (error "Bad element in mh-list-to-string: %s" (car l)))) (setq l (cdr l))) new-list)) ;; ------------------------------------------------------------------------- ;; Routines to extract cite keys from text ;; ... is truly remarkable, as shown in \citeN{Thomson77,Test56}. Every ;; \cite[{\it e.g.}]{Thomson77,Test56} (defun bib-get-citations (keys-obarray bib-buffer new-buffer substitute) "Put citations of KEYS-OBARRAY from BIB-BUFFER into NEW-BUFFER. Substitute strings if SUBSTITUTE is t Return the-warnings as text." (let ((the-warnings) ;The only variable to remember... (case-fold-search t)) ;All other results go into new-buffer ;; bibtex is not case-sensitive for keys. (save-excursion (let ((the-text)) (set-buffer bib-buffer) (mapatoms ;Do this for each cite-key found... (lambda (cite-key) (goto-char (point-min)) (if (re-search-forward (concat "@[^{(]+[{(][\t ]*" (regexp-quote (symbol-name cite-key)) "\\([, ]\\\|$\\)") ;; ^^ ^ comma, space or end-of-line nil t) (setq the-text (concat the-text (buffer-substring (progn (beginning-of-line)(point)) (progn (forward-sexp 2)(point))) "\n\n")) (setq the-warnings (concat the-warnings "Cannot find entry for: " (symbol-name cite-key) "\n")))) keys-obarray) (if (not the-text) (error "Sorry, could not find any of the references")) ;; Insert the citations in the new buffer (set-buffer new-buffer) (insert the-text) (goto-char 1)) ;; We are at beginning of new-buffer. ;; Now handle crossrefs (let ((crossref-obarray (make-vector 201 0))) (while (re-search-forward "[, \t]*crossref[ \t]*=[ \t]*\\(\"\\|\{\\)" nil t) ;;handle {text} or "text" cases (if (string-equal "{" (match-string 1)) (re-search-forward "[^\}]+" nil t) (re-search-forward "[^\"]+" nil t)) (intern (match-string 0) crossref-obarray)) ;; Now find the corresponding keys, ;; but add them only if not already in `keys-obarray' (set-buffer bib-buffer) (goto-char 1) (let ((the-text)) (mapatoms ;Do this for each crossref key found... (lambda (crossref-key) (if (not (intern-soft (symbol-name crossref-key) keys-obarray)) (progn ;; Not in keys-obarray, so not yet displayed. (goto-char (point-min)) (if (re-search-forward (concat "@[^{(]+[{(][\t ]*" (regexp-quote (symbol-name crossref-key)) "\\(,\\|$\\)") nil t) (setq the-text (concat the-text (buffer-substring (progn (beginning-of-line)(point)) (progn (forward-sexp 2)(point))) "\n\n")) (setq the-warnings (concat the-warnings "Cannot find crossref entry for: " (symbol-name crossref-key) "\n")))))) crossref-obarray) ;; Insert the citations in the new buffer (set-buffer new-buffer) (goto-char (point-max)) (if the-text (insert the-text))) (goto-char 1)) ;; Now we have all citations in new-buffer, collect all used @String keys ;; Ex: journal = JPO, (let ((strings-obarray (make-vector 201 0))) (while (re-search-forward bib-string-regexp nil t) (intern (match-string 1) strings-obarray)) ;; Now find the corresponding @String commands ;; Collect either the @string commands, or the string to substitute (set-buffer bib-buffer) (goto-char 1) (let ((string-alist) (the-text)) (mapatoms ;Do this for each string-key found... (lambda (string-key) (goto-char (point-min)) ;; search for @string{ key = {text}} or @string{ key = "text"} (if (re-search-forward (concat "^[ \t]*@string[{(]" (regexp-quote (symbol-name string-key)) "[\t ]*=[\t ]*\\(\"\\|\{\\)") nil t) (let ((the-string-start (1- (match-end 1))) ;catch bracket ;;handle {text} or "text" cases (the-string-end (cond ((string-equal "\"" (match-string 1)) (re-search-forward "[^\\]\"" nil t) (point)) (t (forward-char -1) (forward-list 1) (point))))) (if substitute ;Collect substitutions (setq string-alist (append string-alist (list (cons (symbol-name string-key) ;(regexp-quote (buffer-substring the-string-start the-string-end)))));) ;;Collect the strings command themseves (setq the-text (concat the-text (buffer-substring (progn (forward-char 1)(point)) (re-search-backward "^[ \t]*@string[{(]" nil t)) "\n")))) ;; @string entry not found (if (not (member-cis (symbol-name string-key) bib-string-ignored-warning)) (setq the-warnings (concat the-warnings "Cannot find @String entry for: " (symbol-name string-key) "\n"))))) strings-obarray) ;; Now we have `the-text' of @string commands, ;; or the `string-alist' to substitute. (set-buffer new-buffer) (if substitute (while string-alist (goto-char 1) (let* ((the-key (car (car string-alist))) (the-string (cdr (car string-alist))) (slashed-string ; "J. of Geo.\" -> "J. of Geo.\\\\" (dired-replace-in-string "\\\\" "\\\\" the-string))) (while (re-search-forward (concat "\\(^[, \t]*[a-zA-Z]+[ \t]*=[ \t]*\\)" (regexp-quote the-key) "\\([, \t\n]\\)") nil t) (replace-match (concat "\\1" slashed-string "\\2") t nil))) (setq string-alist (cdr string-alist))) ;; substitute is nil; Simply insert text of @string commands (goto-char 1) (if the-text (insert the-text "\n"))) (goto-char 1)))) ;; We are done! ;; Return the warnings... the-warnings)) ;;; Following contributed by Michael Steiner The ;; @string abbreviation are not case-sensitive, so we replaced the `member' ;; test above with `member-cis' defined here: (defun member-cis (ELT LIST) "Return non-nil if ELT is an element of LIST. All elements should be strings. Comparison is case-insensitive." ;; If list is exhausted, (if (null LIST) nil ;; if null then we haven't found the element ... ;; else split list and ... (let((listelt (car LIST))(listrest (cdr LIST))) ;; see if car is equal to ELT (if (string-equal (downcase ELT) (downcase listelt)) t ;; if so return true ;; else recurse for rest of list (member-cis ELT listrest))))) (defun bib-get-citekeys-obarray () "Return obarray of citation key (within curly brackets) under cursor." (save-excursion ;; First find *only* a key *within a cite command (let ((the-point (point)) (keys-obarray (make-vector 201 0))) ;; First try to match a cite command (if (and (skip-chars-backward "a-zA-Z") ;Stops on \ or { (looking-at "[a-zA-Z]*cite[a-zA-Z]*")) (progn ;;skip over any optional arguments to \cite[][]{key} command (skip-chars-forward "a-zA-Z") (while (looking-at "\\[") (forward-list 1)) (re-search-forward "{[ \n]*\\([^,} \n]+\\)" nil t) (intern (match-string 1) keys-obarray) (while (and (skip-chars-forward " \n") ;no effect on while (looking-at ",")) (forward-char 1) ;;The following re-search skips over leading spaces (re-search-forward "\\([^,} \n]+\\)" nil t) (intern (match-string 1) keys-obarray))) ;; Assume we are on the keyword (goto-char the-point) (let ((the-start (re-search-backward "[\n{, ]" nil t)) (the-end (progn (goto-char the-point) (re-search-forward "[\n}, ]" nil t)))) (if (and the-start the-end) (intern (buffer-substring (1+ the-start) (1- the-end)) keys-obarray) ;; Neither... (error "Sorry, can't find a reference here")))) keys-obarray))) (defun bib-buffer-citekeys-obarray () "Extract citations keys used in the current buffer." (let ((keys-obarray (make-vector 201 0))) (save-excursion (goto-char (point-min)) ;; Following must allow for \cite[e.g.][]{key} !!! ;; regexp for \cite{key1,key2} was "\\\\[a-Z]*cite[a-Z]*{\\([^,}]+\\)" (while (re-search-forward "\\\\[a-zA-Z]*cite[a-zA-Z]*\\(\\[\\|{\\)" nil t) (backward-char 1) (while (looking-at "\\[") ; ...so skip all bracketted options (forward-sexp 1)) ;; then lookup first key (if (looking-at "{[ \n]*\\([^,} \n]+\\)") (progn (intern (match-string 1) keys-obarray) (goto-char (match-end 1)) (while (and (skip-chars-forward " \n") (looking-at ",")) (forward-char 1) (re-search-forward "\\([^,} \n]+\\)" nil t) (intern (match-string 1) keys-obarray))))) (if keys-obarray keys-obarray (error "Sorry, could not find any citation keys in this buffer"))))) ;;--------------------------------------------------------------------------- ;; Multi-file document programming requirements: ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;; bib-make-bibliography ;; bib-document-citekeys-obarray needs the master .aux file to extract ;; citation keys. ;; Included .aux files (corresponding to \include'd LaTeX files) are ;; then specified relative to the master-file-directory. ;; ;; bib-get-bibliography (used by interactive commands to extract bib sources) ;; ;; bibtex source filenames are returned from (LaTeX-bibliography-list) ;; unformatted. Since only a single \bibliogragrphy command is allowed ;; by BiBTeX in a document, it is safe to assume that their path is ;; relative to the master file's directory (since the path is relative ;; to where the BiBTeX program is actually ran). ;; ;; (See TeX-check-files, used in TeX-save-document. All documents related ;; files are returned by (TeX-style-list) and stored in TeX-active-styles. ;; Original idea was to search TeX-check-path for files listed in ;; TeX-active-styles (with possible relative or full paths) that end in .tex.) (defun bib-master-directory () "Return the directory associated with the master file. If no master file, then return current default." (let ((masterfile (bib-master-file))) (if masterfile (file-name-directory (expand-file-name (TeX-master-file))) default-directory))) (defun bib-master-file () "Return master file full path, or nil if not a multi-file document." ;; I wish there were a better way to tell about non multi-file documents... (let ((master (cond ((not (boundp 'TeX-master)) ;; This buffer doesn't know what a master file is, so return now. nil) ((and TeX-master ;Set, but not to t (not (symbolp TeX-master))) ; then we have an actual name (expand-file-name TeX-master)) ((and (eq TeX-master 't) ;Test if master file itself (progn ;But also require at least one \include (save-excursion (goto-char 1) ;Too bad I have to do this search... ;; Require that user uses \input{file} ;; rather than \input file (re-search-forward "^[ \t]*\\\\\\(include\\|input\\){" nil t)))) (buffer-file-name)) (t nil)))) (cond ((not master) nil) ((string-match ".\\(tex\\|ltx\\)$" master) master) ((file-readable-p (concat master ".ltx")) (concat master ".ltx")) (t (concat master ".tex"))))) ;; I don't use this one because files are not returned in order... ;; (defun bib-document-TeX-files () ;; ;; Return all tex input files associated with a known multi-file document. ;; (let ((master-directory (bib-master-directory)) ;; (the-list (cons (file-name-nondirectory (TeX-master-file)) ;; (TeX-style-list))) ;; ;; TeX-style-list returns "../master" for the main file if TeX-master ;; ;; was set like that. "../master" would not be found relative ;; ;; to the master-directory! So let's add it to the list w/o directory. ;; (the-result) ;; (the-file)) ;; (while the-list ;; (setq the-file (expand-file-name (car the-list) master-directory)) ;; (setq the-list (cdr the-list)) ;; (and (not (string-match ".tex$" the-file)) ;; (setq the-file (concat the-file ".tex"))) ;; (and (file-readable-p the-file) ;; (not (member the-file the-result)) ;listed already? ;; (setq the-result (cons the-file the-result)))) ;; the-result)) (defun bib-document-TeX-files () "Return all tex input files associated with a *known* multi-file document. For a multi-file document in auctex only. No checking is done that this is a real multi-file document. Sets global variable bib-document-TeX-files-warnings." (setq bib-document-TeX-files-warnings nil) (let* ((masterfile (bib-master-file)) (dir (and masterfile (file-name-directory masterfile))) (tex-buffer (get-buffer-create "*tex-document*")) (the-list (list masterfile)) (the-file)) (if (not masterfile) (progn (kill-buffer tex-buffer) (error "Sorry, but this is not a multi-file document (Try C-u C-c C-n if using auctex)"))) (save-excursion (set-buffer tex-buffer) ;; set its directory so relative includes work without expanding (setq default-directory dir) (insert-file-contents masterfile) (goto-char (point-min)) (while (re-search-forward "^[ \t]*\\\\\\(input\\|include\\){\\(.*\\)}" nil t) (let ((the-file (match-string 2))) (if (string-match ".sty$" the-file) ;Skip over style files! nil (if (and (not (file-readable-p (expand-file-name the-file dir))) (not (string-match ".ltx$" the-file)) (file-readable-p (expand-file-name (concat the-file ".ltx") dir))) (setq the-file (concat the-file ".ltx"))) (if (and (not (file-readable-p (expand-file-name the-file dir))) (not (string-match ".tex$" the-file))) (setq the-file (concat the-file ".tex"))) (setq the-file (expand-file-name the-file dir)) (if (not (file-readable-p the-file)) (setq bib-document-TeX-files-warnings (concat bib-document-TeX-files-warnings (format "Warning: File not found: %s" the-file))) (setq the-list (cons (expand-file-name the-file dir) the-list)) (end-of-line)(insert "\n") (insert-file-contents the-file)))))) (kill-buffer tex-buffer) (nreverse the-list))) (defun bib-document-citekeys-obarray () "Return cite keys obarray for multi-file document. Return nil if not a multi-file document. This is a AUCTeX supported feature only. Also, see bib-buffer-citekeys-obarray. Sets global variable bib-document-citekeys-obarray-warnings." (setq bib-document-citekeys-obarray-warnings nil) (let ((master-tex (bib-master-file)) (master-aux)) (if (not master-tex) nil ;Not a multifile document. No need... (setq master-aux (bib-return-aux-file-from-tex master-tex "aux")) (or (file-readable-p master-aux) (error "Sorry, cannot read file %s" master-aux)) (and (file-newer-than-file-p master-tex master-aux) (setq bib-document-citekeys-obarray-warnings (format "Warning: %s is out of date relative to %s.\n" master-aux master-tex))) (let ((work-buffer (get-buffer-create "*bib-cite-work*")) (keys-obarray (make-vector 201 0))) (save-excursion (set-buffer work-buffer) (insert-file-contents master-aux) ;; Because we will be looking for \input statements, we need to set ;; the default directory to that of the master file. (setq default-directory (file-name-directory master-tex)) ;; bib-make-bibliography will need this also to find .bib files ;; look for \@input{chap1/part1.aux} (while (re-search-forward "^\\\\@input{\\(.*\\)}$" nil t) (let* ((auxfile (match-string 1)) (texfile (bib-return-aux-file-from-tex auxfile "tex"))) (if (not (file-readable-p auxfile)) (setq bib-document-citekeys-obarray-warnings (concat bib-document-citekeys-obarray-warnings (format "Warning: %s is not found or readable.\n" auxfile))) (if (file-newer-than-file-p texfile auxfile) (setq bib-document-citekeys-obarray-warnings (concat bib-document-citekeys-obarray-warnings (format "Warning: %s is out of date relative to %s.\n" auxfile texfile)))) (end-of-line)(insert "\n") (insert-file-contents auxfile)))) (goto-char 1) ;;; Patched by calvanes@dis.uniroma1.it (Diego Calvanese) ;;; ;; look for \citation{gertsenshtein59} ;;; (while (re-search-forward "^\\\\citation{\\(.*\\)}$" nil t) ;;; (intern (buffer-substring (match-beginning 1)(match-end 1)) ;;; keys-obarray)) ;; look for \citation{gertsenshtein59,vardi88,...,ullmann90} ;; comma-separation generated by certain LaTeX styles. (while (re-search-forward "^\\\\citation{\\(.*\\)}$" nil t) (let ((string (match-string 1)) (start 0)) (while (string-match "\\([^,\n]+\\)" string start) (intern (substring string (match-beginning 1) (match-end 1)) keys-obarray) (setq start (match-end 0)))))) (kill-buffer work-buffer) keys-obarray)))) (defun bib-return-aux-file-from-tex (texname ext) "Given name.name.XXX in TEXNAME return name.name.EXT." ;; FIXME: Check if in ./, else search (let* ((filename (if (string-match "\\(.*\\)\\.[^\\.]+" texname) (concat (match-string 1 texname) "." ext) (concat texname "." ext))) (sansdir (file-name-nondirectory filename))) (if (file-exists-p filename) filename ;; Search bib-cite-aux-inputs path (let ((filename (psg-checkfor-file-list sansdir bib-cite-aux-inputs))) (if (and filename (file-exists-p filename)) filename (error "Could not find file %s" sansdir)))))) (defun bib-etags-find-noselect (tag &optional masterdir) "Returns a buffer with point on TAG. Buffer is not selected. Makes sure TAGS file exists, etc." (require 'etags) (let* ((master (or masterdir (bib-master-directory))) (the-buffer (current-buffer)) (new-buffer) (the-tags-file-name (expand-file-name bib-etags-filename master))) (or (file-exists-p the-tags-file-name) ;make sure TAGS exists (bib-etags master)) (or (equal the-tags-file-name tags-file-name) ;make sure it's current (visit-tags-table the-tags-file-name)) ;; find-tag-noselect should set the TAGS file for the new buffer ;; that's what C-h f visit-tags-table says... (cond ((string-match "XEmacs\\|Lucid" emacs-version) (find-tag tag) (setq new-buffer (current-buffer)) (set-buffer the-buffer)) (t (setq new-buffer (find-tag-noselect tag nil t)) ; -> Seems to set buffer to TAGS (set-buffer the-buffer))) new-buffer)) ;; -------------------------------------------------------------------------- ;; The following routines make a temporary bibliography buffer ;; holding all bibtex files found. (defun bib-get-bibliography (include-filenames-f) "Returns a new bibliography buffer holding all bibtex files in the document. If using AUCTeX, and either TeX-parse-self is set or C-c C-n is used to parse the document, then the entire multifile document will be searched for \bibliography commands. If this fails, the current buffer is searched for the first \bibliography command. If include-filenames-f is true, include as a special header the filename of each bib file. Puts the buffer in text-mode such that forward-sexp works with german \" accents embeded in bibtex entries." (let ((bib-list (or (and (fboundp 'LaTeX-bibliography-list) (boundp 'TeX-auto-update) (LaTeX-bibliography-list)) ;; LaTeX-bibliography-list (if bound) returns an unformatted list of ;; bib files used in the document, but only if parsing is turned on ;; or C-c C-n was used. (bib-bibliography-list))) (bib-buffer (get-buffer-create "*bibtex-bibliography*")) ;; Path is relative to the master directory (default-directory (bib-master-directory)) (the-name)(the-warnings)(the-file)) (save-excursion ;; such that forward-sexp works with embeeded \" in german, ;; and unbalanced () (set-buffer bib-buffer) (erase-buffer) (set-syntax-table text-mode-syntax-table) ;; (if (boundp 'bibtex-mode-syntax-table) ;; (set-syntax-table bibtex-mode-syntax-table) ;; (text-mode)) ) ;;We have a list of bib files ;;Search for them, include them, list those not readable (while bib-list (setq the-name (car (car bib-list))) ;Extract the string only (setq bib-list (cdr bib-list)) (setq the-name (substring the-name (string-match "[^ ]+" the-name) ;remove leading spaces (string-match "[ ]+$" the-name))) ;remove trailing space (if (not (string-match "\\.bib$" the-name)) (setq the-name (concat the-name ".bib"))) (setq the-file (or (and (file-readable-p the-name) the-name) (psg-checkfor-file-list the-name (psg-list-env bib-bibtex-env-variable)) ;; Check for BIBINPUT env variable as well (by popular demand!) (psg-checkfor-file-list the-name (psg-list-env "BIBINPUT")) (and bib-cite-inputs (psg-checkfor-file-list the-name bib-cite-inputs)) (and (boundp 'TeX-check-path) (psg-checkfor-file-list the-name TeX-check-path)))) (if the-file (progn (save-excursion (set-buffer bib-buffer) (goto-char (point-max)) (if include-filenames-f (insert "%%%Filename: " the-file "\n")) (insert-file-contents the-file nil) (goto-char 1))) (setq the-warnings (concat the-warnings "Could not read file: " the-name "\n")))) (if the-warnings (progn (with-output-to-temp-buffer "*Help*" (princ the-warnings)) (kill-buffer bib-buffer) (error "Sorry, can't find all bibtex files in \\bibliography command")) bib-buffer))) (defun bib-bibliography-list () "Return list of bib files listed in first \\bibliography command in buffer. Similar output to AUCTeX's LaTeX-bibliography-list The first element may contain trailing whitespace (if there was any in input) although BiBTeX doesn't allow it!" (save-excursion (goto-char 1) (if (not (re-search-forward "^[ \t]*\\\\bibliography{[ \t]*\\([^},]+\\)" nil t)) (error "Sorry, can't find \\bibliography command anywhere") (let ((the-list (list (match-string 1))) (doNext t)) (while doNext (if (looking-at ",") (setq the-list (append the-list (list (buffer-substring (progn (skip-chars-forward ", ")(point)) (progn (re-search-forward "[,}]" nil t) (backward-char 1) (skip-chars-backward ", ") (point)))))) (setq doNext nil))) (mapcar 'list the-list))))) ;; BibTeX-mode key def to create AUCTeX's parsing file. (defun bib-create-auto-file () "Force the creation of the AUCTeX auto file for a bibtex buffer." (interactive) (if (not (require 'latex)) (error "Sorry, This is only useful if you have AUCTeX")) (let ((TeX-auto-save t) (TeX-auto-update t) (TeX-auto-regexp-list BibTeX-auto-regexp-list)) ;; TeX-auto-write ;; -> calls TeX-auto-store ;; -> calls TeX-auto-parse ;; clears LaTeX-auto-bibtem (temporary holding space for bibitems) ;; searches buffer using regexp in TeX-auto-regexp-list ;; -> if LaTeX-auto-bibtem (the temporary holding space for bibitems) ;; holds stuffs like ;; ("Zimmermann:1991" "Anger_et_al:1993") ;; as determined by ;; (member nil (mapcar 'TeX-auto-entry-clear-p TeX-auto-parser)) ;; then it creates the auto file. ;; TeX-auto-write may call TeX-master-file which may fail if ;; TeX-header-end is unset (by LaTeX-common-initialization in latex-mode) (if (not TeX-header-end) (setq TeX-header-end LaTeX-header-end)) (TeX-auto-write))) ;; -------------------------------------------------------------------------- ;; The following routines are also defined in other packages... (defun psg-checkfor-file-list (filename list) "Check for presence of FILENAME in directory LIST. Return 1st found path." ;;USAGE: (psg-checkfor-file-list "gri" (psg-list-env "PATH")) ;;USAGE: (psg-checkfor-file-list "gri-mode.el" load-path) ;;USAGE: (psg-checkfor-file-list "gri.cmd" (psg-translate-ff-list "gri.tmp")) (let ((the-list list) (filespec)) (while the-list (if (not (car the-list)) ; it is nil (setq filespec (expand-file-name filename)) (setq filespec (concat (expand-file-name (file-name-as-directory (car the-list))) filename))) (if (file-exists-p filespec) (setq the-list nil) (setq filespec nil) (setq the-list (cdr the-list)))) (if filespec filespec ;; If I have not found a file yet, then check if some directories ;; ended in // and recurse through them. (let ((the-list list)) (while the-list (if (not (string-match "//$" (car the-list))) nil (setq filespec (car (search-directory-tree (substring (car the-list) 0 (match-beginning 0)) (concat "^" filename "$") t t))) (if filespec ;Success! (setq the-list nil))) (setq the-list (cdr the-list))) filespec)))) (defun search-directory-tree (directories extension-regexp recurse first-file) "Return a list of all reachable files in DIRECTORIES ending with EXTENSION. DIRECTORIES is a list or a single-directory string EXTENSION-REGEXP is actually (any) regexp, usually \\\\.bib$ If RECURSE is t, then we will recurse into the directory tree, nil, we will only search the list given. If FIRST-FILE is t, stop after first file is found." (or (listp directories) (setq directories (list directories))) (let (match) (while directories (let* ((directory (file-name-as-directory (car directories))) (content (and directory (file-readable-p directory) (file-directory-p directory) (directory-files directory)))) (setq directories (cdr directories)) (while content (let ((file (expand-file-name (car content) directory))) (cond ((string-match "[.]+$" (car content))) ;This or parent dir ((not (file-readable-p file))) ((and recurse (file-directory-p file)) (setq directories (cons (file-name-as-directory file) directories))) ((string-match extension-regexp (file-name-nondirectory file)) (and first-file (setq content nil directories nil)) (setq match (cons file match))))) (setq content (cdr content))))) match)) ;;; (defun psg-checkfor-file-list (filename list) ;;; (let ((the-list list) ;;; (filespec)) ;;; (while the-list ;;; (if (not (car the-list)) ; it is nil ;;; (setq filespec (concat "~/" filename)) ;;; (setq filespec ;;; (concat (file-name-as-directory (car the-list)) filename))) ;;; (if (file-exists-p filespec) ;;; (setq the-list nil) ;;; (setq filespec nil) ;;; (setq the-list (cdr the-list)))) ;;; filespec)) (or (fboundp 'dired-replace-in-string) ;; This code is part of GNU emacs (defun dired-replace-in-string (regexp newtext string) ;; Replace REGEXP with NEWTEXT everywhere in STRING and return result. ;; NEWTEXT is taken literally---no \\DIGIT escapes will be recognized. (let ((result "") (start 0) mb me) (while (string-match regexp string start) (setq mb (match-beginning 0) me (match-end 0) result (concat result (substring string start mb) newtext) start me)) (concat result (substring string start))))) ;; Could use fset here to equal TeX-split-string to dired-split if only ;; dired-split is defined. That would eliminate a check in psg-list-env. (and (not (fboundp 'TeX-split-string)) (not (fboundp 'dired-split)) ;; This code is part of AUCTeX (defun TeX-split-string (char string) "Returns a list of strings. given REGEXP the STRING is split into sections which in string was seperated by REGEXP. Examples: (TeX-split-string \"\:\" \"abc:def:ghi\") -> (\"abc\" \"def\" \"ghi\") (TeX-split-string \" *\" \"dvips -Plw -p3 -c4 testfile.dvi\") -> (\"dvips\" \"-Plw\" \"-p3\" \"-c4\" \"testfile.dvi\") If CHAR is nil, or \"\", an error will occur." (let ((regexp char) (start 0) (result '())) (while (string-match regexp string start) (let ((match (string-match regexp string start))) (setq result (cons (substring string start match) result)) (setq start (match-end 0)))) (setq result (cons (substring string start nil) result)) (nreverse result)))) (defun bib-cite-file-directory-p (file) "Like default `file-directory-p' but allow FILE to end in // for ms-windows." (save-match-data (if (string-match "\\(.*\\)//$" file) (file-directory-p (match-string 1 file)) (file-directory-p file)))) (defun psg-list-env (env) "Return a list of directory elements in ENV variable (w/o leading $) argument may consist of environment variable plus a trailing directory, e.g. HOME or HOME/bin (trailing directory not supported in dos or OS/2). bib-dos-or-os2-variable affects: path separator used (: or ;) whether backslashes are converted to slashes" (if (not (getenv env)) nil ;Because dired-replace-in-string fails (let* ((value (if bib-dos-or-os2-variable (dired-replace-in-string "\\\\" "/" (getenv env)) (getenv env))) (sep-char (or (and bib-dos-or-os2-variable ";") ":")) (entries (and value (or (and (fboundp 'TeX-split-string) (TeX-split-string sep-char value)) (dired-split sep-char value))))) (loop for x in entries if (bib-cite-file-directory-p x) collect x)))) (provide 'bib-cite) ;;; bib-cite.el ends here auctex-11.87/doc/0000755000000000000000000000000012056205161012264 5ustar rootrootauctex-11.87/doc/install.texi0000644000000000000000000005414312055735330014641 0ustar rootroot@c This is part of the AUCTeX Manual. @c Copyright (C) 1994, 1996, 2003, 2004, 2005, 2006, 2007, 2012 @c Free Software Foundation, Inc. @c See the file auctex.texi for copying conditions. @ifset rawfile @include macros.texi @node Installation,,(dir),(dir) @top Installing @AUCTeX{} @end ifset @ifclear rawfile @node Installation @chapter Installing @AUCTeX{} @end ifclear The simplest way of installing @AUCTeX{} is by using the Emacs package manager integrated in Emacs 24 and greater (@acronym{ELPA}). Simply do @kbd{M-x package-list-packages RET}, mark the auctex package for installation with @kbd{i}, and hit @kbd{x} to execute the installation procedure. That's all. The remainder of this section is about installing @AUCTeX{} from a release tarball or from a checkout of the @AUCTeX{} repository. Installing @AUCTeX{} should be simple: merely @command{./configure}, @command{make}, and @code{make install} for a standard site-wide installation (most other installations can be done by specifying a @option{--prefix=@dots{}} option). On many systems, this will already activate the package, making its modes the default instead of the built-in modes of Emacs. If this is not the case, consult @ref{Loading the package}. Please read through this document fully before installing anything. The installation procedure has changed as compared to earlier versions. Users of @w{MS Windows} are asked to consult @ifset rawfile the file @file{INSTALL.windows}. @end ifset @ifclear rawfile @xref{Installation under MS Windows}. @end ifclear @ifclear rawfile @menu * Prerequisites:: * Configure:: * Build/install:: * Loading the package:: * Advice for package providers:: * Advice for non-privileged users:: * Installation under MS Windows:: * Customizing:: @end menu @end ifclear @ifset rawfile @menu * Prerequisites:: * Configure:: * Build/install:: * Loading the package:: * Advice for package providers:: * Advice for non-privileged users:: * Customizing:: @end menu @end ifset @ifset rawfile @node Prerequisites @chapter Prerequisites @raisesections @end ifset @ifclear rawfile @node Prerequisites @section Prerequisites @end ifclear @itemize @bullet @item A recent version of Emacs, alternatively XEmacs @w{Emacs 20} is no longer supported, and neither is XEmacs with a version of @code{xemacs-base} older than 1.84 (released in sumo from 02/02/2004). Using @previewlatex{} requires a version of Emacs compiled with image support. While the X11 version of @w{Emacs 21} will likely work, @w{Emacs 22} and later is preferred. @table @b @item Windows Precompiled versions are available from @uref{ftp://ftp.gnu.org/gnu/emacs/windows/}. @item Mac OS X For an overview of precompiled versions of Emacs for Mac OS X see for example @uref{http://www.emacswiki.org/cgi-bin/wiki/EmacsForMacOS}. @item GNU/Linux Most GNU/Linux distributions nowadays provide a recent variant of Emacs via their package repositories. @item Self-compiled Compiling Emacs yourself requires a C compiler and a number of tools and development libraries. Details are beyond the scope of this manual. Instructions for checking out the source code can be found at @uref{https://savannah.gnu.org/bzr/?group=emacs}. @end table If you really need to use @w{Emacs 21} on platforms where this implies missing image support, you should disable the installation of @previewlatex{} (see below). While XEmacs (version 21.4.15, 21.4.17 or later) is supported, doing this in a satisfactory manner has proven to be difficult. This is mostly due to technical shortcomings and differing API's which are hard to come by. If @AUCTeX{} is your main application for XEmacs, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. @item A working @TeX{} installation Well, @AUCTeX{} would be pointless without that. Processing documentation requires @TeX{}, @LaTeX{} and Texinfo during installation. @previewlatex{} requires Dvips for its operation in @acronym{DVI} mode. The default configuration of @AUCTeX{} is tailored for te@TeX{} or @TeX{}live-based distributions, but can be adapted easily. @item A recent Ghostscript This is needed for operation of @previewlatex{} in both @acronym{DVI} and @acronym{PDF} mode. Most versions of Ghostscript nowadays in use should work fine (version 7.0 and newer). If you encounter problems, check @ifset rawfile the @file{PROBLEMS} file. @end ifset @ifclear rawfile @ref{Problems with Ghostscript,,,preview-latex,the @previewlatex{} manual}. @end ifclear @item The @code{texinfo} package Strictly speaking, you can get away without it if you are building from the distribution tarball, have not modified any files and don't need a printed version of the manual: the pregenerated info file is included in the tarball. At least @w{version 4.0} is required. @end itemize For some known issues with various software, see @ifset rawfile the @file{PROBLEMS} file. @end ifset @ifclear rawfile @ref{Known problems,,,preview-latex,the @previewlatex{} manual}. @end ifclear @node Configure @section Configure The first step is to configure the source code, telling it where various files will be. To do so, run @example ./configure @var{options} @end example (Note: if you have fetched @AUCTeX{} from @acronym{CVS} rather than a regular release, you will have to first follow the instructions in @file{README.CVS}). On many machines, you will not need to specify any options, but if @command{configure} cannot determine something on its own, you'll need to help it out with one of these options: @table @code @item --prefix=@file{/usr/local} All automatic placements for package components will be chosen from sensible existing hierarchies below this: directories like @file{man}, @file{share} and @file{bin} are supposed to be directly below @var{prefix}. Only if no workable placement can be found there, in some cases an alternative search will be made in a prefix deduced from a suitable binary. @file{/usr/local} is the default @var{prefix}, intended to be suitable for a site-wide installation. If you are packaging this as an operating system component for distribution, the setting @file{/usr} will probably be the right choice. If you are planning to install the package as a single non-priviledged user, you will typically set @var{prefix} to your home directory. @item --with-emacs[=@var{/path/to/emacs}] If you are using a pretest which isn't in your @code{$PATH}, or @command{configure} is not finding the right Emacs executable, you can specify it with this option. @item --with-xemacs[=@var{/path/to/xemacs}] Configure for generation under XEmacs (Emacs is the default). Again, the name of the right XEmacs executable can be specified, complete with path if necessary. @item --with-packagedir=@var{/dir} This XEmacs-only option configures the directory for XEmacs packages. A typical user-local setting would be @file{~/.xemacs/xemacs-packages}. If this directory exists and is below @var{prefix}, it should be detected automatically. This will install and activate the package. @item --without-packagedir This XEmacs-only option switches the detection of a package directory and corresponding installation off. Consequently, the Emacs installation scheme will be used. This might be appropriate if you are using a different package system/installer than the XEmacs one and want to avoid conflicts. The Emacs installation scheme has the following options: @item --with-lispdir=@var{/dir} This Emacs-only option specifies the location of the @file{site-lisp} directory within @samp{load-path} under which the files will get installed (the bulk will get installed in a subdirectory). @file{./configure} should figure this out by itself. @item --with-auctexstartfile=@file{auctex.el} @itemx --with-previewstartfile=@file{preview-latex.el} This is the name of the respective startup files. If @var{lispdir} contains a subdirectory @file{site-start.d}, the start files are placed there, and @file{site-start.el} should load them automatically. Please be aware that you must not move the start files after installation since other files are found @emph{relative} to them. @item --with-packagelispdir=@file{auctex} This is the directory where the bulk of the package gets located. The startfile adds this into @var{load-path}. @item --with-auto-dir=@var{/dir} You can use this option to specify the directory containing automatically generated information. It is not necessary for most @TeX{} installs, but may be used if you don't like the directory that configure is suggesting. @item --help This is not an option specific to @AUCTeX{}. A number of standard options to @command{configure} exist, and we do not have the room to describe them here; a short description of each is available, using @code{--help}. If you use @samp{--help=recursive}, then also @previewlatex{}-specific options will get listed. @item --disable-preview This disables configuration and installation of @previewlatex{}. This option is not actually recommended. If your Emacs does not support images, you should really upgrade to a newer version. Distributors should, if possible, refrain from distributing @AUCTeX{} and @previewlatex{} separately in order to avoid confusion and upgrade hassles if users install partial packages on their own. @item --with-texmf-dir=@var{/dir}@*--without-texmf-dir @cindex preview-install-styles This option is used for specifying a @acronym{TDS}-compliant directory hierarchy. Using @code{--with-texmf-dir=@var{/dir}} you can specify where the @TeX{} @acronym{TDS} directory hierarchy resides, and the @TeX{} files will get installed in @file{@var{/dir}/tex/latex/preview/}. If you use the @code{--without-texmf-dir} option, the @TeX{}-related files will be kept in the Emacs Lisp tree, and at runtime the @env{TEXINPUTS} environment variable will be made to point there. You can install those files into your own @TeX{} tree at some later time with @kbd{M-x preview-install-styles RET}. @item --with-tex-dir=@var{/dir} If you want to specify an exact directory for the preview @TeX{} files, use @code{--with-tex-dir=@var{/dir}}. In this case, the files will be placed in @file{@var{/dir}}, and you'll also need the following option: @item --with-doc-dir=@var{/dir} This option may be used to specify where the @TeX{} documentation goes. It is to be used when you are using @code{--with-tex-dir=@var{/dir}}, but is normally not necessary otherwise. @end table @node Build/install @section Build/install @cindex Installation @cindex Make Once @command{configure} has been run, simply enter @example make @end example @noindent at the prompt to byte-compile the lisp files, extract the @TeX{} files and build the documentation files. To install the files into the locations chosen earlier, type @example make install @end example You may need special privileges to install, e.g., if you are installing into system directories. @node Loading the package @section Loading the package @cindex @file{.emacs} You can detect the successful activation of @AUCTeX{} and @previewlatex{} in the menus after loading a @LaTeX{} file like @file{preview/circ.tex}: @AUCTeX{} then gives you a @samp{Command} menu, and @previewlatex{} gives you a @samp{Preview} menu. For XEmacs, if the installation occured into a valid package directory (which is the default), then this should work out of the box. @cindex @file{auctex.el} @cindex @file{tex-site.el} With Emacs (or if you explicitly disabled use of the package system), the startup files @file{auctex.el} and @file{preview-latex.el} may already be in a directory of the @file{site-start.d/} variety if your Emacs installation provides it. In that case they should be automatically loaded on startup and nothing else needs to be done. If not, they should at least have been placed somewhere in your @code{load-path}. You can then load them by placing the lines @example (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) @end example into your init file. If you explicitly used @code{--with-lispdir}, you may need to add the specified directory into Emacs' @code{load-path} variable by adding something like @example (add-to-list 'load-path "~/elisp") @end example before the above lines into your Emacs startup file. For site-wide activation in GNU Emacs, see @ifset rawfile below. @end ifset @ifclear rawfile @xref{Advice for package providers}. @end ifclear Once activated, the modes provided by @AUCTeX{} are used per default for all supported file types. If you want to change the modes for which it is operative instead of the default, use @example @kbd{M-x customize-variable @key{RET} TeX-modes @key{RET}} @end example If you want to remove a preinstalled @AUCTeX{} completely before any of its modes have been used, @example (unload-feature 'tex-site) @end example should accomplish that. @node Advice for package providers @section Providing @AUCTeX{} as a package As a package provider, you should make sure that your users will be served best according to their intentions, and keep in mind that a system might be used by more than one user, with different preferences. There are people that prefer the built-in Emacs modes for editing @TeX{} files, in particular plain @TeX{} users. There are various ways to tell @AUCTeX{} even after auto-activation that it should not get used, and they are described in @ifset rawfile the @file{README} file. @end ifset @ifclear rawfile @ref{Introduction,,Introduction to @AUCTeX{}}. @end ifclear So if you have users that don't want to use the preinstalled @AUCTeX{}, they can easily get rid of it. Activating @AUCTeX{} by default is therefore a good choice. If the installation procedure did not achieve this already by placing @file{auctex.el} and @file{preview-latex.el} into a possibly existing @file{site-start.d} directory, you can do this by placing @example (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) @end example @noindent in the system-wide @file{site-start.el}. If your package is intended as an XEmacs package or to accompany a precompiled version of Emacs, you might not know which @TeX{} system will be available when @previewlatex{} gets used. In this case you should build using the @code{--without-texmf-dir} option described previously. This can also be convenient for systems that are intended to support more than a single TeX distribution. Since more often than not @TeX{} packages for operating system distributions are either much more outdated or much less complete than separately provided systems like @w{@TeX{} Live}, this method may be generally preferable when providing packages. The following package structure would be adequate for a typical fully supported Unix-like installation: @table @samp @item preview-tetex Style files and documentation for @file{preview.sty}, placed into a @TeX{} tree where it is accessible from the te@TeX{} executables usually delivered with a system. If there are other commonly used @TeX{} system packages, it might be appropriate to provide separate packages for those. @item auctex-emacs-tetex This package will require the installation of @samp{preview-tetex} and will record in @samp{TeX-macro-global} where to find the @TeX{} tree. It is also a good idea to run @example emacs -batch -f TeX-auto-generate-global @end example when either @AUCTeX{} or te@TeX{} get installed or upgraded. If your users might want to work with a different @TeX{} distribution (nowadays pretty common), instead consider the following: @item auctex-emacs This package will be compiled with @samp{--without-texmf-dir} and will consequently contain the @samp{preview} style files in its private directory. It will probably not be possible to initialize @samp{TeX-macro-global} to a sensible value, so running @samp{TeX-auto-generate-global} does not appear useful. This package would neither conflict with nor provide @samp{preview-tetex}. @item auctex-xemacs-tetex @itemx auctex-xemacs Those are the obvious XEmacs equivalents. For XEmacs, there is the additional problem that the XEmacs sumo package tree already possibly provides its own version of @AUCTeX{}, and the user might even have used the XEmacs package manager to updating this package, or even installing a private @AUCTeX{} version. So you should make sure that such a package will not conflict with existing XEmacs packages and will be at an appropriate place in the load order (after site-wide and user-specific locations, but before a distribution-specific sumo package tree). Using the @code{--without-packagedir} option might be one idea to avoid conflicts. Another might be to refrain from providing an XEmacs package and just rely on the user or system administrator to instead use the XEmacs package system. @end table @node Advice for non-privileged users @section Installation for non-privileged users Often people without system administration privileges want to install software for their private use. In that case you need to pass more options to the @command{configure} script. For XEmacs users, this is fairly easy, because the XEmacs package system has been designed to make this sort of thing practical: but GNU Emacs users (and XEmacs users for whom the package system is for some reason misbehaving) may need to do a little more work. The main expedient is using the @option{--prefix} option to the @file{configure} script, and let it point to the personal home directory. In that way, resulting binaries will be installed under the @file{bin} subdirectory of your home directory, manual pages under @file{man} and so on. It is reasonably easy to maintain a bunch of personal software, since the prefix argument is supported by most @file{configure} scripts. You'll have to add something like @file{/home/myself/share/emacs/site-lisp} to your @code{load-path} variable, if it isn't there already. XEmacs users can achieve the same end by pointing @command{configure} at an appropriate package directory (normally @option{--with-packagedir=~/.xemacs/xemacs-packages} will serve). The package directory stands a good chance at being detected automatically as long as it is in a subtree of the specified @var{prefix}. Now here is another thing to ponder: perhaps you want to make it easy for other users to share parts of your personal Emacs configuration. In general, you can do this by writing @samp{~myself/} anywhere where you specify paths to something installed in your personal subdirectories, not merely @samp{~/}, since the latter, when used by other users, will point to non-existent files. For yourself, it will do to manipulate environment variables in your @file{.profile} resp.@: @file{.login} files. But if people will be copying just Elisp files, their copies will not work. While it would in general be preferable if the added components where available from a shell level, too (like when you call the standalone info reader, or try using @file{preview.sty} for functionality besides of Emacs previews), it will be a big help already if things work from inside of Emacs. Here is how to do the various parts: @subheading Making the Elisp available In GNU Emacs, it should be sufficient if people just do @lisp (load "~myself/share/emacs/site-lisp/auctex.el" nil t t) (load "~myself/share/emacs/site-lisp/preview-latex.el" nil t t) @end lisp where the path points to your personal installation. The rest of the package should be found relative from there without further ado. In XEmacs, you should ask the other users to add symbolic links in the subdirectories @file{lisp}, @file{info} and @file{etc} of their @file{~/.xemacs/xemacs-packages/} directory. (Alas, there is presently no easy programmatic way to do this, except to have a script do the symlinking for them.) @subheading Making the Info files available For making the info files accessible from within Elisp, something like the following might be convenient to add into your or other people's startup files: @lisp (eval-after-load 'info '(add-to-list 'Info-directory-list "~myself/info")) @end lisp In XEmacs, as long as XEmacs can see the package, there should be no need to do anything at all; the info files should be immediately visible. However, you might want to set @env{INFOPATH} anyway, for the sake of standalone readers outside of XEmacs. (The info files in XEmacs are normally in @file{~/.xemacs/xemacs-packages/info}.) @subheading Making the @LaTeX{} style available If you want others to be able to share your installation, you should configure it using @samp{--without-texmf-dir}, in which case things should work as well for them as for you. @ifclear rawfile @node Installation under MS Windows @section Installation under MS Windows @include wininstall.texi @end ifclear @node Customizing @section Customizing @cindex Site initialization @cindex Initialization @cindex @file{tex-site.el} @cindex Personal customization @cindex Site customization @cindex Customization @cindex Customization, personal @cindex Customization, site Most of the site-specific customization should already have happened during configuration of @AUCTeX{}. Any further customization can be done with customization buffers directly in Emacs. Just type @kbd{M-x customize-group RET AUCTeX RET} to open the customization group for @AUCTeX{} or use the menu entries provided in the mode menus. Editing the file @file{tex-site.el} as suggested in former versions of @AUCTeX{} should not be done anymore because the installation routine will overwrite those changes. You might check some variables with a special significance. They are accessible directly by typing @kbd{M-x customize-variable RET RET}. @defopt TeX-macro-global Directories containing the site's @TeX{} style files. @end defopt Normally, @AUCTeX{} will only allow you to complete macros and environments which are built-in, specified in @AUCTeX{} style files or defined by yourself. If you issue the @kbd{M-x TeX-auto-generate-global} command after loading @AUCTeX{}, you will be able to complete on all macros available in the standard style files used by your document. To do this, you must set this variable to a list of directories where the standard style files are located. The directories will be searched recursively, so there is no reason to list subdirectories explicitly. Automatic configuration will already have set the variable for you if it could use the program @samp{kpsewhich}. In this case you normally don't have to alter anything. auctex-11.87/doc/macros.texi0000644000000000000000000000315412013365745014456 0ustar rootroot@ifclear macros @set macros @ifnottex @macro AUCTeX {} AUC@TeX{} @end macro @macro ConTeXt {} Con@TeX{}t @end macro @macro previewlatex {} preview-latex @end macro @macro fontlatex {} font-latex @end macro @ifset no-acronym @clear no-acronym @macro acronym {text} @sc{\text\} @end macro @end ifset @ifset no-env @clear no-env @macro env {text} @code{\text\} @end macro @end ifset @ifset no-option @clear no-option @macro option {text} @samp{\text\} @end macro @end ifset @ifset no-command @clear no-command @macro command {text} @samp{\text\} @end macro @end ifset @end ifnottex @ifset no-sansserif @macro sansserif {text}@c @iftex {@textsf \text\}@c @end iftex @ifnottex \text\@c @end ifnottex @end macro @end ifset @tex \global\let\savedTeX\TeX \gdef\TeX#1{\savedTeX#1} \gdef\LaTeX{% L\kern-.36em\raise.3ex\hbox{\sc{a}}\kern-.15em\TeX} \gdef\previewlatex#1{% {\sf preview-latex}#1} \gdef\fontlatex#1{% {\sf font-latex}#1} \gdef\AUCTeX{AUC\TeX} \gdef\ConTeXt#1{% Con\TeX t#1} \toks0\expandafter{\indexnofonts \def\TeX#1{TeX#1}% \def\LaTeX#1{LaTeX#1}\def\previewlatex#1{preview-latex#1}} \xdef\indexnofonts{\the\toks0} \toks0\expandafter{\commondummies \def\TeX#1{TeX#1}% \def\LaTeX#1{LaTeX#1}\def\previewlatex#1{preview-latex#1}} \xdef\commondummies{\the\toks0} \ifx\acronym\undefined \gdef\acronym#1{{\smallcaps \lowercase{#1}}} \fi \ifx\env\undefined \global\let\env=\code \fi \ifx\option\undefined \global\let\option=\samp \fi \ifx\command\undefined \global\let\command=\samp \fi %Bug fix for texinfo.tex: \gdef\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname} @end tex @end ifclear auctex-11.87/doc/faq.texi0000644000000000000000000001410611414115225013726 0ustar rootroot@c This is part of the AUCTeX Manual. @c Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. @c See the file auctex.texi for copying conditions. @ifset rawfile @include macros.texi @chapheading Frequently Asked Questions about @AUCTeX{} @end ifset @c We should switch to sectioning commands instead of items when this @c list grows. Keep in mind to formulate short questions because @c section headings will not be broken in contrast to items. @enumerate @item Something is not working correctly. What should I do? Well, you might have guessed it, the first place to look is in the available documentation packaged with @AUCTeX{}. This could be the release notes (in the @file{RELEASE} file) or the news section of the manual in case you are experiencing problems after an upgrade, the @file{INSTALL} file in case you are having problems with the installation, the section about bugs in the manual in case you encountered a bug or the relevant sections in the manual for other related problems. If this did not help, you can send a bug report to the @AUCTeX{} bug reporting list by using the command @kbd{M-x TeX-submit-bug-report RET}. But before you do this, you can try to get more information about the problem at hand which might also help you locate the cause of the error yourself. First, you can try to generate a so-called backtrace which shows the functions involved in a program error. In order to do this, start Emacs with the command line @samp{emacs --debug-init} and/or put the line @lisp (setq debug-on-error t) @end lisp as the first line into your init file. XEmacs users might want to add @code{(setq stack-trace-on-error t)} as well. After Emacs has started, you can load a file which triggers the error and a new window should pop up showing the backtrace. If you get such a backtrace, please include it in the bug report. Second, you can try to figure out if something in your personal or site configuration triggers the error by starting Emacs without such customizations. You can do this by invoking Emacs with the command line @samp{emacs -q -no-site-file -l auctex}. The @samp{-l} option @samp{auctex.el} which you normally do in your init file. After you have started Emacs like this, you can load the file triggering the error. If everything is working now, you know that you have to search either in the site configuration file or your personal init file for statements related to the problem. @item What versions of Emacs and XEmacs are supported? @AUCTeX{} was tested with @w{Emacs 21} and @w{XEmacs 21.4.15}. Older versions may work but are unsupported. Older versions of XEmacs might possibly made to work by updating the @file{xemacs-base} package through the XEmacs package system. If you are looking for a recommendation, it would appear that the smoothest working platform on all operating systems at the current point of time would be @w{Emacs 22} or higher. Our success with XEmacs has been less than convincing. Code for core functionality like formatting and syntax highlighting tends to be different and often older than even @w{Emacs 21.4}, and Unicode support as delivered is problematic at best, missing on Windows. Both @AUCTeX{} and XEmacs developers don't hear much from active users of the combination. Partly for that reason, problems tend to go unnoticed for long amounts of time and are often found, if at all, after releases. No experiences or recommendations can be given for beta or developer versions of XEmacs. @item What should I do when @code{./configure} does not find programs like latex? This is problem often encountered on Windows. Make sure that the @env{PATH} environment variable includes the directories containing the relevant programs, as described in @ifset rawfile the file @file{INSTALL.windows} @end ifset @ifclear rawfile @ref{Installation under MS Windows,,,auctex,the @AUCTeX{} manual}. @end ifclear @item Why doesn't the completion, style file, or multi-file stuff work? It must be enabled first, insert this in your init file: @lisp (setq-default TeX-master nil) (setq TeX-parse-self t) (setq TeX-auto-save t) @end lisp Read also the chapters about parsing and multifile documents in the manual. @item Why doesn't @code{TeX-save-document} work? @code{TeX-check-path} has to contain "./" somewhere. @item Why is the information in @file{foo.tex} forgotten when I save @file{foo.bib}? For various reasons, @AUCTeX{} ignores the extension when it stores information about a file, so you should use unique base names for your files. E.g. rename @file{foo.bib} to @file{foob.bib}. @item Why doesn't @AUCTeX{} signal when processing a document is done? If the message in the minibuffer stays "Type `C-c C-l' to display results of compilation.", you probably have a misconfiguration in your init file (@file{.emacs}, @file{init.el} or similar). To track this down either search in the @samp{*Messages*} buffer for an error message or put @code{(setq debug-on-error t)} as the first line into your init file, restart Emacs and open a @LaTeX{} file. Emacs will complain loudly by opening a debugging buffer as soon as an error occurs. The information in the debugging buffer can help you find the cause of the error in your init file. @item Why does @code{TeX-next-error} (@kbd{C-c `}) fail? When writing the log file, @TeX{} puts information related to a file, including error messages, between a pair of parentheses. @AUCTeX{} determines the file where the error happened by parsing the log file and counting the parentheses. This can fail when there are other, unbalanced parentheses present. As a workaround you can activate so-called file:line:error messages for the log file. (Those are are easier to parse, but may lack some details.) Either you do this in the configuration of your @TeX{} system (consult its manual to see where this is) or you add a command line switch to the (la)tex call, e.g. by customizing @code{LaTeX-command-style} or @code{TeX-command-list}. @item What does AUC stand for? @AUCTeX{} came into being at Aalborg University in Denmark. Back then the Danish name of the university was Aalborg Universitetscenter; AUC for short. @end enumerate auctex-11.87/doc/preview-readme.texi0000644000000000000000000002252611074566332016113 0ustar rootroot@include macros.texi @ifset rawfile @node Introduction, What use is it?, (dir), (dir) @top @previewlatex{} in a nutshell @paragraphindent none @end ifset @c ----------------------- @cindex Readme Does your neck hurt from turning between previewer windows and the source too often? This @AUCTeX{} component will render your displayed @LaTeX{} equations right into the editing window where they belong. The purpose of @previewlatex{} is to embed @LaTeX{} environments such as display math or figures into the source buffers and switch conveniently between source and image representation. @menu * What use is it?:: * Activating preview-latex:: * Getting started:: * Basic modes of operation:: * More documentation:: * Availability:: * Contacts:: @end menu @ifset rawfile @node What use is it?, Activating preview-latex, Introduction, Introduction @chapter What use is it? @raisesections @end ifset @ifclear rawfile @node What use is it?, Activating preview-latex, Introduction, Introduction @section What use is it? @end ifclear @cindex Philosophy of @previewlatex{} @acronym{WYSIWYG} (what you see is what you get) sometimes is considered all the rage, sometimes frowned upon. Do we really want it? Wrong question. The right question is @emph{what} we want from it. Except when finetuning the layout, we don't want to use printer fonts for on-screen text editing. The low resolution and contrast of a computer screen render all but the coarsest printer fonts (those for low-quality newsprint) unappealing, and the margins and pagination of the print are not wanted on the screen, either. On the other hand, more complex visual compositions like math formulas and tables can't easily be taken in when seen only in the source. @previewlatex{} strikes a balance: it only uses graphic renditions of the output for certain, configurable constructs, does this only when told, and then right in the source code. Switching back and forth between the source and preview is easy and natural and can be done for each image independently. Behind the scenes of @previewlatex{}, a sophisticated framework of other programs like @samp{dvipng}, Dvips and Ghostscript are employed together with a special @LaTeX{} style file for extracting the material of interest in the background and providing fast interactive response. @node Activating preview-latex, Getting started, What use is it?, Introduction @section Activating @previewlatex{} @cindex Activation After installation, the package may need to be activated (and remember to activate @AUCTeX{} too). In XEmacs, and in any prepackaged versions worth their salt, activation should be automatic upon installation. If this seems not the case, complain to your installation provider. The usual activation (if it is not done automatically) would be @example (load "preview-latex.el" nil t t) @end example If you still don't get a ``Preview'' menu in @LaTeX{} mode in spite of @AUCTeX{} showing its ``Command'', your installation is broken. One possible cause are duplicate Lisp files that might be detectable with @kbd{@key{M-x} list-load-path-shadows @key{RET}}. @node Getting started, Basic modes of operation, Activating preview-latex, Introduction @section Getting started Once activated, @previewlatex{} and its documentation will be accessible via its menus (note that @previewlatex{} requires @AUCTeX{} to be loaded). When you have loaded a @LaTeX{} document (a sample document @file{circ.tex} is included in the distribution, but most documents including math and/or figures should do), you can use its menu or @kbd{C-c C-p C-d} (for @samp{Preview/Document}). Previews will now be generated for various objects in your document. You can use the time to take a short look at the other menu entries and key bindings in the @samp{Preview} menu. You'll see the previewed objects change into a roadworks sign when @previewlatex{} has determined just what it is going to preview. Note that you can freely navigate the buffer while this is going on. When the process is finished you will see the objects typeset in your buffer. It is a bad idea, however, to edit the buffer before the roadworks signs appear, since that is the moment when the correlation between the original text and the buffer locations gets established. If the buffer changes before that point of time, the previews will not be placed where they belong. If you do want to change some obvious error you just spotted, we recommend you stop the background process by pressing @kbd{C-c C-k}. To see/edit the @LaTeX{} code for a specific object, put the point (the cursor) on it and press @kbd{C-c C-p C-p} (for @samp{Preview/at point}). It will also do to click with the middle mouse button on the preview. Now you can edit the code, and generate a new preview by again pressing @kbd{C-c C-p C-p} (or by clicking with the middle mouse button on the icon before the edited text). If you are using the @code{desktop} package, previews will remain from one session to the next as long as you don't kill your buffer. If you are using XEmacs, you will probably need to upgrade the package to the newest one; things are being fixed just as I am writing this. @node Basic modes of operation, More documentation, Getting started, Introduction @section Basic modes of operation @previewlatex{} has a number of methods for generating its graphics. Its default operation is equivalent to using the `@LaTeX{}' command from @AUCTeX{}. If this happens to be a call of PDF@LaTeX{} generating @acronym{PDF} output (you need at least @w{@AUCTeX{} 11.51} for this), then Ghostscript will be called directly on the resulting @acronym{PDF} file. If a @acronym{DVI} file gets produced, first Dvips and then Ghostscript get called by default. The image type to be generated by Ghostscript can be configured with @example @kbd{M-x} customize-variable @kbd{RET} preview-image-type @kbd{RET} @end example @vindex preview-image-type @noindent The default is @samp{png} (the most efficient image type). A special setting is @samp{dvipng} in case you have the @samp{dvipng} @cindex Using dvipng @pindex dvipng program installed. In this case, @samp{dvipng} will be used for converting @acronym{DVI} files and Ghostscript (with a @samp{PNG} device) for converting @acronym{PDF} files. @samp{dvipng} is much faster than the combination of Dvips and Ghostscript. You can get downloads, access to its @acronym{CVS} archive and further information from its @uref{http://savannah.nongnu.org/projects/dvipng, project site}. @node More documentation, Availability, Basic modes of operation, Introduction @section More documentation After the installation, documentation in the form of @ifinfo @ifclear rawfile this @end ifclear @ifset rawfile an @end ifset @end ifinfo @ifnotinfo an @end ifnotinfo info manual will be available. You can access it with the standalone info reader with @example info preview-latex @end example @noindent or by pressing @kbd{C-h i d m preview-latex @key{RET}} in Emacs. Once @previewlatex{} is activated, you can instead use @kbd{C-c C-p @key{TAB}} (or the menu entry @samp{Preview/Read documentation}). Depending on your installation, @ifnottex a printable @end ifnottex @iftex this printed @end iftex manual may also be available in the form of @file{preview-latex.dvi} or @file{preview-latex.ps}. Detailed documentation for the @LaTeX{} style used for extracting the preview images is placed in @file{preview.dvi} in a suitable directory during installation; on typical teTeX-based systems, @example texdoc preview @end example @noindent will display it. @node Availability, Contacts, More documentation, Introduction @section Availability @cindex Download @cindex @sc{cvs} access The @previewlatex{} project is now part of @AUCTeX{} and accessible as part of the @uref{http://savannah.gnu.org/projects/auctex,@AUCTeX{} project page}. You can get its files from the @uref{ftp://ftp.gnu.org/pub/gnu/auctex,@AUCTeX{} download area}. As of @w{@AUCTeX{} 11.81}, @previewlatex{} should already be integrated into @AUCTeX{}, so no separate download will be necessary. You will also find @file{.rpm} files there for Fedora and possibly SuSE. Anonymous @acronym{CVS} is available as well. @node Contacts, , Availability, Introduction @section Contacts @cindex Contacts @cindex Mailing list Bug reports should be sent by using @kbd{M-x preview-report-bug @key{RET}}, as this will fill in a lot of information interesting to us. If the installation fails (but this should be a rare event), report bugs to @email{bug-auctex@@gnu.org}. There is a general discussion list for @AUCTeX{} which also covers @previewlatex{}, look at @uref{http://lists.gnu.org/mailman/listinfo/auctex}. For more information on the mailing list, send a message with just the word ``help'' as subject or body to @email{auctex-request@@gnu.org}. For the developers, there is the @email{auctex-devel@@gnu.org} list; it would probably make sense to direct feature requests and questions about internal details there. There is a low-volume read-only announcement list available to which you can subscribe by sending a mail with ``subscribe'' in the subject to @email{info-auctex-request@@gnu.org}. Offers to support further development will be appreciated. If you want to show your appreciation with a donation to the main developer, you can do so via PayPal to @email{dak@@gnu.org}, and of course you can arrange for service contracts or for added functionality. Take a look at the @file{TODO} list for suggestions in that area. auctex-11.87/doc/quickstart.texi0000644000000000000000000002713112053642716015365 0ustar rootroot@include macros.texi @node Quick Start @chapter Quick Start @AUCTeX{} is a powerful program offering many features and configuration options. If you are new to @AUCTeX{} this might be deterrent. Fortunately you do not have to learn everything at once. This Quick Start Guide will give you the knowledge of the most important commands and enable you to prepare your first @LaTeX{} document with @AUCTeX{} after only a few minutes of reading. In this introduction, we assume that @AUCTeX{} is already installed on your system. If this is not the case, you should read the file @file{INSTALL} in the base directory of the unpacked distribution tarball. These installation instructions are available in this manual as well, @ref{Installation}. We also assume that you are familiar with the way keystrokes are written in Emacs manuals. If not, have a look at the Emacs Tutorial in the Help menu. If @AUCTeX{} is installed, you might still need to activate it, by inserting @lisp (load "auctex.el" nil t t) @end lisp in your user init file.@footnote{This usually is a file in your home directory called @file{.emacs} if you are utilizing GNU Emacs or @file{.xemacs/init.el} if you are using XEmacs.} If you've installed @AUCTeX{} from the Emacs package manager (ELPA), you must not have this line in your user init file. The installation procedure already cares about loading @AUCTeX{} correctly. In order to get support for many of the @LaTeX{} packages you will use in your documents, you should enable document parsing as well, which can be achieved by putting @lisp (setq TeX-auto-save t) (setq TeX-parse-self t) @end lisp into your init file. Finally, if you often use @code{\include} or @code{\input}, you should make @AUCTeX{} aware of the multi-file document structure. You can do this by inserting @lisp (setq-default TeX-master nil) @end lisp into your init file. Each time you open a new file, @AUCTeX{} will then ask you for a master file. @menu * Editing Facilities:: Functions for editing TeX files * Processing Facilities:: Creating and viewing output, debugging @end menu @iftex This Quick Start Guide covers two main topics: First we explain how @AUCTeX{} helps you in editing your input file for @TeX{}, @LaTeX{}, and some other formats. Then we describe the functions that @AUCTeX{} provides for processing the input files with @LaTeX{}, Bib@TeX{}, etc., and for viewing and debugging. @end iftex @node Editing Facilities @section Functions for editing TeX files @subsection Making your @TeX{} code more readable @AUCTeX{} can do syntax highlighting of your source code, that means commands will get special colors or fonts. You can enable it locally by typing @kbd{M-x font-lock-mode RET}. If you want to have font locking activated generally, enable @code{global-font-lock-mode}, e.g. with @kbd{M-x customize-variable RET global-font-lock-mode RET}. @AUCTeX{} will indent new lines to indicate their syntactical relationship to the surrounding text. For example, the text of a @code{\footnote} or text inside of an environment will be indented relative to the text around it. If the indenting has gotten wrong after adding or deleting some characters, use @key{TAB} to reindent the line, @kbd{M-q} for the whole paragraph, or @kbd{M-x LaTeX-fill-buffer RET} for the whole buffer. @subsection Entering sectioning commands @cindex Sectioning @cindex Sections @cindex Chapters @cindex @code{\chapter} @cindex @code{\section} @cindex @code{\subsection} @cindex @code{\label} Insertion of sectioning macros, that is @samp{\chapter}, @samp{\section}, @samp{\subsection}, etc. and accompanying @samp{\label} commands may be eased by using @kbd{C-c C-s}. You will be asked for the section level. As nearly everywhere in @AUCTeX{}, you can use the @key{TAB} or @key{SPC} key to get a list of available level names, and to auto-complete what you started typing. Next, you will be asked for the printed title of the section, and last you will be asked for a label to be associated with the section. @subsection Inserting environments Similarly, you can insert environments, that is @samp{\begin@{@}}--@samp{\end@{@}} pairs: Type @kbd{C-c C-e}, and select an environment type. Again, you can use @key{TAB} or @key{SPC} to get a list, and to complete what you type. Actually, the list will not only provide standard @LaTeX{} environments, but also take your @samp{\documentclass} and @samp{\usepackage} commands into account if you have parsing enabled by setting @code{TeX-parse-self} to @code{t}. If you use a couple of environments frequently, you can use the up and down arrow keys (or @kbd{M-p} and @kbd{M-n}) in the minibuffer to get back to the previously inserted commands. Some environments need additional arguments. Often, @AUCTeX{} knows about this and asks you to enter a value. @subsection Inserting macros @kbd{C-c C-m}, or simply @kbd{C-c RET} will give you a prompt that asks you for a @LaTeX{} macro. You can use @key{TAB} for completion, or the up/down arrow keys (or @kbd{M-p} and @kbd{M-n}) to browse the command history. In many cases, @AUCTeX{} knows which arguments a macro needs and will ask you for that. It even can differentiate between mandatory and optional arguments---for details, see @ref{Completion}. An additional help for inserting macros is provided by the possibility to complete macros right in the buffer. With point at the end of a partially written macro, you can complete it by typing @kbd{M-TAB}. @subsection Changing the font @AUCTeX{} provides convenient keyboard shortcuts for inserting macros which specify the font to be used for typesetting certain parts of the text. They start with @kbd{C-c C-f}, and the last @kbd{C-} combination tells @AUCTeX{} which font you want: @table @kbd @item C-c C-f C-b @kindex C-c C-f C-b @cindex @code{\textbf} Insert @b{bold face} @samp{\textbf@{@point{}@}} text. @item C-c C-f C-i @kindex C-c C-f C-i @cindex @code{\textit} Insert @i{italics} @samp{\textit@{@point{}@}} text. @item C-c C-f C-e @kindex C-c C-f C-e @cindex @code{\emph} Insert @i{emphasized} @samp{\emph@{@point{}@}} text. @item C-c C-f C-s @kindex C-c C-f C-s @cindex @code{\textsl} Insert @i{slanted} @samp{\textsl@{@point{}@}} text. @item C-c C-f C-r @kindex C-c C-f C-r @cindex @code{\textrm} Insert roman @r{\textrm@{@point{}@}} text. @item C-c C-f C-f @kindex C-c C-f C-f @cindex @code{\textsf} Insert @sansserif{sans serif} @samp{\textsf@{@point{}@}} text. @item C-c C-f C-t @kindex C-c C-f C-t @cindex @code{\texttt} Insert @t{typewriter} @samp{\texttt@{@point{}@}} text. @item C-c C-f C-c @kindex C-c C-f C-c @cindex @code{\textsc} Insert @sc{small caps} @samp{\textsc@{@point{}@}} text. @item C-c C-f C-d @kindex C-c C-f C-c @cindex Deleting fonts Delete the innermost font specification containing point. @end table If you want to change font attributes of existing text, mark it as a region, and then invoke the commands. If no region is selected, the command will be inserted with empty braces, and you can start typing the changed text. Most of those commands will also work in math mode, but then macros like @code{\mathbf} will be inserted. @subsection Other useful features @AUCTeX{} also tries to help you when inserting the right ``quote'' signs for your language, dollar signs to typeset math, or pairs of braces. It offers shortcuts for commenting out text (@kbd{C-c ;} for the current region or @kbd{C-c %} for the paragraph you are in). The same keystrokes will remove the % signs, if the region or paragraph is commented out yet. With @code{TeX-fold-mode}, you can hide certain parts (like footnotes, references etc.) that you do not edit currently. Support for Emacs' outline mode is provided as well. And there's more, but this is beyond the scope of this Quick Start Guide. @node Processing Facilities @section Creating and viewing output, debugging @subsection One Command for @LaTeX{}, helpers, viewers, and printing If you have typed some text and want to run @LaTeX{} (or @TeX{}, or other programs---see below) on it, type @kbd{C-c C-c}. If applicable, you will be asked whether you want to save changes, and which program you want to invoke. In many cases, the choice that @AUCTeX{} suggests will be just what you want: first @command{latex}, then a viewer. If a @command{latex} run produces or changes input files for @command{makeindex}, the next suggestion will be to run that program, and @AUCTeX{} knows that you need to run @command{latex} again afterwards---the same holds for Bib@TeX{}. When no processor invocation is necessary anymore, @AUCTeX{} will suggest to run a viewer, or you can chose to create a PostScript file using @command{dvips}, or to directly print it. At this place, a warning needs to be given: First, although @AUCTeX{} is really good in detecting the standard situations when an additional @command{latex} run is necessary, it cannot detect it always. Second, the creation of PostScript files or direct printing currently only works when your output file is a @acronym{DVI} file, not a @acronym{PDF} file. Ah, you didn't know you can do both? That brings us to the next topic. @subsection Choosing an output format From a @LaTeX{} file, you can produce @acronym{DVI} output, or a @acronym{PDF} file directly @i{via} @command{pdflatex}. You can switch on source specials for easier navigation in the output file, or tell @command{latex} to stop after an error (usually @code{\noninteractive} is used, to allow you to detect all errors in a single run). These options are controlled by toggles, the keystrokes should be easy to memorize: @table @kbd @item @kbd{C-c C-t C-p} This command toggles between @acronym{DVI} and @acronym{PDF} output @item @kbd{C-c C-t C-i} toggles interactive mode @item @kbd{C-c C-t C-s} toggles source specials support @item @kbd{C-c C-t C-o} toggles usage of Omega/lambda. @end table @subsection Debugging @LaTeX{} When @AUCTeX{} runs a program, it creates an output buffer in which it displays the output of the command. If there is a syntactical error in your file, @command{latex} will not complete successfully. @AUCTeX{} will tell you that, and you can get to the place where the first error occured by pressing @kbd{C-c `} (the last character is a backtick). The view will be split in two windows, the output will be displayed in the lower buffer, and both buffers will be centered around the place where the error ocurred. You can then try to fix it in the document buffer, and use the same keystrokes to get to the next error. This procedure may be repeated until all errors have been dealt with. By pressing @kbd{C-c C-w} (@code{TeX-toggle-debug-boxes}) you can toggle whether @AUCTeX{} should notify you of overfull and underfull boxes in addition to regular errors. If a command got stuck in a seemingly infinite loop, or you want to stop execution for other reasons, you can use @kbd{C-c C-k} (for ``kill''). Similar to @kbd{C-l}, which centers the buffer you are in around your current position, @kbd{C-c C-l} centers the output buffer so that the last lines added at the bottom become visible. @subsection Running @LaTeX{} on parts of your document If you want to check how some part of your text looks like, and do not want to wait until the whole document has been typeset, then mark it as a region and use @kbd{C-c C-r}. It behaves just like @kbd{C-c C-c}, but it only uses the document preamble and the region you marked. If you are using @code{\include} or @code{\input} to structure your document, try @kbd{C-c C-b} while you are editing one of the included files. It will run @command{latex} only on the current buffer, using the preamble from the master file. @c does this also work with input? why not? @c Local Variables: @c mode: texinfo @c TeX-master: "auctex" @c End: auctex-11.87/doc/auctex.info-20000644000000000000000000012425012056205161014575 0ustar rootrootThis is auctex.info, produced by makeinfo version 4.13 from auctex.texi. This manual is for AUCTeX (version 11.87 from 2012-11-30), a sophisticated TeX environment for Emacs. Copyright (C) 1992, 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY INFO-DIR-SECTION TeX START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY  File: auctex.info, Node: Variable Index, Next: Concept Index, Prev: Function Index, Up: Indices Variable Index ============== [index] * Menu: * ConTeXt-clean-intermediate-suffixes: Cleaning. (line 7) * ConTeXt-clean-output-suffixes: Cleaning. (line 7) * ConTeXt-engine: Processor Options. (line 83) * ConTeXt-Omega-engine: Processor Options. (line 83) * docTeX-clean-intermediate-suffixes: Cleaning. (line 7) * docTeX-clean-output-suffixes: Cleaning. (line 7) * font-latex-deactivated-keyword-classes: Fontification of macros. (line 174) * font-latex-fontify-script: Fontification of math. (line 21) * font-latex-fontify-sectioning: Fontification of macros. (line 102) * font-latex-match-bold-command-keywords: Fontification of macros. (line 143) * font-latex-match-bold-declaration-keywords: Fontification of macros. (line 143) * font-latex-match-function-keywords: Fontification of macros. (line 66) * font-latex-match-italic-command-keywords: Fontification of macros. (line 143) * font-latex-match-italic-declaration-keywords: Fontification of macros. (line 143) * font-latex-match-math-command-keywords <1>: Fontification of math. (line 6) * font-latex-match-math-command-keywords: Fontification of macros. (line 143) * font-latex-match-reference-keywords: Fontification of macros. (line 66) * font-latex-match-sectioning-0-keywords: Fontification of macros. (line 113) * font-latex-match-sectioning-1-keywords: Fontification of macros. (line 113) * font-latex-match-sectioning-2-keywords: Fontification of macros. (line 113) * font-latex-match-sectioning-3-keywords: Fontification of macros. (line 113) * font-latex-match-sectioning-4-keywords: Fontification of macros. (line 113) * font-latex-match-sectioning-5-keywords: Fontification of macros. (line 113) * font-latex-match-slide-title-keywords: Fontification of macros. (line 120) * font-latex-match-textual-keywords: Fontification of macros. (line 66) * font-latex-match-type-command-keywords: Fontification of macros. (line 143) * font-latex-match-type-declaration-keywords: Fontification of macros. (line 143) * font-latex-match-variable-keywords: Fontification of macros. (line 66) * font-latex-match-warning-keywords: Fontification of macros. (line 66) * font-latex-math-environments: Fontification of math. (line 6) * font-latex-quotes: Fontification of quotes. (line 16) * font-latex-script-display: Fontification of math. (line 29) * font-latex-sectioning-0-face: Fontification of macros. (line 102) * font-latex-sectioning-1-face: Fontification of macros. (line 102) * font-latex-sectioning-2-face: Fontification of macros. (line 102) * font-latex-sectioning-3-face: Fontification of macros. (line 102) * font-latex-sectioning-4-face: Fontification of macros. (line 102) * font-latex-sectioning-5-face: Fontification of macros. (line 102) * font-latex-slide-title-face: Fontification of macros. (line 120) * font-latex-user-keyword-classes: Fontification of macros. (line 204) * japanese-LaTeX-command-default: Japanese. (line 6) * japanese-LaTeX-default-style: Japanese. (line 6) * japanese-TeX-command-default: Japanese. (line 6) * LaTeX-amsmath-label: Equations. (line 16) * LaTeX-auto-label-regexp-list: Parsing Files. (line 100) * LaTeX-auto-minimal-regexp-list: Parsing Files. (line 97) * LaTeX-auto-regexp-list: Parsing Files. (line 103) * LaTeX-babel-hyphen: European. (line 150) * LaTeX-babel-hyphen-after-hyphen: European. (line 158) * LaTeX-babel-hyphen-language-alist: European. (line 137) * LaTeX-biblatex-use-Biber: Selecting a Command. (line 46) * LaTeX-clean-intermediate-suffixes: Cleaning. (line 7) * LaTeX-clean-output-suffixes: Cleaning. (line 7) * LaTeX-command: Processor Options. (line 83) * LaTeX-csquotes-close-quote: Quotes. (line 44) * LaTeX-csquotes-open-quote: Quotes. (line 44) * LaTeX-csquotes-quote-after-quote: Quotes. (line 44) * LaTeX-default-environment: Environments. (line 35) * LaTeX-default-format: Tabular-like. (line 11) * LaTeX-default-position: Tabular-like. (line 14) * LaTeX-enable-toolbar: Processing. (line 11) * LaTeX-eqnarray-label: Equations. (line 13) * LaTeX-equation-label: Equations. (line 10) * LaTeX-figure-label: Floats. (line 25) * LaTeX-fill-break-at-separators: Filling. (line 104) * LaTeX-fill-break-before-code-comments: Filling. (line 114) * LaTeX-float: Floats. (line 14) * LaTeX-fold-env-spec-list: Folding. (line 189) * LaTeX-fold-macro-spec-list: Folding. (line 189) * LaTeX-fold-math-spec-list: Folding. (line 189) * LaTeX-font-list: Font Specifiers. (line 59) * LaTeX-indent-environment-check: Indenting. (line 51) * LaTeX-indent-environment-list: Indenting. (line 37) * LaTeX-indent-level: Indenting. (line 19) * LaTeX-item-indent: Indenting. (line 19) * LaTeX-item-regexp: Indenting. (line 19) * LaTeX-math-abbrev-prefix: Mathematics. (line 27) * LaTeX-math-list: Mathematics. (line 37) * LaTeX-math-menu-unicode: Mathematics. (line 55) * LaTeX-Omega-command: Processor Options. (line 83) * LaTeX-paragraph-commands: Filling. (line 55) * LaTeX-section-hook: Sectioning. (line 50) * LaTeX-section-label: Sectioning. (line 53) * LaTeX-syntactic-comments: Indenting. (line 63) * LaTeX-table-label: Floats. (line 25) * LaTeX-top-caption-list: Floats. (line 20) * LaTeX-verbatim-environments: Verbatim content. (line 10) * LaTeX-verbatim-macros-with-braces: Verbatim content. (line 10) * LaTeX-verbatim-macros-with-delims: Verbatim content. (line 10) * plain-TeX-auto-regexp-list: Parsing Files. (line 106) * plain-TeX-clean-intermediate-suffixes: Cleaning. (line 7) * plain-TeX-clean-output-suffixes: Cleaning. (line 7) * plain-TeX-enable-toolbar: Processing. (line 11) * TeX-arg-input-file-search: Adding Macros. (line 123) * TeX-auto-cleanup-hook: Hacking the Parser. (line 101) * TeX-auto-empty-regexp-list: Parsing Files. (line 94) * TeX-auto-full-regexp-list: Parsing Files. (line 109) * TeX-auto-global: Automatic Global. (line 26) * TeX-auto-local: Automatic Local. (line 23) * TeX-auto-parse-length: Parsing Files. (line 88) * TeX-auto-prepare-hook: Hacking the Parser. (line 98) * TeX-auto-private: Automatic Private. (line 20) * TeX-auto-regexp-list <1>: Hacking the Parser. (line 79) * TeX-auto-regexp-list: Parsing Files. (line 85) * TeX-auto-save: Parsing Files. (line 41) * TeX-auto-untabify: Parsing Files. (line 58) * TeX-brace-indent-level: Indenting. (line 103) * TeX-check-path: Selecting a Command. (line 60) * TeX-clean-confirm: Cleaning. (line 27) * TeX-close-quote: Quotes. (line 26) * TeX-command: Processor Options. (line 83) * TeX-command-default: Selecting a Command. (line 43) * TeX-command-list <1>: Selecting a Command. (line 14) * TeX-command-list: Starting a Command. (line 16) * TeX-default-macro: Completion. (line 52) * TeX-default-mode: Japanese. (line 6) * TeX-display-help: Debugging. (line 31) * TeX-DVI-via-PDFTeX: Processor Options. (line 22) * TeX-electric-escape: Completion. (line 59) * TeX-electric-sub-and-superscript: Mathematics. (line 69) * TeX-engine: Processor Options. (line 67) * TeX-engine-alist: Processor Options. (line 83) * TeX-engine-alist-builtin: Processor Options. (line 83) * TeX-expand-list: Selecting a Command. (line 14) * TeX-file-recurse: Automatic. (line 46) * TeX-fold-command-prefix: Folding. (line 137) * TeX-fold-env-spec-list: Folding. (line 180) * TeX-fold-force-fontify: Folding. (line 64) * TeX-fold-help-echo-max-length: Folding. (line 217) * TeX-fold-macro-spec-list: Folding. (line 147) * TeX-fold-math-spec-list: Folding. (line 187) * TeX-fold-preserve-comments: Folding. (line 72) * TeX-fold-type-list: Folding. (line 59) * TeX-fold-unspec-env-display-string: Folding. (line 200) * TeX-fold-unspec-macro-display-string: Folding. (line 196) * TeX-fold-unspec-use-name: Folding. (line 204) * TeX-font-list: Font Specifiers. (line 50) * TeX-header-end: Starting a Command. (line 32) * TeX-ignore-file: Automatic. (line 54) * TeX-insert-braces: Completion. (line 77) * TeX-insert-macro-default-style: Completion. (line 38) * TeX-install-font-lock: Font Locking. (line 14) * TeX-interactive-mode: Processor Options. (line 29) * TeX-language-bg-hook: European. (line 53) * TeX-language-cz-hook: European. (line 53) * TeX-language-de-hook: European. (line 53) * TeX-language-dk-hook: European. (line 53) * TeX-language-is-hook: European. (line 53) * TeX-language-it-hook: European. (line 53) * TeX-language-nl-hook: European. (line 53) * TeX-language-pl-hook: European. (line 53) * TeX-language-sk-hook: European. (line 53) * TeX-language-sv-hook: European. (line 53) * TeX-macro-global <1>: Automatic Global. (line 17) * TeX-macro-global: Customizing. (line 20) * TeX-macro-private: Automatic Private. (line 13) * TeX-master <1>: Multifile. (line 42) * TeX-master: Starting a Command. (line 16) * TeX-math-close-double-dollar: Quotes. (line 72) * TeX-newline-function: Indenting. (line 29) * TeX-Omega-command: Processor Options. (line 83) * TeX-one-master: Multifile. (line 57) * TeX-open-quote: Quotes. (line 22) * TeX-outline-extra: Outline. (line 14) * TeX-output-view-style: Starting Viewers. (line 100) * TeX-parse-self: Parsing Files. (line 38) * TeX-PDF-mode: Processor Options. (line 15) * TeX-quote-after-quote: Quotes. (line 30) * TeX-quote-language-alist: European. (line 124) * TeX-region: Starting a Command. (line 32) * TeX-save-query: Multifile. (line 102) * TeX-show-compilation: Processor Options. (line 110) * TeX-source-correlate-method: Processor Options. (line 47) * TeX-source-correlate-mode: Processor Options. (line 36) * TeX-source-correlate-start-server: I/O Correlation. (line 26) * TeX-style-global: Automatic Global. (line 20) * TeX-style-local: Automatic Local. (line 17) * TeX-style-path: Automatic. (line 39) * TeX-style-private: Automatic Private. (line 29) * TeX-trailer-start: Starting a Command. (line 32) * TeX-view-predicate-list: Starting Viewers. (line 58) * TeX-view-program-list: Starting Viewers. (line 67) * TeX-view-program-selection: Starting Viewers. (line 38) * TeX-view-style: Starting Viewers. (line 109) * Texinfo-clean-intermediate-suffixes: Cleaning. (line 7) * Texinfo-clean-output-suffixes: Cleaning. (line 7)  File: auctex.info, Node: Concept Index, Prev: Variable Index, Up: Indices Concept Index ============= [index] * Menu: * .emacs: Loading the package. (line 6) * \begin: Environments. (line 6) * \chapter <1>: Sectioning. (line 6) * \chapter: Editing Facilities. (line 26) * \cite, completion of: Completion. (line 83) * \emph <1>: Font Specifiers. (line 22) * \emph: Editing Facilities. (line 79) * \end: Environments. (line 6) * \include: Multifile. (line 6) * \input: Multifile. (line 6) * \item: Itemize-like. (line 6) * \label <1>: Sectioning. (line 6) * \label: Editing Facilities. (line 26) * \label, completion: Completion. (line 83) * \ref, completion: Completion. (line 83) * \section <1>: Sectioning. (line 6) * \section: Editing Facilities. (line 26) * \subsection <1>: Sectioning. (line 6) * \subsection: Editing Facilities. (line 26) * \textbf <1>: Font Specifiers. (line 16) * \textbf: Editing Facilities. (line 73) * \textit <1>: Font Specifiers. (line 19) * \textit: Editing Facilities. (line 76) * \textrm <1>: Font Specifiers. (line 28) * \textrm: Editing Facilities. (line 85) * \textsc <1>: Font Specifiers. (line 37) * \textsc: Editing Facilities. (line 94) * \textsf <1>: Font Specifiers. (line 31) * \textsf: Editing Facilities. (line 88) * \textsl <1>: Font Specifiers. (line 25) * \textsl: Editing Facilities. (line 82) * \texttt <1>: Font Specifiers. (line 34) * \texttt: Editing Facilities. (line 91) * Abbreviations: Mathematics. (line 6) * Adding a style hook: Simple Style. (line 6) * Adding bibliographies: Adding Other. (line 6) * Adding environments: Adding Environments. (line 6) * Adding labels: Adding Other. (line 6) * Adding macros: Adding Macros. (line 6) * Adding other information: Adding Other. (line 6) * Adding to PATH in Windows: Installation under MS Windows. (line 51) * amsmath: Equations. (line 6) * ANSI: European. (line 6) * Arguments to TeX macros: Completion. (line 6) * ASCII pTeX <1>: Japanese. (line 6) * ASCII pTeX: Internationalization. (line 6) * auctex.el <1>: Changes. (line 176) * auctex.el: Loading the package. (line 14) * auto directories.: Automatic. (line 6) * Auto-Reveal: Folding. (line 6) * Automatic: Automatic. (line 6) * Automatic Customization: Automatic. (line 6) * Automatic Parsing: Parsing Files. (line 6) * Automatic updating style hooks: Automatic Local. (line 6) * Bad boxes: Debugging. (line 6) * Biber: Selecting a Command. (line 46) * biblatex: Selecting a Command. (line 46) * Bibliographies, adding: Adding Other. (line 6) * Bibliography: Commands. (line 6) * bibliography, completion: Completion. (line 83) * BibTeX: Commands. (line 6) * BibTeX, completion: Completion. (line 83) * book.el: Simple Style. (line 6) * Braces: Quotes. (line 6) * Brackets: Quotes. (line 6) * Bulgarian: European. (line 53) * Changing font: Font Specifiers. (line 6) * Changing the parser: Hacking the Parser. (line 6) * Chapters <1>: Sectioning. (line 6) * Chapters: Editing Facilities. (line 26) * Character set: Internationalization. (line 6) * Checking: Checking. (line 6) * ChinaTeX: Internationalization. (line 6) * chktex: Checking. (line 6) * citations, completion of: Completion. (line 83) * cite, completion of: Completion. (line 83) * CJK language: Internationalization. (line 6) * CJK-LaTeX: Internationalization. (line 6) * Cleaning: Cleaning. (line 6) * Commands: Commands. (line 6) * Completion: Completion. (line 6) * Controlling the output: Control. (line 6) * Copying: Copying. (line 6) * Copyright: Copying. (line 6) * CTeX: Internationalization. (line 6) * Current file: Control. (line 6) * Customization: Customizing. (line 6) * Customization, personal: Customizing. (line 6) * Customization, site: Customizing. (line 6) * Czech: European. (line 53) * Danish: European. (line 53) * Debugging: Debugging. (line 6) * Default command: Commands. (line 6) * Defining bibliographies in style hooks: Adding Other. (line 6) * Defining environments in style hooks: Adding Environments. (line 6) * Defining labels in style hooks: Adding Other. (line 6) * Defining macros in style hooks: Adding Macros. (line 6) * Defining other information in style hooks: Adding Other. (line 6) * Deleting fonts <1>: Font Specifiers. (line 40) * Deleting fonts: Editing Facilities. (line 97) * Descriptions: Itemize-like. (line 6) * Display math mode: Quotes. (line 6) * Distribution: Copying. (line 6) * Documentation: Documentation. (line 6) * Documents: Multifile. (line 6) * Documents with multiple files: Multifile. (line 6) * Dollar signs, color bleed with: Known problems. (line 6) * Dollars: Quotes. (line 6) * Double quotes: Quotes. (line 6) * Dutch: European. (line 53) * Enumerates: Itemize-like. (line 6) * Environments: Environments. (line 6) * Environments, adding: Adding Environments. (line 6) * Eqnarray: Equations. (line 6) * Equation: Equations. (line 6) * Equations: Equations. (line 6) * Errors: Debugging. (line 6) * Europe: European. (line 6) * European Characters: European. (line 6) * Example of a style file.: Simple Style. (line 6) * Expansion: Completion. (line 6) * External Commands: Commands. (line 6) * Extracting TeX symbols: Automatic. (line 6) * Faces: Faces. (line 6) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) * Figure environment: Floats. (line 6) * Figures: Floats. (line 6) * Filling: Filling. (line 6) * Finding errors: Checking. (line 6) * Finding the current file: Control. (line 6) * Finding the master file: Control. (line 6) * Floats: Floats. (line 6) * Folding <1>: Outline. (line 6) * Folding: Folding. (line 6) * Font Locking: Font Locking. (line 6) * Font macros: Font Specifiers. (line 6) * font-latex: Font Locking. (line 6) * Fonts: Font Specifiers. (line 6) * Formatting <1>: Commands. (line 6) * Formatting <2>: Filling. (line 6) * Formatting: Indenting. (line 6) * Forward search: I/O Correlation. (line 6) * Free: Copying. (line 6) * Free software: Copying. (line 6) * General Public License: Copying. (line 6) * Generating symbols: Automatic. (line 6) * German: European. (line 53) * Global directories: Automatic Global. (line 6) * Global macro directory: Automatic Global. (line 6) * Global style hook directory: Automatic Global. (line 6) * Global TeX macro directory: Automatic Global. (line 6) * GPL: Copying. (line 6) * Header: Commands. (line 6) * Headers: Outline. (line 6) * Hide Macros: Folding. (line 6) * HLaTeX: Internationalization. (line 6) * I/O correlation <1>: I/O Correlation. (line 6) * I/O correlation: Processor Options. (line 35) * Including: Multifile. (line 6) * Indentation: Indenting. (line 6) * Indenting: Indenting. (line 6) * Indexing: Commands. (line 6) * Initialization: Customizing. (line 6) * Inputing: Multifile. (line 6) * Installation: Build/install. (line 6) * Internationalization: Internationalization. (line 6) * Inverse search: I/O Correlation. (line 6) * ISO 8859 Latin 1: European. (line 6) * ISO 8859 Latin 2: European. (line 6) * iso-cvt.el: European. (line 28) * ispell: European. (line 40) * Italian: European. (line 53) * Itemize: Itemize-like. (line 6) * Items: Itemize-like. (line 6) * Japan: Japanese. (line 6) * Japanese: Japanese. (line 6) * jLaTeX: Japanese. (line 6) * jTeX <1>: Japanese. (line 6) * jTeX: Internationalization. (line 6) * Killing a process: Control. (line 6) * kTeX: Internationalization. (line 6) * Label prefix <1>: Floats. (line 25) * Label prefix: Sectioning. (line 129) * Labels <1>: Floats. (line 25) * Labels: Sectioning. (line 129) * Labels, adding: Adding Other. (line 6) * labels, completion of: Completion. (line 83) * lacheck: Checking. (line 6) * Language Support: Internationalization. (line 6) * LaTeX: Commands. (line 6) * Latin 1: European. (line 6) * Latin 2: European. (line 6) * License: Copying. (line 6) * Literature: Commands. (line 6) * Local style directory: Automatic Local. (line 6) * Local style hooks: Automatic Local. (line 6) * Macro arguments: Completion. (line 6) * Macro completion: Completion. (line 6) * Macro expansion: Completion. (line 6) * macro.el: Hacking the Parser. (line 6) * macro.tex: Hacking the Parser. (line 6) * Macros, adding: Adding Macros. (line 6) * Make: Build/install. (line 6) * makeindex: Commands. (line 6) * Making a bibliography: Commands. (line 6) * Making an index: Commands. (line 6) * Many Files: Multifile. (line 6) * Master file <1>: Multifile. (line 6) * Master file: Control. (line 6) * Matching dollar signs: Quotes. (line 6) * Math mode delimiters: Quotes. (line 6) * Math, fontification of: Fontification of math. (line 6) * Math, fontification problems with: Known problems. (line 6) * Mathematics: Mathematics. (line 6) * MULE <1>: Japanese. (line 6) * MULE: Internationalization. (line 6) * MULE-UCS: Internationalization. (line 6) * Multifile Documents: Multifile. (line 6) * Multiple Files: Multifile. (line 6) * National letters: Internationalization. (line 6) * Next error: Debugging. (line 6) * Nippon: Japanese. (line 6) * NTT jTeX <1>: Japanese. (line 6) * NTT jTeX: Internationalization. (line 6) * Other information, adding: Adding Other. (line 6) * Outlining <1>: Outline. (line 6) * Outlining: Folding. (line 6) * Output: Control. (line 6) * Overfull boxes: Debugging. (line 6) * Overview: Outline. (line 6) * Parsing errors: Debugging. (line 6) * Parsing LaTeX errors: Debugging. (line 6) * Parsing new macros: Hacking the Parser. (line 6) * Parsing TeX <1>: Automatic. (line 6) * Parsing TeX: Parsing Files. (line 6) * Parsing TeX output: Debugging. (line 6) * PATH in Windows: Installation under MS Windows. (line 51) * PDF mode: Processor Options. (line 15) * PDFSync <1>: I/O Correlation. (line 6) * PDFSync: Processor Options. (line 35) * Personal customization: Customizing. (line 6) * Personal information: Automatic Private. (line 6) * Personal macro directory: Automatic Private. (line 6) * Personal TeX macro directory: Automatic Private. (line 6) * pLaTeX: Japanese. (line 6) * Polish: European. (line 53) * Prefix for labels <1>: Floats. (line 25) * Prefix for labels: Sectioning. (line 129) * preview-install-styles: Configure. (line 102) * Previewing: Viewing. (line 6) * Printing: Commands. (line 6) * Private directories: Automatic Private. (line 6) * Private macro directory: Automatic Private. (line 6) * Private style hook directory: Automatic Private. (line 6) * Private TeX macro directory: Automatic Private. (line 6) * Problems: Checking. (line 6) * Processes: Control. (line 6) * pTeX <1>: Japanese. (line 6) * pTeX: Internationalization. (line 6) * Quotes: Quotes. (line 6) * Quotes, fontification of: Fontification of quotes. (line 6) * Redisplay output: Control. (line 6) * Refilling: Filling. (line 6) * Reformatting <1>: Filling. (line 6) * Reformatting: Indenting. (line 6) * Region: Commands. (line 6) * Region file: Commands. (line 6) * Reindenting: Indenting. (line 6) * Reveal: Folding. (line 6) * Right: Copying. (line 6) * Running BibTeX: Commands. (line 6) * Running chktex: Checking. (line 6) * Running commands: Commands. (line 6) * Running lacheck: Checking. (line 6) * Running LaTeX: Commands. (line 6) * Running makeindex: Commands. (line 6) * Running TeX: Commands. (line 6) * Sample style file: Simple Style. (line 6) * Sectioning <1>: Sectioning. (line 6) * Sectioning: Editing Facilities. (line 26) * Sectioning commands, fontification of: Fontification of macros. (line 97) * Sections <1>: Outline. (line 6) * Sections <2>: Sectioning. (line 6) * Sections: Editing Facilities. (line 26) * Setting the default command: Commands. (line 6) * Setting the header: Commands. (line 6) * Setting the trailer: Commands. (line 6) * Site customization: Customizing. (line 6) * Site information: Automatic Global. (line 6) * Site initialization: Customizing. (line 6) * Site macro directory: Automatic Global. (line 6) * Site TeX macro directory: Automatic Global. (line 6) * Slovak: European. (line 53) * Source specials <1>: I/O Correlation. (line 6) * Source specials: Processor Options. (line 35) * Specifying a font: Font Specifiers. (line 6) * Starting a previewer: Viewing. (line 6) * Stopping a process: Control. (line 6) * style: Style Files. (line 6) * Style: Checking. (line 6) * Style file: Simple Style. (line 6) * Style files: Style Files. (line 6) * Style hook: Simple Style. (line 6) * Style hooks: Style Files. (line 6) * Subscript, fontification of: Fontification of math. (line 6) * Superscript, fontification of: Fontification of math. (line 6) * Swedish: European. (line 53) * Symbols: Mathematics. (line 6) * SyncTeX <1>: I/O Correlation. (line 6) * SyncTeX: Processor Options. (line 35) * Syntax Highlighting: Font Locking. (line 6) * Tabify: Parsing Files. (line 6) * Table environment: Floats. (line 6) * Tables: Floats. (line 6) * Tabs: Parsing Files. (line 6) * TeX: Commands. (line 6) * TeX parsing: Automatic. (line 6) * tex-jp.el: Japanese. (line 6) * tex-mik.el: Installation under MS Windows. (line 286) * tex-site.el <1>: Changes. (line 176) * tex-site.el <2>: Customizing. (line 6) * tex-site.el: Loading the package. (line 14) * tool bar, toolbar: Processing. (line 11) * Trailer: Commands. (line 6) * Underfull boxes: Debugging. (line 6) * UNICODE: Internationalization. (line 6) * Untabify: Parsing Files. (line 6) * Updating style hooks: Automatic Local. (line 6) * Verbatim, fontification of: Verbatim content. (line 6) * Viewing: Viewing. (line 6) * Warranty: Copying. (line 6) * Writing to a printer: Commands. (line 6) * x-compose.el: European. (line 31) * X-Symbol: European. (line 34) auctex-11.87/doc/auctex.info-10000644000000000000000000106777212056205161014614 0ustar rootrootThis is auctex.info, produced by makeinfo version 4.13 from auctex.texi. This manual is for AUCTeX (version 11.87 from 2012-11-30), a sophisticated TeX environment for Emacs. Copyright (C) 1992, 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY INFO-DIR-SECTION TeX START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY  File: auctex.info, Node: Top, Next: Copying, Up: (dir) AUCTeX ****** This manual may be copied under the conditions spelled out in *note Copying this Manual::. AUCTeX is an integrated environment for editing LaTeX, ConTeXt, docTeX, Texinfo, and TeX files. Although AUCTeX contains a large number of features, there are no reasons to despair. You can continue to write TeX and LaTeX documents the way you are used to, and only start using the multiple features in small steps. AUCTeX is not monolithic, each feature described in this manual is useful by itself, but together they provide an environment where you will make very few LaTeX errors, and makes it easy to find the errors that may slip through anyway. It is a good idea to make a printout of AUCTeX's reference card `tex-ref.tex' or one of its typeset versions. If you want to make AUCTeX aware of style files and multi-file documents right away, insert the following in your `.emacs' file. (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) Another thing you should enable is RefTeX, a comprehensive solution for managing cross references, bibliographies, indices, document navigation and a few other things. (*note Installation: (reftex)Installation.) For detailed information about the preview-latex subsystem of AUCTeX, see *note Introduction: (preview-latex)Top. There is a mailing list for general discussion about AUCTeX: write a mail with "subscribe" in the subject to to join it. Send contributions to . Bug reports should go to , suggestions for new features, and pleas for help should go to either (the AUCTeX developers), or to if they might have general interest. Please use the command `M-x TeX-submit-bug-report RET' to report bugs if possible. You can subscribe to a low-volume announcement list by sending "subscribe" in the subject of a mail to . * Menu: * Copying:: Copying * Introduction:: Introduction to AUCTeX * Editing:: Editing the Document Source * Display:: Controlling Screen Display * Processing:: Starting Processors, Viewers and Other Programs * Customization:: Customization and Extension * Appendices:: Copying, Changes, Development, FAQ, Texinfo mode * Indices:: Indices --- The Detailed Node Listing --- Introduction * Summary:: Overview of AUCTeX * Installation:: Installing AUCTeX * Quick Start:: Quick Start Editing the Document Source * Quotes:: Inserting double quotes * Font Specifiers:: Inserting Font Specifiers * Sectioning:: Inserting chapters, sections, etc. * Environments:: Inserting Environment Templates * Mathematics:: Entering Mathematics * Completion:: Completion of macros * Commenting:: Commenting text * Indenting:: Reflecting syntactic constructs with whitespace * Filling:: Automatic and manual line breaking Inserting Environment Templates * Equations:: Equations * Floats:: Floats * Itemize-like:: Itemize-like Environments * Tabular-like:: Tabular-like Environments * Customizing Environments:: Customizing Environments Controlling Screen Display * Font Locking:: Font Locking * Folding:: Folding Macros and Environments * Outline:: Outlining the Document Font Locking * Fontification of macros:: Fontification of macros * Fontification of quotes:: Fontification of quotes * Fontification of math:: Fontification of math constructs * Verbatim content:: Verbatim macros and environments * Faces:: Faces used by font-latex Starting Processors, Viewers and Other Programs * Commands:: Invoking external commands. * Viewing:: Invoking external viewers. * Debugging:: Debugging TeX and LaTeX output. * Checking:: Checking the document. * Control:: Controlling the processes. * Cleaning:: Cleaning intermediate and output files. * Documentation:: Documentation about macros and packages. Viewing the Formatted Output * Starting Viewers:: Starting viewers * I/O Correlation:: Forward and inverse search Customization and Extension * Multifile:: Multifile Documents * Parsing Files:: Automatic Parsing of TeX Files * Internationalization:: Language Support * Automatic:: Automatic Customization * Style Files:: Writing Your Own Style Support Language Support * European:: Using AUCTeX with European Languages * Japanese:: Using AUCTeX with Japanese Automatic Customization * Automatic Global:: Automatic Customization for the Site * Automatic Private:: Automatic Customization for a User * Automatic Local:: Automatic Customization for a Directory Writing Your Own Style Support * Simple Style:: A Simple Style File * Adding Macros:: Adding Support for Macros * Adding Environments:: Adding Support for Environments * Adding Other:: Adding Other Information * Hacking the Parser:: Automatic Extraction of New Things Copying, Changes, Development, FAQ * Copying this Manual:: * Changes:: * Development:: * FAQ:: * Texinfo mode:: Copying this Manual * GNU Free Documentation License:: License for copying this manual. Indices * Key Index:: * Function Index:: * Variable Index:: * Concept Index::  File: auctex.info, Node: Copying, Next: Introduction, Prev: Top, Up: Top Copying ******* AUCTeX primarily consists of Lisp files for Emacs (and XEmacs), but there are also installation scripts and files and TeX support files. All of those are "free"; this means that everyone is free to use them and free to redistribute them on a free basis. The files of AUCTeX are not in the public domain; they are copyrighted and there are restrictions on their distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of these programs that they might get from you. Specifically, we want to make sure that you have the right to give away copies of the files that constitute AUCTeX, that you receive source code or else can get it if you want it, that you can change these files or use pieces of them in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of parts of AUCTeX, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for AUCTeX. If any parts are modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the licenses for the files currently being distributed as part of AUCTeX are found in the General Public Licenses that accompany them. This manual specifically is covered by the GNU Free Documentation License (*note Copying this Manual::).  File: auctex.info, Node: Introduction, Next: Editing, Prev: Copying, Up: Top 1 Introduction ************** * Menu: * Summary:: Overview of AUCTeX * Installation:: Installing AUCTeX * Quick Start:: Quick Start  File: auctex.info, Node: Summary, Next: Installation, Up: Introduction 1.1 Overview of AUCTeX ====================== AUCTeX is a comprehensive customizable integrated environment for writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs or XEmacs. It supports you in the insertion of macros, environments, and sectioning commands by providing completion alternatives and prompting for parameters. It automatically indents your text as you type it and lets you format a whole file at once. The outlining and folding facilities provide you with a focused and clean view of your text. AUCTeX lets you process your source files by running TeX and related tools (such as output filters, post processors for generating indices and bibliographies, and viewers) from inside Emacs. AUCTeX lets you browse through the errors TeX reported, while it moves the cursor directly to the reported error, and displays some documentation for that particular error. This will even work when the document is spread over several files. One component of AUCTeX that LaTeX users will find attractive is preview-latex, a combination of folding and in-source previewing that provides true "What You See Is What You Get" experience in your sourcebuffer, while letting you retain full control. More detailed information about the features and usage of AUCTeX can be found in the remainder of this manual. AUCTeX is written entirely in Emacs Lisp, and hence you can easily add new features for your own needs. It is a GNU project and distributed under the `GNU General Public License Version 3'. The most recent version is always available at `http://ftp.gnu.org/pub/gnu/auctex/'. WWW users may want to check out the AUCTeX page at `http://www.gnu.org/software/auctex/'. For comprehensive information about how to install AUCTeX *Note Installation::, or *note Installation under MS Windows::, respectively. If you are considering upgrading AUCTeX, the recent changes are described in *note Changes::. If you want to discuss AUCTeX with other users or its developers, there are several mailing lists you can use. Send a mail with the subject "subscribe" to in order to join the general discussion list for AUCTeX. Articles should be sent to . In a similar way, you can subscribe to the list for just getting important announcements about AUCTeX. The list is for bug reports which you should usually file with the `M-x TeX-submit-bug-report ' command. If you want to address the developers of AUCTeX themselves with technical issues, they can be found on the discussion list .  File: auctex.info, Node: Installation, Next: Quick Start, Prev: Summary, Up: Introduction 1.2 Installing AUCTeX ===================== The simplest way of installing AUCTeX is by using the Emacs package manager integrated in Emacs 24 and greater (ELPA). Simply do `M-x package-list-packages RET', mark the auctex package for installation with `i', and hit `x' to execute the installation procedure. That's all. The remainder of this section is about installing AUCTeX from a release tarball or from a checkout of the AUCTeX repository. Installing AUCTeX should be simple: merely `./configure', `make', and `make install' for a standard site-wide installation (most other installations can be done by specifying a `--prefix=...' option). On many systems, this will already activate the package, making its modes the default instead of the built-in modes of Emacs. If this is not the case, consult *note Loading the package::. Please read through this document fully before installing anything. The installation procedure has changed as compared to earlier versions. Users of MS Windows are asked to consult *Note Installation under MS Windows::. * Menu: * Prerequisites:: * Configure:: * Build/install:: * Loading the package:: * Advice for package providers:: * Advice for non-privileged users:: * Installation under MS Windows:: * Customizing::  File: auctex.info, Node: Prerequisites, Next: Configure, Up: Installation 1.2.1 Prerequisites ------------------- * A recent version of Emacs, alternatively XEmacs Emacs 20 is no longer supported, and neither is XEmacs with a version of `xemacs-base' older than 1.84 (released in sumo from 02/02/2004). Using preview-latex requires a version of Emacs compiled with image support. While the X11 version of Emacs 21 will likely work, Emacs 22 and later is preferred. Windows Precompiled versions are available from `ftp://ftp.gnu.org/gnu/emacs/windows/'. Mac OS X For an overview of precompiled versions of Emacs for Mac OS X see for example `http://www.emacswiki.org/cgi-bin/wiki/EmacsForMacOS'. GNU/Linux Most GNU/Linux distributions nowadays provide a recent variant of Emacs via their package repositories. Self-compiled Compiling Emacs yourself requires a C compiler and a number of tools and development libraries. Details are beyond the scope of this manual. Instructions for checking out the source code can be found at `https://savannah.gnu.org/bzr/?group=emacs'. If you really need to use Emacs 21 on platforms where this implies missing image support, you should disable the installation of preview-latex (see below). While XEmacs (version 21.4.15, 21.4.17 or later) is supported, doing this in a satisfactory manner has proven to be difficult. This is mostly due to technical shortcomings and differing API's which are hard to come by. If AUCTeX is your main application for XEmacs, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. * A working TeX installation Well, AUCTeX would be pointless without that. Processing documentation requires TeX, LaTeX and Texinfo during installation. preview-latex requires Dvips for its operation in DVI mode. The default configuration of AUCTeX is tailored for teTeX or TeXlive-based distributions, but can be adapted easily. * A recent Ghostscript This is needed for operation of preview-latex in both DVI and PDF mode. Most versions of Ghostscript nowadays in use should work fine (version 7.0 and newer). If you encounter problems, check *note Problems with Ghostscript: (preview-latex)Problems with Ghostscript. * The `texinfo' package Strictly speaking, you can get away without it if you are building from the distribution tarball, have not modified any files and don't need a printed version of the manual: the pregenerated info file is included in the tarball. At least version 4.0 is required. For some known issues with various software, see *note Known problems: (preview-latex)Known problems.  File: auctex.info, Node: Configure, Next: Build/install, Prev: Prerequisites, Up: Installation 1.2.2 Configure --------------- The first step is to configure the source code, telling it where various files will be. To do so, run ./configure OPTIONS (Note: if you have fetched AUCTeX from CVS rather than a regular release, you will have to first follow the instructions in `README.CVS'). On many machines, you will not need to specify any options, but if `configure' cannot determine something on its own, you'll need to help it out with one of these options: `--prefix=`/usr/local'' All automatic placements for package components will be chosen from sensible existing hierarchies below this: directories like `man', `share' and `bin' are supposed to be directly below PREFIX. Only if no workable placement can be found there, in some cases an alternative search will be made in a prefix deduced from a suitable binary. `/usr/local' is the default PREFIX, intended to be suitable for a site-wide installation. If you are packaging this as an operating system component for distribution, the setting `/usr' will probably be the right choice. If you are planning to install the package as a single non-priviledged user, you will typically set PREFIX to your home directory. `--with-emacs[=/PATH/TO/EMACS]' If you are using a pretest which isn't in your `$PATH', or `configure' is not finding the right Emacs executable, you can specify it with this option. `--with-xemacs[=/PATH/TO/XEMACS]' Configure for generation under XEmacs (Emacs is the default). Again, the name of the right XEmacs executable can be specified, complete with path if necessary. `--with-packagedir=/DIR' This XEmacs-only option configures the directory for XEmacs packages. A typical user-local setting would be `~/.xemacs/xemacs-packages'. If this directory exists and is below PREFIX, it should be detected automatically. This will install and activate the package. `--without-packagedir' This XEmacs-only option switches the detection of a package directory and corresponding installation off. Consequently, the Emacs installation scheme will be used. This might be appropriate if you are using a different package system/installer than the XEmacs one and want to avoid conflicts. The Emacs installation scheme has the following options: `--with-lispdir=/DIR' This Emacs-only option specifies the location of the `site-lisp' directory within `load-path' under which the files will get installed (the bulk will get installed in a subdirectory). `./configure' should figure this out by itself. `--with-auctexstartfile=`auctex.el'' `--with-previewstartfile=`preview-latex.el'' This is the name of the respective startup files. If LISPDIR contains a subdirectory `site-start.d', the start files are placed there, and `site-start.el' should load them automatically. Please be aware that you must not move the start files after installation since other files are found _relative_ to them. `--with-packagelispdir=`auctex'' This is the directory where the bulk of the package gets located. The startfile adds this into LOAD-PATH. `--with-auto-dir=/DIR' You can use this option to specify the directory containing automatically generated information. It is not necessary for most TeX installs, but may be used if you don't like the directory that configure is suggesting. `--help' This is not an option specific to AUCTeX. A number of standard options to `configure' exist, and we do not have the room to describe them here; a short description of each is available, using `--help'. If you use `--help=recursive', then also preview-latex-specific options will get listed. `--disable-preview' This disables configuration and installation of preview-latex. This option is not actually recommended. If your Emacs does not support images, you should really upgrade to a newer version. Distributors should, if possible, refrain from distributing AUCTeX and preview-latex separately in order to avoid confusion and upgrade hassles if users install partial packages on their own. `--with-texmf-dir=/DIR --without-texmf-dir' This option is used for specifying a TDS-compliant directory hierarchy. Using `--with-texmf-dir=/DIR' you can specify where the TeX TDS directory hierarchy resides, and the TeX files will get installed in `/DIR/tex/latex/preview/'. If you use the `--without-texmf-dir' option, the TeX-related files will be kept in the Emacs Lisp tree, and at runtime the `TEXINPUTS' environment variable will be made to point there. You can install those files into your own TeX tree at some later time with `M-x preview-install-styles RET'. `--with-tex-dir=/DIR' If you want to specify an exact directory for the preview TeX files, use `--with-tex-dir=/DIR'. In this case, the files will be placed in `/DIR', and you'll also need the following option: `--with-doc-dir=/DIR' This option may be used to specify where the TeX documentation goes. It is to be used when you are using `--with-tex-dir=/DIR', but is normally not necessary otherwise.  File: auctex.info, Node: Build/install, Next: Loading the package, Prev: Configure, Up: Installation 1.2.3 Build/install ------------------- Once `configure' has been run, simply enter make at the prompt to byte-compile the lisp files, extract the TeX files and build the documentation files. To install the files into the locations chosen earlier, type make install You may need special privileges to install, e.g., if you are installing into system directories.  File: auctex.info, Node: Loading the package, Next: Advice for package providers, Prev: Build/install, Up: Installation 1.2.4 Loading the package ------------------------- You can detect the successful activation of AUCTeX and preview-latex in the menus after loading a LaTeX file like `preview/circ.tex': AUCTeX then gives you a `Command' menu, and preview-latex gives you a `Preview' menu. For XEmacs, if the installation occured into a valid package directory (which is the default), then this should work out of the box. With Emacs (or if you explicitly disabled use of the package system), the startup files `auctex.el' and `preview-latex.el' may already be in a directory of the `site-start.d/' variety if your Emacs installation provides it. In that case they should be automatically loaded on startup and nothing else needs to be done. If not, they should at least have been placed somewhere in your `load-path'. You can then load them by placing the lines (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) into your init file. If you explicitly used `--with-lispdir', you may need to add the specified directory into Emacs' `load-path' variable by adding something like (add-to-list 'load-path "~/elisp") before the above lines into your Emacs startup file. For site-wide activation in GNU Emacs, see *Note Advice for package providers::. Once activated, the modes provided by AUCTeX are used per default for all supported file types. If you want to change the modes for which it is operative instead of the default, use M-x customize-variable TeX-modes If you want to remove a preinstalled AUCTeX completely before any of its modes have been used, (unload-feature 'tex-site) should accomplish that.  File: auctex.info, Node: Advice for package providers, Next: Advice for non-privileged users, Prev: Loading the package, Up: Installation 1.2.5 Providing AUCTeX as a package ----------------------------------- As a package provider, you should make sure that your users will be served best according to their intentions, and keep in mind that a system might be used by more than one user, with different preferences. There are people that prefer the built-in Emacs modes for editing TeX files, in particular plain TeX users. There are various ways to tell AUCTeX even after auto-activation that it should not get used, and they are described in *note Introduction to AUCTeX: Introduction. So if you have users that don't want to use the preinstalled AUCTeX, they can easily get rid of it. Activating AUCTeX by default is therefore a good choice. If the installation procedure did not achieve this already by placing `auctex.el' and `preview-latex.el' into a possibly existing `site-start.d' directory, you can do this by placing (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) in the system-wide `site-start.el'. If your package is intended as an XEmacs package or to accompany a precompiled version of Emacs, you might not know which TeX system will be available when preview-latex gets used. In this case you should build using the `--without-texmf-dir' option described previously. This can also be convenient for systems that are intended to support more than a single TeX distribution. Since more often than not TeX packages for operating system distributions are either much more outdated or much less complete than separately provided systems like TeX Live, this method may be generally preferable when providing packages. The following package structure would be adequate for a typical fully supported Unix-like installation: `preview-tetex' Style files and documentation for `preview.sty', placed into a TeX tree where it is accessible from the teTeX executables usually delivered with a system. If there are other commonly used TeX system packages, it might be appropriate to provide separate packages for those. `auctex-emacs-tetex' This package will require the installation of `preview-tetex' and will record in `TeX-macro-global' where to find the TeX tree. It is also a good idea to run emacs -batch -f TeX-auto-generate-global when either AUCTeX or teTeX get installed or upgraded. If your users might want to work with a different TeX distribution (nowadays pretty common), instead consider the following: `auctex-emacs' This package will be compiled with `--without-texmf-dir' and will consequently contain the `preview' style files in its private directory. It will probably not be possible to initialize `TeX-macro-global' to a sensible value, so running `TeX-auto-generate-global' does not appear useful. This package would neither conflict with nor provide `preview-tetex'. `auctex-xemacs-tetex' `auctex-xemacs' Those are the obvious XEmacs equivalents. For XEmacs, there is the additional problem that the XEmacs sumo package tree already possibly provides its own version of AUCTeX, and the user might even have used the XEmacs package manager to updating this package, or even installing a private AUCTeX version. So you should make sure that such a package will not conflict with existing XEmacs packages and will be at an appropriate place in the load order (after site-wide and user-specific locations, but before a distribution-specific sumo package tree). Using the `--without-packagedir' option might be one idea to avoid conflicts. Another might be to refrain from providing an XEmacs package and just rely on the user or system administrator to instead use the XEmacs package system.  File: auctex.info, Node: Advice for non-privileged users, Next: Installation under MS Windows, Prev: Advice for package providers, Up: Installation 1.2.6 Installation for non-privileged users ------------------------------------------- Often people without system administration privileges want to install software for their private use. In that case you need to pass more options to the `configure' script. For XEmacs users, this is fairly easy, because the XEmacs package system has been designed to make this sort of thing practical: but GNU Emacs users (and XEmacs users for whom the package system is for some reason misbehaving) may need to do a little more work. The main expedient is using the `--prefix' option to the `configure' script, and let it point to the personal home directory. In that way, resulting binaries will be installed under the `bin' subdirectory of your home directory, manual pages under `man' and so on. It is reasonably easy to maintain a bunch of personal software, since the prefix argument is supported by most `configure' scripts. You'll have to add something like `/home/myself/share/emacs/site-lisp' to your `load-path' variable, if it isn't there already. XEmacs users can achieve the same end by pointing `configure' at an appropriate package directory (normally `--with-packagedir=~/.xemacs/xemacs-packages' will serve). The package directory stands a good chance at being detected automatically as long as it is in a subtree of the specified PREFIX. Now here is another thing to ponder: perhaps you want to make it easy for other users to share parts of your personal Emacs configuration. In general, you can do this by writing `~myself/' anywhere where you specify paths to something installed in your personal subdirectories, not merely `~/', since the latter, when used by other users, will point to non-existent files. For yourself, it will do to manipulate environment variables in your `.profile' resp. `.login' files. But if people will be copying just Elisp files, their copies will not work. While it would in general be preferable if the added components where available from a shell level, too (like when you call the standalone info reader, or try using `preview.sty' for functionality besides of Emacs previews), it will be a big help already if things work from inside of Emacs. Here is how to do the various parts: Making the Elisp available .......................... In GNU Emacs, it should be sufficient if people just do (load "~myself/share/emacs/site-lisp/auctex.el" nil t t) (load "~myself/share/emacs/site-lisp/preview-latex.el" nil t t) where the path points to your personal installation. The rest of the package should be found relative from there without further ado. In XEmacs, you should ask the other users to add symbolic links in the subdirectories `lisp', `info' and `etc' of their `~/.xemacs/xemacs-packages/' directory. (Alas, there is presently no easy programmatic way to do this, except to have a script do the symlinking for them.) Making the Info files available ............................... For making the info files accessible from within Elisp, something like the following might be convenient to add into your or other people's startup files: (eval-after-load 'info '(add-to-list 'Info-directory-list "~myself/info")) In XEmacs, as long as XEmacs can see the package, there should be no need to do anything at all; the info files should be immediately visible. However, you might want to set `INFOPATH' anyway, for the sake of standalone readers outside of XEmacs. (The info files in XEmacs are normally in `~/.xemacs/xemacs-packages/info'.) Making the LaTeX style available ................................ If you want others to be able to share your installation, you should configure it using `--without-texmf-dir', in which case things should work as well for them as for you.  File: auctex.info, Node: Installation under MS Windows, Next: Customizing, Prev: Advice for non-privileged users, Up: Installation 1.2.7 Installation under MS Windows ----------------------------------- In a Nutshell ............. The following are brief installation instructions for the impatient. In case you don't understand some of this, run into trouble of some sort, or need more elaborate information, refer to the detailed instructions further below. 1. Install the prerequisites, i.e. Emacs or XEmacs, MSYS or Cygwin, a TeX system, and Ghostscript. 2. Open the MSYS shell or a Cygwin shell and change to the directory containing the unzipped file contents. 3. Configure AUCTeX: For Emacs: Many people like to install AUCTeX into the pseudo file system hierarchy set up by the Emacs installation. Assuming Emacs is installed in `C:/Program Files/Emacs' and the directory for local additions of your TeX system, e.g. MiKTeX, is `C:/localtexmf', you can do this by typing the following statement at the shell prompt: ./configure --prefix='C:/Program Files/Emacs' \ --infodir='C:/Program Files/Emacs/info' \ --with-texmf-dir='C:/localtexmf' For XEmacs: You can install AUCTeX as an XEmacs package. Assuming XEmacs is installed in `C:/Program Files/XEmacs' and the directory for local additions of your TeX system, e.g. MiKTeX, is `C:/localtexmf', you can do this by typing the following command at the shell prompt: ./configure --with-xemacs='C:/Program Files/XEmacs/bin/xemacs' \ --with-texmf-dir='C:/localtexmf' The commands above are examples for common usage. More on configuration options can be found in the detailed installation instructions below. If the configuration script failed to find all required programs, make sure that these programs are in your system path and add directories containing the programs to the `PATH' environment variable if necessary. Here is how to do that in W2000/XP: 1. On the desktop, right click "My Computer" and select properties. 2. Click on "Advanced" in the "System Properties" window. 3. Select "Environment Variables". 4. Select "path" in "System Variables" and click "edit". Move to the front in the line (this might require scrolling) and add the missing path including drive letter, ended with a semicolon. 4. If there were no further error messages, type make In case there were, please refer to the detailed description below. 5. Finish the installation by typing make install Detailed Installation Instructions .................................. Installation of AUCTeX under Windows is in itself not more complicated than on other platforms. However, meeting the prerequisites might require more work than on some other platforms, and feel less natural. If you are experiencing any problems, even if you think they are of your own making, be sure to report them to so that we can explain things better in future. Windows is a problematic platform for installation scripts. The main problem is that the installation procedure requires consistent file names in order to find its way in the directory hierarchy, and Windows path names are a mess. The installation procedure tries finding stuff in system search paths and in Emacs paths. For that to succeed, you have to use the same syntax and spelling and case of paths everywhere: in your system search paths, in Emacs' `load-path' variable, as argument to the scripts. If your path names contain spaces or other `shell-unfriendly' characters, most notably backslashes for directory separators, place the whole path in `"double quote marks"' whenever you specify it on a command line. Avoid `helpful' magic file names like `/cygdrive/c' and `C:\PROGRA~1\' like the plague. It is quite unlikely that the scripts will be able to identify the actual file names involved. Use the full paths, making use of normal Windows drive letters like ` 'C:/Program Files/Emacs' ' where required, and using the same combination of upper- and lowercase letters as in the actual files. File names containing shell-special characters like spaces or backslashes (if you prefer that syntax) need to get properly quoted to the shell: the above example used single quotes for that. Ok, now here are the steps to perform: 1. You need to unpack the AUCTeX distribution (which you seemingly have done since you are reading this). It must be unpacked in a separate installation directory outside of your Emacs file hierarchy: the installation will later copy all necessary files to their final destination, and you can ultimately remove the directory where you unpacked the files. Line endings are a problem under Windows. The distribution contains only text files, and theoretically most of the involved tools should get along with that. However, the files are processed by various utilities, and it is conceivable that not all of them will use the same line ending conventions. If you encounter problems, it might help if you try unpacking (or checking out) the files in binary mode, if your tools allow that. If you don't have a suitable unpacking tool, skip to the next step: this should provide you with a working `unzip' command. 2. The installation of AUCTeX will require the MSYS tool set from `http://www.mingw.org/' or the Cygwin tool set from `http://cygwin.com/'. The latter is slower and larger (the download size of the base system is about 15 MB) but comes with a package manager that allows for updating the tool set and installing additional packages like, for example, the spell checker aspell. If Cygwin specific paths like `/cygdrive/c' crop up in the course of the installation, using a non-Cygwin Emacs could conceivably cause trouble. Using Cygwin either for everything or nothing might save headaches, _if_ things don't work out. 3. Install a current version of XEmacs from `http://www.xemacs.org/' or Emacs from `ftp://ftp.gnu.org/gnu/emacs/windows/'. Emacs is the recommended choice because it is currently the primary platform for AUCTeX development. 4. You need a working TeX installation. One popular installation under Windows is MiKTeX (http://www.miktex.org). Another much more extensive system is TeX Live (http://www.tug.org/texlive) which is rather close to its Unix cousins. 5. A working copy of Ghostscript (http://www.cs.wisc.edu/~ghost/) is required for preview-latex operation. Examining the output from gswin32c -h on a Windows command line should tell you whether your Ghostscript supports the `png16m' device needed for PNG support. MiKTeX apparently comes with its own Ghostscript called `mgs.exe'. 6. Perl (http://www.perl.org) is needed for rebuilding the documentation if you are working with a copy from CVS or have touched documentation source files in the preview-latex part. If the line endings of the file `preview/latex/preview.dtx' don't correspond with what Perl calls `\n' when reading text files, you'll run into trouble. 7. Now the fun stuff starts. If you have not yet done so, unpack the AUCTeX distribution into a separate directory after rereading the instructions for unpacking above. 8. Ready for takeoff. Start some shell (typically `bash') capable of running `configure', change into the installation directory and call `./configure' with appropriate options. Typical options you'll want to specify will be `--prefix=DRIVE:/PATH/TO/EMACS-HIERARCHY' which tells `configure' where to perform the installation. It may also make `configure' find Emacs or XEmacs automatically; if this doesn't happen, try one of `--with-emacs' or `--with-xemacs' as described below. All automatic detection of files and directories restricts itself to directories below the PREFIX or in the same hierarchy as the program accessing the files. Usually, directories like `man', `share' and `bin' will be situated right under PREFIX. This option also affects the defaults for placing the Texinfo documentation files (see also `--infodir' below) and automatically generated style hooks. If you have a central directory hierarchy (not untypical with Cygwin) for such stuff, you might want to specify its root here. You stand a good chance that this will be the only option you need to supply, as long as your TeX-related executables are in your system path, which they better be for AUCTeX's operation, anyway. `--with-emacs' if you are installing for a version of Emacs. You can use `--with-emacs=DRIVE:/PATH/TO/EMACS' to specify the name of the installed Emacs executable, complete with its path if necessary (if Emacs is not within a directory specified in your `PATH' environment setting). `--with-xemacs' if you are installing for a version of XEmacs. Again, you can use `--with-xemacs=DRIVE:/PATH/TO/XEMACS' to specify the name of the installed XEmacs executable complete with its path if necessary. It may also be necessary to specify this option if a copy of Emacs is found in your `PATH' environment setting, but you still would like to install a copy of AUCTeX for XEmacs. `--with-packagedir=DRIVE:/DIR' is an XEmacs-only option giving the location of the package directory. This will install and activate the package. Emacs uses a different installation scheme: `--with-lispdir=DRIVE:/PATH/TO/SITE-LISP' This Emacs-only option tells a place in `load-path' below which the files are situated. The startup files `auctex.el' and `preview-latex.el' will get installed here unless a subdirectory `site-start.d' exists which will then be used instead. The other files from AUCTeX will be installed in a subdirectory called `auctex'. If you think that you need a different setup, please refer to the full installation instructions in *note Configure::. `--infodir=DRIVE:/PATH/TO/INFO/DIRECTORY' If you are installing into an Emacs directory, info files have to be put into the `info' folder below that directory. The configuration script will usually try to install into the folder `share/info', so you have to override this by specifying something like `--infodir='C:/Program Files/info'' for the configure call. `--with-auto-dir=DRIVE:/DIR' Directory containing automatically generated information. You should not normally need to set this, as `--prefix' should take care of this. `--disable-preview' Use this option if your Emacs version is unable to support image display. This will be the case if you are using a native variant of Emacs 21. `--with-texmf-dir=DRIVE:/DIR' This will specify the directory where your TeX installation sits. If your TeX installation does not conform to the TDS (TeX directory standard), you may need to specify more options to get everything in place. For more information about any of the above and additional options, see *note Configure::. Calling `./configure --help=recursive' will tell about other options, but those are almost never required. Some executables might not be found in your path. That is not a good idea, but you can get around by specifying environment variables to `configure': GS="DRIVE:/PATH/TO/GSWIN32C.EXE" ./configure ... should work for this purpose. `gswin32c.exe' is the usual name for the required _command line_ executable under Windows; in contrast, `gswin32.exe' is likely to fail. As an alternative to specifying variables for the `configure' call you can add directories containing the required executables to the `PATH' variable of your Windows system. This is especially a good idea if Emacs has trouble finding the respective programs later during normal operation. 9. Run `make' in the installation directory. 10. Run `make install' in the installation directory. 11. With XEmacs, AUCTeX and preview-latex should now be active by default. With Emacs, activation depends on a working `site-start.d' directory or similar setup, since then the startup files `auctex.el' and `preview-latex.el' will have been placed there. If this has not been done, you should be able to load the startup files manually with (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) in either a site-wide `site-start.el' or your personal startup file (usually accessible as `~/.emacs' from within Emacs and `~/.xemacs/init.el' from within XEmacs). The default configuration of AUCTeX is probably not the best fit for Windows systems with MiKTeX. You might want to add (require 'tex-mik) after loading `auctex.el' and `preview-latex.el' in order to get more appropriate values for some customization options. You can always use M-x customize-group RET AUCTeX RET in order to customize more stuff, or use the `Customize' menu. 12. Load `preview/circ.tex' into Emacs or XEmacs and see if you get the `Command' menu. Try using it to LaTeX the file. 13. Check whether the `Preview' menu is available in this file. Use it to generate previews for the document. If this barfs and tells you that image type `png' is not supported, you can either add PNG support to your Emacs installation or choose another image format to be used by preview-latex. Adding support for an image format usually involves the installation of a library, e.g. from `http://gnuwin32.sf.net/'. If you got your Emacs from `gnu.org' you might want to check its README file (ftp://ftp.gnu.org/gnu/emacs/windows/README) for details. A different image format can be chosen by setting the variable `preview-image-type'. While it is recommended to keep the `dvipng' or `png' setting, you can temporarily select a different format like `pnm' to check if the lack of PNG support is the only problem with your Emacs installation. Try adding the line (setq preview-image-type 'pnm) to your init file for a quick test. You should remove the line after the test again, because PNM files take away *vast* amounts of disk space, and thus also of load/save time. Well, that about is all. Have fun!  File: auctex.info, Node: Customizing, Prev: Installation under MS Windows, Up: Installation 1.2.8 Customizing ----------------- Most of the site-specific customization should already have happened during configuration of AUCTeX. Any further customization can be done with customization buffers directly in Emacs. Just type `M-x customize-group RET AUCTeX RET' to open the customization group for AUCTeX or use the menu entries provided in the mode menus. Editing the file `tex-site.el' as suggested in former versions of AUCTeX should not be done anymore because the installation routine will overwrite those changes. You might check some variables with a special significance. They are accessible directly by typing `M-x customize-variable RET RET'. -- User Option: TeX-macro-global Directories containing the site's TeX style files. Normally, AUCTeX will only allow you to complete macros and environments which are built-in, specified in AUCTeX style files or defined by yourself. If you issue the `M-x TeX-auto-generate-global' command after loading AUCTeX, you will be able to complete on all macros available in the standard style files used by your document. To do this, you must set this variable to a list of directories where the standard style files are located. The directories will be searched recursively, so there is no reason to list subdirectories explicitly. Automatic configuration will already have set the variable for you if it could use the program `kpsewhich'. In this case you normally don't have to alter anything.  File: auctex.info, Node: Quick Start, Prev: Installation, Up: Introduction 1.3 Quick Start =============== AUCTeX is a powerful program offering many features and configuration options. If you are new to AUCTeX this might be deterrent. Fortunately you do not have to learn everything at once. This Quick Start Guide will give you the knowledge of the most important commands and enable you to prepare your first LaTeX document with AUCTeX after only a few minutes of reading. In this introduction, we assume that AUCTeX is already installed on your system. If this is not the case, you should read the file `INSTALL' in the base directory of the unpacked distribution tarball. These installation instructions are available in this manual as well, *note Installation::. We also assume that you are familiar with the way keystrokes are written in Emacs manuals. If not, have a look at the Emacs Tutorial in the Help menu. If AUCTeX is installed, you might still need to activate it, by inserting (load "auctex.el" nil t t) in your user init file.(1) If you've installed AUCTeX from the Emacs package manager (ELPA), you must not have this line in your user init file. The installation procedure already cares about loading AUCTeX correctly. In order to get support for many of the LaTeX packages you will use in your documents, you should enable document parsing as well, which can be achieved by putting (setq TeX-auto-save t) (setq TeX-parse-self t) into your init file. Finally, if you often use `\include' or `\input', you should make AUCTeX aware of the multi-file document structure. You can do this by inserting (setq-default TeX-master nil) into your init file. Each time you open a new file, AUCTeX will then ask you for a master file. * Menu: * Editing Facilities:: Functions for editing TeX files * Processing Facilities:: Creating and viewing output, debugging ---------- Footnotes ---------- (1) This usually is a file in your home directory called `.emacs' if you are utilizing GNU Emacs or `.xemacs/init.el' if you are using XEmacs.  File: auctex.info, Node: Editing Facilities, Next: Processing Facilities, Up: Quick Start 1.3.1 Functions for editing TeX files ------------------------------------- 1.3.1.1 Making your TeX code more readable .......................................... AUCTeX can do syntax highlighting of your source code, that means commands will get special colors or fonts. You can enable it locally by typing `M-x font-lock-mode RET'. If you want to have font locking activated generally, enable `global-font-lock-mode', e.g. with `M-x customize-variable RET global-font-lock-mode RET'. AUCTeX will indent new lines to indicate their syntactical relationship to the surrounding text. For example, the text of a `\footnote' or text inside of an environment will be indented relative to the text around it. If the indenting has gotten wrong after adding or deleting some characters, use to reindent the line, `M-q' for the whole paragraph, or `M-x LaTeX-fill-buffer RET' for the whole buffer. 1.3.1.2 Entering sectioning commands .................................... Insertion of sectioning macros, that is `\chapter', `\section', `\subsection', etc. and accompanying `\label' commands may be eased by using `C-c C-s'. You will be asked for the section level. As nearly everywhere in AUCTeX, you can use the or key to get a list of available level names, and to auto-complete what you started typing. Next, you will be asked for the printed title of the section, and last you will be asked for a label to be associated with the section. 1.3.1.3 Inserting environments .............................. Similarly, you can insert environments, that is `\begin{}'-`\end{}' pairs: Type `C-c C-e', and select an environment type. Again, you can use or to get a list, and to complete what you type. Actually, the list will not only provide standard LaTeX environments, but also take your `\documentclass' and `\usepackage' commands into account if you have parsing enabled by setting `TeX-parse-self' to `t'. If you use a couple of environments frequently, you can use the up and down arrow keys (or `M-p' and `M-n') in the minibuffer to get back to the previously inserted commands. Some environments need additional arguments. Often, AUCTeX knows about this and asks you to enter a value. 1.3.1.4 Inserting macros ........................ `C-c C-m', or simply `C-c RET' will give you a prompt that asks you for a LaTeX macro. You can use for completion, or the up/down arrow keys (or `M-p' and `M-n') to browse the command history. In many cases, AUCTeX knows which arguments a macro needs and will ask you for that. It even can differentiate between mandatory and optional arguments--for details, see *note Completion::. An additional help for inserting macros is provided by the possibility to complete macros right in the buffer. With point at the end of a partially written macro, you can complete it by typing `M-TAB'. 1.3.1.5 Changing the font ......................... AUCTeX provides convenient keyboard shortcuts for inserting macros which specify the font to be used for typesetting certain parts of the text. They start with `C-c C-f', and the last `C-' combination tells AUCTeX which font you want: `C-c C-f C-b' Insert bold face `\textbf{-!-}' text. `C-c C-f C-i' Insert italics `\textit{-!-}' text. `C-c C-f C-e' Insert emphasized `\emph{-!-}' text. `C-c C-f C-s' Insert slanted `\textsl{-!-}' text. `C-c C-f C-r' Insert roman \textrm{-!-} text. `C-c C-f C-f' Insert sans serif `\textsf{-!-}' text. `C-c C-f C-t' Insert typewriter `\texttt{-!-}' text. `C-c C-f C-c' Insert SMALL CAPS `\textsc{-!-}' text. `C-c C-f C-d' Delete the innermost font specification containing point. If you want to change font attributes of existing text, mark it as a region, and then invoke the commands. If no region is selected, the command will be inserted with empty braces, and you can start typing the changed text. Most of those commands will also work in math mode, but then macros like `\mathbf' will be inserted. 1.3.1.6 Other useful features ............................. AUCTeX also tries to help you when inserting the right "quote" signs for your language, dollar signs to typeset math, or pairs of braces. It offers shortcuts for commenting out text (`C-c ;' for the current region or `C-c %' for the paragraph you are in). The same keystrokes will remove the % signs, if the region or paragraph is commented out yet. With `TeX-fold-mode', you can hide certain parts (like footnotes, references etc.) that you do not edit currently. Support for Emacs' outline mode is provided as well. And there's more, but this is beyond the scope of this Quick Start Guide.  File: auctex.info, Node: Processing Facilities, Prev: Editing Facilities, Up: Quick Start 1.3.2 Creating and viewing output, debugging -------------------------------------------- 1.3.2.1 One Command for LaTeX, helpers, viewers, and printing ............................................................. If you have typed some text and want to run LaTeX (or TeX, or other programs--see below) on it, type `C-c C-c'. If applicable, you will be asked whether you want to save changes, and which program you want to invoke. In many cases, the choice that AUCTeX suggests will be just what you want: first `latex', then a viewer. If a `latex' run produces or changes input files for `makeindex', the next suggestion will be to run that program, and AUCTeX knows that you need to run `latex' again afterwards--the same holds for BibTeX. When no processor invocation is necessary anymore, AUCTeX will suggest to run a viewer, or you can chose to create a PostScript file using `dvips', or to directly print it. At this place, a warning needs to be given: First, although AUCTeX is really good in detecting the standard situations when an additional `latex' run is necessary, it cannot detect it always. Second, the creation of PostScript files or direct printing currently only works when your output file is a DVI file, not a PDF file. Ah, you didn't know you can do both? That brings us to the next topic. 1.3.2.2 Choosing an output format ................................. From a LaTeX file, you can produce DVI output, or a PDF file directly via `pdflatex'. You can switch on source specials for easier navigation in the output file, or tell `latex' to stop after an error (usually `\noninteractive' is used, to allow you to detect all errors in a single run). These options are controlled by toggles, the keystrokes should be easy to memorize: `C-c C-t C-p' This command toggles between DVI and PDF output `C-c C-t C-i' toggles interactive mode `C-c C-t C-s' toggles source specials support `C-c C-t C-o' toggles usage of Omega/lambda. 1.3.2.3 Debugging LaTeX ....................... When AUCTeX runs a program, it creates an output buffer in which it displays the output of the command. If there is a syntactical error in your file, `latex' will not complete successfully. AUCTeX will tell you that, and you can get to the place where the first error occured by pressing `C-c `' (the last character is a backtick). The view will be split in two windows, the output will be displayed in the lower buffer, and both buffers will be centered around the place where the error ocurred. You can then try to fix it in the document buffer, and use the same keystrokes to get to the next error. This procedure may be repeated until all errors have been dealt with. By pressing `C-c C-w' (`TeX-toggle-debug-boxes') you can toggle whether AUCTeX should notify you of overfull and underfull boxes in addition to regular errors. If a command got stuck in a seemingly infinite loop, or you want to stop execution for other reasons, you can use `C-c C-k' (for "kill"). Similar to `C-l', which centers the buffer you are in around your current position, `C-c C-l' centers the output buffer so that the last lines added at the bottom become visible. 1.3.2.4 Running LaTeX on parts of your document ............................................... If you want to check how some part of your text looks like, and do not want to wait until the whole document has been typeset, then mark it as a region and use `C-c C-r'. It behaves just like `C-c C-c', but it only uses the document preamble and the region you marked. If you are using `\include' or `\input' to structure your document, try `C-c C-b' while you are editing one of the included files. It will run `latex' only on the current buffer, using the preamble from the master file.  File: auctex.info, Node: Editing, Next: Display, Prev: Introduction, Up: Top 2 Editing the Document Source ***************************** The most commonly used commands/macros of AUCTeX are those which simply insert templates for often used TeX, LaTeX, or ConTeXt constructs, like font changes, handling of environments, etc. These features are very simple, and easy to learn, and help you avoid mistakes like mismatched braces, or `\begin{}'-`\end{}' pairs. Apart from that this chapter contains a description of some features for entering more specialized sorts of text, for formatting the source by indenting and filling and for navigating through the document. * Menu: * Quotes:: Inserting double quotes * Font Specifiers:: Inserting Font Specifiers * Sectioning:: Inserting chapters, sections, etc. * Environments:: Inserting Environment Templates * Mathematics:: Entering Mathematics * Completion:: Completion of macros * Marking:: Marking Environments, Sections, or Texinfo Nodes * Commenting:: Commenting text * Indenting:: Reflecting syntactic constructs with whitespace * Filling:: Automatic and manual line breaking  File: auctex.info, Node: Quotes, Next: Font Specifiers, Up: Editing 2.1 Insertion of Quotes, Dollars, and Braces ============================================ Quotation Marks --------------- In TeX, literal double quotes `"like this"' are seldom used, instead two single quotes are used ```like this'''. To help you insert these efficiently, AUCTeX allows you to continue to press `"' to insert two single quotes. To get a literal double quote, press `"' twice. -- Command: TeX-insert-quote COUNT (`"') Insert the appropriate quote marks for TeX. Inserts the value of `TeX-open-quote' (normally ```') or `TeX-close-quote' (normally `''') depending on the context. With prefix argument, always inserts `"' characters. -- User Option: TeX-open-quote String inserted by typing `"' to open a quotation. (*Note European::, for language-specific quotation mark insertion.) -- User Option: TeX-close-quote String inserted by typing `"' to close a quotation. (*Note European::, for language-specific quotation mark insertion.) -- User Option: TeX-quote-after-quote Determines the behavior of `"'. If it is non-nil, typing `"' will insert a literal double quote. The respective values of `TeX-open-quote' and `TeX-close-quote' will be inserted after typing `"' once again. The `babel' package provides special support for the requirements of typesetting quotation marks in many different languages. If you use this package, either directly or by loading a language-specific style file, you should also use the special commands for quote insertion instead of the standard quotes shown above. AUCTeX is able to recognize several of these languages and will change quote insertion accordingly. *Note European::, for details about this feature and how to control it. In case you are using the `csquotes' package, you should customize `LaTeX-csquotes-open-quote', `LaTeX-csquotes-close-quote' and `LaTeX-csquotes-quote-after-quote'. The quotation characters will only be used if both variables--`LaTeX-csquotes-open-quote' and `LaTeX-csquotes-close-quote'--are non-empty strings. But then the `csquotes'-related values will take precedence over the language-specific ones. Dollar Signs ------------ In AUCTeX, dollar signs should match like they do in TeX. This has been partially implemented, we assume dollar signs always match within a paragraph. The first `$' you insert in a paragraph will do nothing special. The second `$' will match the first. This will be indicated by moving the cursor temporarily over the first dollar sign. -- Command: TeX-insert-dollar ARG (`$') Insert dollar sign. Show matching dollar sign if this dollar sign end the TeX math mode. Ensure double dollar signs match up correctly by inserting extra dollar signs when needed if `TeX-math-close-double-dollar' is non-nil. With optional ARG, insert that many dollar signs. -- User Option: TeX-math-close-double-dollar Control the insertion of double dollar signs for delimiting display math. (Note that you should not use double dollar signs in LaTeX because this practice can lead to wrong spacing in typeset documents.) If the variable is non-nil and you enter a dollar sign that matches a double dollar sign `$$' AUCTeX will automatically insert two dollar signs. Braces ------ To avoid unbalanced braces, it is useful to insert them pairwise. You can do this by typing `C-c {'. -- Command: TeX-insert-braces (`C-c {') Make a pair of braces and position the cursor to type inside of them. If there is an active region, put braces around it and leave point after the closing brace.  File: auctex.info, Node: Font Specifiers, Next: Sectioning, Prev: Quotes, Up: Editing 2.2 Inserting Font Specifiers ============================= Perhaps the most used keyboard commands of AUCTeX are the short-cuts available for easy insertion of font changing macros. If you give an argument (that is, type `C-u') to the font command, the innermost font will be replaced, i.e. the font in the TeX group around point will be changed. The following table shows the available commands, with `-!-' indicating the position where the text will be inserted. `C-c C-f C-b' Insert bold face `\textbf{-!-}' text. `C-c C-f C-i' Insert italics `\textit{-!-}' text. `C-c C-f C-e' Insert emphasized `\emph{-!-}' text. `C-c C-f C-s' Insert slanted `\textsl{-!-}' text. `C-c C-f C-r' Insert roman \textrm{-!-} text. `C-c C-f C-f' Insert sans serif `\textsf{-!-}' text. `C-c C-f C-t' Insert typewriter `\texttt{-!-}' text. `C-c C-f C-c' Insert SMALL CAPS `\textsc{-!-}' text. `C-c C-f C-d' Delete the innermost font specification containing point. -- Command: TeX-font replace what (`C-c C-f') Insert template for font change command. If REPLACE is not nil, replace current font. WHAT determines the font to use, as specified by `TeX-font-list'. -- User Option: TeX-font-list List of fonts used by `TeX-font'. Each entry is a list with three elements. The first element is the key to activate the font. The second element is the string to insert before point, and the third element is the string to insert after point. An optional fourth element means always replace if not nil. -- User Option: LaTeX-font-list List of fonts used by `TeX-font' in LaTeX mode. It has the same structure as `TeX-font-list'.  File: auctex.info, Node: Sectioning, Next: Environments, Prev: Font Specifiers, Up: Editing 2.3 Inserting chapters, sections, etc. ====================================== Insertion of sectioning macros, that is `\chapter', `\section', `\subsection', etc. and accompanying `\label''s may be eased by using `C-c C-s'. This command is highly customizable, the following describes the default behavior. When invoking you will be asked for a section macro to insert. An appropriate default is automatically selected by AUCTeX, that is either: at the top of the document; the top level sectioning for that document style, and any other place: The same as the last occurring sectioning command. Next, you will be asked for the actual name of that section, and last you will be asked for a label to be associated with that section. The label will be prefixed by the value specified in `LaTeX-section-hook'. -- Command: LaTeX-section ARG (`C-c C-s') Insert a sectioning command. Determine the type of section to be inserted, by the argument ARG. * If ARG is nil or missing, use the current level. * If ARG is a list (selected by C-u), go downward one level. * If ARG is negative, go up that many levels. * If ARG is positive or zero, use absolute level: + 0 : part + 1 : chapter + 2 : section + 3 : subsection + 4 : subsubsection + 5 : paragraph + 6 : subparagraph The following variables can be set to customize the function. `LaTeX-section-hook' Hooks to be run when inserting a section. `LaTeX-section-label' Prefix to all section references. The precise behavior of `LaTeX-section' is defined by the contents of `LaTeX-section-hook'. -- User Option: LaTeX-section-hook List of hooks to run when a new section is inserted. The following variables are set before the hooks are run LEVEL Numeric section level, default set by prefix arg to `LaTeX-section'. NAME Name of the sectioning command, derived from LEVEL. TITLE The title of the section, default to an empty string. TOC Entry for the table of contents list, default nil. DONE-MARK Position of point afterwards, default nil meaning after the inserted text. A number of hooks are already defined. Most likely, you will be able to get the desired functionality by choosing from these hooks. `LaTeX-section-heading' Query the user about the name of the sectioning command. Modifies LEVEL and NAME. `LaTeX-section-title' Query the user about the title of the section. Modifies TITLE. `LaTeX-section-toc' Query the user for the toc entry. Modifies TOC. `LaTeX-section-section' Insert LaTeX section command according to NAME, TITLE, and TOC. If TOC is nil, no toc entry is inserted. If TOC or TITLE are empty strings, DONE-MARK will be placed at the point they should be inserted. `LaTeX-section-label' Insert a label after the section command. Controlled by the variable `LaTeX-section-label'. To get a full featured `LaTeX-section' command, insert (setq LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title LaTeX-section-toc LaTeX-section-section LaTeX-section-label)) in your `.emacs' file. The behavior of `LaTeX-section-label' is determined by the variable `LaTeX-section-label'. -- User Option: LaTeX-section-label Default prefix when asking for a label. If it is a string, it is used unchanged for all kinds of sections. If it is nil, no label is inserted. If it is a list, the list is searched for a member whose car is equal to the name of the sectioning command being inserted. The cdr is then used as the prefix. If the name is not found, or if the cdr is nil, no label is inserted. By default, chapters have a prefix of `cha:' while sections and subsections have a prefix of `sec:'. Labels are not automatically inserted for other types of sections.  File: auctex.info, Node: Environments, Next: Mathematics, Prev: Sectioning, Up: Editing 2.4 Inserting Environment Templates =================================== A large apparatus is available that supports insertions of environments, that is `\begin{}' -- `\end{}' pairs. AUCTeX is aware of most of the actual environments available in a specific document. This is achieved by examining your `\documentclass' command, and consulting a precompiled list of environments available in a large number of styles. You insert an environment with `C-c C-e', and select an environment type. Depending on the environment, AUCTeX may ask more questions about the optional parts of the selected environment type. With `C-u C-c C-e' you will change the current environment. -- Command: LaTeX-environment ARG (`C-c C-e') AUCTeX will prompt you for an environment to insert. At this prompt, you may press or to complete a partially written name, and/or to get a list of available environments. After selection of a specific environment AUCTeX may prompt you for further specifications. If the optional argument ARG is not-nil (i.e. you have given a prefix argument), the current environment is modified and no new environment is inserted. As a default selection, AUCTeX will suggest the environment last inserted or, as the first choice the value of the variable `LaTeX-default-environment'. -- User Option: LaTeX-default-environment Default environment to insert when invoking `LaTeX-environment' first time. If the document is empty, or the cursor is placed at the top of the document, AUCTeX will default to insert a `document' environment. Most of these are described further in the following sections, and you may easily specify more. *Note Customizing Environments::. * Menu: * Equations:: Equations * Floats:: Floats * Itemize-like:: Itemize-like Environments * Tabular-like:: Tabular-like Environments * Customizing Environments:: Customizing Environments You can close the current environment with `C-c ]', but we suggest that you use `C-c C-e' to insert complete environments instead. -- Command: LaTeX-close-environment (`C-c ]') Insert an `\end' that matches the current environment.  File: auctex.info, Node: Equations, Next: Floats, Up: Environments 2.4.1 Equations --------------- When inserting equation-like environments, the `\label' will have a default prefix, which is controlled by the following variables: -- User Option: LaTeX-equation-label Prefix to use for `equation' labels. -- User Option: LaTeX-eqnarray-label Prefix to use for `eqnarray' labels. -- User Option: LaTeX-amsmath-label Prefix to use for amsmath equation labels. Amsmath equations include `align', `alignat', `xalignat', `aligned', `flalign' and `gather'.  File: auctex.info, Node: Floats, Next: Itemize-like, Prev: Equations, Up: Environments 2.4.2 Floats ------------ Figures and tables (i.e., floats) may also be inserted using AUCTeX. After choosing either `figure' or `table' in the environment list described above, you will be prompted for a number of additional things. FLOAT POSITION This is the optional argument of float environments that controls how they are placed in the final document. In LaTeX this is a sequence of the letters `htbp' as described in the LaTeX manual. The value will default to the value of `LaTeX-float'. CAPTION This is the caption of the float. The default is to insert the caption at the bottom of the float. You can specify floats where the caption should be placed at the top with `LaTeX-top-caption-list'. LABEL The label of this float. The label will have a default prefix, which is controlled by the variables `LaTeX-figure-label' and `LaTeX-table-label'. Moreover, you will be asked if you want the contents of the float environment to be horizontally centered. Upon a positive answer a `\centering' macro will be inserted at the beginning of the float environment. -- User Option: LaTeX-float Default placement for floats. -- User Option: LaTeX-figure-label Prefix to use for figure labels. -- User Option: LaTeX-table-label Prefix to use for table labels. -- User Option: LaTeX-top-caption-list List of float environments with top caption.  File: auctex.info, Node: Itemize-like, Next: Tabular-like, Prev: Floats, Up: Environments 2.4.3 Itemize-like Environments ------------------------------- In an itemize-like environment, nodes (i.e., `\item's) may be inserted using `C-c '. -- Command: LaTeX-insert-item (`C-c ') Close the current item, move to the next line and insert an appropriate `\item' for the current environment. That is, `itemize' and `enumerate' will have `\item ' inserted, while `description' will have `\item[]' inserted.  File: auctex.info, Node: Tabular-like, Next: Customizing Environments, Prev: Itemize-like, Up: Environments 2.4.4 Tabular-like Environments ------------------------------- When inserting Tabular-like environments, that is, `tabular' `array' etc., you will be prompted for a template for that environment. Related variables: -- User Option: LaTeX-default-format Default format string for array and tabular environments. -- User Option: LaTeX-default-position Default position string for array and tabular environments. If nil, act like the empty string is given, but don't prompt for a position.  File: auctex.info, Node: Customizing Environments, Prev: Tabular-like, Up: Environments 2.4.5 Customizing Environments ------------------------------ *Note Adding Environments::, for how to customize the list of known environments.  File: auctex.info, Node: Mathematics, Next: Completion, Prev: Environments, Up: Editing 2.5 Entering Mathematics ======================== TeX is written by a mathematician, and has always contained good support for formatting mathematical text. AUCTeX supports this tradition, by offering a special minor mode for entering text with many mathematical symbols. You can enter this mode by typing `C-c ~'. -- Command: LaTeX-math-mode (`C-c ~') Toggle LaTeX Math mode. This is a minor mode rebinding the key `LaTeX-math-abbrev-prefix' to allow easy typing of mathematical symbols. ``' will read a character from the keyboard, and insert the symbol as specified in `LaTeX-math-default' and `LaTeX-math-list'. If given a prefix argument, the symbol will be surrounded by dollar signs. You can use another prefix key (instead of ``') by setting the variable `LaTeX-math-abbrev-prefix'. To enable LaTeX Math mode by default, add the following in your `.emacs' file: (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) -- User Option: LaTeX-math-abbrev-prefix A string containing the prefix of `LaTeX-math-mode' commands; This value defaults to ``'. The string has to be a key or key sequence in a format understood by the `kbd' macro. This corresponds to the syntax usually used in the manuals for Emacs Emacs Lisp. The variable `LaTeX-math-list' allows you to add your own mappings. -- User Option: LaTeX-math-list A list containing user-defined keys and commands to be used in LaTeX Math mode. Each entry should be a list of two to four elements. First, the key to be used after `LaTeX-math-abbrev-prefix' for macro insertion. If it is nil, the symbol has no associated keystroke (it is available in the menu, though). Second, a string representing the name of the macro (without a leading backslash.) Third, a string representing the name of a submenu the command should be added to. Use a list of strings in case of nested menus. Fourth, the position of a Unicode character to be displayed in the menu alongside the macro name. This is an integer value. -- User Option: LaTeX-math-menu-unicode Whether the LaTeX menu should try using Unicode for effect. Your Emacs built must be able to display include Unicode characters in menus for this feature. AUCTeX's reference card `tex-ref.tex' includes a list of all math mode commands. AUCTeX can help you write subscripts and superscripts in math constructs by automatically inserting a pair of braces after typing <_> or <^> respectively and putting point between the braces. In order to enable this feature, set the variable `TeX-electric-sub-and-superscript' to a non-nil value. -- User Option: TeX-electric-sub-and-superscript If non-nil, insert braces after typing <^> and <_> in math mode.  File: auctex.info, Node: Completion, Next: Marking, Prev: Mathematics, Up: Editing 2.6 Completion ============== Emacs lisp programmers probably know the `lisp-complete-symbol' command, usually bound to `M-'. Users of the wonderful ispell mode know and love the `ispell-complete-word' command from that package. Similarly, AUCTeX has a `TeX-complete-symbol' command, by default bound to `M-' which is equivalent to `M-C-i'. Using `TeX-complete-symbol' makes it easier to type and remember the names of long LaTeX macros. In order to use `TeX-complete-symbol', you should write a backslash and the start of the macro. Typing `M-' will now complete as much of the macro, as it unambiguously can. For example, if you type ``\renewc'' and then `M-', it will expand to ``\renewcommand''. -- Command: TeX-complete-symbol (`M-') Complete TeX symbol before point. A more direct way to insert a macro is with `TeX-insert-macro', bound to `C-c C-m' which is equivalent to `C-c '. It has the advantage over completion that it knows about the argument of most standard LaTeX macros, and will prompt for them. It also knows about the type of the arguments, so it will for example give completion for the argument to `\include'. Some examples are listed below. -- Command: TeX-insert-macro (`C-c C-m' or `C-c ') Prompt (with completion) for the name of a TeX macro, and if AUCTeX knows the macro, prompt for each argument. As a default selection, AUCTeX will suggest the macro last inserted or, as the first choice the value of the variable `TeX-default-macro'. -- User Option: TeX-insert-macro-default-style Specifies whether `TeX-insert-macro' will ask for all optional arguments. If set to the symbol `show-optional-args', `TeX-insert-macro' asks for optional arguments of TeX macros. If set to `mandatory-args-only', `TeX-insert-macro' asks only for mandatory arguments. When `TeX-insert-macro' is called with prefix argument (`C-u'), it's the other way round. Note that for some macros, there are special mechanisms, e.g. `LaTeX-includegraphics-options-alist'. -- User Option: TeX-default-macro Default macro to insert when invoking `TeX-insert-macro' first time. A faster alternative is to bind the function `TeX-electric-macro' to `\'. This can be done by setting the variable `TeX-electric-escape' -- User Option: TeX-electric-escape If this is non-nil when AUCTeX is loaded, the TeX escape character `\' will be bound to `TeX-electric-macro' The difference between `TeX-insert-macro' and `TeX-electric-macro' is that space will complete and exit from the minibuffer in `TeX-electric-macro'. Use if you merely want to complete. -- Command: TeX-electric-macro Prompt (with completion) for the name of a TeX macro, and if AUCTeX knows the macro, prompt for each argument. Space will complete and exit. By default AUCTeX will put an empty set braces `{}' after a macro with no arguments to stop it from eating the next whitespace. This can be stopped by entering `LaTeX-math-mode', *note Mathematics::, or by setting `TeX-insert-braces' to nil. -- User Option: TeX-insert-braces If non-nil, append a empty pair of braces after inserting a macro. Completions work because AUCTeX can analyze TeX files, and store symbols in Emacs Lisp files for later retrieval. *Note Automatic::, for more information. AUCTeX will also make completion for many macro arguments, for example existing labels when you enter a `\ref' macro with `TeX-insert-macro' or `TeX-electric-macro', and BibTeX entries when you enter a `\cite' macro. For this kind of completion to work, parsing must be enabled as described in *note Parsing Files::. For `\cite' you must also make sure that the BibTeX files have been saved at least once after you enabled automatic parsing on save, and that the basename of the BibTeX file does not conflict with the basename of one of TeX files.  File: auctex.info, Node: Marking, Next: Commenting, Prev: Completion, Up: Editing 2.7 Marking Environments, Sections, or Texinfo Nodes ==================================================== You can mark the current environment by typing `C-c .', or the current section by typing `C-c *'. In Texinfo documents you can type `M-C-h' to mark the current node. When the region is set, the point is moved to its beginning and the mark to its end. * Menu: * Marking (LaTeX):: LaTeX Commands for Marking Environments and Sections * Marking (Texinfo):: Texinfo Commands for Marking Environments, Sections, and Nodes  File: auctex.info, Node: Marking (LaTeX), Next: Marking (Texinfo), Up: Marking 2.7.1 LaTeX Commands for Marking Environments and Sections ---------------------------------------------------------- -- Command: LaTeX-mark-section (`C-c *') Set mark at end of current logical section, and point at top. With a non-nil prefix argument, mark only the region from the current section start to the next sectioning command. Thereby subsections are not being marked. Otherwise, any included subsections are also marked along with current section. -- Command: LaTeX-mark-environment (`C-c .') Set mark to the end of the current environment and point to the matching beginning. If a prefix argument is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments.  File: auctex.info, Node: Marking (Texinfo), Prev: Marking (LaTeX), Up: Marking 2.7.2 Texinfo Commands for Marking Environments and Sections ------------------------------------------------------------ -- Command: Texinfo-mark-section (`C-c *') Mark the current section, with inclusion of any containing node. The current section is detected as starting by any of the structuring commands matched by the regular expression in the variable `outline-regexp' which in turn is a regular expression matching any element of the variable `texinfo-section-list'. With a non-nil prefix argument, mark only the region from the current section start to the next sectioning command. Thereby subsections are not being marked. Otherwise, any included subsections are also marked Note that when the current section is starting immediately after a node command, then the node command is also marked as part of the section. -- Command: Texinfo-mark-environment (`C-c .') Set mark to the end of the current environment and point to the matching beginning. If a prefix argument is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments. -- Command: Texinfo-mark-node (`M-C-h') Mark the current node. This is the node in which point is located. It is starting at the previous occurrence of the keyword `@node' and ending at next occurrence of the keywords `@node' or `@bye'.  File: auctex.info, Node: Commenting, Next: Indenting, Prev: Marking, Up: Editing 2.8 Commenting ============== It is often necessary to comment out temporarily a region of TeX or LaTeX code. This can be done with the commands `C-c ;' and `C-c %'. `C-c ;' will comment out all lines in the current region, while `C-c %' will comment out the current paragraph. Type `C-c ;' again to uncomment all lines of a commented region, or `C-c %' again to uncomment all comment lines around point. These commands will insert or remove a single `%' respectively. -- Command: TeX-comment-or-uncomment-region (`C-c ;') Add or remove `%' from the beginning of each line in the current region. Uncommenting works only if the region encloses solely commented lines. If AUCTeX should not try to guess if the region should be commented or uncommented the commands `TeX-comment-region' and `TeX-uncomment-region' can be used to explicitly comment or uncomment the region in concern. -- Command: TeX-comment-or-uncomment-paragraph (`C-c %') Add or remove `%' from the beginning of each line in the current paragraph. When removing `%' characters the paragraph is considered to consist of all preceding and succeeding lines starting with a `%', until the first non-comment line.  File: auctex.info, Node: Indenting, Next: Filling, Prev: Commenting, Up: Editing 2.9 Indenting ============= Indentation means the addition of whitespace at the beginning of lines to reflect special syntactical constructs. This makes it easier to see the structure of the document, and to catch errors such as a missing closing brace. Thus, the indentation is done for precisely the same reasons that you would indent ordinary computer programs. Indentation is done by LaTeX environments and by TeX groups, that is the body of an environment is indented by the value of `LaTeX-indent-level' (default 2). Also, items of an `itemize-like' environment are indented by the value of `LaTeX-item-indent', default -2. (Items are identified with the help of `LaTeX-item-regexp'.) If more environments are nested, they are indented `accumulated' just like most programming languages usually are seen indented in nested constructs. You can explicitely indent single lines, usually by pressing , or marked regions by calling `indent-region' on it. If you have `auto-fill-mode' enabled and a line is broken while you type it, Emacs automatically cares about the indentation in the following line. If you want to have a similar behavior upon typing , you can customize the variable `TeX-newline-function' and change the default of `newline' which does no indentation to `newline-and-indent' which indents the new line or `reindent-then-newline-and-indent' which indents both the current and the new line. There are certain LaTeX environments which should be indented in a special way, like `tabular' or `verbatim'. Those environments may be specified in the variable `LaTeX-indent-environment-list' together with their special indentation functions. Taking the `verbatim' environment as an example you can see that `current-indentation' is used as the indentation function. This will stop AUCTeX from doing any indentation in the environment if you hit for example. There are environments in `LaTeX-indent-environment-list' which do not bring a special indentation function with them. This is due to the fact that first the respective functions are not implemented yet and second that filling will be disabled for the specified environments. This shall prevent the source code from being messed up by accidently filling those environments with the standard filling routine. If you think that providing special filling routines for such environments would be an appropriate and challenging task for you, you are invited to contribute. (*Note Filling::, for further information about the filling functionality) The check for the indentation function may be enabled or disabled by customizing the variable `LaTeX-indent-environment-check'. As a side note with regard to formatting special environments: Newer Emacsen include `align.el' and therefore provide some support for formatting `tabular' and `tabbing' environments with the function `align-current' which will nicely align columns in the source code. AUCTeX is able to format commented parts of your code just as any other part. This means LaTeX environments and TeX groups in comments will be indented syntactically correct if the variable `LaTeX-syntactic-comments' is set to t. If you disable it, comments will be filled like normal text and no syntactic indentation will be done. Following you will find a list of most commands and variables related to indenting with a small summary in each case: `' `LaTeX-indent-line' will indent the current line. `' `newline-and-indent' inserts a new line (much like ) and moves the cursor to an appropriate position by the left margin. Most keyboards nowadays lack a linefeed key and `C-j' may be tedious to type. Therefore you can customize AUCTeX to perform indentation upon typing as well. The respective option is called `TeX-newline-function'. `C-j' Alias for -- User Option: LaTeX-indent-environment-list List of environments with special indentation. The second element in each entry is the function to calculate the indentation level in columns. The filling code currently cannot handle tabular-like environments which will be completely messed-up if you try to format them. This is why most of these environments are included in this customization option without a special indentation function. This will prevent that they get filled. -- User Option: LaTeX-indent-level Number of spaces to add to the indentation for each `\begin' not matched by a `\end'. -- User Option: LaTeX-item-indent Number of spaces to add to the indentation for `\item''s in list environments. -- User Option: TeX-brace-indent-level Number of spaces to add to the indentation for each `{' not matched by a `}'. -- User Option: LaTeX-syntactic-comments If non-nil comments will be filled and indented according to LaTeX syntax. Otherwise they will be filled like normal text. -- User Option: TeX-newline-function Used to specify the function which is called when is pressed. This will normally be `newline' which simply inserts a new line. In case you want to have AUCTeX do indentation as well when you press , use the built-in functions `newline-and-indent' or `reindent-then-newline-and-indent'. The former inserts a new line and indents the following line, i.e. it moves the cursor to the right position and therefore acts as if you pressed . The latter function additionally indents the current line. If you choose `Other', you can specify your own fancy function to be called when is pressed.  File: auctex.info, Node: Filling, Prev: Indenting, Up: Editing 2.10 Filling ============ Filling deals with the insertion of line breaks to prevent lines from becoming wider than what is specified in `fill-column'. The linebreaks will be inserted automatically if `auto-fill-mode' is enabled. In this case the source is not only filled but also indented automatically as you write it. `auto-fill-mode' can be enabled for AUCTeX by calling `turn-on-auto-fill' in one of the hooks AUCTeX is running. *Note Modes and Hooks::. As an example, if you want to enable `auto-fill-mode' in `LaTeX-mode', put the following into your init file: (add-hook 'LaTeX-mode-hook 'turn-on-auto-fill) You can manually fill explicitely marked regions, paragraphs, environments, complete sections, or the whole buffer. (Note that manual filling in AUCTeX will indent the start of the region to be filled in contrast to many other Emacs modes.) There are some syntactical constructs which are handled specially with regard to filling. These are so-called code comments and paragraph commands. Code comments are comments preceded by code or text in the same line. Upon filling a region, code comments themselves will not get filled. Filling is done from the start of the region to the line with the code comment and continues after it. In order to prevent overfull lines in the source code, a linebreak will be inserted before the last non-comment word by default. This can be changed by customizing `LaTeX-fill-break-before-code-comments'. If you have overfull lines with code comments you can fill those explicitely by calling `LaTeX-fill-paragraph' or pressing `M-q' with the cursor positioned on them. This will add linebreaks in the comment and indent subsequent comment lines to the column of the comment in the first line of the code comment. In this special case `M-q' only acts on the current line and not on the whole paragraph. Lines with `\par' are treated similarly to code comments, i.e. `\par' will be treated as paragraph boundary which should not be followed by other code or text. But it is not treated as a real paragraph boundary like an empty line where filling a paragraph would stop. Paragraph commands like `\section' or `\noindent' (the list of commands is defined by `LaTeX-paragraph-commands') are often to be placed in their own line(s). This means they should not be consecuted with any preceding or following adjacent lines of text. AUCTeX will prevent this from happening if you do not put any text except another macro after the end of the last brace of the respective macro. If there is other text after the macro, AUCTeX regards this as a sign that the macro is part of the following paragraph. Here are some examples: \begin{quote} text text text text \begin{quote}\label{foo} text text text text If you press `M-q' on the first line in both examples, nothing will change. But if you write \begin{quote} text text text text text and press `M-q', you will get \begin{quote} text text text text text Besides code comments and paragraph commands, another speciality of filling in AUCTeX involves commented lines. You should be aware that these comments are treated as islands in the rest of the LaTeX code if syntactic filling is enabled. This means, for example, if you try to fill an environment with `LaTeX-fill-environment' and have the cursor placed on a commented line which does not have a surrounding environment inside the comment, AUCTeX will report an error. The relevant commands and variables with regard to filling are: `C-c C-q C-p' `LaTeX-fill-paragraph' will fill and indent the current paragraph. `M-q' Alias for `C-c C-q C-p' `C-c C-q C-e' `LaTeX-fill-environment' will fill and indent the current environment. This may e.g. be the `document' environment, in which case the entire document will be formatted. `C-c C-q C-s' `LaTeX-fill-section' will fill and indent the current logical sectional unit. `C-c C-q C-r' `LaTeX-fill-region' will fill and indent the current region. -- User Option: LaTeX-fill-break-at-separators List of separators before or after which respectively linebreaks will be inserted if they do not fit into one line. The separators can be curly braces, brackets, switches for inline math (`$', `\(', `\)') and switches for display math (`\[', `\]'). Such formatting can be useful to make macros and math more visible or to prevent overfull lines in the LaTeX source in case a package for displaying formatted TeX output inside the Emacs buffer, like preview-latex, is used. -- User Option: LaTeX-fill-break-before-code-comments Code comments are comments preceded by some other text in the same line. When a paragraph containing such a comment is to be filled, the comment start will be seen as a border after which no line breaks will be inserted in the same line. If the option `LaTeX-fill-break-before-code-comments' is enabled (which is the default) and the comment does not fit into the line, a line break will be inserted before the last non-comment word to minimize the chance that the line becomes overfull.  File: auctex.info, Node: Display, Next: Processing, Prev: Editing, Up: Top 3 Controlling Screen Display **************************** It is often desirable to get visual help of what markup code in a text actually does whithout having to decipher it explicitely. For this purpose Emacs and AUCTeX provide font locking (also known as syntax highlighting) which visually sets off markup code like macros or environments by using different colors or fonts. For example text to be typeset in italics can be displayed with an italic font in the editor as well, or labels and references get their own distinct color. While font locking helps you grasp the purpose of markup code and separate markup from content, the markup code can still be distracting. AUCTeX lets you hide those parts and show them again at request with its built-in support for hiding macros and environments which we call folding here. Besides folding of macros and environments, AUCTeX provides support for Emacs' outline mode which lets you narrow the buffer content to certain sections of your text by hiding the parts not belonging to these sections. * Menu: * Font Locking:: Font Locking * Folding:: Folding Macros and Environments * Outline:: Outlining the Document  File: auctex.info, Node: Font Locking, Next: Folding, Up: Display 3.1 Font Locking ================ Font locking is supposed to improve readability of the source code by highlighting certain keywords with different colors or fonts. It thereby lets you recognize the function of markup code to a certain extent without having to read the markup command. For general information on controlling font locking with Emacs' Font Lock mode, see *note Font Lock Mode: (emacs)Font Lock. -- User Option: TeX-install-font-lock Once font locking is enabled globally or for the major modes provided by AUCTeX, the font locking patterns and functionality of font-latex are activated by default. You can switch to a different font locking scheme or disable font locking in AUCTeX by customizing the variable `TeX-install-font-lock'. Besides font-latex AUCTeX ships with a scheme which is derived from Emacs' default LaTeX mode and activated by choosing `tex-font-setup'. Be aware that this scheme is not coupled with AUCTeX's style system and not the focus of development. Therefore and due to font-latex being much more feature-rich the following explanations will only cover font-latex. In case you want to hook in your own fontification scheme, you can choose `other' and insert the name of the function which sets up your font locking patterns. If you want to disable fontification in AUCTeX completely, choose `ignore'. font-latex provides many options for customization which are accessible with `M-x customize-group RET font-latex RET'. For this description the various options are explained in conceptional groups. * Menu: * Fontification of macros:: Fontification of macros * Fontification of quotes:: Fontification of quotes * Fontification of math:: Fontification of math constructs * Verbatim content:: Verbatim macros and environments * Faces:: Faces used by font-latex * Known problems:: Known fontification problems  File: auctex.info, Node: Fontification of macros, Next: Fontification of quotes, Up: Font Locking 3.1.1 Fontification of macros ----------------------------- Highlighting of macros can be customized by adapting keyword lists which can be found in the customization group `font-latex-keywords'. Three types of macros can be handled differently with respect to fontification: 1. Commands of the form `\foo[bar]{baz}' which consist of the macro itself, optional arguments in square brackets and mandatory arguments in curly braces. For the command itself the face `font-lock-keyword-face' will be used and for the optional arguments the face `font-lock-variable-name-face'. The face applied to the mandatory argument depends on the macro class represented by the respective built-in variables. 2. Declaration macros of the form `{\foo text}' which consist of the macro which may be enclosed in a TeX group together with text to be affected by the macro. In case a TeX group is present, the macro will get the face `font-lock-keyword-face' and the text will get the face configured for the respective macro class. If no TeX group is present, the latter face will be applied to the macro itself. 3. Simple macros of the form `\foo' which do not have any arguments or groupings. The respective face will be applied to the macro itself. Customization variables for `\foo[bar]{baz}' type macros allow both the macro name and the sequence of arguments to be specified. The latter is done with a string which can contain the characters `*' indicating the existence of a starred variant for the macro, `[' for optional arguments in brackets, `{' for mandatory arguments in braces, `\' for mandatory arguments consisting of a single macro and `|' as a prefix indicating that two alternatives are following. For example the specifier for `\documentclass' would be `[{' because the macro has one optional followed by one mandatory argument. The specifier for `\newcommand' would be `*|{\[[{' because there is a starred variant, the mandatory argument following the macro name can be a macro or a TeX group which can be followed by two optional arguments and the last token is a mandatory argument in braces. Customization variables for the `{\foo text}' and `\foo' types are simple lists of strings where each entry is a macro name (without the leading backslash). General macro classes --------------------- font-latex provides keyword lists for different macro classes which are described in the following table: `font-latex-match-function-keywords' Keywords for macros defining or related to functions, like `\newcommand'. Type: `\macro[...]{...}' Face: `font-lock-function-name-face' `font-latex-match-reference-keywords' Keywords for macros defining or related to references, like `\ref'. Type: `\macro[...]{...}' Face: `font-lock-constant-face' `font-latex-match-textual-keywords' Keywords for macros specifying textual content, like `\caption'. Type: `\macro[...]{...}' Face: `font-lock-type-face' `font-latex-match-variable-keywords' Keywords for macros defining or related to variables, like `\setlength'. Type: `\macro[...]{...}' Face: `font-lock-variable-name-face' `font-latex-match-warning-keywords' Keywords for important macros, e.g. affecting line or page break, like `\clearpage'. Type: `\macro' Face: `font-latex-warning-face' Sectioning commands ------------------- Sectioning commands are macros like `\chapter' or `\section'. For these commands there are two fontification schemes which may be selected by customizing the variable `font-latex-fontify-sectioning'. -- User Option: font-latex-fontify-sectioning Per default sectioning commands will be shown in a larger, proportional font, which corresponds to a number for this variable. The font size varies with the sectioning level, e.g. `\part' (`font-latex-sectioning-0-face') has a larger font than `\paragraph' (`font-latex-sectioning-5-face'). Typically, values from 1.05 to 1.3 for `font-latex-fontify-sectioning' give best results, depending on your font setup. If you rather like to use the base font and a different color, set the variable to the symbol `color'. In this case the face `font-lock-type-face' will be used to fontify the argument of the sectioning commands. You can make font-latex aware of your own sectioning commands be adding them to the keyword lists: `font-latex-match-sectioning-0-keywords' (`font-latex-sectioning-0-face') ... `font-latex-match-sectioning-5-keywords' (`font-latex-sectioning-5-face'). Related to sectioning there is special support for slide titles which may be fontified with the face `font-latex-slide-title-face'. You can add macros which should appear in this face by customizing the variable `font-latex-match-slide-title-keywords'. Commands for changing fonts --------------------------- LaTeX provides various macros for changing fonts or font attributes. For example, you can select an italic font with `\textit{...}' or bold with `\textbf{...}'. An alternative way to specify these fonts is to use special macros in TeX groups, like `{\itshape ...}' for italics and `{\bfseries ...}' for bold. As mentioned above, we call the former variants commands and the latter declarations. Besides the macros for changing fonts provided by LaTeX there is an infinite number of other macros--either defined by yourself for logical markup or defined by macro packages--which affect the font in the typeset text. While LaTeX's built-in macros and macros of packages known by AUCTeX are already handled by font-latex, different keyword lists per type style and macro type are provided for entering your own macros which are listed in the table below. `font-latex-match-bold-command-keywords' Keywords for commands specifying a bold type style. Face: `font-latex-bold-face' `font-latex-match-italic-command-keywords' Keywords for commands specifying an italic font. Face: `font-latex-italic-face' `font-latex-match-math-command-keywords' Keywords for commands specifying a math font. Face: `font-latex-math-face' `font-latex-match-type-command-keywords' Keywords for commands specifying a typewriter font. Face: `font-lock-type-face' `font-latex-match-bold-declaration-keywords' Keywords for declarations specifying a bold type style. Face: `font-latex-bold-face' `font-latex-match-italic-declaration-keywords' Keywords for declarations specifying an italic font. Face: `font-latex-italic-face' `font-latex-match-type-declaration-keywords' Keywords for declarations specifying a typewriter font. Face: `font-latex-type-face' Deactivating defaults of built-in keyword classes ------------------------------------------------- font-latex ships with predefined lists of keywords for the classes described above. You can disable these defaults per class by customizing the variable `font-latex-deactivated-keyword-classes'. This is a list of strings for keyword classes to be deactivated. Valid entries are "warning", "variable", "reference", "function" , "sectioning-0", "sectioning-1", "sectioning-2", "sectioning-3", "sectioning-4", "sectioning-5", "textual", "bold-command", "italic-command", "math-command", "type-command", "bold-declaration", "italic-declaration", "type-declaration". You can also get rid of certain keywords only. For example if you want to remove highlighting of footnotes as references you can put the following stanza into your init file: (eval-after-load "font-latex" '(setq-default font-latex-match-reference-keywords-local (remove "footnote" font-latex-match-reference-keywords-local))) But note that this means fiddling with font-latex's internals and is not guaranteed to work in future versions of font-latex. User-defined keyword classes ---------------------------- In case the customization options explained above do not suffice for your needs, you can specify your own keyword classes by customizing the variable `font-latex-user-keyword-classes'. -- User Option: font-latex-user-keyword-classes Every keyword class consists of four parts, a name, a list of keywords, a face and a specifier for the type of macros to be highlighted. When adding new entries, you have to use unique values for the class names, i.e. they must not clash with names of the built-in keyword classes or other names given by you. Additionally the names must not contain spaces. The list of keywords defines which commands and declarations should be covered by the keyword class. A keyword can either be a simple command name omitting the leading backslash or a list consisting of the command name and a string specifying the sequence of arguments for the command. The face argument can either be an existing face or font specifications made by you. (The latter option is not available on XEmacs.) There are three alternatives for the type of keywords--"Command with arguments", "Declaration inside TeX group" and "Command without arguments"--which correspond with the macro types explained above.  File: auctex.info, Node: Fontification of quotes, Next: Fontification of math, Prev: Fontification of macros, Up: Font Locking 3.1.2 Fontification of quotes ----------------------------- Text in quotation marks is displayed with the face `font-latex-string-face'. Besides the various forms of opening and closing double and single quotation marks, so-called guillemets (<<, >>) can be used for quoting. Because there are two styles of using them--French style: << text >>; German style: >>text<<--you can customize the variable `font-latex-quotes' to tell font-latex which type you are using if the correct value cannot be derived from document properties. -- User Option: font-latex-quotes The default value of `font-latex-quotes' is `auto' which means that font-latex will try to derive the correct type of quotation mark matching from document properties like the language option supplied to the babel LaTeX package. If the automatic detection fails for you and you mostly use one specific style you can set it to a specific language-dependent value as well. Set the value to `german' if you are using >>German quotes<< and to `french' if you are using << French quotes >>. font-latex will recognize the different ways these quotes can be given in your source code, i.e. (`"<', `">'), (`<<', `>>') and the respective 8-bit variants. If you set `font-latex-quotes' to nil, quoted content will not be fontified.  File: auctex.info, Node: Fontification of math, Next: Verbatim content, Prev: Fontification of quotes, Up: Font Locking 3.1.3 Fontification of mathematical constructs ---------------------------------------------- In LaTeX mathematics can be indicated by a variety of different methods: toggles (like dollar signs), macros and environments. Math constructs known by font-latex are displayed with the face `font-latex-math-face'. Support for dollar signs and shorthands like `\(...\)' or `\[...\]' is built-in and not customizable. Support for other math macros and environments can be adapted by customizing the variables `font-latex-match-math-command-keywords' and `font-latex-math-environments' respectively. In order to make math constructs more readable, font-latex displays subscript and superscript parts in a smaller font and raised or lowered respectively. This fontification feature can be controlled with the variables `font-latex-fontify-script' and `font-latex-script-display'. -- User Option: font-latex-fontify-script If non-nil, fontify subscript and superscript strings. Note that this feature is not available on XEmacs, for which it is disabled per default. In GNU Emacs raising and lowering is not enabled for versions 21.3 and before due to it working not properly. -- User Option: font-latex-script-display Display specification for subscript and superscript content. The car is used for subscript, the cdr is used for superscript. The feature is implemented using so-called display properties. For information on what exactly to specify for the values, see *note Other Display Specifications: (elisp)Other Display Specs.  File: auctex.info, Node: Verbatim content, Next: Faces, Prev: Fontification of math, Up: Font Locking 3.1.4 Verbatim macros and environments -------------------------------------- Usually it is not desirable to have content to be typeset verbatim highlighted according to LaTeX syntax. Therefore this content will be fontified uniformly with the face `font-latex-verbatim-face'. font-latex differentiates three different types of verbatim constructs for fontification. Macros with special characters like | as delimiters, macros with braces, and environments. Which macros and environments are recognized is controlled by the variables `LaTeX-verbatim-macros-with-delims', `LaTeX-verbatim-macros-with-braces', and `LaTeX-verbatim-environments' respectively.  File: auctex.info, Node: Faces, Next: Known problems, Prev: Verbatim content, Up: Font Locking 3.1.5 Faces used by font-latex ------------------------------ In case you want to change the colors and fonts used by font-latex please refer to the faces mentioned in the explanations above and use `M-x customize-face RET RET'. All faces defined by font-latex are accessible through a customization group by typing `M-x customize-group RET font-latex-highlighting-faces RET'.  File: auctex.info, Node: Known problems, Prev: Faces, Up: Font Locking 3.1.6 Known fontification problems ---------------------------------- In certain cases the fontification machinery fails to interpret buffer contents correctly. This can lead to color bleed, i.e. large parts of a buffer get fontified with an inappropriate face. A typical situation for this to happen is the use of a dollar sign (`$') in a verbatim macro or environment. If font-latex is not aware of the verbatim construct, it assumes the dollar sign to be a toggle for mathematics and fontifies the following buffer content with the respective face until it finds a closing dollar sign or till the end of the buffer. As a remedy you can make the verbatim construct known to font-latex, *note Verbatim content::. If this is not possible, you can insert a commented dollar sign (`%$') at the next suitable end of line as a quick workaround.  File: auctex.info, Node: Folding, Next: Outline, Prev: Font Locking, Up: Display 3.2 Folding Macros and Environments =================================== A popular complaint about markup languages like TeX and LaTeX is that there is too much clutter in the source text and that one cannot focus well on the content. There are macros where you are only interested in the content they are enclosing, like font specifiers where the content might already be fontified in a special way by font locking. Or macros the content of which you only want to see when actually editing it, like footnotes or citations. Similarly you might find certain environments or comments distracting when trying to concentrate on the body of your document. With AUCTeX's folding functionality you can collapse those items and replace them by a fixed string, the content of one of their arguments, or a mixture of both. If you want to make the original text visible again in order to view or edit it, move point sideways onto the placeholder (also called display string) or left-click with the mouse pointer on it. (The latter is currently only supported on Emacs.) The macro or environment will unfold automatically, stay open as long as point is inside of it and collapse again once you move point out of it. (Note that folding of environments currently does not work in every AUCTeX mode.) In order to use this feature, you have to activate `TeX-fold-mode' which will activate the auto-reveal feature and the necessary commands to hide and show macros and environments. You can activate the mode in a certain buffer by typing the command `M-x TeX-fold-mode RET' or using the keyboard shortcut `C-c C-o C-f'. If you want to use it every time you edit a LaTeX document, add it to a hook: (add-hook 'LaTeX-mode-hook (lambda () (TeX-fold-mode 1))) If it should be activated in all AUCTeX modes, use `TeX-mode-hook' instead of `LaTeX-mode-hook'. Once the mode is active there are several commands available to hide and show macros, environments and comments: -- Command: TeX-fold-buffer (`C-c C-o C-b') Hide all foldable items in the current buffer according to the setting of `TeX-fold-type-list'. If you want to have this done automatically every time you open a file, add it to a hook and make sure the function is called after font locking is set up for the buffer. The following code should accomplish this: (add-hook 'find-file-hook 'TeX-fold-buffer t) The command can be used any time to refresh the whole buffer and fold any new macros and environments which were inserted after the last invocation of the command. -- User Option: TeX-fold-type-list List of symbols determining the item classes to consider for folding. This can be macros, environments and comments. Per default only macros and environments are folded. -- User Option: TeX-fold-force-fontify In order for all folded content to get the right faces, the whole buffer has to be fontified before folding is carried out. `TeX-fold-buffer' therefore will force fontification of unfontified regions. As this will prolong the time folding takes, you can prevent forced fontification by customizing the variable `TeX-fold-force-fontify'. -- User Option: TeX-fold-preserve-comments By default items found in comments will be folded. If your comments often contain unfinished code this might lead to problems. Give this variable a non-nil value and foldable items in your comments will be left alone. -- Command: TeX-fold-region (`C-c C-o C-r') Hide all configured macros in the marked region. -- Command: TeX-fold-paragraph (`C-c C-o C-p') Hide all configured macros in the paragraph containing point. -- Command: TeX-fold-macro (`C-c C-o C-m') Hide the macro on which point currently is located. If the name of the macro is found in `TeX-fold-macro-spec-list', the respective display string will be shown instead. If it is not found, the name of the macro in sqare brackets or the default string for unspecified macros (`TeX-fold-unspec-macro-display-string') will be shown, depending on the value of the variable `TeX-fold-unspec-use-name'. -- Command: TeX-fold-env (`C-c C-o C-e') Hide the environment on which point currently is located. The behavior regarding the display string is analogous to `TeX-fold-macro' and determined by the variables `TeX-fold-env-spec-list' and `TeX-fold-unspec-env-display-string' respectively. -- Command: TeX-fold-math Hide the math macro on which point currently is located. If the name of the macro is found in `TeX-fold-math-spec-list', the respective display string will be shown instead. If it is not found, the name of the macro in sqare brackets or the default string for unspecified macros (`TeX-fold-unspec-macro-display-string') will be shown, depending on the value of the variable `TeX-fold-unspec-use-name'. -- Command: TeX-fold-comment (`C-c C-o C-c') Hide the comment point is located on. -- Command: TeX-fold-clearout-buffer (`C-c C-o b') Permanently unfold all macros and environments in the current buffer. -- Command: TeX-fold-clearout-region (`C-c C-o r') Permanently unfold all macros and environments in the marked region. -- Command: TeX-fold-clearout-paragraph (`C-c C-o p') Permanently unfold all macros and environments in the paragraph containing point. -- Command: TeX-fold-clearout-item (`C-c C-o i') Permanently show the macro or environment on which point currently is located. In contrast to temporarily opening the macro when point is moved sideways onto it, the macro will be permanently unfolded and will not collapse again once point is leaving it. -- Command: TeX-fold-dwim (`C-c C-o C-o') Hide or show items according to the current context. If there is folded content, unfold it. If there is a marked region, fold all configured content in this region. If there is no folded content but a macro or environment, fold it. In case you want to use a different prefix than `C-c C-o' for these commands you can customize the variable `TeX-fold-command-prefix'. (Note that this will not change the key binding for activating the mode.) The commands above will only take macros or environments into consideration which are specified in the variables `TeX-fold-macro-spec-list' or `TeX-fold-env-spec-list' respectively. -- User Option: TeX-fold-macro-spec-list List of replacement specifiers and macros to fold. The specifier can be a string, an integer or a function symbol. If you specify a string, it will be used as a display replacement for the whole macro. Numbers in braces, brackets, parens or angle brackets will be replaced by the respective macro argument. For example `{1}' will be replaced by the first mandatory argument of the macro. One can also define alternatives within the specifier which are used if an argument is not found. Alternatives are separated by `||'. They are most useful with optional arguments. As an example, the default specifier for `\item' is `[1]:||*' which means that if there is an optional argument, its value is shown followed by a colon. If there is no optional argument, only an asterisk is used as the display string. If you specify a number as the first element, the content of the respective mandatory argument of a LaTeX macro will be used as the placeholder. If the first element is a function symbol, the function will be called with all mandatory arguments of the macro and the result of the function call will be used as a replacement for the macro. The placeholder is made by copying the text from the buffer together with its properties, i.e. its face as well. If fontification has not happened when this is done (e.g. because of lazy font locking) the intended fontification will not show up. As a workaround you can leave Emacs idle a few seconds and wait for stealth font locking to finish before you fold the buffer. Or you just re-fold the buffer with `TeX-fold-buffer' when you notice a wrong fontification. -- User Option: TeX-fold-env-spec-list List of display strings or argument numbers and environments to fold. Argument numbers refer to the `\begin' statement. That means if you have e.g. `\begin{tabularx}{\linewidth}{XXX} ... \end{tabularx}' and specify 3 as the argument number, the resulting display string will be "XXX". -- User Option: TeX-fold-math-spec-list List of display strings and math macros to fold. The variables `TeX-fold-macro-spec-list', `TeX-fold-env-spec-list', and `TeX-fold-math-spec-list' apply to any AUCTeX mode. If you want to make settings which are only applied to LaTeX mode, you can use the mode-specific variables `LaTeX-fold-macro-spec-list', `LaTeX-fold-env-spec-list', and `LaTeX-fold-math-spec-list' -- User Option: TeX-fold-unspec-macro-display-string Default display string for macros which are not specified in `TeX-fold-macro-spec-list'. -- User Option: TeX-fold-unspec-env-display-string Default display string for environments which are not specified in `TeX-fold-env-spec-list'. -- User Option: TeX-fold-unspec-use-name If non-nil the name of the macro or environment surrounded by square brackets is used as display string, otherwise the defaults specified in `TeX-fold-unspec-macro-display-string' or `TeX-fold-unspec-env-display-string' respectively. When you hover with the mouse pointer over folded content, its original text will be shown in a tooltip or the echo area depending on Tooltip mode being activate. In order to avoid exorbitantly big tooltips and to cater for the limited space in the echo area the content will be cropped after a certain amount of characters defined by the variable `TeX-fold-help-echo-max-length'. -- User Option: TeX-fold-help-echo-max-length Maximum length of original text displayed in a tooltip or the echo area for folded content. Set it to zero in order to disable this feature.  File: auctex.info, Node: Outline, Prev: Folding, Up: Display 3.3 Outlining the Document ========================== AUCTeX supports the standard outline minor mode using LaTeX/ConTeXt sectioning commands as header lines. *Note Outline Mode: (emacs)Outline Mode. You can add your own headings by setting the variable `TeX-outline-extra'. -- Variable: TeX-outline-extra List of extra TeX outline levels. Each element is a list with two entries. The first entry is the regular expression matching a header, and the second is the level of the header. A `^' is automatically prepended to the regular expressions in the list, so they must match text at the beginning of the line. See `LaTeX-section-list' or `ConTeXt-INTERFACE-section-list' for existing header levels. The following example add `\item' and `\bibliography' headers, with `\bibliography' at the same outline level as `\section', and `\item' being below `\subparagraph'. (setq TeX-outline-extra '(("[ \t]*\\\\\\(bib\\)?item\\b" 7) ("\\\\bibliography\\b" 2))) You may want to check out the unbundled `out-xtra' package for even better outline support. It is available from your favorite emacs lisp archive.  File: auctex.info, Node: Processing, Next: Customization, Prev: Display, Up: Top 4 Starting Processors, Viewers and Other Programs ************************************************* The most powerful features of AUCTeX may be those allowing you to run TeX, LaTeX, ConTeXt and other external commands like BibTeX and `makeindex' from within Emacs, viewing and printing the results, and moreover allowing you to _debug_ your documents. AUCTeX comes with a special tool bar for TeX and LaTeX which provides buttons for the most important commands. You can enable or disable it by customizing the options `plain-TeX-enable-toolbar' and `LaTeX-enable-toolbar' in the `TeX-tool-bar' customization group. * Menu: * Commands:: Invoking external commands. * Viewing:: Invoking external viewers. * Debugging:: Debugging TeX and LaTeX output. * Checking:: Checking the document. * Control:: Controlling the processes. * Cleaning:: Cleaning intermediate and output files. * Documentation:: Documentation about macros and packages.  File: auctex.info, Node: Commands, Next: Viewing, Up: Processing 4.1 Executing Commands ====================== Formatting the document with TeX, LaTeX or ConTeXt, viewing with a previewer, printing the document, running BibTeX, making an index, or checking the document with `lacheck' or `chktex' all require running an external command. * Menu: * Starting a Command:: Starting a Command on a Document or Region * Selecting a Command:: Selecting and Executing a Command * Processor Options:: Options for TeX Processors  File: auctex.info, Node: Starting a Command, Next: Selecting a Command, Up: Commands 4.1.1 Starting a Command on a Document or Region ------------------------------------------------ There are two ways to run an external command, you can either run it on the current document with `TeX-command-master', or on the current region with `TeX-command-region'. A special case of running TeX on a region is `TeX-command-buffer' which differs from `TeX-command-master' if the current buffer is not its own master file. -- Command: TeX-command-master (`C-c C-c') Query the user for a command, and run it on the master file associated with the current buffer. The name of the master file is controlled by the variable `TeX-master'. The available commands are controlled by the variable `TeX-command-list'. -- Command: TeX-command-region (`C-c C-r') Query the user for a command, and run it on the contents of the selected region. The region contents are written into the region file, after extracting the header and trailer from the master file. If mark is inactive (which can happen with Transient Mark mode), use the old region. See also the command `TeX-pin-region' about how to fix a region. The name of the region file is controlled by the variable `TeX-region'. The name of the master file is controlled by the variable `TeX-master'. The header is all text up to the line matching the regular expression `TeX-header-end'. The trailer is all text from the line matching the regular expression `TeX-trailer-start'. The available commands are controlled by the variable `TeX-command-list'. -- Command: TeX-command-buffer (`C-c C-b') Query the user for a command, and apply it to the contents of the current buffer. The buffer contents are written into the region file, after extracting the header and trailer from the master file. The command is then actually run on the region file. See above for details. -- User Option: TeX-region The name of the file for temporarily storing the text when formatting the current region. -- User Option: TeX-header-end A regular expression matching the end of the header. By default, this is `\begin{document}' in LaTeX mode and `%**end of header' in TeX mode. -- User Option: TeX-trailer-start A regular expression matching the start of the trailer. By default, this is `\end{document}' in LaTeX mode and `\bye' in TeX mode. If you want to change the values of `TeX-header-end' and `TeX-trailer-start' you can do this for all files by setting the variables in a mode hook or per file by specifying them as file variables (*note File Variables: (emacs)File Variables.). -- Command: TeX-pin-region (`C-c C-t C-r') If you don't have a mode like Transient Mark mode active, where marks get disabled automatically, the region would need to get properly set before each call to `TeX-command-region'. If you fix the current region with `C-c C-t C-r', then it will get used for more commands even though mark and point may change. An explicitly activated mark, however, will always define a new region when calling `TeX-command-region'. AUCTeX will allow one process for each document, plus one process for the region file to be active at the same time. Thus, if you are editing N different documents, you can have N plus one processes running at the same time. If the last process you started was on the region, the commands described in *note Debugging:: and *note Control:: will work on that process, otherwise they will work on the process associated with the current document.  File: auctex.info, Node: Selecting a Command, Next: Processor Options, Prev: Starting a Command, Up: Commands 4.1.2 Selecting and Executing a Command --------------------------------------- Once you started the command selection with `C-c C-c', `C-c C-s' or `C-c C-b' you will be prompted for the type of command. AUCTeX will try to guess which command is appropriate in the given situation and propose it as default. Usually this is a processor like `TeX' or `LaTeX' if the document was changed or a viewer if the document was just typeset. Other commands can be selected in the minibuffer with completion support by typing . The available commands are defined by the variable `TeX-command-list'. Per default it includes commands for typesetting the document (e.g. `LaTeX'), for viewing the output (`View'), for printing (`Print'), for generating an index (`Index') or for spell checking (`Spell') to name but a few. You can also add your own commands by adding entries to `TeX-command-list'. Refer to its doc string for information about its syntax. You might also want to look at `TeX-expand-list' to learn about the expanders you can use in `TeX-command-list'. Note that the default of the variable occasionally changes. Therefore it is advisable to add to the list rather than overwriting it. You can do this with a call to `add-to-list' in your init file. For example, if you wanted to add a command for running a program called `foo' on the master or region file, you could do this with the following form. (eval-after-load "tex" '(add-to-list 'TeX-command-list '("Foo" "foo %s" TeX-run-command t t :help "Run foo") t)) As mentioned before, AUCTeX will try to guess what command you want to invoke. If you want to use another command than `TeX', `LaTeX' or whatever processor AUCTeX thinks is appropriate for the current mode, set the variable `TeX-command-default'. You can do this for all files by setting it in a mode hook or per file by specifying it as a file variable (*note File Variables: (emacs)File Variables.). -- User Option: TeX-command-default The default command to run in this buffer. Must be an entry in `TeX-command-list'. In case you use biblatex in a document, AUCTeX switches from BibTeX to Biber for bibliography processing. In case you want to keep using BibTeX, set the variable `LaTeX-biblatex-use-Biber' to nil. After confirming a command to execute, AUCTeX will try to save any buffers related to the document, and check if the document needs to be reformatted. If the variable `TeX-save-query' is non-nil, AUCTeX will query before saving each file. By default AUCTeX will check emacs buffers associated with files in the current directory, in one of the `TeX-macro-private' directories, and in the `TeX-macro-global' directories. You can change this by setting the variable `TeX-check-path'. -- User Option: TeX-check-path Directory path to search for dependencies. If nil, just check the current file. Used when checking if any files have changed.  File: auctex.info, Node: Processor Options, Prev: Selecting a Command, Up: Commands 4.1.3 Options for TeX Processors -------------------------------- There are some options you can customize affecting which processors are invoked or the way this is done and which output they produce as a result. These options control if DVI or PDF output should be produced, if TeX should be started in interactive or nonstop mode, if source specials or a SyncTeX file should be produced for making inverse and forward search possible or which TeX engine should be used instead of regular TeX, like PDFTeX, Omega or XeTeX. -- Command: TeX-PDF-mode (`C-c C-t C-p') This command toggles the PDF mode of AUCTeX, a buffer-local minor mode. You can customize `TeX-PDF-mode' to give it a different default. The default is used when AUCTeX does not have additional clue about what a document might want. This option usually results in calling either PDFTeX or ordinary TeX. -- User Option: TeX-DVI-via-PDFTeX If this is set, DVI will also be produced by calling PDFTeX, setting `\pdfoutput=0'. This makes it possible to use PDFTeX features like character protrusion even when producing DVI files. Contemporary TeX distributions do this anyway, so that you need not enable the option within AUCTeX. -- Command: TeX-interactive-mode (`C-c C-t C-i') This command toggles the interactive mode of AUCTeX, a global minor mode. You can customize `TeX-interactive-mode' to give it a different default. In interactive mode, TeX will pause with an error prompt when errors are encountered and wait for the user to type something. -- Command: TeX-source-correlate-mode (`C-c C-t C-s') Toggles support for forward and inverse search. Forward search refers to jumping to the place in the previewed document corresponding to where point is located in the document source and inverse search to the other way round. *Note I/O Correlation::. You can permanently activate `TeX-source-correlate-mode' by customizing the variable `TeX-source-correlate-mode'. There is a bunch of customization options for the mode, use `M-x customize-group TeX-view ' to find out more. AUCTeX is aware of three different means to do I/O correlation: source specials (only DVI output), the pdfsync LaTeX package (only PDF output) and SyncTeX. The choice between source specials and SyncTeX can be controlled with the variable `TeX-source-correlate-method'. Should you use source specials it has to be stressed _very_ strongly however, that source specials can cause differences in page breaks and spacing, can seriously interfere with various packages and should thus _never_ be used for the final version of a document. In particular, fine-tuning the page breaks should be done with source specials switched off. AUCTeX also allows you to easily select different TeX engines for processing, either by using the entries in the `TeXing Options' submenu below the `Command' menu or by calling the function `TeX-engine-set'. These eventually set the variable `TeX-engine' which you can also modify directly. -- User Option: TeX-engine This variable allows you to choose which TeX engine should be used for typesetting the document, i.e. the executables which will be used when you invoke the `TeX' or `LaTeX' commands. The value should be one of the symbols defined in `TeX-engine-alist-builtin' or `TeX-engine-alist'. The symbols `default', `xetex', `luatex' and `omega' are available from the built-in list. Note that `TeX-engine' is buffer-local, so setting the variable directly or via the above mentioned menu or function will not take effect in other buffers. If you want to activate an engine for all AUCTeX modes, set `TeX-engine' in your init file, e.g. by using `M-x customize-variable '. If you want to activate it for a certain AUCTeX mode only, set the variable in the respective mode hook. If you want to activate it for certain files, set it through file variables (*note File Variables: (emacs)File Variables.). Should you need to change the executable names related to the different engine settings, there are some variables you can tweak. Those are `TeX-command', `LaTeX-command', `TeX-Omega-command', `LaTeX-Omega-command', `ConTeXt-engine' and `ConTeXt-Omega-engine'. The rest of the executables is defined directly in `TeX-engine-alist-builtin'. If you want to override an entry from that, add an entry to `TeX-engine-alist' that starts with the same symbol as that the entry in the built-in list and specify the executables you want to use instead. You can also add entries to `TeX-engine-alist' in order to add support for engines not covered per default. -- User Option: TeX-engine-alist Alist of TeX engines and associated commands. Each entry is a list with a maximum of five elements. The first element is a symbol used to identify the engine. The second is a string describing the engine. The third is the command to be used for plain TeX. The fourth is the command to be used for LaTeX. The fifth is the command to be used for the `--engine' parameter of ConTeXt's `texexec' program. Each command can either be a variable or a string. An empty string or nil means there is no command available. You can customize AUCTeX to show the processor output as it is produced. -- User Option: TeX-show-compilation If non-nil, the output of TeX compilation is shown in another window.  File: auctex.info, Node: Viewing, Next: Debugging, Prev: Commands, Up: Processing 4.2 Viewing the Formatted Output ================================ AUCTeX allows you to start external programs for previewing the formatted output of your document. * Menu: * Starting Viewers:: Starting viewers * I/O Correlation:: Forward and inverse search  File: auctex.info, Node: Starting Viewers, Next: I/O Correlation, Up: Viewing 4.2.1 Starting Viewers ---------------------- Viewers are normally invoked by pressing `C-c C-c' once the document is formatted, which will propose the View command, or by activating the respective entry in the Command menu. Alternatively you can type `C-c C-v' which calls the function `TeX-view'. -- Command: TeX-view (`C-c C-v') Start a viewer without confirmation. The viewer is started either on a region or the master file, depending on the last command issued. This is especially useful for jumping to the location corresponding to point in the viewer when using `TeX-source-correlate-mode'. AUCTeX will try to guess which type of viewer (DVI, PostScript or PDF) has to be used and what options are to be passed over to it. This decision is based on the output files present in the working directory as well as the class and style options used in the document. For example, if there is a DVI file in your working directory, a DVI viewer will be invoked. In case of a PDF file it will be a PDF viewer. If you specified a special paper format like `a5paper' or use the `landscape' option, this will be passed to the viewer by the appropriate options. Especially some DVI viewers depend on this kind of information in order to display your document correctly. In case you are using `pstricks' or `psfrag' in your document, a DVI viewer cannot display the contents correctly and a PostScript viewer will be invoked instead. The association between the tests for the conditions mentioned above and the viewers is made in the variable `TeX-view-program-selection'. Therefore this variable is the starting point for customization if you want to use other viewers than the ones suggested by default. -- User Option: TeX-view-program-selection This is a list of predicates and viewers which is evaluated from front to back in order to find out which viewer to call under the given conditions. In the first element of each list item you can reference one or more predicates defined in `TeX-view-predicate-list' or `TeX-view-predicate-list-builtin'. In the second element you can reference a viewer defined in `TeX-view-program-list' or `TeX-view-program-list-builtin'. The viewer of the first item with a positively evaluated predicate is selected. So `TeX-view-program-selection' only contains references to the actual implementations of predicates and viewer commands respectively which can be found elsewhere. AUCTeX comes with a set of preconfigured predicates and viewer commands which are stored in the variables `TeX-view-predicate-list-builtin' and `TeX-view-program-list-builtin' respectively. If you are not satisfied with those and want to overwrite one of them or add your own definitions, you can do so via the variables `TeX-view-predicate-list' and `TeX-view-program-list'. -- User Option: TeX-view-predicate-list This is a list of predicates for viewer selection and invocation. The first element of each list item is a symbol and the second element a Lisp form to be evaluated. The form should return nil if the predicate is not fulfilled. A built-in predicate from `TeX-view-predicate-list-builtin' can be overwritten by defining a new predicate with the same symbol. -- User Option: TeX-view-program-list This is a list of viewer specifications each consisting of a symbolic name and either a command line or a function to be invoked when the viewer is called. If a command line is used, parts of it can be conditionalized by prefixing them with predicates from `TeX-view-predicate-list' or `TeX-view-predicate-list-builtin'. (See the doc string for the exact format to use.) The command line can also contain placeholders as defined in `TeX-expand-list' which are expanded before the viewer is called. A built-in viewer spec from `TeX-view-program-list-builtin' can be overwritten by defining a new viewer spec with the same name. Note that the viewer selection and invocation as described above will only work if certain default settings in AUCTeX are intact. For one, the whole viewer selection machinery will only be triggered if the `%V' expander in `TeX-expand-list' is unchanged. So if you have trouble with the viewer invocation you might check if there is an older customization of the variable in place. In addition, the use of a function in `TeX-view-program-list' only works if the View command in `TeX-command-list' makes use of the hook `TeX-run-discard-or-function'. Note also that the implementation described above replaces an older one which was less flexible. This old implementation works with the variables `TeX-output-view-style' and `TeX-view-style' which are used to associate file types and style options with viewers. If desired you can reactivate it by using the placeholder `%vv' for the View command in `TeX-command-list'. Note however, that it is bound to be removed from AUCTeX once the new implementation proved to be satisfactory. For the time being, find a short description of the mentioned customization options below. -- User Option: TeX-output-view-style List of output file extensions, style options and view options. Each item of the list consists of three elements. If the first element (a regular expression) matches the output file extension, and the second element (a regular expression) matches the name of one of the style options, any occurrence of the string `%V' in a command in `TeX-command-list' will be replaced with the third element. -- User Option: TeX-view-style List of style options and view options. This is the predecessor of `TeX-output-view-style' which does not provide the possibility to specify output file extensions. It is used as a fallback in case none of the alternatives specified in `TeX-output-view-style' match. In case none of the entries in `TeX-view-style' match either, no suggestion for a viewer is made.  File: auctex.info, Node: I/O Correlation, Prev: Starting Viewers, Up: Viewing 4.2.2 Forward and Inverse Search -------------------------------- Forward and inverse search refer to the correlation between the document source in the editor and the typeset document in the viewer. Forward search allows you to jump to the place in the previewed document corresponding to a certain line in the document source and inverse search vice versa. AUCTeX supports three methods for forward and inverse search: source specials (only DVI output), the pdfsync LaTeX package (only PDF output) and SyncTeX (any type of output). If you want to make use of forward and inverse searching with source specials or SyncTeX, switch on `TeX-source-correlate-mode'. *Note Processor Options::, on how to do that. The use of the pdfsync package is detected automatically if document parsing is enabled. Forward search happens automatically upon calling the viewer, e.g. by typing `C-c C-v' (`TeX-view'). This will open the viewer or bring it to front and display the output page corresponding to the position of point in the source file. AUCTeX will automatically pass the necessary command line options to the viewer for this to happen. Upon opening the viewer you will be asked if you want to start a server process (Gnuserv or Emacs server) which is necessary for inverse search. This happens only if there is no server running already. You can customize the variable `TeX-source-correlate-start-server' to inhibit the question and always or never start the server respectively. -- User Option: TeX-source-correlate-start-server If `TeX-source-correlate-mode' is active and a viewer is invoked, the default behavior is to ask if a server process should be started. Set this variable to `t' if the question should be inhibited and the server should always be started. Set it to `nil' if the server should never be started. Inverse search will not be available in the latter case. Inverse search, i.e. jumping to the part of your document source in Emacs corresponding to a certain position in the viewer, is triggered from the viewer, typically by a mouse click. Refer to the documentation of your viewer to find out how it has to be configured and what you have to do exactly. In xdvi you normally have to use `C-down-mouse-1'.  File: auctex.info, Node: Debugging, Next: Checking, Prev: Viewing, Up: Processing 4.3 Catching the errors ======================= Once you've formatted your document you may `debug' it, i.e. browse through the errors (La)TeX reported. -- Command: TeX-next-error (`C-c `') Go to the next error reported by TeX. The view will be split in two, with the cursor placed as close as possible to the error in the top view. In the bottom view, the error message will be displayed along with some explanatory text. Normally AUCTeX will only report real errors, but you may as well ask it to report `bad boxes' and warnings as well. -- Command: TeX-toggle-debug-bad-boxes (`C-c C-t C-b') Toggle whether AUCTeX should stop at bad boxes (i.e. overfull and underfull boxes) as well as normal errors. -- Command: TeX-toggle-debug-warnings (`C-c C-t C-w') Toggle whether AUCTeX should stop at warnings as well as normal errors. As default, AUCTeX will display a special help buffer containing the error reported by TeX along with the documentation. There is however an `expert' option, which allows you to display the real TeX output. -- User Option: TeX-display-help If t AUCTeX will automatically display a help text whenever an error is encountered using `TeX-next-error' (`C-c `'). If nil a terse information about the error is displayed in the echo area. If `expert' AUCTeX will display the output buffer with the raw TeX output.  File: auctex.info, Node: Checking, Next: Control, Prev: Debugging, Up: Processing 4.4 Checking for problems ========================= Running TeX or LaTeX will only find regular errors in the document, not examples of bad style. Furthermore, description of the errors may often be confusing. The utility `lacheck' can be used to find style errors, such as forgetting to escape the space after an abbreviation or using `...' instead of `\ldots' and many other problems like that. You start `lacheck' with `C-c C-c Check '. The result will be a list of errors in the `*compilation*' buffer. You can go through the errors with `C-x `' (`next-error', *note Compilation: (emacs)Compilation.), which will move point to the location of the next error. Another newer program which can be used to find errors is `chktex'. It is much more configurable than `lacheck', but doesn't find all the problems `lacheck' does, at least in its default configuration. You must install the programs before using them, and for `chktex' you may also need modify `TeX-command-list' unless you use its `lacheck' compatibility wrapper. You can get `lacheck' from `' or alternatively `chktex' from `'.  File: auctex.info, Node: Control, Next: Cleaning, Prev: Checking, Up: Processing 4.5 Controlling the output ========================== A number of commands are available for controlling the output of an application running under AUCTeX -- Command: TeX-kill-job (`C-c C-k') Kill currently running external application. This may be either of TeX, LaTeX, previewer, BibTeX, etc. -- Command: TeX-recenter-output-buffer (`C-c C-l') Recenter the output buffer so that the bottom line is visible. -- Command: TeX-home-buffer (`C-c ^') Go to the `master' file in the document associated with the current buffer, or if already there, to the file where the current process was started.  File: auctex.info, Node: Cleaning, Next: Documentation, Prev: Control, Up: Processing 4.6 Cleaning intermediate and output files ========================================== -- Command: TeX-clean Remove generated intermediate files. In case a prefix argument is given, remove output files as well. Canonical access to the function is provided by the `Clean' and `Clean All' entries in `TeX-command-list', invokable with `C-c C-c' or the Command menu. The patterns governing which files to remove can be adapted separately for each AUCTeX mode by means of the variables `plain-TeX-clean-intermediate-suffixes', `plain-TeX-clean-output-suffixes', `LaTeX-clean-intermediate-suffixes', `LaTeX-clean-output-suffixes', `docTeX-clean-intermediate-suffixes', `docTeX-clean-output-suffixes', `Texinfo-clean-intermediate-suffixes', `Texinfo-clean-output-suffixes', `ConTeXt-clean-intermediate-suffixes' and `ConTeXt-clean-output-suffixes'. -- User Option: TeX-clean-confirm Control if deletion of intermediate and output files has to be confirmed before it is actually done. If non-nil, ask before deleting files.  File: auctex.info, Node: Documentation, Prev: Cleaning, Up: Processing 4.7 Documentation about macros and packages =========================================== -- Command: TeX-doc (`C-c ?') Get documentation about macros, packages or TeX & Co. in general. The function will prompt for the name of a command or manual, providing a list of available keywords for completion. If point is on a command or word with available documentation, this will be suggested as default. In case no documentation could be found, a prompt for querying the `texdoc' program is shown, should the latter be available. The command can be invoked by the key binding mentioned above as well as the `Find Documentation...' entry in the mode menu.  File: auctex.info, Node: Customization, Next: Appendices, Prev: Processing, Up: Top 5 Customization and Extension ***************************** * Menu: * Modes and Hooks:: Modes and Hooks * Multifile:: Multifile Documents * Parsing Files:: Automatic Parsing of TeX Files * Internationalization:: Language Support * Automatic:: Automatic Customization * Style Files:: Writing Your Own Style Support  File: auctex.info, Node: Modes and Hooks, Next: Multifile, Up: Customization 5.1 Modes and Hooks =================== AUCTeX supports a wide variety of derivatives and extensions of TeX. Besides plain TeX those are LaTeX, AMS-TeX, ConTeXt, Texinfo and docTeX. For each of them there is a separate major mode in AUCTeX and each major mode runs `text-mode-hook', `TeX-mode-hook' as well as a hook special to the mode in this order. The following table provides an overview of the respective mode functions and hooks. Type Mode function Hook ------------------------------------------------------- Plain TeX `plain-TeX-mode' `plain-TeX-mode-hook' LaTeX `LaTeX-mode' `LaTeX-mode-hook' AMS-TeX `ams-tex-mode' `AmS-TeX-mode-hook' ConTeXt `ConTeXt-mode' `ConTeXt-mode-hook' Texinfo `Texinfo-mode' `Texinfo-mode-hook' DocTeX `docTeX-mode' `docTeX-mode-hook' If you need to make a customization via a hook which is only relevant for one of the modes listed above, put it into the respective mode hook, if it is relevant for any AUCTeX mode, add it to `TeX-mode-hook' and if it is relevant for all text modes, append it to `text-mode-hook'.  File: auctex.info, Node: Multifile, Next: Parsing Files, Prev: Modes and Hooks, Up: Customization 5.2 Multifile Documents ======================= You may wish to spread a document over many files (as you are likely to do if there are multiple authors, or if you have not yet discovered the power of the outline commands (*note Outline::)). This can be done by having a "master" file in which you include the various files with the TeX macro `\input' or the LaTeX macro `\include'. These files may also include other files themselves. However, to format the document you must run the commands on the top level master file. When you, for example, ask AUCTeX to run a command on the master file, it has no way of knowing the name of the master file. By default, it will assume that the current file is the master file. If you insert the following in your `.emacs' file AUCTeX will use a more advanced algorithm. (setq-default TeX-master nil) ; Query for master file. If AUCTeX finds the line indicating the end of the header in a master file (`TeX-header-end'), it can figure out for itself that this is a master file. Otherwise, it will ask for the name of the master file associated with the buffer. To avoid asking you again, AUCTeX will automatically insert the name of the master file as a file variable (*note File Variables: (emacs)File Variables.). You can also insert the file variable yourself, by putting the following text at the end of your files. %%% Local Variables: %%% TeX-master: "master" %%% End: You should always set this variable to the name of the top level document. If you always use the same name for your top level documents, you can set `TeX-master' in your `.emacs' file. (setq-default TeX-master "master") ; All master files called "master". -- User Option: TeX-master The master file associated with the current buffer. If the file being edited is actually included from another file, then you can tell AUCTeX the name of the master file by setting this variable. If there are multiple levels of nesting, specify the top level file. If this variable is `nil', AUCTeX will query you for the name. If the variable is `t', then AUCTeX will assume the file is a master file itself. If the variable is `shared', then AUCTeX will query for the name, but will not change the file. -- User Option: TeX-one-master Regular expression matching ordinary TeX files. You should set this variable to match the name of all files, for which it is a good idea to append a `TeX-master' file variable entry automatically. When AUCTeX adds the name of the master file as a file variable, it does not need to ask next time you edit the file. If you dislike AUCTeX automatically modifying your files, you can set this variable to `""'. By default, AUCTeX will modify any file with an extension of `.tex'. -- Command: TeX-master-file-ask (`C-c _') Query for the name of a master file and add the respective File Variables (*note File Variables: (emacs)File Variables.) to the file for setting this variable permanently. AUCTeX will not ask for a master file when it encounters existing files. This function shall give you the possibility to insert the variable manually. AUCTeX keeps track of macros, environments, labels, and style files that are used in a given document. For this to work with multifile documents, AUCTeX has to have a place to put the information about the files in the document. This is done by having an `auto' subdirectory placed in the directory where your document is located. Each time you save a file, AUCTeX will write information about the file into the `auto' directory. When you load a file, AUCTeX will read the information in the `auto' directory about the file you loaded _and the master file specified by `TeX-master'_. Since the master file (perhaps indirectly) includes all other files in the document, AUCTeX will get information from all files in the document. This means that you will get from each file, for example, completion for all labels defined anywhere in the document. AUCTeX will create the `auto' directory automatically if `TeX-auto-save' is non-nil. Without it, the files in the document will not know anything about each other, except for the name of the master file. *Note Automatic Local::. -- Command: TeX-save-document (`C-c C-d') Save all buffers known to belong to the current document. -- User Option: TeX-save-query If non-nil, then query the user before saving each file with `TeX-save-document'.  File: auctex.info, Node: Parsing Files, Next: Internationalization, Prev: Multifile, Up: Customization 5.3 Automatic Parsing of TeX Files ================================== AUCTeX depends heavily on being able to extract information from the buffers by parsing them. Since parsing the buffer can be somewhat slow, the parsing is initially disabled. You are encouraged to enable them by adding the following lines to your `.emacs' file. (setq TeX-parse-self t) ; Enable parse on load. (setq TeX-auto-save t) ; Enable parse on save. The latter command will make AUCTeX store the parsed information in an `auto' subdirectory in the directory each time the TeX files are stored, *note Automatic Local::. If AUCTeX finds the pre-parsed information when loading a file, it will not need to reparse the buffer. The information in the `auto' directory is also useful for multifile documents, *note Multifile::, since it allows each file to access the parsed information from all the other files in the document. This is done by first reading the information from the master file, and then recursively the information from each file stored in the master file. The variables can also be done on a per file basis, by changing the file local variables. %%% Local Variables: %%% TeX-parse-self: t %%% TeX-auto-save: t %%% End: Even when you have disabled the automatic parsing, you can force the generation of style information by pressing `C-c C-n'. This is often the best choice, as you will be able to decide when it is necessary to reparse the file. -- User Option: TeX-parse-self Parse file after loading it if no style hook is found for it. -- User Option: TeX-auto-save Automatically save style information when saving the buffer. -- Command: TeX-normal-mode ARG (`C-c C-n') Remove all information about this buffer, and apply the style hooks again. Save buffer first including style information. With optional argument, also reload the style hooks. When AUCTeX saves your buffer, it can optionally convert all tabs in your buffer into spaces. Tabs confuse AUCTeX's error message parsing and so should generally be avoided. However, tabs are significant in some environments, and so by default AUCTeX does not remove them. To convert tabs to spaces when saving a buffer, insert the following in your `.emacs' file: (setq TeX-auto-untabify t) -- User Option: TeX-auto-untabify Automatically remove all tabs from a file before saving it. Instead of disabling the parsing entirely, you can also speed it significantly up by limiting the information it will search for (and store) when parsing the buffer. You can do this by setting the default values for the buffer local variables `TeX-auto-regexp-list' and `TeX-auto-parse-length' in your `.emacs' file. ;; Only parse LaTeX class and package information. (setq-default TeX-auto-regexp-list 'LaTeX-auto-minimal-regexp-list) ;; The class and package information is usually near the beginning. (setq-default TeX-auto-parse-length 2000) This example will speed the parsing up significantly, but AUCTeX will no longer be able to provide completion for labels, macros, environments, or bibitems specified in the document, nor will it know what files belong to the document. These variables can also be specified on a per file basis, by changing the file local variables. %%% Local Variables: %%% TeX-auto-regexp-list: TeX-auto-full-regexp-list %%% TeX-auto-parse-length: 999999 %%% End: -- User Option: TeX-auto-regexp-list List of regular expressions used for parsing the current file. -- User Option: TeX-auto-parse-length Maximal length of TeX file that will be parsed. The pre-specified lists of regexps are defined below. You can use these before loading AUCTeX by quoting them, as in the example above. -- Constant: TeX-auto-empty-regexp-list Parse nothing -- Constant: LaTeX-auto-minimal-regexp-list Only parse LaTeX class and packages. -- Constant: LaTeX-auto-label-regexp-list Only parse LaTeX labels. -- Constant: LaTeX-auto-regexp-list Parse common LaTeX commands. -- Constant: plain-TeX-auto-regexp-list Parse common plain TeX commands. -- Constant: TeX-auto-full-regexp-list Parse all TeX and LaTeX commands that AUCTeX can use.  File: auctex.info, Node: Internationalization, Next: Automatic, Prev: Parsing Files, Up: Customization 5.4 Language Support ==================== TeX and Emacs are usable for European (Latin, Cyrillic, Greek) based languages. Some LaTeX and EmacsLisp packages are available for easy typesetting and editing documents in European languages. For CJK (Chinese, Japanese, and Korean) languages, Emacs or XEmacs with MULE (MULtilingual Enhancement to GNU Emacs) support is required. MULE is part of Emacs by default since Emacs 20. XEmacs has to be configured with the `--with-mule' option. Special versions of TeX are needed for CJK languages: CTeX and ChinaTeX for Chinese, ASCII pTeX and NTT jTeX for Japanese, HLaTeX and kTeX for Korean. The CJK-LaTeX package is required for supporting multiple CJK scripts within a single document. Note that Unicode is not fully supported in Emacs 21 and XEmacs 21. CJK characters are not usable. Please use the MULE-UCS EmacsLisp package or Emacs 22 (not released yet) if you need CJK. * Menu: * European:: Using AUCTeX with European Languages * Japanese:: Using AUCTeX with Japanese  File: auctex.info, Node: European, Next: Japanese, Up: Internationalization 5.4.1 Using AUCTeX with European Languages ------------------------------------------ 5.4.1.1 Typing and Displaying Non-ASCII Characters .................................................. First you will need a way to write non-ASCII characters. You can either use macros, or teach TeX about the ISO character sets. I prefer the latter, it has the advantage that the usual standard emacs word movement and case change commands will work. With LaTeX2e, just add `\usepackage[latin1]{inputenc}'. Other languages than Western European ones will probably have other encoding needs. To be able to display non-ASCII characters you will need an appropriate font and a version of GNU Emacs capable of displaying 8-bit characters (e.g. Emacs 21). The manner in which this is supported differs between Emacsen, so you need to take a look at your respective documentation. A compromise is to use an European character set when editing the file, and convert to TeX macros when reading and writing the files. `iso-cvt.el' Much like `iso-tex.el' but is bundled with Emacs 19.23 and later. `x-compose.el' Similar package bundled with new versions of XEmacs. `X-Symbol' a much more complete package for both Emacs and XEmacs that can also handle a lot of mathematical characters and input methods. 5.4.1.2 Style Files for Different Languages ........................................... AUCTeX supports style files for several languages. Each style file may modify AUCTeX to better support the language, and will run a language specific hook that will allow you to for example change ispell dictionary, or run code to change the keyboard remapping. The following will for example choose a Danish dictionary for documents including `\usepackage[danish]{babel}'. This requires parsing to be enabled, *note Parsing Files::. (add-hook 'TeX-language-dk-hook (lambda () (ispell-change-dictionary "danish"))) The following style files are recognized: `bulgarian' Runs style hook `TeX-language-bg-hook'. Gives `"' word syntax, makes the <"> key insert a literal `"'. Typing <"> twice will insert insert `"`' or `"'' depending on context. Typing <-> twice will insert `"=', three times `--'. `czech' Runs style hook `TeX-language-cz-hook'. Pressing <"> will insert `\uv{' and `}' depending on context. `danish' Runs style hook `TeX-language-dk-hook'. Pressing <"> will insert `"`' and `"'' depending on context. Typing <-> twice will insert `"=', i.e. a hyphen string allowing hyphenation in the composing words. `dutch' Runs style hook `TeX-language-nl-hook'. `german' `ngerman' Runs style hook `TeX-language-de-hook'. Gives `"' word syntax, makes the <"> key insert a literal `"'. Pressing the key twice will give you opening or closing German quotes (`"`' or `"''). Typing <-> twice will insert `"=', three times `--'. `frenchb' `francais' Runs style hook `TeX-language-fr-hook'. Pressing <"> will insert `\\og' and `\\fg' depending on context. Note that the language name for customizing `TeX-quote-language-alist' is `french'. `icelandic' Runs style hook `TeX-language-is-hook'. Gives `"' word syntax, makes the <"> key insert a literal `"'. Typing <"> twice will insert insert `"`' or `"'' depending on context. Typing <-> twice will insert `"=', three times `--'. `italian' Runs style hook `TeX-language-it-hook'. Pressing <"> will insert `"<' and `">' depending on context. `polish' Runs style hook `TeX-language-pl-hook'. Gives `"' word syntax and makes the <"> key insert a literal `"'. Pressing <"> twice will insert `"`' or `"'' depending on context. `polski' Runs style hook `TeX-language-pl-hook'. Makes the <"> key insert a literal `"'. Pressing <"> twice will insert `,,' or `''' depending on context. `slovak' Runs style hook `TeX-language-sk-hook'. Pressing <"> will insert `\uv{' and `}' depending on context. `swedish' Runs style hook `TeX-language-sv-hook'. Pressing <"> will insert `'''. Typing <-> twice will insert `"=', three times `--'. Replacement of language-specific hyphen strings like `"=' with dashes does not require to type <-> three times in a row. You can put point after the hypen string anytime and trigger the replacement by typing <->. In case you are not satisfied with the suggested behavior of quote and hyphen insertion you can change it by customizing the variables `TeX-quote-language-alist' and `LaTeX-babel-hyphen-language-alist' respectively. -- User Option: TeX-quote-language-alist Used for overriding the default language-specific quote insertion behavior. This is an alist where each element is a list consisting of four items. The first item is the name of the language in concern as a string. See the list of supported languages above. The second item is the opening quotation mark. The third item is the closing quotation mark. Opening and closing quotation marks can be specified directly as strings or as functions returning a string. The fourth item is a boolean controlling quote insertion. It should be non-nil if if the special quotes should only be used after inserting a literal `"' character first, i.e. on second key press. -- User Option: LaTeX-babel-hyphen-language-alist Used for overriding the behavior of hyphen insertion for specific languages. Every element in this alist is a list of three items. The first item should specify the affected language as a string. The second item denotes the hyphen string to be used as a string. The third item, a boolean, controls the behavior of hyphen insertion and should be non-nil if the special hyphen should be inserted after inserting a literal `-' character, i.e. on second key press. The defaults of hyphen insertion are defined by the variables `LaTeX-babel-hyphen' and `LaTeX-babel-hyphen-after-hyphen' respectively. -- User Option: LaTeX-babel-hyphen String to be used when typing <->. This usually is a hyphen alternative or hyphenation aid provided by `babel' and the related language style files, like `"=', `"~' or `"-'. Set it to an empty string or nil in order to disable language-specific hyphen insertion. -- User Option: LaTeX-babel-hyphen-after-hyphen Control insertion of hyphen strings. If non-nil insert normal hyphen on first key press and swap it with the language-specific hyphen string specified in the variable `LaTeX-babel-hyphen' on second key press. If nil do it the other way round.  File: auctex.info, Node: Japanese, Prev: European, Up: Internationalization 5.4.2 Using AUCTeX with Japanese TeX ------------------------------------ To write Japanese text with AUCTeX, you need to have versions of TeX and Emacs that support Japanese. There exist at least two variants of TeX for Japanese text (NTT jTeX and ASCII pTeX). AUCTeX can be used with MULE (MULtilingual Enhancement to GNU Emacs) supported Emacsen. To use the Japanese TeX variants, simply activate `japanese-plain-tex-mode' or `japanese-latex-mode' and everything should work. If not, send mail to Masayuki Ataka `', who kindly donated the code for supporting Japanese in AUCTeX. None of the primary AUCTeX maintainers understand Japanese, so they cannot help you. If you usually use AUCTeX in Japanese, setting the following variables is useful. -- User Option: TeX-default-mode Mode to enter for a new file when it cannott be determined whether the file is plain TeX or LaTeX or what. If you want to enter Japanese LaTeX mode whenever this may happen, set the variable like this: (setq TeX-default-mode 'japanese-latex-mode) -- User Option: japanese-TeX-command-default The default command for `TeX-command' in Japanese TeX mode. The default value is `"pTeX"'. -- User Option: japanese-LaTeX-command-default The default command for `TeX-command' in Japanese LaTeX mode. The default value is `"LaTeX"'. -- User Option: japanese-LaTeX-default-style The default style/class when creating a new Japanese LaTeX document. The default value is `"jarticle"'. See `tex-jp.el' for more information.  File: auctex.info, Node: Automatic, Next: Style Files, Prev: Internationalization, Up: Customization 5.5 Automatic Customization =========================== Since AUCTeX is so highly customizable, it makes sense that it is able to customize itself. The automatic customization consists of scanning TeX files and extracting symbols, environments, and things like that. The automatic customization is done on three different levels. The global level is the level shared by all users at your site, and consists of scanning the standard TeX style files, and any extra styles added locally for all users on the site. The private level deals with those style files you have written for your own use, and use in different documents. You may have a `~/lib/TeX/' directory where you store useful style files for your own use. The local level is for a specific directory, and deals with writing customization for the files for your normal TeX documents. If compared with the environment variable `TEXINPUTS', the global level corresponds to the directories built into TeX. The private level corresponds to the directories you add yourself, except for `.', which is the local level. * Menu: * Automatic Global:: Automatic Customization for the Site * Automatic Private:: Automatic Customization for a User * Automatic Local:: Automatic Customization for a Directory By default AUCTeX will search for customization files in all the global, private, and local style directories, but you can also set the path directly. This is useful if you for example want to add another person's style hooks to your path. Please note that all matching files found in `TeX-style-path' are loaded, and all hooks defined in the files will be executed. -- User Option: TeX-style-path List of directories to search for AUCTeX style files. Each must end with a slash. By default, when AUCTeX searches a directory for files, it will recursively search through subdirectories. -- User Option: TeX-file-recurse Whether to search TeX directories recursively: nil means do not recurse, a positive integer means go that far deep in the directory hierarchy, t means recurse indefinitely. By default, AUCTeX will ignore files named `.', `..', `SCCS', `RCS', and `CVS'. -- User Option: TeX-ignore-file Regular expression matching file names to ignore. These files or directories will not be considered when searching for TeX files in a directory.  File: auctex.info, Node: Automatic Global, Next: Automatic Private, Up: Automatic 5.5.1 Automatic Customization for the Site ------------------------------------------ Assuming that the automatic customization at the global level was done when AUCTeX was installed, your choice is now: will you use it? If you use it, you will benefit by having access to all the symbols and environments available for completion purposes. The drawback is slower load time when you edit a new file and perhaps too many confusing symbols when you try to do a completion. You can disable the automatic generated global style hooks by setting the variable `TeX-auto-global' to nil. -- User Option: TeX-macro-global Directories containing the site's TeX style files. -- User Option: TeX-style-global Directory containing hand generated TeX information. Must end with a slash. These correspond to TeX macros shared by all users of a site. -- User Option: TeX-auto-global Directory containing automatically generated information. For storing automatic extracted information about the TeX macros shared by all users of a site.  File: auctex.info, Node: Automatic Private, Next: Automatic Local, Prev: Automatic Global, Up: Automatic 5.5.2 Automatic Customization for a User ---------------------------------------- You should specify where you store your private TeX macros, so AUCTeX can extract their information. The extracted information will go to the directories listed in `TeX-auto-private' Use `M-x TeX-auto-generate ' to extract the information. -- User Option: TeX-macro-private Directories where you store your personal TeX macros. The value defaults to the directories listed in the `TEXINPUTS' and `BIBINPUTS' environment variables or to the respective directories in `$TEXMFHOME' if no results can be obtained from the environment variables. -- User Option: TeX-auto-private List of directories containing automatically generated AUCTeX style files. These correspond to the personal TeX macros. -- Command: TeX-auto-generate TEX AUTO (`M-x TeX-auto-generate ') Generate style hook for TEX and store it in AUTO. If TEX is a directory, generate style hooks for all files in the directory. -- User Option: TeX-style-private List of directories containing hand generated AUCTeX style files. These correspond to the personal TeX macros.  File: auctex.info, Node: Automatic Local, Prev: Automatic Private, Up: Automatic 5.5.3 Automatic Customization for a Directory --------------------------------------------- AUCTeX can update the style information about a file each time you save it, and it will do this if the directory `TeX-auto-local' exist. `TeX-auto-local' is by default set to `"auto"', so simply creating an `auto' directory will enable automatic saving of style information. The advantage of doing this is that macros, labels, etc. defined in any file in a multifile document will be known in all the files in the document. The disadvantage is that saving will be slower. To disable, set `TeX-auto-local' to nil. -- User Option: TeX-style-local Directory containing hand generated TeX information. Must end with a slash. These correspond to TeX macros found in the current directory. -- User Option: TeX-auto-local Directory containing automatically generated TeX information. Must end with a slash. These correspond to TeX macros found in the current directory.  File: auctex.info, Node: Style Files, Prev: Automatic, Up: Customization 5.6 Writing Your Own Style Support ================================== *Note Automatic::, for a discussion about automatically generated global, private, and local style files. The hand generated style files are equivalent, except that they by default are found in `style' directories instead of `auto' directories. * Menu: * Simple Style:: A Simple Style File * Adding Macros:: Adding Support for Macros * Adding Environments:: Adding Support for Environments * Adding Other:: Adding Other Information * Hacking the Parser:: Automatic Extraction of New Things If you write some useful support for a public TeX style file, please send it to us.  File: auctex.info, Node: Simple Style, Next: Adding Macros, Up: Style Files 5.6.1 A Simple Style File ------------------------- Here is a simple example of a style file. ;;; book.el - Special code for book style. (TeX-add-style-hook "book" (lambda () (LaTeX-largest-level-set "chapter"))) The example is from the AUCTeX sources and is loaded for any LaTeX document using the book document class (or style before LaTeX2e). The file specifies that the largest kind of section in such a document is chapter. The interesting thing to notice is that the style file defines an (anonymous) function, and adds it to the list of loaded style hooks by calling `TeX-add-style-hook'. The first time the user indirectly tries to access some style-specific information, such as the largest sectioning command available, the style hooks for all files directly or indirectly read by the current document are executed. The actual files will only be evaluated once, but the hooks will be called for each buffer using the style file. Note that the basename of the style file and the name of the style hook should usually be identical. -- Function: TeX-add-style-hook STYLE HOOK Add HOOK to the list of functions to run when we use the TeX file STYLE.  File: auctex.info, Node: Adding Macros, Next: Adding Environments, Prev: Simple Style, Up: Style Files 5.6.2 Adding Support for Macros ------------------------------- The most common thing to define in a style hook is new symbols (TeX macros). Most likely along with a description of the arguments to the function, since the symbol itself can be defined automatically. Here are a few examples from `latex.el'. (TeX-add-style-hook "latex" (lambda () (TeX-add-symbols '("arabic" TeX-arg-counter) '("label" TeX-arg-define-label) '("ref" TeX-arg-label) '("newcommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("newtheorem" TeX-arg-define-environment [ TeX-arg-environment "Numbered like" ] t [ TeX-arg-counter "Within counter" ])))) -- Function: TeX-add-symbols SYMBOL ... Add each SYMBOL to the list of known symbols. Each argument to `TeX-add-symbols' is a list describing one symbol. The head of the list is the name of the symbol, the remaining elements describe each argument. If there are no additional elements, the symbol will be inserted with point inside braces. Otherwise, each argument of this function should match an argument of the TeX macro. What is done depends on the argument type. If a macro is defined multiple times, AUCTeX will chose the one with the longest definition (i.e. the one with the most arguments). Thus, to overwrite '("tref" 1) ; one argument you can specify '("tref" TeX-arg-label ignore) ; two arguments `ignore' is a function that does not do anything, so when you insert a `tref' you will be prompted for a label and no more. You can use the following types of specifiers for arguments: `string' Use the string as a prompt to prompt for the argument. `number' Insert that many braces, leave point inside the first. 0 and -1 are special. 0 means that no braces are inserted. -1 means that braces are inserted around the macro and an active region (e.g. `{\tiny foo}'). If there is no active region, no braces are inserted. `nil' Insert empty braces. `t' Insert empty braces, leave point between the braces. `other symbols' Call the symbol as a function. You can define your own hook, or use one of the predefined argument hooks. `list' If the car is a string, insert it as a prompt and the next element as initial input. Otherwise, call the car of the list with the remaining elements as arguments. `vector' Optional argument. If it has more than one element, parse it as a list, otherwise parse the only element as above. Use square brackets instead of curly braces, and is not inserted on empty user input. A lot of argument hooks have already been defined. The first argument to all hooks is a flag indicating if it is an optional argument. It is up to the hook to determine what to do with the remaining arguments, if any. Typically the next argument is used to overwrite the default prompt. `TeX-arg-conditional' Implements if EXPR THEN ELSE. If EXPR evaluates to true, parse THEN as an argument list, else parse ELSE as an argument list. `TeX-arg-literal' Insert its arguments into the buffer. Used for specifying extra syntax for a macro. `TeX-arg-free' Parse its arguments but use no braces when they are inserted. `TeX-arg-eval' Evaluate arguments and insert the result in the buffer. `TeX-arg-label' Prompt for a label completing with known labels. `TeX-arg-macro' Prompt for a TeX macro with completion. `TeX-arg-environment' Prompt for a LaTeX environment with completion. `TeX-arg-cite' Prompt for a BibTeX citation. `TeX-arg-counter' Prompt for a LaTeX counter. `TeX-arg-savebox' Prompt for a LaTeX savebox. `TeX-arg-file' Prompt for a filename in the current directory, and use it without the extension. `TeX-arg-input-file' Prompt for the name of an input file in TeX's search path, and use it without the extension. Run the style hooks for the file. (Note that the behavior (type of prompt and inserted file name) of the function can be controlled by the variable `TeX-arg-input-file-search'.) `TeX-arg-define-label' Prompt for a label completing with known labels. Add label to list of defined labels. `TeX-arg-define-macro' Prompt for a TeX macro with completion. Add macro to list of defined macros. `TeX-arg-define-environment' Prompt for a LaTeX environment with completion. Add environment to list of defined environments. `TeX-arg-define-cite' Prompt for a BibTeX citation. `TeX-arg-define-counter' Prompt for a LaTeX counter. `TeX-arg-define-savebox' Prompt for a LaTeX savebox. `TeX-arg-corner' Prompt for a LaTeX side or corner position with completion. `TeX-arg-lr' Prompt for a LaTeX side with completion. `TeX-arg-tb' Prompt for a LaTeX side with completion. `TeX-arg-pagestyle' Prompt for a LaTeX pagestyle with completion. `TeX-arg-verb' Prompt for delimiter and text. `TeX-arg-pair' Insert a pair of numbers, use arguments for prompt. The numbers are surrounded by parentheses and separated with a comma. `TeX-arg-size' Insert width and height as a pair. No arguments. `TeX-arg-coordinate' Insert x and y coordinates as a pair. No arguments. If you add new hooks, you can assume that point is placed directly after the previous argument, or after the macro name if this is the first argument. Please leave point located after the argument you are inserting. If you want point to be located somewhere else after all hooks have been processed, set the value of `exit-mark'. It will point nowhere, until the argument hook sets it.  File: auctex.info, Node: Adding Environments, Next: Adding Other, Prev: Adding Macros, Up: Style Files 5.6.3 Adding Support for Environments ------------------------------------- Adding support for environments is very much like adding support for TeX macros, except that each environment normally only takes one argument, an environment hook. The example is again a short version of `latex.el'. (TeX-add-style-hook "latex" (lambda () (LaTeX-add-environments '("document" LaTeX-env-document) '("enumerate" LaTeX-env-item) '("itemize" LaTeX-env-item) '("list" LaTeX-env-list)))) It is completely up to the environment hook to insert the environment, but the function `LaTeX-insert-environment' may be of some help. The hook will be called with the name of the environment as its first argument, and extra arguments can be provided by adding them to a list after the hook. For simple environments with arguments, for example defined with `\newenvironment', you can make AUCTeX prompt for the arguments by giving the prompt strings in the call to `LaTeX-add-environments'. The fact that an argument is optional can be indicated by wrapping the prompt string in a vector. For example, if you have defined a `loop' environment with the three arguments FROM, TO, and STEP, you can add support for them in a style file. %% loop.sty \newenvironment{loop}[3]{...}{...} ;; loop.el (TeX-add-style-hook "loop" (lambda () (LaTeX-add-environments '("loop" "From" "To" "Step")))) If an environment is defined multiple times, AUCTeX will choose the one with the longest definition. Thus, if you have an enumerate style file, and want it to replace the standard LaTeX enumerate hook above, you could define an `enumerate.el' file as follows, and place it in the appropriate style directory. (TeX-add-style-hook "latex" (lambda () (LaTeX-add-environments '("enumerate" LaTeX-env-enumerate foo)))) (defun LaTeX-env-enumerate (environment &optional ignore) ...) The symbol `foo' will be passed to `LaTeX-env-enumerate' as the second argument, but since we only added it to overwrite the definition in `latex.el' it is just ignored. -- Function: LaTeX-add-environments ENV ... Add each ENV to list of loaded environments. -- Function: LaTeX-insert-environment ENV [ EXTRA ] Insert environment of type ENV, with optional argument EXTRA. Following is a list of available hooks for `LaTeX-add-environments': `LaTeX-env-item' Insert the given environment and the first item. `LaTeX-env-figure' Insert the given figure-like environment with a caption and a label. `LaTeX-env-array' Insert the given array-like environment with position and column specifications. `LaTeX-env-label' Insert the given environment with a label. `LaTeX-env-list' Insert the given list-like environment, a specifier for the label and the first item. `LaTeX-env-minipage' Insert the given minipage-like environment with position and width specifications. `LaTeX-env-tabular*' Insert the given tabular*-like environment with width, position and column specifications. `LaTeX-env-picture' Insert the given environment with width and height specifications. `LaTeX-env-bib' Insert the given environment with a label for a bibitem. `LaTeX-env-contents' Insert the given environment with a filename as its argument. `LaTeX-env-args' Insert the given environment with arguments. You can use this as a hook in case you want to specify multiple complex arguments just like in elements of `TeX-add-symbols'. This is most useful if the specification of arguments to be prompted for with strings and strings wrapped in a vector as described above is too limited. Here is an example from `listings.el' which calls a function with one argument in order to prompt for a key=value list to be inserted as an optional argument of the `lstlisting' environment: (LaTeX-add-environments `("lstlisting" LaTeX-env-args [TeX-arg-key-val ,LaTeX-listings-key-val-options]))  File: auctex.info, Node: Adding Other, Next: Hacking the Parser, Prev: Adding Environments, Up: Style Files 5.6.4 Adding Other Information ------------------------------ You can also specify bibliographical databases and labels in the style file. This is probably of little use, since this information will usually be automatically generated from the TeX file anyway. -- Function: LaTeX-add-bibliographies BIBLIOGRAPHY ... Add each BIBLIOGRAPHY to list of loaded bibliographies. -- Function: LaTeX-add-labels LABEL ... Add each LABEL to the list of known labels.  File: auctex.info, Node: Hacking the Parser, Prev: Adding Other, Up: Style Files 5.6.5 Automatic Extraction of New Things ---------------------------------------- The automatic TeX information extractor works by searching for regular expressions in the TeX files, and storing the matched information. You can add support for new constructs to the parser, something that is needed when you add new commands to define symbols. For example, in the file `macro.tex' I define the following macro. \newcommand{\newmacro}[5]{% \def#1{#3\index{#4@#5~cite{#4}}\nocite{#4}}% \def#2{#5\index{#4@#5~cite{#4}}\nocite{#4}}% } AUCTeX will automatically figure out that `newmacro' is a macro that takes five arguments. However, it is not smart enough to automatically see that each time we use the macro, two new macros are defined. We can specify this information in a style hook file. ;;; macro.el --- Special code for my own macro file. ;;; Code: (defvar TeX-newmacro-regexp '("\\\\newmacro{\\\\\\([a-zA-Z]+\\)}{\\\\\\([a-zA-Z]+\\)}" (1 2) TeX-auto-multi) "Matches \newmacro definitions.") (defvar TeX-auto-multi nil "Temporary for parsing \\newmacro definitions.") (defun TeX-macro-cleanup () "Move symbols from `TeX-auto-multi' to `TeX-auto-symbol'." (mapcar (lambda (list) (mapcar (lambda (symbol) (setq TeX-auto-symbol (cons symbol TeX-auto-symbol))) list)) TeX-auto-multi)) (defun TeX-macro-prepare () "Clear `Tex-auto-multi' before use." (setq TeX-auto-multi nil)) (add-hook 'TeX-auto-prepare-hook 'TeX-macro-prepare) (add-hook 'TeX-auto-cleanup-hook 'TeX-macro-cleanup) (TeX-add-style-hook "macro" (lambda () (TeX-auto-add-regexp TeX-newmacro-regexp) (TeX-add-symbols '("newmacro" TeX-arg-macro (TeX-arg-macro "Capitalized macro: \\") t "BibTeX entry: " nil)))) ;;; macro.el ends here When this file is first loaded, it adds a new entry to `TeX-newmacro-regexp', and defines a function to be called before the parsing starts, and one to be called after the parsing is done. It also declares a variable to contain the data collected during parsing. Finally, it adds a style hook which describes the `newmacro' macro, as we have seen it before. So the general strategy is: Add a new entry to `TeX-newmacro-regexp'. Declare a variable to contain intermediate data during parsing. Add hook to be called before and after parsing. In this case, the hook before parsing just initializes the variable, and the hook after parsing collects the data from the variable, and adds them to the list of symbols found. -- Variable: TeX-auto-regexp-list List of regular expressions matching TeX macro definitions. The list has the following format ((REGEXP MATCH TABLE) ...), that is, each entry is a list with three elements. REGEXP. Regular expression matching the macro we want to parse. MATCH. A number or list of numbers, each representing one parenthesized subexpression matched by REGEXP. TABLE. The symbol table to store the data. This can be a function, in which case the function is called with the argument MATCH. Use `TeX-match-buffer' to get match data. If it is not a function, it is presumed to be the name of a variable containing a list of match data. The matched data (a string if MATCH is a number, a list of strings if MATCH is a list of numbers) is put in front of the table. -- Variable: TeX-auto-prepare-hook nil List of functions to be called before parsing a TeX file. -- Variable: TeX-auto-cleanup-hook nil List of functions to be called after parsing a TeX file.  File: auctex.info, Node: Appendices, Next: Indices, Prev: Customization, Up: Top Appendix A Copying, Changes, Development, FAQ, Texinfo Mode *********************************************************** * Menu: * Copying this Manual:: * Changes:: * Development:: * FAQ:: * Texinfo mode::  File: auctex.info, Node: Copying this Manual, Next: Changes, Up: Appendices A.1 Copying this Manual ======================= The copyright notice for this manual is: This manual is for AUCTeX (version 11.87 from 2012-11-30), a sophisticated TeX environment for Emacs. Copyright (C) 1992, 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." The full license text can be read here: * Menu: * GNU Free Documentation License:: License for copying this manual.  File: auctex.info, Node: GNU Free Documentation License, Up: Copying this Manual A.1.1 GNU Free Documentation License ------------------------------------ Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. `http://fsf.org/' Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See `http://www.gnu.org/copyleft/'. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ---------------------------------------------------- To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: auctex.info, Node: Changes, Next: Development, Prev: Copying this Manual, Up: Appendices A.2 Changes and New Features ============================ News since 11.87 ---------------- * AUCTeX now supports Biber in conjunction with biblatex in addition to BibTeX. * Each AUCTeX mode now has its own abbrev table. On Emacsen which provide the possibility to inherit abbrevs from other tables, the abbrevs from the Text mode abbrev table are available as well. Newly defined abbrevs are written to the mode-specific tables, though. * The file `tex-fptex.el' was removed. * Forward/backward search for Evince has been improved. If Emacs is compiled with DBUS support and a recent Evince version (3.x) is installed, the communication goes over the desktop bus instead of the command line, resulting in more accurate positioning of point in Emacs and highlighting of the target paragraph in Evince. * A problem where Ghostscript threw an /invalidfileaccess error when running preview-latex was fixed. * A lot of smaller fixes and additions have been made. News in 11.86 ------------- * Parsing of LaTeX output was improved. It is now less likely that AUCTeX opens a non-existent file upon calling `TeX-next-error'; a problem for example encountered when using MiKTeX 2.8. In addition quoted file names as emitted by MiKTeX are now supported. * A new framework for the definition and selection of viewers was implemented. If you have customizations regarding viewers you will have to redo them in this new framework or reenable the old one. *Note Starting Viewers::, for details. * Comprehensive editing support for PSTricks was added. * Support for various LaTeX packages was added, e.g. `tabularx', `CJK', and `hyperref'. * An easy way to switch between TeX engines (PDFTeX, LuaTeX, XeTeX, Omega) was added. * Support for SyncTeX was added. This involves the command line options for LaTeX and the viewer. * Folding can now be customized to use macro arguments as replacement text. * `preview.sty' now works with XeTeX. * A lot of smaller and larger bugs have been squashed. News in 11.85 ------------- * Font locking has been improved significantly. It is now less prone to color bleeding which could lead to high resource usage. In addition it now includes information about LaTeX macro syntax and can indicate syntactically incorrect macros in LaTeX mode. * The license was updated to GPLv3. * Support for the nomencl, flashcards and comment LaTeX packages as well as the Icelandic language option of babel were added. * Support for folding of math macros was added. * Lots of minor bugs in features and documentation fixed. News in 11.84 ------------- * There have been problems with the `-without-texmf-dir' option to `configure' when the value of `-with-kpathsea-sep' was set or determined for an installation system with a default different from that of the runtime system. `with-kpathsea-sep' has been removed; the setting is now usually determined at runtime. Due to this and other problems, preview-latex in the released XEmacs package failed under Windows or with anything except recent 21.5 XEmacsen. * AUCTeX and preview-latex have been changed in order to accommodate file names containing spaces. preview-latex now tolerates bad PostScript code polluting the stack (like some Omega fonts). * `preview.sty' had in some cases failed to emit PostScript header specials. * Support for folding of comments was added. * The `polish' language option of the babel LaTeX package as well as the polski LaTeX package are now supported. Most notably this means that AUCTeX will help to insert quotation marks as defined by polish.sty (`"`..."'') and polski.sty (`,,...'''). * The TeX tool bar is now available and enabled by default in plain TeX mode. *Note Processing Facilities::. * Bug fix in the display of math subscripts and superscripts. * Bug fix `TeX-doc' for Emacs 21. * There has been quite a number of other bug fixes to various features and documentation across the board. News in 11.83 ------------- * The new function `TeX-doc' provides easy access to documentation about commands and packages or information related to TeX and friends in general. *Note Documentation::. * You can now get rid of generated intermediate and output files by means of the new `Clean' and `Clean All' entries in `TeX-command-list' accessible with `C-c C-c' or the Command menu. *Note Cleaning::. * Support for forward search with PDF files was added. That means you can jump to a place in the output file corresponding to the position in the source file. *Note Viewing::. Adding support for this feature required the default value of the variable `TeX-output-view-style' to be changed. Please make sure you either remove any customizations overriding the new default or incorporate the changes into your customizations if you want to use this feature. * TeX error messages of the `-file-line-error' kind are now understood in AUCTeX and preview-latex (parsers are still separate). * Bug fix in XyMTeX support. * The LaTeX tool bar is now enabled by default. *Note Processing Facilities::. News in 11.82 ------------- * Support for the MinionPro LaTeX package was added. * Warnings and underfull/overfull boxes are now being indicated in the echo area after a LaTeX run, if the respective debugging options are activated with `TeX-toggle-debug-warnings' (`C-c C-t C-w') or `TeX-toggle-debug-bad-boxes' (`C-c C-t C-b'). In this case `TeX-next-error' will find these warnings in addition to normal errors. The key binding `C-c C-w' for `TeX-toggle-debug-bad-boxes' (which was renamed from `TeX-toggle-debug-boxes') now is deprecated. * AUCTeX now can automatically insert a pair of braces after typing <_> or <^> in math constructs if the new variable `TeX-electric-sub-and-superscript' is set to a non-nil value. * Some language-specific support for French was added. There now is completion support for the commands provided by the `frenchb' (and `francais') options of the babel LaTeX package and easier input of French quotation marks (`\\og ...\\fg') which can now be inserted by typing <">. * Completion support for options of some LaTeX packages was added. * Already in version 11.81 the way to activate AUCTeX changed substantially. This should now be done with `(load "auctex.el" nil t t)' instead of the former `(require 'tex-site)'. Related to this change `tex-mik.el' does not load `tex-site.el' anymore. That means if you used only `(require 'tex-mik)' in order to activate AUCTeX, you have to add `(load "auctex.el" nil t t)' before the latter statement. *Note Loading the package::. * Handling of verbatim constructs was consolidated across AUCTeX. This resulted in the font-latex-specific variables `font-latex-verb-like-commands', `font-latex-verbatim-macros', and `font-latex-verbatim-environments' being removed and the more general variables `LaTeX-verbatim-macros-with-delims', `LaTeX-verbatim-macros-with-braces', and `LaTeX-verbatim-environments' being added. * The output of a BibTeX run is now checked for warnings and errors, which are reported in the echo area. * The aliases for `font-latex-title-fontify' were removed. Use `font-latex-fontify-sectioning' instead. * The problem that Japanese macros where broken across lines was fixed. * Various bug fixes. News in 11.81 ------------- * `LaTeX-mark-section' now marks subsections of a given section as well. The former behavior is available via the prefix argument. * preview-latex which was previously available separately became a subsystem of AUCTeX. There is no documented provision for building or installing preview-latex separately. It is still possible to use and install AUCTeX without preview-latex, however. * The installation procedures have been overhauled and now also install startup files as part of the process (those had to be copied manually previously). You are advised to remove previous installations of AUCTeX and preview-latex before starting the installation procedure. A standard installation from an unmodified tarball no longer requires Makeinfo or Perl. Also note that the way AUCTeX is supposed to be activated changed. Instead of `(require 'tex-site)' you should now use `(load "auctex.el" nil t t)'. While the former method may still work, the new method has the advantage that you can deactivate a preactivated AUCTeX with the statement `(unload-feature 'tex-site)' before any of its modes have been used. This may be important especially for site-wide installations. * Support for the babel LaTeX package was added. * Folding a buffer now ensures that the whole buffer is fontified before the actual folding is carried out. If this results in unbearably long execution times, you can fall back to the old behavior of relying on stealth font locking to do this job in the background by customizing the variable `TeX-fold-force-fontify'. * Folded content now reveals part of its original text in a tooltip or the echo area when hovering with the mouse pointer over it. * The language-specific insertion of quotation marks was generalized. The variables `LaTeX-german-open-quote', `LaTeX-german-close-quote', `LaTeX-german-quote-after-quote', `LaTeX-italian-open-quote', `LaTeX-italian-close-quote', and `LaTeX-italian-quote-after-quote' are now obsolete. If you are not satisfied with the default settings, you should customize `TeX-quote-language-alist' instead. * Similar to language-specific quote insertion, AUCTeX now helps you with hyphens in different languages as well. *Note European::, for details. * Fill problems in Japanese text introduced in AUCTeX 11.55 were fixed. AUCTeX tries not to break lines between 1-byte and 2-byte chars. These features will work in Chinese text, too. * The scaling factor of the fontification of sectioning commands can now be customized using the variable `font-latex-fontify-sectioning'. This variable was previously called `font-latex-title-fontify'; In this release we provide an alias but this will disappear in one of the the next releases. The faces for the sectioning commands are now called `font-latex-sectioning-N-face' (N=0...5) instead of `font-latex-title-N-face' (N=1...4). Analogously the names of the variables holding the related keyword lists were changed from `font-latex-title-N-keywords' to `font-latex-sectioning-N-keywords'. *Note Font Locking::, for details. Make sure to adjust your customizations. * Titles in beamer slides marked by the "\frametitle" command are know displayed with the new face `font-latex-slide-title-face'. You can add macros to be highlighted with this face to `font-latex-match-slide-title-keywords'. * Of course a lot of bugs have been fixed. News in 11.55 ------------- * A bug was fixed which lead to the insertion of trailing whitespace during filling. In particular extra spaces were added to sentence endings at the end of lines. You can make this whitespace visible by setting the variable `show-trailing-whitespace' to `t'. If you want to delete all trailing whitespace in a buffer, type `M-x delete-trailing-whitespace RET'. * A bug was fixed which lead to a `*Compile-Log*' buffer popping up when the first LaTeX file was loaded in an Emacs session. * On some systems the presence of an outdated Emacspeak package lead to the error message `File mode specification error: (error "Variable binding depth exceeds max-specpdl-size")'. Precautions were added which prevent this error from happening. But nevertheless, it is advised to upgrade or uninstall the outdated Emacspeak package. * The value of `TeX-macro-global' is not determined during configuration anymore but at load time of AUCTeX. Consequently the associated configuration option `--with-tex-input-dirs' was removed. * Support for the LaTeX Japanese classes `jsarticle' and `jsbook' was added. News in 11.54 ------------- * The parser (used e.g. for `TeX-auto-generate-global') was extended to recognize keywords common in LaTeX packages and classes, like "\DeclareRobustCommand" or "\RequirePackage". Additionally a bug was fixed which led to duplicate entries in AUCTeX style files. * Folding can now be done for paragraphs and regions besides single constructs and the whole buffer. With the new `TeX-fold-dwim' command content can both be hidden and shown with a single key binding. In course of these changes new key bindings for unfolding commands where introduced. The old bindings are still present but will be phased out in future releases. * Info files of the manual now have a .info extension. * There is an experimental tool bar support now. It is not activated by default. If you want to use it, add (add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar) to your init file. * The manual now contains a new chapter "Quick Start". It explains the main features and how to use them, and should be enough for a new user to start using AUCTeX. * A new section "Font Locking" was added to the manual which explains syntax highlighting in AUCTeX and its customization. Together with the sections related to folding and outlining, the section is part of the new chapter "Display". * Keywords for syntax highlighting of LaTeX constructs to be typeset in bold, italic or typewriter fonts may now be customized. Besides the built-in classes, new keyword classes may be added by customizing the variable `font-latex-user-keyword-classes'. The customization options can be found in the customization group `font-latex-keywords'. * Verbatim content is now displayed with the `fixed-pitch' face. (GNU Emacs only) * Syntax highlighting should not spill out of verbatim content anymore. (GNU Emacs only) * Verbatim commands like `\verb|...|' will not be broken anymore during filling. * You can customize the completion for graphic files with `LaTeX-includegraphics-read-file'. * Support for the LaTeX packages `url', `listings', `jurabib' and `csquotes' was added with regard to command completion and syntax highlighting. * Performance of fontification and filling was improved. * Insertion of nodes in Texinfo mode now supports completion of existing node names. * Setting the variable `LaTeX-float' to `nil' now means that you will not be prompted for the float position of figures and tables. You can get the old behaviour of `nil' by setting the variable to `""', i.e. an empty string. See also *note Floats::. * The XEmacs-specific bug concerning `overlays-at' was fixed. * Lots of bug fixes. News in 11.53 ------------- * The LaTeX math menu can include Unicode characters if your Emacs built supports it. See the variable `LaTeX-math-menu-unicode', *note Mathematics::. * Bug fixes for XEmacs. * Completion for graphic files in the TeX search path has been added. * `start' is used for the viewer for MiKTeX and fpTeX. * The variable `TeX-fold-preserve-comments' can now be customized to deactivate folding in comments. News in 11.52 ------------- * Installation and menus under XEmacs work again (maybe for the first time). * Fontification of subscripts and superscripts is now disabled when the fontification engine is not able to support it properly. * Bug fixes in the build process. News in 11.51 ------------- * PDFTeX and Source Special support did not work with ConTeXt, this has been fixed. Similar for Source Special support under Windows. * Omega support has been added. * Bug fixes in the build process. * `TeX-fold' now supports folding of environments in Texinfo mode. News in 11.50 ------------- * The use of source specials when processing or viewing the document can now be controlled with the new `TeX-source-specials' minor mode which can be toggled via an entry in the Command menu or the key binding `C-c C-t C-s'. If you have customized the variable `TeX-command-list', you have to re-initialize it for this to work. This means to open a customization buffer for the variable by typing `M-x customize-variable RET TeX-command-list RET', selecting "Erase Customization" and do your customization again with the new default. * The content of the command menu now depends on the mode (plain TeX, LaTeX, ConTeXt etc.). Any former customization of the variable `TeX-command-list' has to be erased. Otherwise the command menu and the customization will not work correctly. * Support for hiding and auto-revealing macros, e.g. footnotes or citations, and environments in a buffer was added, *note Folding::. * You can now control if indentation is done upon typing by customizing the variable `TeX-newline-function', *note Indenting::. * Limited support for `doc.sty' and `ltxdoc.cls' (`dtx' files) was added. The new docTeX mode provides functionality for editing documentation parts. This includes formatting (indenting and filling), adding and completion of macros and environments while staying in comments as well as syntax highlighting. (Please note that the mode is not finished yet. For example syntax highlighting does not work yet in XEmacs.) * For macro completion in docTeX mode the AUCTeX style files `doc.el', `ltxdoc.el' and `ltx-base.el' were included. The latter provides general support for low-level LaTeX macros and may be used with LaTeX class and style files as well. It is currently not loaded automatically for those files. * Support for ConTeXt with a separate ConTeXt mode is now included. Macro definitions for completion are available in Dutch and English. * The filling and indentation code was overhauled and is now able to format commented parts of the source syntactically correct. Newly available functionality and customization options are explained in the manual. * Filling and indentation in XEmacs with preview-latex and activated previews lead to the insertion of whitespace before multi-line previews. AUCTeX now contains facilities to prevent this problem. * If `TeX-master' is set to `t', AUCTeX will now query for a master file only when a new file is opened. Existing files will be left alone. The new function `TeX-master-file-ask' (bound to `C-c _' is provided for adding the variable manually. * Sectioning commands are now shown in a larger font on display devices which support such fontification. The variable `font-latex-title-fontify' can be customized to restore the old appearance, i.e. the usage of a different color instead of a change in size. * Support for `alphanum.sty', `beamer.cls', `booktabs.sty', `captcont.sty', `emp.sty', `paralist.sty', `subfigure.sty' and `units.sty'/`nicefrac.sty' was added. Credits go to the authors mentioned in the respective AUCTeX style files. * Inserting graphics with `C-c RET \includegraphics RET' was improved. See the variable `LaTeX-includegraphics-options-alist'. * If `LaTeX-default-position' is `nil', don't prompt for position arguments in Tabular-like environments, see *note Tabular-like::. * Completion for available packages when using `C-c RET \usepackage RET' was improved on systems using the kpathsea library. * The commenting functionality was fixed. The separate functions for commenting and uncommenting were unified in one function for paragraphs and regions respectively which do both. * Syntax highlighting can be customized to fontify quotes delimited by either >>German<< or <> quotation marks by changing the variable `font-latex-quotes'. * Certain TeX/LaTeX keywords for functions, references, variables and warnings will now be fontified specially. You may add your own keywords by customizing the variables `font-latex-match-function-keywords', `font-latex-match-reference-keywords', `font-latex-match-variable-keywords' and `font-latex-match-warning-keywords'. * If you include the style files `german' or `ngerman' in a document (directly or via the `babel' package), you should now customize `LaTeX-german-open-quote', `LaTeX-german-close-quote' and `LaTeX-german-quote-after-quote' instead of `TeX-open-quote', `TeX-close-quote' and `TeX-quote-after-quote' if you want to influence the type of quote insertion. * Upon viewing an output file, the right viewer and command line options for it are now determined automatically by looking at the extension of the output file and certain options used in the source file. The behavior can be adapted or extended respectively by customizing the variable `TeX-output-view-style'. * You can control whether `TeX-insert-macro' (`C-c RET') ask for all optional arguments by customizing the variable `TeX-insert-macro-default-style', *note Completion::. * `TeX-run-discard' is now able to completely detach a process that it started. * The build process was enhanced and is now based on `autoconf' making installing AUCTeX a mostly automatic process. See *note Installation:: and *note Installation under MS Windows:: for details. News in 11.14 ------------- * Many more LaTeX and LaTeX2e commands are supported. Done by Masayuki Ataka News in 11.12 ------------- * Support for the KOMA-Script classes. Contributed by Mark Trettin . News in 11.11 ------------- * Support for `prosper.sty', see `http://prosper.sourceforge.net/'. Contributed by Phillip Lord . News in 11.10 ------------- * `comment-region' now inserts %% by default. Suggested by "Davide G. M. Salvetti" . News in 11.06 ------------- * You can now switch between using the `font-latex' (all emacsen), the `tex-font' (Emacs 21 only) or no special package for font locking. Customize `TeX-install-font-lock' for this. News in 11.04 ------------- * Now use -t landscape by default when landscape option appears. Suggested by Erik Frisk . News in 11.03 ------------- * Use `tex-fptex.el' for fpTeX support. Contributed by Fabrice Popineau . News in 11.02 ------------- * New user option `LaTeX-top-caption-list' specifies environments where the caption should go at top. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Allow explicit dimensions in `graphicx.sty'. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Limited support for `verbatim.sty'. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * Better support for asmmath items. Patch by ataka@milk.freemail.ne.jp (Masayuki Ataka). * More accurate error parsing. Added by David Kastrup . News in 11.01 ------------- * Bug fixes. Older versions -------------- See the file `history.texi' for older changes.  File: auctex.info, Node: Development, Next: FAQ, Prev: Changes, Up: Appendices A.3 Future Development ====================== The following sections describe future development of AUCTeX. Besides mid-term goals, bug reports and requests we cannot fix or honor right away are being gathered here. If you have some time for Emacs Lisp hacking, you are encouraged to try to provide a solution to one of the following problems. If you don't know Lisp, you may help us to improve the documentation. It might be a good idea to discuss proposed changes on the mailing list of AUCTeX first. * Menu: * Mid-term Goals:: * Wishlist:: * Bugs::  File: auctex.info, Node: Mid-term Goals, Next: Wishlist, Up: Development A.3.1 Mid-term Goals -------------------- * Integration of preview-latex into AUCTeX As of AUCTeX 11.81 preview-latex is a part of AUCTeX in the sense that the installation routines were merged and preview-latex is being packaged with AUCTeX. Further integration will happen at the backend. This involves folding of error parsing and task management of both packages which will ease development efforts and avoid redundant work. * More flexible option and command handling The current state of command handling with `TeX-command-list' is not very flexible because there is no distinction between executables and command line options to be passed to them. Customization of `TeX-command-list' by the user will interfere with updates of AUCTeX. * Error help catalogs Currently, the help for errors is more or less hardwired into `tex.el'. For supporting error help in other languages, it would be sensible to instead arrange error messages in language-specific files, make a common info file from all such catalogs in a given language and look the error texts up in an appropriate index. The user would then specify a preference list of languages, and the errors would be looked up in the catalogs in sequence until they were identified. * Combining `docTeX' with RefTeX Macro cross references should also be usable for document navigation using RefTeX.  File: auctex.info, Node: Wishlist, Next: Bugs, Prev: Mid-term Goals, Up: Development A.3.2 Wishlist -------------- * Documentation lookup for macros A parser could gather information about which macros are defined in which LaTeX packages and store the information in a hashtable which can be used in a backend for `TeX-doc' in order to open the matching documentation for a given macro. The information could also be used to insert an appropriate `\usepackage' statement if the user tries to insert a macro for which the respective package has not been requested yet. * Spell checking of macros A special ispell dictionary for macros could be nice to have. * Quick error overviews An error overview window (extract from the log file with just the error lines, clickable like a "grep" buffer) and/or fringe indicators for errors in the main text would be nice. * A math entry grid A separate frame with a table of math character graphics to click on in order to insert the respective sequence into the buffer (cf. the "grid" of x-symbol). * Crossreferencing support It would be nice if you could index process your favorite collection of `.dtx' files (such as the LaTeX source), just call a command on arbitrary control sequence, and get either the DVI viewer opened right at the definition of that macro (using Source Specials), or the source code of the `.dtx' file. * Better plain TeX support For starters, `LaTeX-math-mode' is not very LaTeX-specific in the first place, and similar holds for indentation and formatting. * Poor man's Source Specials In particular in PDF mode (and where Source Specials cause problems), alternatives would be desirable. One could implement inverse search by something like Heiko Oberdiek's `vpe.sty', and forward search by using the `.aux' file info to correlate labels in the text (possibly in cooperation with RefTeX) with previewer pages. In AUCTeX 11.83, support for forward search with PDF files was added. Currently this only works if you use the pdfsync LaTeX package and xpdf as your PDF viewer. *Note Viewing::. * Page count when compiling should (optionally) go to modeline of the window where the compilation command was invoked, instead of the output window. Suggested by Karsten Tinnefeld . * Command to insert a macrodefinition in the preamble, without moving point from the current location. Suggested by "Jeffrey C. Ely" . * A database of all commands defined in all stylefiles. When a command or environment gets entered that is provided in one of the styles, insert the appropriate `\usepackage' in the preamble. * A way to add and overwrite math mode entries in style files, and to decide where they should be. Suggested by Remo Badii . * Create template for (first) line of tabular environment. * I think prompting for the master is the intended behaviour. It corresponds to a `shared' value for TeX-master. There should probably be a `none' value which wouldn't query for the master, but instead disable all features that relies on TeX-master. This default value for TeX-master could then be controled with mapping based on the extension. * Multiple argument completion for `\bibliography'. In general, I ought to make `,' special for these kind of completions. * Suggest `makeindex' when appropriate. * Use index files (when available) to speed up `C-c C-m include '. * Option not to calculate very slow completions like for `C-c C-m include '. * Font menu should be created from `TeX-font-list'. * Installation procedure written purely in emacs lisp. * Included PostScript files should also be counted as part of the document. * A nice hierarchical by-topic organization of all officially documented LaTeX macros, available from the menu bar. * `TeX-command-default' should be set from the master file, if not set locally. Suggested by Peter Whaite `'. * Make AUCTeX work with `crypt++'. Suggested by Chris Moore `'. * Make AUCTeX work with `longlines'. This would also apply to preview-latex, though it might make sense to unify error processing before attempting this. * The `Spell' command should apply to all files in a document. Maybe it could try to restrict to files that have been modified since last spell check? Suggested by Ravinder Bhumbla `'. * Make <.> check for abbreviations and sentences ending with capital letters. * Use Emacs 19 minibuffer history to choose between previewers, and other stuff. Suggested by John Interrante `'. * Make features. A new command `TeX-update' (`C-c C-u') could be used to create an up-to-date dvi file by repeatedly running BibTeX, MakeIndex and (La)TeX, until an error occurs or we are done. An alternative is to have an `Update' command that ensures the `dvi' file is up to date. This could be called before printing and previewing. * Documentation of variables that can be set in a style hook. We need a list of what can safely be done in an ordinary style hook. You can not set a variable that AUCTeX depends on, unless AUCTeX knows that it has to run the style hooks first. Here is the start of such a list. `LaTeX-add-environments' `TeX-add-symbols' `LaTeX-add-labels' `LaTeX-add-bibliographies' `LaTeX-largest-level' * Completion for counters and sboxes. * Outline should be (better) supported in TeX mode. At least, support headers, trailers, as well as TeX-outline-extra. * `TeX-header-start' and `TeX-trailer-end'. We might want these, just for fun (and outlines) * Plain TeX and LaTeX specific header and trailer expressions. We should have a way to globally specify the default value of the header and trailer regexps. * Get closer to original `TeX-mode' keybindings. A third initialization file (`tex-mode.el') containing an emulator of the standard `TeX-mode' would help convince some people to change to AUCTeX. * Make `TeX-next-error' parse ahead and store the results in a list, using markers to remember buffer positions in order to be more robust with regard to line numbers and changed files. This is what `next-error' does. (Or did, until Emacs 19). * Finish the Texinfo mode. For one thing, many Texinfo mode commands do not accept braces around their arguments. * Hook up the letter environment with `bbdb.el'.  File: auctex.info, Node: Bugs, Prev: Wishlist, Up: Development A.3.3 Bugs ---------- * The parsed files and style hooks for `example.dtx', `example.sty', `example.drv' and `example.bib' all clash. Bad. * `C-c `' should always stay in the current window, also when it finds a new file. * Do not overwrite emacs warnings about existing auto-save files when loading a new file. * Maybe the regexp for matching a TeX symbol during parsing should be `"\\\\\\([a-zA-Z]+\\|.\\)"' -- `' Peter Thiemann. * AUCTeX should not parse verbatim environments. * Make ``' check for math context in `LaTeX-math-mode'. and simply self insert if not in a math context. * Make `TeX-insert-dollar' more robust. Currently it can be fooled by `\mbox''es and escaped double dollar for example. * Correct indentation for tabular, tabbing, table, math, and array environments. * No syntactic font locking of verbatim macros and environments. (XEmacs only) * Font locking inside of verbatim macros and environments is not inhibited. This may result in syntax highlighting of unbalanced dollar signs and the like spilling out of the verbatim content. (XEmacs only) * Folding of LaTeX constructs spanning more than one line may result in overfull lines. (XEmacs only)  File: auctex.info, Node: FAQ, Next: Texinfo mode, Prev: Development, Up: Appendices A.4 Frequently Asked Questions ============================== 1. Something is not working correctly. What should I do? Well, you might have guessed it, the first place to look is in the available documentation packaged with AUCTeX. This could be the release notes (in the `RELEASE' file) or the news section of the manual in case you are experiencing problems after an upgrade, the `INSTALL' file in case you are having problems with the installation, the section about bugs in the manual in case you encountered a bug or the relevant sections in the manual for other related problems. If this did not help, you can send a bug report to the AUCTeX bug reporting list by using the command `M-x TeX-submit-bug-report RET'. But before you do this, you can try to get more information about the problem at hand which might also help you locate the cause of the error yourself. First, you can try to generate a so-called backtrace which shows the functions involved in a program error. In order to do this, start Emacs with the command line `emacs --debug-init' and/or put the line (setq debug-on-error t) as the first line into your init file. XEmacs users might want to add `(setq stack-trace-on-error t)' as well. After Emacs has started, you can load a file which triggers the error and a new window should pop up showing the backtrace. If you get such a backtrace, please include it in the bug report. Second, you can try to figure out if something in your personal or site configuration triggers the error by starting Emacs without such customizations. You can do this by invoking Emacs with the command line `emacs -q -no-site-file -l auctex'. The `-l' option `auctex.el' which you normally do in your init file. After you have started Emacs like this, you can load the file triggering the error. If everything is working now, you know that you have to search either in the site configuration file or your personal init file for statements related to the problem. 2. What versions of Emacs and XEmacs are supported? AUCTeX was tested with Emacs 21 and XEmacs 21.4.15. Older versions may work but are unsupported. Older versions of XEmacs might possibly made to work by updating the `xemacs-base' package through the XEmacs package system. If you are looking for a recommendation, it would appear that the smoothest working platform on all operating systems at the current point of time would be Emacs 22 or higher. Our success with XEmacs has been less than convincing. Code for core functionality like formatting and syntax highlighting tends to be different and often older than even Emacs 21.4, and Unicode support as delivered is problematic at best, missing on Windows. Both AUCTeX and XEmacs developers don't hear much from active users of the combination. Partly for that reason, problems tend to go unnoticed for long amounts of time and are often found, if at all, after releases. No experiences or recommendations can be given for beta or developer versions of XEmacs. 3. What should I do when `./configure' does not find programs like latex? This is problem often encountered on Windows. Make sure that the `PATH' environment variable includes the directories containing the relevant programs, as described in *note Installation under MS Windows: (auctex)Installation under MS Windows. 4. Why doesn't the completion, style file, or multi-file stuff work? It must be enabled first, insert this in your init file: (setq-default TeX-master nil) (setq TeX-parse-self t) (setq TeX-auto-save t) Read also the chapters about parsing and multifile documents in the manual. 5. Why doesn't `TeX-save-document' work? `TeX-check-path' has to contain "./" somewhere. 6. Why is the information in `foo.tex' forgotten when I save `foo.bib'? For various reasons, AUCTeX ignores the extension when it stores information about a file, so you should use unique base names for your files. E.g. rename `foo.bib' to `foob.bib'. 7. Why doesn't AUCTeX signal when processing a document is done? If the message in the minibuffer stays "Type `C-c C-l' to display results of compilation.", you probably have a misconfiguration in your init file (`.emacs', `init.el' or similar). To track this down either search in the `*Messages*' buffer for an error message or put `(setq debug-on-error t)' as the first line into your init file, restart Emacs and open a LaTeX file. Emacs will complain loudly by opening a debugging buffer as soon as an error occurs. The information in the debugging buffer can help you find the cause of the error in your init file. 8. Why does `TeX-next-error' (`C-c `') fail? When writing the log file, TeX puts information related to a file, including error messages, between a pair of parentheses. AUCTeX determines the file where the error happened by parsing the log file and counting the parentheses. This can fail when there are other, unbalanced parentheses present. As a workaround you can activate so-called file:line:error messages for the log file. (Those are are easier to parse, but may lack some details.) Either you do this in the configuration of your TeX system (consult its manual to see where this is) or you add a command line switch to the (la)tex call, e.g. by customizing `LaTeX-command-style' or `TeX-command-list'. 9. What does AUC stand for? AUCTeX came into being at Aalborg University in Denmark. Back then the Danish name of the university was Aalborg Universitetscenter; AUC for short.  File: auctex.info, Node: Texinfo mode, Prev: FAQ, Up: Appendices A.5 Features specific to AUCTeX's Texinfo major mode ==================================================== AUCTeX includes a major mode for editting Texinfo files. This major mode is not the same mode as the native Texinfo mode (*note (texinfo) Texinfo Mode::) of Emacs, although they have the same name. However, AUCTeX still relies on a number of functions from the native Texinfo mode. The following text describes which functionality is offered by AUCTeX and which by the native Texinfo mode. This should enable you to decide when to consult the AUCTeX manual and when the manual of the native mode. And in case you are a seasoned user of the native mode, the information should help you to swiftly get to know the AUCTeX-specific commands. * Menu: * Exploiting:: How AUCTeX and the native mode work together * Superseding:: Where the native mode is superseded * Mapping:: Where key bindings are mapped to the native mode * Unbinding:: Which native mode key bindings are missing  File: auctex.info, Node: Exploiting, Next: Superseding, Up: Texinfo mode A.5.1 How AUCTeX and the native mode work together -------------------------------------------------- In a nutshell the split between AUCTeX Texinfo mode, and native Texinfo mode is as follows: * Most of the editing (environment creation, commenting, font command insertions) and/or processing commands (e.g. compiling or printing) which are available in other AUCTeX modes are also handled by AUCTeX in Texinfo mode. * Texinfo-related features (e.g. info node linkage or menu creation) rely on the commands provided by the native Texinfo mode. AUCTeX provides the key bindings to reach these functions, keeping the same keys as in native Texinfo whenever possible, or similar ones otherwise.  File: auctex.info, Node: Superseding, Next: Mapping, Prev: Exploiting, Up: Texinfo mode A.5.2 Where the native mode is superseded ----------------------------------------- This section is directed to users of the native Texinfo mode switching to AUCTeX. It follows the summary of the native mode (*note (texinfo) Texinfo Mode Summary::) and lists which of its commands are no longer of use. Insert commands In the native Texinfo mode, frequently used Texinfo commands can be inserted with key bindings of the form `C-c C-c K' where K differs for each Texinfo command; `c' inserts @code, `d' inserts @dfn, `k' @kbd, etc. In AUCTeX commands are inserted with the key binding `C-c C-m' instead which prompts for the macro to be inserted. For font selection commands (like @b, @i, or @emph) and a few related ones (like @var, @key or @code) there are bindings which insert the respective macros directly. They have the form `C-c C-f K' or `C-c C-f C-K' and call the function `TeX-font'. Type `C-c C-f ' to get a list of supported commands. Note that the prefix argument is not handled the same way by AUCTeX. Note also that the node insertion command from the native mode (`texinfo-insert-@node') can still accessed from the Texinfo menu in AUCTeX. Insert braces In AUCTeX braces can be inserted with the same key binding as in the native Texinfo mode: `C-c {'. But AUCTeX uses its own function for the feature: `TeX-insert-braces'. Insert environments The native Texinfo mode does not insert full environments. Instead, it provides the function `texinfo-insert-@end' (mapped to `C-c C-c e') for closing an open environment with a matching @end statement. In AUCTeX you can insert full environments, i.e. both the opening and closing statements, with the function `Texinfo-environment' (mapped to `C-c C-e'). Format info files with makeinfo and TeX In the native Texinfo mode there are various functions and bindings to format a region or the whole buffer for info or to typeset the respective text. For example, there is `makeinfo-buffer' (mapped to `C-c C-m C-b') which runs `makeinfo' on the buffer or there is `texinfo-tex-buffer' (mapped to `C-c C-t C-b') which runs TeX on the buffer in order to produce a DVI file. In AUCTeX different commands for formatting or typesetting can be invoked through the function `TeX-command-master' (mapped to `C-c C-c'). After typing `C-c C-c', you can select the desired command, e.g `Makeinfo' or `TeX', through a prompt in the mini buffer. Note that you can make, say `Makeinfo', the default by adding this statement in your init file: (add-hook 'Texinfo-mode-hook (lambda () (setq TeX-command-default "Makeinfo"))) Note also that `C-c C-c Makeinfo ' is not completely functionally equivalent to `makeinfo-buffer' as the latter will display the resulting info file in Emacs, showing the node corresponding to the position in the source file, just after a successful compilation. This is why, while using AUCTeX, invoking `makeinfo-buffer' might still be more convenient. Note also that in the case of a multifile document, `C-c C-c' in AUCTeX will work on the whole document (provided that the file variable `TeX-master' is set correctly), while `makeinfo-buffer' in the native mode will process only the current buffer, provided at the `@setfilename' statement is provided. Produce indexes and print The native Texinfo mode provides the binding `C-c C-t C-i' (`texinfo-texindex') for producing an index and the bindings `C-c C-t C-p' (`texinfo-tex-print') and `C-c C-t C-q' (`tex-show-print-queue') for printing and showing the printer queue. These are superseded by the respective commands available through `C-c C-c' (`TeX-command-master') in AUCTeX: Index, Print, and Queue. Kill jobs The command `C-c C-t C-k' (`tex-kill-job') in the native mode is superseded by `C-c C-k' (`TeX-kill-job') in AUCTeX.  File: auctex.info, Node: Mapping, Next: Unbinding, Prev: Superseding, Up: Texinfo mode A.5.3 Where key bindings are mapped to the native mode ------------------------------------------------------ This node follows the native Texinfo mode summary (*note (texinfo) Texinfo Mode Summary::) and lists only those commands to which AUCTeX provides a keybinding. Basically all commands of the native mode related to producing menus and interlinking nodes are mapped to same or similar keys in AUCTeX, while a few insertion commands are mapped to AUCTeX-like keys. `@item' insertion The binding `C-c C-c i' for the insertion of `@item' in the native mode is mapped to `M-' or `C-c C-j' in AUCTeX, similar to other AUCTeX modes. `@end' insertion The binding `C-c C-c e' for closing a `@FOO' command by a corresponding `@end FOO' statement in the native mode is mapped to `C-c C-]' in AUCTeX, similar to other AUCTeX modes. Move out of balanced braces The binding `C-}' (`up-list') is available both in the native mode and in AUCTeX. (This is because the command is not implemented in either mode but a native Emacs command.) However, in AUCTeX, you cannot use `C-]' for this, as it is used for `@end' insertion. Update pointers The bindings `C-c C-u C-n' (`texinfo-update-node') and `C-c C-u C-e' (`texinfo-every-node-update') from the native mode are available in AUCTeX as well. Update menus The bindings `C-c C-u m' (`texinfo-master-menu'), `C-c C-u C-m' (`texinfo-make-menu'), and `C-c C-u C-a' (`texinfo-all-menus-update') from the native mode are available in AUCTeX as well. The command `texinfo-start-menu-description', bound to `C-c C-c C-d' in the native mode, is bound to `C-c C-u C-d' in AUCTeX instead.  File: auctex.info, Node: Unbinding, Prev: Mapping, Up: Texinfo mode A.5.4 Which native mode key bindings are missing ------------------------------------------------ The following commands from the native commands might still be useful when working with AUCTeX, however, they are not accessible with a key binding any longer. `@node' insertion The node insertion command, mapped to `C-c C-c n' in the native mode, is not mapped to any key in AUCTeX. You can still access it through the Texinfo menu, though. Another alternative is to use the `C-c C-m' binding for macro insertion in AUCTeX. Show the section structure The command `texinfo-show-structure' (`C-c C-s') from the native mode does not have a key binding in AUCTeX. The binding is used by AUCTeX for sectioning.  File: auctex.info, Node: Indices, Prev: Appendices, Up: Top Indices ******* * Menu: * Key Index:: * Function Index:: * Variable Index:: * Concept Index::  File: auctex.info, Node: Key Index, Next: Function Index, Up: Indices Key Index ========= [index] * Menu: * ": Quotes. (line 15) * $: Quotes. (line 62) * : Indenting. (line 72) * : Indenting. (line 69) * C-c %: Commenting. (line 23) * C-c * <1>: Marking (Texinfo). (line 7) * C-c *: Marking (LaTeX). (line 7) * C-c . <1>: Marking (Texinfo). (line 25) * C-c .: Marking (LaTeX). (line 16) * C-c ;: Commenting. (line 15) * C-c : Itemize-like. (line 10) * C-c ?: Documentation. (line 7) * C-c ]: Environments. (line 56) * C-c ^: Control. (line 18) * C-c _: Multifile. (line 70) * C-c `: Debugging. (line 10) * C-c C-b: Starting a Command. (line 35) * C-c C-c: Starting a Command. (line 13) * C-c C-d: Multifile. (line 98) * C-c C-e: Environments. (line 20) * C-c C-f: Font Specifiers. (line 44) * C-c C-f C-b <1>: Font Specifiers. (line 16) * C-c C-f C-b: Editing Facilities. (line 73) * C-c C-f C-c <1>: Font Specifiers. (line 37) * C-c C-f C-c: Editing Facilities. (line 94) * C-c C-f C-e <1>: Font Specifiers. (line 22) * C-c C-f C-e: Editing Facilities. (line 79) * C-c C-f C-f <1>: Font Specifiers. (line 31) * C-c C-f C-f: Editing Facilities. (line 88) * C-c C-f C-i <1>: Font Specifiers. (line 19) * C-c C-f C-i: Editing Facilities. (line 76) * C-c C-f C-r <1>: Font Specifiers. (line 28) * C-c C-f C-r: Editing Facilities. (line 85) * C-c C-f C-s <1>: Font Specifiers. (line 25) * C-c C-f C-s: Editing Facilities. (line 82) * C-c C-f C-t <1>: Font Specifiers. (line 34) * C-c C-f C-t: Editing Facilities. (line 91) * C-c C-k: Control. (line 10) * C-c C-l: Control. (line 14) * C-c C-m: Completion. (line 30) * C-c C-n: Parsing Files. (line 44) * C-c C-o b: Folding. (line 113) * C-c C-o C-b: Folding. (line 44) * C-c C-o C-c: Folding. (line 110) * C-c C-o C-e: Folding. (line 94) * C-c C-o C-f: Folding. (line 32) * C-c C-o C-m: Folding. (line 85) * C-c C-o C-o: Folding. (line 132) * C-c C-o C-p: Folding. (line 81) * C-c C-o C-r: Folding. (line 78) * C-c C-o i: Folding. (line 125) * C-c C-o p: Folding. (line 121) * C-c C-o r: Folding. (line 117) * C-c C-q C-e: Filling. (line 92) * C-c C-q C-p: Filling. (line 86) * C-c C-q C-r: Filling. (line 101) * C-c C-q C-s: Filling. (line 97) * C-c C-r: Starting a Command. (line 19) * C-c C-s: Sectioning. (line 23) * C-c C-t C-b: Debugging. (line 19) * C-c C-t C-i: Processor Options. (line 29) * C-c C-t C-p: Processor Options. (line 15) * C-c C-t C-r: Starting a Command. (line 61) * C-c C-t C-s: Processor Options. (line 36) * C-c C-t C-w: Debugging. (line 23) * C-c C-v: Starting Viewers. (line 12) * C-c {: Quotes. (line 86) * C-c ~: Mathematics. (line 12) * C-j: Indenting. (line 81) * M-: Completion. (line 20) * M-C-h: Marking (Texinfo). (line 34) * M-q: Filling. (line 89)  File: auctex.info, Node: Function Index, Next: Variable Index, Prev: Key Index, Up: Indices Function Index ============== [index] * Menu: * LaTeX-add-bibliographies: Adding Other. (line 11) * LaTeX-add-environments: Adding Environments. (line 67) * LaTeX-add-labels: Adding Other. (line 14) * LaTeX-close-environment: Environments. (line 56) * LaTeX-env-args: Adding Environments. (line 109) * LaTeX-env-array: Adding Environments. (line 81) * LaTeX-env-bib: Adding Environments. (line 103) * LaTeX-env-contents: Adding Environments. (line 106) * LaTeX-env-figure: Adding Environments. (line 77) * LaTeX-env-item: Adding Environments. (line 74) * LaTeX-env-label: Adding Environments. (line 85) * LaTeX-env-list: Adding Environments. (line 88) * LaTeX-env-minipage: Adding Environments. (line 92) * LaTeX-env-picture: Adding Environments. (line 100) * LaTeX-env-tabular*: Adding Environments. (line 96) * LaTeX-environment: Environments. (line 20) * LaTeX-fill-environment: Filling. (line 81) * LaTeX-fill-paragraph: Filling. (line 86) * LaTeX-fill-region: Filling. (line 101) * LaTeX-fill-section: Filling. (line 97) * LaTeX-indent-line: Indenting. (line 69) * LaTeX-insert-environment: Adding Environments. (line 70) * LaTeX-insert-item: Itemize-like. (line 10) * LaTeX-mark-environment: Marking (LaTeX). (line 16) * LaTeX-mark-section: Marking (LaTeX). (line 7) * LaTeX-math-mode: Mathematics. (line 12) * LaTeX-section: Sectioning. (line 23) * LaTeX-section-heading: Sectioning. (line 85) * LaTeX-section-label: Sectioning. (line 101) * LaTeX-section-section: Sectioning. (line 95) * LaTeX-section-title: Sectioning. (line 89) * LaTeX-section-toc: Sectioning. (line 92) * TeX-add-style-hook: Simple Style. (line 33) * TeX-add-symbols: Adding Macros. (line 25) * TeX-arg-cite: Adding Macros. (line 109) * TeX-arg-conditional: Adding Macros. (line 86) * TeX-arg-coordinate: Adding Macros. (line 172) * TeX-arg-corner: Adding Macros. (line 150) * TeX-arg-counter: Adding Macros. (line 112) * TeX-arg-define-cite: Adding Macros. (line 141) * TeX-arg-define-counter: Adding Macros. (line 144) * TeX-arg-define-environment: Adding Macros. (line 137) * TeX-arg-define-label: Adding Macros. (line 129) * TeX-arg-define-macro: Adding Macros. (line 133) * TeX-arg-define-savebox: Adding Macros. (line 147) * TeX-arg-environment: Adding Macros. (line 106) * TeX-arg-eval: Adding Macros. (line 97) * TeX-arg-file: Adding Macros. (line 118) * TeX-arg-free: Adding Macros. (line 94) * TeX-arg-input-file: Adding Macros. (line 122) * TeX-arg-label: Adding Macros. (line 100) * TeX-arg-literal: Adding Macros. (line 90) * TeX-arg-lr: Adding Macros. (line 153) * TeX-arg-macro: Adding Macros. (line 103) * TeX-arg-pagestyle: Adding Macros. (line 159) * TeX-arg-pair: Adding Macros. (line 165) * TeX-arg-savebox: Adding Macros. (line 115) * TeX-arg-size: Adding Macros. (line 169) * TeX-arg-tb: Adding Macros. (line 156) * TeX-arg-verb: Adding Macros. (line 162) * TeX-auto-generate: Automatic Private. (line 24) * TeX-clean: Cleaning. (line 7) * TeX-command-buffer: Starting a Command. (line 35) * TeX-command-master: Starting a Command. (line 13) * TeX-command-region: Starting a Command. (line 19) * TeX-comment-or-uncomment-paragraph: Commenting. (line 23) * TeX-comment-or-uncomment-region: Commenting. (line 15) * TeX-complete-symbol: Completion. (line 20) * TeX-doc: Documentation. (line 7) * TeX-electric-macro: Completion. (line 67) * TeX-fold-buffer: Folding. (line 44) * TeX-fold-clearout-buffer: Folding. (line 113) * TeX-fold-clearout-item: Folding. (line 125) * TeX-fold-clearout-paragraph: Folding. (line 121) * TeX-fold-clearout-region: Folding. (line 117) * TeX-fold-comment: Folding. (line 110) * TeX-fold-dwim: Folding. (line 132) * TeX-fold-env: Folding. (line 94) * TeX-fold-macro: Folding. (line 85) * TeX-fold-math: Folding. (line 101) * TeX-fold-mode: Folding. (line 32) * TeX-fold-paragraph: Folding. (line 81) * TeX-fold-region: Folding. (line 78) * TeX-font: Font Specifiers. (line 44) * TeX-header-end: Multifile. (line 29) * TeX-home-buffer: Control. (line 18) * TeX-insert-braces: Quotes. (line 86) * TeX-insert-dollar: Quotes. (line 62) * TeX-insert-macro: Completion. (line 30) * TeX-insert-quote: Quotes. (line 15) * TeX-interactive-mode: Processor Options. (line 29) * TeX-kill-job: Control. (line 10) * TeX-master-file-ask: Multifile. (line 70) * TeX-next-error: Debugging. (line 10) * TeX-normal-mode: Parsing Files. (line 44) * TeX-PDF-mode: Processor Options. (line 15) * TeX-pin-region: Starting a Command. (line 61) * TeX-recenter-output-buffer: Control. (line 14) * TeX-save-document: Multifile. (line 98) * TeX-source-correlate-mode <1>: I/O Correlation. (line 12) * TeX-source-correlate-mode: Processor Options. (line 36) * TeX-toggle-debug-bad-boxes: Debugging. (line 19) * TeX-toggle-debug-warnings: Debugging. (line 23) * TeX-view <1>: I/O Correlation. (line 20) * TeX-view: Starting Viewers. (line 12) * Texinfo-mark-environment: Marking (Texinfo). (line 25) * Texinfo-mark-node: Marking (Texinfo). (line 34) * Texinfo-mark-section: Marking (Texinfo). (line 7) auctex-11.87/doc/auctex.info0000644000000000000000000000671712056205161014445 0ustar rootrootThis is auctex.info, produced by makeinfo version 4.13 from auctex.texi. This manual is for AUCTeX (version 11.87 from 2012-11-30), a sophisticated TeX environment for Emacs. Copyright (C) 1992, 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY INFO-DIR-SECTION TeX START-INFO-DIR-ENTRY * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. END-INFO-DIR-ENTRY  Indirect: auctex.info-1: 973 auctex.info-2: 290810  Tag Table: (Indirect) Node: Top973 Node: Copying7008 Node: Introduction8964 Node: Summary9234 Node: Installation11978 Node: Prerequisites13355 Node: Configure16366 Node: Build/install21788 Node: Loading the package22279 Node: Advice for package providers24086 Node: Advice for non-privileged users28034 Node: Installation under MS Windows31991 Node: Customizing47194 Node: Quick Start48777 Ref: Quick Start-Footnote-150766 Node: Editing Facilities50913 Node: Processing Facilities55709 Node: Editing59603 Node: Quotes60919 Node: Font Specifiers64660 Node: Sectioning66486 Node: Environments70800 Node: Equations73166 Node: Floats73757 Node: Itemize-like75296 Node: Tabular-like75838 Node: Customizing Environments76467 Node: Mathematics76707 Node: Completion79634 Node: Marking83696 Node: Marking (LaTeX)84320 Node: Marking (Texinfo)85262 Node: Commenting86872 Node: Indenting88197 Node: Filling93990 Node: Display99313 Node: Font Locking100626 Node: Fontification of macros102701 Node: Fontification of quotes112148 Node: Fontification of math113643 Node: Verbatim content115363 Node: Faces116137 Node: Known problems116626 Node: Folding117554 Node: Outline127987 Node: Processing129241 Node: Commands130404 Node: Starting a Command130960 Node: Selecting a Command134703 Node: Processor Options137787 Node: Viewing143471 Node: Starting Viewers143845 Node: I/O Correlation150013 Node: Debugging152386 Node: Checking153900 Node: Control155204 Node: Cleaning155933 Node: Documentation157146 Node: Customization157926 Node: Modes and Hooks158419 Node: Multifile159627 Node: Parsing Files164338 Node: Internationalization168743 Node: European169924 Node: Japanese176745 Node: Automatic178442 Node: Automatic Global180967 Node: Automatic Private182128 Node: Automatic Local183441 Node: Style Files184528 Node: Simple Style185321 Node: Adding Macros186620 Node: Adding Environments192514 Node: Adding Other196783 Node: Hacking the Parser197370 Node: Appendices201243 Node: Copying this Manual201539 Node: GNU Free Documentation License202474 Node: Changes227612 Node: Development251844 Node: Mid-term Goals252490 Node: Wishlist254052 Node: Bugs260990 Node: FAQ262385 Node: Texinfo mode268429 Node: Exploiting269565 Node: Superseding270383 Node: Mapping274586 Node: Unbinding276415 Node: Indices277236 Node: Key Index277399 Node: Function Index282774 Node: Variable Index290810 Node: Concept Index306815  End Tag Table auctex-11.87/doc/preview-dtxdoc.pl0000755000000000000000000001056211436523755015611 0ustar rootroot#!/usr/bin/perl # Autoconverter from preview.dtx to preview-dtxdoc.texi # Author: Jan-ke Larsson # Maintainer: auctex-devel@gnu.org # Copyright (C) 2002, 2005 Free Software Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. # Commentary: # Simpleminded autoconverter from preview.dtx to preview-dtxdoc.texi # run as 'perl preview-dtxdoc.pl ../latex/preview.dtx preview-dtxdoc.texi' die "Usage: perl preview-dtxdoc.pl infile outfile" unless ($#ARGV == 1); open(STDIN, $ARGV[0]) || die "Can't open $ARGV[0] for reading"; open(STDOUT, "> $ARGV[1]") || die "Can't open $ARGV[1] for writing"; # Eat header MUNGE: while () { last MUNGE if /^% *.section/; } # Fish out possible CR characters. /(\r*)$/; $cr = $1; # Noindent is used sometimes after \end{quote} (see below) $noindent=""; # Quote environments is translated into @example _without_ # @code{..} inside (see below) $quote=""; MAIN: while () { s/^%//; s/\\%/%/g; # Text-substitution macros s/\@/\@\@/g; s/\\#/#/g; s/AUC~?\\TeX[\\ ]?/\@AUCTeX{}/g; s/\\LaTeX[\\ ]?/\@LaTeX{}/g; s/\\TeX[\\ ]?/\@TeX{}/g; s/\\previewlatex[\\ ]?/\@previewlatex{}/g; s/EPS/\@acronym{EPS}/g; s/DVI/\@acronym{DVI}/g; s/~/\@w{ }/g; s/^ *//; # Environments if (s/\\begin\{quote\}/$cr\n\@example/) { $quote="yes" } if (/^\w/) { print $noindent } $noindent = ""; if (s/\\end\{quote\}/\@end example$cr\n/) { $quote=""; $noindent="\@noindent$cr\n" } s/\\begin\{description\}/$cr\n\@table \@w/; # Convoluted pattern: handle # \item[|...|], \item[\meta{..}] and \item[{|[]|}] s/\\item\[\{?(.+?[\|\}])\}?\] ?/\@item $1$cr\n/; s/\\end\{description\}/\@end table$cr\n/; s/\\begin\{enumerate\}/$cr\n\@enumerate/; s/\\item /\@item /; s/\\end\{enumerate\}/\@end enumerate$cr\n/; # Formatting (\cmd is special within {quote}) s/\\texttt/\@option/g; s/\\marg\{([^}]+)\}/\@{\@var{$1}\@}/g; s/\\meta/\@var/g; s/\\emph/\@emph/g; s/\\cmd(\\[\(\)\w]+)/|$1|/g; s/\\cmd\{(.*?)\}/|$1|/g; s/\\oarg\{([^}]+?)\}/\[\@var{$1}\]/g; s/\\char.//g; s/\\raggedright$cr\n//g; s/\\DescribeEnv\{(.*?)\} /\@item \\begin\@{$1\@}\@dots{}\\end\@{$1\@}$cr\n/; if (s/\\DescribeMacro\{(.*?)\}( |$cr\n)/\@item $1$cr\n/) { # Index entries for two important macros if (/(\\Preview(Macro|Environment))( |$cr\n)/) { $_ .= "\@findex $1$cr\n"; } } # ||||||| Hell... I hate bars # Braces WITHIN bars should be escaped like so: @{ @} # and |..| translates to @code{..} or @file{..} depending on content # and to .. if in {quote} @chunks = split /\|/; $odd=0; COMMAND: foreach (@chunks) { if ($odd==0) { $odd=1; } else { s/\{/\@\{/g; s/\}/\@\}/g; if (! $quote) { if (/[.\/]/) { $_="\@file\{".$_."\}"; } else { $_="\@code\{".$_."\}"; } } $odd=0; } } $_=join("",@chunks); # Argh! mixed types occurs in @code{...}@var{..}@file{..} # Should be @file{...@var{..}..} s/\@code(\S*?)\}(\S*)\@file\{/\@file$1$2/g; # Texinfo @node-ification if (s/\\section\{(.*)\}/\@subsection $1/) { if (s/[Oo]ptions/options/) { $_="\@menu$cr\n" . "* Package options::$cr\n" . "* Provided commands::$cr\n" . "\@end menu$cr\n$cr\n" . "\@node Package options, Provided commands, The LaTeX style file, The LaTeX style file$cr\n" . $_; } elsif (s/[Cc]ommands/commands/) { # \Describe... needs @table $_= "\@node Provided commands, ,Package options, The LaTeX style file$cr\n" . $_ . "$cr\n\@table \@code$cr\n"; } } # Stop here # \Describe.... needs @end table if (/^.StopEventually/) { print "\@end table$cr\n"; last MAIN; } print $_; } auctex-11.87/doc/intro.texi0000644000000000000000000000760111074566332014327 0ustar rootroot@include macros.texi @ifset rawfile @paragraphindent none This is the README file for the AUCTeX distribution. @quotation Copyright (C) 2008 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. @end quotation @chapheading Introduction to @AUCTeX{} @end ifset @ifclear rawfile @node Summary @chapter Overview of @AUCTeX{} @end ifclear @ifset rawfile This file gives a brief overview of what @AUCTeX{} is. It is @strong{not} an attempt to document @AUCTeX{}. Real documentation for @AUCTeX{} is available in the manual, which should be available as an info file after installation. @end ifset @AUCTeX{} is a comprehensive customizable integrated environment for writing input files for @TeX{}, @LaTeX{}, @ConTeXt{}, Texinfo, and doc@TeX{} using Emacs or XEmacs. It supports you in the insertion of macros, environments, and sectioning commands by providing completion alternatives and prompting for parameters. It automatically indents your text as you type it and lets you format a whole file at once. The outlining and folding facilities provide you with a focused and clean view of your text. @AUCTeX{} lets you process your source files by running @TeX{} and related tools (such as output filters, post processors for generating indices and bibliographies, and viewers) from inside Emacs. @AUCTeX{} lets you browse through the errors @TeX{} reported, while it moves the cursor directly to the reported error, and displays some documentation for that particular error. This will even work when the document is spread over several files. One component of @AUCTeX{} that @LaTeX{} users will find attractive is @previewlatex{}, a combination of folding and in-source previewing that provides true ``What You See Is What You Get'' experience in your sourcebuffer, while letting you retain full control. @ifset rawfile For more information, see further below. @end ifset More detailed information about the features and usage of @AUCTeX{} can be found in the @ifset rawfile @AUCTeX{} manual. You can access it from within Emacs by typing @kbd{C-h i d m auctex @key{RET}}. If you prefer the standalone info reader, issue the command @code{info auctex} in a terminal. @end ifset @ifclear rawfile remainder of this manual. @end ifclear @AUCTeX{} is written entirely in Emacs Lisp, and hence you can easily add new features for your own needs. It is a GNU project and distributed under the `GNU General Public License Version 3'. The most recent version is always available at @url{http://ftp.gnu.org/pub/gnu/auctex/}. WWW users may want to check out the @AUCTeX{} page at @url{http://www.gnu.org/software/auctex/}. For comprehensive information about how to install @AUCTeX{} @ifset rawfile read the file @file{INSTALL} or @file{INSTALL.windows}, respectively. @end ifset @ifclear rawfile @xref{Installation}, or @ref{Installation under MS Windows}, respectively. @end ifclear If you are considering upgrading @AUCTeX{}, the recent changes are described in @ifset rawfile the @file{CHANGES} file. @end ifset @ifclear rawfile @ref{Changes}. @end ifclear If you want to discuss @AUCTeX{} with other users or its developers, there are several mailing lists you can use. Send a mail with the subject ``subscribe'' to @email{auctex-request@@gnu.org} in order to join the general discussion list for @AUCTeX{}. Articles should be sent to @email{auctex@@gnu.org}. In a similar way, you can subscribe to the @email{info-auctex@@gnu.org} list for just getting important announcements about @AUCTeX{}. The list @email{bug-auctex@@gnu.org} is for bug reports which you should usually file with the @kbd{M-x TeX-submit-bug-report @key{RET}} command. If you want to address the developers of @AUCTeX{} themselves with technical issues, they can be found on the discussion list @email{auctex-devel@@gnu.org}. auctex-11.87/doc/preview-faq.texi0000644000000000000000000003217011316700652015413 0ustar rootroot@c This is part of the preview-latex manual. @c Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009 Free Software @c Foundation, Inc. @c See file preview-latex.texi for copying conditions. @ifset rawfile @include macros.texi @node Frequently Asked Questions, Introduction to FAQ, (dir), (dir) @top Frequently Asked Questions about @previewlatex{} @contents @end ifset @menu * Introduction to FAQ:: * Requirements:: * Installation Trouble:: * Customization:: * Troubleshooting:: * Other formats:: @end menu @comment we need at least one chapter, or the numbers disappear in the @comment plain version of the FAQ. @ifset rawfile @node Introduction to FAQ, Requirements, Frequently Asked Questions, Frequently Asked Questions @chapter Introduction @raisesections @end ifset @ifclear rawfile @node Introduction to FAQ, Requirements, Frequently Asked Questions, Frequently Asked Questions @section Introduction @end ifclear @subsection How can I contribute to the FAQ? Send an email with the subject: @example Preview FAQ @end example to @email{auctex-devel@@gnu.org}. @node Requirements, Installation Trouble, Introduction to FAQ, Frequently Asked Questions @section Requirements @subsection Which version of (X)Emacs is needed? See also the table at the end of the section. @previewlatex{} nominally requires @w{GNU Emacs} with a version of at least 21.1. However, @w{Emacs 22} (currently under development) offers superior performance and wider platform support, and is even now the recommended platform to use. While recent versions of @w{XEmacs 21.4} are supported, doing this in a satisfactory manner has proven to be difficult due to technical shortcomings and differing API's which are hard to come by. If @previewlatex{} is an important part of your editing workflow, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. @subsection Which versions of Ghostscript and @AUCTeX{} are needed? We recommend to use GNU or AFPL Ghostscript with a version of at least 7.07. @previewlatex{} has been distributed as part of @AUCTeX{} since version 11.80. If your version of @AUCTeX{} is older than that, or if it does not contain a working copy of @previewlatex{}, complain to wherever you got it from. @subsection I have trouble with the display format... We recommend keeping the variable @code{preview-image-type} set to @code{dvipng} (if you have it installed) or @code{png}. This is the default and can be set via the Preview/Customize menu. All other formats are known to have inconveniences, either in file size or quality. There are some Emacs versions around not supporting @acronym{PNG}; the proper way to deal with that is to complain to your Emacs provider. Short of that, checking out @acronym{PNM} or @acronym{JPEG} formats might be a good way to find out whether the lack of @acronym{PNG} format support might be the only problem with your Emacs. @subsection For which OS does preview work? It is known to work under the X Window System for Linux and for several flavors of Unix: we have reports for HP and Solaris. There are several development versions of Emacs around for native MacOS Carbon, and @previewlatex{} is working with them, too. With Windows, Cygwin and native ports of XEmacs should work. @previewlatex{} will not work with any native version 21 of Emacs under Windows: you need to get a hold of @w{Emacs 22} which is at the time of this writing not released but available as a developer snapshot. The entry "X11/Unix" currently means Linux, Solaris or HP/UX, as well as the X-specific version for Mac/OSX. @multitable {Win9x native} {Emacs version} {XEmacs version} @item OS @tab Emacs version @tab XEmacs version @item X11/Unix @tab 21.1 @tab 21.4.9 @item Win9x cygwin @tab 21.3.50? @tab 21.4.8 @item Win9x native @tab 22.1 @tab 21.4.8 @item MacOSX native @tab 22.1 @tab -- @end multitable @node Installation Trouble, Customization, Requirements, Frequently Asked Questions @section Installation Trouble @subsection I just get @samp{LaTeX found no preview images}. The reason for this is that @LaTeX{} found no preview images in the document in question. One reason might be that there are no previews to be seen. If you have not used @previewlatex{} before, you might not know its manner of operation. One sure-fire way to test if you just have a document where no previews are to be found is to use the provided example document @file{circ.tex} (you will have to copy it to some directory where you have write permissions). If the symptom persists, you have a problem, and the problem is most likely a @LaTeX{} problem. Here are possible reasons: @table @asis @item Filename database not updated Various @TeX{} distributions have their own ways of knowing where the files are without actually searching directories. The normal @previewlatex{} installation should detect common tools for that purpose and use them. If this goes wrong, or if the files get installed into a place where they are not looked for, the @LaTeX{} run will fail. @item An incomplete manual installation This should not happen if you followed installation instructions. Unfortunately, people know better all the time. If only @file{preview.sty} gets installed without a set of supplementary files also in the @file{latex} subdirectory, @previewlatex{} runs will not generate any errors, but they will not produce any previews, either. @item An outdated @file{preview} installation The @file{preview.sty} package is useful for more than just @previewlatex{}. For example, it is part of @TeX{}live. So you have to make sure that @previewlatex{} does not get to work with outdated style and configuration files: some newer features will not work with older @TeX{} style files, and really old files will make @previewlatex{} fail completely. There usual is a local @file{texmf} tree, or even a user-specific tree that are searched before the default tree. Make sure that the first version of those files that gets found is the correct one. @end table @subsection I have problems with the XEmacs installation Please note that the XEmacs installation is different, since XEmacs has a package system that gets used here. Please make sure that you read and follow the installation instructions for XEmacs. @node Customization, Troubleshooting, Installation Trouble, Frequently Asked Questions @section Customization @subsection Why don't I get balloon help like in the screen shots? Some users have reported problems with their XEmacs version, so balloon help is no longer switched on by default. Use the Preview/Customize menu or @kbd{@key{M-x} customize-variable} in order to customize @code{preview-use-balloon-help} to `On'. This only concerns XEmacs: tooltips under @w{GNU Emacs} are enabled by default and unproblematic. @subsection How to include additional environments like @code{enumerate} By default, @previewlatex{} is intended mainly for displaying mathematical formulas, so environments like @code{enumerate} or @code{tabular} (except where contained in a float) are not included. You can include them however manually by adding the lines: @example \usepackage[displaymath,textmath,sections,graphics,floats]@{preview@} \PreviewEnvironment@{enumerate@} @end example in your document header, that is before @example \begin@{document@} @end example @noindent In general, @file{preview} should be loaded as the last thing before the start of document. Be aware that @example \PreviewEnvironment@{...@} @end example does not accept a comma separated list! Also note that by putting more and more @example \PreviewEnvironment@{...@} @end example in your document, it will look more and more like a @acronym{DVI} file preview when running @previewlatex{}. Since each preview is treated as one large monolithic block by Emacs, one should really restrict previews to those elements where the improvement in visual representation more than makes up for the decreased editability. @subsection What if I don't want to change the document? The easiest way is to generate a configuration file in the current directory. You can basically either create @file{prdefault.cfg} which is used for any use of the @samp{preview} package, or you can use @file{prauctex.cfg} which only applies to the use from with Emacs. Let us assume you use the latter. In that case you should write something like @example \InputIfFileExists@{preview/prauctex.cfg@}@{@}@{@} \PreviewEnvironment@{enumerate@} @end example in it. The first line inputs the system-wide default configuration (the file name should match that, but not your own @file{prauctex.cfg}), then you add your own stuff. @subsection Suddenly I get gazillions of ridiculous pages?!? When @previewlatex{} works on extracting its stuff, it typesets each single preview on a page of its own. This only happens when actual previews get generated. Now if you want to configure @previewlatex{} in your document, you need to add your own @code{\usepackage} call to @samp{preview} so that it will be able to interpret its various definition commands. It is an error to add the @code{active} option to this invocation: you don't want the package to be active unless @previewlatex{} itself enables the previewing operation (which it will). @subsection Does @previewlatex{} work with presentation classes? @previewlatex{} should work with most presentation classes. However, since those classes often have macros or pseudo environments encompassing a complete slide, you will need to use the customization facilities of @file{preview.sty} to tell it how to resolve this, whether you want no previews, previews of whole slides or previews of inner material. @node Troubleshooting, Other formats, Customization, Frequently Asked Questions @section Troubleshooting @subsection Preview causes all sort of strange error messages When running @previewlatex{} and taking a look at either log file or terminal output, lots of messages like @example ! Preview: Snippet 3 started. <-><-> l.52 \item Sie lassen sich als Funktion $ y = f(x)$ darstellen. ! Preview: Snippet 3 ended.(491520+163840x2494310). <-><-> l.52 \item Sie lassen sich als Funktion $y = f(x)$ darstellen. @end example appear (previous versions generated messages looking even more like errors). Those are not real errors (as will be noted in the log file). Or rather, while they @strong{are} really @TeX{} error messages, they are intentional. This currently is the only reliable way to pass the information from the @LaTeX{} run of @previewlatex{} to its Emacs part about where the previews originated in the source text. Since they are actual errors, you will also get @AUCTeX{} to state @example Preview-LaTeX exited as expected with code 1 at Wed Sep 4 17:03:30 @end example after the @LaTeX{} run in the run buffer. This merely indicates that errors were present, and errors will always be present when @previewlatex{} is operating. There might be also real errors, so in case of doubt, look for them explicitly in either run buffer or the resulting @file{.log} file. @subsection Why do my @acronym{DVI} and @acronym{PDF} output files vanish? In order to produce the preview images @previewlatex{} runs @LaTeX{} on the master or region file. The resulting @acronym{DVI} or @acronym{PDF} file can happen to have the same name as the output file of a regular @LaTeX{} run. So the regular output file gets overwritten and is subsequently deleted by @previewlatex{}. @subsection My output file suddenly only contains preview images?! As mentioned in the previews @acronym{FAQ} entry, @previewlatex{} might use the file name of the original output file for the creation of preview images. If the original output file is being displayed with a viewer when this happens, you might see strange effects depending on the viewer, e.g. a message about the file being corrupted or the display of all the preview images instead of your typeset document. (Also @xref{Customization}.) @node Other formats, , Troubleshooting, Frequently Asked Questions @section @previewlatex{} when not using @LaTeX{} @subsection Does @previewlatex{} work with PDF@LaTeX{}? Yes, as long as you use @AUCTeX{}'s own PDF@LaTeX{} mode and have not messed with @samp{TeX-command-list}. @subsection Does @previewlatex{} work with @samp{elatex}? No problem here. If you configure your @AUCTeX{} to use @samp{elatex}, or simply have @samp{latex} point to @samp{elatex}, this will work fine. Modern @TeX{} distributions use e@TeX{} for @LaTeX{}, anyway. @subsection Does @previewlatex{} work with @ConTeXt{}? In short, no. The @samp{preview} package is @LaTeX{}-dependent. Adding support for other formats requires volunteers. @subsection Does @previewlatex{} work with plain TeX? Again, no. Restructuring the @samp{preview} package for @samp{plain} operation would be required. Volunteers welcome. In some cases you might get around by making a wrapper pseudo-Master file looking like the following: @example \documentclass@{article@} \usepackage@{plain@} \begin@{document@} \begin@{plain@} \input myplainfile \end@{plain@} \end@{document@} @end example auctex-11.87/doc/preview-problems.texi0000644000000000000000000002314710251516374016476 0ustar rootroot@include macros.texi @ifset rawfile @c documentencoding is used by makeinfo in our --no-headers output. @documentencoding ISO-8859-1 @node Known problems,,(dir),(dir) @top Known problems @end ifset @c ----------------------- @c @cindex @kbd{M-x preview-report-bug @key{RET}} @c @cindex @code{preview-report-bug} @c @cindex Report a bug A number of issues are known concerning the interoperation with various other software. Some of the known problems can be solved by moving to newer versions of the problematic software or by simple patches. @menu * Problems with Ghostscript:: * Font problems with Dvips:: * Emacs problems:: * Too small bounding boxes:: * x-symbol interoperation:: * Middle-clicks paste instead of toggling:: @end menu If you find something not mentioned here, please send a bug report using @kbd{M-x preview-report-bug @key{RET}}, which will fill in a lot of information interesting to us and send it to the @email{bug-auctex@@gnu.org} list. Please use the bug reporting commands if at all possible. @ifset rawfile @node Problems with Ghostscript @chapter Problems with Ghostscript @raisesections @end ifset @ifclear rawfile @node Problems with Ghostscript @section Problems with Ghostscript @end ifclear Most of the problems encountered come from interaction with Ghostscript. It is a good idea to have a fairly recent version of Ghostscript installed. One problem occurs if you have specified the wrong executable under Windows: the command line version of Ghostscript is called @file{GSWIN32C.EXE}, not @file{GSWIN32.EXE}. When Ghostscript fails, the necessary information and messages from Ghostscript go somewhere. If Ghostscript fails before starting to process images, you'll find the information at the end of the process buffer you can see with @kbd{C-c C-l}. If Ghostscript fails while processing a particular image, this image will be tagged with clickable buttons for the error description and for the corresponding source file. The default options configurable with @display @kbd{M-x customize-variable @key{RET} preview-gs-options @key{RET}} @end display @vindex preview-gs-options @noindent include the options @option{-dTextAlphaBits=4} and @option{-dGraphicsAlphaBits=4}. These options have been reported to make Ghostscript 5.50 fail, but should work under Ghostscript 6.51 and later. If you are experiencing problems, it might help to customize them away. Of course, this also takes away the joy of antialiasing, so upgrading Ghostscript might not be the worst idea after all. The device names have changed over time, so when using an old Ghostscript, you may have problems with the devices demanded by the customizable variable @code{preview-image-creators}. @vindex preview-image-creators In that case, make sure they fit your version of Ghostscript, at least the entry corresponding to the current value of @code{preview-image-type}. @vindex preview-image-type While not being best in file size and image quality, setting @code{preview-image-creators} to @code{jpeg} should probably be one of the best bets for the purpose of checking basic operation, since that device name has not changed in quite some time. But @acronym{JPEG} is not intended for text, but for photographic images. On a more permanent time scale, the best choice is to use @acronym{PNG} and complain to your suppliers if either Emacs or Ghostscript fail to properly accommodate this format. @node Font problems with Dvips @section Font problems with Dvips Some fonts have been reported to produce wrong characters with @previewlatex{}. @previewlatex{} calls Dvips by default with the option @option{-Pwww} in order to get scalable fonts for nice results. If you are using antialiasing, however, the results might be sufficiently nice with bitmapped fonts, anyway. You might try @option{-Ppdf} for another stab at scalable fonts, or other printer definitions. Use @display @kbd{M-x customize-variable @key{RET} preview-fast-dvips-command @key{RET}} @end display @noindent and @display @kbd{M-x customize-variable @key{RET} preview-dvips-command @key{RET}} @end display @noindent in order to customize this. One particular problem is that several printer setup files (typically in a file called @file{/usr/share/texmf/dvips/config/config.pdf} if you are using the @option{-Ppdf} switch) contain the @option{G} option for `character shifting'. This option will result in @samp{fi} being rendered as @samp{@pounds{}} (British Pounds sign) in several fonts, unless your version of Dvips has a long-standing bug in its implementation fixed (only very recent versions of Dvips have). @node Emacs problems @section Emacs problems @itemize @bullet @item GNU Emacs versions Don't use Emacsen older than 21.3 on X11-based systems. On most other systems, you'll need at least @w{Emacs 22.1} or one of the developer versions leading up to it. Details can be found in @ifset rawfile in the @file{INSTALL} file. @end ifset @ifclear rawfile @ref{Prerequisites,,,auctex,the @AUCTeX{} manual}. @end ifclear @item Emacsen on Windows operating systems For @w{Emacs 21}, no image support is available in Emacs under Windows. Without images, @previewlatex{} is useless. The current @acronym{CVS} version of Emacs available from @uref{http://savannah.gnu.org/projects/emacs} now supports images including the @acronym{PNG} format, so @w{Emacs 22} should work out of the box once it is released. Precompiled versions are available from @uref{http://crasseux.com/emacs} and @uref{http://nqmacs.sf.net}. For detailed installation instructions for Windows, see @ifset rawfile the file @file{INSTALL.windows} @end ifset @ifclear rawfile @ref{Installation under MS Windows,,,auctex,the @AUCTeX{} manual}. @end ifclear @item XEmacs There is are two larger problems known with older XEmacs releases. One leads to seriously mispositioned baselines and previews hanging far above other text on the same line. This should be fixed as of XEmacs-21.4.9. The other core bug causes a huge delay when XEmacs's idea of the state of processes (like ghostscript) is wrong, and can lead to nasty spurious error messages. It should be fixed in version 21.4.8. Previews will only remain from one session to the next if you have version 1.81 or above of the @file{edit-utils} package, first released in the 2002-03-12 sumo tarball. @end itemize @node Too small bounding boxes @section Too small bounding boxes The bounding box of a preview is determined by the @LaTeX{} package using the pure @TeX{} bounding boxes. If there is material extending outside of the @TeX{} box, that material will be missing from the preview image. This happens for the label-showing boxes from the @code{showkeys} package. This particular problem can be circumvented by using the @code{showlabels} option of the preview package. In general, you should try to fix the problem in the @TeX{} code, like avoiding drawing outside of the picture with PSTricks. One possible remedy is to set @code{preview-fast-conversion} to `Off' @ifset rawfile (see the manual). @end ifset @ifclear rawfile (@pxref{The Emacs interface}). @end ifclear The conversion will take more time, but will then use the bounding boxes from @acronym{EPS} files generated by Dvips. Dvips generally does not miss things, but it does not understand PostScript constructs like @code{\resizebox} or @code{\rotate} commands, so will generate rather wrong boxes for those. Dvips can be helped with the @code{psfixbb} package option to preview @ifset rawfile (see the manual), @end ifset @ifclear rawfile (@pxref{The LaTeX style file}), @end ifclear which will tag the corners of the included @TeX{} box. This will mostly be convenient for @emph{pure} PostScript stuff like that created by PSTricks, which Dvips would otherwise reserve no space for. @node x-symbol interoperation @section x-symbol interoperation Thanks to the work of Christoph Wedler, starting with version @samp{4.0h/beta} of x-symbol, the line parsing of @AUCTeX{} and @previewlatex{} is fully supported. Earlier versions exhibit problems. However, versions before 4.2.2 will cause a drastic slowdown of @previewlatex{}'s parsing pass, so we don't recommend to use versions earlier than that. If you wonder what x-symbol is, it is a package that transforms various tokens and subscripts to a more readable form while editing and offers a few input methods handy especially for dealing with math. Take a look at @uref{http://x-symbol.sourceforge.net}. x-symbol versions up to 4.5.1-beta at least require an 8bit-clean @TeX{} implementation (meaning that its terminal output should not use @samp{^^}-started escape sequences) for cooperation with @previewlatex{}. Later versions may get along without it, like @previewlatex{} does now. If you experience problems with @file{circ.tex} in connection with both x-symbol and Latin-1 characters, you may need to change your language environment or, as a last resort, customize the variable @code{LaTeX-command-style} by replacing the command @code{latex} with @code{latex -translate-file=cp8bit}. @node Middle-clicks paste instead of toggling @section Middle-clicks paste instead of toggling This is probably the fault of your favorite package. @file{flyspell.el} and @file{mouse-drag.el} are known to be affected in versions before @w{Emacs 21.3}. Upgrade to the most recent version. What version of XEmacs might contain the fixes is unknown. @file{isearch.el} also shows this effect while searches are in progress, but the code is such a complicated mess that no patch is in sight. Better just end the search with @kbd{@key{RET}} before toggling and resume with @kbd{C-s C-s} or similar afterwards. Since previews over the current match will auto-open, anyway, this should not be much of a problem in practice. auctex-11.87/doc/copying.texi0000644000000000000000000000415210251545447014642 0ustar rootroot@include macros.texi @c ----------------------- @cindex Copying @cindex Copyright @cindex GPL @cindex General Public License @cindex License @c @cindex Free @c @cindex Free software @c @cindex Distribution @c @cindex Right @cindex Warranty (This text is stolen from the Texinfo manual, Edition 4.0). The programs currently being distributed that relate to @previewlatex{} include lisp files for Emacs and style files for @LaTeX{}. These programs are @dfn{free}; this means that everyone is free to use them and free to redistribute them on a free basis. The @previewlatex{} related programs are not in the public domain; they are copyrighted and there are restrictions on their distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of these programs that they might get from you. Specifically, we want to make sure that you have the right to give away copies of the programs that relate to @previewlatex{}, that you receive source code or else can get it if you want it, that you can change these programs or use pieces of them in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of the @previewlatex{} related programs, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for the programs that relate to @previewlatex{}. If these programs are modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the licenses for the programs currently being distributed that relate to @previewlatex{} are found in the General Public Licenses that accompany them. auctex-11.87/doc/preview-dtxdoc.texi0000644000000000000000000005032412056205161016127 0ustar rootrootThe main purpose of this package is the extraction of certain environments (most notably displayed formulas) from @LaTeX{} sources as graphics. This works with @acronym{DVI} files postprocessed by either Dvips and Ghostscript or dvipng, but it also works when you are using PDF@TeX{} for generating PDF files (usually also postprocessed by Ghostscript). Current uses of the package include the @previewlatex{} package for WYSIWYG functionality in the @AUCTeX{} editing environment, generation of previews in LyX, as part of the operation of the ps4pdf package, the tbook XML system and some other tools. Producing @acronym{EPS} files with Dvips and its derivatives using the @option{-E} option is not a good alternative: People make do by fiddling around with @code{\thispagestyle@{empty@}} and hoping for the best (namely, that the specified contents will indeed fit on single pages), and then trying to guess the baseline of the resulting code and stuff, but this is at best dissatisfactory. The preview package provides an easy way to ensure that exactly one page per request gets shipped, with a well-defined baseline and no page decorations. While you still can use the preview package with the `classic' @example dvips -E -i @end example @noindent invocation, there are better ways available that don't rely on Dvips not getting confused by PostScript specials. For most applications, you'll want to make use of the @code{tightpage} option. This will embed the page dimensions into the PostScript or PDF code, obliterating the need to use the @code{-E -i} options to Dvips. You can then produce all image files with a single run of Ghostscript from a single PDF or PostScript (as opposed to @acronym{EPS}) file. Various options exist that will pass @TeX{} dimensions and other information about the respective shipped out material (including descender size) into the log file, where external applications might make use of it. The possibility for generating a whole set of graphics with a single run of Ghostscript (whether from @LaTeX{} or PDF@LaTeX{}) increases both speed and robustness of applications. It is also feasible to use dvipng on a @acronym{DVI} file with the options @example -picky -noghostscript @end example @noindent to omit generating any image file that requires Ghostscript, then let a script generate all missing files using Dvips/Ghostscript. This will usually speed up the process significantly. @menu * Package options:: * Provided commands:: @end menu @node Package options, Provided commands, The LaTeX style file, The LaTeX style file @subsection Package options The package is included with the customary @example \usepackage[@var{options}]@{preview@} @end example @noindent You should usually load this package as the last one, since it redefines several things that other packages may also provide. The following options are available: @table @w @item @code{active} is the most essential option. If this option is not specified, the @code{preview} package will be inactive and the document will be typeset as if the @code{preview} package were not loaded, except that all declarations and environments defined by the package are still legal but have no effect. This allows defining previewing characteristics in your document, and only activating them by calling @LaTeX{} as @example latex '\PassOptionsToPackage@{active@}@{preview@} \input@{@var{filename}@}' @end example @item @code{noconfig} Usually the file @file{prdefault.cfg} gets loaded whenever the @code{preview} package gets activated. @file{prdefault.cfg} is supposed to contain definitions that can cater for otherwise bad results, for example, if a certain document class would otherwise lead to trouble. It also can be used to override any settings made in this package, since it is loaded at the very end of it. In addition, there may be configuration files specific for certain @code{preview} options like @code{auctex} which have more immediate needs. The @code{noconfig} option suppresses loading of those option files, too. @item @code{psfixbb} Dvips determines the bounding boxes from the material in the @acronym{DVI} file it understands. Lots of PostScript specials are not part of that. Since the @TeX{} boxes do not make it into the @acronym{DVI} file, but merely characters, rules and specials do, Dvips might include far too small areas. The option @code{psfixbb} will include @file{/dev/null} as a graphic file in the ultimate upper left and lower right corner of the previewed box. This will make Dvips generate an appropriate bounding box. @item @code{dvips} If this option is specified as a class option or to other packages, several packages pass things like page size information to Dvips, or cause crop marks or draft messages written on pages. This seriously hampers the usability of previews. If this option is specified, the changes will be undone if possible. @item @code{pdftex} If this option is set, PDF@TeX{} is assumed as the output driver. This mainly affects the @code{tightpage} option. @item @code{xetex} If this option is set, Xe@TeX{} is assumed as the output driver. This mainly affects the @code{tightpage} option. @item @code{displaymath} will make all displayed math environments subject to preview processing. This will typically be the most desired option. @item @code{floats} will make all float objects subject to preview processing. If you want to be more selective about what floats to pass through to a preview, you should instead use the @code{\PreviewSnarfEnvironment} command on the floats you want to have previewed. @item @code{textmath} will make all text math subject to previews. Since math mode is used throughly inside of @LaTeX{} even for other purposes, this works by redefining @code{\(}, @code{\)} and @code{$} and the @code{math} environment (apparently some people use that). Only occurences of these text math delimiters in later loaded packages and in the main document will thus be affected. @item @code{graphics} will subject all @code{\includegraphics} commands to a preview. @item @code{sections} will subject all section headers to a preview. @item @code{delayed} will delay all activations and redefinitions the @code{preview} package makes until @code{\}@code{begin@{document@}}. The purpose of this is to cater for documents which should be subjected to the @code{preview} package without having been prepared for it. You can process such documents with @example latex '\RequirePackage[active,delayed,@var{options}]@{preview@} \input@{@var{filename}@}' @end example @noindent This relaxes the requirement to be loading the @code{preview} package as last package. @item @var{driver} loads a special driver file @file{pr@var{driver}.def}. The remaining options are implemented through the use of driver files. @item @code{auctex} This driver will produce fake error messages at the start and end of every preview environment that enable the Emacs package @previewlatex{} in connection with @AUCTeX{} to pinpoint the exact source location where the previews have originated. Unfortunately, there is no other reliable means of passing the current @TeX{} input position @emph{in} a line to external programs. In order to make the parsing more robust, this option also switches off quite a few diagnostics that could be misinterpreted. You should not specify this option manually, since it will only be needed by automated runs that want to parse the pseudo error messages. Those runs will then use @code{\PassOptionsToPackage} in order to effect the desired behaviour. In addition, @file{prauctex.cfg} will get loaded unless inhibited by the @code{noconfig} option. This caters for the most frequently encountered problematic commands. @item @code{showlabels} During the editing process, some people like to see the label names in their equations, figures and the like. Now if you are using Emacs for editing, and in particular @previewlatex{}, I'd strongly recommend that you check out the Ref@TeX{} package which pretty much obliterates the need for this kind of functionality. If you still want it, standard @LaTeX{} provides it with the @code{showkeys} package, and there is also the less encompassing @code{showlabels} package. Unfortunately, since those go to some pain not to change the page layout and spacing, they also don't change @code{preview}'s idea of the @TeX{} dimensions of the involved boxes. So if you are using @code{preview} for determing bounding boxes, those packages are mostly useless. The option @code{showlabels} offers a substitute for them. @item @code{tightpage} It is not uncommon to want to use the results of @code{preview} as graphic images for some other application. One possibility is to generate a flurry of @acronym{EPS} files with @example dvips -E -i -Pwww -o @var{outputfile}.000 @var{inputfile} @end example @noindent However, in case those are to be processed further into graphic image files by Ghostscript, this process is inefficient since all of those files need to be processed one by one. In addition, it is necessary to extract the bounding box comments from the @acronym{EPS} files and convert them into page dimension parameters for Ghostscript in order to avoid full-page graphics. This is not even possible if you wanted to use Ghostscript in a@w{ }@emph{single} run for generating the files from a single PostScript file, since Dvips will in that case leave no bounding box information anywhere. The solution is to use the @code{tightpage} option. That way a single command line like @example @option{gs -sDEVICE=png16m -dTextAlphaBits=4 -r300 -dGraphicsAlphaBits=4 -dSAFER -q -dNOPAUSE -sOutputFile=@var{outputfile}%d.png @var{inputfile}.ps} @end example @noindent will be able to produce tight graphics from a single PostScript file generated with Dvips @emph{without} use of the options @code{-E -i}, in a single run. The @code{tightpage} option actually also works when using the @code{pdftex} option and generating PDF files with PDF@TeX{}. The resulting PDF file has separate page dimensions for every page and can directly be converted with one run of Ghostscript into image files. If neither @code{dvips} or @code{pdftex} have been specified, the corresponding option will get autodetected and invoked. If you need this in a batch environment where you don't want to use @code{preview}'s automatic extraction facilities, no problem: just don't use any of the extraction options, and wrap everything to be previewed into @code{preview} environments. This is how LyX does its math previews. If the pages under the @code{tightpage} option are just too tight, you can adjust by setting the length @code{\PreviewBorder} to a different value by using @code{\setlength}. The default value is @file{0.50001bp}, which is half of a usual PostScript point, rounded up. If you go below this value, the resulting page size may drop below @code{1bp}, and Ghostscript does not seem to like that. If you need finer control, you can adjust the bounding box dimensions individually by changing the macro @code{\PreviewBbAdjust} with the help of @code{\renewcommand}. Its default value is @example \newcommand \PreviewBbAdjust @{-\PreviewBorder -\PreviewBorder \PreviewBorder \PreviewBorder@} @end example @noindent This adjusts the left, lower, right and upper borders by the given amount. The macro must contain 4@w{ }@TeX{} dimensions after another, and you may not omit the units if you specify them explicitly instead of by register. PostScript points have the unit@w{ }@code{bp}. @item @code{lyx} This option is for the sake of LyX developers. It will output a few diagnostics relevant for the sake of LyX' preview functionality (at the time of writing, mostly implemented for math insets, in versions of LyX starting with 1.3.0). @item @code{counters} This writes out diagnostics at the start and the end of previews. Only the counters changed since the last output get written, and if no counters changed, nothing gets written at all. The list consists of counter name and value, both enclosed in @code{@{@}} braces, followed by a space. The last such pair is followed by a colon (@code{:}) if it is at the start of the preview snippet, and by a period (@file{.}) if it is at the end. The order of different diagnostics like this being issued depends on the order of the specification of the options when calling the package. Systems like @previewlatex{} use this for keeping counters accurate when single previews are regenerated. @item @code{footnotes} This makes footnotes render as previews, and only as their footnote symbol. A convenient editing feature inside of Emacs. @end table The following options are just for debugging purposes of the package and similar to the corresponding @TeX{} commands they allude to: @table @w @item @code{tracingall} causes lots of diagnostic output to appear in the log file during the preview collecting phases of @TeX{}'s operation. In contrast to the similarly named @TeX{} command, it will not switch to @code{\errorstopmode}, nor will it change the setting of @code{\tracingonline}. @item @code{showbox} This option will show the contents of the boxes shipped out to the @acronym{DVI} files. It also sets @code{\showboxbreadth} and @code{\showboxdepth} to their maximum values at the end of loading this package, but you may reset them if you don't like that. @end table @node Provided commands, ,Package options, The LaTeX style file @subsection Provided commands @table @code @item \begin@{preview@}@dots{}\end@{preview@} The @code{preview} environment causes its contents to be set as a single preview image. Insertions like figures and footnotes (except those included in minipages) will typically lead to error messages or be lost. In case the @code{preview} package has not been activated, the contents of this environment will be typeset normally. @item \begin@{nopreview@}@dots{}\end@{nopreview@} The @code{nopreview} environment will cause its contents not to undergo any special treatment by the @code{preview} package. When @code{preview} is active, the contents will be discarded like all main text that does not trigger the @code{preview} hooks. When @code{preview} is not active, the contents will be typeset just like the main text. Note that both of these environments typeset things as usual when preview is not active. If you need something typeset conditionally, use the @code{\ifPreview} conditional for it. @item \PreviewMacro If you want to make a macro like @findex \PreviewMacro @code{\includegraphics} (actually, this is what is done by the @code{graphics} option to @code{preview}) produce a preview image, you put a declaration like @example \PreviewMacro[*[[!]@{\includegraphics@} @end example @noindent or, more readable, @example \PreviewMacro[@{*[][]@{@}@}]@{\includegraphics@} @end example @noindent into your preamble. The optional argument to @code{\PreviewMacro} specifies the arguments @code{\includegraphics} accepts, since this is necessary information for properly ending the preview box. Note that if you are using the more readable form, you have to enclose the argument in a @code{[@{} and @code{@}]} pair. The inner braces are necessary to stop any included @code{[]} pairs from prematurely ending the optional argument, and to make a single @code{@{@}} denoting an optional argument not get stripped away by @TeX{}'s argument parsing. The letters simply mean @table @w @item @code{*} indicates an optional @code{*} modifier, as in @code{\includegraphics*}. @item @code{[} ^^A] indicates an optional argument in brackets. This syntax is somewhat baroque, but brief. @item @code{[]} also indicates an optional argument in brackets. Be sure to have encluded the entire optional argument specification in an additional pair of braces as described above. @item @code{!} indicates a mandatory argument. @item @code{@{@}} indicates the same. Again, be sure to have that additional level of braces around the whole argument specification. @item @code{?}@var{delimiter}@{@var{true case}@}@{@var{false case}@} is a conditional. The next character is checked against being equal to @var{delimiter}. If it is, the specification @var{true case} is used for the further parsing, otherwise @var{false case} will be employed. In neither case is something consumed from the input, so @{@var{true case}@} will still have to deal with the upcoming delimiter. @item @code{@@}@{@var{literal sequence}@} will insert the given sequence literally into the executed call of the command. @item @code{-} will just drop the next token. It will probably be most often used in the true branch of a @code{?} specification. @item @code{#}@{@var{argument}@}@{@var{replacement}@} is a transformation rule that calls a macro with the given argument and replacement text on the rest of the argument list. The replacement is used in the executed call of the command. This can be used for parsing arbitrary constructs. For example, the @code{[]} option could manually be implemented with the option string @code{?[@{#@{[#1]@}@{[@{#1@}]@}@}@{@}}. PStricks users might enjoy this sort of flexibility. @item @code{:}@{@var{argument}@}@{@var{replacement}@} is again a transformation rule. As opposed to @code{#}, however, the result of the transformation is parsed again. You'll rarely need this. @end table There is a second optional argument in brackets that can be used to declare any default action to be taken instead. This is mostly for the sake of macros that influence numbering: you would want to keep their effects in that respect. The default action should use @code{#1} for referring to the original (not the patched) command with the parsed options appended. Not specifying a second optional argument here is equivalent to specifying@w{ }@code{[#1]}. @item \PreviewMacro* A similar invocation @code{\PreviewMacro*} simply throws the macro and all of its arguments declared in the manner above away. This is mostly useful for having things like @code{\footnote} not do their magic on their arguments. More often than not, you don't want to declare any arguments to scan to @code{\PreviewMacro*} since you would want the remaining arguments to be treated as usual text and typeset in that manner instead of being thrown away. An exception might be, say, sort keys for @code{\cite}. A second optional argument in brackets can be used to declare any default action to be taken instead. This is for the sake of macros that influence numbering: you would want to keep their effects in that respect. The default action might use @code{#1} for referring to the original (not the patched) command with the parsed options appended. Not specifying a second optional argument here is equivalent to specifying@w{ }@code{[]} since the command usually gets thrown away. As an example for using this argument, you might want to specify @example \PreviewMacro*\footnote[@{[]@}][#1@{@}] @end example @noindent This will replace a footnote by an empty footnote, but taking any optional parameter into account, since an optional paramter changes the numbering scheme. That way the real argument for the footnote remains for processing by @previewlatex{}. @item \PreviewEnvironment The macro @findex \PreviewEnvironment @code{\PreviewEnvironment} works just as @code{\PreviewMacro} does, only for environments. @item \PreviewEnvironment* And the same goes for @code{\PreviewEnvironment*} as compared to @code{\PreviewMacro*}. @item \PreviewSnarfEnvironment This macro does not typeset the original environment inside of a preview box, but instead typesets just the contents of the original environment inside of the preview box, leaving nothing for the original environment. This has to be used for figures, for example, since they would @enumerate @item produce insertion material that cannot be extracted to the preview properly, @item complain with an error message about not being in outer par mode. @end enumerate @item \PreviewOpen @item \PreviewClose Those Macros form a matched preview pair. This is for macros that behave similar as @code{\begin} and @code{\end} of an environment. It is essential for the operation of @code{\PreviewOpen} that the macro treated with it will open an additional group even when the preview falls inside of another preview or inside of a @code{nopreview} environment. Similarly, the macro treated with @code{PreviewClose} will close an environment even when inactive. @item \ifPreview In case you need to know whether @code{preview} is active, you can use the conditional @code{\ifPreview} together with @code{\else} and @code{\fi}. @end table auctex-11.87/doc/todo.texi0000644000000000000000000002455111150262723014134 0ustar rootroot@c This is part of the AUCTeX Manual. @c Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. @c See the file auctex.texi for copying conditions. @ifset rawfile @include macros.texi @node Development,,(dir),(dir) @top Future Development of @AUCTeX{} @end ifset The following sections describe future development of @AUCTeX{}. Besides mid-term goals, bug reports and requests we cannot fix or honor right away are being gathered here. If you have some time for Emacs Lisp hacking, you are encouraged to try to provide a solution to one of the following problems. If you don't know Lisp, you may help us to improve the documentation. It might be a good idea to discuss proposed changes on the mailing list of @AUCTeX{} first. @menu * Mid-term Goals:: * Wishlist:: * Bugs:: @end menu @ifset rawfile @node Mid-term Goals @chapter Mid-term Goals @raisesections @end ifset @ifclear rawfile @node Mid-term Goals @section Mid-term Goals @end ifclear @itemize @bullet @item Integration of @previewlatex{} into @AUCTeX{} As of @AUCTeX{} 11.81 @previewlatex{} is a part of @AUCTeX{} in the sense that the installation routines were merged and @previewlatex{} is being packaged with @AUCTeX{}. Further integration will happen at the backend. This involves folding of error parsing and task management of both packages which will ease development efforts and avoid redundant work. @item More flexible option and command handling The current state of command handling with @code{TeX-command-list} is not very flexible because there is no distinction between executables and command line options to be passed to them. Customization of @code{TeX-command-list} by the user will interfere with updates of @AUCTeX{}. @item Error help catalogs Currently, the help for errors is more or less hardwired into @file{tex.el}. For supporting error help in other languages, it would be sensible to instead arrange error messages in language-specific files, make a common info file from all such catalogs in a given language and look the error texts up in an appropriate index. The user would then specify a preference list of languages, and the errors would be looked up in the catalogs in sequence until they were identified. @item Combining @samp{docTeX} with RefTeX Macro cross references should also be usable for document navigation using RefTeX. @end itemize @node Wishlist @section Wishlist @itemize @bullet @item Documentation lookup for macros A parser could gather information about which macros are defined in which @LaTeX{} packages and store the information in a hashtable which can be used in a backend for @code{TeX-doc} in order to open the matching documentation for a given macro. The information could also be used to insert an appropriate @samp{\usepackage} statement if the user tries to insert a macro for which the respective package has not been requested yet. @item Spell checking of macros A special ispell dictionary for macros could be nice to have. @item Quick error overviews An error overview window (extract from the log file with just the error lines, clickable like a ``grep'' buffer) and/or fringe indicators for errors in the main text would be nice. @item A math entry grid A separate frame with a table of math character graphics to click on in order to insert the respective sequence into the buffer (cf. the ``grid'' of x-symbol). @item Crossreferencing support It would be nice if you could index process your favorite collection of @file{.dtx} files (such as the LaTeX source), just call a command on arbitrary control sequence, and get either the DVI viewer opened right at the definition of that macro (using Source Specials), or the source code of the @file{.dtx} file. @item Better plain TeX support For starters, @code{LaTeX-math-mode} is not very @LaTeX{}-specific in the first place, and similar holds for indentation and formatting. @item Poor man's Source Specials In particular in PDF mode (and where Source Specials cause problems), alternatives would be desirable. One could implement inverse search by something like Heiko Oberdiek's @file{vpe.sty}, and forward search by using the @file{.aux} file info to correlate labels in the text (possibly in cooperation with Ref@TeX{}) with previewer pages. In @AUCTeX{} 11.83, support for forward search with PDF files was added. Currently this only works if you use the pdfsync @LaTeX{} package and xpdf as your PDF viewer. @ifclear rawfile @xref{Viewing}. @end ifclear @item Page count when compiling should (optionally) go to modeline of the window where the compilation command was invoked, instead of the output window. Suggested by Karsten Tinnefeld . @item Command to insert a macrodefinition in the preamble, without moving point from the current location. Suggested by "Jeffrey C. Ely" . @item A database of all commands defined in all stylefiles. When a command or environment gets entered that is provided in one of the styles, insert the appropriate @code{\usepackage} in the preamble. @item A way to add and overwrite math mode entries in style files, and to decide where they should be. Suggested by Remo Badii . @item Create template for (first) line of tabular environment. @item @c Already fixed? I think prompting for the master is the intended behaviour. It corresponds to a `shared' value for TeX-master. There should probably be a `none' value which wouldn't query for the master, but instead disable all features that relies on TeX-master. This default value for TeX-master could then be controled with mapping based on the extension. @item Multiple argument completion for @samp{\bibliography}. In general, I ought to make @kbd{,} special for these kind of completions. @item Suggest @samp{makeindex} when appropriate. @item Use index files (when available) to speed up @kbd{C-c C-m include @key{RET}}. @item Option not to calculate very slow completions like for @kbd{C-c C-m include @key{RET}}. @item Font menu should be created from @code{TeX-font-list}. @item Installation procedure written purely in emacs lisp. @item Included PostScript files should also be counted as part of the document. @item A nice hierarchical by-topic organization of all officially documented LaTeX macros, available from the menu bar. @item @code{TeX-command-default} should be set from the master file, if not set locally. Suggested by Peter Whaite @samp{}. @item Make @AUCTeX{} work with @samp{crypt++}. Suggested by Chris Moore @samp{}. @item Make @AUCTeX{} work with @samp{longlines}. This would also apply to @previewlatex{}, though it might make sense to unify error processing before attempting this. @item The @samp{Spell} command should apply to all files in a document. Maybe it could try to restrict to files that have been modified since last spell check? Suggested by Ravinder Bhumbla @samp{}. @item Make @key{.} check for abbreviations and sentences ending with capital letters. @item Use Emacs 19 minibuffer history to choose between previewers, and other stuff. Suggested by John Interrante @samp{}. @item Make features. A new command @code{TeX-update} (@kbd{C-c C-u}) could be used to create an up-to-date dvi file by repeatedly running Bib@TeX{}, MakeIndex and (La)@TeX{}, until an error occurs or we are done. An alternative is to have an @samp{Update} command that ensures the @samp{dvi} file is up to date. This could be called before printing and previewing. @item Documentation of variables that can be set in a style hook. We need a list of what can safely be done in an ordinary style hook. You can not set a variable that @AUCTeX{} depends on, unless @AUCTeX{} knows that it has to run the style hooks first. Here is the start of such a list. @table @code @item LaTeX-add-environments @item TeX-add-symbols @item LaTeX-add-labels @item LaTeX-add-bibliographies @item LaTeX-largest-level @end table @item Completion for counters and sboxes. @item Outline should be (better) supported in @TeX{} mode. At least, support headers, trailers, as well as TeX-outline-extra. @item @code{TeX-header-start} and @code{TeX-trailer-end}. We might want these, just for fun (and outlines) @item Plain @TeX{} and @LaTeX{} specific header and trailer expressions. We should have a way to globally specify the default value of the header and trailer regexps. @item Get closer to original @code{TeX-mode} keybindings. A third initialization file (@file{tex-mode.el}) containing an emulator of the standard @code{TeX-mode} would help convince some people to change to @AUCTeX{}. @item Make @code{TeX-next-error} parse ahead and store the results in a list, using markers to remember buffer positions in order to be more robust with regard to line numbers and changed files. This is what @code{next-error} does. (Or did, until Emacs 19). @item Finish the Texinfo mode. For one thing, many Texinfo mode commands do not accept braces around their arguments. @item Hook up the letter environment with @file{bbdb.el}. @end itemize @node Bugs @section Bugs @c FIXME: Are those bugs still present? @itemize @bullet @item The parsed files and style hooks for @file{example.dtx}, @file{example.sty}, @file{example.drv} and @file{example.bib} all clash. Bad. @item @kbd{C-c `} should always stay in the current window, also when it finds a new file. @item Do not overwrite emacs warnings about existing auto-save files when loading a new file. @item Maybe the regexp for matching a TeX symbol during parsing should be @samp{"\\\\\\([a-zA-Z]+\\|.\\)"} --- @samp{} Peter Thiemann. @item @AUCTeX{} should not parse verbatim environments. @item Make @samp{`} check for math context in @code{LaTeX-math-mode}. and simply self insert if not in a math context. @item Make @code{TeX-insert-dollar} more robust. Currently it can be fooled by @samp{\mbox}'es and escaped double dollar for example. @item Correct indentation for tabular, tabbing, table, math, and array environments. @item No syntactic font locking of verbatim macros and environments. (XEmacs only) @item Font locking inside of verbatim macros and environments is not inhibited. This may result in syntax highlighting of unbalanced dollar signs and the like spilling out of the verbatim content. (XEmacs only) @item Folding of @LaTeX{} constructs spanning more than one line may result in overfull lines. (XEmacs only) @end itemize auctex-11.87/doc/history.texi0000644000000000000000000016515510460723003014672 0ustar rootroot@include macros.texi @section News in 10.0 @itemize @bullet @item Disabled @code{LaTeX-hide-environment}. Suggested by Christopher Allen . @item Changed default to lazy evaluation of @code{TeX-view-style} and @code{LaTeX-command-style}. Suggested by Peter Neergaard . @item Backindent when brace is at the start of a line. Patch by Masashi Shimbo . @item Added Emacs 21 font lock support. @item @kbd{,} and @kbd{.} no longer removes italic correction. @item @code{graphicx} and @code{graphics} style support. Donated by Ryuichi Arafune . @item @code{LaTeX-math-abbrev-prefix} now accepts vector value. Reported by Jan Vroonhof . @item Improved Texinfo support(more environments and html). Patch by Akim Demaille . @item @code{danish} quotes support. Suggested by arne@@daimi.au.dk (Arne Joergensen). @item Some PDF support. @item New @file{tex-mik.el} file for MiK@TeX{} support. @item Some commands now have their own history. Suggested by Werner LEMBERG . @item Use @code{\centering} instead of center environment in figures. Patch by Stefan Monnier . @item New @code{dwim} setting for @code{TeX-master} attempts to guess a default master for new files. Patch by Stefan Monnier . @item @code{ngerman} style support. Just a copy of the german style support. @item Removed support for Emacs 18 and 19. @item @code{mdwlist} support. Patch by Stephen Heilbronner . @item Fixed various bugs with the babel package. @item @code{amsart} and @code{amsbook} now loads @code{amsthm} by default. Patch by Rune Kleveland . @item Fixed bug with file searching. Reported by Berwin Turlach . @item Finalized index support, added index-related style files. Patch by Carsten Dominik . @item New style files for @file{varioref.sty} and @file{fancyref.sty}. Patch by Carsten Dominik . @item @code{texmathp} recognizes additional macros like @code{\fbox}. Patch by Ulrik Vieth . @end itemize @section News in 9.9 @itemize @bullet @item Bug fix in JLATEX recognition. Patch by Tsutomu OKUMURA . @item Bug fix in foils package sypport. Suggested by Bernt Guldbrandtsen . @item Made @code{make install-contrib} compile the contributed lisp files. Suggested by Nils Ackermann . @item In @code{texinfo-mode}, @kbd{C-c C-f C-d} now deletes the current font, while @kbd{C-u C-c C-f @var{key}} changes it. @samp{@@dfn} moved to @kbd{C-c C-f d}. Suggested by Christoph Wedler . @item Fixed some custom types. Patch by Markus Rost . @item Support loading byte compiled files, even if @code{TeX-byte-compile} is nil. Patch by Christoph Wedler . @item The command to replace a LaTeX2e font should work more reliably now. Patch by Christoph Wedler . @item Minor XEmacs packaging changes. Patch by Christoph Wedler . @item @code{TeX-file-recurse} now accepts an integer value, max depth of recursion. Patch by Alastair Burt . @item Simple imenu support for @LaTeX{}. @item Workaround for 20.3 bugs. @item The `Spell' command now works on all open buffers in the document. Patch by Jason Stewart . @item @kbd{C-c C-m} now puts content of region inside first empty brackets in the macro, if any. Patch by Peter Thiemann . @item Update of @file{natbib.el} style file by Carsten Dominik . @item Much better detection of @TeX{} math mode. Patch by Carsten Dominik . @item New @samp{%n} escape in @code{TeX-command-list} for entering the current line number. Suggested by "Lee, Sang-Min" . @item Doc fixes in manual. Patch by Gustavo Chaves . @item Better reftex support for sections. Patch by Carsten Dominik . @item Bug fixes in math card. Reported by "Ron Smith" . @item Better multifile support. Patch by Soren Dayton . @item Don't expand abbreviations when @code{abbrev-mode} is nil. Suggested by Alastair Burt . @item @samp{direntry} support in manual, by SL Baur . @end itemize @section News in 9.8 @itemize @bullet @item Added @code{natbib.el} to support natbib.sty by Patrick W. Daly. Submitted by Berwin A. Turlach @samp{}. @item More @LaTeX{}2e support by Jan Vroonhof @samp{}.@refill @item Make @code{TeX-master} a local variable in Bib@TeX{} mode and set it to true. This seems to be necessary to enable auto-parsing of a .bib file. Patch by Berwin A. Turlach @samp{}. @item Support for Harvard style updated by Berwin A. Turlach @samp{}. @item Support for `natbib' package. By Berwin Turlach @samp{}. @item Finer control of automatic parsing of @TeX{} files: new variables @code{TeX-auto-x-parse-length} and @code{TeX-auto-x-regexp-list}. By Christoph Wedler @samp{}. @item Finer control of indentation: new variables @code{LaTeX-document-regexp}, @code{LaTeX-verbatim-regexp}, @code{LaTeX-begin-regexp}, @code{LaTeX-end-regexp} and @code{LaTeX-indent-comment-start-regexp}. By Christoph Wedler @samp{}. @item When running @LaTeX{} on a region, do not complain about undefined citations. See variable @code{TeX-region-extra}. By Christoph Wedler @samp{}. @item Split menu for LaTeX environments into submenus if number of environments is larger than the value of the new variable @code{LaTeX-menu-max-items}. By Christoph Wedler @samp{}. @item More reftex support with new @code{TeX-arg-ref} function. By Soren Dayton @samp{}, with @file{amsmath} support by Carsten Dominik @samp{}. @item Minimal parser now recognize @code{usepackage}. By Carsten Dominik @samp{}. @item More amstex styles recognized. By Carsten Dominik @samp{}. @item Czech and Slovak support. By Milan Zamazal @samp{}. @end itemize @section News in 9.7 @itemize @bullet @item Added support for customize. @item Added minimal support for @code{sentence-end-double-space}. @end itemize @section News in 9.6 @itemize @bullet @item NT installation instructions added. @item @file{func-doc.el} unbundled, as @file{word-help.el} will be added to the standard Emacs distribution. See @url{http://www.ifi.uio.no/~jensthi/}. @item @samp{$} is now of the syntax class `matched pair', suggested by Mats Bengtsson @samp{}. @item Now use @kbd{,} to enter multiple arguments to a @samp{\cite} or @samp{\bibliography} command instead of @kbd{@key{ret}}. @item Installation procedure is changed, read the @file{INSTALLATION} file. @item LaCheck is unbundled. You can get @code{lacheck} from @file{} or alternatively @code{chktex} from @file{}. Search for `chktex' in @file{tex.el} to see how to switch between them.@refill @item Insert @code{(require 'font-latex)} to get better font lock support. @item Bug fixes. @item Better handling of subdirectories, suggested by Frederic Devernay @samp{} and many others. @end itemize @section News in 9.5 @itemize @bullet @item Use the @file{func-doc.el} package to get context senstive help. This is not autoloaded, you must load it explicitly with: @lisp (require 'func-doc) @end lisp @item Bug fixes. @end itemize @section News in 9.4 @itemize @bullet @item There is now a menu in @code{LaTeX-math-minor-mode}. @item Bug fixes. @end itemize @section News in 9.3 @itemize @bullet @item Bug fixes. @end itemize @section News in 9.2 @itemize @bullet @item Bug fixes. @item New file @file{bib-cite.el} contributed by Peter S. Galbraith @samp{}. This file is not installed or enabled by default and is not part of the basic AUC @TeX{} package. If you have problems, questions, or suggestions, please direct them to Peter. @item New file @file{hilit-LaTeX.el} contributed by Peter S. Galbraith @samp{}. This file is not installed or enabled by default and is not part of the basic AUC @TeX{} package. If you have problems, questions, or suggestions, please direct them to Peter. @item AUC @TeX{} is now less likely to suggest running Bib@TeX{} when it is not needed. @item Press @kbd{M-x LaTeX-209-to-2e @key{ret}} to make a stab at converting a @LaTeX{} 2.09 header to @LaTeX{}2e. @item @kbd{C-c C-m input @key{ret}} should be faster now on second try. @item New variable @code{LaTeX-left-right-indent-level} controls the indentation added by @samp{\left}. @item @samp{\begin}, @samp{\end}, @samp{\left}, and @samp{\right} no longer need to be at the beginning of the line to take effect. @item You can now delete and replace @LaTeX{}2e style fonts. @item Moved external commands to new menu. @item @kbd{C-c C-m cite @key{ret}} will prompt for multiple keys. @item Better handling of @samp{"} with @file{german.sty}. @item New variable @code{LaTeX-paragraph-commands} lists @LaTeX{} commands that shouldn't be formatted as part of a paragraph. @item Older news moved to @file{HISTORY}. It is not @TeX{}info able, but you can get a plaintext version with @samp{make HISTORY}. @item See the new @file{ChangeLog} file for a more detailed list of changes. The history section will now only contain user level changes. If you send me a patch, please also provide a ChangeLog entry. @end itemize @node Version 9.1 @section News in 9.1 Coordinater: Per Abrahamsen, 1994. Alpha testers (in order of appearance): Bernt Guldbrandtsen @samp{}, Kevin Scott @samp{}, Lawrence R. Dodd @samp{}, Michelangelo Grigni @samp{}, David Aspinall @samp{}, Frederic Devernay @samp{}, Robert Estes @samp{}, Peter Whaite @samp{}, Karl Eichwalder @samp{}, John Interrante @samp{}, James A. Robinson @samp{}, Tim Carlson @samp{}, Michelangelo Grigni @samp{}, Manoj Srivastava @samp{}, Richard Stanton @samp{}, Kobayashi Shinji @samp{}, and probably more.@refill @itemize @bullet @item @LaTeX{}2e is now default. Set @code{LaTeX-version} to @samp{"2"} to disable this. @item Better handling of @samp{*TeX background*} buffer. Suggested by John Interrante @samp{}. @item Parser did not recognise the use of @samp{\def} to create @LaTeX{} environments. Reported by Frederic Devernay @samp{}. @item Minor cleanup in some error messages. @item Fixed bug in @code{TeX-comment-paragraph} when called with a negative argument. Reported by Markus Kramer @samp{}. @item Don't move point in master file when running a command on the region in an included file. Thanks to Karl Wilhelm Langenberger @samp{} for the patch. @item @code{LaTeX-math-mode} no longer works on Emacs 18 or older Lucid versions. This change allowed me to unbundle @file{min-map.el}. @item Made @kbd{C-c C-e} more robust, especially when applied on an empty active region. Reported by Andrew Senior @samp{}. @item @kbd{C-c C-m section RET} and @kbd{M-@key{tab}} should work now in @TeX{}info mode. @kbd{C-c C-b} and @kbd{C-c C-r} removed, since they did not work. Reported by Karl Eichwalder @samp{}. @item Made @kbd{M-q} skip block comments. Sugested by Peter Whaite @samp{}. @item Code cleanup: Renamed @samp{-format-} functions to @samp{-fill-}. @item Made @kbd{,} and @kbd{.} remove any preceding italic correction. @item Changes in math mode: @samp{setminus} moved to @key{\}, @samp{not} moved to @key{/}, and @samp{wedge}, @samp{vee}, and @samp{neg} installed on @key{&}, @kbd{|}, and @kbd{!} to make writing logic easier for C programmers. @item Renamed @file{auc-tex.el} to @file{auc-old.el} to make it less likely that new users load it by mistake. @item Changed name of @file{easymenu.el} to @file{auc-menu.el} to avoid conflict with RMS's version. Updated it to handle the Lucid @code{:keys} keyword argument. Defines a popup menu for both FSF and Lucid emacs, although it is only installed in Lucid Emacs. Added David Aspinall's @samp{} patch to handle an empty menu bar under Lucid Emacs. The interface is still a superset of @file{easymenu.el}. This version should no longer prevent the sharing of byte compiled files between FSF and Lucid emacs. @item Marking a section or environment now highlight it in Lucid Emacs. It already worked in GNU Emacs. Thanks to Andreas Ernst @samp{ernst_a@@maths.uwa.edu.au}. @item Font support for @LaTeX{}2e. Many people suggested this. Automatically activated for all documents defined with @samp{\documentclass}. @item Outline support for @LaTeX{}2e fixed by Robert Estes @samp{}. @item @samp{bibliography} macro now works. Thanks to Frederic Devernay @samp{}. @item Fixes to @file{psfig} support by Thomas Graichen @samp{}. @item Fixed position of @samp{\label} in environments. Reported by Richard Stanton @samp{}. @item Made the name of the AUC @TeX{} menu mode specific. @item More reliable guesses with @kbd{C-c C-r}. Thanks to Lawrence R. Dodd @samp{}. @item Insert newline before inserting local variable section. Thanks to Rajeev Gore' @samp{}. @item Fixes to Japanese version. Thanks to Kobayashi Shinji @samp{}. @item Fixed bug in @samp{put} and @samp{multiput} macros. Thanks to Kobayashi Shinji @samp{} and Masayuki Kuwada . @item Display number of pages after end of @LaTeX{} compilation. Thanks to Lawrence R. Dodd @samp{}. @item Only update section and environment menus when the lists have changed. @item New variables @code{LaTeX-header-end} and @code{LaTeX-trailer-start}. @item Some Emacs 18 compatibility changes. Thanks to Fran E. Burstall @samp{}. @item Use nonrecursive function to determine the current environment. This should solve problems with exceeding lisp max depth. Contributed by David Aspinall @samp{}. @item Fixed documentation for @kbd{` ~} in @file{math-ref.tex}. Thanks to Morten Welinder @samp{}. @item Made @code{LaTeX-math-mode} work better with FSF Emacs 19 in the case where you press something undefined, in particular function keys. Requested by several. @item Inserting an itemize environment around the active region now insert the first item inside the environment. Thanks to Berwin A. Turlach @samp{} for reporting this. @item Fixed bug in right button menu under Lucid. Reported by Frederic Devernay @samp{}. @end itemize @node Version 9.0 @section News in 9.0 Coordinator: Per Abrahamsen, 1994. Alpha testers (in order of appearance): Volker Dobler @samp{}, Piet van Oostrum @samp{}, Frederic Devernay @samp{}, Robert Estes @samp{}, Berwin Turlach @samp{}, Tim Carlson @samp{}, Peter Thiemann @samp{}, Kevin Scott @samp{}, Lawrence R. Dodd @samp{}, Johan Van Biesen @samp{}, Marc Gemis @samp{}, Michelangelo Grigni @samp{}, Kevin Scott @samp{}, Peter Paris @samp{}, Peter Barth @samp{}, Andy Piper @samp{}, Richard Stanton @samp{}, Christoph Wedler @samp{}, Graham Gough @samp{}, and probably more.@refill @itemize @bullet @item Fixed problem with @file{filladapt} defeating @LaTeX{} mode's own indentation algorithm. Thanks to Piet van Oostrum @samp{}. @item Made environments and sections selectable from the menu bar. @item Support Emacs comment conventions. Comments starting with a single @samp{%} are indented at @code{comment-column}. Comments starting with @samp{%%%} are indented at column 0. Comments starting with @samp{%%} are indented like ordinary text. You can set the variables @code{LaTeX-right-comment-regexp} and @code{LaTeX-left-comment-regexp} to nil to disable this. See also @code{LaTeX-ignore-comment-regexp}. Rewrote it from Christoph Wedler @samp{} from original code. @item @key{tab} and @key{lfd} will not indent code in @samp{verbatim} environment if you set @code{LaTeX-indent-environment-check} to non-nil. This was also first implemented by Christoph Wedler @samp{}. @item You can now get get custom indentation for various environments. See @code{LaTeX-indent-environment-list}. @item @kbd{C-c C-m left @key{ret}} new automatically inserts a matching @samp{\right}. See variables @code{TeX-left-right-braces}, @code{TeX-braces-default-association}, and @code{TeX-braces-user-association}. This feature was suggested by Jesse @samp{} and implemented by Berwin Turlach @samp{}. @item Don't automatically display the compilation buffer unless @code{TeX-show-compilation} in non-nil. Suggested by Stefan Schoef @samp{Stefan.Schoef@@arbi.informatik.uni-oldenburg.de}. @item Bundled @file{ltx-help.el}. Press @kbd{C-h C-l} to get the documentation for a LaTeX command. @item Fixed indentation of @samp{\left} and @samp{\right}. Thanks to Christoph Wedler @samp{}. @item Installation procedure changed. @file{tex-site.el} is now intended to survive AUC @TeX{} upgraded. The distribution version only contains autoloads (eliminating the need for @file{tex-load.el} , the customization variables are moved to @file{tex.el}. You should copy those variables you need to customize from @file{tex.el} to @file{tex-site.el}. @item Made it possible to use absolute paths when including bibliographies or style files. @item Fixed problem with parsing errors after running @LaTeX{} on the region from the menu. Thanks to Peter Barth @samp{} for finding this one. @item The file @file{doc/ref-card.texi} has been renamed to @file{doc/tex-ref.texi} to avoid confusion with the reference card for GNU Emacs. Suggested by Michelangelo Grigni @samp{}. @item The @file{README}, @file{CHANGES} and @file{INSTALLATION} files are now generated from chapters of this manual, to ensure they stay in sync. @item @kbd{M-@key{tab}} will now complete some macro arguments in addition to macro names. In particular, if you press @kbd{M-@key{tab}} after @samp{\cite@{} or @samp{\ref@{} you will get completion for bibitems and labels, respectively. @item Merged a number of files. The major files are now @file{tex.el} for plain @TeX{} and common support, @file{tex-buf.el} for running external commands, and @file{latex.el} for @LaTeX{} support. @item Unbundled @file{outln-18.el}. Users of Emacs 18 or Lucid Emacs 19.9 or earlier must get @file{outln-18.el} and install it as @file{outline.el} if they want the outline commands to work. @item No longer bind @kbd{C-c @key{tab}} to @code{TeX-complete-symbol}. Use @kbd{M-@key{tab}} instead. @item Cleaned up the parser and parameterizedd it. Now you can add now types of information to be maintained by the parser simply by calling @code{TeX-auto-add-type}. You still need to install the regexps with @code{TeX-auto-add-regexp}. @item Disable the automatic insertion of empty braces after macros with no arguments in @code{LaTeX-math-mode}. Added a variable @code{TeX-insert-braces} to disable it everywhere. @item Now complete with existing labels when asking for a label in a @LaTeX{} environment. Suggested by Berwin Turlach @samp{}. @item The variables @code{TeX-private-macro}, @code{TeX-private-auto}, and @code{TeX-private-style} are now initialized from the @samp{TEXINPUTS} and @samp{BIBINPUTS} environment variables. @item @kbd{C-c C-f} and @kbd{C-c C-e} will now put the template around the region if the region is active. @item Fixed @kbd{C-u C-c C-e} to handle environments ending with a star (@samp{*}). Reported by Berwin Turlach @samp{}. @item Don't use @code{with-output-to-temp-buffer} for compilation buffer. Fixed by Frederic Devernay @samp{}. @item New function @code{TeX-command-buffer} (@kbd{C-c C-b}) to run a command on the (visible part of) the current buffer. Requested by several people. @item Bundled the latest @file{reporter.el}, added @code{TeX-submit-bug-report} to menus. @item @code{TeX-insert-braces} now takes an argument like @code{insert-parentheses}. Thanks to Lawrence R. Dodd @samp{}. @item Fixed bug in @samp{\put} and @samp{\multiput} macros. Thanks to Kevin Scott @samp{}. @item Deleted @code{ams-latex-mode}, @code{slitex-mode}, and @code{foiltex-mode}. Instead, use @code{LaTeX-command-style} to determine the name of the external command to use. @item Deleted @code{latex2e-mode}. Instead set the @code{LaTeX-version} variable. This may be done automatically if you use @samp{\documentclass} in the future. @item Fixed Lucid Emacs menu for @TeX{}info mode. Thanks to Frederic Devernay @samp{}, @item Added support for @file{harvard.sty} by Berwin Turlach @samp{}. @item Filling will not let display math equations @samp{\[ ... \]} be on a line by themselves. Reported by Matthew Morley @samp{}. @item Made @code{words-include-escapes} default to nil. @item Made @code{TeX-expand-list} expansions case sensitive. Thanks to Havard Rue @samp{}. @item Fixed error in calculating indentation for lines starting with a brace. Thanks to Piet van Oostrum @samp{}. @item Fixed bug in the @samp{addcontentsline}, @samp{newtheorem}, and @samp{pagenumbering} macros reported by Berwin Turlach @samp{}. @item Doc fixes by Lawrence R. Dodd @samp{}. @item Indentation no longer fooled by @samp{\\@{}, Thanks to Peter Thiemann @samp{}. @item Bind @kbd{M-C-e} and @kbd{M-c-a} to @code{LaTeX-find-matching-end} and @code{LaTeX-find-matching-begin}. Suggested by Lawrence R. Dodd @samp{}. @item Added variable @code{TeX-quote-after-quote} which causes @code{TeX-insert-quote} to insert literal @samp{"} except when after another @samp{"}, in which case it will expand to @code{TeX-open-quote} or @code{TeX-close-quote}. This code was contributed by Piotr Filip Sawicki @samp{}. @item Added support for Polish style files @file{plfonts.sty} and @file{plhb.sty}, contributed by Piotr Filip Sawicki @samp{}. @item Added section with suggestions for how to handle European character sets. @item Created workaround for bug in the regexp handler in some Emacs 18 versions and older versions of Lucid Emacs. The workaround means you cannot use space in the documentstyle command in Emacs and Lucid Emacs earlier than version 19.9. @item @file{powerkey.el} is removed since the functionality is integrated in GNU Emacs @item @kbd{C-u "} now inserts four literal @samp{"}, not just one. To insert a single @samp{"} either press @key{"} twice or use @kbd{C-q "}. @item Allow non-string value for @code{outline-minor-map-prefix}. Reported by David Smith @samp{}. @item Make the use of @code{write-file-hooks} more safe, and use @code{local-write-file-hooks} when possible. Suggested by David Smith @samp{}. @item Don't indent @samp{\begin@{verbatim@}} and @samp{\end@{verbatim@}}, since any space before @samp{\end@{verbatim@}} is significant. Thanks to Peter Thiemann @samp{} for the patch. @item Show available fonts when you try to insert an non-existing font. Suggested by David Smith @samp{}. @item The @code{member} function in @file{tex-18.el} does not depend on @code{TeX-member} now. Thanks to Piet van Oostrum @samp{}. @item Do not overwrite any global binding of @kbd{M-@kbd{ret}}. Suggested by Jens Petersen @samp{}. @item Major modes for writing text are supposed to rebind @kbd{M-@kbd{tab}} to @code{ispell-complete-word}. Reported by Jens Petersen @samp{}. @item Fixed problems with @TeX{}info menus. Thanks to David Smith @samp{} for reporting this. @item Code cleanup. Removed the @file{format} directory, as it did not make it easier to add new @TeX{} modes, quite the contrary. @item Fixed name conflict in @file{auc-tex.el}, reported by Rik Faith @samp{}. @item Fixed some spelling errors. Thanks to Lawrence R. Dodd @samp{}. @item Fixed bug prohibiting non-standard file extensions. Now recognize @file{.ltx} by default. Suggested by Lawrence R. Dodd @samp{}. @item Name of the AUC @TeX{} info files changes once again to be usable under DOS. This time simply to @file{auctex}. @item Documented @code{TeX-outline-extra}. @item Could not select command on region from the menu before loading @file{tex-buf}. Reported by Uwe Bonnes @samp{}. @item Make the hilit19 interface more robust. Thanks to William Dean Norris II @samp{}. @item More OS/2 Makefile fixes by Bodo Huckestein @samp{}. @item Reimplemented comment support on top of @code{comment-region}, giving slightly different semantics. @end itemize @node Version 8.0 @comment node-name, next, previous, up @section News in 8.0 Coordinator: Per Abrahamsen, 1993. Alpha testers (in order of appearance): Marc Gemis @samp{}, Shinji Kobayashi @samp{}, Philippe Defert @samp{}, Richard Stanton @samp{}, Norbert Kiesel @samp{}, Roberto Cecchini @samp{}, Hanno Wirth @samp{}, Tim Carlson @samp{}, John Daschbach @samp{}, Bob Fields @samp{}, Peter Whaite @samp{}, Volker Dobler @samp{}, Phil Austin @samp{}, Martin Maechler @samp{}, Havard Rue @samp{}, Tim Geisler @samp{}, Tim Carlson @samp{}, Sridhar Anandakrishnan @samp{}, Peter Thiemann @samp{}, Pedro Quaresma @samp{}, Christian Lynbech @samp{}, Kevin Scott @samp{}, Bodo Huckestein @samp{}, Cengiz Alaettinoglu @samp{}, Jakob Schiotz @samp{}, and probably more.@refill @itemize @bullet @item New variable @code{LaTeX-letter-sender-address} contains default address for use with the letter style. Set it to the address of your organization in @file{tex-site.el}. Thanks to Sridhar Anandakrishnan @samp{}. @item Makefile now works under OS/2 with GNU Make. Thanks to Bodo Huckestein @samp{bodo@@eu10.mpi-hd.mpg.de}. @item Made it possible to install global auto files without having Bib@TeX{} mode installed. Thanks to Christian Lynbech @samp{}. @item Minor documentation fixes. Thanks to Martin Maechler @samp{}. @item Added support for @samp{eqref} for the @samp{amsart} style. Thanks to Peter Whaite @samp{}. @item Use @samp{-c} as the default shell command option under @samp{emx}. Eberhard Mattes @samp{} says it is better than @samp{/c}. @item Made powerkey in the menus work better under OS/2. Thanks to Eberhard Mattes @samp{}. @item Made the reference cards print correctly on US letter format paper. Thanks to Magnus Nordborg @samp{}. @item @code{LaTeX-dead-mode} removed. Read the file `ISO-TEX' for alternative solutions. @item All minor modes unbundled. You can find them from ftp at @samp{ftp.iesd.auc.dk} in the directory @file{/pub/emacs-lisp}. Removed information about minor modes from this document. @item New hooks for changing ispell directory, see @file{tex-site.el} for details. @item @LaTeX{}2e mode now supported. Insert @lisp (setq TeX-default-mode 'latex2e-mode) @end lisp in your @file{.emacs} file to get documentclass instead of documentstyle per default. The parser recognizes documentclass, usepackage, and newcommand with a default argument. There are also templates for all of them. @item Added Jakob Schiotz's @samp{} help file for installing AUC @TeX{} on OEMACS. It will probably also be of interest for DEMACS users. @item Minor changes to be more friendly for OEMACS, thanks to Jakob Schiotz @samp{}. @item The control key bindings in @code{LaTeX-math-mode} now works, thanks to Frederic Devernay @samp{}. @item @LaTeX{} outlines no longer matches @samp{\partial} or other commands with a sectioning command as prefix. Thanks to Jakob Schiotz @samp{}. @item @code{LaTeX-fill-paragraph} now handles the case where the previous line both contain an @samp{\item} and an unmatched open brace. Thanks to Piet van Oostrum @samp{}. @item Use abbreviated file name for @TeX{} output buffers in Emacs 19. Thanks to Jens Gustedt @samp{}. @item Added lowercase alias for @code{LaTeX-math-mode} for use with Emacs file mode commands. Thanks to Olaf Burkart @samp{}. @item Added code to reuse old region in @code{TeX-command-region} if mark is not active. Thanks to Cengiz Alaettinoglu @samp{}. @item Now get keyboard accelerators on all menus rather than only AUC @TeX{} menus, thanks to the @file{powerkey.el} file by Lars Lindberg @samp{}. @item Added @code{TeX-electric-macro} for faster completion of @TeX{} macros. @xref{Completion}. @item Comparing printer names are now case incentive. Thanks to Richard Stanton @samp{}. @item Default shell fixed for OS/2. Thanks to Richard Stanton @samp{}. @item Added functions to hide (@code{LaTeX-hide-environment}) and show (@code{LaTeX-show-environment}) the current environment. @item @kbd{C-u C-c C-e} will now modify the current environment instead of inserting a new environment. This is like the optional argument to the font commands. @item Added nabla to LaTeX Math Mode. Suggested by Bill Reynolds @samp{}. @item Added commands for running @TeX{} and @LaTeX{} interactively. Thanks to David Carlisle @samp{}. @item The external commands will now insert there output @emph{before} point in the output buffers. This allows you to follow the progress by putting point at the end of the file. Suggested by Jak Kirman @samp{}. @item When invoking an external command from a menu, the document will be automatically saved. @item There are now a printer menu for emacs 19. @item Redesigned dependency checking. Now only checks dependencies for files loaded in the current emacs session. This is much faster, but will not catch files that are edited outside this emacs session, or files edited in killed buffers. @strong{@code{TeX-check-path} must at least contain @file{.} for saving to work}. If you have set @samp{TeX-check-path} in your @file{.emacs} file, remove it. The default value is fast enough now. @item New variable @code{TeX-save-query} control if AUC @TeX{} will query you for each modified buffer when you save the document. Set it to nil to get rid of these questions. Setting this variable also affect the automatic saving of the document that happens each time you start an external command. @item New command @code{TeX-save-document} will save all files in the current document, i.e. the document associated with the current buffer. @item Cleaned up all minor modes, also made them use @file{min-map.el} or @file{min-mode.el} instead of @file{min-bind.el}. @item Cleaned up release management. @item AUC TeX will not longer be confused when you rewrite a file under a new name. @item Lots of code cleanup, involving reformatting the source and renaming all @samp{-hook} variables and functions to conform with the Emacs 19 guidelines. @item Can now parse Japanese characters in labels and macros when you use Japanese @TeX{}. Thanks to Shinji Kobayashi @samp{}. @item Made it safe to quit when AUC @TeX{} asks for the name of the master file. It will simply assume the file itself is the master, and continue without inserting any file local variables. @item Support for @code{epsf} and @code{psfig} style files. Thanks to Marc Gemis @samp{}. @item Support for @LaTeX{}info. Thanks to Marc Gemis @samp{}. @item Only examine the first 10000 bytes to find out what @TeX{} mode to use. @item Added @code{TeX-submit-bug-report} command to submit bug reports. It uses the @file{reporter.el} distributed with SuperCite, so it may not be available in some Emacs 18 installations. @item Speeded up parsing significantly by using a simpler regexp. @item Added variable @code{TeX-auto-untabify}. Set it to nil to prevent untabifying the buffer when it is saved. Several people wanted this. @item Changed defaults to @emph{not} do any automatic parsing, nor prompt for a master file. @xref{Parsing Files}, @ref{Multifile}, for information about how ot correct this. In short, insert the following in your @file{.emacs} file. @lisp (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) @end lisp @item Some grammatical fixes to the @file{PROBLEMS} file. Thanks to Lawrence R. Dodd @samp{}. @item No longer install a separate @code{outline-minor-mode} by default, as the FSF Emacs 19.19 @code{outline-minor-mode} is adequate. The included file @file{outln-18.el} emulates the FSF Emacs 19.19 mode under Emacs 18. The FSF Emacs 19.19 @code{outline-minor-mode} use the @kbd{C-c} prefix instead of @kbd{C-c C-o} by default, and does not bind as many keys as the @code{outline-minor-mode} distributed with earlier versions of AUC @TeX{} did. You can get the keybindings back together with other goodies by inserting @example (require 'out-xtra) @end example in your @file{.emacs} file. @file{out-xtra.el} will probably be unbundled from AUC @TeX{} in the future. @item Some fixes to AmS-@TeX{} mode by Ulf Juergens @samp{}. @item Make @samp{plain-TeX-mode-menu} work in Lucid Emacs. Thanks to Anthony Rossini @samp{rossini@@hsph.harvard.edu} for reporting this. @item First cut on a @TeX{}info mode. @item More strict about parsing @samp{\bibitem}'s and Bib@TeX{} entries. @item Made it easier to write style files for environments that takes arguments and documented it. Suggested by Martin Wunderli @samp{}. @item Parse optional argument to @samp{\newenvironment}. Suggested by Martin Wunderli @samp{}. @item Fixed @samp{parbox} macro. Thanks to Shinji Kobayashi @samp{}. @item Made the parser work better in outline minor mode. Thanks to Salvador Pinto Abreu @samp{}. @item Also save style information with @code{TeX-normal-mode} when buffer not modified. @item Use @code{$(MAKE)} instead of @samp{make} to invoke @code{make} from the @file{Makefile}. Thanks to John Interrante @samp{}. @item Make last value default for @code{TeX-insert-macro}. Suggested by Matt Fairtlough @samp{}. @item Renamed info file to @samp{auc-info} in order to fill DOS file limits. Please remember to update your @file{dir} file to reflect this change. @item Delete auto file instead of saving an empty file. @end itemize @node Version 7.3 @comment node-name, next, previous, up @section News in 7.3 Coordinator: Per Abrahamsen, 1993. @itemize @bullet @item More robust installation, especially for Lucid Emacs (I hope). Many people reported problems with this. @item Make `easymenu' work when byte-compiled. Many people reported this bug. @item Minimally updated the @file{README} file from version 6.0 (sigh). Thanks to Boris Goldowsky @samp{} for reporting this. @item Added @samp{@@finalout} to manual. Reported by Henrik Drabol @samp{}. @item Fixed @kbd{M-q} to work after an @samp{\end@{@dots{}@}}. It will not work at the end of the buffer, but there are usually the local variables so it should (hopefully) not matter. Thanks to Shinji Kobayashi @samp{} again. @item New variables @code{TeX-open-quote} and @code{TeX-close-quote} determine what is inserted by @code{TeX-insert-quote}. The @file{german} style file now use those variables instead of changing the keymap. @item Changes to the default settings in @file{tex-site.el}, in particular a @samp{Queue} command is added to display the print queue. Thanks to John Interrante @samp{} for code, and other members of the @samp{auc-tex@@iesd.auc.dk} mailing list for ideas. @item Make sure all outline mode commands are bound in @code{outline-minor-mode}. @item Added autoload for @code{TeX-command}. Thanks to Hanno Wirth @samp{} for reporting this. @item Added support for AmS@TeX{} and AmSLa@TeX{}. Currently they are identical to @TeX{} and @LaTeX{} except for another default command. @item Added Vor@TeX{} style matching of dollar sign. The style is guaranteed to be Vor@TeX{}, since I lifted the code directly from Vor@TeX{}. Thanks to Pehong Chen @samp{} for writing the Vor@TeX{} code. Thanks to Jak Kirman @samp{} for pointing out this nice Vor@TeX{} feature. @item Added information about AUC @TeX{} mail addresses to the manual. Thanks to Dave Smith @samp{}. @item Added menu to for plain @TeX{}. Suggested by Tim Carlson @samp{}. @item Made the menus depend on @code{TeX-command-list}. @item Made it possible to specify @code{TeX-auto-regexp-list} in the local variable section of each file. @item Added variable @code{TeX-auto-parse-length} to specify maximal length of text that will be parsed. @item Added automatic parsing of Bib@TeX{} files and @samp{bibitem} entries in order to get completion in @samp{cite}. This was inspired by an add on made by Sridhar Anandakrishnan @samp{}. @item Added variable @code{TeX-byte-compile} to disable automatic byte compilation of style files when loaded. This is needed when using different Emacs versions. @item Added variable @code{TeX-translate-location-hook} to translate file and line information before showing an error, as requested by Thorbjoern Ravn Andersen @samp{}. @item Added variable @code{TeX-auto-save} to allow disabling the automatic saving of style information, either per file in the file local variables, or globally by using @code{setq-default}. Use @code{TeX-normal-mode} to force style information to be saved. @item Try to create @file{auto} directory if it does not exists. @item Added chapter describing how to tune the @TeX{} parsing. @item Allow (but do not encourage) a string value for @code{LaTeX-default-options}. @item Give @samp{"} word syntax when german.sty is loaded. Suggested by Tim Geisler @samp{}. @item Many corrections to the grammar in the manual. Thanks to Manfred Weichel @samp{}. @item Bind @code{TeX-home-buffer} to @kbd{C-c ^} instead of @kbd{C-c C-h} which are reserved in Emacs 19. Suggested by Chris Moore @samp{}. @end itemize @node Version 7.2 @comment node-name, next, previous, up @section News in 7.2 Coordinator: Per Abrahamsen, 1993. @itemize @bullet @item @code{LaTeX-dead-mode} works again. Thanks to Patrick O'Callaghan @samp{} for fixing it. @item Minor fixes to the documentation. Thanks to Shinji Kobayashi @samp{}. @item Add @samp{Compiling} to the mode line of all buffers, while there is a AUC @TeX{} compilation process running. This is similar to the behavior of @code{compile} in Emacs 19. @item @code{TeX-normal-mode} will now save the buffer first to make sure it gets reparsed. @item Labels with underscores are now recognized. Thanks to Wolfgang Franzki @samp{} @item Fix to `ghostview' printer specification. Thanks to Masayuki Kuwada @samp{}. @item Recognize @samp{abstract}, @samp{center}, @samp{titlepage}, @samp{verse}, and @samp{theindex} environments. Thanks to Masayuki Kuwada @samp{}. @item Fix to @samp{newsavebox} macro. Thanks to Shinji Kobayashi @samp{} for reporting this. @item Menu support for GNU Emacs 19 and Lucid Emacs. Thanks to Alastair Burt @samp{} for the initial Lucid Emacs version. @item @kbd{C-c C-f C-d} now deletes the current font. The current font is defined to be the innermost @TeX{} group starting with a @TeX{} macro that is terminated by a space. @item Giving @kbd{C-c C-f} a prefix argument will replace the current font, i.e. @kbd{C-u C-c C-f C-b} will change the current font to bold. The old functionality (putting the font around the region) has been removed. To make the region bold, type @kbd{C-w C-c C-f C-b C-y} instead. @item Chapter recognized as largest heading in the report style. Thanks to Shinji Kobayashi @samp{} for reporting this. @item More support for Japanese style files. Thanks to Shinji Kobayashi @samp{}. @item No longer put @samp{Outline} in the mode line whenever @code{selective-display} is set. Thanks to Lawrence R. Dodd @samp{} for reporting this. @item Support for inserting calligraphic letters in @code{TeX-math-mode} with @kbd{` c @key{letter}}. Thanks to Olaf Burkart @samp{}. @item @code{set-docstring} in @file{tex-math.el} should work better now. Thanks to Alastair Burt @samp{} and Olaf Burkart @samp{}. @item Support for dviout preview on PC-9801. Thanks to Shinji Kobayashi @samp{}. @item Inserting environment in empty buffer should work now. Thanks to Alastair Burt @samp{}. @item Default float for figures changed from @samp{tbp} to @samp{htbp}. @item @code{LaTeX-format-environment} may work now. Thanks to Shinji Kobayashi @samp{}. @item Better @code{LaTeX-close-environment}. Thanks to Thorbjoern Hansen @samp{}. @item Some support for Ispell 4.0. @item Bib@TeX{} in Emacs 19 need @code{tex-insert-quote}, make it autoload from AUC @TeX{} instead of the standard @code{tex-mode}. @item @code{TeX-auto-generate} failed when repeated. Thanks to Peter Whaite @samp{} for reporting this. @end itemize @node Version 7.1 @comment node-name, next, previous, up @section News in 7.1 Coordinator: Per Abrahamsen, 1993. @itemize @bullet @item Allow multiple @samp{%p} in print commands. Suggested by Cliff Krumvieda @samp{}. @item Improved backward compatibility in @file{auc-tex.el}. Thanks to Ralf Handl @samp{}. @item New style hook for @file{german.sty}. Disable smart quotes. Press @kbd{C-c C-n} to make it take effect. @item Allow files to have other extensions than ``tex''. But no longer allow files to have multiple dots. Sigh. @item Will no longer parse the buffer if it can use the saved state. @item New variable @code{TeX-parse-self}. Set it to nil if you never want to parse the buffer when you load it. @item Only offer to save files that belongs to the document. When you format the document with @kbd{C-c C-c}, AUC @TeX{} will no longer offer to save your @file{RMAIL}, @file{.newsrc}, or other files that does not belong to the document. Suggested by Jim Hetrick @samp{}. @item Foil@TeX{} support. Thanks to Sven Mattisson @samp{} @item Smarter about when you need to reformat. Thanks to Chris Callsen @samp{}. @item Japanese @TeX{} Now supports Japanese @TeX{}. Thanks to Shinji Kobayashi @samp{}. @item Works again under OS/2 and other case insensitive file systems. @item DEMACS support. Thanks to Shinji Kobayashi @samp{}. @item Better @code{LaTeX-close-environment}. Thanks to Piet van Oostrum @samp{}. @item Ispell support. Thanks to Piet van Oostrum @samp{}. @item Support for Russian letters. Thanks to Justin R. Smith @samp{}. @item Sli@TeX{} fixes. Many people. @item Fixes for spelling errors. Many people. @end itemize @node Version 7.0 @comment node-name, next, previous, up @section Version 7.0 Coordinator: Per Abrahamsen, 1993. Alpha testers (in order of appearance): Piet van Oostrum @samp{}, Sven Mattisson @samp{}, Tim Geisler @samp{}, Fran E. Burstall @samp{}, Alastair Burt @samp{}, Sridhar Anandakrishnan @samp{}, Kjell Gustafsson @samp{}, Uffe Kjaerulff @samp{}, Kurt Swanson @samp{Kurt.Swanson@@dna.lth.se}, Mark Utting @samp{}, Per Norman Oma @samp{perno@@itk.unit.no}, Naji Mouawad @samp{}, Bo Nygaard Bai @samp{}, and probably more. @itemize @bullet @item New keymap. The keymap has been changed in order to make it more intuitive to new users, and because the old bindings did not work well with the new buffer manipulation commands in tex-buf.el. To use the new bindings, load @file{tex-init.el} instead of @file{auc-tex.el}. The file @file{auc-tex.el} is still available and implements the old keybindings on top of the new code. Print out the reference card (@file{doc/tex-ref.tex}) to see the new bindings. @item Completely redesigned the buffer handling. No part of the interface or the customization variables remain the same, unless you use the compatibility functions in @file{auc-tex.el}. In that case the interactive commands remain similar in spirit, but the customization interface is still changed. The file @file{tex-buf.el} has been completely rewritten, and there are major cleanup in @file{tex-dbg.el}, however the basic functionality remains the same in this file. The code for both @file{tex-buf.el} and @file{tex-dbg.el} should be much simpler now and easier to extent. @file{auc-tex.el} and @file{tex-site.el} was updated to support the new interface. I actually believe the moral equivalent to @code{TeX-region} to work now @t{:-)}, at least I understand the code now. The two major functions are now @code{TeX-command-master} and @code{TeX-command-region}. Each function will prompt you for the command to execute. AUC @TeX{} will make an educated guess on what command you want to run, and make that the default. The available commands are defined in the variable @code{TeX-command-list}. @code{TeX-command-master} will run the specified command on the buffers master file. You can have one command running for each master file. @code{TeX-command-region} will run the specified command on the current region, getting the header on trailer from the master file. You can have exactly one region command running, independent on how many master file commands that are running. Commands that operate on the active process (like @code{TeX-next-error}) will chose the process associated with buffers master file, unless the last region process is more recent than all master file processes. AUC @TeX{} now insist on knowing the master file for a buffer. If you do not specify it in the file variable section, and it is not obviously a master file itself, it will ask you. It will also add the master file name to the file variables, unless you disable this feature by setting @code{TeX-add-local} to nil. Furthermore, it will convert @samp{%% Master:} lines to file variables, unless you disable it by setting @code{TeX-convert-master} to nil. @vindex TeX-convert-master Functionality removed (for now, it might appear again latter) include all other functions to start a command (e.g. @code{LaTeX-BibTeX}), and alternative ways to specify headers and trailers. The only place to get the header and trailer is from the master file (I can easily change that, if anyone have such needs). @item Style specific code isolated. You can now add style specific information to AUC TeX by writing a style file somewhere in TeX-style-path. The main code is now organized around this principle. @item Automatically generate style files. AUC @TeX{} can now automatically extract information from a @TeX{} file, and will do this when you save a buffer. @item Sli@TeX{} mode. Just like @LaTeX{} mode, except that the default command to format run on the buffer is @samp{slitex}. @item @code{LaTeX-section} completely general. Rewrote @file{ltx-sec.el}. @itemize @minus @item Sectioning level, toc, and title queries can be individually turned off. @item Label query can be turned on or off for selected sectioning levels. @item Label prefix can be different for different sectioning levels. @item If the title (or toc) is empty, point will be positioned there. @item Users can add new hooks @end itemize @item @code{TeX-insert-macro} much smarter. It will now prompt for the symbol with completions, and for many symbols it will also prompt for each argument. There are also completion on some of the arguments. @item Fixed center in figure environment. Thanks to Thomas Koenig @samp{}. @item Changed @code{\M-} to @code{\e} in all keybindings in order to better support 8-bit input on some GNU Emacs. Thanks to Peter Dalgaard @samp{}. Please, implementors of 8-bit input extensions to GNU Emacs. @code{\M-x} does @emph{not} means @dfn{@kbd{x} with the 8-bit set}. It means @dfn{pressing @kbd{x} while holding down the @key{meta} key}. Some systems (such as X11) are able to tell the different. Thus, even if you implement 256 byte keymaps, @code{\M-x} should still expand @code{meta-prefix-char} followed by an @kbd{x} in the keymap. This allows you to distinguish pressing @kbd{x} while holding down the @key{meta} key from entering a literal 8-bit character. @item Made the outline commands aware of the document style. That is, if the document style is @samp{article}, @samp{\section} will be one level below the @samp{\documentstyle}, while if the style is @samp{book}, @samp{\section} will be three levels below @samp{\documentstyle}. This will make @code{show-children} work better at the top level. @item The makefiles are closer to GNU coding standard. They now understand `prefix' and some other macros. @item Added hooks to be run after list of environments or list of completion names are updated, and also added a hook to be called after each file has been loaded. Thanks to Piet van Oostrum @samp{}. @item Added @samp{*} to lot of @code{(interactive)} declarations. @item The outline commands are now always accessible from @LaTeX{} mode. @item Generalized the keyboard remapping and double modes. These are found in the file @file{min-key.el}. @item Smart Comments. Not really, but there are now two comment functions which use their arguments to determine what to do, instead of four functions ignoring their arguments. @item Add outline headers. It is now possible to add extra outline headers, by setting the variable @code{TeX-outline-extra}. @item Smart quotes even smarter. If you press @kbd{"} twice, it will insert an real double quote instead of two (or four) single quotes. This is consistent with how remapping in @file{min-key.el} is done. @item Automatically untabify buffer when you save it. Hands up, everyone who have produced a `last revision' paper containing an unreadable list of data in the back, because @TeX{} does not understands tabs. @item Call show-all when you change major mode. Thanks to Inge Frick's @samp{} @file{kill-fix.el} enhancement, outline minor mode can now guarantee that all text is shown when you leave the minor mode, even if you leave the minor mode by changing the major mode. @item Updated documentation for 7.0. Also added key, variable, function, and concept indexes, as well as this history section and a new chapter on multifile documents (@pxref{Multifile}).@refill @end itemize @node Version 6.1 @comment node-name, next, previous, up @section Version 6.1 Coordinator: Per Abrahamsen, 1992. @itemize @bullet @item @code{TeX-region} might work now (heard that before?). Many people reported this one. Especially thanks to Fran Burstall @samp{} and Bill Schworm @samp{}.@refill @item The specification format for the @TeX{} command is more general. See the documentation for @code{LaTeX-command} and @code{plain-TeX-command}. @item The specification format for the preview commands is more general. See their respective documentation. @item The specification format for the print command is more general. See the documentation for @code{TeX-print-command}. @item @code{TeX-args} is marked as obsolete. @item The @samp{"Emergency stop ..."} error. Some users of old @TeX{} installations got might might be fixed now. Thanks to Philip Sterne @samp{}. @item It is now possible to change the preview command. @dots{} without loading TeX-site first. Thanks to Tim Bradshaw @samp{}. @item New variable TeX-smart-quotes. Allow @file{german.sty} users (and others) to disable the mapping of double quote (@kbd{"} to @samp{``} or @samp{''}). Thanks to Daniel Hernandez @samp{}. @item Many minor corrections to the documentation. Thanks to Mainhard E. Mayer @samp{}. @item Make test for @code{HOSTTYPE} case insensitive. Thanks to Gisli Ottarsson @samp{}. @item @code{TeX-force-default-mode} Set to avoid AUC @TeX{}'s attempts to infer the mode of the file by itself. @end itemize @node Version 6.0 @comment node-name, next, previous, up @section Version 6.0 Coordinator: Kresten Krab Thorup, 1992. Preliminary documentation is available in the directory @file{doc}. It isn't very well written, but I believe it covers most interesting points. Comments, suggestions, or even rewrites of sections are VERY WELCOME@dots{} LaCheck has been incorporated in the package. The source code for it is available in the directory @file{lacheck} along with the documentation for it. Lacheck may also be used from the command line. It is bound to @kbd{C-c $}. Some minor changes in: @table @code @item TeX-region Should work better with @samp{Master:} option. @item LaTeX-environment Numerous new hooks added by Masayuki Kuwada. @item TeX-command-on-region Removed. @kbd{C-c C-o} used for @code{outline-minor-mode} instead. @end table And some additional minor fixes... @node Ancient History @comment node-name, next, previous, up @section Ancient History The origin of AUC @TeX{} is @file{tex-mode.el} from Emacs 16. Lars Peter Fischer @samp{} wrote the first functions to insert font macros and Danish characters back in 1986. Per Abrahamsen @samp{} wrote the functions to insert environments and sections, to indent the text, and the outline minor mode in 1987. Kresten Krab Thorup @samp{} wrote the buffer handling and debugging functions, the macro completion, and much more, including much improved indentation and text formatting functions. He also made the first public release in 1991, and was the main author and coordinator of every release up to and including 6.0. Thanks should also go to all the people who have been a great help developing the AUC @TeX{} system. Especially all the people on the @samp{auc-tex} mailing list, who have been very helpful commenting and pointing out weak points and errors. Some of the contributors are listed below. Others are mentioned in the lisp files or in the History section. @table @samp @item Denys Duchier @item George Ferguson @item Martin Simons @item Michael Smith @item Per Hagen @item Ralf Handl @item Sven Mattisson @item Masayuki Kuwada @item Terrence Brannon @item Leonard Roseman @end table Special thanks to Leslie Lamport for supplying the source for the LaTeX error messages in the @file{tex-dbg.el} file. auctex-11.87/doc/preview-latex.info0000644000000000000000000036376012056205161015754 0ustar rootrootThis is preview-latex.info, produced by makeinfo version 4.13 from preview-latex.texi. This manual is for preview-latex, a LaTeX preview mode for AUCTeX (version 11.87 from 2012-11-30). Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * preview-latex: (preview-latex). Preview LaTeX fragments in Emacs END-INFO-DIR-ENTRY INFO-DIR-SECTION TeX START-INFO-DIR-ENTRY * preview-latex: (preview-latex). Preview LaTeX fragments in Emacs END-INFO-DIR-ENTRY  File: preview-latex.info, Node: Top, Prev: (dir), Up: (dir) preview-latex ************* This manual may be copied under the conditions spelled out in *note Copying this Manual::. preview-latex is a package embedding preview fragments into Emacs source buffers under the AUCTeX editing environment for LaTeX. It uses `preview.sty' for the extraction of certain environments (most notably displayed formulas). Other applications of this style file are possible and exist. The name of the package is really `preview-latex', all in lowercase letters, with a hyphen. If you typeset it, you can use a sans-serif font to visually offset it. * Menu: * Copying:: Copying * Introduction:: Getting started. * Installation:: Make Install. * Keys and lisp:: Key bindings and user-level lisp functions. * Simple customization:: To make it fit in. * Known problems:: When things go wrong. * For advanced users:: Internals and more customizations. * ToDo:: Future development. * Frequently Asked Questions:: All about preview-latex * Copying this Manual:: GNU Free Documentation License * Index:: A menu of many topics.  File: preview-latex.info, Node: Copying, Next: Introduction, Prev: Top, Up: Top Copying ******* For the conditions for copying parts of preview-latex, see the General Public Licenses referres to in the copyright notices of the files, the General Public Licenses accompanying them and the explanatory section in *note Copying: (auctex)Copying. This manual specifically is covered by the GNU Free Documentation License (*note Copying this Manual::).  File: preview-latex.info, Node: Introduction, Next: Installation, Prev: Copying, Up: Top 1 Introduction ************** Does your neck hurt from turning between previewer windows and the source too often? This AUCTeX component will render your displayed LaTeX equations right into the editing window where they belong. The purpose of preview-latex is to embed LaTeX environments such as display math or figures into the source buffers and switch conveniently between source and image representation. * Menu: * What use is it?:: * Activating preview-latex:: * Getting started:: * Basic modes of operation:: * More documentation:: * Availability:: * Contacts::  File: preview-latex.info, Node: What use is it?, Next: Activating preview-latex, Prev: Introduction, Up: Introduction 1.1 What use is it? =================== WYSIWYG (what you see is what you get) sometimes is considered all the rage, sometimes frowned upon. Do we really want it? Wrong question. The right question is _what_ we want from it. Except when finetuning the layout, we don't want to use printer fonts for on-screen text editing. The low resolution and contrast of a computer screen render all but the coarsest printer fonts (those for low-quality newsprint) unappealing, and the margins and pagination of the print are not wanted on the screen, either. On the other hand, more complex visual compositions like math formulas and tables can't easily be taken in when seen only in the source. preview-latex strikes a balance: it only uses graphic renditions of the output for certain, configurable constructs, does this only when told, and then right in the source code. Switching back and forth between the source and preview is easy and natural and can be done for each image independently. Behind the scenes of preview-latex, a sophisticated framework of other programs like `dvipng', Dvips and Ghostscript are employed together with a special LaTeX style file for extracting the material of interest in the background and providing fast interactive response.  File: preview-latex.info, Node: Activating preview-latex, Next: Getting started, Prev: What use is it?, Up: Introduction 1.2 Activating preview-latex ============================ After installation, the package may need to be activated (and remember to activate AUCTeX too). In XEmacs, and in any prepackaged versions worth their salt, activation should be automatic upon installation. If this seems not the case, complain to your installation provider. The usual activation (if it is not done automatically) would be (load "preview-latex.el" nil t t) If you still don't get a "Preview" menu in LaTeX mode in spite of AUCTeX showing its "Command", your installation is broken. One possible cause are duplicate Lisp files that might be detectable with ` list-load-path-shadows '.  File: preview-latex.info, Node: Getting started, Next: Basic modes of operation, Prev: Activating preview-latex, Up: Introduction 1.3 Getting started =================== Once activated, preview-latex and its documentation will be accessible via its menus (note that preview-latex requires AUCTeX to be loaded). When you have loaded a LaTeX document (a sample document `circ.tex' is included in the distribution, but most documents including math and/or figures should do), you can use its menu or `C-c C-p C-d' (for `Preview/Document'). Previews will now be generated for various objects in your document. You can use the time to take a short look at the other menu entries and key bindings in the `Preview' menu. You'll see the previewed objects change into a roadworks sign when preview-latex has determined just what it is going to preview. Note that you can freely navigate the buffer while this is going on. When the process is finished you will see the objects typeset in your buffer. It is a bad idea, however, to edit the buffer before the roadworks signs appear, since that is the moment when the correlation between the original text and the buffer locations gets established. If the buffer changes before that point of time, the previews will not be placed where they belong. If you do want to change some obvious error you just spotted, we recommend you stop the background process by pressing `C-c C-k'. To see/edit the LaTeX code for a specific object, put the point (the cursor) on it and press `C-c C-p C-p' (for `Preview/at point'). It will also do to click with the middle mouse button on the preview. Now you can edit the code, and generate a new preview by again pressing `C-c C-p C-p' (or by clicking with the middle mouse button on the icon before the edited text). If you are using the `desktop' package, previews will remain from one session to the next as long as you don't kill your buffer. If you are using XEmacs, you will probably need to upgrade the package to the newest one; things are being fixed just as I am writing this.  File: preview-latex.info, Node: Basic modes of operation, Next: More documentation, Prev: Getting started, Up: Introduction 1.4 Basic modes of operation ============================ preview-latex has a number of methods for generating its graphics. Its default operation is equivalent to using the `LaTeX' command from AUCTeX. If this happens to be a call of PDFLaTeX generating PDF output (you need at least AUCTeX 11.51 for this), then Ghostscript will be called directly on the resulting PDF file. If a DVI file gets produced, first Dvips and then Ghostscript get called by default. The image type to be generated by Ghostscript can be configured with M-x customize-variable RET preview-image-type RET The default is `png' (the most efficient image type). A special setting is `dvipng' in case you have the `dvipng' program installed. In this case, `dvipng' will be used for converting DVI files and Ghostscript (with a `PNG' device) for converting PDF files. `dvipng' is much faster than the combination of Dvips and Ghostscript. You can get downloads, access to its CVS archive and further information from its project site (http://savannah.nongnu.org/projects/dvipng).  File: preview-latex.info, Node: More documentation, Next: Availability, Prev: Basic modes of operation, Up: Introduction 1.5 More documentation ====================== After the installation, documentation in the form of this info manual will be available. You can access it with the standalone info reader with info preview-latex or by pressing `C-h i d m preview-latex ' in Emacs. Once preview-latex is activated, you can instead use `C-c C-p ' (or the menu entry `Preview/Read documentation'). Depending on your installation, a printable manual may also be available in the form of `preview-latex.dvi' or `preview-latex.ps'. Detailed documentation for the LaTeX style used for extracting the preview images is placed in `preview.dvi' in a suitable directory during installation; on typical teTeX-based systems, texdoc preview will display it.  File: preview-latex.info, Node: Availability, Next: Contacts, Prev: More documentation, Up: Introduction 1.6 Availability ================ The preview-latex project is now part of AUCTeX and accessible as part of the AUCTeX project page (http://savannah.gnu.org/projects/auctex). You can get its files from the AUCTeX download area (ftp://ftp.gnu.org/pub/gnu/auctex). As of AUCTeX 11.81, preview-latex should already be integrated into AUCTeX, so no separate download will be necessary. You will also find `.rpm' files there for Fedora and possibly SuSE. Anonymous CVS is available as well.  File: preview-latex.info, Node: Contacts, Prev: Availability, Up: Introduction 1.7 Contacts ============ Bug reports should be sent by using `M-x preview-report-bug ', as this will fill in a lot of information interesting to us. If the installation fails (but this should be a rare event), report bugs to . There is a general discussion list for AUCTeX which also covers preview-latex, look at `http://lists.gnu.org/mailman/listinfo/auctex'. For more information on the mailing list, send a message with just the word "help" as subject or body to . For the developers, there is the list; it would probably make sense to direct feature requests and questions about internal details there. There is a low-volume read-only announcement list available to which you can subscribe by sending a mail with "subscribe" in the subject to . Offers to support further development will be appreciated. If you want to show your appreciation with a donation to the main developer, you can do so via PayPal to , and of course you can arrange for service contracts or for added functionality. Take a look at the `TODO' list for suggestions in that area.  File: preview-latex.info, Node: Installation, Next: Keys and lisp, Prev: Introduction, Up: Top 2 Installation ************** Installation is now being covered in *note Installation: (auctex)Installation.  File: preview-latex.info, Node: Keys and lisp, Next: Simple customization, Prev: Installation, Up: Top 3 Key bindings and user-level lisp functions ******************************************** preview-latex adds key bindings starting with `C-c C-p' to the supported modes of AUCTeX (*note (auctex)Key Index::). It will also add its own `Preview' menu in the menu bar, as well as an icon in the toolbar. The following only describes the interactive use: view the documentation strings with `C-h f' if you need the Lisp information. `C-c C-p C-p' `preview-at-point' Preview/Generate previews (or toggle) at point If the cursor is positioned on or inside of a preview area, this toggles its visibility, regenerating the preview if necessary. If not, it will run the surroundings through preview. The surroundings include all areas up to the next valid preview, unless invalid previews occur before, in which case the area will include the last such preview in either direction. And overriding any other action, if a region is active (`transient-mark-mode' or `zmacs-regions'), it is run through `preview-region'. `' The middle mouse button has a similar action bound to it as `preview-at-point', only that it knows which preview to apply it to according to the position of the click. You can click either anywhere on a previewed image, or when the preview is opened and showing the source text, you can click on the icon preceding the source text. In other areas, the usual mouse key action (typically: paste) is not affected. `' The right mouse key pops up a context menu with several options: toggling the preview, regenerating it, removing it (leaving the unpreviewed text), copying the text inside of the preview, and copying it in a form suitable for copying as an image into a mail or news article. This is a one-image variant of the following command: `C-c C-p C-w' `preview-copy-region-as-mml' Copy a region as MML This command is also available as a variant in the context menu on the right mouse button (where the region is the preview that has been clicked on). It copies the current region into the kill buffer in a form suitable for copying as a text including images into a mail or news article using mml-mode (*note Composing: (emacs-mime)Composing.). If you regenerate or otherwise kill the preview in its source buffer before the mail or news gets posted, this will fail. Also you should generate images you want to send with `preview-transparent-border' set to `nil', or the images will have an ugly border. preview-latex detects this condition and asks whether to regenerate the region with borders switched off. As this is an asynchronous operation running in the background, you'll need to call this command explicitly again to get the newly generated images into the kill ring. Preview your articles with `mml-preview' (on `M-m P', or `C-c C-m P' in Emacs 22) to make sure they look fine. `C-c C-p C-e' `preview-environment' Preview/Generate previews for environment Run preview on LaTeX environment. The environments in `preview-inner-environments' are treated as inner levels so that for instance, the `split' environment in `\begin{equation}\begin{split}...\end{split}\end{equation}' is properly displayed. If called with a numeric argument, the corresponding number of outward nested environments is treated as inner levels. `C-c C-p C-s' `preview-section' Preview/Generate previews for section Run preview on this LaTeX section. `C-c C-p C-r' `preview-region' Preview/Generate previews for region Run preview on current region. `C-c C-p C-b' `preview-buffer' Preview/Generate previews for buffer Run preview on the current buffer. `C-c C-p C-d' `preview-document' Preview/Generate previews for document Run preview on the current document. `C-c C-p C-c C-p' `preview-clearout-at-point' Preview/Remove previews at point Clear out (remove) the previews that are immediately adjacent to point. `C-c C-p C-c C-s' `preview-clearout-section' Preview/Remove previews from section Clear out all previews in current section. `C-c C-p C-c C-r' `preview-clearout' Preview/Remove previews from region Clear out all previews in the current region. `C-c C-p C-c C-b' `preview-clearout-buffer' Preview/Remove previews from buffer Clear out all previews in current buffer. This makes the current buffer lose all previews. `C-c C-p C-c C-d' `preview-clearout-document' Preview/Remove previews from document Clear out all previews in current document. The document consists of all buffers that have the same master file as the current buffer. This makes the current document lose all previews. `C-c C-p C-f' `preview-cache-preamble' Preview/Turn preamble cache on Dump a pregenerated format file. For the rest of the session, this file is used when running on the same master file. Use this if you know your LaTeX takes a long time to start up, the speedup will be most noticeable when generating single or few previews. If you change your preamble, do this again. preview-latex will try to detect the necessity of that automatically when editing changes to the preamble are done from within Emacs, but it will not notice if the preamble effectively changes because some included file or style file is tampered with. `C-c C-p C-c C-f' `preview-cache-preamble-off' Preview/Turn preamble cache off Clear the pregenerated format file and stop using preambles for the current document. If the caching gives you problems, use this. `C-c C-p C-i' `preview-goto-info-page' Preview/Read Documentation Read this info manual. `M-x preview-report-bug ' `preview-report-bug' Preview/Report Bug This is the preferred way of reporting bugs as it will fill in what version of preview-latex you are using as well as versions of relevant other software, and also some of the more important settings. Please use this method of reporting, if at all possible and before reporting a bug, have a look at *note Known problems::. `C-c C-k' LaTeX/TeX Output/Kill Job Kills the preview-generating process. This is really an AUCTeX keybinding, but it is included here as a hint. If you are generating a preview and then make a change to the buffer, preview-latex may be confused and place the previews wrong.  File: preview-latex.info, Node: Simple customization, Next: Known problems, Prev: Keys and lisp, Up: Top 4 Simple customization ********************** Customization options can be found by typing `M-x customize-group preview '. Remember to set the option when you have changed it. The list of suggestions can be made very long (and is covered in detail in *note For advanced users::), but some are: * Change the color of the preview background If you use a non-white background in Emacs, you might have color artifacts at the edges of your previews. Playing around with the option `preview-transparent-color' in the `Preview Appearance' group might improve things. With some settings, the cursor may cover the whole background of a preview, however. This option is specific to the display engine in use. Its default is different in Emacs 21 and Emacs 22, and it is not available in XEmacs. * Showing `\label's When using preview-latex, the `\label's are hidden by the previews. It is possible to make them visible in the output by using the LaTeX package `showkeys' alternatively `showlabels'. However, the boxes of these labels will be outside the region preview-latex considers as the preview image. To enable a similar mechanism internal to preview-latex, enable the `showlabels' option in the variable `preview-default-option-list' in the `Preview Latex' group. It must be noted, however, that a much better idea may be to use the RefTeX package for managing references. *Note RefTeX in a Nutshell: (reftex)RefTeX in a Nutshell. * Open previews automatically The current default is to open previews automatically when you enter them with cursor left/right motions. Auto-opened previews will close again once the cursor leaves them again (this is also done when doing incremental search, or query-replace operations), unless you changed anything in it. In that case, you will have to regenerate the preview (via e.g., `C-c C-p C-p'). Other options for `preview-auto-reveal' are available via `customize'. * Automatically cache preambles Currently preview-latex asks you whether you want to cache the document preamble (everything before `\begin{document}') before it generates previews for a buffer the first time. Caching the preamble will significantly speed up regeneration of previews. The larger your preamble is, the more this will be apparent. Once a preamble is cached, preview-latex will try to keep track of when it is changed, and dump a fresh format in that case. If you experience problems with this, or if you want it to happen without asking you the first time, you can customize the variable `preview-auto-cache-preamble'. * Attempt to keep counters accurate when editing Since preview-latex frequently runs only small regions through LaTeX, values like equation counters are not consistent from run to run. If this bothers you, customize the variable `preview-preserve-counters' to `t' (this is consulted by `preview-required-option-list'). LaTeX will then output a load of counter information during compilation, and this information will be used on subsequent updates to keep counters set to useful values. The additional information takes additional time to analyze, but this is relevant mostly only when you are regenerating all previews at once, and maybe you will be less tempted to do so when counters appear more or less correct. * Preview your favourite LaTeX constructs If you have a certain macro or environment that you want to preview, first check if it can be chosen by cutomizing `preview-default-options-list' in the `Preview Latex' group. If it is not available there, you can add it to `preview-default-preamble' also in the `Preview Latex' group, by adding a `\PreviewMacro' or `\PreviewEnvironment' entry (*note Provided commands::) _after_ the `\RequirePackage' line. For example, if you want to preview the `center' environment, press the button and the last button, then add \PreviewEnvironment{center} in the space that just opened. Note that since `center' is a generic formatting construct of LaTeX, a general configuration like that is not quite prudent. You better to do this on a per-document base so that it is easy to disable this behavior when you find this particular entry gives you trouble. One possibility is to save such settings in the corresponding file-local variable instead of your global configuration (*note Local Variables in Files: (emacs)File Variables.). A perhaps more convenient place for such options would be in a configuration file in the same directory with your project (*note Package options::). The usual file for preview-latex preconfiguration is `prauctex.cfg'. If you also want to keep the systemwide defaults, you should add a line \InputIfFileExists{preview/prauctex.cfg}{}{} to your own version of `prauctex.cfg' (this is assuming that global files relating to the `preview' package are installed in a subdirectory `preview', the default behavior). * Don't preview inline math If you have performance problems because your document is full of inline math (`$...$'), or if your usage of `$' conflicts with preview-latex's, you can turn off inline math previews. In the `Preview Latex' group, remove `textmath' from `preview-default-option-list' by customizing this variable.  File: preview-latex.info, Node: Known problems, Next: For advanced users, Prev: Simple customization, Up: Top 5 Known problems **************** A number of issues are known concerning the interoperation with various other software. Some of the known problems can be solved by moving to newer versions of the problematic software or by simple patches. * Menu: * Problems with Ghostscript:: * Font problems with Dvips:: * Emacs problems:: * Too small bounding boxes:: * x-symbol interoperation:: * Middle-clicks paste instead of toggling:: If you find something not mentioned here, please send a bug report using `M-x preview-report-bug ', which will fill in a lot of information interesting to us and send it to the list. Please use the bug reporting commands if at all possible.  File: preview-latex.info, Node: Problems with Ghostscript, Next: Font problems with Dvips, Up: Known problems 5.1 Problems with Ghostscript ============================= Most of the problems encountered come from interaction with Ghostscript. It is a good idea to have a fairly recent version of Ghostscript installed. One problem occurs if you have specified the wrong executable under Windows: the command line version of Ghostscript is called `GSWIN32C.EXE', not `GSWIN32.EXE'. When Ghostscript fails, the necessary information and messages from Ghostscript go somewhere. If Ghostscript fails before starting to process images, you'll find the information at the end of the process buffer you can see with `C-c C-l'. If Ghostscript fails while processing a particular image, this image will be tagged with clickable buttons for the error description and for the corresponding source file. The default options configurable with `M-x customize-variable preview-gs-options ' include the options `-dTextAlphaBits=4' and `-dGraphicsAlphaBits=4'. These options have been reported to make Ghostscript 5.50 fail, but should work under Ghostscript 6.51 and later. If you are experiencing problems, it might help to customize them away. Of course, this also takes away the joy of antialiasing, so upgrading Ghostscript might not be the worst idea after all. The device names have changed over time, so when using an old Ghostscript, you may have problems with the devices demanded by the customizable variable `preview-image-creators'. In that case, make sure they fit your version of Ghostscript, at least the entry corresponding to the current value of `preview-image-type'. While not being best in file size and image quality, setting `preview-image-creators' to `jpeg' should probably be one of the best bets for the purpose of checking basic operation, since that device name has not changed in quite some time. But JPEG is not intended for text, but for photographic images. On a more permanent time scale, the best choice is to use PNG and complain to your suppliers if either Emacs or Ghostscript fail to properly accommodate this format.  File: preview-latex.info, Node: Font problems with Dvips, Next: Emacs problems, Prev: Problems with Ghostscript, Up: Known problems 5.2 Font problems with Dvips ============================ Some fonts have been reported to produce wrong characters with preview-latex. preview-latex calls Dvips by default with the option `-Pwww' in order to get scalable fonts for nice results. If you are using antialiasing, however, the results might be sufficiently nice with bitmapped fonts, anyway. You might try `-Ppdf' for another stab at scalable fonts, or other printer definitions. Use `M-x customize-variable preview-fast-dvips-command ' and `M-x customize-variable preview-dvips-command ' in order to customize this. One particular problem is that several printer setup files (typically in a file called `/usr/share/texmf/dvips/config/config.pdf' if you are using the `-Ppdf' switch) contain the `G' option for `character shifting'. This option will result in `fi' being rendered as `#' (British Pounds sign) in several fonts, unless your version of Dvips has a long-standing bug in its implementation fixed (only very recent versions of Dvips have).  File: preview-latex.info, Node: Emacs problems, Next: Too small bounding boxes, Prev: Font problems with Dvips, Up: Known problems 5.3 Emacs problems ================== * GNU Emacs versions Don't use Emacsen older than 21.3 on X11-based systems. On most other systems, you'll need at least Emacs 22.1 or one of the developer versions leading up to it. Details can be found in *note Prerequisites: (auctex)Prerequisites. * Emacsen on Windows operating systems For Emacs 21, no image support is available in Emacs under Windows. Without images, preview-latex is useless. The current CVS version of Emacs available from `http://savannah.gnu.org/projects/emacs' now supports images including the PNG format, so Emacs 22 should work out of the box once it is released. Precompiled versions are available from `http://crasseux.com/emacs' and `http://nqmacs.sf.net'. For detailed installation instructions for Windows, see *note Installation under MS Windows: (auctex)Installation under MS Windows. * XEmacs There is are two larger problems known with older XEmacs releases. One leads to seriously mispositioned baselines and previews hanging far above other text on the same line. This should be fixed as of XEmacs-21.4.9. The other core bug causes a huge delay when XEmacs's idea of the state of processes (like ghostscript) is wrong, and can lead to nasty spurious error messages. It should be fixed in version 21.4.8. Previews will only remain from one session to the next if you have version 1.81 or above of the `edit-utils' package, first released in the 2002-03-12 sumo tarball.  File: preview-latex.info, Node: Too small bounding boxes, Next: x-symbol interoperation, Prev: Emacs problems, Up: Known problems 5.4 Too small bounding boxes ============================ The bounding box of a preview is determined by the LaTeX package using the pure TeX bounding boxes. If there is material extending outside of the TeX box, that material will be missing from the preview image. This happens for the label-showing boxes from the `showkeys' package. This particular problem can be circumvented by using the `showlabels' option of the preview package. In general, you should try to fix the problem in the TeX code, like avoiding drawing outside of the picture with PSTricks. One possible remedy is to set `preview-fast-conversion' to `Off' (*note The Emacs interface::). The conversion will take more time, but will then use the bounding boxes from EPS files generated by Dvips. Dvips generally does not miss things, but it does not understand PostScript constructs like `\resizebox' or `\rotate' commands, so will generate rather wrong boxes for those. Dvips can be helped with the `psfixbb' package option to preview (*note The LaTeX style file::), which will tag the corners of the included TeX box. This will mostly be convenient for _pure_ PostScript stuff like that created by PSTricks, which Dvips would otherwise reserve no space for.  File: preview-latex.info, Node: x-symbol interoperation, Next: Middle-clicks paste instead of toggling, Prev: Too small bounding boxes, Up: Known problems 5.5 x-symbol interoperation =========================== Thanks to the work of Christoph Wedler, starting with version `4.0h/beta' of x-symbol, the line parsing of AUCTeX and preview-latex is fully supported. Earlier versions exhibit problems. However, versions before 4.2.2 will cause a drastic slowdown of preview-latex's parsing pass, so we don't recommend to use versions earlier than that. If you wonder what x-symbol is, it is a package that transforms various tokens and subscripts to a more readable form while editing and offers a few input methods handy especially for dealing with math. Take a look at `http://x-symbol.sourceforge.net'. x-symbol versions up to 4.5.1-beta at least require an 8bit-clean TeX implementation (meaning that its terminal output should not use `^^'-started escape sequences) for cooperation with preview-latex. Later versions may get along without it, like preview-latex does now. If you experience problems with `circ.tex' in connection with both x-symbol and Latin-1 characters, you may need to change your language environment or, as a last resort, customize the variable `LaTeX-command-style' by replacing the command `latex' with `latex -translate-file=cp8bit'.  File: preview-latex.info, Node: Middle-clicks paste instead of toggling, Prev: x-symbol interoperation, Up: Known problems 5.6 Middle-clicks paste instead of toggling =========================================== This is probably the fault of your favorite package. `flyspell.el' and `mouse-drag.el' are known to be affected in versions before Emacs 21.3. Upgrade to the most recent version. What version of XEmacs might contain the fixes is unknown. `isearch.el' also shows this effect while searches are in progress, but the code is such a complicated mess that no patch is in sight. Better just end the search with `' before toggling and resume with `C-s C-s' or similar afterwards. Since previews over the current match will auto-open, anyway, this should not be much of a problem in practice.  File: preview-latex.info, Node: For advanced users, Next: ToDo, Prev: Known problems, Up: Top 6 For advanced users ******************** This package consists of two parts: a LaTeX style that splits the output into appropriate parts with one preview object on each page, and an Emacs-lisp part integrating the thing into Emacs (aided by AUCTeX). * Menu: * The LaTeX style file:: * The Emacs interface:: * The preview images:: * Misplaced previews::  File: preview-latex.info, Node: The LaTeX style file, Next: The Emacs interface, Prev: For advanced users, Up: For advanced users 6.1 The LaTeX style file ======================== The main purpose of this package is the extraction of certain environments (most notably displayed formulas) from LaTeX sources as graphics. This works with DVI files postprocessed by either Dvips and Ghostscript or dvipng, but it also works when you are using PDFTeX for generating PDF files (usually also postprocessed by Ghostscript). Current uses of the package include the preview-latex package for WYSIWYG functionality in the AUCTeX editing environment, generation of previews in LyX, as part of the operation of the ps4pdf package, the tbook XML system and some other tools. Producing EPS files with Dvips and its derivatives using the `-E' option is not a good alternative: People make do by fiddling around with `\thispagestyle{empty}' and hoping for the best (namely, that the specified contents will indeed fit on single pages), and then trying to guess the baseline of the resulting code and stuff, but this is at best dissatisfactory. The preview package provides an easy way to ensure that exactly one page per request gets shipped, with a well-defined baseline and no page decorations. While you still can use the preview package with the `classic' dvips -E -i invocation, there are better ways available that don't rely on Dvips not getting confused by PostScript specials. For most applications, you'll want to make use of the `tightpage' option. This will embed the page dimensions into the PostScript or PDF code, obliterating the need to use the `-E -i' options to Dvips. You can then produce all image files with a single run of Ghostscript from a single PDF or PostScript (as opposed to EPS) file. Various options exist that will pass TeX dimensions and other information about the respective shipped out material (including descender size) into the log file, where external applications might make use of it. The possibility for generating a whole set of graphics with a single run of Ghostscript (whether from LaTeX or PDFLaTeX) increases both speed and robustness of applications. It is also feasible to use dvipng on a DVI file with the options -picky -noghostscript to omit generating any image file that requires Ghostscript, then let a script generate all missing files using Dvips/Ghostscript. This will usually speed up the process significantly. * Menu: * Package options:: * Provided commands::  File: preview-latex.info, Node: Package options, Next: Provided commands, Prev: The LaTeX style file, Up: The LaTeX style file 6.1.1 Package options --------------------- The package is included with the customary \usepackage[OPTIONS]{preview} You should usually load this package as the last one, since it redefines several things that other packages may also provide. The following options are available: `active' is the most essential option. If this option is not specified, the `preview' package will be inactive and the document will be typeset as if the `preview' package were not loaded, except that all declarations and environments defined by the package are still legal but have no effect. This allows defining previewing characteristics in your document, and only activating them by calling LaTeX as latex '\PassOptionsToPackage{active}{preview} \input{FILENAME}' `noconfig' Usually the file `prdefault.cfg' gets loaded whenever the `preview' package gets activated. `prdefault.cfg' is supposed to contain definitions that can cater for otherwise bad results, for example, if a certain document class would otherwise lead to trouble. It also can be used to override any settings made in this package, since it is loaded at the very end of it. In addition, there may be configuration files specific for certain `preview' options like `auctex' which have more immediate needs. The `noconfig' option suppresses loading of those option files, too. `psfixbb' Dvips determines the bounding boxes from the material in the DVI file it understands. Lots of PostScript specials are not part of that. Since the TeX boxes do not make it into the DVI file, but merely characters, rules and specials do, Dvips might include far too small areas. The option `psfixbb' will include `/dev/null' as a graphic file in the ultimate upper left and lower right corner of the previewed box. This will make Dvips generate an appropriate bounding box. `dvips' If this option is specified as a class option or to other packages, several packages pass things like page size information to Dvips, or cause crop marks or draft messages written on pages. This seriously hampers the usability of previews. If this option is specified, the changes will be undone if possible. `pdftex' If this option is set, PDFTeX is assumed as the output driver. This mainly affects the `tightpage' option. `xetex' If this option is set, XeTeX is assumed as the output driver. This mainly affects the `tightpage' option. `displaymath' will make all displayed math environments subject to preview processing. This will typically be the most desired option. `floats' will make all float objects subject to preview processing. If you want to be more selective about what floats to pass through to a preview, you should instead use the `\PreviewSnarfEnvironment' command on the floats you want to have previewed. `textmath' will make all text math subject to previews. Since math mode is used throughly inside of LaTeX even for other purposes, this works by redefining `\(', `\)' and `$' and the `math' environment (apparently some people use that). Only occurences of these text math delimiters in later loaded packages and in the main document will thus be affected. `graphics' will subject all `\includegraphics' commands to a preview. `sections' will subject all section headers to a preview. `delayed' will delay all activations and redefinitions the `preview' package makes until `\'`begin{document}'. The purpose of this is to cater for documents which should be subjected to the `preview' package without having been prepared for it. You can process such documents with latex '\RequirePackage[active,delayed,OPTIONS]{preview} \input{FILENAME}' This relaxes the requirement to be loading the `preview' package as last package. DRIVER loads a special driver file `prDRIVER.def'. The remaining options are implemented through the use of driver files. `auctex' This driver will produce fake error messages at the start and end of every preview environment that enable the Emacs package preview-latex in connection with AUCTeX to pinpoint the exact source location where the previews have originated. Unfortunately, there is no other reliable means of passing the current TeX input position _in_ a line to external programs. In order to make the parsing more robust, this option also switches off quite a few diagnostics that could be misinterpreted. You should not specify this option manually, since it will only be needed by automated runs that want to parse the pseudo error messages. Those runs will then use `\PassOptionsToPackage' in order to effect the desired behaviour. In addition, `prauctex.cfg' will get loaded unless inhibited by the `noconfig' option. This caters for the most frequently encountered problematic commands. `showlabels' During the editing process, some people like to see the label names in their equations, figures and the like. Now if you are using Emacs for editing, and in particular preview-latex, I'd strongly recommend that you check out the RefTeX package which pretty much obliterates the need for this kind of functionality. If you still want it, standard LaTeX provides it with the `showkeys' package, and there is also the less encompassing `showlabels' package. Unfortunately, since those go to some pain not to change the page layout and spacing, they also don't change `preview''s idea of the TeX dimensions of the involved boxes. So if you are using `preview' for determing bounding boxes, those packages are mostly useless. The option `showlabels' offers a substitute for them. `tightpage' It is not uncommon to want to use the results of `preview' as graphic images for some other application. One possibility is to generate a flurry of EPS files with dvips -E -i -Pwww -o OUTPUTFILE.000 INPUTFILE However, in case those are to be processed further into graphic image files by Ghostscript, this process is inefficient since all of those files need to be processed one by one. In addition, it is necessary to extract the bounding box comments from the EPS files and convert them into page dimension parameters for Ghostscript in order to avoid full-page graphics. This is not even possible if you wanted to use Ghostscript in a _single_ run for generating the files from a single PostScript file, since Dvips will in that case leave no bounding box information anywhere. The solution is to use the `tightpage' option. That way a single command line like `gs -sDEVICE=png16m -dTextAlphaBits=4 -r300 -dGraphicsAlphaBits=4 -dSAFER -q -dNOPAUSE -sOutputFile=OUTPUTFILE%d.png INPUTFILE.ps' will be able to produce tight graphics from a single PostScript file generated with Dvips _without_ use of the options `-E -i', in a single run. The `tightpage' option actually also works when using the `pdftex' option and generating PDF files with PDFTeX. The resulting PDF file has separate page dimensions for every page and can directly be converted with one run of Ghostscript into image files. If neither `dvips' or `pdftex' have been specified, the corresponding option will get autodetected and invoked. If you need this in a batch environment where you don't want to use `preview''s automatic extraction facilities, no problem: just don't use any of the extraction options, and wrap everything to be previewed into `preview' environments. This is how LyX does its math previews. If the pages under the `tightpage' option are just too tight, you can adjust by setting the length `\PreviewBorder' to a different value by using `\setlength'. The default value is `0.50001bp', which is half of a usual PostScript point, rounded up. If you go below this value, the resulting page size may drop below `1bp', and Ghostscript does not seem to like that. If you need finer control, you can adjust the bounding box dimensions individually by changing the macro `\PreviewBbAdjust' with the help of `\renewcommand'. Its default value is \newcommand \PreviewBbAdjust {-\PreviewBorder -\PreviewBorder \PreviewBorder \PreviewBorder} This adjusts the left, lower, right and upper borders by the given amount. The macro must contain 4 TeX dimensions after another, and you may not omit the units if you specify them explicitly instead of by register. PostScript points have the unit `bp'. `lyx' This option is for the sake of LyX developers. It will output a few diagnostics relevant for the sake of LyX' preview functionality (at the time of writing, mostly implemented for math insets, in versions of LyX starting with 1.3.0). `counters' This writes out diagnostics at the start and the end of previews. Only the counters changed since the last output get written, and if no counters changed, nothing gets written at all. The list consists of counter name and value, both enclosed in `{}' braces, followed by a space. The last such pair is followed by a colon (`:') if it is at the start of the preview snippet, and by a period (`.') if it is at the end. The order of different diagnostics like this being issued depends on the order of the specification of the options when calling the package. Systems like preview-latex use this for keeping counters accurate when single previews are regenerated. `footnotes' This makes footnotes render as previews, and only as their footnote symbol. A convenient editing feature inside of Emacs. The following options are just for debugging purposes of the package and similar to the corresponding TeX commands they allude to: `tracingall' causes lots of diagnostic output to appear in the log file during the preview collecting phases of TeX's operation. In contrast to the similarly named TeX command, it will not switch to `\errorstopmode', nor will it change the setting of `\tracingonline'. `showbox' This option will show the contents of the boxes shipped out to the DVI files. It also sets `\showboxbreadth' and `\showboxdepth' to their maximum values at the end of loading this package, but you may reset them if you don't like that.  File: preview-latex.info, Node: Provided commands, Prev: Package options, Up: The LaTeX style file 6.1.2 Provided commands ----------------------- `\begin{preview}...\end{preview}' The `preview' environment causes its contents to be set as a single preview image. Insertions like figures and footnotes (except those included in minipages) will typically lead to error messages or be lost. In case the `preview' package has not been activated, the contents of this environment will be typeset normally. `\begin{nopreview}...\end{nopreview}' The `nopreview' environment will cause its contents not to undergo any special treatment by the `preview' package. When `preview' is active, the contents will be discarded like all main text that does not trigger the `preview' hooks. When `preview' is not active, the contents will be typeset just like the main text. Note that both of these environments typeset things as usual when preview is not active. If you need something typeset conditionally, use the `\ifPreview' conditional for it. `\PreviewMacro' If you want to make a macro like `\includegraphics' (actually, this is what is done by the `graphics' option to `preview') produce a preview image, you put a declaration like \PreviewMacro[*[[!]{\includegraphics} or, more readable, \PreviewMacro[{*[][]{}}]{\includegraphics} into your preamble. The optional argument to `\PreviewMacro' specifies the arguments `\includegraphics' accepts, since this is necessary information for properly ending the preview box. Note that if you are using the more readable form, you have to enclose the argument in a `[{' and `}]' pair. The inner braces are necessary to stop any included `[]' pairs from prematurely ending the optional argument, and to make a single `{}' denoting an optional argument not get stripped away by TeX's argument parsing. The letters simply mean `*' indicates an optional `*' modifier, as in `\includegraphics*'. `[' ^^A] indicates an optional argument in brackets. This syntax is somewhat baroque, but brief. `[]' also indicates an optional argument in brackets. Be sure to have encluded the entire optional argument specification in an additional pair of braces as described above. `!' indicates a mandatory argument. `{}' indicates the same. Again, be sure to have that additional level of braces around the whole argument specification. `?'DELIMITER{TRUE CASE}{FALSE CASE} is a conditional. The next character is checked against being equal to DELIMITER. If it is, the specification TRUE CASE is used for the further parsing, otherwise FALSE CASE will be employed. In neither case is something consumed from the input, so {TRUE CASE} will still have to deal with the upcoming delimiter. `@'{LITERAL SEQUENCE} will insert the given sequence literally into the executed call of the command. `-' will just drop the next token. It will probably be most often used in the true branch of a `?' specification. `#'{ARGUMENT}{REPLACEMENT} is a transformation rule that calls a macro with the given argument and replacement text on the rest of the argument list. The replacement is used in the executed call of the command. This can be used for parsing arbitrary constructs. For example, the `[]' option could manually be implemented with the option string `?[{#{[#1]}{[{#1}]}}{}'. PStricks users might enjoy this sort of flexibility. `:'{ARGUMENT}{REPLACEMENT} is again a transformation rule. As opposed to `#', however, the result of the transformation is parsed again. You'll rarely need this. There is a second optional argument in brackets that can be used to declare any default action to be taken instead. This is mostly for the sake of macros that influence numbering: you would want to keep their effects in that respect. The default action should use `#1' for referring to the original (not the patched) command with the parsed options appended. Not specifying a second optional argument here is equivalent to specifying `[#1]'. `\PreviewMacro*' A similar invocation `\PreviewMacro*' simply throws the macro and all of its arguments declared in the manner above away. This is mostly useful for having things like `\footnote' not do their magic on their arguments. More often than not, you don't want to declare any arguments to scan to `\PreviewMacro*' since you would want the remaining arguments to be treated as usual text and typeset in that manner instead of being thrown away. An exception might be, say, sort keys for `\cite'. A second optional argument in brackets can be used to declare any default action to be taken instead. This is for the sake of macros that influence numbering: you would want to keep their effects in that respect. The default action might use `#1' for referring to the original (not the patched) command with the parsed options appended. Not specifying a second optional argument here is equivalent to specifying `[]' since the command usually gets thrown away. As an example for using this argument, you might want to specify \PreviewMacro*\footnote[{[]}][#1{}] This will replace a footnote by an empty footnote, but taking any optional parameter into account, since an optional paramter changes the numbering scheme. That way the real argument for the footnote remains for processing by preview-latex. `\PreviewEnvironment' The macro `\PreviewEnvironment' works just as `\PreviewMacro' does, only for environments. `\PreviewEnvironment*' And the same goes for `\PreviewEnvironment*' as compared to `\PreviewMacro*'. `\PreviewSnarfEnvironment' This macro does not typeset the original environment inside of a preview box, but instead typesets just the contents of the original environment inside of the preview box, leaving nothing for the original environment. This has to be used for figures, for example, since they would 1. produce insertion material that cannot be extracted to the preview properly, 2. complain with an error message about not being in outer par mode. `\PreviewOpen' `\PreviewClose' Those Macros form a matched preview pair. This is for macros that behave similar as `\begin' and `\end' of an environment. It is essential for the operation of `\PreviewOpen' that the macro treated with it will open an additional group even when the preview falls inside of another preview or inside of a `nopreview' environment. Similarly, the macro treated with `PreviewClose' will close an environment even when inactive. `\ifPreview' In case you need to know whether `preview' is active, you can use the conditional `\ifPreview' together with `\else' and `\fi'.  File: preview-latex.info, Node: The Emacs interface, Next: The preview images, Prev: The LaTeX style file, Up: For advanced users 6.2 The Emacs interface ======================= You can use `M-x customize-group preview-latex ' in order to customize these variables, or use the menus for it. We explain the various available options together with explaining how they work together in making preview-latex work as intended. `preview-LaTeX-command' When you generate previews on a buffer or a region, the command in `preview-LaTeX-command' gets run (that variable should only be changed with Customize since its structure is somewhat peculiar, though expressive). As usual with AUCTeX, you can continue working while this is going on. It is not a good idea to change the file until after preview-latex has established where to place the previews which it can only do after the LaTeX run completes. This run produces a host of pseudo-error messages that get parsed by preview-latex at the end of the LaTeX run and give it the necessary information about where in the source file the LaTeX code for the various previews is located exactly. The parsing takes a moment and will render Emacs busy. `preview-LaTeX-command-replacements' This variable specifies transformations to be used before calling the configured command. One possibility is to have `\pdfoutput=0 ' appended to every command starting with `pdf'. This particular setting is available as the shortcut `preview-LaTeX-disable-pdfoutput'. Since preview-latex can work with PDF files by now, there is little incentive for using this option, anymore (for projects not requiring PDF output, the added speed of `dvipng' might make this somewhat attractive). `preview-required-option-list' `preview-LaTeX-command' uses `preview-required-option-list' in order to pass options such as `auctex', `active' and `dvips' to the `preview' package. This means that the user need (and should) not supply these in the document itself in case he wants to be able to still compile his document without it turning into an incoherent mass of little pictures. These options even get passed in when the user loads `preview' explicitly in his document. The default includes an option `counters' that is controlled by the boolean variable `preview-preserve-counters' This option will cause the `preview' package to emit information that will assist in keeping things like equation counters and section numbers reasonably correct even when you are regenerating only single previews. `preview-default-option-list' `preview-default-preamble' If the document does not call in the package `preview' itself (via `\usepackage') in the preamble, the preview package is loaded using default options from `preview-default-option-list' and additional commands specified in `preview-default-preamble'. `preview-fast-conversion' This is relevant only for DVI mode. It defaults to `On' and results in the whole document being processed as one large PostScript file from which the single images are extracted with the help of parsing the PostScript for use of so-called DSC comments. The bounding boxes are extracted with the help of TeX instead of getting them from Dvips. If you are experiencing bounding box problems, try setting this option to `Off'. `preview-prefer-TeX-bb' If this option is `On', it tells preview-latex never to try to extract bounding boxes from the bounding box comments of EPS files, but rather rely on the boxes it gets from TeX. If you activated `preview-fast-conversion', this is done, anyhow, since there are no EPS files from which to read this information. The option defaults to `Off', simply because about the only conceivable reason to switch off `preview-fast-conversion' would be that you have some bounding box problem and want to get Dvips' angle on that matter. `preview-scale-function' `preview-reference-face' `preview-document-pt-list' `preview-default-document-pt' `preview-scale-function' determines by what factor images should be scaled when appearing on the screen. If you specify a numerical value here, the physical size on the screen will be that of the original paper output scaled by the specified factor, at least if Emacs' information about screen size and resolution are correct. The default is to let `preview-scale-from-face' determine the scale function. This function determines the scale factor by making the size of the default font in the document match that of the on-screen fonts. The size of the screen fonts is deduced from the font `preview-reference-face' (usually the default face used for display), the size of the default font for the document is determined by calling `preview-document-pt'. This function consults the members of `preview-document-pt-list' in turn until it gets the desired information. The default consults first `preview-parsed-font-size', then calls `preview-auctex-font-size' which asks AUCTeX about any size specification like `12pt' to the documentclass that it might have detected when parsing the document, and finally reverts to just assuming `preview-default-document-pt' as the size used in the document (defaulting to 10pt). If you find that the size of previews and the other Emacs display clashes, something goes wrong. `preview-parsed-font-size' is determined at `\begin{document}' time; if the default font size changes after that, it will not get reported. If you have an outdated version of `preview.sty' in your path, the size might not be reported at all. If in this case AUCTeX is unable to find a size specification, and if you are using a document class with a different default value (like KomaScript), the default fallback assumption will probably be wrong and preview-latex will scale up things too large. So better specify those size options even when you know that LaTeX does not need them: preview-latex might benefit from them. Another possibility for error is that you have not enabled AUCTeX's document parsing options. The fallback method of asking AUCTeX about the size might be disabled in future versions of preview-latex since in general it is more reliable to get this information from the LaTeX run itself. `preview-fast-dvips-command' `preview-dvips-command' The regular command for turning a DVI file into a single PostScript file is `preview-fast-dvips-command', while `preview-dvips-command' is used for cranking out a DVI file where every preview is in a separate EPS file. Which of the two commands gets used depends on the setting of `preview-fast-conversion'. The printer specified here by default is `-Pwww' by default, which will usually get you scalable fonts where available. If you are experiencing problems, you might want to try playing around with Dvips options (*note (dvips)Command-line options::). The conversion of the previews into PostScript or EPS files gets started after the LaTeX run completes when Emacs recognizes the first image while parsing the error messages. When Emacs has finished parsing the error messages, it activates all detected previews. This entails throwing away any previous previews covering the same areas, and then replacing the text in its visual appearance by a placeholder looking like a roadworks sign. `preview-nonready-icon-specs' This is the roadworks sign displayed while previews are being prepared. You may want to customize the font sizes at which preview-latex switches over between different icon sizes, and the ascent ratio which determines how high above the base line the icon gets placed. `preview-error-icon-specs' `preview-icon-specs' Those are icons placed before the source code of an opened preview and, respectively, the image specs to be used for PostScript errors, and a normal open preview in text representation. `preview-inner-environments' This is a list of environments that are regarded as inner levels of an outer environment when doing `preview-environment'. One example when this is needed is in `\begin{equation}\begin{split}...\end{split}\end{equation}', and accordingly `split' is one entry in `preview-inner-environments'. `preview-use-balloon-help' If you turn this XEmacs-only option `on', then moving the mouse over previews and icons will show appropriate help texts. This works by switching on `balloon-help-mode' in the buffer if it is not already enabled. The default now is `off' since some users reported problems with their version of XEmacs. GNU Emacs has its corresponding `tooltip-mode' enabled by default and in usable condition.  File: preview-latex.info, Node: The preview images, Next: Misplaced previews, Prev: The Emacs interface, Up: For advanced users 6.3 The preview images ====================== `preview-image-type' `preview-image-creators' `preview-gs-image-type-alist' What happens when LaTeX is finished depends on the configuration of `preview-image-type'. What to do for each of the various settings is specified in the variable `preview-image-creators'. The options to pass into Ghostscript and what Emacs image type to use is specified in `preview-gs-image-type-alist'. `preview-image-type' defaults to `png'. For this to work, your version of Ghostscript needs to support the `png16m' device. If you are experiencing problems here, you might want to reconfigure `gs-image-type-alist' or `preview-image-type'. Reconfiguring `preview-image-creators' is only necessary for adding additional image types. Most devices make preview-latex start up a single Ghostscript process for the entire preview run (as opposed to one per image) and feed it either sections of a PDF file (if PDFLaTeX was used), or (after running Dvips) sections of a single PostScript file or separate EPS files in sequence for conversion into PNG format which can be displayed much faster by Emacs. Actually, not in sequence but backwards since you are most likely editing at the end of the document. And as an added convenience, any preview that happens to be on-screen is given higher priority so that preview-latex will first cater for the images that are displayed. There are various options customizable concerning aspects of that operation, see the customization group `Preview Gs' for this. Another noteworthy setting of `preview-image-type' is `dvipng': in this case, the `dvipng' program will get run on DVI output (see below for PDF). This is in general much faster than Dvips and Ghostscript. In that case, the option `preview-dvipng-command' will get run for doing the conversion, and it is expected that `preview-dvipng-image-type' images get produced (`dvipng' might be configured for other image types as well). You will notice that `preview-gs-image-type-alist' contains an entry for `dvipng': this actually has nothing to with `dvipng' itself but specifies the image type and Ghostscript device option to use when `dvipng' can't be used. This will obviously be the case for PDF output by PDFLaTeX, but it will also happen if the DVI file contains PostScript specials in which case the affected images will get run through Dvips and Ghostscript once `dvipng' finishes. `preview-gs-options' Most interesting to the user perhaps is the setting of this variable. It contains the default antialiasing settings `-dTextAlphaBits=4' and `-dGraphicsAlphaBits=4'. Decreasing those values to 2 or 1 might increase Ghostscript's performance if you find it lacking. Running and feeding Ghostscript from preview-latex happens asynchronously again: you can resume editing while the images arrive. While those pretty pictures filling in the blanks on screen tend to make one marvel instead of work, rendering the non-displayed images afterwards will not take away your attention and will eventually guarantee that jumping around in the document will encounter only prerendered images.  File: preview-latex.info, Node: Misplaced previews, Prev: The preview images, Up: For advanced users 6.4 Misplaced previews ====================== If you are reading this section, the first thing is to check that your problem is not caused by x-symbol in connection with an installation not supporting 8-bit characters (*note x-symbol interoperation::). If not, here's the beef: As explained previously, Emacs uses pseudo-error messages generated by the `preview' package in order to pinpoint the exact source location where a preview originated. This works in running text, but fails when preview material happens to lie in macro arguments, like the contents of `\emph'. Those macros first read in their entire argument, munge it through, perhaps transform it somehow, process it and perhaps then typeset something. When they finally typeset something, where is the location where the stuff originated? TeX, having read in the entire argument before, does not know and actually there would be no sane way of defining it. For previews contained inside such a macro argument, the default behaviour of preview-latex is to use a position immediately after the closing brace of the argument. All the previews get placed there, all at a zero-width position, which means that Emacs displays it in an order that preview-latex cannot influence (currently in Emacs it is even possible that the order changes between runs). And since the placement of those previews is goofed up, you will not be able to regenerate them by clicking on them. The default behaviour is thus somewhat undesirable. The solution (like with other preview problems) is to tell the LaTeX `preview' package how to tackle this problem (*note The LaTeX style file::). Simply, you don't need `\emph' do anything at all during previews! You only want the text math previewed, so the solution is to use `\PreviewMacro*\emph' in the preamble of your document which will make LaTeX ignore `\emph' completely as long as it is not part of a larger preview (in which case it gets typeset as usual). Its argument thus becomes ordinary text and gets treated like ordinary text. Note that it would be a bad idea to declare `\PreviewMacro*[{{}}]\emph' since then both `\emph' as well as its argument would be ignored instead of previewed. For user-level macros, this is almost never wanted, but there may be internal macros where you might want to ignore internal arguments. The same mechanism can be used for a number of other text-formatting commands like `\textrm', `\textit' and the like. While they all use the same internal macro `\text@command', it will not do to redefine just that, since they call it only after having read their argument in, and then it already is too late. So you need to disable every of those commands by hand in your document preamble. Actually, we wrote all of the above just to scare you. At least all of the above mentioned macros and a few more are already catered for by a configuration file `prauctex.cfg' that gets loaded by default unless the `preview' package gets loaded with the `noconfig' option. You can make your own copy of this file in a local directory and edit it in case of need. You can also add loading of a file of your liking to `preview-default-preamble', or alternatively do the manual disabling of your favorite macro in `preview-default-preamble', which is customizable in the Preview Latex group.  File: preview-latex.info, Node: ToDo, Next: Frequently Asked Questions, Prev: For advanced users, Up: Top Appendix A ToDo *************** * Support other formats than just LaTeX plain TeX users and ConTeXt users should not have to feel left out. While ConTeXt is not supported yet by released versions of AUCTeX, at least supporting plain would help people, and be a start for ConTeXt as well. There are plain-based formats like MusiXTeX that could benefit a lot from preview-latex. The main part of the difficulties here is to adapt `preview.dtx' to produce stuff not requiring LaTeX. * Support nested snippets Currently you can't have both a footnote (which gets displayed as just its footnote number) and math inside of a footnote rendered as an image: such nesting might be achieved by rerunning preview-latex on the footnote contents when one opens the footnote for editing. * Support other text properties than just images Macros like `\textit' can be rendered as images, but the resulting humungous blob is not suitable for editing, in particular since the line filling from LaTeX does not coincide with that of Emacs. It would be much more useful if text properties just switched the relevant font to italics rather than replacing the whole text with an image. It would also make editing quite easier. Then there are things like footnotes that are currently just replaced by their footnote number. While editing is not a concern here (the number is not in the original text, anyway), it would save a lot of conversion time if no images were generated, but Emacs just displayed a properly fontified version of the footnote number. Also, this might make preview-latex useful even on text terminals. * Find a way to facilitate Source Specials Probably in connection with adding appropriate support to `dvipng', it would be nice if clicking on an image from a larger piece of source code would place the cursor at the respective source code location. * Make `preview.dtx' look reasonable in AUCTeX It is a bit embarrassing that `preview.dtx' is written in a manner that will not give either good syntax highlighting or good indentation when employing AUCTeX. * Web page work Currently, preview-latex's web page is not structured at all. Better navigation would be desirable, as well as separate News and Errata eye catchers. * Manual improvements - Pepper the manual with screen shots and graphics This will be of interest for the HTML and TeX renditions of the texinfo manual. Since Texinfo now supports images as well, this could well be nice to have. - Fix duplicates Various stuff appears several times. * Implement rendering pipelines for Emacs The current `gs.el' interface is fundamentally flawed, not only because of a broken implementation. A general batchable and daemonizable rendering infrastructure that can work on all kinds of preview images for embedding into buffers is warranted. The current implementation has a rather adhoc flavor and is not easily extended. It will not work outside of AUCTeX, either. * Integrate into RefTeX When referencing to equations and the like, the preview-images of the source rather than plain text should be displayed. If the preview in question covers labels, those should appear in the bubble help and/or a context menu. Apropos: * Implement LaTeX error indicators Previews on erroneous LaTeX passages might gain a red border or similar. * Pop up relevant online documentation for frequent errors A lot of errors are of the "badly configured" variety. Perhaps the relevant info pages should be delivered in addition to the error message. * Implement a table editing mode where every table cell gets output as a separate preview. Alternatively, output the complete table metrics in a way that lets people click on individual cells for editing purposes. * Benchmark and kill Emacs inefficiencies Both the LaTeX run under Emacs control as well as actual image insertion in Emacs could be faster. CVS Emacs has improved in that respect, but it still is slower than desirable. * Improve image support under Emacs The general image and color handling in Emacs is inefficient and partly defective. This is still the case in CVS. One option would be to replace the whole color and image handling with GDK routines when this library is available, since it has been optimized for it.  File: preview-latex.info, Node: Frequently Asked Questions, Next: Copying this Manual, Prev: ToDo, Up: Top Appendix B Frequently Asked Questions ************************************* * Menu: * Introduction to FAQ:: * Requirements:: * Installation Trouble:: * Customization:: * Troubleshooting:: * Other formats::  File: preview-latex.info, Node: Introduction to FAQ, Next: Requirements, Prev: Frequently Asked Questions, Up: Frequently Asked Questions B.1 Introduction ================ B.1.1 How can I contribute to the FAQ? -------------------------------------- Send an email with the subject: Preview FAQ to .  File: preview-latex.info, Node: Requirements, Next: Installation Trouble, Prev: Introduction to FAQ, Up: Frequently Asked Questions B.2 Requirements ================ B.2.1 Which version of (X)Emacs is needed? ------------------------------------------ See also the table at the end of the section. preview-latex nominally requires GNU Emacs with a version of at least 21.1. However, Emacs 22 (currently under development) offers superior performance and wider platform support, and is even now the recommended platform to use. While recent versions of XEmacs 21.4 are supported, doing this in a satisfactory manner has proven to be difficult due to technical shortcomings and differing API's which are hard to come by. If preview-latex is an important part of your editing workflow, you are likely to get better results and support by switching to Emacs. Of course, you can improve support for your favorite editor by giving feedback in case you encounter bugs. B.2.2 Which versions of Ghostscript and AUCTeX are needed? ---------------------------------------------------------- We recommend to use GNU or AFPL Ghostscript with a version of at least 7.07. preview-latex has been distributed as part of AUCTeX since version 11.80. If your version of AUCTeX is older than that, or if it does not contain a working copy of preview-latex, complain to wherever you got it from. B.2.3 I have trouble with the display format... ----------------------------------------------- We recommend keeping the variable `preview-image-type' set to `dvipng' (if you have it installed) or `png'. This is the default and can be set via the Preview/Customize menu. All other formats are known to have inconveniences, either in file size or quality. There are some Emacs versions around not supporting PNG; the proper way to deal with that is to complain to your Emacs provider. Short of that, checking out PNM or JPEG formats might be a good way to find out whether the lack of PNG format support might be the only problem with your Emacs. B.2.4 For which OS does preview work? ------------------------------------- It is known to work under the X Window System for Linux and for several flavors of Unix: we have reports for HP and Solaris. There are several development versions of Emacs around for native MacOS Carbon, and preview-latex is working with them, too. With Windows, Cygwin and native ports of XEmacs should work. preview-latex will not work with any native version 21 of Emacs under Windows: you need to get a hold of Emacs 22 which is at the time of this writing not released but available as a developer snapshot. The entry "X11/Unix" currently means Linux, Solaris or HP/UX, as well as the X-specific version for Mac/OSX. OS Emacs version XEmacs version X11/Unix 21.1 21.4.9 Win9x cygwin 21.3.50? 21.4.8 Win9x native 22.1 21.4.8 MacOSX native 22.1 -  File: preview-latex.info, Node: Installation Trouble, Next: Customization, Prev: Requirements, Up: Frequently Asked Questions B.3 Installation Trouble ======================== B.3.1 I just get `LaTeX found no preview images'. ------------------------------------------------- The reason for this is that LaTeX found no preview images in the document in question. One reason might be that there are no previews to be seen. If you have not used preview-latex before, you might not know its manner of operation. One sure-fire way to test if you just have a document where no previews are to be found is to use the provided example document `circ.tex' (you will have to copy it to some directory where you have write permissions). If the symptom persists, you have a problem, and the problem is most likely a LaTeX problem. Here are possible reasons: Filename database not updated Various TeX distributions have their own ways of knowing where the files are without actually searching directories. The normal preview-latex installation should detect common tools for that purpose and use them. If this goes wrong, or if the files get installed into a place where they are not looked for, the LaTeX run will fail. An incomplete manual installation This should not happen if you followed installation instructions. Unfortunately, people know better all the time. If only `preview.sty' gets installed without a set of supplementary files also in the `latex' subdirectory, preview-latex runs will not generate any errors, but they will not produce any previews, either. An outdated `preview' installation The `preview.sty' package is useful for more than just preview-latex. For example, it is part of TeXlive. So you have to make sure that preview-latex does not get to work with outdated style and configuration files: some newer features will not work with older TeX style files, and really old files will make preview-latex fail completely. There usual is a local `texmf' tree, or even a user-specific tree that are searched before the default tree. Make sure that the first version of those files that gets found is the correct one. B.3.2 I have problems with the XEmacs installation -------------------------------------------------- Please note that the XEmacs installation is different, since XEmacs has a package system that gets used here. Please make sure that you read and follow the installation instructions for XEmacs.  File: preview-latex.info, Node: Customization, Next: Troubleshooting, Prev: Installation Trouble, Up: Frequently Asked Questions B.4 Customization ================= B.4.1 Why don't I get balloon help like in the screen shots? ------------------------------------------------------------ Some users have reported problems with their XEmacs version, so balloon help is no longer switched on by default. Use the Preview/Customize menu or ` customize-variable' in order to customize `preview-use-balloon-help' to `On'. This only concerns XEmacs: tooltips under GNU Emacs are enabled by default and unproblematic. B.4.2 How to include additional environments like `enumerate' ------------------------------------------------------------- By default, preview-latex is intended mainly for displaying mathematical formulas, so environments like `enumerate' or `tabular' (except where contained in a float) are not included. You can include them however manually by adding the lines: \usepackage[displaymath,textmath,sections,graphics,floats]{preview} \PreviewEnvironment{enumerate} in your document header, that is before \begin{document} In general, `preview' should be loaded as the last thing before the start of document. Be aware that \PreviewEnvironment{...} does not accept a comma separated list! Also note that by putting more and more \PreviewEnvironment{...} in your document, it will look more and more like a DVI file preview when running preview-latex. Since each preview is treated as one large monolithic block by Emacs, one should really restrict previews to those elements where the improvement in visual representation more than makes up for the decreased editability. B.4.3 What if I don't want to change the document? -------------------------------------------------- The easiest way is to generate a configuration file in the current directory. You can basically either create `prdefault.cfg' which is used for any use of the `preview' package, or you can use `prauctex.cfg' which only applies to the use from with Emacs. Let us assume you use the latter. In that case you should write something like \InputIfFileExists{preview/prauctex.cfg}{}{} \PreviewEnvironment{enumerate} in it. The first line inputs the system-wide default configuration (the file name should match that, but not your own `prauctex.cfg'), then you add your own stuff. B.4.4 Suddenly I get gazillions of ridiculous pages?!? ------------------------------------------------------ When preview-latex works on extracting its stuff, it typesets each single preview on a page of its own. This only happens when actual previews get generated. Now if you want to configure preview-latex in your document, you need to add your own `\usepackage' call to `preview' so that it will be able to interpret its various definition commands. It is an error to add the `active' option to this invocation: you don't want the package to be active unless preview-latex itself enables the previewing operation (which it will). B.4.5 Does preview-latex work with presentation classes? -------------------------------------------------------- preview-latex should work with most presentation classes. However, since those classes often have macros or pseudo environments encompassing a complete slide, you will need to use the customization facilities of `preview.sty' to tell it how to resolve this, whether you want no previews, previews of whole slides or previews of inner material.  File: preview-latex.info, Node: Troubleshooting, Next: Other formats, Prev: Customization, Up: Frequently Asked Questions B.5 Troubleshooting =================== B.5.1 Preview causes all sort of strange error messages ------------------------------------------------------- When running preview-latex and taking a look at either log file or terminal output, lots of messages like ! Preview: Snippet 3 started. <-><-> l.52 \item Sie lassen sich als Funktion $ y = f(x)$ darstellen. ! Preview: Snippet 3 ended.(491520+163840x2494310). <-><-> l.52 \item Sie lassen sich als Funktion $y = f(x)$ darstellen. appear (previous versions generated messages looking even more like errors). Those are not real errors (as will be noted in the log file). Or rather, while they *are* really TeX error messages, they are intentional. This currently is the only reliable way to pass the information from the LaTeX run of preview-latex to its Emacs part about where the previews originated in the source text. Since they are actual errors, you will also get AUCTeX to state Preview-LaTeX exited as expected with code 1 at Wed Sep 4 17:03:30 after the LaTeX run in the run buffer. This merely indicates that errors were present, and errors will always be present when preview-latex is operating. There might be also real errors, so in case of doubt, look for them explicitly in either run buffer or the resulting `.log' file. B.5.2 Why do my DVI and PDF output files vanish? ------------------------------------------------ In order to produce the preview images preview-latex runs LaTeX on the master or region file. The resulting DVI or PDF file can happen to have the same name as the output file of a regular LaTeX run. So the regular output file gets overwritten and is subsequently deleted by preview-latex. B.5.3 My output file suddenly only contains preview images?! ------------------------------------------------------------ As mentioned in the previews FAQ entry, preview-latex might use the file name of the original output file for the creation of preview images. If the original output file is being displayed with a viewer when this happens, you might see strange effects depending on the viewer, e.g. a message about the file being corrupted or the display of all the preview images instead of your typeset document. (Also *Note Customization::.)  File: preview-latex.info, Node: Other formats, Prev: Troubleshooting, Up: Frequently Asked Questions B.6 preview-latex when not using LaTeX ====================================== B.6.1 Does preview-latex work with PDFLaTeX? --------------------------------------------- Yes, as long as you use AUCTeX's own PDFLaTeX mode and have not messed with `TeX-command-list'. B.6.2 Does preview-latex work with `elatex'? -------------------------------------------- No problem here. If you configure your AUCTeX to use `elatex', or simply have `latex' point to `elatex', this will work fine. Modern TeX distributions use eTeX for LaTeX, anyway. B.6.3 Does preview-latex work with ConTeXt? ------------------------------------------- In short, no. The `preview' package is LaTeX-dependent. Adding support for other formats requires volunteers. B.6.4 Does preview-latex work with plain TeX? --------------------------------------------- Again, no. Restructuring the `preview' package for `plain' operation would be required. Volunteers welcome. In some cases you might get around by making a wrapper pseudo-Master file looking like the following: \documentclass{article} \usepackage{plain} \begin{document} \begin{plain} \input myplainfile \end{plain} \end{document}  File: preview-latex.info, Node: Copying this Manual, Next: Index, Prev: Frequently Asked Questions, Up: Top Appendix C Copying this Manual ****************************** The copyright notice for this manual is: This manual is for preview-latex, a LaTeX preview mode for AUCTeX (version 11.87 from 2012-11-30). Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License." The full license text can be read here: * Menu: * GNU Free Documentation License:: License for copying this manual.  File: preview-latex.info, Node: GNU Free Documentation License, Up: Copying this Manual C.1 GNU Free Documentation License ================================== Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. `http://fsf.org/' Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See `http://www.gnu.org/copyleft/'. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: preview-latex.info, Node: Index, Prev: Copying this Manual, Up: Top Index ***** [index] * Menu: * \PreviewEnvironment: Provided commands. (line 133) * \PreviewMacro: Provided commands. (line 26) * Activation: Activating preview-latex. (line 6) * C-c C-k: Keys and lisp. (line 161) * C-c C-m P: Keys and lisp. (line 64) * C-c C-p C-b: Keys and lisp. (line 90) * C-c C-p C-c C-b: Keys and lisp. (line 116) * C-c C-p C-c C-d: Keys and lisp. (line 122) * C-c C-p C-c C-p: Keys and lisp. (line 100) * C-c C-p C-c C-r: Keys and lisp. (line 111) * C-c C-p C-c C-s: Keys and lisp. (line 106) * C-c C-p C-d: Keys and lisp. (line 95) * C-c C-p C-e: Keys and lisp. (line 75) * C-c C-p C-f: Keys and lisp. (line 129) * C-c C-p C-i: Keys and lisp. (line 148) * C-c C-p C-p: Keys and lisp. (line 24) * C-c C-p C-r: Keys and lisp. (line 85) * C-c C-p C-s: Keys and lisp. (line 80) * C-c C-p C-w: Keys and lisp. (line 46) * C-u C-c C-p C-f: Keys and lisp. (line 142) * Caching a preamble: Simple customization. (line 59) * Contacts: Contacts. (line 6) * Copying: Copying. (line 6) * Copyright: Copying. (line 6) * CVS access: Availability. (line 6) * Distribution: Copying. (line 6) * Download: Availability. (line 6) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) * Free: Copying. (line 6) * Free software: Copying. (line 6) * General Public License: Copying. (line 6) * GPL: Copying. (line 6) * Inline math: Simple customization. (line 110) * Kill preview-generating process: Keys and lisp. (line 161) * License: Copying. (line 6) * M-m P: Keys and lisp. (line 64) * M-x preview-report-bug : Keys and lisp. (line 153) * Mailing list: Contacts. (line 6) * Menu entries: Keys and lisp. (line 6) * Philosophy of preview-latex: What use is it?. (line 6) * preview-at-point: Keys and lisp. (line 24) * preview-auctex-font-size: The Emacs interface. (line 100) * preview-auto-cache-preamble: Simple customization. (line 59) * preview-buffer: Keys and lisp. (line 90) * preview-cache-preamble: Keys and lisp. (line 129) * preview-cache-preamble-off: Keys and lisp. (line 142) * preview-clearout: Keys and lisp. (line 111) * preview-clearout-at-point: Keys and lisp. (line 100) * preview-clearout-buffer: Keys and lisp. (line 116) * preview-clearout-document: Keys and lisp. (line 106) * preview-copy-region-as-mml: Keys and lisp. (line 46) * preview-default-document-pt: The Emacs interface. (line 83) * preview-default-option-list: The Emacs interface. (line 53) * preview-default-preamble <1>: Misplaced previews. (line 59) * preview-default-preamble: The Emacs interface. (line 54) * preview-document: Keys and lisp. (line 95) * preview-document-pt: The Emacs interface. (line 97) * preview-document-pt-list: The Emacs interface. (line 82) * preview-dvipng-command: The preview images. (line 40) * preview-dvipng-image-type: The preview images. (line 43) * preview-dvips-command: The Emacs interface. (line 125) * preview-environment: Keys and lisp. (line 75) * preview-error-icon-specs: The Emacs interface. (line 152) * preview-fast-conversion: The Emacs interface. (line 60) * preview-fast-dvips-command: The Emacs interface. (line 124) * preview-goto-info-page: Keys and lisp. (line 148) * preview-gs-image-type-alist: The preview images. (line 8) * preview-gs-options <1>: The preview images. (line 54) * preview-gs-options: Problems with Ghostscript. (line 22) * preview-icon-specs: The Emacs interface. (line 153) * preview-image-creators <1>: The preview images. (line 7) * preview-image-creators: Problems with Ghostscript. (line 31) * preview-image-type <1>: The preview images. (line 6) * preview-image-type <2>: Problems with Ghostscript. (line 33) * preview-image-type: Basic modes of operation. (line 16) * preview-inner-environments: The Emacs interface. (line 158) * preview-LaTeX-command: The Emacs interface. (line 11) * preview-LaTeX-command-replacements: The Emacs interface. (line 25) * preview-nonready-icon-specs: The Emacs interface. (line 145) * preview-parsed-font-size: The Emacs interface. (line 100) * preview-prefer-TeX-bb: The Emacs interface. (line 69) * preview-preserve-counters <1>: The Emacs interface. (line 47) * preview-preserve-counters: Simple customization. (line 63) * preview-reference-face: The Emacs interface. (line 81) * preview-region: Keys and lisp. (line 85) * preview-report-bug: Keys and lisp. (line 153) * preview-required-option-list <1>: The Emacs interface. (line 35) * preview-required-option-list: Simple customization. (line 63) * preview-scale-function: The Emacs interface. (line 80) * preview-section: Keys and lisp. (line 80) * preview-transparent-border: Keys and lisp. (line 56) * preview-use-balloon-help: The Emacs interface. (line 165) * Readme: Introduction. (line 6) * Report a bug: Keys and lisp. (line 153) * Right: Copying. (line 6) * Showing \labels: Simple customization. (line 23) * Using dvipng: Basic modes of operation. (line 18) * Warranty: Copying. (line 6)  Tag Table: Node: Top942 Node: Copying2214 Node: Introduction2675 Node: What use is it?3348 Node: Activating preview-latex4740 Node: Getting started5555 Node: Basic modes of operation7642 Node: More documentation8846 Node: Availability9734 Node: Contacts10339 Node: Installation11611 Node: Keys and lisp11824 Node: Simple customization18492 Node: Known problems24253 Node: Problems with Ghostscript25074 Node: Font problems with Dvips27267 Node: Emacs problems28470 Node: Too small bounding boxes30207 Node: x-symbol interoperation31591 Node: Middle-clicks paste instead of toggling32973 Node: For advanced users33789 Node: The LaTeX style file34248 Node: Package options36809 Node: Provided commands47744 Node: The Emacs interface55099 Node: The preview images64279 Node: Misplaced previews67761 Node: ToDo71204 Node: Frequently Asked Questions75989 Node: Introduction to FAQ76312 Node: Requirements76651 Node: Installation Trouble79615 Node: Customization82177 Node: Troubleshooting85725 Node: Other formats88242 Node: Copying this Manual89559 Node: GNU Free Documentation License90484 Node: Index115625  End Tag Table auctex-11.87/doc/fdl.texi0000644000000000000000000005577211340222504013737 0ustar rootroot@node GNU Free Documentation License @appendixsec GNU Free Documentation License @cindex FDL, GNU Free Documentation License @center Version 1.3, 3 November 2008 @display Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. @uref{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @enumerate 0 @item PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document @dfn{free} in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of ``copyleft'', which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. @item APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The ``Document'', below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as ``you''. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A ``Modified Version'' of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A ``Secondary Section'' is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The ``Invariant Sections'' are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The ``Cover Texts'' are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A ``Transparent'' copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not ``Transparent'' is called ``Opaque''. Examples of suitable formats for Transparent copies include plain @sc{ascii} without markup, Texinfo input format, La@TeX{} input format, @acronym{SGML} or @acronym{XML} using a publicly available @acronym{DTD}, and standard-conforming simple @acronym{HTML}, PostScript or @acronym{PDF} designed for human modification. Examples of transparent image formats include @acronym{PNG}, @acronym{XCF} and @acronym{JPG}. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, @acronym{SGML} or @acronym{XML} for which the @acronym{DTD} and/or processing tools are not generally available, and the machine-generated @acronym{HTML}, PostScript or @acronym{PDF} produced by some word processors for output purposes only. The ``Title Page'' means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, ``Title Page'' means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The ``publisher'' means any person or entity that distributes copies of the Document to the public. A section ``Entitled XYZ'' means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as ``Acknowledgements'', ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' of such a section when you modify the Document means that it remains a section ``Entitled XYZ'' according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. @item VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. @item COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. @item MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: @enumerate A @item Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. @item List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. @item State on the Title page the name of the publisher of the Modified Version, as the publisher. @item Preserve all the copyright notices of the Document. @item Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. @item Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. @item Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. @item Include an unaltered copy of this License. @item Preserve the section Entitled ``History'', Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled ``History'' in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. @item Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the ``History'' section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. @item For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. @item Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. @item Delete any section Entitled ``Endorsements''. Such a section may not be included in the Modified Version. @item Do not retitle any existing section to be Entitled ``Endorsements'' or to conflict in title with any Invariant Section. @item Preserve any Warranty Disclaimers. @end enumerate If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled ``Endorsements'', provided it contains nothing but endorsements of your Modified Version by various parties---for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. @item COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled ``History'' in the various original documents, forming one section Entitled ``History''; likewise combine any sections Entitled ``Acknowledgements'', and any sections Entitled ``Dedications''. You must delete all sections Entitled ``Endorsements.'' @item COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. @item AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. @item TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled ``Acknowledgements'', ``Dedications'', or ``History'', the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. @item TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. @item FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See @uref{http://www.gnu.org/copyleft/}. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ``or any later version'' applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. @item RELICENSING ``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A ``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the site means any set of copyrightable works thus published on the MMC site. ``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. ``Incorporate'' means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is ``eligible for relicensing'' if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. @end enumerate @page @heading ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: @smallexample @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end group @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the ``with@dots{}Texts.'' line with this: @smallexample @group with the Invariant Sections being @var{list their titles}, with the Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. @end group @end smallexample If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" @c End: auctex-11.87/doc/auctex.texi0000644000000000000000000051572012055735330014467 0ustar rootroot\input texinfo @comment %**start of header @setfilename auctex.info @include version.texi @settitle AUCTeX @value{VERSION} @c footnotestyle separate @c paragraphindent 2 @comment %**end of header @include macros.texi @copying This manual is for @AUCTeX{} (version @value{VERSION} from @value{UPDATED}), a sophisticated TeX environment for Emacs. Copyright @copyright{} 1992, 1993, 1994, 1995, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License.'' @end quotation @end copying @dircategory Emacs @direntry * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. @end direntry @dircategory TeX @direntry * AUCTeX: (auctex). A sophisticated TeX environment for Emacs. @end direntry @iftex @tolerance 10000 @emergencystretch 3em @end iftex @finalout @titlepage @title @AUCTeX{} @subtitle A sophisticated @TeX{} environment for Emacs @subtitle Version @value{VERSION}, @value{UPDATED} @author Kresten Krab Thorup @author Per Abrahamsen @author David Kastrup and others @page @vskip 0pt plus 1filll @insertcopying @end titlepage @c Use @ifinfo _and_ @ifhtml here because Texinfo 3 cannot cope with @c @ifnottex around a top node. @ifinfo @node top @top @AUCTeX{} This manual may be copied under the conditions spelled out in @ref{Copying this Manual}. @end ifinfo @ifhtml @node top @top @AUCTeX{} @insertcopying @end ifhtml @contents @iftex @unnumbered Executive Summary @end iftex @AUCTeX{} is an integrated environment for editing @LaTeX{}, @ConTeXt{}, doc@TeX{}, Texinfo, and @TeX{} files. Although @AUCTeX{} contains a large number of features, there are no reasons to despair. You can continue to write @TeX{} and @LaTeX{} documents the way you are used to, and only start using the multiple features in small steps. @AUCTeX{} is not monolithic, each feature described in this manual is useful by itself, but together they provide an environment where you will make very few @LaTeX{} errors, and makes it easy to find the errors that may slip through anyway. It is a good idea to make a printout of @AUCTeX{}'s reference card @file{tex-ref.tex} or one of its typeset versions. If you want to make @AUCTeX{} aware of style files and multi-file documents right away, insert the following in your @file{.emacs} file. @lisp (setq TeX-auto-save t) (setq TeX-parse-self t) (setq-default TeX-master nil) @end lisp Another thing you should enable is Ref@TeX{}, a comprehensive solution for managing cross references, bibliographies, indices, document navigation and a few other things. (@pxref{Installation,,,reftex,The Ref@TeX{} manual}) For detailed information about the @previewlatex{} subsystem of @AUCTeX{}, see @ref{Top,,Introduction,preview-latex,The @previewlatex{} Manual}. There is a mailing list for general discussion about @AUCTeX{}: write a mail with ``subscribe'' in the subject to @email{auctex-request@@gnu.org} to join it. Send contributions to @email{auctex@@gnu.org}. Bug reports should go to @email{bug-auctex@@gnu.org}, suggestions for new features, and pleas for help should go to either @email{auctex-devel@@gnu.org} (the @AUCTeX{} developers), or to @email{auctex@@gnu.org} if they might have general interest. Please use the command @kbd{M-x TeX-submit-bug-report RET} to report bugs if possible. You can subscribe to a low-volume announcement list by sending ``subscribe'' in the subject of a mail to @email{info-auctex-request@@gnu.org}. @menu * Copying:: Copying * Introduction:: Introduction to @AUCTeX{} * Editing:: Editing the Document Source * Display:: Controlling Screen Display * Processing:: Starting Processors, Viewers and Other Programs * Customization:: Customization and Extension * Appendices:: Copying, Changes, Development, FAQ, Texinfo mode * Indices:: Indices @detailmenu --- The Detailed Node Listing --- Introduction * Summary:: Overview of @AUCTeX{} * Installation:: Installing @AUCTeX{} * Quick Start:: Quick Start Editing the Document Source * Quotes:: Inserting double quotes * Font Specifiers:: Inserting Font Specifiers * Sectioning:: Inserting chapters, sections, etc. * Environments:: Inserting Environment Templates * Mathematics:: Entering Mathematics * Completion:: Completion of macros * Commenting:: Commenting text * Indenting:: Reflecting syntactic constructs with whitespace * Filling:: Automatic and manual line breaking Inserting Environment Templates * Equations:: Equations * Floats:: Floats * Itemize-like:: Itemize-like Environments * Tabular-like:: Tabular-like Environments * Customizing Environments:: Customizing Environments Controlling Screen Display * Font Locking:: Font Locking * Folding:: Folding Macros and Environments * Outline:: Outlining the Document Font Locking * Fontification of macros:: Fontification of macros * Fontification of quotes:: Fontification of quotes * Fontification of math:: Fontification of math constructs * Verbatim content:: Verbatim macros and environments * Faces:: Faces used by font-latex Starting Processors, Viewers and Other Programs * Commands:: Invoking external commands. * Viewing:: Invoking external viewers. * Debugging:: Debugging @TeX{} and @LaTeX{} output. * Checking:: Checking the document. * Control:: Controlling the processes. * Cleaning:: Cleaning intermediate and output files. * Documentation:: Documentation about macros and packages. Viewing the Formatted Output * Starting Viewers:: Starting viewers * I/O Correlation:: Forward and inverse search Customization and Extension * Multifile:: Multifile Documents * Parsing Files:: Automatic Parsing of @TeX{} Files * Internationalization:: Language Support * Automatic:: Automatic Customization * Style Files:: Writing Your Own Style Support Language Support * European:: Using @AUCTeX{} with European Languages * Japanese:: Using @AUCTeX{} with Japanese Automatic Customization * Automatic Global:: Automatic Customization for the Site * Automatic Private:: Automatic Customization for a User * Automatic Local:: Automatic Customization for a Directory Writing Your Own Style Support * Simple Style:: A Simple Style File * Adding Macros:: Adding Support for Macros * Adding Environments:: Adding Support for Environments * Adding Other:: Adding Other Information * Hacking the Parser:: Automatic Extraction of New Things Copying, Changes, Development, FAQ * Copying this Manual:: * Changes:: * Development:: * FAQ:: * Texinfo mode:: Copying this Manual * GNU Free Documentation License:: License for copying this manual. Indices * Key Index:: * Function Index:: * Variable Index:: * Concept Index:: @end detailmenu @end menu @node Copying @unnumbered Copying @cindex Copying @cindex Copyright @cindex GPL @cindex General Public License @cindex License @cindex Free @cindex Free software @cindex Distribution @cindex Right @cindex Warranty @c This text adapted from the Texinfo 2.16 distribution. @AUCTeX{} primarily consists of Lisp files for Emacs (and XEmacs), but there are also installation scripts and files and @TeX{} support files. All of those are @dfn{free}; this means that everyone is free to use them and free to redistribute them on a free basis. The files of @AUCTeX{} are not in the public domain; they are copyrighted and there are restrictions on their distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of these programs that they might get from you. Specifically, we want to make sure that you have the right to give away copies of the files that constitute @AUCTeX{}, that you receive source code or else can get it if you want it, that you can change these files or use pieces of them in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of parts of @AUCTeX{}, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for @AUCTeX{}. If any parts are modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the licenses for the files currently being distributed as part of @AUCTeX{} are found in the General Public Licenses that accompany them. This manual specifically is covered by the GNU Free Documentation License (@pxref{Copying this Manual}). @node Introduction @chapter Introduction @menu * Summary:: Overview of @AUCTeX{} * Installation:: Installing @AUCTeX{} * Quick Start:: Quick Start @end menu @lowersections @include intro.texi @include install.texi @include quickstart.texi @raisesections @node Editing @chapter Editing the Document Source The most commonly used commands/macros of @AUCTeX{} are those which simply insert templates for often used @TeX{}, @LaTeX{}, or @ConTeXt{} constructs, like font changes, handling of environments, etc. These features are very simple, and easy to learn, and help you avoid mistakes like mismatched braces, or @samp{\begin@{@}}-@samp{\end@{@}} pairs. Apart from that this chapter contains a description of some features for entering more specialized sorts of text, for formatting the source by indenting and filling and for navigating through the document. @menu * Quotes:: Inserting double quotes * Font Specifiers:: Inserting Font Specifiers * Sectioning:: Inserting chapters, sections, etc. * Environments:: Inserting Environment Templates * Mathematics:: Entering Mathematics * Completion:: Completion of macros * Marking:: Marking Environments, Sections, or Texinfo Nodes * Commenting:: Commenting text * Indenting:: Reflecting syntactic constructs with whitespace * Filling:: Automatic and manual line breaking @end menu @node Quotes @section Insertion of Quotes, Dollars, and Braces @cindex Quotes @cindex Double quotes @cindex Braces @cindex Brackets @cindex Dollars @cindex Math mode delimiters @cindex Matching dollar signs @cindex Display math mode @subheading Quotation Marks In @TeX{}, literal double quotes @samp{"like this"} are seldom used, instead two single quotes are used @samp{``like this''}. To help you insert these efficiently, @AUCTeX{} allows you to continue to press @kbd{"} to insert two single quotes. To get a literal double quote, press @kbd{"} twice. @deffn Command TeX-insert-quote @var{count} @kindex " (@kbd{"}) Insert the appropriate quote marks for @TeX{}. Inserts the value of @code{TeX-open-quote} (normally @samp{``}) or @code{TeX-close-quote} (normally @samp{''}) depending on the context. With prefix argument, always inserts @samp{"} characters. @end deffn @defopt TeX-open-quote String inserted by typing @kbd{"} to open a quotation. (@xref{European}, for language-specific quotation mark insertion.) @end defopt @defopt TeX-close-quote String inserted by typing @kbd{"} to close a quotation. (@xref{European}, for language-specific quotation mark insertion.) @end defopt @defopt TeX-quote-after-quote Determines the behavior of @kbd{"}. If it is non-nil, typing @kbd{"} will insert a literal double quote. The respective values of @code{TeX-open-quote} and @code{TeX-close-quote} will be inserted after typing @kbd{"} once again. @end defopt The @samp{babel} package provides special support for the requirements of typesetting quotation marks in many different languages. If you use this package, either directly or by loading a language-specific style file, you should also use the special commands for quote insertion instead of the standard quotes shown above. @AUCTeX{} is able to recognize several of these languages and will change quote insertion accordingly. @xref{European}, for details about this feature and how to control it. @vindex LaTeX-csquotes-open-quote @vindex LaTeX-csquotes-close-quote @vindex LaTeX-csquotes-quote-after-quote In case you are using the @samp{csquotes} package, you should customize @code{LaTeX-csquotes-open-quote}, @code{LaTeX-csquotes-close-quote} and @code{LaTeX-csquotes-quote-after-quote}. The quotation characters will only be used if both variables---@code{LaTeX-csquotes-open-quote} and @code{LaTeX-csquotes-close-quote}---are non-empty strings. But then the @samp{csquotes}-related values will take precedence over the language-specific ones. @subheading Dollar Signs In @AUCTeX{}, dollar signs should match like they do in @TeX{}. This has been partially implemented, we assume dollar signs always match within a paragraph. The first @samp{$} you insert in a paragraph will do nothing special. The second @samp{$} will match the first. This will be indicated by moving the cursor temporarily over the first dollar sign. @deffn Command TeX-insert-dollar @var{arg} @kindex $ (@kbd{$}) Insert dollar sign. Show matching dollar sign if this dollar sign end the @TeX{} math mode. Ensure double dollar signs match up correctly by inserting extra dollar signs when needed if @code{TeX-math-close-double-dollar} is non-nil. With optional @var{arg}, insert that many dollar signs. @end deffn @defopt TeX-math-close-double-dollar Control the insertion of double dollar signs for delimiting display math. (Note that you should not use double dollar signs in @LaTeX{} because this practice can lead to wrong spacing in typeset documents.) If the variable is non-nil and you enter a dollar sign that matches a double dollar sign @samp{$$} @AUCTeX{} will automatically insert two dollar signs. @end defopt @subheading Braces To avoid unbalanced braces, it is useful to insert them pairwise. You can do this by typing @kbd{C-c @{}. @deffn Command TeX-insert-braces @kindex C-c @{ (@kbd{C-c @{}) Make a pair of braces and position the cursor to type inside of them. If there is an active region, put braces around it and leave point after the closing brace. @end deffn @node Font Specifiers @section Inserting Font Specifiers @cindex Fonts @cindex Font macros @cindex Changing font @cindex Specifying a font Perhaps the most used keyboard commands of @AUCTeX{} are the short-cuts available for easy insertion of font changing macros. If you give an argument (that is, type @kbd{C-u}) to the font command, the innermost font will be replaced, i.e. the font in the @TeX{} group around point will be changed. The following table shows the available commands, with @code{@point{}} indicating the position where the text will be inserted. @table @kbd @item C-c C-f C-b @kindex C-c C-f C-b @cindex @code{\textbf} Insert @b{bold face} @samp{\textbf@{@point{}@}} text. @item C-c C-f C-i @kindex C-c C-f C-i @cindex @code{\textit} Insert @i{italics} @samp{\textit@{@point{}@}} text. @item C-c C-f C-e @kindex C-c C-f C-e @cindex @code{\emph} Insert @i{emphasized} @samp{\emph@{@point{}@}} text. @item C-c C-f C-s @kindex C-c C-f C-s @cindex @code{\textsl} Insert @i{slanted} @samp{\textsl@{@point{}@}} text. @item C-c C-f C-r @kindex C-c C-f C-r @cindex @code{\textrm} Insert roman @r{\textrm@{@point{}@}} text. @item C-c C-f C-f @kindex C-c C-f C-f @cindex @code{\textsf} Insert @sansserif{sans serif} @samp{\textsf@{@point{}@}} text. @item C-c C-f C-t @kindex C-c C-f C-t @cindex @code{\texttt} Insert @t{typewriter} @samp{\texttt@{@point{}@}} text. @item C-c C-f C-c @kindex C-c C-f C-c @cindex @code{\textsc} Insert @sc{small caps} @samp{\textsc@{@point{}@}} text. @item C-c C-f C-d @kindex C-c C-f C-c @cindex Deleting fonts Delete the innermost font specification containing point. @end table @deffn Command TeX-font replace what @kindex C-c C-f (@kbd{C-c C-f}) Insert template for font change command. If @var{replace} is not nil, replace current font. @var{what} determines the font to use, as specified by @code{TeX-font-list}. @end deffn @defopt TeX-font-list List of fonts used by @code{TeX-font}. Each entry is a list with three elements. The first element is the key to activate the font. The second element is the string to insert before point, and the third element is the string to insert after point. An optional fourth element means always replace if not nil. @end defopt @defopt LaTeX-font-list List of fonts used by @code{TeX-font} in LaTeX mode. It has the same structure as @code{TeX-font-list}. @end defopt @node Sectioning @section Inserting chapters, sections, etc. @cindex Sectioning @cindex Sections @cindex Chapters @cindex @code{\chapter} @cindex @code{\section} @cindex @code{\subsection} @cindex @code{\label} Insertion of sectioning macros, that is @samp{\chapter}, @samp{\section}, @samp{\subsection}, etc. and accompanying @samp{\label}'s may be eased by using @kbd{C-c C-s}. This command is highly customizable, the following describes the default behavior. When invoking you will be asked for a section macro to insert. An appropriate default is automatically selected by @AUCTeX{}, that is either: at the top of the document; the top level sectioning for that document style, and any other place: The same as the last occurring sectioning command. Next, you will be asked for the actual name of that section, and last you will be asked for a label to be associated with that section. The label will be prefixed by the value specified in @code{LaTeX-section-hook}. @deffn Command LaTeX-section @var{arg} @kindex C-c C-s (@kbd{C-c C-s}) Insert a sectioning command. Determine the type of section to be inserted, by the argument @var{arg}. @itemize @bullet @item If @var{arg} is nil or missing, use the current level. @item If @var{arg} is a list (selected by C-u), go downward one level. @item If @var{arg} is negative, go up that many levels. @item If @var{arg} is positive or zero, use absolute level: @itemize + @item 0 : part @item 1 : chapter @item 2 : section @item 3 : subsection @item 4 : subsubsection @item 5 : paragraph @item 6 : subparagraph @end itemize @end itemize The following variables can be set to customize the function. @vtable @code @item LaTeX-section-hook Hooks to be run when inserting a section. @item LaTeX-section-label Prefix to all section references. @end vtable @end deffn The precise behavior of @code{LaTeX-section} is defined by the contents of @code{LaTeX-section-hook}. @defopt LaTeX-section-hook List of hooks to run when a new section is inserted. The following variables are set before the hooks are run @table @var @item level Numeric section level, default set by prefix arg to @code{LaTeX-section}. @item name Name of the sectioning command, derived from @var{level}. @item title The title of the section, default to an empty string. @item toc Entry for the table of contents list, default nil. @item done-mark Position of point afterwards, default nil meaning after the inserted text. @end table A number of hooks are already defined. Most likely, you will be able to get the desired functionality by choosing from these hooks. @ftable @code @item LaTeX-section-heading Query the user about the name of the sectioning command. Modifies @var{level} and @var{name}. @item LaTeX-section-title Query the user about the title of the section. Modifies @var{title}. @item LaTeX-section-toc Query the user for the toc entry. Modifies @var{toc}. @item LaTeX-section-section Insert @LaTeX{} section command according to @var{name}, @var{title}, and @var{toc}. If @var{toc} is nil, no toc entry is inserted. If @var{toc} or @var{title} are empty strings, @var{done-mark} will be placed at the point they should be inserted. @item LaTeX-section-label Insert a label after the section command. Controlled by the variable @code{LaTeX-section-label}. @end ftable To get a full featured @code{LaTeX-section} command, insert @lisp (setq LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title LaTeX-section-toc LaTeX-section-section LaTeX-section-label)) @end lisp in your @file{.emacs} file. @end defopt The behavior of @code{LaTeX-section-label} is determined by the variable @code{LaTeX-section-label}. @defopt LaTeX-section-label Default prefix when asking for a label. If it is a string, it is used unchanged for all kinds of sections. If it is nil, no label is inserted. If it is a list, the list is searched for a member whose car is equal to the name of the sectioning command being inserted. The cdr is then used as the prefix. If the name is not found, or if the cdr is nil, no label is inserted. @cindex Prefix for labels @cindex Label prefix @cindex Labels By default, chapters have a prefix of @samp{cha:} while sections and subsections have a prefix of @samp{sec:}. Labels are not automatically inserted for other types of sections. @end defopt @node Environments @section Inserting Environment Templates @cindex Environments @cindex @samp{\begin} @cindex @samp{\end} A large apparatus is available that supports insertions of environments, that is @samp{\begin@{@}} --- @samp{\end@{@}} pairs. @AUCTeX{} is aware of most of the actual environments available in a specific document. This is achieved by examining your @samp{\documentclass} command, and consulting a precompiled list of environments available in a large number of styles. You insert an environment with @kbd{C-c C-e}, and select an environment type. Depending on the environment, @AUCTeX{} may ask more questions about the optional parts of the selected environment type. With @kbd{C-u C-c C-e} you will change the current environment. @deffn Command LaTeX-environment @var{arg} @kindex C-c C-e (@kbd{C-c C-e}) @AUCTeX{} will prompt you for an environment to insert. At this prompt, you may press @key{TAB} or @key{SPC} to complete a partially written name, and/or to get a list of available environments. After selection of a specific environment @AUCTeX{} may prompt you for further specifications. If the optional argument @var{arg} is not-nil (i.e. you have given a prefix argument), the current environment is modified and no new environment is inserted. @end deffn As a default selection, @AUCTeX{} will suggest the environment last inserted or, as the first choice the value of the variable @code{LaTeX-default-environment}. @defopt LaTeX-default-environment Default environment to insert when invoking @samp{LaTeX-environment} first time. @end defopt If the document is empty, or the cursor is placed at the top of the document, @AUCTeX{} will default to insert a `document' environment. Most of these are described further in the following sections, and you may easily specify more. @xref{Customizing Environments}. @menu * Equations:: Equations * Floats:: Floats * Itemize-like:: Itemize-like Environments * Tabular-like:: Tabular-like Environments * Customizing Environments:: Customizing Environments @end menu You can close the current environment with @kbd{C-c ]}, but we suggest that you use @kbd{C-c C-e} to insert complete environments instead. @deffn Command LaTeX-close-environment @kindex C-c ] (@kbd{C-c ]}) Insert an @samp{\end} that matches the current environment. @end deffn @node Equations @subsection Equations @cindex Equations @cindex Equation @cindex Eqnarray @cindex amsmath When inserting equation-like environments, the @samp{\label} will have a default prefix, which is controlled by the following variables: @defopt LaTeX-equation-label Prefix to use for `equation' labels. @end defopt @defopt LaTeX-eqnarray-label Prefix to use for `eqnarray' labels. @end defopt @defopt LaTeX-amsmath-label Prefix to use for amsmath equation labels. Amsmath equations include @samp{align}, @samp{alignat}, @samp{xalignat}, @samp{aligned}, @samp{flalign} and @samp{gather}. @end defopt @node Floats @subsection Floats @cindex Floats @cindex Figures @cindex Figure environment @cindex Tables @cindex Table environment Figures and tables (i.e., floats) may also be inserted using @AUCTeX{}. After choosing either `figure' or `table' in the environment list described above, you will be prompted for a number of additional things. @table @var @item float position This is the optional argument of float environments that controls how they are placed in the final document. In @LaTeX{} this is a sequence of the letters @samp{htbp} as described in the @LaTeX{} manual. The value will default to the value of @code{LaTeX-float}. @vindex LaTeX-float @item caption This is the caption of the float. The default is to insert the caption at the bottom of the float. You can specify floats where the caption should be placed at the top with @code{LaTeX-top-caption-list}. @vindex LaTeX-top-caption-list @item label The label of this float. The label will have a default prefix, which is controlled by the variables @code{LaTeX-figure-label} and @code{LaTeX-table-label}. @vindex LaTeX-figure-label @vindex LaTeX-table-label @cindex Prefix for labels @cindex Label prefix @cindex Labels @end table Moreover, you will be asked if you want the contents of the float environment to be horizontally centered. Upon a positive answer a @samp{\centering} macro will be inserted at the beginning of the float environment. @defopt LaTeX-float Default placement for floats. @end defopt @defopt LaTeX-figure-label Prefix to use for figure labels. @end defopt @defopt LaTeX-table-label Prefix to use for table labels. @end defopt @defopt LaTeX-top-caption-list List of float environments with top caption. @end defopt @node Itemize-like @subsection Itemize-like Environments @cindex Itemize @cindex Enumerates @cindex Descriptions @cindex Items @cindex \item In an itemize-like environment, nodes (i.e., @samp{\item}s) may be inserted using @kbd{C-c @key{LFD}}. @deffn Command LaTeX-insert-item @kindex C-c @key{LFD} (@kbd{C-c @key{LFD}}) Close the current item, move to the next line and insert an appropriate @samp{\item} for the current environment. That is, `itemize' and `enumerate' will have @samp{\item } inserted, while `description' will have @samp{\item[]} inserted. @end deffn @node Tabular-like @subsection Tabular-like Environments When inserting Tabular-like environments, that is, `tabular' `array' etc., you will be prompted for a template for that environment. Related variables: @defopt LaTeX-default-format Default format string for array and tabular environments. @end defopt @defopt LaTeX-default-position Default position string for array and tabular environments. If nil, act like the empty string is given, but don't prompt for a position. @end defopt @node Customizing Environments @subsection Customizing Environments @xref{Adding Environments}, for how to customize the list of known environments. @node Mathematics @section Entering Mathematics @cindex Mathematics @cindex Symbols @cindex Abbreviations @TeX{} is written by a mathematician, and has always contained good support for formatting mathematical text. @AUCTeX{} supports this tradition, by offering a special minor mode for entering text with many mathematical symbols. You can enter this mode by typing @kbd{C-c ~}. @deffn Command LaTeX-math-mode @kindex C-c ~ (@kbd{C-c ~}) Toggle LaTeX Math mode. This is a minor mode rebinding the key @code{LaTeX-math-abbrev-prefix} to allow easy typing of mathematical symbols. @kbd{`} will read a character from the keyboard, and insert the symbol as specified in @code{LaTeX-math-default} and @code{LaTeX-math-list}. If given a prefix argument, the symbol will be surrounded by dollar signs. @end deffn You can use another prefix key (instead of @kbd{`}) by setting the variable @code{LaTeX-math-abbrev-prefix}. To enable LaTeX Math mode by default, add the following in your @file{.emacs} file: @lisp (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) @end lisp @defopt LaTeX-math-abbrev-prefix A string containing the prefix of @code{LaTeX-math-mode} commands; This value defaults to @kbd{`}. The string has to be a key or key sequence in a format understood by the @code{kbd} macro. This corresponds to the syntax usually used in the manuals for Emacs Emacs Lisp. @end defopt The variable @code{LaTeX-math-list} allows you to add your own mappings. @defopt LaTeX-math-list A list containing user-defined keys and commands to be used in LaTeX Math mode. Each entry should be a list of two to four elements. First, the key to be used after @code{LaTeX-math-abbrev-prefix} for macro insertion. If it is nil, the symbol has no associated keystroke (it is available in the menu, though). Second, a string representing the name of the macro (without a leading backslash.) Third, a string representing the name of a submenu the command should be added to. Use a list of strings in case of nested menus. Fourth, the position of a Unicode character to be displayed in the menu alongside the macro name. This is an integer value. @end defopt @defopt LaTeX-math-menu-unicode Whether the LaTeX menu should try using Unicode for effect. Your Emacs built must be able to display include Unicode characters in menus for this feature. @end defopt @AUCTeX{}'s reference card @file{tex-ref.tex} includes a list of all math mode commands. @AUCTeX{} can help you write subscripts and superscripts in math constructs by automatically inserting a pair of braces after typing @key{_} or @key{^} respectively and putting point between the braces. In order to enable this feature, set the variable @code{TeX-electric-sub-and-superscript} to a non-nil value. @defopt TeX-electric-sub-and-superscript If non-nil, insert braces after typing @key{^} and @key{_} in math mode. @end defopt @node Completion @section Completion @cindex Completion @cindex Expansion @cindex Macro expansion @cindex Macro completion @cindex Macro arguments @cindex Arguments to @TeX{} macros Emacs lisp programmers probably know the @code{lisp-complete-symbol} command, usually bound to @kbd{M-@key{TAB}}. Users of the wonderful ispell mode know and love the @code{ispell-complete-word} command from that package. Similarly, @AUCTeX{} has a @code{TeX-complete-symbol} command, by default bound to @kbd{M-@key{TAB}} which is equivalent to @kbd{M-C-i}. Using @code{TeX-complete-symbol} makes it easier to type and remember the names of long @LaTeX{} macros. In order to use @code{TeX-complete-symbol}, you should write a backslash and the start of the macro. Typing @kbd{M-@key{TAB}} will now complete as much of the macro, as it unambiguously can. For example, if you type `@samp{\renewc}' and then @kbd{M-@key{TAB}}, it will expand to `@samp{\renewcommand}'. @deffn Command TeX-complete-symbol @kindex M-@key{TAB} (@kbd{M-@key{TAB}}) Complete @TeX{} symbol before point. @end deffn A more direct way to insert a macro is with @code{TeX-insert-macro}, bound to @kbd{C-c C-m} which is equivalent to @kbd{C-c @key{RET}}. It has the advantage over completion that it knows about the argument of most standard @LaTeX{} macros, and will prompt for them. It also knows about the type of the arguments, so it will for example give completion for the argument to @samp{\include}. Some examples are listed below. @deffn Command TeX-insert-macro @kindex C-c C-m (@kbd{C-c C-m} or @kbd{C-c @key{RET}}) Prompt (with completion) for the name of a @TeX{} macro, and if @AUCTeX{} knows the macro, prompt for each argument. @end deffn As a default selection, @AUCTeX{} will suggest the macro last inserted or, as the first choice the value of the variable @code{TeX-default-macro}. @defopt TeX-insert-macro-default-style Specifies whether @code{TeX-insert-macro} will ask for all optional arguments. If set to the symbol @code{show-optional-args}, @code{TeX-insert-macro} asks for optional arguments of @TeX{} macros. If set to @code{mandatory-args-only}, @code{TeX-insert-macro} asks only for mandatory arguments. When @code{TeX-insert-macro} is called with prefix argument (@kbd{C-u}), it's the other way round. Note that for some macros, there are special mechanisms, e.g. @code{LaTeX-includegraphics-options-alist}. @end defopt @defopt TeX-default-macro Default macro to insert when invoking @code{TeX-insert-macro} first time. @end defopt A faster alternative is to bind the function @code{TeX-electric-macro} to @samp{\}. This can be done by setting the variable @code{TeX-electric-escape} @defopt TeX-electric-escape If this is non-nil when @AUCTeX{} is loaded, the @TeX{} escape character @samp{\} will be bound to @code{TeX-electric-macro} @end defopt The difference between @code{TeX-insert-macro} and @code{TeX-electric-macro} is that space will complete and exit from the minibuffer in @code{TeX-electric-macro}. Use @key{TAB} if you merely want to complete. @deffn Command TeX-electric-macro Prompt (with completion) for the name of a @TeX{} macro, and if @AUCTeX{} knows the macro, prompt for each argument. Space will complete and exit. @end deffn By default @AUCTeX{} will put an empty set braces @samp{@{@}} after a macro with no arguments to stop it from eating the next whitespace. This can be stopped by entering @code{LaTeX-math-mode}, @pxref{Mathematics}, or by setting @code{TeX-insert-braces} to nil. @defopt TeX-insert-braces If non-nil, append a empty pair of braces after inserting a macro. @end defopt Completions work because @AUCTeX{} can analyze @TeX{} files, and store symbols in Emacs Lisp files for later retrieval. @xref{Automatic}, for more information. @cindex \cite, completion of @cindex Bib@TeX{}, completion @cindex cite, completion of @cindex bibliography, completion @cindex citations, completion of @cindex \label, completion @cindex \ref, completion @cindex labels, completion of @AUCTeX{} will also make completion for many macro arguments, for example existing labels when you enter a @samp{\ref} macro with @code{TeX-insert-macro} or @code{TeX-electric-macro}, and Bib@TeX{} entries when you enter a @samp{\cite} macro. For this kind of completion to work, parsing must be enabled as described in @pxref{Parsing Files}. For @samp{\cite} you must also make sure that the Bib@TeX{} files have been saved at least once after you enabled automatic parsing on save, and that the basename of the Bib@TeX{} file does not conflict with the basename of one of @TeX{} files. @node Marking @section Marking Environments, Sections, or Texinfo Nodes You can mark the current environment by typing @kbd{C-c .}, or the current section by typing @kbd{C-c *}. In Texinfo documents you can type @kbd{M-C-h} to mark the current node. When the region is set, the point is moved to its beginning and the mark to its end. @menu * Marking (LaTeX):: LaTeX Commands for Marking Environments and Sections * Marking (Texinfo):: Texinfo Commands for Marking Environments, Sections, and Nodes @end menu @node Marking (LaTeX) @subsection LaTeX Commands for Marking Environments and Sections @deffn Command LaTeX-mark-section @kindex C-c * (@kbd{C-c *}) Set mark at end of current logical section, and point at top. With a non-nil prefix argument, mark only the region from the current section start to the next sectioning command. Thereby subsections are not being marked. Otherwise, any included subsections are also marked along with current section. @end deffn @deffn Command LaTeX-mark-environment @kindex C-c . (@kbd{C-c .}) Set mark to the end of the current environment and point to the matching beginning. If a prefix argument is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments. @end deffn @node Marking (Texinfo) @subsection Texinfo Commands for Marking Environments and Sections @deffn Command Texinfo-mark-section @kindex C-c * (@kbd{C-c *}) Mark the current section, with inclusion of any containing node. The current section is detected as starting by any of the structuring commands matched by the regular expression in the variable @code{outline-regexp} which in turn is a regular expression matching any element of the variable @code{texinfo-section-list}. With a non-nil prefix argument, mark only the region from the current section start to the next sectioning command. Thereby subsections are not being marked. Otherwise, any included subsections are also marked Note that when the current section is starting immediately after a node command, then the node command is also marked as part of the section. @end deffn @deffn Command Texinfo-mark-environment @kindex C-c . (@kbd{C-c .}) Set mark to the end of the current environment and point to the matching beginning. If a prefix argument is given, mark the respective number of enclosing environments. The command will not work properly if there are unbalanced begin-end pairs in comments and verbatim environments. @end deffn @deffn Command Texinfo-mark-node @kindex M-C-h (@kbd{M-C-h}) Mark the current node. This is the node in which point is located. It is starting at the previous occurrence of the keyword @code{@@node} and ending at next occurrence of the keywords @code{@@node} or @code{@@bye}. @end deffn @node Commenting @section Commenting It is often necessary to comment out temporarily a region of @TeX{} or @LaTeX{} code. This can be done with the commands @kbd{C-c ;} and @kbd{C-c %}. @kbd{C-c ;} will comment out all lines in the current region, while @kbd{C-c %} will comment out the current paragraph. Type @kbd{C-c ;} again to uncomment all lines of a commented region, or @kbd{C-c %} again to uncomment all comment lines around point. These commands will insert or remove a single @samp{%} respectively. @deffn Command TeX-comment-or-uncomment-region @kindex C-c ; (@kbd{C-c ;}) Add or remove @samp{%} from the beginning of each line in the current region. Uncommenting works only if the region encloses solely commented lines. If @AUCTeX{} should not try to guess if the region should be commented or uncommented the commands @code{TeX-comment-region} and @code{TeX-uncomment-region} can be used to explicitly comment or uncomment the region in concern. @end deffn @deffn Command TeX-comment-or-uncomment-paragraph @kindex C-c % (@kbd{C-c %}) Add or remove @samp{%} from the beginning of each line in the current paragraph. When removing @samp{%} characters the paragraph is considered to consist of all preceding and succeeding lines starting with a @samp{%}, until the first non-comment line. @end deffn @node Indenting @section Indenting @cindex Formatting @cindex Indenting @cindex Indentation @cindex Reformatting @cindex Reindenting Indentation means the addition of whitespace at the beginning of lines to reflect special syntactical constructs. This makes it easier to see the structure of the document, and to catch errors such as a missing closing brace. Thus, the indentation is done for precisely the same reasons that you would indent ordinary computer programs. Indentation is done by @LaTeX{} environments and by @TeX{} groups, that is the body of an environment is indented by the value of @code{LaTeX-indent-level} (default 2). Also, items of an `itemize-like' environment are indented by the value of @code{LaTeX-item-indent}, default @minus{}2. (Items are identified with the help of @code{LaTeX-item-regexp}.) If more environments are nested, they are indented `accumulated' just like most programming languages usually are seen indented in nested constructs. @vindex LaTeX-indent-level @vindex LaTeX-item-indent @vindex LaTeX-item-regexp You can explicitely indent single lines, usually by pressing @key{TAB}, or marked regions by calling @code{indent-region} on it. If you have @code{auto-fill-mode} enabled and a line is broken while you type it, Emacs automatically cares about the indentation in the following line. If you want to have a similar behavior upon typing @key{RET}, you can customize the variable @code{TeX-newline-function} and change the default of @code{newline} which does no indentation to @code{newline-and-indent} which indents the new line or @code{reindent-then-newline-and-indent} which indents both the current and the new line. @vindex TeX-newline-function There are certain @LaTeX{} environments which should be indented in a special way, like @samp{tabular} or @samp{verbatim}. Those environments may be specified in the variable @code{LaTeX-indent-environment-list} together with their special indentation functions. Taking the @samp{verbatim} environment as an example you can see that @code{current-indentation} is used as the indentation function. This will stop @AUCTeX{} from doing any indentation in the environment if you hit @key{TAB} for example. @vindex LaTeX-indent-environment-list There are environments in @code{LaTeX-indent-environment-list} which do not bring a special indentation function with them. This is due to the fact that first the respective functions are not implemented yet and second that filling will be disabled for the specified environments. This shall prevent the source code from being messed up by accidently filling those environments with the standard filling routine. If you think that providing special filling routines for such environments would be an appropriate and challenging task for you, you are invited to contribute. (@xref{Filling}, for further information about the filling functionality) @vindex LaTeX-indent-environment-list The check for the indentation function may be enabled or disabled by customizing the variable @code{LaTeX-indent-environment-check}. @vindex LaTeX-indent-environment-check As a side note with regard to formatting special environments: Newer Emacsen include @file{align.el} and therefore provide some support for formatting @samp{tabular} and @samp{tabbing} environments with the function @code{align-current} which will nicely align columns in the source code. @AUCTeX{} is able to format commented parts of your code just as any other part. This means @LaTeX{} environments and @TeX{} groups in comments will be indented syntactically correct if the variable @code{LaTeX-syntactic-comments} is set to t. If you disable it, comments will be filled like normal text and no syntactic indentation will be done. @vindex LaTeX-syntactic-comments Following you will find a list of most commands and variables related to indenting with a small summary in each case: @table @kbd @item @key{TAB} @kindex @key{TAB} @findex LaTeX-indent-line @code{LaTeX-indent-line} will indent the current line. @item @key{LFD} @kindex @key{LFD} @code{newline-and-indent} inserts a new line (much like @key{RET}) and moves the cursor to an appropriate position by the left margin. Most keyboards nowadays lack a linefeed key and @kbd{C-j} may be tedious to type. Therefore you can customize @AUCTeX{} to perform indentation upon typing @key{RET} as well. The respective option is called @code{TeX-newline-function}. @item C-j @kindex C-j Alias for @key{LFD} @end table @defopt LaTeX-indent-environment-list List of environments with special indentation. The second element in each entry is the function to calculate the indentation level in columns. The filling code currently cannot handle tabular-like environments which will be completely messed-up if you try to format them. This is why most of these environments are included in this customization option without a special indentation function. This will prevent that they get filled. @end defopt @defopt LaTeX-indent-level Number of spaces to add to the indentation for each @samp{\begin} not matched by a @samp{\end}. @end defopt @defopt LaTeX-item-indent Number of spaces to add to the indentation for @samp{\item}'s in list environments. @end defopt @defopt TeX-brace-indent-level Number of spaces to add to the indentation for each @samp{@{} not matched by a @samp{@}}. @end defopt @defopt LaTeX-syntactic-comments If non-nil comments will be filled and indented according to @LaTeX{} syntax. Otherwise they will be filled like normal text. @end defopt @defopt TeX-newline-function Used to specify the function which is called when @key{RET} is pressed. This will normally be @code{newline} which simply inserts a new line. In case you want to have @AUCTeX{} do indentation as well when you press @key{RET}, use the built-in functions @code{newline-and-indent} or @code{reindent-then-newline-and-indent}. The former inserts a new line and indents the following line, i.e. it moves the cursor to the right position and therefore acts as if you pressed @key{LFD}. The latter function additionally indents the current line. If you choose @samp{Other}, you can specify your own fancy function to be called when @key{RET} is pressed. @end defopt @node Filling @section Filling @cindex Filling @cindex Formatting @cindex Reformatting @cindex Refilling Filling deals with the insertion of line breaks to prevent lines from becoming wider than what is specified in @code{fill-column}. The linebreaks will be inserted automatically if @code{auto-fill-mode} is enabled. In this case the source is not only filled but also indented automatically as you write it. @code{auto-fill-mode} can be enabled for @AUCTeX{} by calling @code{turn-on-auto-fill} in one of the hooks @AUCTeX{} is running. @xref{Modes and Hooks}. As an example, if you want to enable @code{auto-fill-mode} in @code{LaTeX-mode}, put the following into your init file: @lisp (add-hook 'LaTeX-mode-hook 'turn-on-auto-fill) @end lisp You can manually fill explicitely marked regions, paragraphs, environments, complete sections, or the whole buffer. (Note that manual filling in @AUCTeX{} will indent the start of the region to be filled in contrast to many other Emacs modes.) There are some syntactical constructs which are handled specially with regard to filling. These are so-called code comments and paragraph commands. Code comments are comments preceded by code or text in the same line. Upon filling a region, code comments themselves will not get filled. Filling is done from the start of the region to the line with the code comment and continues after it. In order to prevent overfull lines in the source code, a linebreak will be inserted before the last non-comment word by default. This can be changed by customizing @code{LaTeX-fill-break-before-code-comments}. If you have overfull lines with code comments you can fill those explicitely by calling @code{LaTeX-fill-paragraph} or pressing @kbd{M-q} with the cursor positioned on them. This will add linebreaks in the comment and indent subsequent comment lines to the column of the comment in the first line of the code comment. In this special case @kbd{M-q} only acts on the current line and not on the whole paragraph. Lines with @samp{\par} are treated similarly to code comments, i.e. @samp{\par} will be treated as paragraph boundary which should not be followed by other code or text. But it is not treated as a real paragraph boundary like an empty line where filling a paragraph would stop. Paragraph commands like @samp{\section} or @samp{\noindent} (the list of commands is defined by @code{LaTeX-paragraph-commands}) are often to be placed in their own line(s). This means they should not be consecuted with any preceding or following adjacent lines of text. @AUCTeX{} will prevent this from happening if you do not put any text except another macro after the end of the last brace of the respective macro. If there is other text after the macro, @AUCTeX{} regards this as a sign that the macro is part of the following paragraph. @vindex LaTeX-paragraph-commands Here are some examples: @example \begin@{quote@} text text text text @end example @example \begin@{quote@}\label@{foo@} text text text text @end example If you press @kbd{M-q} on the first line in both examples, nothing will change. But if you write @example \begin@{quote@} text text text text text @end example and press @kbd{M-q}, you will get @example \begin@{quote@} text text text text text @end example Besides code comments and paragraph commands, another speciality of filling in @AUCTeX{} involves commented lines. You should be aware that these comments are treated as islands in the rest of the @LaTeX{} code if syntactic filling is enabled. This means, for example, if you try to fill an environment with @code{LaTeX-fill-environment} and have the cursor placed on a commented line which does not have a surrounding environment inside the comment, @AUCTeX{} will report an error. @findex LaTeX-fill-environment The relevant commands and variables with regard to filling are: @table @kbd @item C-c C-q C-p @kindex C-c C-q C-p @findex LaTeX-fill-paragraph @code{LaTeX-fill-paragraph} will fill and indent the current paragraph. @item M-q @kindex M-q Alias for @kbd{C-c C-q C-p} @item C-c C-q C-e @kindex C-c C-q C-e @findex LaTeX-fill-environment @code{LaTeX-fill-environment} will fill and indent the current environment. This may e.g. be the `document' environment, in which case the entire document will be formatted. @item C-c C-q C-s @kindex C-c C-q C-s @findex LaTeX-fill-section @code{LaTeX-fill-section} will fill and indent the current logical sectional unit. @item C-c C-q C-r @kindex C-c C-q C-r @findex LaTeX-fill-region @code{LaTeX-fill-region} will fill and indent the current region. @end table @defopt LaTeX-fill-break-at-separators List of separators before or after which respectively linebreaks will be inserted if they do not fit into one line. The separators can be curly braces, brackets, switches for inline math (@samp{$}, @samp{\(}, @samp{\)}) and switches for display math (@samp{\[}, @samp{\]}). Such formatting can be useful to make macros and math more visible or to prevent overfull lines in the @LaTeX{} source in case a package for displaying formatted @TeX{} output inside the Emacs buffer, like preview-latex, is used. @end defopt @defopt LaTeX-fill-break-before-code-comments Code comments are comments preceded by some other text in the same line. When a paragraph containing such a comment is to be filled, the comment start will be seen as a border after which no line breaks will be inserted in the same line. If the option @code{LaTeX-fill-break-before-code-comments} is enabled (which is the default) and the comment does not fit into the line, a line break will be inserted before the last non-comment word to minimize the chance that the line becomes overfull. @end defopt @node Display @chapter Controlling Screen Display It is often desirable to get visual help of what markup code in a text actually does whithout having to decipher it explicitely. For this purpose Emacs and @AUCTeX{} provide font locking (also known as syntax highlighting) which visually sets off markup code like macros or environments by using different colors or fonts. For example text to be typeset in italics can be displayed with an italic font in the editor as well, or labels and references get their own distinct color. While font locking helps you grasp the purpose of markup code and separate markup from content, the markup code can still be distracting. @AUCTeX{} lets you hide those parts and show them again at request with its built-in support for hiding macros and environments which we call folding here. Besides folding of macros and environments, @AUCTeX{} provides support for Emacs' outline mode which lets you narrow the buffer content to certain sections of your text by hiding the parts not belonging to these sections. @menu * Font Locking:: Font Locking * Folding:: Folding Macros and Environments * Outline:: Outlining the Document @end menu @node Font Locking @section Font Locking @cindex Font Locking @cindex Syntax Highlighting @cindex font-latex Font locking is supposed to improve readability of the source code by highlighting certain keywords with different colors or fonts. It thereby lets you recognize the function of markup code to a certain extent without having to read the markup command. For general information on controlling font locking with Emacs' Font Lock mode, see @ref{Font Lock, , Font Lock Mode, emacs, GNU Emacs Manual}. @defopt TeX-install-font-lock Once font locking is enabled globally or for the major modes provided by @AUCTeX{}, the font locking patterns and functionality of @fontlatex{} are activated by default. You can switch to a different font locking scheme or disable font locking in @AUCTeX{} by customizing the variable @code{TeX-install-font-lock}. Besides @fontlatex{} @AUCTeX{} ships with a scheme which is derived from Emacs' default @LaTeX{} mode and activated by choosing @code{tex-font-setup}. Be aware that this scheme is not coupled with @AUCTeX{}'s style system and not the focus of development. Therefore and due to @fontlatex{} being much more feature-rich the following explanations will only cover @fontlatex{}. In case you want to hook in your own fontification scheme, you can choose @code{other} and insert the name of the function which sets up your font locking patterns. If you want to disable fontification in @AUCTeX{} completely, choose @code{ignore}. @end defopt @fontlatex{} provides many options for customization which are accessible with @kbd{M-x customize-group RET font-latex RET}. For this description the various options are explained in conceptional groups. @menu * Fontification of macros:: Fontification of macros * Fontification of quotes:: Fontification of quotes * Fontification of math:: Fontification of math constructs * Verbatim content:: Verbatim macros and environments * Faces:: Faces used by font-latex * Known problems:: Known fontification problems @end menu @node Fontification of macros @subsection Fontification of macros Highlighting of macros can be customized by adapting keyword lists which can be found in the customization group @code{font-latex-keywords}. Three types of macros can be handled differently with respect to fontification: @enumerate @item Commands of the form @samp{\foo[bar]@{baz@}} which consist of the macro itself, optional arguments in square brackets and mandatory arguments in curly braces. For the command itself the face @code{font-lock-keyword-face} will be used and for the optional arguments the face @code{font-lock-variable-name-face}. The face applied to the mandatory argument depends on the macro class represented by the respective built-in variables. @item Declaration macros of the form @samp{@{\foo text@}} which consist of the macro which may be enclosed in a @TeX{} group together with text to be affected by the macro. In case a @TeX{} group is present, the macro will get the face @code{font-lock-keyword-face} and the text will get the face configured for the respective macro class. If no @TeX{} group is present, the latter face will be applied to the macro itself. @item Simple macros of the form @samp{\foo} which do not have any arguments or groupings. The respective face will be applied to the macro itself. @end enumerate Customization variables for @samp{\foo[bar]@{baz@}} type macros allow both the macro name and the sequence of arguments to be specified. The latter is done with a string which can contain the characters @table @samp @item * indicating the existence of a starred variant for the macro, @item [ for optional arguments in brackets, @item @{ for mandatory arguments in braces, @item \ for mandatory arguments consisting of a single macro and @item | as a prefix indicating that two alternatives are following. @end table For example the specifier for @samp{\documentclass} would be @samp{[@{} because the macro has one optional followed by one mandatory argument. The specifier for @samp{\newcommand} would be @samp{*|@{\[[@{} because there is a starred variant, the mandatory argument following the macro name can be a macro or a @TeX{} group which can be followed by two optional arguments and the last token is a mandatory argument in braces. Customization variables for the @samp{@{\foo text@}} and @samp{\foo} types are simple lists of strings where each entry is a macro name (without the leading backslash). @subheading General macro classes @fontlatex{} provides keyword lists for different macro classes which are described in the following table: @vindex font-latex-match-function-keywords @vindex font-latex-match-reference-keywords @vindex font-latex-match-textual-keywords @vindex font-latex-match-variable-keywords @vindex font-latex-match-warning-keywords @table @code @item font-latex-match-function-keywords Keywords for macros defining or related to functions, like @samp{\newcommand}.@* Type: @samp{\macro[...]@{...@}}@* Face: @code{font-lock-function-name-face} @item font-latex-match-reference-keywords Keywords for macros defining or related to references, like @samp{\ref}.@* Type: @samp{\macro[...]@{...@}}@* Face: @code{font-lock-constant-face} @item font-latex-match-textual-keywords Keywords for macros specifying textual content, like @samp{\caption}.@* Type: @samp{\macro[...]@{...@}}@* Face: @code{font-lock-type-face} @item font-latex-match-variable-keywords Keywords for macros defining or related to variables, like @samp{\setlength}.@* Type: @samp{\macro[...]@{...@}}@* Face: @code{font-lock-variable-name-face} @item font-latex-match-warning-keywords Keywords for important macros, e.g. affecting line or page break, like @samp{\clearpage}.@* Type: @samp{\macro}@* Face: @code{font-latex-warning-face} @end table @subheading Sectioning commands @cindex Sectioning commands, fontification of Sectioning commands are macros like @samp{\chapter} or @samp{\section}. For these commands there are two fontification schemes which may be selected by customizing the variable @code{font-latex-fontify-sectioning}. @defopt font-latex-fontify-sectioning @c Is @vindex correct? @vindex font-latex-sectioning-0-face @vindex font-latex-sectioning-1-face @vindex font-latex-sectioning-2-face @vindex font-latex-sectioning-3-face @vindex font-latex-sectioning-4-face @vindex font-latex-sectioning-5-face Per default sectioning commands will be shown in a larger, proportional font, which corresponds to a number for this variable. The font size varies with the sectioning level, e.g. @samp{\part} (@code{font-latex-sectioning-0-face}) has a larger font than @samp{\paragraph} (@code{font-latex-sectioning-5-face}). Typically, values from 1.05 to 1.3 for @code{font-latex-fontify-sectioning} give best results, depending on your font setup. If you rather like to use the base font and a different color, set the variable to the symbol @samp{color}. In this case the face @code{font-lock-type-face} will be used to fontify the argument of the sectioning commands. @end defopt @vindex font-latex-match-sectioning-0-keywords @vindex font-latex-match-sectioning-1-keywords @vindex font-latex-match-sectioning-2-keywords @vindex font-latex-match-sectioning-3-keywords @vindex font-latex-match-sectioning-4-keywords @vindex font-latex-match-sectioning-5-keywords You can make @fontlatex{} aware of your own sectioning commands be adding them to the keyword lists: @code{font-latex-match-sectioning-0-keywords} (@code{font-latex-sectioning-0-face}) @dots{} @code{font-latex-match-sectioning-5-keywords} (@code{font-latex-sectioning-5-face}). @vindex font-latex-slide-title-face @vindex font-latex-match-slide-title-keywords Related to sectioning there is special support for slide titles which may be fontified with the face @code{font-latex-slide-title-face}. You can add macros which should appear in this face by customizing the variable @code{font-latex-match-slide-title-keywords}. @subheading Commands for changing fonts @LaTeX{} provides various macros for changing fonts or font attributes. For example, you can select an italic font with @samp{\textit@{...@}} or bold with @samp{\textbf@{...@}}. An alternative way to specify these fonts is to use special macros in @TeX{} groups, like @samp{@{\itshape ...@}} for italics and @samp{@{\bfseries ...@}} for bold. As mentioned above, we call the former variants commands and the latter declarations. Besides the macros for changing fonts provided by @LaTeX{} there is an infinite number of other macros---either defined by yourself for logical markup or defined by macro packages---which affect the font in the typeset text. While @LaTeX{}'s built-in macros and macros of packages known by @AUCTeX{} are already handled by @fontlatex{}, different keyword lists per type style and macro type are provided for entering your own macros which are listed in the table below. @vindex font-latex-match-bold-command-keywords @vindex font-latex-match-italic-command-keywords @vindex font-latex-match-math-command-keywords @vindex font-latex-match-type-command-keywords @vindex font-latex-match-bold-declaration-keywords @vindex font-latex-match-italic-declaration-keywords @vindex font-latex-match-type-declaration-keywords @table @code @item font-latex-match-bold-command-keywords Keywords for commands specifying a bold type style.@* Face: @code{font-latex-bold-face} @item font-latex-match-italic-command-keywords Keywords for commands specifying an italic font.@* Face: @code{font-latex-italic-face} @item font-latex-match-math-command-keywords Keywords for commands specifying a math font.@* Face: @code{font-latex-math-face} @item font-latex-match-type-command-keywords Keywords for commands specifying a typewriter font.@* Face: @code{font-lock-type-face} @item font-latex-match-bold-declaration-keywords Keywords for declarations specifying a bold type style.@* Face: @code{font-latex-bold-face} @item font-latex-match-italic-declaration-keywords Keywords for declarations specifying an italic font.@* Face: @code{font-latex-italic-face} @item font-latex-match-type-declaration-keywords Keywords for declarations specifying a typewriter font.@* Face: @code{font-latex-type-face} @end table @subheading Deactivating defaults of built-in keyword classes @vindex font-latex-deactivated-keyword-classes @fontlatex{} ships with predefined lists of keywords for the classes described above. You can disable these defaults per class by customizing the variable @code{font-latex-deactivated-keyword-classes}. This is a list of strings for keyword classes to be deactivated. Valid entries are "warning", "variable", "reference", "function" , "sectioning-0", "sectioning-1", "sectioning-2", "sectioning-3", "sectioning-4", "sectioning-5", "textual", "bold-command", "italic-command", "math-command", "type-command", "bold-declaration", "italic-declaration", "type-declaration". You can also get rid of certain keywords only. For example if you want to remove highlighting of footnotes as references you can put the following stanza into your init file: @lisp (eval-after-load "font-latex" '(setq-default font-latex-match-reference-keywords-local (remove "footnote" font-latex-match-reference-keywords-local))) @end lisp But note that this means fiddling with @fontlatex{}'s internals and is not guaranteed to work in future versions of @fontlatex{}. @subheading User-defined keyword classes In case the customization options explained above do not suffice for your needs, you can specify your own keyword classes by customizing the variable @code{font-latex-user-keyword-classes}. @defopt font-latex-user-keyword-classes Every keyword class consists of four parts, a name, a list of keywords, a face and a specifier for the type of macros to be highlighted. When adding new entries, you have to use unique values for the class names, i.e. they must not clash with names of the built-in keyword classes or other names given by you. Additionally the names must not contain spaces. The list of keywords defines which commands and declarations should be covered by the keyword class. A keyword can either be a simple command name omitting the leading backslash or a list consisting of the command name and a string specifying the sequence of arguments for the command. The face argument can either be an existing face or font specifications made by you. (The latter option is not available on XEmacs.) There are three alternatives for the type of keywords---``Command with arguments'', ``Declaration inside @TeX{} group'' and ``Command without arguments''---which correspond with the macro types explained above. @end defopt @node Fontification of quotes @subsection Fontification of quotes @cindex Quotes, fontification of Text in quotation marks is displayed with the face @code{font-latex-string-face}. Besides the various forms of opening and closing double and single quotation marks, so-called guillemets (<<, >>) can be used for quoting. Because there are two styles of using them---French style: << text >>; German style: >>text<<---you can customize the variable @code{font-latex-quotes} to tell @fontlatex{} which type you are using if the correct value cannot be derived from document properties. @defopt font-latex-quotes The default value of @code{font-latex-quotes} is @samp{auto} which means that @fontlatex{} will try to derive the correct type of quotation mark matching from document properties like the language option supplied to the babel @LaTeX{} package. If the automatic detection fails for you and you mostly use one specific style you can set it to a specific language-dependent value as well. Set the value to @samp{german} if you are using >>German quotes<< and to @samp{french} if you are using << French quotes >>. @fontlatex{} will recognize the different ways these quotes can be given in your source code, i.e. (@samp{"<}, @samp{">}), (@samp{<<}, @samp{>>}) and the respective 8-bit variants. If you set @code{font-latex-quotes} to nil, quoted content will not be fontified. @end defopt @node Fontification of math @subsection Fontification of mathematical constructs @cindex Math, fontification of @cindex Subscript, fontification of @cindex Superscript, fontification of @vindex font-latex-match-math-command-keywords @vindex font-latex-math-environments In @LaTeX{} mathematics can be indicated by a variety of different methods: toggles (like dollar signs), macros and environments. Math constructs known by @fontlatex{} are displayed with the face @code{font-latex-math-face}. Support for dollar signs and shorthands like @samp{\(...\)} or @samp{\[...\]} is built-in and not customizable. Support for other math macros and environments can be adapted by customizing the variables @code{font-latex-match-math-command-keywords} and @code{font-latex-math-environments} respectively. In order to make math constructs more readable, @fontlatex{} displays subscript and superscript parts in a smaller font and raised or lowered respectively. This fontification feature can be controlled with the variables @code{font-latex-fontify-script} and @code{font-latex-script-display}. @defopt font-latex-fontify-script If non-nil, fontify subscript and superscript strings. Note that this feature is not available on XEmacs, for which it is disabled per default. In GNU Emacs raising and lowering is not enabled for versions 21.3 and before due to it working not properly. @end defopt @defopt font-latex-script-display Display specification for subscript and superscript content. The car is used for subscript, the cdr is used for superscript. The feature is implemented using so-called display properties. For information on what exactly to specify for the values, see @ref{Other Display Specs, , Other Display Specifications, elisp, GNU Emacs Lisp Reference Manual}. @end defopt @node Verbatim content @subsection Verbatim macros and environments @cindex Verbatim, fontification of Usually it is not desirable to have content to be typeset verbatim highlighted according to @LaTeX{} syntax. Therefore this content will be fontified uniformly with the face @code{font-latex-verbatim-face}. @vindex LaTeX-verbatim-macros-with-delims @vindex LaTeX-verbatim-macros-with-braces @vindex LaTeX-verbatim-environments @fontlatex{} differentiates three different types of verbatim constructs for fontification. Macros with special characters like | as delimiters, macros with braces, and environments. Which macros and environments are recognized is controlled by the variables @code{LaTeX-verbatim-macros-with-delims}, @code{LaTeX-verbatim-macros-with-braces}, and @code{LaTeX-verbatim-environments} respectively. @node Faces @subsection Faces used by @fontlatex{} @cindex Faces In case you want to change the colors and fonts used by @fontlatex{} please refer to the faces mentioned in the explanations above and use @kbd{M-x customize-face RET RET}. All faces defined by @fontlatex{} are accessible through a customization group by typing @kbd{M-x customize-group RET font-latex-highlighting-faces RET}. @node Known problems @subsection Known fontification problems @cindex Dollar signs, color bleed with @cindex Math, fontification problems with In certain cases the fontification machinery fails to interpret buffer contents correctly. This can lead to color bleed, i.e. large parts of a buffer get fontified with an inappropriate face. A typical situation for this to happen is the use of a dollar sign (@samp{$}) in a verbatim macro or environment. If @fontlatex{} is not aware of the verbatim construct, it assumes the dollar sign to be a toggle for mathematics and fontifies the following buffer content with the respective face until it finds a closing dollar sign or till the end of the buffer. As a remedy you can make the verbatim construct known to @fontlatex{}, @pxref{Verbatim content}. If this is not possible, you can insert a commented dollar sign (@samp{%$}) at the next suitable end of line as a quick workaround. @c As a last resort one can set `font-lock-keywords-only', but we should @c probably not advise users to do this. @node Folding @section Folding Macros and Environments @cindex Outlining @cindex Folding @cindex Reveal @cindex Auto-Reveal @cindex Hide Macros A popular complaint about markup languages like @TeX{} and @LaTeX{} is that there is too much clutter in the source text and that one cannot focus well on the content. There are macros where you are only interested in the content they are enclosing, like font specifiers where the content might already be fontified in a special way by font locking. Or macros the content of which you only want to see when actually editing it, like footnotes or citations. Similarly you might find certain environments or comments distracting when trying to concentrate on the body of your document. With @AUCTeX{}'s folding functionality you can collapse those items and replace them by a fixed string, the content of one of their arguments, or a mixture of both. If you want to make the original text visible again in order to view or edit it, move point sideways onto the placeholder (also called display string) or left-click with the mouse pointer on it. (The latter is currently only supported on Emacs.) The macro or environment will unfold automatically, stay open as long as point is inside of it and collapse again once you move point out of it. (Note that folding of environments currently does not work in every @AUCTeX{} mode.) In order to use this feature, you have to activate @code{TeX-fold-mode} which will activate the auto-reveal feature and the necessary commands to hide and show macros and environments. You can activate the mode in a certain buffer by typing the command @kbd{M-x TeX-fold-mode RET} or using the keyboard shortcut @kbd{C-c C-o C-f}. If you want to use it every time you edit a @LaTeX{} document, add it to a hook: @findex TeX-fold-mode @kindex C-c C-o C-f @lisp (add-hook 'LaTeX-mode-hook (lambda () (TeX-fold-mode 1))) @end lisp If it should be activated in all @AUCTeX{} modes, use @code{TeX-mode-hook} instead of @code{LaTeX-mode-hook}. Once the mode is active there are several commands available to hide and show macros, environments and comments: @deffn Command TeX-fold-buffer @kindex C-c C-o C-b (@kbd{C-c C-o C-b}) Hide all foldable items in the current buffer according to the setting of @code{TeX-fold-type-list}. If you want to have this done automatically every time you open a file, add it to a hook and make sure the function is called after font locking is set up for the buffer. The following code should accomplish this: @lisp (add-hook 'find-file-hook 'TeX-fold-buffer t) @end lisp The command can be used any time to refresh the whole buffer and fold any new macros and environments which were inserted after the last invocation of the command. @end deffn @defopt TeX-fold-type-list List of symbols determining the item classes to consider for folding. This can be macros, environments and comments. Per default only macros and environments are folded. @end defopt @defopt TeX-fold-force-fontify In order for all folded content to get the right faces, the whole buffer has to be fontified before folding is carried out. @code{TeX-fold-buffer} therefore will force fontification of unfontified regions. As this will prolong the time folding takes, you can prevent forced fontification by customizing the variable @code{TeX-fold-force-fontify}. @end defopt @defopt TeX-fold-preserve-comments By default items found in comments will be folded. If your comments often contain unfinished code this might lead to problems. Give this variable a non-nil value and foldable items in your comments will be left alone. @end defopt @deffn Command TeX-fold-region @kindex C-c C-o C-r (@kbd{C-c C-o C-r}) Hide all configured macros in the marked region. @end deffn @deffn Command TeX-fold-paragraph @kindex C-c C-o C-p (@kbd{C-c C-o C-p}) Hide all configured macros in the paragraph containing point. @end deffn @deffn Command TeX-fold-macro @kindex C-c C-o C-m (@kbd{C-c C-o C-m}) Hide the macro on which point currently is located. If the name of the macro is found in @code{TeX-fold-macro-spec-list}, the respective display string will be shown instead. If it is not found, the name of the macro in sqare brackets or the default string for unspecified macros (@code{TeX-fold-unspec-macro-display-string}) will be shown, depending on the value of the variable @code{TeX-fold-unspec-use-name}. @end deffn @deffn Command TeX-fold-env @kindex C-c C-o C-e (@kbd{C-c C-o C-e}) Hide the environment on which point currently is located. The behavior regarding the display string is analogous to @code{TeX-fold-macro} and determined by the variables @code{TeX-fold-env-spec-list} and @code{TeX-fold-unspec-env-display-string} respectively. @end deffn @deffn Command TeX-fold-math Hide the math macro on which point currently is located. If the name of the macro is found in @code{TeX-fold-math-spec-list}, the respective display string will be shown instead. If it is not found, the name of the macro in sqare brackets or the default string for unspecified macros (@code{TeX-fold-unspec-macro-display-string}) will be shown, depending on the value of the variable @code{TeX-fold-unspec-use-name}. @end deffn @deffn Command TeX-fold-comment @kindex C-c C-o C-c (@kbd{C-c C-o C-c}) Hide the comment point is located on. @end deffn @deffn Command TeX-fold-clearout-buffer @kindex C-c C-o b (@kbd{C-c C-o b}) Permanently unfold all macros and environments in the current buffer. @end deffn @deffn Command TeX-fold-clearout-region @kindex C-c C-o r (@kbd{C-c C-o r}) Permanently unfold all macros and environments in the marked region. @end deffn @deffn Command TeX-fold-clearout-paragraph @kindex C-c C-o p (@kbd{C-c C-o p}) Permanently unfold all macros and environments in the paragraph containing point. @end deffn @deffn Command TeX-fold-clearout-item @kindex C-c C-o i (@kbd{C-c C-o i}) Permanently show the macro or environment on which point currently is located. In contrast to temporarily opening the macro when point is moved sideways onto it, the macro will be permanently unfolded and will not collapse again once point is leaving it. @end deffn @deffn Command TeX-fold-dwim @kindex C-c C-o C-o (@kbd{C-c C-o C-o}) Hide or show items according to the current context. If there is folded content, unfold it. If there is a marked region, fold all configured content in this region. If there is no folded content but a macro or environment, fold it. @end deffn @vindex TeX-fold-command-prefix In case you want to use a different prefix than @kbd{C-c C-o} for these commands you can customize the variable @code{TeX-fold-command-prefix}. (Note that this will not change the key binding for activating the mode.) The commands above will only take macros or environments into consideration which are specified in the variables @code{TeX-fold-macro-spec-list} or @code{TeX-fold-env-spec-list} respectively. @defopt TeX-fold-macro-spec-list List of replacement specifiers and macros to fold. The specifier can be a string, an integer or a function symbol. If you specify a string, it will be used as a display replacement for the whole macro. Numbers in braces, brackets, parens or angle brackets will be replaced by the respective macro argument. For example @samp{@{1@}} will be replaced by the first mandatory argument of the macro. One can also define alternatives within the specifier which are used if an argument is not found. Alternatives are separated by @samp{||}. They are most useful with optional arguments. As an example, the default specifier for @samp{\item} is @samp{[1]:||*} which means that if there is an optional argument, its value is shown followed by a colon. If there is no optional argument, only an asterisk is used as the display string. If you specify a number as the first element, the content of the respective mandatory argument of a @LaTeX{} macro will be used as the placeholder. If the first element is a function symbol, the function will be called with all mandatory arguments of the macro and the result of the function call will be used as a replacement for the macro. The placeholder is made by copying the text from the buffer together with its properties, i.e. its face as well. If fontification has not happened when this is done (e.g. because of lazy font locking) the intended fontification will not show up. As a workaround you can leave Emacs idle a few seconds and wait for stealth font locking to finish before you fold the buffer. Or you just re-fold the buffer with @code{TeX-fold-buffer} when you notice a wrong fontification. @end defopt @defopt TeX-fold-env-spec-list List of display strings or argument numbers and environments to fold. Argument numbers refer to the @samp{\begin} statement. That means if you have e.g. @samp{\begin@{tabularx@}@{\linewidth@}@{XXX@} ... \end@{tabularx@}} and specify 3 as the argument number, the resulting display string will be ``XXX''. @end defopt @defopt TeX-fold-math-spec-list List of display strings and math macros to fold. @end defopt @vindex LaTeX-fold-macro-spec-list @vindex LaTeX-fold-env-spec-list @vindex LaTeX-fold-math-spec-list The variables @code{TeX-fold-macro-spec-list}, @code{TeX-fold-env-spec-list}, and @code{TeX-fold-math-spec-list} apply to any @AUCTeX{} mode. If you want to make settings which are only applied to @LaTeX{} mode, you can use the mode-specific variables @code{LaTeX-fold-macro-spec-list}, @code{LaTeX-fold-env-spec-list}, and @code{LaTeX-fold-math-spec-list} @defopt TeX-fold-unspec-macro-display-string Default display string for macros which are not specified in @code{TeX-fold-macro-spec-list}. @end defopt @defopt TeX-fold-unspec-env-display-string Default display string for environments which are not specified in @code{TeX-fold-env-spec-list}. @end defopt @defopt TeX-fold-unspec-use-name If non-nil the name of the macro or environment surrounded by square brackets is used as display string, otherwise the defaults specified in @code{TeX-fold-unspec-macro-display-string} or @code{TeX-fold-unspec-env-display-string} respectively. @end defopt When you hover with the mouse pointer over folded content, its original text will be shown in a tooltip or the echo area depending on Tooltip mode being activate. In order to avoid exorbitantly big tooltips and to cater for the limited space in the echo area the content will be cropped after a certain amount of characters defined by the variable @code{TeX-fold-help-echo-max-length}. @defopt TeX-fold-help-echo-max-length Maximum length of original text displayed in a tooltip or the echo area for folded content. Set it to zero in order to disable this feature. @end defopt @node Outline @section Outlining the Document @cindex Outlining @cindex Headers @cindex Sections @cindex Overview @cindex Folding @AUCTeX{} supports the standard outline minor mode using @LaTeX{}/@ConTeXt{} sectioning commands as header lines. @xref{Outline Mode, , Outline Mode, emacs, GNU Emacs Manual}. You can add your own headings by setting the variable @code{TeX-outline-extra}. @defvar TeX-outline-extra List of extra @TeX{} outline levels. Each element is a list with two entries. The first entry is the regular expression matching a header, and the second is the level of the header. A @samp{^} is automatically prepended to the regular expressions in the list, so they must match text at the beginning of the line. See @code{LaTeX-section-list} or @code{ConTeXt-INTERFACE-section-list} for existing header levels. @end defvar The following example add @samp{\item} and @samp{\bibliography} headers, with @samp{\bibliography} at the same outline level as @samp{\section}, and @samp{\item} being below @samp{\subparagraph}. @lisp (setq TeX-outline-extra '(("[ \t]*\\\\\\(bib\\)?item\\b" 7) ("\\\\bibliography\\b" 2))) @end lisp You may want to check out the unbundled @file{out-xtra} package for even better outline support. It is available from your favorite emacs lisp archive. @node Processing @chapter Starting Processors, Viewers and Other Programs The most powerful features of @AUCTeX{} may be those allowing you to run @TeX{}, @LaTeX{}, @ConTeXt{} and other external commands like Bib@TeX{} and @code{makeindex} from within Emacs, viewing and printing the results, and moreover allowing you to @emph{debug} your documents. @cindex tool bar, toolbar @vindex LaTeX-enable-toolbar @vindex plain-TeX-enable-toolbar @AUCTeX{} comes with a special tool bar for @TeX{} and @LaTeX{} which provides buttons for the most important commands. You can enable or disable it by customizing the options @code{plain-TeX-enable-toolbar} and @code{LaTeX-enable-toolbar} in the @code{TeX-tool-bar} customization group. @menu * Commands:: Invoking external commands. * Viewing:: Invoking external viewers. * Debugging:: Debugging @TeX{} and @LaTeX{} output. * Checking:: Checking the document. * Control:: Controlling the processes. * Cleaning:: Cleaning intermediate and output files. * Documentation:: Documentation about macros and packages. @end menu @node Commands @section Executing Commands @cindex Formatting @cindex Running @LaTeX{} @cindex Running @TeX{} @cindex @LaTeX{} @cindex @TeX{} @cindex Running commands @cindex Default command @cindex Header @cindex Trailer @cindex Setting the header @cindex Setting the trailer @cindex Region @cindex Region file @cindex Setting the default command @cindex Commands @cindex External Commands @cindex Indexing @cindex Making an index @cindex Running @code{makeindex} @cindex @code{makeindex} @cindex Bib@TeX{} @cindex Bibliography @cindex Literature @cindex Running Bib@TeX{} @cindex Making a bibliography @cindex Printing @cindex Writing to a printer Formatting the document with @TeX{}, @LaTeX{} or @ConTeXt{}, viewing with a previewer, printing the document, running Bib@TeX{}, making an index, or checking the document with @command{lacheck} or @command{chktex} all require running an external command. @menu * Starting a Command:: Starting a Command on a Document or Region * Selecting a Command:: Selecting and Executing a Command * Processor Options:: Options for @TeX{} Processors @end menu @node Starting a Command @subsection Starting a Command on a Document or Region There are two ways to run an external command, you can either run it on the current document with @code{TeX-command-master}, or on the current region with @code{TeX-command-region}. A special case of running @TeX{} on a region is @code{TeX-command-buffer} which differs from @code{TeX-command-master} if the current buffer is not its own master file. @deffn Command TeX-command-master @kindex C-c C-c (@kbd{C-c C-c}) Query the user for a command, and run it on the master file associated with the current buffer. The name of the master file is controlled by the variable @code{TeX-master}. The available commands are controlled by the variable @code{TeX-command-list}. @vindex TeX-master @vindex TeX-command-list @end deffn @deffn Command TeX-command-region @kindex C-c C-r (@kbd{C-c C-r}) Query the user for a command, and run it on the contents of the selected region. The region contents are written into the region file, after extracting the header and trailer from the master file. If mark is inactive (which can happen with Transient Mark mode), use the old region. See also the command @code{TeX-pin-region} about how to fix a region. The name of the region file is controlled by the variable @code{TeX-region}. The name of the master file is controlled by the variable @code{TeX-master}. The header is all text up to the line matching the regular expression @code{TeX-header-end}. The trailer is all text from the line matching the regular expression @code{TeX-trailer-start}. The available commands are controlled by the variable @code{TeX-command-list}. @vindex TeX-region @vindex TeX-header-end @vindex TeX-trailer-start @vindex TeX-master @vindex TeX-command-list @end deffn @deffn Command TeX-command-buffer @kindex C-c C-b (@kbd{C-c C-b}) Query the user for a command, and apply it to the contents of the current buffer. The buffer contents are written into the region file, after extracting the header and trailer from the master file. The command is then actually run on the region file. See above for details. @end deffn @defopt TeX-region The name of the file for temporarily storing the text when formatting the current region. @end defopt @defopt TeX-header-end A regular expression matching the end of the header. By default, this is @samp{\begin@{document@}} in @LaTeX{} mode and @samp{%**end of header} in @TeX{} mode. @end defopt @defopt TeX-trailer-start A regular expression matching the start of the trailer. By default, this is @samp{\end@{document@}} in @LaTeX{} mode and @samp{\bye} in @TeX{} mode. @end defopt If you want to change the values of @code{TeX-header-end} and @code{TeX-trailer-start} you can do this for all files by setting the variables in a mode hook or per file by specifying them as file variables (@pxref{File Variables,,,emacs,The Emacs Editor}). @deffn Command TeX-pin-region @kindex C-c C-t C-r (@kbd{C-c C-t C-r}) If you don't have a mode like Transient Mark mode active, where marks get disabled automatically, the region would need to get properly set before each call to @code{TeX-command-region}. If you fix the current region with @kbd{C-c C-t C-r}, then it will get used for more commands even though mark and point may change. An explicitly activated mark, however, will always define a new region when calling @code{TeX-command-region}. @end deffn @AUCTeX{} will allow one process for each document, plus one process for the region file to be active at the same time. Thus, if you are editing @var{n} different documents, you can have @var{n} plus one processes running at the same time. If the last process you started was on the region, the commands described in @ref{Debugging} and @ref{Control} will work on that process, otherwise they will work on the process associated with the current document. @node Selecting a Command @subsection Selecting and Executing a Command Once you started the command selection with @kbd{C-c C-c}, @kbd{C-c C-s} or @kbd{C-c C-b} you will be prompted for the type of command. @AUCTeX{} will try to guess which command is appropriate in the given situation and propose it as default. Usually this is a processor like @samp{TeX} or @samp{LaTeX} if the document was changed or a viewer if the document was just typeset. Other commands can be selected in the minibuffer with completion support by typing @key{TAB}. @vindex TeX-command-list @vindex TeX-expand-list The available commands are defined by the variable @code{TeX-command-list}. Per default it includes commands for typesetting the document (e.g. @samp{LaTeX}), for viewing the output (@samp{View}), for printing (@samp{Print}), for generating an index (@samp{Index}) or for spell checking (@samp{Spell}) to name but a few. You can also add your own commands by adding entries to @code{TeX-command-list}. Refer to its doc string for information about its syntax. You might also want to look at @code{TeX-expand-list} to learn about the expanders you can use in @code{TeX-command-list}. Note that the default of the variable occasionally changes. Therefore it is advisable to add to the list rather than overwriting it. You can do this with a call to @code{add-to-list} in your init file. For example, if you wanted to add a command for running a program called @samp{foo} on the master or region file, you could do this with the following form. @lisp (eval-after-load "tex" '(add-to-list 'TeX-command-list '("Foo" "foo %s" TeX-run-command t t :help "Run foo") t)) @end lisp As mentioned before, @AUCTeX{} will try to guess what command you want to invoke. If you want to use another command than @samp{TeX}, @samp{LaTeX} or whatever processor @AUCTeX{} thinks is appropriate for the current mode, set the variable @code{TeX-command-default}. You can do this for all files by setting it in a mode hook or per file by specifying it as a file variable (@pxref{File Variables,,,emacs,The Emacs Editor}). @defopt TeX-command-default The default command to run in this buffer. Must be an entry in @code{TeX-command-list}. @end defopt @cindex Biber @cindex biblatex @vindex LaTeX-biblatex-use-Biber In case you use biblatex in a document, @AUCTeX{} switches from Bib@TeX{} to Biber for bibliography processing. In case you want to keep using Bib@TeX{}, set the variable @code{LaTeX-biblatex-use-Biber} to nil. After confirming a command to execute, @AUCTeX{} will try to save any buffers related to the document, and check if the document needs to be reformatted. If the variable @code{TeX-save-query} is non-nil, @AUCTeX{} will query before saving each file. By default @AUCTeX{} will check emacs buffers associated with files in the current directory, in one of the @code{TeX-macro-private} directories, and in the @code{TeX-macro-global} directories. You can change this by setting the variable @code{TeX-check-path}. @defopt TeX-check-path Directory path to search for dependencies. If nil, just check the current file. Used when checking if any files have changed. @end defopt @node Processor Options @subsection Options for @TeX{} Processors There are some options you can customize affecting which processors are invoked or the way this is done and which output they produce as a result. These options control if @acronym{DVI} or @acronym{PDF} output should be produced, if @TeX{} should be started in interactive or nonstop mode, if source specials or a Sync@TeX{} file should be produced for making inverse and forward search possible or which @TeX{} engine should be used instead of regular @TeX{}, like PDF@TeX{}, Omega or Xe@TeX{}. @deffn Command TeX-PDF-mode @kindex C-c C-t C-p @vindex TeX-PDF-mode @cindex PDF mode (@kbd{C-c C-t C-p}) This command toggles the @acronym{PDF} mode of @AUCTeX{}, a buffer-local minor mode. You can customize @code{TeX-PDF-mode} to give it a different default. The default is used when @AUCTeX{} does not have additional clue about what a document might want. This option usually results in calling either PDF@TeX{} or ordinary @TeX{}. @end deffn @defopt TeX-DVI-via-PDFTeX If this is set, @acronym{DVI} will also be produced by calling PDF@TeX{}, setting @code{\pdfoutput=0}. This makes it possible to use PDF@TeX{} features like character protrusion even when producing @acronym{DVI} files. Contemporary @TeX{} distributions do this anyway, so that you need not enable the option within @AUCTeX{}. @end defopt @deffn Command TeX-interactive-mode @kindex C-c C-t C-i @vindex TeX-interactive-mode (@kbd{C-c C-t C-i}) This command toggles the interactive mode of @AUCTeX{}, a global minor mode. You can customize @code{TeX-interactive-mode} to give it a different default. In interactive mode, @TeX{} will pause with an error prompt when errors are encountered and wait for the user to type something. @end deffn @cindex I/O correlation @cindex SyncTeX @cindex Source specials @cindex PDFSync @deffn Command TeX-source-correlate-mode @kindex C-c C-t C-s @vindex TeX-source-correlate-mode (@kbd{C-c C-t C-s}) Toggles support for forward and inverse search. Forward search refers to jumping to the place in the previewed document corresponding to where point is located in the document source and inverse search to the other way round. @xref{I/O Correlation}. You can permanently activate @code{TeX-source-correlate-mode} by customizing the variable @code{TeX-source-correlate-mode}. There is a bunch of customization options for the mode, use @kbd{M-x customize-group @key{RET} TeX-view @key{RET}} to find out more. @vindex TeX-source-correlate-method @AUCTeX{} is aware of three different means to do I/O correlation: source specials (only DVI output), the pdfsync @LaTeX{} package (only PDF output) and Sync@TeX{}. The choice between source specials and Sync@TeX{} can be controlled with the variable @code{TeX-source-correlate-method}. Should you use source specials it has to be stressed @emph{very} strongly however, that source specials can cause differences in page breaks and spacing, can seriously interfere with various packages and should thus @emph{never} be used for the final version of a document. In particular, fine-tuning the page breaks should be done with source specials switched off. @end deffn @AUCTeX{} also allows you to easily select different @TeX{} engines for processing, either by using the entries in the @samp{TeXing Options} submenu below the @samp{Command} menu or by calling the function @code{TeX-engine-set}. These eventually set the variable @code{TeX-engine} which you can also modify directly. @defopt TeX-engine This variable allows you to choose which @TeX{} engine should be used for typesetting the document, i.e. the executables which will be used when you invoke the @samp{TeX} or @samp{LaTeX} commands. The value should be one of the symbols defined in @code{TeX-engine-alist-builtin} or @code{TeX-engine-alist}. The symbols @samp{default}, @samp{xetex}, @samp{luatex} and @samp{omega} are available from the built-in list. @end defopt Note that @code{TeX-engine} is buffer-local, so setting the variable directly or via the above mentioned menu or function will not take effect in other buffers. If you want to activate an engine for all @AUCTeX{} modes, set @code{TeX-engine} in your init file, e.g. by using @kbd{M-x customize-variable }. If you want to activate it for a certain @AUCTeX{} mode only, set the variable in the respective mode hook. If you want to activate it for certain files, set it through file variables (@pxref{File Variables,,,emacs,The Emacs Editor}). @vindex TeX-command @vindex LaTeX-command @vindex TeX-Omega-command @vindex LaTeX-Omega-command @vindex ConTeXt-engine @vindex ConTeXt-Omega-engine @vindex TeX-engine-alist @vindex TeX-engine-alist-builtin Should you need to change the executable names related to the different engine settings, there are some variables you can tweak. Those are @code{TeX-command}, @code{LaTeX-command}, @code{TeX-Omega-command}, @code{LaTeX-Omega-command}, @code{ConTeXt-engine} and @code{ConTeXt-Omega-engine}. The rest of the executables is defined directly in @code{TeX-engine-alist-builtin}. If you want to override an entry from that, add an entry to @code{TeX-engine-alist} that starts with the same symbol as that the entry in the built-in list and specify the executables you want to use instead. You can also add entries to @code{TeX-engine-alist} in order to add support for engines not covered per default. @defopt TeX-engine-alist Alist of TeX engines and associated commands. Each entry is a list with a maximum of five elements. The first element is a symbol used to identify the engine. The second is a string describing the engine. The third is the command to be used for plain TeX. The fourth is the command to be used for LaTeX. The fifth is the command to be used for the @samp{--engine} parameter of ConTeXt's @samp{texexec} program. Each command can either be a variable or a string. An empty string or nil means there is no command available. @end defopt You can customize @AUCTeX{} to show the processor output as it is produced. @defopt TeX-show-compilation If non-nil, the output of @TeX{} compilation is shown in another window. @end defopt @node Viewing @section Viewing the Formatted Output @cindex Viewing @cindex Previewing @cindex Starting a previewer @AUCTeX{} allows you to start external programs for previewing the formatted output of your document. @menu * Starting Viewers:: Starting viewers * I/O Correlation:: Forward and inverse search @end menu @node Starting Viewers @subsection Starting Viewers Viewers are normally invoked by pressing @kbd{C-c C-c} once the document is formatted, which will propose the View command, or by activating the respective entry in the Command menu. Alternatively you can type @kbd{C-c C-v} which calls the function @code{TeX-view}. @deffn Command TeX-view @kindex C-c C-v (@kbd{C-c C-v}) Start a viewer without confirmation. The viewer is started either on a region or the master file, depending on the last command issued. This is especially useful for jumping to the location corresponding to point in the viewer when using @code{TeX-source-correlate-mode}. @end deffn @AUCTeX{} will try to guess which type of viewer (@acronym{DVI}, PostScript or @acronym{PDF}) has to be used and what options are to be passed over to it. This decision is based on the output files present in the working directory as well as the class and style options used in the document. For example, if there is a @acronym{DVI} file in your working directory, a @acronym{DVI} viewer will be invoked. In case of a @acronym{PDF} file it will be a @acronym{PDF} viewer. If you specified a special paper format like @samp{a5paper} or use the @samp{landscape} option, this will be passed to the viewer by the appropriate options. Especially some @acronym{DVI} viewers depend on this kind of information in order to display your document correctly. In case you are using @samp{pstricks} or @samp{psfrag} in your document, a @acronym{DVI} viewer cannot display the contents correctly and a PostScript viewer will be invoked instead. The association between the tests for the conditions mentioned above and the viewers is made in the variable @code{TeX-view-program-selection}. Therefore this variable is the starting point for customization if you want to use other viewers than the ones suggested by default. @defopt TeX-view-program-selection This is a list of predicates and viewers which is evaluated from front to back in order to find out which viewer to call under the given conditions. In the first element of each list item you can reference one or more predicates defined in @code{TeX-view-predicate-list} or @code{TeX-view-predicate-list-builtin}. In the second element you can reference a viewer defined in @code{TeX-view-program-list} or @code{TeX-view-program-list-builtin}. The viewer of the first item with a positively evaluated predicate is selected. @end defopt So @code{TeX-view-program-selection} only contains references to the actual implementations of predicates and viewer commands respectively which can be found elsewhere. @AUCTeX{} comes with a set of preconfigured predicates and viewer commands which are stored in the variables @code{TeX-view-predicate-list-builtin} and @code{TeX-view-program-list-builtin} respectively. If you are not satisfied with those and want to overwrite one of them or add your own definitions, you can do so via the variables @code{TeX-view-predicate-list} and @code{TeX-view-program-list}. @defopt TeX-view-predicate-list This is a list of predicates for viewer selection and invocation. The first element of each list item is a symbol and the second element a Lisp form to be evaluated. The form should return nil if the predicate is not fulfilled. A built-in predicate from @code{TeX-view-predicate-list-builtin} can be overwritten by defining a new predicate with the same symbol. @end defopt @defopt TeX-view-program-list This is a list of viewer specifications each consisting of a symbolic name and either a command line or a function to be invoked when the viewer is called. If a command line is used, parts of it can be conditionalized by prefixing them with predicates from @code{TeX-view-predicate-list} or @code{TeX-view-predicate-list-builtin}. (See the doc string for the exact format to use.) The command line can also contain placeholders as defined in @code{TeX-expand-list} which are expanded before the viewer is called. A built-in viewer spec from @code{TeX-view-program-list-builtin} can be overwritten by defining a new viewer spec with the same name. @end defopt Note that the viewer selection and invocation as described above will only work if certain default settings in @AUCTeX{} are intact. For one, the whole viewer selection machinery will only be triggered if the @samp{%V} expander in @code{TeX-expand-list} is unchanged. So if you have trouble with the viewer invocation you might check if there is an older customization of the variable in place. In addition, the use of a function in @code{TeX-view-program-list} only works if the View command in @code{TeX-command-list} makes use of the hook @code{TeX-run-discard-or-function}. Note also that the implementation described above replaces an older one which was less flexible. This old implementation works with the variables @code{TeX-output-view-style} and @code{TeX-view-style} which are used to associate file types and style options with viewers. If desired you can reactivate it by using the placeholder @samp{%vv} for the View command in @code{TeX-command-list}. Note however, that it is bound to be removed from @AUCTeX{} once the new implementation proved to be satisfactory. For the time being, find a short description of the mentioned customization options below. @defopt TeX-output-view-style List of output file extensions, style options and view options. Each item of the list consists of three elements. If the first element (a regular expression) matches the output file extension, and the second element (a regular expression) matches the name of one of the style options, any occurrence of the string @code{%V} in a command in @code{TeX-command-list} will be replaced with the third element. @end defopt @defopt TeX-view-style List of style options and view options. This is the predecessor of @code{TeX-output-view-style} which does not provide the possibility to specify output file extensions. It is used as a fallback in case none of the alternatives specified in @code{TeX-output-view-style} match. In case none of the entries in @code{TeX-view-style} match either, no suggestion for a viewer is made. @end defopt @node I/O Correlation @subsection Forward and Inverse Search @cindex Inverse search @cindex Forward search @cindex I/O correlation @cindex Source specials @cindex SyncTeX @cindex PDFSync Forward and inverse search refer to the correlation between the document source in the editor and the typeset document in the viewer. Forward search allows you to jump to the place in the previewed document corresponding to a certain line in the document source and inverse search vice versa. @findex TeX-source-correlate-mode @AUCTeX{} supports three methods for forward and inverse search: source specials (only DVI output), the pdfsync @LaTeX{} package (only PDF output) and Sync@TeX{} (any type of output). If you want to make use of forward and inverse searching with source specials or Sync@TeX{}, switch on @code{TeX-source-correlate-mode}. @xref{Processor Options}, on how to do that. The use of the pdfsync package is detected automatically if document parsing is enabled. @findex TeX-view Forward search happens automatically upon calling the viewer, e.g. by typing @kbd{C-c C-v} (@code{TeX-view}). This will open the viewer or bring it to front and display the output page corresponding to the position of point in the source file. @AUCTeX{} will automatically pass the necessary command line options to the viewer for this to happen. @vindex TeX-source-correlate-start-server Upon opening the viewer you will be asked if you want to start a server process (Gnuserv or Emacs server) which is necessary for inverse search. This happens only if there is no server running already. You can customize the variable @code{TeX-source-correlate-start-server} to inhibit the question and always or never start the server respectively. @defopt TeX-source-correlate-start-server If @code{TeX-source-correlate-mode} is active and a viewer is invoked, the default behavior is to ask if a server process should be started. Set this variable to @code{t} if the question should be inhibited and the server should always be started. Set it to @code{nil} if the server should never be started. Inverse search will not be available in the latter case. @end defopt Inverse search, i.e. jumping to the part of your document source in Emacs corresponding to a certain position in the viewer, is triggered from the viewer, typically by a mouse click. Refer to the documentation of your viewer to find out how it has to be configured and what you have to do exactly. In xdvi you normally have to use @kbd{C-down-mouse-1}. @node Debugging @section Catching the errors @cindex Debugging @cindex Errors @cindex Parsing errors @cindex Parsing TeX output @cindex Next error @cindex Parsing @LaTeX{} errors @cindex Overfull boxes @cindex Bad boxes @cindex Underfull boxes Once you've formatted your document you may `debug' it, i.e. browse through the errors (La)@TeX{} reported. @deffn Command TeX-next-error @kindex C-c ` (@kbd{C-c `}) Go to the next error reported by @TeX{}. The view will be split in two, with the cursor placed as close as possible to the error in the top view. In the bottom view, the error message will be displayed along with some explanatory text. @end deffn Normally @AUCTeX{} will only report real errors, but you may as well ask it to report `bad boxes' and warnings as well. @deffn Command TeX-toggle-debug-bad-boxes @kindex C-c C-t C-b (@kbd{C-c C-t C-b}) Toggle whether @AUCTeX{} should stop at bad boxes (i.e. overfull and underfull boxes) as well as normal errors. @end deffn @deffn Command TeX-toggle-debug-warnings @kindex C-c C-t C-w (@kbd{C-c C-t C-w}) Toggle whether @AUCTeX{} should stop at warnings as well as normal errors. @end deffn As default, @AUCTeX{} will display a special help buffer containing the error reported by @TeX{} along with the documentation. There is however an `expert' option, which allows you to display the real @TeX{} output. @defopt TeX-display-help If t @AUCTeX{} will automatically display a help text whenever an error is encountered using @code{TeX-next-error} (@kbd{C-c `}). If nil a terse information about the error is displayed in the echo area. If @code{expert} @AUCTeX{} will display the output buffer with the raw @TeX{} output. @end defopt @node Checking @section Checking for problems @cindex Checking @cindex @code{lacheck} @cindex @code{chktex} @cindex Finding errors @cindex Running @code{lacheck} @cindex Running @code{chktex} @cindex Style @cindex Problems Running @TeX{} or @LaTeX{} will only find regular errors in the document, not examples of bad style. Furthermore, description of the errors may often be confusing. The utility @code{lacheck} can be used to find style errors, such as forgetting to escape the space after an abbreviation or using @samp{...} instead of @samp{\ldots} and many other problems like that. You start @code{lacheck} with @kbd{C-c C-c Check @key{RET}}. The result will be a list of errors in the @samp{*compilation*} buffer. You can go through the errors with @kbd{C-x `} (@code{next-error}, @pxref{Compilation,,,emacs,The Emacs Editor}), which will move point to the location of the next error. Another newer program which can be used to find errors is @code{chktex}. It is much more configurable than @code{lacheck}, but doesn't find all the problems @code{lacheck} does, at least in its default configuration. You must install the programs before using them, and for @code{chktex} you may also need modify @code{TeX-command-list} unless you use its @code{lacheck} compatibility wrapper. You can get @code{lacheck} from @file{} or alternatively @code{chktex} from @file{}. @node Control @section Controlling the output @cindex Controlling the output @cindex Output @cindex Redisplay output @cindex Processes @cindex Killing a process @cindex Finding the master file @cindex Master file @cindex Stopping a process @cindex Current file @cindex Finding the current file A number of commands are available for controlling the output of an application running under @AUCTeX{} @deffn Command TeX-kill-job @kindex C-c C-k (@kbd{C-c C-k}) Kill currently running external application. This may be either of @TeX{}, @LaTeX{}, previewer, Bib@TeX{}, etc. @end deffn @deffn Command TeX-recenter-output-buffer @kindex C-c C-l (@kbd{C-c C-l}) Recenter the output buffer so that the bottom line is visible. @end deffn @deffn Command TeX-home-buffer @kindex C-c ^ (@kbd{C-c ^}) Go to the `master' file in the document associated with the current buffer, or if already there, to the file where the current process was started. @end deffn @node Cleaning @section Cleaning intermediate and output files @cindex Cleaning @deffn Command TeX-clean @vindex plain-TeX-clean-intermediate-suffixes @vindex plain-TeX-clean-output-suffixes @vindex LaTeX-clean-intermediate-suffixes @vindex LaTeX-clean-output-suffixes @vindex docTeX-clean-intermediate-suffixes @vindex docTeX-clean-output-suffixes @vindex Texinfo-clean-intermediate-suffixes @vindex Texinfo-clean-output-suffixes @vindex ConTeXt-clean-intermediate-suffixes @vindex ConTeXt-clean-output-suffixes Remove generated intermediate files. In case a prefix argument is given, remove output files as well. Canonical access to the function is provided by the @samp{Clean} and @samp{Clean All} entries in @code{TeX-command-list}, invokable with @kbd{C-c C-c} or the Command menu. The patterns governing which files to remove can be adapted separately for each @AUCTeX{} mode by means of the variables @code{plain-TeX-clean-intermediate-suffixes}, @code{plain-TeX-clean-output-suffixes}, @code{LaTeX-clean-intermediate-suffixes}, @code{LaTeX-clean-output-suffixes}, @code{docTeX-clean-intermediate-suffixes}, @code{docTeX-clean-output-suffixes}, @code{Texinfo-clean-intermediate-suffixes}, @code{Texinfo-clean-output-suffixes}, @code{ConTeXt-clean-intermediate-suffixes} and @code{ConTeXt-clean-output-suffixes}. @end deffn @defopt TeX-clean-confirm Control if deletion of intermediate and output files has to be confirmed before it is actually done. If non-nil, ask before deleting files. @end defopt @node Documentation @section Documentation about macros and packages @cindex Documentation @deffn Command TeX-doc @kindex C-c ? (@kbd{C-c ?}) Get documentation about macros, packages or @TeX{} & Co. in general. The function will prompt for the name of a command or manual, providing a list of available keywords for completion. If point is on a command or word with available documentation, this will be suggested as default. In case no documentation could be found, a prompt for querying the @samp{texdoc} program is shown, should the latter be available. The command can be invoked by the key binding mentioned above as well as the @samp{Find Documentation...} entry in the mode menu. @end deffn @node Customization @chapter Customization and Extension @menu * Modes and Hooks:: Modes and Hooks * Multifile:: Multifile Documents * Parsing Files:: Automatic Parsing of @TeX{} Files * Internationalization:: Language Support * Automatic:: Automatic Customization * Style Files:: Writing Your Own Style Support @end menu @node Modes and Hooks @section Modes and Hooks @AUCTeX{} supports a wide variety of derivatives and extensions of @TeX{}. Besides plain @TeX{} those are @LaTeX{}, AMS-@TeX{}, @ConTeXt{}, Texinfo and doc@TeX{}. For each of them there is a separate major mode in @AUCTeX{} and each major mode runs @code{text-mode-hook}, @code{TeX-mode-hook} as well as a hook special to the mode in this order. The following table provides an overview of the respective mode functions and hooks. @multitable {Plain @TeX{}} {@code{plain-TeX-mode}} {@code{plain-TeX-mode-hook}} @headitem Type @tab Mode function @tab Hook @item Plain @TeX{} @tab @code{plain-TeX-mode} @tab @code{plain-TeX-mode-hook} @item @LaTeX{} @tab @code{LaTeX-mode} @tab @code{LaTeX-mode-hook} @item AMS-@TeX{} @tab @code{ams-tex-mode} @tab @code{AmS-TeX-mode-hook} @item @ConTeXt{} @tab @code{ConTeXt-mode} @tab @code{ConTeXt-mode-hook} @item Texinfo @tab @code{Texinfo-mode} @tab @code{Texinfo-mode-hook} @item Doc@TeX{} @tab @code{docTeX-mode} @tab @code{docTeX-mode-hook} @end multitable If you need to make a customization via a hook which is only relevant for one of the modes listed above, put it into the respective mode hook, if it is relevant for any @AUCTeX{} mode, add it to @code{TeX-mode-hook} and if it is relevant for all text modes, append it to @code{text-mode-hook}. @node Multifile @section Multifile Documents @cindex Multifile Documents @cindex Documents @cindex Documents with multiple files @cindex Multiple Files @cindex Many Files @cindex Including @cindex \include @cindex Inputing @cindex \input @cindex Master file You may wish to spread a document over many files (as you are likely to do if there are multiple authors, or if you have not yet discovered the power of the outline commands (@pxref{Outline})). This can be done by having a ``master'' file in which you include the various files with the @TeX{} macro @samp{\input} or the @LaTeX{} macro @samp{\include}. These files may also include other files themselves. However, to format the document you must run the commands on the top level master file. When you, for example, ask @AUCTeX{} to run a command on the master file, it has no way of knowing the name of the master file. By default, it will assume that the current file is the master file. If you insert the following in your @file{.emacs} file @AUCTeX{} will use a more advanced algorithm. @lisp (setq-default TeX-master nil) ; Query for master file. @end lisp If @AUCTeX{} finds the line indicating the end of the header in a master file (@code{TeX-header-end}), it can figure out for itself that this is a master file. Otherwise, it will ask for the name of the master file associated with the buffer. To avoid asking you again, @AUCTeX{} will automatically insert the name of the master file as a file variable (@pxref{File Variables,,,emacs,The Emacs Editor}). You can also insert the file variable yourself, by putting the following text at the end of your files. @findex TeX-header-end @example %%% Local Variables: %%% TeX-master: "master" %%% End: @end example You should always set this variable to the name of the top level document. If you always use the same name for your top level documents, you can set @code{TeX-master} in your @file{.emacs} file. @lisp (setq-default TeX-master "master") ; All master files called "master". @end lisp @defopt TeX-master The master file associated with the current buffer. If the file being edited is actually included from another file, then you can tell @AUCTeX{} the name of the master file by setting this variable. If there are multiple levels of nesting, specify the top level file. If this variable is @code{nil}, @AUCTeX{} will query you for the name. If the variable is @code{t}, then @AUCTeX{} will assume the file is a master file itself. If the variable is @code{shared}, then @AUCTeX{} will query for the name, but will not change the file. @end defopt @defopt TeX-one-master Regular expression matching ordinary @TeX{} files. You should set this variable to match the name of all files, for which it is a good idea to append a @code{TeX-master} file variable entry automatically. When @AUCTeX{} adds the name of the master file as a file variable, it does not need to ask next time you edit the file. If you dislike @AUCTeX{} automatically modifying your files, you can set this variable to @samp{""}. By default, @AUCTeX{} will modify any file with an extension of @samp{.tex}. @end defopt @deffn Command TeX-master-file-ask @kindex C-c _ (@kbd{C-c _}) Query for the name of a master file and add the respective File Variables (@pxref{File Variables,,,emacs,The Emacs Editor}) to the file for setting this variable permanently. @AUCTeX{} will not ask for a master file when it encounters existing files. This function shall give you the possibility to insert the variable manually. @end deffn @AUCTeX{} keeps track of macros, environments, labels, and style files that are used in a given document. For this to work with multifile documents, @AUCTeX{} has to have a place to put the information about the files in the document. This is done by having an @file{auto} subdirectory placed in the directory where your document is located. Each time you save a file, @AUCTeX{} will write information about the file into the @file{auto} directory. When you load a file, @AUCTeX{} will read the information in the @file{auto} directory about the file you loaded @emph{and the master file specified by @code{TeX-master}}. Since the master file (perhaps indirectly) includes all other files in the document, @AUCTeX{} will get information from all files in the document. This means that you will get from each file, for example, completion for all labels defined anywhere in the document. @AUCTeX{} will create the @file{auto} directory automatically if @code{TeX-auto-save} is non-nil. Without it, the files in the document will not know anything about each other, except for the name of the master file. @xref{Automatic Local}. @deffn Command TeX-save-document @kindex C-c C-d (@kbd{C-c C-d}) Save all buffers known to belong to the current document. @end deffn @defopt TeX-save-query If non-nil, then query the user before saving each file with @code{TeX-save-document}. @end defopt @node Parsing Files @section Automatic Parsing of @TeX{} Files @cindex Parsing @TeX{} @cindex Automatic Parsing @cindex Tabs @cindex Tabify @cindex Untabify @AUCTeX{} depends heavily on being able to extract information from the buffers by parsing them. Since parsing the buffer can be somewhat slow, the parsing is initially disabled. You are encouraged to enable them by adding the following lines to your @file{.emacs} file. @lisp (setq TeX-parse-self t) ; Enable parse on load. (setq TeX-auto-save t) ; Enable parse on save. @end lisp The latter command will make @AUCTeX{} store the parsed information in an @file{auto} subdirectory in the directory each time the @TeX{} files are stored, @pxref{Automatic Local}. If @AUCTeX{} finds the pre-parsed information when loading a file, it will not need to reparse the buffer. The information in the @file{auto} directory is also useful for multifile documents, @pxref{Multifile}, since it allows each file to access the parsed information from all the other files in the document. This is done by first reading the information from the master file, and then recursively the information from each file stored in the master file. The variables can also be done on a per file basis, by changing the file local variables. @example %%% Local Variables: %%% TeX-parse-self: t %%% TeX-auto-save: t %%% End: @end example Even when you have disabled the automatic parsing, you can force the generation of style information by pressing @kbd{C-c C-n}. This is often the best choice, as you will be able to decide when it is necessary to reparse the file. @defopt TeX-parse-self Parse file after loading it if no style hook is found for it. @end defopt @defopt TeX-auto-save Automatically save style information when saving the buffer. @end defopt @deffn Command TeX-normal-mode @var{arg} @kindex C-c C-n (@kbd{C-c C-n}) Remove all information about this buffer, and apply the style hooks again. Save buffer first including style information. With optional argument, also reload the style hooks. @end deffn When @AUCTeX{} saves your buffer, it can optionally convert all tabs in your buffer into spaces. Tabs confuse @AUCTeX{}'s error message parsing and so should generally be avoided. However, tabs are significant in some environments, and so by default @AUCTeX{} does not remove them. To convert tabs to spaces when saving a buffer, insert the following in your @file{.emacs} file: @lisp (setq TeX-auto-untabify t) @end lisp @defopt TeX-auto-untabify Automatically remove all tabs from a file before saving it. @end defopt Instead of disabling the parsing entirely, you can also speed it significantly up by limiting the information it will search for (and store) when parsing the buffer. You can do this by setting the default values for the buffer local variables @code{TeX-auto-regexp-list} and @code{TeX-auto-parse-length} in your @file{.emacs} file. @lisp ;; Only parse LaTeX class and package information. (setq-default TeX-auto-regexp-list 'LaTeX-auto-minimal-regexp-list) ;; The class and package information is usually near the beginning. (setq-default TeX-auto-parse-length 2000) @end lisp This example will speed the parsing up significantly, but @AUCTeX{} will no longer be able to provide completion for labels, macros, environments, or bibitems specified in the document, nor will it know what files belong to the document. These variables can also be specified on a per file basis, by changing the file local variables. @example %%% Local Variables: %%% TeX-auto-regexp-list: TeX-auto-full-regexp-list %%% TeX-auto-parse-length: 999999 %%% End: @end example @defopt TeX-auto-regexp-list List of regular expressions used for parsing the current file. @end defopt @defopt TeX-auto-parse-length Maximal length of @TeX{} file that will be parsed. @end defopt The pre-specified lists of regexps are defined below. You can use these before loading @AUCTeX{} by quoting them, as in the example above. @defvr Constant TeX-auto-empty-regexp-list Parse nothing @end defvr @defvr Constant LaTeX-auto-minimal-regexp-list Only parse @LaTeX{} class and packages. @end defvr @defvr Constant LaTeX-auto-label-regexp-list Only parse @LaTeX{} labels. @end defvr @defvr Constant LaTeX-auto-regexp-list Parse common @LaTeX{} commands. @end defvr @defvr Constant plain-TeX-auto-regexp-list Parse common plain @TeX{} commands. @end defvr @defvr Constant TeX-auto-full-regexp-list Parse all @TeX{} and @LaTeX{} commands that @AUCTeX{} can use. @end defvr @node Internationalization @section Language Support @cindex Internationalization @cindex Language Support @cindex Character set @cindex National letters @cindex CJK language @cindex MULE @cindex C@TeX{} @cindex China@TeX{} @cindex p@TeX{} @cindex ASCII p@TeX{} @cindex j@TeX{} @cindex NTT j@TeX{} @cindex k@TeX{} @cindex H@LaTeX{} @cindex CJK-@LaTeX{} @cindex UNICODE @cindex MULE-UCS @TeX{} and Emacs are usable for European (Latin, Cyrillic, Greek) based languages. Some @LaTeX{} and EmacsLisp packages are available for easy typesetting and editing documents in European languages. @c Some Texinfo macros are not used because they require quite recent @c texinfo versions (2005-03-05): @c Second arg of @acronym is available with 4.7, @comma is available in @c 4.7, @abbr is available in 4.8. @c -> @abbr{MULE, MULtilingual Enhancement to GNU Emacs} @c -> @acronym{CJK, Chinese@comma{} Japanese@comma{} and Korean} For @acronym{CJK} (Chinese, Japanese, and Korean) languages, Emacs or XEmacs with @acronym{MULE} (MULtilingual Enhancement to GNU Emacs) support is required. @acronym{MULE} is part of Emacs by default since Emacs 20. XEmacs has to be configured with the @samp{--with-mule} option. Special versions of @TeX{} are needed for @acronym{CJK} languages: C@TeX{} and China@TeX{} for Chinese, ASCII p@TeX{} and NTT j@TeX{} for Japanese, H@LaTeX{} and k@TeX{} for Korean. The @acronym{CJK}-@LaTeX{} package is required for supporting multiple @acronym{CJK} scripts within a single document. Note that Unicode is not fully supported in Emacs 21 and XEmacs 21. @acronym{CJK} characters are not usable. Please use the @acronym{MULE}-@acronym{UCS} EmacsLisp package or Emacs 22 (not released yet) if you need @acronym{CJK}. @c FIXME: We need more information for CTeX, ChinaTeX, KTeX, and HLaTeX. @menu * European:: Using @AUCTeX{} with European Languages * Japanese:: Using @AUCTeX{} with Japanese @end menu @node European @subsection Using @AUCTeX{} with European Languages @cindex Europe @cindex European Characters @cindex ISO 8859 Latin 1 @cindex Latin 1 @cindex ISO 8859 Latin 2 @cindex Latin 2 @cindex ANSI @subsubsection Typing and Displaying Non-ASCII Characters First you will need a way to write non-ASCII characters. You can either use macros, or teach @TeX{} about the ISO character sets. I prefer the latter, it has the advantage that the usual standard emacs word movement and case change commands will work. With @LaTeX{}2e, just add @samp{\usepackage[latin1]@{inputenc@}}. Other languages than Western European ones will probably have other encoding needs. To be able to display non-ASCII characters you will need an appropriate font and a version of GNU Emacs capable of displaying 8-bit characters (e.g. Emacs 21). The manner in which this is supported differs between Emacsen, so you need to take a look at your respective documentation. A compromise is to use an European character set when editing the file, and convert to @TeX{} macros when reading and writing the files. @table @file @item iso-cvt.el @cindex @file{iso-cvt.el} Much like @file{iso-tex.el} but is bundled with Emacs 19.23 and later. @item x-compose.el @cindex @file{x-compose.el} Similar package bundled with new versions of XEmacs. @item X-Symbol @cindex X-Symbol a much more complete package for both Emacs and XEmacs that can also handle a lot of mathematical characters and input methods. @end table @subsubsection Style Files for Different Languages @cindex ispell @AUCTeX{} supports style files for several languages. Each style file may modify @AUCTeX{} to better support the language, and will run a language specific hook that will allow you to for example change ispell dictionary, or run code to change the keyboard remapping. The following will for example choose a Danish dictionary for documents including @samp{\usepackage[danish]@{babel@}}. This requires parsing to be enabled, @pxref{Parsing Files}. @lisp (add-hook 'TeX-language-dk-hook (lambda () (ispell-change-dictionary "danish"))) @end lisp The following style files are recognized: @c In alphabetic order of the hooks: @vindex TeX-language-bg-hook @vindex TeX-language-cz-hook @vindex TeX-language-dk-hook @vindex TeX-language-nl-hook @vindex TeX-language-de-hook @vindex TeX-language-it-hook @vindex TeX-language-is-hook @vindex TeX-language-pl-hook @vindex TeX-language-sk-hook @vindex TeX-language-sv-hook @cindex Bulgarian @cindex Czech @cindex Italian @cindex Danish @cindex Dutch @cindex German @cindex Polish @cindex Slovak @cindex Swedish @table @file @item bulgarian Runs style hook @code{TeX-language-bg-hook}. Gives @samp{"} word syntax, makes the @key{"} key insert a literal @samp{"}. Typing @key{"} twice will insert insert @samp{"`} or @samp{"'} depending on context. Typing @key{-} twice will insert @samp{"=}, three times @samp{--}. @item czech Runs style hook @code{TeX-language-cz-hook}. Pressing @key{"} will insert @samp{\uv@{} and @samp{@}} depending on context. @c Is the difference between dk and danish really intented? @item danish Runs style hook @code{TeX-language-dk-hook}. Pressing @key{"} will insert @samp{"`} and @samp{"'} depending on context. Typing @key{-} twice will insert @samp{"=}, i.e. a hyphen string allowing hyphenation in the composing words. @c dk.sty seems to be obsolete, so we don't want to encourage using it. @c @item dk @c Runs style hook @code{TeX-language-dk-hook}. @item dutch Runs style hook @code{TeX-language-nl-hook}. @item german @itemx ngerman Runs style hook @code{TeX-language-de-hook}. Gives @samp{"} word syntax, makes the @key{"} key insert a literal @samp{"}. Pressing the key twice will give you opening or closing German quotes (@samp{"`} or @samp{"'}). Typing @key{-} twice will insert @samp{"=}, three times @samp{--}. @item frenchb @itemx francais Runs style hook @code{TeX-language-fr-hook}. Pressing @key{"} will insert @samp{\\og} and @samp{\\fg} depending on context. Note that the language name for customizing @code{TeX-quote-language-alist} is @samp{french}. @item icelandic Runs style hook @code{TeX-language-is-hook}. Gives @samp{"} word syntax, makes the @key{"} key insert a literal @samp{"}. Typing @key{"} twice will insert insert @samp{"`} or @samp{"'} depending on context. Typing @key{-} twice will insert @samp{"=}, three times @samp{--}. @item italian Runs style hook @code{TeX-language-it-hook}. Pressing @key{"} will insert @samp{"<} and @samp{">} depending on context. @item polish Runs style hook @code{TeX-language-pl-hook}. Gives @samp{"} word syntax and makes the @key{"} key insert a literal @samp{"}. Pressing @key{"} twice will insert @samp{"`} or @samp{"'} depending on context. @item polski Runs style hook @code{TeX-language-pl-hook}. Makes the @key{"} key insert a literal @samp{"}. Pressing @key{"} twice will insert @samp{,,} or @samp{''} depending on context. @item slovak Runs style hook @code{TeX-language-sk-hook}. Pressing @key{"} will insert @samp{\uv@{} and @samp{@}} depending on context. @item swedish Runs style hook @code{TeX-language-sv-hook}. Pressing @key{"} will insert @samp{''}. Typing @key{-} twice will insert @samp{"=}, three times @samp{--}. @end table Replacement of language-specific hyphen strings like @samp{"=} with dashes does not require to type @key{-} three times in a row. You can put point after the hypen string anytime and trigger the replacement by typing @key{-}. In case you are not satisfied with the suggested behavior of quote and hyphen insertion you can change it by customizing the variables @code{TeX-quote-language-alist} and @code{LaTeX-babel-hyphen-language-alist} respectively. @defopt TeX-quote-language-alist Used for overriding the default language-specific quote insertion behavior. This is an alist where each element is a list consisting of four items. The first item is the name of the language in concern as a string. See the list of supported languages above. The second item is the opening quotation mark. The third item is the closing quotation mark. Opening and closing quotation marks can be specified directly as strings or as functions returning a string. The fourth item is a boolean controlling quote insertion. It should be non-nil if if the special quotes should only be used after inserting a literal @samp{"} character first, i.e. on second key press. @end defopt @defopt LaTeX-babel-hyphen-language-alist Used for overriding the behavior of hyphen insertion for specific languages. Every element in this alist is a list of three items. The first item should specify the affected language as a string. The second item denotes the hyphen string to be used as a string. The third item, a boolean, controls the behavior of hyphen insertion and should be non-nil if the special hyphen should be inserted after inserting a literal @samp{-} character, i.e. on second key press. @end defopt The defaults of hyphen insertion are defined by the variables @code{LaTeX-babel-hyphen} and @code{LaTeX-babel-hyphen-after-hyphen} respectively. @defopt LaTeX-babel-hyphen String to be used when typing @key{-}. This usually is a hyphen alternative or hyphenation aid provided by @samp{babel} and the related language style files, like @samp{"=}, @samp{"~} or @samp{"-}. Set it to an empty string or nil in order to disable language-specific hyphen insertion. @end defopt @defopt LaTeX-babel-hyphen-after-hyphen Control insertion of hyphen strings. If non-nil insert normal hyphen on first key press and swap it with the language-specific hyphen string specified in the variable @code{LaTeX-babel-hyphen} on second key press. If nil do it the other way round. @end defopt @node Japanese @subsection Using @AUCTeX{} with Japanese @TeX{} @cindex Japan @cindex Japanese @cindex Nippon @cindex MULE @cindex NTT j@TeX{} @cindex j@TeX{} @cindex j@LaTeX{} @cindex ASCII p@TeX{} @cindex p@TeX{} @cindex p@LaTeX{} @cindex @file{tex-jp.el} @vindex TeX-default-mode @vindex japanese-TeX-command-default @vindex japanese-LaTeX-command-default @vindex japanese-LaTeX-default-style To write Japanese text with @AUCTeX{}, you need to have versions of @TeX{} and Emacs that support Japanese. There exist at least two variants of @TeX{} for Japanese text (NTT j@TeX{} and ASCII p@TeX{}). @AUCTeX{} can be used with @acronym{MULE, MULtilingual Enhancement to GNU Emacs} supported Emacsen. To use the Japanese @TeX{} variants, simply activate @code{japanese-plain-tex-mode} or @code{japanese-latex-mode} and everything should work. If not, send mail to Masayuki Ataka @samp{}, who kindly donated the code for supporting Japanese in @AUCTeX{}. None of the primary @AUCTeX{} maintainers understand Japanese, so they cannot help you. If you usually use @AUCTeX{} in Japanese, setting the following variables is useful. @defopt TeX-default-mode Mode to enter for a new file when it cannott be determined whether the file is plain @TeX{} or @LaTeX{} or what. If you want to enter Japanese @LaTeX{} mode whenever this may happen, set the variable like this: @lisp (setq TeX-default-mode 'japanese-latex-mode) @end lisp @end defopt @defopt japanese-TeX-command-default The default command for @code{TeX-command} in Japanese @TeX{} mode. The default value is @samp{"pTeX"}. @end defopt @defopt japanese-LaTeX-command-default The default command for @code{TeX-command} in Japanese @LaTeX{} mode. The default value is @samp{"LaTeX"}. @end defopt @defopt japanese-LaTeX-default-style The default style/class when creating a new Japanese @LaTeX{} document. The default value is @samp{"jarticle"}. @end defopt See @file{tex-jp.el} for more information. @node Automatic @section Automatic Customization @cindex Automatic Customization @cindex Extracting @TeX{} symbols @cindex Automatic @cindex @file{auto} directories. @cindex Parsing @TeX{} @cindex @TeX{} parsing @cindex Generating symbols Since @AUCTeX{} is so highly customizable, it makes sense that it is able to customize itself. The automatic customization consists of scanning @TeX{} files and extracting symbols, environments, and things like that. The automatic customization is done on three different levels. The global level is the level shared by all users at your site, and consists of scanning the standard @TeX{} style files, and any extra styles added locally for all users on the site. The private level deals with those style files you have written for your own use, and use in different documents. You may have a @file{~/lib/TeX/} directory where you store useful style files for your own use. The local level is for a specific directory, and deals with writing customization for the files for your normal @TeX{} documents. If compared with the environment variable @code{TEXINPUTS}, the global level corresponds to the directories built into @TeX{}. The private level corresponds to the directories you add yourself, except for @file{.}, which is the local level. @menu * Automatic Global:: Automatic Customization for the Site * Automatic Private:: Automatic Customization for a User * Automatic Local:: Automatic Customization for a Directory @end menu By default @AUCTeX{} will search for customization files in all the global, private, and local style directories, but you can also set the path directly. This is useful if you for example want to add another person's style hooks to your path. Please note that all matching files found in @code{TeX-style-path} are loaded, and all hooks defined in the files will be executed. @defopt TeX-style-path List of directories to search for @AUCTeX{} style files. Each must end with a slash. @end defopt By default, when @AUCTeX{} searches a directory for files, it will recursively search through subdirectories. @defopt TeX-file-recurse Whether to search @TeX{} directories recursively: nil means do not recurse, a positive integer means go that far deep in the directory hierarchy, t means recurse indefinitely. @end defopt By default, @AUCTeX{} will ignore files named @file{.}, @file{..}, @file{SCCS}, @file{RCS}, and @file{CVS}. @defopt TeX-ignore-file Regular expression matching file names to ignore. These files or directories will not be considered when searching for @TeX{} files in a directory. @end defopt @node Automatic Global @subsection Automatic Customization for the Site @cindex Global style hook directory @cindex Global macro directory @cindex Site macro directory @cindex Global @TeX{} macro directory @cindex Site @TeX{} macro directory @cindex Global directories @cindex Site information Assuming that the automatic customization at the global level was done when @AUCTeX{} was installed, your choice is now: will you use it? If you use it, you will benefit by having access to all the symbols and environments available for completion purposes. The drawback is slower load time when you edit a new file and perhaps too many confusing symbols when you try to do a completion. You can disable the automatic generated global style hooks by setting the variable @code{TeX-auto-global} to nil. @defopt TeX-macro-global Directories containing the site's @TeX{} style files. @end defopt @defopt TeX-style-global Directory containing hand generated @TeX{} information. Must end with a slash. These correspond to @TeX{} macros shared by all users of a site. @end defopt @defopt TeX-auto-global Directory containing automatically generated information. For storing automatic extracted information about the @TeX{} macros shared by all users of a site. @end defopt @node Automatic Private @subsection Automatic Customization for a User @cindex Private style hook directory @cindex Private macro directory @cindex Personal macro directory @cindex Private @TeX{} macro directory @cindex Personal @TeX{} macro directory @cindex Private directories @cindex Personal information You should specify where you store your private @TeX{} macros, so @AUCTeX{} can extract their information. The extracted information will go to the directories listed in @code{TeX-auto-private} Use @kbd{M-x TeX-auto-generate @key{RET}} to extract the information. @defopt TeX-macro-private Directories where you store your personal @TeX{} macros. The value defaults to the directories listed in the @samp{TEXINPUTS} and @samp{BIBINPUTS} environment variables or to the respective directories in @code{$TEXMFHOME} if no results can be obtained from the environment variables. @end defopt @defopt TeX-auto-private List of directories containing automatically generated @AUCTeX{} style files. These correspond to the personal @TeX{} macros. @end defopt @deffn Command TeX-auto-generate @var{TEX} @var{AUTO} (@kbd{M-x TeX-auto-generate @key{RET}}) Generate style hook for @var{TEX} and store it in @var{AUTO}. If @var{TEX} is a directory, generate style hooks for all files in the directory. @end deffn @defopt TeX-style-private List of directories containing hand generated @AUCTeX{} style files. These correspond to the personal @TeX{} macros. @end defopt @node Automatic Local @subsection Automatic Customization for a Directory @cindex Local style hooks @cindex Updating style hooks @cindex Automatic updating style hooks @cindex Local style hooks @cindex Local style directory @AUCTeX{} can update the style information about a file each time you save it, and it will do this if the directory @code{TeX-auto-local} exist. @code{TeX-auto-local} is by default set to @samp{"auto"}, so simply creating an @file{auto} directory will enable automatic saving of style information. The advantage of doing this is that macros, labels, etc. defined in any file in a multifile document will be known in all the files in the document. The disadvantage is that saving will be slower. To disable, set @code{TeX-auto-local} to nil. @defopt TeX-style-local Directory containing hand generated @TeX{} information. Must end with a slash. These correspond to @TeX{} macros found in the current directory. @end defopt @defopt TeX-auto-local Directory containing automatically generated @TeX{} information. Must end with a slash. These correspond to @TeX{} macros found in the current directory. @end defopt @node Style Files @section Writing Your Own Style Support @cindex Style files @cindex Style hooks @cindex @file{style} @xref{Automatic}, for a discussion about automatically generated global, private, and local style files. The hand generated style files are equivalent, except that they by default are found in @file{style} directories instead of @file{auto} directories. @menu * Simple Style:: A Simple Style File * Adding Macros:: Adding Support for Macros * Adding Environments:: Adding Support for Environments * Adding Other:: Adding Other Information * Hacking the Parser:: Automatic Extraction of New Things @end menu If you write some useful support for a public @TeX{} style file, please send it to us. @node Simple Style @subsection A Simple Style File @cindex @file{book.el} @cindex Sample style file @cindex Style file @cindex Example of a style file. @cindex Style hook @cindex Adding a style hook Here is a simple example of a style file. @lisp ;;; book.el - Special code for book style. (TeX-add-style-hook "book" (lambda () (LaTeX-largest-level-set "chapter"))) @end lisp The example is from the @AUCTeX{} sources and is loaded for any @LaTeX{} document using the book document class (or style before @LaTeX{}2e). The file specifies that the largest kind of section in such a document is chapter. The interesting thing to notice is that the style file defines an (anonymous) function, and adds it to the list of loaded style hooks by calling @code{TeX-add-style-hook}. The first time the user indirectly tries to access some style-specific information, such as the largest sectioning command available, the style hooks for all files directly or indirectly read by the current document are executed. The actual files will only be evaluated once, but the hooks will be called for each buffer using the style file. Note that the basename of the style file and the name of the style hook should usually be identical. @defun TeX-add-style-hook @var{style} @var{hook} Add @var{hook} to the list of functions to run when we use the @TeX{} file @var{style}. @end defun @node Adding Macros @subsection Adding Support for Macros @cindex Adding macros @cindex Macros, adding @cindex Defining macros in style hooks The most common thing to define in a style hook is new symbols (@TeX{} macros). Most likely along with a description of the arguments to the function, since the symbol itself can be defined automatically. Here are a few examples from @file{latex.el}. @lisp (TeX-add-style-hook "latex" (lambda () (TeX-add-symbols '("arabic" TeX-arg-counter) '("label" TeX-arg-define-label) '("ref" TeX-arg-label) '("newcommand" TeX-arg-define-macro [ "Number of arguments" ] t) '("newtheorem" TeX-arg-define-environment [ TeX-arg-environment "Numbered like" ] t [ TeX-arg-counter "Within counter" ])))) @end lisp @defun TeX-add-symbols @var{symbol} @dots{} Add each @var{symbol} to the list of known symbols. @end defun Each argument to @code{TeX-add-symbols} is a list describing one symbol. The head of the list is the name of the symbol, the remaining elements describe each argument. If there are no additional elements, the symbol will be inserted with point inside braces. Otherwise, each argument of this function should match an argument of the @TeX{} macro. What is done depends on the argument type. If a macro is defined multiple times, @AUCTeX{} will chose the one with the longest definition (i.e. the one with the most arguments). Thus, to overwrite @example '("tref" 1) ; one argument @end example you can specify @example '("tref" TeX-arg-label ignore) ; two arguments @end example @code{ignore} is a function that does not do anything, so when you insert a @samp{tref} you will be prompted for a label and no more. You can use the following types of specifiers for arguments: @table @code @item string Use the string as a prompt to prompt for the argument. @item number Insert that many braces, leave point inside the first. 0 and -1 are special. 0 means that no braces are inserted. -1 means that braces are inserted around the macro and an active region (e.g. @samp{@{\tiny foo@}}). If there is no active region, no braces are inserted. @item nil Insert empty braces. @item t Insert empty braces, leave point between the braces. @item other symbols Call the symbol as a function. You can define your own hook, or use one of the predefined argument hooks. @item list If the car is a string, insert it as a prompt and the next element as initial input. Otherwise, call the car of the list with the remaining elements as arguments. @item vector Optional argument. If it has more than one element, parse it as a list, otherwise parse the only element as above. Use square brackets instead of curly braces, and is not inserted on empty user input. @end table A lot of argument hooks have already been defined. The first argument to all hooks is a flag indicating if it is an optional argument. It is up to the hook to determine what to do with the remaining arguments, if any. Typically the next argument is used to overwrite the default prompt. @ftable @code @item TeX-arg-conditional Implements if EXPR THEN ELSE. If EXPR evaluates to true, parse THEN as an argument list, else parse ELSE as an argument list. @item TeX-arg-literal Insert its arguments into the buffer. Used for specifying extra syntax for a macro. @item TeX-arg-free Parse its arguments but use no braces when they are inserted. @item TeX-arg-eval Evaluate arguments and insert the result in the buffer. @item TeX-arg-label Prompt for a label completing with known labels. @item TeX-arg-macro Prompt for a @TeX{} macro with completion. @item TeX-arg-environment Prompt for a @LaTeX{} environment with completion. @item TeX-arg-cite Prompt for a Bib@TeX{} citation. @item TeX-arg-counter Prompt for a @LaTeX{} counter. @item TeX-arg-savebox Prompt for a @LaTeX{} savebox. @item TeX-arg-file Prompt for a filename in the current directory, and use it without the extension. @item TeX-arg-input-file @vindex TeX-arg-input-file-search Prompt for the name of an input file in @TeX{}'s search path, and use it without the extension. Run the style hooks for the file. (Note that the behavior (type of prompt and inserted file name) of the function can be controlled by the variable @code{TeX-arg-input-file-search}.) @item TeX-arg-define-label Prompt for a label completing with known labels. Add label to list of defined labels. @item TeX-arg-define-macro Prompt for a @TeX{} macro with completion. Add macro to list of defined macros. @item TeX-arg-define-environment Prompt for a @LaTeX{} environment with completion. Add environment to list of defined environments. @item TeX-arg-define-cite Prompt for a Bib@TeX{} citation. @item TeX-arg-define-counter Prompt for a @LaTeX{} counter. @item TeX-arg-define-savebox Prompt for a @LaTeX{} savebox. @item TeX-arg-corner Prompt for a @LaTeX{} side or corner position with completion. @item TeX-arg-lr Prompt for a @LaTeX{} side with completion. @item TeX-arg-tb Prompt for a @LaTeX{} side with completion. @item TeX-arg-pagestyle Prompt for a @LaTeX{} pagestyle with completion. @item TeX-arg-verb Prompt for delimiter and text. @item TeX-arg-pair Insert a pair of numbers, use arguments for prompt. The numbers are surrounded by parentheses and separated with a comma. @item TeX-arg-size Insert width and height as a pair. No arguments. @item TeX-arg-coordinate Insert x and y coordinates as a pair. No arguments. @end ftable If you add new hooks, you can assume that point is placed directly after the previous argument, or after the macro name if this is the first argument. Please leave point located after the argument you are inserting. If you want point to be located somewhere else after all hooks have been processed, set the value of @code{exit-mark}. It will point nowhere, until the argument hook sets it. @node Adding Environments @subsection Adding Support for Environments @cindex Adding environments @cindex Environments, adding @cindex Defining environments in style hooks Adding support for environments is very much like adding support for @TeX{} macros, except that each environment normally only takes one argument, an environment hook. The example is again a short version of @file{latex.el}. @lisp (TeX-add-style-hook "latex" (lambda () (LaTeX-add-environments '("document" LaTeX-env-document) '("enumerate" LaTeX-env-item) '("itemize" LaTeX-env-item) '("list" LaTeX-env-list)))) @end lisp It is completely up to the environment hook to insert the environment, but the function @code{LaTeX-insert-environment} may be of some help. The hook will be called with the name of the environment as its first argument, and extra arguments can be provided by adding them to a list after the hook. For simple environments with arguments, for example defined with @samp{\newenvironment}, you can make @AUCTeX{} prompt for the arguments by giving the prompt strings in the call to @code{LaTeX-add-environments}. The fact that an argument is optional can be indicated by wrapping the prompt string in a vector. For example, if you have defined a @code{loop} environment with the three arguments @var{from}, @var{to}, and @var{step}, you can add support for them in a style file. @example %% loop.sty \newenvironment@{loop@}[3]@{...@}@{...@} @end example @lisp ;; loop.el (TeX-add-style-hook "loop" (lambda () (LaTeX-add-environments '("loop" "From" "To" "Step")))) @end lisp If an environment is defined multiple times, @AUCTeX{} will choose the one with the longest definition. Thus, if you have an enumerate style file, and want it to replace the standard @LaTeX{} enumerate hook above, you could define an @file{enumerate.el} file as follows, and place it in the appropriate style directory. @lisp (TeX-add-style-hook "latex" (lambda () (LaTeX-add-environments '("enumerate" LaTeX-env-enumerate foo)))) (defun LaTeX-env-enumerate (environment &optional ignore) ...) @end lisp The symbol @code{foo} will be passed to @code{LaTeX-env-enumerate} as the second argument, but since we only added it to overwrite the definition in @file{latex.el} it is just ignored. @defun LaTeX-add-environments @var{env} @dots{} Add each @var{env} to list of loaded environments. @end defun @defun LaTeX-insert-environment @var{env} [ @var{extra} ] Insert environment of type @var{env}, with optional argument @var{extra}. @end defun Following is a list of available hooks for @code{LaTeX-add-environments}: @ftable @code @item LaTeX-env-item Insert the given environment and the first item. @item LaTeX-env-figure Insert the given figure-like environment with a caption and a label. @item LaTeX-env-array Insert the given array-like environment with position and column specifications. @item LaTeX-env-label Insert the given environment with a label. @item LaTeX-env-list Insert the given list-like environment, a specifier for the label and the first item. @item LaTeX-env-minipage Insert the given minipage-like environment with position and width specifications. @item LaTeX-env-tabular* Insert the given tabular*-like environment with width, position and column specifications. @item LaTeX-env-picture Insert the given environment with width and height specifications. @item LaTeX-env-bib Insert the given environment with a label for a bibitem. @item LaTeX-env-contents Insert the given environment with a filename as its argument. @item LaTeX-env-args Insert the given environment with arguments. You can use this as a hook in case you want to specify multiple complex arguments just like in elements of @code{TeX-add-symbols}. This is most useful if the specification of arguments to be prompted for with strings and strings wrapped in a vector as described above is too limited. Here is an example from @file{listings.el} which calls a function with one argument in order to prompt for a key=value list to be inserted as an optional argument of the @samp{lstlisting} environment: @lisp (LaTeX-add-environments `("lstlisting" LaTeX-env-args [TeX-arg-key-val ,LaTeX-listings-key-val-options])) @end lisp @end ftable @node Adding Other @subsection Adding Other Information @cindex Adding bibliographies @cindex Bibliographies, adding @cindex Defining bibliographies in style hooks @cindex Adding labels @cindex Labels, adding @cindex Defining labels in style hooks @cindex Adding other information @cindex Other information, adding @cindex Defining other information in style hooks You can also specify bibliographical databases and labels in the style file. This is probably of little use, since this information will usually be automatically generated from the @TeX{} file anyway. @defun LaTeX-add-bibliographies @var{bibliography} @dots{} Add each @var{bibliography} to list of loaded bibliographies. @end defun @defun LaTeX-add-labels @var{label} @dots{} Add each @var{label} to the list of known labels. @end defun @node Hacking the Parser @subsection Automatic Extraction of New Things @cindex Parsing new macros @cindex @file{macro.tex} @cindex @file{macro.el} @cindex Changing the parser The automatic @TeX{} information extractor works by searching for regular expressions in the @TeX{} files, and storing the matched information. You can add support for new constructs to the parser, something that is needed when you add new commands to define symbols. For example, in the file @file{macro.tex} I define the following macro. @example \newcommand@{\newmacro@}[5]@{% \def#1@{#3\index@{#4@@#5~cite@{#4@}@}\nocite@{#4@}@}% \def#2@{#5\index@{#4@@#5~cite@{#4@}@}\nocite@{#4@}@}% @} @end example @AUCTeX{} will automatically figure out that @samp{newmacro} is a macro that takes five arguments. However, it is not smart enough to automatically see that each time we use the macro, two new macros are defined. We can specify this information in a style hook file. @lisp ;;; macro.el --- Special code for my own macro file. ;;; Code: (defvar TeX-newmacro-regexp '("\\\\newmacro@{\\\\\\([a-zA-Z]+\\)@}@{\\\\\\([a-zA-Z]+\\)@}" (1 2) TeX-auto-multi) "Matches \newmacro definitions.") (defvar TeX-auto-multi nil "Temporary for parsing \\newmacro definitions.") (defun TeX-macro-cleanup () "Move symbols from `TeX-auto-multi' to `TeX-auto-symbol'." (mapcar (lambda (list) (mapcar (lambda (symbol) (setq TeX-auto-symbol (cons symbol TeX-auto-symbol))) list)) TeX-auto-multi)) (defun TeX-macro-prepare () "Clear `Tex-auto-multi' before use." (setq TeX-auto-multi nil)) (add-hook 'TeX-auto-prepare-hook 'TeX-macro-prepare) (add-hook 'TeX-auto-cleanup-hook 'TeX-macro-cleanup) (TeX-add-style-hook "macro" (lambda () (TeX-auto-add-regexp TeX-newmacro-regexp) (TeX-add-symbols '("newmacro" TeX-arg-macro (TeX-arg-macro "Capitalized macro: \\") t "BibTeX entry: " nil)))) ;;; macro.el ends here @end lisp When this file is first loaded, it adds a new entry to @code{TeX-newmacro-regexp}, and defines a function to be called before the parsing starts, and one to be called after the parsing is done. It also declares a variable to contain the data collected during parsing. Finally, it adds a style hook which describes the @samp{newmacro} macro, as we have seen it before. So the general strategy is: Add a new entry to @code{TeX-newmacro-regexp}. Declare a variable to contain intermediate data during parsing. Add hook to be called before and after parsing. In this case, the hook before parsing just initializes the variable, and the hook after parsing collects the data from the variable, and adds them to the list of symbols found. @defvar TeX-auto-regexp-list List of regular expressions matching @TeX{} macro definitions. The list has the following format ((REGEXP MATCH TABLE) @dots{}), that is, each entry is a list with three elements. REGEXP. Regular expression matching the macro we want to parse. MATCH. A number or list of numbers, each representing one parenthesized subexpression matched by REGEXP. TABLE. The symbol table to store the data. This can be a function, in which case the function is called with the argument MATCH. Use @code{TeX-match-buffer} to get match data. If it is not a function, it is presumed to be the name of a variable containing a list of match data. The matched data (a string if MATCH is a number, a list of strings if MATCH is a list of numbers) is put in front of the table. @end defvar @defvar TeX-auto-prepare-hook nil List of functions to be called before parsing a @TeX{} file. @end defvar @defvar TeX-auto-cleanup-hook nil List of functions to be called after parsing a @TeX{} file. @end defvar @node Appendices @appendix Copying, Changes, Development, FAQ, Texinfo Mode @menu * Copying this Manual:: * Changes:: * Development:: * FAQ:: * Texinfo mode:: @end menu @node Copying this Manual @appendixsec Copying this Manual @ifinfo The copyright notice for this manual is: @insertcopying @end ifinfo The full license text can be read here: @menu * GNU Free Documentation License:: License for copying this manual. @end menu @lowersections @include fdl.texi @raisesections @node Changes @appendixsec Changes and New Features @lowersections @include changes.texi @raisesections @subheading Older versions See the file @file{history.texi} for older changes. @node Development @appendixsec Future Development @lowersections @include todo.texi @raisesections @node FAQ @appendixsec Frequently Asked Questions @lowersections @include faq.texi @raisesections @node Texinfo mode @appendixsec Features specific to @AUCTeX{}'s Texinfo major mode @AUCTeX{} includes a major mode for editting Texinfo files. This major mode is not the same mode as the native Texinfo mode (@pxref{(texinfo) Texinfo Mode}) of Emacs, although they have the same name. However, @AUCTeX{} still relies on a number of functions from the native Texinfo mode. The following text describes which functionality is offered by @AUCTeX{} and which by the native Texinfo mode. This should enable you to decide when to consult the @AUCTeX{} manual and when the manual of the native mode. And in case you are a seasoned user of the native mode, the information should help you to swiftly get to know the @AUCTeX{}-specific commands. @menu * Exploiting:: How @AUCTeX{} and the native mode work together * Superseding:: Where the native mode is superseded * Mapping:: Where key bindings are mapped to the native mode * Unbinding:: Which native mode key bindings are missing @end menu @node Exploiting @appendixsubsec How @AUCTeX{} and the native mode work together In a nutshell the split between @AUCTeX{} Texinfo mode, and native Texinfo mode is as follows: @itemize @item Most of the editing (environment creation, commenting, font command insertions) and/or processing commands (e.g. compiling or printing) which are available in other @AUCTeX{} modes are also handled by @AUCTeX{} in Texinfo mode. @item Texinfo-related features (e.g. info node linkage or menu creation) rely on the commands provided by the native Texinfo mode. @AUCTeX{} provides the key bindings to reach these functions, keeping the same keys as in native Texinfo whenever possible, or similar ones otherwise. @end itemize @node Superseding @appendixsubsec Where the native mode is superseded This section is directed to users of the native Texinfo mode switching to @AUCTeX{}. It follows the summary of the native mode (@pxref{(texinfo) Texinfo Mode Summary}) and lists which of its commands are no longer of use. @table @asis @item Insert commands In the native Texinfo mode, frequently used Texinfo commands can be inserted with key bindings of the form @kbd{C-c C-c @var{k}} where @var{k} differs for each Texinfo command; @kbd{c} inserts @@code, @kbd{d} inserts @@dfn, @kbd{k} @@kbd, etc. In @AUCTeX{} commands are inserted with the key binding @kbd{C-c C-m} instead which prompts for the macro to be inserted. For font selection commands (like @@b, @@i, or @@emph) and a few related ones (like @@var, @@key or @@code) there are bindings which insert the respective macros directly. They have the form @code{C-c C-f @var{k}} or @code{C-c C-f C-@var{k}} and call the function @code{TeX-font}. Type @kbd{C-c C-f @key{RET}} to get a list of supported commands. Note that the prefix argument is not handled the same way by @AUCTeX{}. Note also that the node insertion command from the native mode (@code{texinfo-insert-@@node}) can still accessed from the Texinfo menu in @AUCTeX{}. @item Insert braces In @AUCTeX{} braces can be inserted with the same key binding as in the native Texinfo mode: @kbd{C-c @{}. But @AUCTeX{} uses its own function for the feature: @code{TeX-insert-braces}. @item Insert environments The native Texinfo mode does not insert full environments. Instead, it provides the function @code{texinfo-insert-@@end} (mapped to @kbd{C-c C-c e}) for closing an open environment with a matching @@end statement. In @AUCTeX{} you can insert full environments, i.e. both the opening and closing statements, with the function @code{Texinfo-environment} (mapped to @kbd{C-c C-e}). @item Format info files with makeinfo and @TeX{} In the native Texinfo mode there are various functions and bindings to format a region or the whole buffer for info or to typeset the respective text. For example, there is @code{makeinfo-buffer} (mapped to @kbd{C-c C-m C-b}) which runs @samp{makeinfo} on the buffer or there is @code{texinfo-tex-buffer} (mapped to @kbd{C-c C-t C-b}) which runs @TeX{} on the buffer in order to produce a @acronym{DVI} file. In @AUCTeX{} different commands for formatting or typesetting can be invoked through the function @code{TeX-command-master} (mapped to @kbd{C-c C-c}). After typing @kbd{C-c C-c}, you can select the desired command, e.g @samp{Makeinfo} or @samp{TeX}, through a prompt in the mini buffer. Note that you can make, say @samp{Makeinfo}, the default by adding this statement in your init file: @lisp (add-hook 'Texinfo-mode-hook (lambda () (setq TeX-command-default "Makeinfo"))) @end lisp Note also that @kbd{C-c C-c Makeinfo @key{RET}} is not completely functionally equivalent to @code{makeinfo-buffer} as the latter will display the resulting info file in Emacs, showing the node corresponding to the position in the source file, just after a successful compilation. This is why, while using @AUCTeX{}, invoking @code{makeinfo-buffer} might still be more convenient. Note also that in the case of a multifile document, @kbd{C-c C-c} in @AUCTeX{} will work on the whole document (provided that the file variable @code{TeX-master} is set correctly), while @code{makeinfo-buffer} in the native mode will process only the current buffer, provided at the @code{@@setfilename} statement is provided. @item Produce indexes and print The native Texinfo mode provides the binding @kbd{C-c C-t C-i} (@code{texinfo-texindex}) for producing an index and the bindings @kbd{C-c C-t C-p} (@code{texinfo-tex-print}) and @kbd{C-c C-t C-q} (@code{tex-show-print-queue}) for printing and showing the printer queue. These are superseded by the respective commands available through @kbd{C-c C-c} (@code{TeX-command-master}) in @AUCTeX{}: Index, Print, and Queue. @item Kill jobs The command @kbd{C-c C-t C-k} (@code{tex-kill-job}) in the native mode is superseded by @kbd{C-c C-k} (@code{TeX-kill-job}) in @AUCTeX{}. @end table @node Mapping @appendixsubsec Where key bindings are mapped to the native mode This node follows the native Texinfo mode summary (@pxref{(texinfo) Texinfo Mode Summary}) and lists only those commands to which @AUCTeX{} provides a keybinding. Basically all commands of the native mode related to producing menus and interlinking nodes are mapped to same or similar keys in @AUCTeX{}, while a few insertion commands are mapped to @AUCTeX{}-like keys. @table @asis @item @code{@@item} insertion The binding @kbd{C-c C-c i} for the insertion of @code{@@item} in the native mode is mapped to @kbd{M-@key{RET}} or @kbd{C-c C-j} in @AUCTeX{}, similar to other @AUCTeX{} modes. @item @code{@@end} insertion The binding @kbd{C-c C-c e} for closing a @code{@@@var{foo}} command by a corresponding @code{@@end @var{foo}} statement in the native mode is mapped to @kbd{C-c C-]} in @AUCTeX{}, similar to other @AUCTeX{} modes. @item Move out of balanced braces The binding @kbd{C-@}} (@code{up-list}) is available both in the native mode and in @AUCTeX{}. (This is because the command is not implemented in either mode but a native Emacs command.) However, in @AUCTeX{}, you cannot use @kbd{C-]} for this, as it is used for @code{@@end} insertion. @item Update pointers The bindings @kbd{C-c C-u C-n} (@code{texinfo-update-node}) and @kbd{C-c C-u C-e} (@code{texinfo-every-node-update}) from the native mode are available in @AUCTeX{} as well. @item Update menus The bindings @kbd{C-c C-u m} (@code{texinfo-master-menu}), @kbd{C-c C-u C-m} (@code{texinfo-make-menu}), and @kbd{C-c C-u C-a} (@code{texinfo-all-menus-update}) from the native mode are available in @AUCTeX{} as well. The command @code{texinfo-start-menu-description}, bound to @kbd{C-c C-c C-d} in the native mode, is bound to @kbd{C-c C-u C-d} in @AUCTeX{} instead. @end table @node Unbinding @appendixsubsec Which native mode key bindings are missing The following commands from the native commands might still be useful when working with @AUCTeX{}, however, they are not accessible with a key binding any longer. @table @asis @item @code{@@node} insertion The node insertion command, mapped to @kbd{C-c C-c n} in the native mode, is not mapped to any key in @AUCTeX{}. You can still access it through the Texinfo menu, though. Another alternative is to use the @kbd{C-c C-m} binding for macro insertion in @AUCTeX{}. @item Show the section structure The command @code{texinfo-show-structure} (@kbd{C-c C-s}) from the native mode does not have a key binding in @AUCTeX{}. The binding is used by @AUCTeX{} for sectioning. @end table @node Indices @unnumbered Indices @menu * Key Index:: * Function Index:: * Variable Index:: * Concept Index:: @end menu @node Key Index @unnumberedsec Key Index @printindex ky @node Function Index @unnumberedsec Function Index @printindex fn @node Variable Index @unnumberedsec Variable Index @printindex vr @node Concept Index @unnumberedsec Concept Index @printindex cp @bye auctex-11.87/doc/version.texi0000644000000000000000000000005312056205161014642 0ustar rootroot@set VERSION 11.87 @set UPDATED 2012-11-30 auctex-11.87/doc/changes.texi0000644000000000000000000006333412055735330014605 0ustar rootroot@c This is part of the AUCTeX manual. @c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Free Software @c Foundation, Inc. @c See file auctex.texi for copying conditions. @include macros.texi @ifset rawfile @chapheading Changes and New Features in @AUCTeX{} @end ifset @heading News since 11.87 @itemize @bullet @item @AUCTeX{} now supports Biber in conjunction with biblatex in addition to BibTeX. @item Each @AUCTeX{} mode now has its own abbrev table. On Emacsen which provide the possibility to inherit abbrevs from other tables, the abbrevs from the Text mode abbrev table are available as well. Newly defined abbrevs are written to the mode-specific tables, though. @item The file @samp{tex-fptex.el} was removed. @item Forward/backward search for Evince has been improved. If Emacs is compiled with DBUS support and a recent Evince version (3.x) is installed, the communication goes over the desktop bus instead of the command line, resulting in more accurate positioning of point in Emacs and highlighting of the target paragraph in Evince. @item A problem where Ghostscript threw an /invalidfileaccess error when running @previewlatex{} was fixed. @item A lot of smaller fixes and additions have been made. @end itemize @heading News in 11.86 @itemize @bullet @item Parsing of @LaTeX{} output was improved. It is now less likely that @AUCTeX{} opens a non-existent file upon calling @code{TeX-next-error}; a problem for example encountered when using MiK@TeX{} 2.8. In addition quoted file names as emitted by MiK@TeX{} are now supported. @item A new framework for the definition and selection of viewers was implemented. If you have customizations regarding viewers you will have to redo them in this new framework or reenable the old one. @ifset rawfile See the section on viewers in the manual for details. @end ifset @ifclear rawfile @xref{Starting Viewers}, for details. @end ifclear @item Comprehensive editing support for PSTricks was added. @item Support for various @LaTeX{} packages was added, e.g. @samp{tabularx}, @samp{CJK}, and @samp{hyperref}. @item An easy way to switch between @TeX{} engines (PDF@TeX{}, Lua@TeX{}, Xe@TeX{}, Omega) was added. @item Support for Sync@TeX{} was added. This involves the command line options for @LaTeX{} and the viewer. @item Folding can now be customized to use macro arguments as replacement text. @item @samp{preview.sty} now works with Xe@TeX{}. @item A lot of smaller and larger bugs have been squashed. @end itemize @heading News in 11.85 @itemize @bullet @item Font locking has been improved significantly. It is now less prone to color bleeding which could lead to high resource usage. In addition it now includes information about @LaTeX{} macro syntax and can indicate syntactically incorrect macros in @LaTeX{} mode. @item The license was updated to GPLv3. @item Support for the nomencl, flashcards and comment @LaTeX{} packages as well as the Icelandic language option of babel were added. @item Support for folding of math macros was added. @item Lots of minor bugs in features and documentation fixed. @end itemize @heading News in 11.84 @itemize @bullet @item There have been problems with the @samp{-without-texmf-dir} option to @samp{configure} when the value of @samp{-with-kpathsea-sep} was set or determined for an installation system with a default different from that of the runtime system. @code{with-kpathsea-sep} has been removed; the setting is now usually determined at runtime. Due to this and other problems, preview-latex in the released XEmacs package failed under Windows or with anything except recent 21.5 XEmacsen. @item @AUCTeX{} and @previewlatex{} have been changed in order to accommodate file names containing spaces. @previewlatex{} now tolerates bad PostScript code polluting the stack (like some Omega fonts). @item @samp{preview.sty} had in some cases failed to emit PostScript header specials. @item Support for folding of comments was added. @item The @code{polish} language option of the babel LaTeX package as well as the polski LaTeX package are now supported. Most notably this means that AUCTeX will help to insert quotation marks as defined by polish.sty (@code{"`..."'}) and polski.sty (@code{,,...''}). @item The @TeX{} tool bar is now available and enabled by default in plain @TeX{} mode. @ifclear rawfile @xref{Processing Facilities}. @end ifclear @item Bug fix in the display of math subscripts and superscripts. @item Bug fix @code{TeX-doc} for Emacs 21. @item There has been quite a number of other bug fixes to various features and documentation across the board. @end itemize @heading News in 11.83 @itemize @bullet @item The new function @code{TeX-doc} provides easy access to documentation about commands and packages or information related to @TeX{} and friends in general. @ifset rawfile It is accessible with the key binding @kbd{C-c ?} or the @samp{Find Documentation...} entry in the mode menus. @end ifset @ifclear rawfile @xref{Documentation}. @end ifclear @item You can now get rid of generated intermediate and output files by means of the new @samp{Clean} and @samp{Clean All} entries in @code{TeX-command-list} accessible with @kbd{C-c C-c} or the Command menu. @ifclear rawfile @xref{Cleaning}. @end ifclear @item Support for forward search with PDF files was added. That means you can jump to a place in the output file corresponding to the position in the source file. @ifset rawfile Currently this only works if you use the pdfsync @LaTeX{} package and xpdf as your PDF viewer. The accuracy is in the range of +/-1 page. @end ifset @ifclear rawfile @xref{Viewing}. @end ifclear Adding support for this feature required the default value of the variable @code{TeX-output-view-style} to be changed. Please make sure you either remove any customizations overriding the new default or incorporate the changes into your customizations if you want to use this feature. @item @TeX{} error messages of the @code{-file-line-error} kind are now understood in @AUCTeX{} and @previewlatex{} (parsers are still separate). @item Bug fix in XyM@TeX{} support. @item The @LaTeX{} tool bar is now enabled by default. @ifclear rawfile @xref{Processing Facilities}. @end ifclear @end itemize @heading News in 11.82 @itemize @bullet @item Support for the MinionPro LaTeX package was added. @item Warnings and underfull/overfull boxes are now being indicated in the echo area after a @LaTeX{} run, if the respective debugging options are activated with @code{TeX-toggle-debug-warnings} (@kbd{C-c C-t C-w}) or @code{TeX-toggle-debug-bad-boxes} (@kbd{C-c C-t C-b}). In this case @code{TeX-next-error} will find these warnings in addition to normal errors. The key binding @kbd{C-c C-w} for @code{TeX-toggle-debug-bad-boxes} (which was renamed from @code{TeX-toggle-debug-boxes}) now is deprecated. @item @AUCTeX{} now can automatically insert a pair of braces after typing @key{_} or @key{^} in math constructs if the new variable @code{TeX-electric-sub-and-superscript} is set to a non-nil value. @item Some language-specific support for French was added. There now is completion support for the commands provided by the @samp{frenchb} (and @samp{francais}) options of the babel @LaTeX{} package and easier input of French quotation marks (@code{\\og ...\\fg}) which can now be inserted by typing @key{"}. @item Completion support for options of some LaTeX packages was added. @item @cindex @file{auctex.el} @cindex @file{tex-site.el} Already in version 11.81 the way to activate @AUCTeX{} changed substantially. This should now be done with @code{(load "auctex.el" nil t t)} instead of the former @code{(require 'tex-site)}. Related to this change @file{tex-mik.el} does not load @file{tex-site.el} anymore. That means if you used only @code{(require 'tex-mik)} in order to activate @AUCTeX{}, you have to add @code{(load "auctex.el" nil t t)} before the latter statement. @ifset rawfile More detailed information can be found in the installation instructions (file INSTALL). @end ifset @ifclear rawfile @xref{Loading the package}. @end ifclear @item Handling of verbatim constructs was consolidated across AUCTeX. This resulted in the @fontlatex{}-specific variables @code{font-latex-verb-like-commands}, @code{font-latex-verbatim-macros}, and @code{font-latex-verbatim-environments} being removed and the more general variables @code{LaTeX-verbatim-macros-with-delims}, @code{LaTeX-verbatim-macros-with-braces}, and @code{LaTeX-verbatim-environments} being added. @item The output of a Bib@TeX{} run is now checked for warnings and errors, which are reported in the echo area. @item The aliases for @code{font-latex-title-fontify} were removed. Use @code{font-latex-fontify-sectioning} instead. @item The problem that Japanese macros where broken across lines was fixed. @item Various bug fixes. @end itemize @heading News in 11.81 @itemize @bullet @item @code{LaTeX-mark-section} now marks subsections of a given section as well. The former behavior is available via the prefix argument. @item @previewlatex{} which was previously available separately became a subsystem of @AUCTeX{}. There is no documented provision for building or installing @previewlatex{} separately. It is still possible to use and install @AUCTeX{} without @previewlatex{}, however. @item The installation procedures have been overhauled and now also install startup files as part of the process (those had to be copied manually previously). You are advised to remove previous installations of @AUCTeX{} and @previewlatex{} before starting the installation procedure. A standard installation from an unmodified tarball no longer requires Makeinfo or Perl. Also note that the way @AUCTeX{} is supposed to be activated changed. Instead of @code{(require 'tex-site)} you should now use @code{(load "auctex.el" nil t t)}. While the former method may still work, the new method has the advantage that you can deactivate a preactivated @AUCTeX{} with the statement @code{(unload-feature 'tex-site)} before any of its modes have been used. This may be important especially for site-wide installations. @item Support for the babel @LaTeX{} package was added. @item Folding a buffer now ensures that the whole buffer is fontified before the actual folding is carried out. If this results in unbearably long execution times, you can fall back to the old behavior of relying on stealth font locking to do this job in the background by customizing the variable @code{TeX-fold-force-fontify}. @item Folded content now reveals part of its original text in a tooltip or the echo area when hovering with the mouse pointer over it. @item The language-specific insertion of quotation marks was generalized. The variables @code{LaTeX-german-open-quote}, @code{LaTeX-german-close-quote}, @code{LaTeX-german-quote-after-quote}, @code{LaTeX-italian-open-quote}, @code{LaTeX-italian-close-quote}, and @code{LaTeX-italian-quote-after-quote} are now obsolete. If you are not satisfied with the default settings, you should customize @code{TeX-quote-language-alist} instead. @item Similar to language-specific quote insertion, @AUCTeX{} now helps you with hyphens in different languages as well. @ifclear rawfile @xref{European}, for details. @end ifclear @item Fill problems in Japanese text introduced in @AUCTeX{} 11.55 were fixed. @AUCTeX{} tries not to break lines between 1-byte and 2-byte chars. These features will work in Chinese text, too. @item The scaling factor of the fontification of sectioning commands can now be customized using the variable @code{font-latex-fontify-sectioning}. This variable was previously called @code{font-latex-title-fontify}; In this release we provide an alias but this will disappear in one of the the next releases. The faces for the sectioning commands are now called @code{font-latex-sectioning-@var{N}-face} (@var{N}=0@dots{}5) instead of @code{font-latex-title-@var{N}-face} (@var{N}=1@dots{}4). Analogously the names of the variables holding the related keyword lists were changed from @code{font-latex-title-@var{N}-keywords} to @code{font-latex-sectioning-@var{N}-keywords}. @ifclear rawfile @xref{Font Locking}, for details. @end ifclear Make sure to adjust your customizations. @item Titles in beamer slides marked by the ``\frametitle'' command are know displayed with the new face @code{font-latex-slide-title-face}. You can add macros to be highlighted with this face to @code{font-latex-match-slide-title-keywords}. @item Of course a lot of bugs have been fixed. @end itemize @heading News in 11.55 @itemize @bullet @item A bug was fixed which lead to the insertion of trailing whitespace during filling. In particular extra spaces were added to sentence endings at the end of lines. You can make this whitespace visible by setting the variable @code{show-trailing-whitespace} to @code{t}. If you want to delete all trailing whitespace in a buffer, type @kbd{M-x delete-trailing-whitespace RET}. @item A bug was fixed which lead to a @samp{*Compile-Log*} buffer popping up when the first @LaTeX{} file was loaded in an Emacs session. @item On some systems the presence of an outdated Emacspeak package lead to the error message @samp{File mode specification error: (error "Variable binding depth exceeds max-specpdl-size")}. Precautions were added which prevent this error from happening. But nevertheless, it is advised to upgrade or uninstall the outdated Emacspeak package. @item The value of @code{TeX-macro-global} is not determined during configuration anymore but at load time of @AUCTeX{}. Consequently the associated configuration option @samp{--with-tex-input-dirs} was removed. @item Support for the @LaTeX{} Japanese classes @samp{jsarticle} and @samp{jsbook} was added. @end itemize @heading News in 11.54 @itemize @bullet @item The parser (used e.g. for @code{TeX-auto-generate-global}) was extended to recognize keywords common in @LaTeX{} packages and classes, like ``\DeclareRobustCommand'' or ``\RequirePackage''. Additionally a bug was fixed which led to duplicate entries in @AUCTeX{} style files. @item Folding can now be done for paragraphs and regions besides single constructs and the whole buffer. With the new @code{TeX-fold-dwim} command content can both be hidden and shown with a single key binding. In course of these changes new key bindings for unfolding commands where introduced. The old bindings are still present but will be phased out in future releases. @item Info files of the manual now have a .info extension. @item There is an experimental tool bar support now. It is not activated by default. If you want to use it, add @lisp (add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar) @end lisp to your init file. @item The manual now contains a new chapter ``Quick Start''. It explains the main features and how to use them, and should be enough for a new user to start using @AUCTeX{}. @item A new section ``Font Locking'' was added to the manual which explains syntax highlighting in @AUCTeX{} and its customization. Together with the sections related to folding and outlining, the section is part of the new chapter ``Display''. @item Keywords for syntax highlighting of @LaTeX{} constructs to be typeset in bold, italic or typewriter fonts may now be customized. Besides the built-in classes, new keyword classes may be added by customizing the variable @samp{font-latex-user-keyword-classes}. The customization options can be found in the customization group @samp{font-latex-keywords}. @item Verbatim content is now displayed with the @samp{fixed-pitch} face. (GNU Emacs only) @item Syntax highlighting should not spill out of verbatim content anymore. (GNU Emacs only) @item Verbatim commands like @samp{\verb|...|} will not be broken anymore during filling. @item You can customize the completion for graphic files with @code{LaTeX-includegraphics-read-file}. @item Support for the @LaTeX{} packages @samp{url}, @samp{listings}, @samp{jurabib} and @samp{csquotes} was added with regard to command completion and syntax highlighting. @item Performance of fontification and filling was improved. @item Insertion of nodes in Texinfo mode now supports completion of existing node names. @item Setting the variable @code{LaTeX-float} to @code{nil} now means that you will not be prompted for the float position of figures and tables. You can get the old behaviour of @code{nil} by setting the variable to @code{""}, i.e. an empty string. @ifclear rawfile See also @ref{Floats}. @end ifclear @item The XEmacs-specific bug concerning @code{overlays-at} was fixed. @item Lots of bug fixes. @end itemize @heading News in 11.53 @itemize @bullet @item The @LaTeX{} math menu can include Unicode characters if your Emacs built supports it. See the variable @ifset rawfile @code{LaTeX-math-menu-unicode}. @end ifset @ifclear rawfile @code{LaTeX-math-menu-unicode}, @ref{Mathematics}. @end ifclear @item Bug fixes for XEmacs. @c The following items weren't present at release time of 11.53: @item Completion for graphic files in the TeX search path has been added. @item @command{start} is used for the viewer for MiK@TeX{} and fp@TeX{}. @item The variable @code{TeX-fold-preserve-comments} can now be customized to deactivate folding in comments. @end itemize @heading News in 11.52 @c Not present at release time of 11.52. @itemize @bullet @item Installation and menus under XEmacs work again (maybe for the first time). @item Fontification of subscripts and superscripts is now disabled when the fontification engine is not able to support it properly. @item Bug fixes in the build process. @end itemize @heading News in 11.51 @c Not present at release time of 11.51. @itemize @bullet @item PDFTeX and Source Special support did not work with ConTeXt, this has been fixed. Similar for Source Special support under Windows. @item Omega support has been added. @item Bug fixes in the build process. @item @code{TeX-fold} now supports folding of environments in Texinfo mode. @end itemize @heading News in 11.50 @itemize @bullet @item The use of source specials when processing or viewing the document can now be controlled with the new @code{TeX-source-specials} minor mode which can be toggled via an entry in the Command menu or the key binding @kbd{C-c C-t C-s}. If you have customized the variable @code{TeX-command-list}, you have to re-initialize it for this to work. This means to open a customization buffer for the variable by typing @code{M-x customize-variable RET TeX-command-list RET}, selecting ``Erase Customization'' and do your customization again with the new default. @item The content of the command menu now depends on the mode (plain @TeX{}, @LaTeX{}, @ConTeXt{} etc.). Any former customization of the variable @code{TeX-command-list} has to be erased. Otherwise the command menu and the customization will not work correctly. @item Support for hiding and auto-revealing macros, e.g. footnotes or citations, and environments in a buffer was @ifset rawfile added. @end ifset @ifclear rawfile added, @ref{Folding}. @end ifclear @item You can now control if indentation is done upon typing @key{RET} by customizing the variable @ifset rawfile @code{TeX-newline-function}. @end ifset @ifclear rawfile @code{TeX-newline-function}, @ref{Indenting}. @end ifclear @item Limited support for @code{doc.sty} and @code{ltxdoc.cls} (@samp{dtx} files) was added. The new doc@TeX{} mode provides functionality for editing documentation parts. This includes formatting (indenting and filling), adding and completion of macros and environments while staying in comments as well as syntax highlighting. (Please note that the mode is not finished yet. For example syntax highlighting does not work yet in XEmacs.) @item For macro completion in doc@TeX{} mode the @AUCTeX{} style files @file{doc.el}, @file{ltxdoc.el} and @file{ltx-base.el} were included. The latter provides general support for low-level @LaTeX{} macros and may be used with @LaTeX{} class and style files as well. It is currently not loaded automatically for those files. @item Support for @ConTeXt{} with a separate @ConTeXt{} mode is now included. Macro definitions for completion are available in Dutch and English. @item The filling and indentation code was overhauled and is now able to format commented parts of the source syntactically correct. Newly available functionality and customization options are explained in the manual. @item Filling and indentation in XEmacs with preview-latex and activated previews lead to the insertion of whitespace before multi-line previews. @AUCTeX{} now contains facilities to prevent this problem. @item If @code{TeX-master} is set to @code{t}, @AUCTeX{} will now query for a master file only when a new file is opened. Existing files will be left alone. The new function @code{TeX-master-file-ask} (bound to @kbd{C-c _} is provided for adding the variable manually. @item Sectioning commands are now shown in a larger font on display devices which support such fontification. The variable @code{font-latex-title-fontify} can be customized to restore the old appearance, i.e. the usage of a different color instead of a change in size. @item Support for @code{alphanum.sty}, @code{beamer.cls}, @code{booktabs.sty}, @code{captcont.sty}, @code{emp.sty}, @code{paralist.sty}, @code{subfigure.sty} and @code{units.sty}/@code{nicefrac.sty} was added. Credits go to the authors mentioned in the respective @AUCTeX{} style files. @item Inserting graphics with @kbd{C-c RET \includegraphics RET} was improved. See the variable @code{LaTeX-includegraphics-options-alist}. @c FIXME: Document this in the main part of the manual @item If @code{LaTeX-default-position} is @code{nil}, don't prompt for position arguments in Tabular-like @ifset rawfile environments. @end ifset @ifclear rawfile environments, see @ref{Tabular-like}. @end ifclear @item Completion for available packages when using @kbd{C-c RET \usepackage RET} was improved on systems using the kpathsea library. @item The commenting functionality was fixed. The separate functions for commenting and uncommenting were unified in one function for paragraphs and regions respectively which do both. @item Syntax highlighting can be customized to fontify quotes delimited by either >>German<< or <> quotation marks by changing the variable @code{font-latex-quotes}. @item Certain @TeX{}/@LaTeX{} keywords for functions, references, variables and warnings will now be fontified specially. You may add your own keywords by customizing the variables @code{font-latex-match-function-keywords}, @code{font-latex-match-reference-keywords}, @code{font-latex-match-variable-keywords} and @code{font-latex-match-warning-keywords}. @item If you include the style files @file{german} or @file{ngerman} in a document (directly or via the @samp{babel} package), you should now customize @code{LaTeX-german-open-quote}, @code{LaTeX-german-close-quote} and @code{LaTeX-german-quote-after-quote} instead of @code{TeX-open-quote}, @code{TeX-close-quote} and @code{TeX-quote-after-quote} if you want to influence the type of quote insertion. @item Upon viewing an output file, the right viewer and command line options for it are now determined automatically by looking at the extension of the output file and certain options used in the source file. The behavior can be adapted or extended respectively by customizing the variable @code{TeX-output-view-style}. @item You can control whether @code{TeX-insert-macro} (@kbd{C-c RET}) ask for all optional arguments by customizing the variable @ifset rawfile @code{TeX-insert-macro-default-style}. @end ifset @ifclear rawfile @code{TeX-insert-macro-default-style}, @ref{Completion}. @end ifclear @item @code{TeX-run-discard} is now able to completely detach a process that it started. @item The build process was enhanced and is now based on @code{autoconf} making installing AUC@TeX{} a mostly automatic process. See @ifset rawfile the files @file{INSTALL} and @file{INSTALL.windows} @end ifset @ifclear rawfile @ref{Installation} and @ref{Installation under MS Windows} @end ifclear for details. @end itemize @heading News in 11.14 @itemize @bullet @item Many more LaTeX and LaTeX2e commands are supported. Done by Masayuki Ataka @end itemize @heading News in 11.12 @itemize @bullet @item Support for the KOMA-Script classes. Contributed by Mark Trettin . @end itemize @heading News in 11.11 @itemize @bullet @item Support for @file{prosper.sty}, see @url{http://prosper.sourceforge.net/}. Contributed by Phillip Lord . @end itemize @heading News in 11.10 @itemize @bullet @item @code{comment-region} now inserts @t{%%} by default. Suggested by "Davide G. M. Salvetti" . @end itemize @heading News in 11.06 @itemize @bullet @item You can now switch between using the @file{font-latex} (all emacsen), the @file{tex-font} (Emacs 21 only) or no special package for font locking. Customize @code{TeX-install-font-lock} for this. @end itemize @heading News in 11.04 @itemize @bullet @item Now use @t{-t landscape} by default when landscape option appears. Suggested by Erik Frisk . @end itemize @heading News in 11.03 @itemize @bullet @item Use @file{tex-fptex.el} for fpTeX support. Contributed by Fabrice Popineau . @end itemize @heading News in 11.02 @itemize @bullet @item New user option @code{LaTeX-top-caption-list} specifies environments where the caption should go at top. Contributed by ataka@@milk.freemail.ne.jp (Masayuki Ataka). @item Allow explicit dimensions in @file{graphicx.sty}. Contributed by ataka@@milk.freemail.ne.jp (Masayuki Ataka). @item Limited support for @file{verbatim.sty}. Contributed by ataka@@milk.freemail.ne.jp (Masayuki Ataka). @item Better support for asmmath items. Patch by ataka@@milk.freemail.ne.jp (Masayuki Ataka). @item More accurate error parsing. Added by David Kastrup . @end itemize @heading News in 11.01 @itemize @bullet @item Bug fixes. @end itemize auctex-11.87/doc/preview-todo.texi0000644000000000000000000001072610266006141015607 0ustar rootroot@ifset rawfile @include macros.texi @chapheading Future Development of @previewlatex{} @end ifset @itemize @bullet @item Support other formats than just @LaTeX{} plain @TeX{} users and Con@TeX{}t users should not have to feel left out. While Con@TeX{}t is not supported yet by released versions of @AUCTeX{}, at least supporting plain would help people, and be a start for Con@TeX{}t as well. There are plain-based formats like MusiX@TeX{} that could benefit a lot from @previewlatex{}. The main part of the difficulties here is to adapt @file{preview.dtx} to produce stuff not requiring @LaTeX{}. @item Support nested snippets Currently you can't have both a footnote (which gets displayed as just its footnote number) and math inside of a footnote rendered as an image: such nesting might be achieved by rerunning @previewlatex{} on the footnote contents when one opens the footnote for editing. @item Support other text properties than just images Macros like @samp{\textit} can be rendered as images, but the resulting humungous blob is not suitable for editing, in particular since the line filling from LaTeX does not coincide with that of Emacs. It would be much more useful if text properties just switched the relevant font to italics rather than replacing the whole text with an image. It would also make editing quite easier. Then there are things like footnotes that are currently just replaced by their footnote number. While editing is not a concern here (the number is not in the original text, anyway), it would save a lot of conversion time if no images were generated, but Emacs just displayed a properly fontified version of the footnote number. Also, this might make @previewlatex{} useful even on text terminals. @item Find a way to facilitate Source Specials Probably in connection with adding appropriate support to @code{dvipng}, it would be nice if clicking on an image from a larger piece of source code would place the cursor at the respective source code location. @item Make @file{preview.dtx} look reasonable in @AUCTeX{} It is a bit embarrassing that @file{preview.dtx} is written in a manner that will not give either good syntax highlighting or good indentation when employing @AUCTeX{}. @item Web page work Currently, @previewlatex{}'s web page is not structured at all. Better navigation would be desirable, as well as separate News and Errata eye catchers. @item Manual improvements @itemize @minus @item Pepper the manual with screen shots and graphics This will be of interest for the @acronym{HTML} and @TeX{} renditions of the texinfo manual. Since Texinfo now supports images as well, this could well be nice to have. @item Fix duplicates Various stuff appears several times. @end itemize @item Implement rendering pipelines for Emacs The current @file{gs.el} interface is fundamentally flawed, not only because of a broken implementation. A general batchable and daemonizable rendering infrastructure that can work on all kinds of preview images for embedding into buffers is warranted. The current implementation has a rather adhoc flavor and is not easily extended. It will not work outside of AUCTeX, either. @item Integrate into Ref@TeX{} When referencing to equations and the like, the preview-images of the source rather than plain text should be displayed. If the preview in question covers labels, those should appear in the bubble help and/or a context menu. Apropos: @item Implement @LaTeX{} error indicators Previews on erroneous @LaTeX{} passages might gain a red border or similar. @item Pop up relevant online documentation for frequent errors A lot of errors are of the "badly configured" variety. Perhaps the relevant info pages should be delivered in addition to the error message. @item Implement a table editing mode where every table cell gets output as a separate preview. Alternatively, output the complete table metrics in a way that lets people click on individual cells for editing purposes. @item Benchmark and kill Emacs inefficiencies Both the @LaTeX{} run under Emacs control as well as actual image insertion in Emacs could be faster. CVS Emacs has improved in that respect, but it still is slower than desirable. @item Improve image support under Emacs The general image and color handling in Emacs is inefficient and partly defective. This is still the case in CVS. One option would be to replace the whole color and image handling with @acronym{GDK} routines when this library is available, since it has been optimized for it. @end itemize auctex-11.87/doc/wininstall.texi0000644000000000000000000003543411443167725015370 0ustar rootroot@c This is part of the AUCTeX Manual. @c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 @c Free Software Foundation, Inc. @c See the file auctex.texi for copying conditions. @ifset rawfile @include macros.texi @end ifset @subheading In a Nutshell The following are brief installation instructions for the impatient. In case you don't understand some of this, run into trouble of some sort, or need more elaborate information, refer to the detailed instructions further below. @enumerate @item Install the prerequisites, i.e. Emacs or XEmacs, MSYS or Cygwin, a @TeX{} system, and Ghostscript. @item Open the MSYS shell or a Cygwin shell and change to the directory containing the unzipped file contents. @item Configure @AUCTeX{}: For Emacs: Many people like to install @AUCTeX{} into the pseudo file system hierarchy set up by the Emacs installation. Assuming Emacs is installed in @file{C:/Program Files/Emacs} and the directory for local additions of your @TeX{} system, e.g. MiK@TeX{}, is @file{C:/localtexmf}, you can do this by typing the following statement at the shell prompt: @example ./configure --prefix='C:/Program Files/Emacs' \ --infodir='C:/Program Files/Emacs/info' \ --with-texmf-dir='C:/localtexmf' @end example For XEmacs: You can install @AUCTeX{} as an XEmacs package. Assuming XEmacs is installed in @file{C:/Program Files/XEmacs} and the directory for local additions of your @TeX{} system, e.g. MiK@TeX{}, is @file{C:/localtexmf}, you can do this by typing the following command at the shell prompt: @example ./configure --with-xemacs='C:/Program Files/XEmacs/bin/xemacs' \ --with-texmf-dir='C:/localtexmf' @end example The commands above are examples for common usage. More on configuration options can be found in the detailed installation instructions below. If the configuration script failed to find all required programs, make sure that these programs are in your system path and add directories containing the programs to the @env{PATH} environment variable if necessary. Here is how to do that in W2000/XP: @enumerate @cindex Adding to @env{PATH} in Windows @cindex @env{PATH} in Windows @item On the desktop, right click ``My Computer'' and select properties. @item Click on ``Advanced'' in the ``System Properties'' window. @item Select ``Environment Variables''. @item Select ``path'' in ``System Variables'' and click ``edit''. Move to the front in the line (this might require scrolling) and add the missing path including drive letter, ended with a semicolon. @end enumerate @item If there were no further error messages, type @example make @end example In case there were, please refer to the detailed description below. @item Finish the installation by typing @example make install @end example @end enumerate @subheading Detailed Installation Instructions Installation of @AUCTeX{} under Windows is in itself not more complicated than on other platforms. However, meeting the prerequisites might require more work than on some other platforms, and feel less natural. If you are experiencing any problems, even if you think they are of your own making, be sure to report them to @email{auctex-devel@@gnu.org} so that we can explain things better in future. Windows is a problematic platform for installation scripts. The main problem is that the installation procedure requires consistent file names in order to find its way in the directory hierarchy, and Windows path names are a mess. The installation procedure tries finding stuff in system search paths and in Emacs paths. For that to succeed, you have to use the same syntax and spelling and case of paths everywhere: in your system search paths, in Emacs' @code{load-path} variable, as argument to the scripts. If your path names contain spaces or other `shell-unfriendly' characters, most notably backslashes for directory separators, place the whole path in @samp{"double quote marks"} whenever you specify it on a command line. Avoid `helpful' magic file names like @samp{/cygdrive/c} and @samp{C:\PROGRA~1\} like the plague. It is quite unlikely that the scripts will be able to identify the actual file names involved. Use the full paths, making use of normal Windows drive letters like @samp{ 'C:/Program Files/Emacs' } where required, and using the same combination of upper- and lowercase letters as in the actual files. File names containing shell-special characters like spaces or backslashes (if you prefer that syntax) need to get properly quoted to the shell: the above example used single quotes for that. Ok, now here are the steps to perform: @enumerate @item You need to unpack the @AUCTeX{} distribution (which you seemingly have done since you are reading this). It must be unpacked in a separate installation directory outside of your Emacs file hierarchy: the installation will later copy all necessary files to their final destination, and you can ultimately remove the directory where you unpacked the files. Line endings are a problem under Windows. The distribution contains only text files, and theoretically most of the involved tools should get along with that. However, the files are processed by various utilities, and it is conceivable that not all of them will use the same line ending conventions. If you encounter problems, it might help if you try unpacking (or checking out) the files in binary mode, if your tools allow that. If you don't have a suitable unpacking tool, skip to the next step: this should provide you with a working @samp{unzip} command. @item The installation of @AUCTeX{} will require the MSYS tool set from @uref{http://www.mingw.org/} or the Cygwin tool set from @uref{http://cygwin.com/}. The latter is slower and larger (the download size of the base system is about 15 MB) but comes with a package manager that allows for updating the tool set and installing additional packages like, for example, the spell checker @w{aspell}. If Cygwin specific paths like @samp{/cygdrive/c} crop up in the course of the installation, using a non-Cygwin Emacs could conceivably cause trouble. Using Cygwin either for everything or nothing might save headaches, @emph{if} things don't work out. @item Install a current version of XEmacs from @uref{http://www.xemacs.org/} or @w{Emacs} from @uref{ftp://ftp.gnu.org/gnu/emacs/windows/}. @w{Emacs} is the recommended choice because it is currently the primary platform for @AUCTeX{} development. @item You need a working @TeX{} installation. One popular installation under Windows is @uref{http://www.miktex.org,MiK@TeX{}}. Another much more extensive system is @uref{http://www.tug.org/texlive,@w{@TeX{} Live}} which is rather close to its Unix cousins. @item A working copy of @uref{http://www.cs.wisc.edu/~ghost/,Ghostscript} is required for @previewlatex{} operation. Examining the output from @example gswin32c -h @end example on a Windows command line should tell you whether your Ghostscript supports the @code{png16m} device needed for @acronym{PNG} support. MiKTeX apparently comes with its own Ghostscript called @samp{mgs.exe}. @item @uref{http://www.perl.org,Perl} is needed for rebuilding the documentation if you are working with a copy from @acronym{CVS} or have touched documentation source files in the @previewlatex{} part. If the line endings of the file @file{preview/latex/preview.dtx} don't correspond with what Perl calls @code{\n} when reading text files, you'll run into trouble. @item Now the fun stuff starts. If you have not yet done so, unpack the @AUCTeX{} distribution into a separate directory after rereading the instructions for unpacking above. @item Ready for takeoff. Start some shell (typically @command{bash}) capable of running @command{configure}, change into the installation directory and call @command{./configure} with appropriate options. Typical options you'll want to specify will be @table @code @item --prefix=@var{drive:/path/to/emacs-hierarchy} which tells @file{configure} where to perform the installation. It may also make @file{configure} find Emacs or XEmacs automatically; if this doesn't happen, try one of @samp{--with-emacs} or @samp{--with-xemacs} as described below. All automatic detection of files and directories restricts itself to directories below the @var{prefix} or in the same hierarchy as the program accessing the files. Usually, directories like @file{man}, @file{share} and @file{bin} will be situated right under @var{prefix}. This option also affects the defaults for placing the Texinfo documentation files (see also @samp{--infodir} below) and automatically generated style hooks. If you have a central directory hierarchy (not untypical with Cygwin) for such stuff, you might want to specify its root here. You stand a good chance that this will be the only option you need to supply, as long as your @TeX{}-related executables are in your system path, which they better be for @AUCTeX{}'s operation, anyway. @item --with-emacs if you are installing for a version of Emacs. You can use @samp{--with-emacs=@var{drive:/path/to/emacs}} to specify the name of the installed Emacs executable, complete with its path if necessary (if Emacs is not within a directory specified in your @env{PATH} environment setting). @item --with-xemacs if you are installing for a version of XEmacs. Again, you can use @samp{--with-xemacs=@var{drive:/path/to/xemacs}} to specify the name of the installed XEmacs executable complete with its path if necessary. It may also be necessary to specify this option if a copy of Emacs is found in your @env{PATH} environment setting, but you still would like to install a copy of @AUCTeX{} for XEmacs. @item --with-packagedir=@var{drive:/dir} is an XEmacs-only option giving the location of the package directory. This will install and activate the package. Emacs uses a different installation scheme: @item --with-lispdir=@var{drive:/path/to/site-lisp} This Emacs-only option tells a place in @code{load-path} below which the files are situated. The startup files @file{auctex.el} and @file{preview-latex.el} will get installed here unless a subdirectory @file{site-start.d} exists which will then be used instead. The other files from @AUCTeX{} will be installed in a subdirectory called @file{auctex}. If you think that you need a different setup, please refer to the full installation instructions in @ifset rawfile the @file{INSTALL} file. @end ifset @ifclear rawfile @ref{Configure}. @end ifclear @item --infodir=@var{drive:/path/to/info/directory} If you are installing into an Emacs directory, info files have to be put into the @file{info} folder below that directory. The configuration script will usually try to install into the folder @file{share/info}, so you have to override this by specifying something like @samp{--infodir='C:/Program Files/info'} for the configure call. @item --with-auto-dir=@var{drive:/dir} Directory containing automatically generated information. You should not normally need to set this, as @samp{--prefix} should take care of this. @item --disable-preview Use this option if your Emacs version is unable to support image display. This will be the case if you are using a native variant of @w{Emacs 21}. @item --with-texmf-dir=@var{drive:/dir} This will specify the directory where your @TeX{} installation sits. If your @TeX{} installation does not conform to the TDS (@TeX{} directory standard), you may need to specify more options to get everything in place. @end table For more information about any of the above and additional options, see @ifset rawfile the `Configure' section in the @file{INSTALL} file. @end ifset @ifclear rawfile @ref{Configure}. @end ifclear Calling @file{./configure --help=recursive} will tell about other options, but those are almost never required. Some executables might not be found in your path. That is not a good idea, but you can get around by specifying environment variables to @file{configure}: @example GS="@var{drive:/path/to/gswin32c.exe}" ./configure @dots{} @end example should work for this purpose. @file{gswin32c.exe} is the usual name for the required @emph{command line} executable under Windows; in contrast, @file{gswin32.exe} is likely to fail. As an alternative to specifying variables for the @file{configure} call you can add directories containing the required executables to the @env{PATH} variable of your Windows system. This is especially a good idea if Emacs has trouble finding the respective programs later during normal operation. @item Run @command{make} in the installation directory. @item Run @code{make install} in the installation directory. @item With XEmacs, @AUCTeX{} and @previewlatex{} should now be active by default. With Emacs, activation depends on a working @file{site-start.d} directory or similar setup, since then the startup files @file{auctex.el} and @file{preview-latex.el} will have been placed there. If this has not been done, you should be able to load the startup files manually with @example (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) @end example in either a site-wide @file{site-start.el} or your personal startup file (usually accessible as @file{~/.emacs} from within Emacs and @file{~/.xemacs/init.el} from within XEmacs). @cindex @file{tex-mik.el} The default configuration of @AUCTeX{} is probably not the best fit for Windows systems with MiK@TeX{}. You might want to add @example (require 'tex-mik) @end example after loading @file{auctex.el} and @file{preview-latex.el} in order to get more appropriate values for some customization options. You can always use @example @kbd{M-x customize-group RET AUCTeX RET} @end example in order to customize more stuff, or use the @samp{Customize} menu. @item Load @file{preview/circ.tex} into Emacs or XEmacs and see if you get the @samp{Command} menu. Try using it to @LaTeX{} the file. @item Check whether the @samp{Preview} menu is available in this file. Use it to generate previews for the document. If this barfs and tells you that image type @samp{png} is not supported, you can either add @acronym{PNG} support to your Emacs installation or choose another image format to be used by @previewlatex{}. Adding support for an image format usually involves the installation of a library, e.g. from @uref{http://gnuwin32.sf.net/}. If you got your Emacs from @uref{gnu.org} you might want to check its @uref{ftp://ftp.gnu.org/gnu/emacs/windows/README,README file} for details. A different image format can be chosen by setting the variable @code{preview-image-type}. While it is recommended to keep the @samp{dvipng} or @samp{png} setting, you can temporarily select a different format like @samp{pnm} to check if the lack of @acronym{PNG} support is the only problem with your Emacs installation. Try adding the line @example (setq preview-image-type 'pnm) @end example to your init file for a quick test. You should remove the line after the test again, because @acronym{PNM} files take away @strong{vast} amounts of disk space, and thus also of load/save time. @end enumerate Well, that about is all. Have fun! auctex-11.87/doc/Makefile.in0000644000000000000000000001356111005433341014333 0ustar rootroot# Makefile for AUCTeX # Maintainer: auctex-devel@gnu.org # Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. prefix=@prefix@$(null) datarootdir=@datarootdir@$(null) datadir=@datadir@$(null) packagedir=@packagedir@$(null) infodir=@infodir@$(null) docdir=@docdir@$(null) TEX=@TEX@ PDFTEX=@PDFTEX@ MAKEINFO=@MAKEINFO@ MAKEINFO_PLAIN=-D rawfile --no-headers INSTALL_INFO=@INSTALL_INFO@ INSTALL=@INSTALL@ INSTALL_DATA=@INSTALL_DATA@ DESTDIR= TEXI2HTML=@TEXI2HTML@ TEXI2DVI=@TEXI2DVI@ TEXI2PDF=@TEXI2PDF@ MKINSTALLDIRS = ../mkinstalldirs DVIPS=@DVIPS@ PERL=@PERL@ AUCTEXDATE=@AUCTEXDATE@ AUCTEXVERSION=@AUCTEXVERSION@ PACKAGE_TARNAME=@PACKAGE_TARNAME@ AUCTEXTEXIFILES = auctex.texi install.texi wininstall.texi intro.texi \ changes.texi todo.texi faq.texi macros.texi quickstart.texi \ fdl.texi version.texi PREVIEWTEXIFILES = copying.texi preview-faq.texi macros.texi \ preview-dtxdoc.texi preview-latex.texi preview-problems.texi \ preview-readme.texi preview-todo.texi version.texi DISTTEXTS = ../README ../INSTALL ../TODO ../INSTALL.windows ../FAQ ../CHANGES all: dist info: auctex.info preview-latex.info dvi: auctex.dvi tex-ref.dvi preview-latex.dvi install: install-auctex install-preview install-man: test x$(packagedir) != xno && \ { $(MKINSTALLDIRS) $(DESTDIR)$(packagedir)/man/auctex ; \ for i in $(AUCTEXTEXIFILES) $(PREVIEWTEXIFILES) tex-ref.tex ; \ do echo $(INSTALL_DATA) $$i $(DESTDIR)$(packagedir)/man/auctex; \ $(INSTALL_DATA) $$i $(DESTDIR)$(packagedir)/man/auctex; \ done ; \ } dist: $(DISTTEXTS) preview-latex.info auctex.info tex-ref.pdf extradist: html/auctex_toc.html auctex.ps auctex.pdf tex-ref.ps tex-ref.pdf .PHONY: all info dvi dist install-auctex disttexts clean distclean \ maintainer-clean install-preview install-man html-docs extradist # AUCTeX html/auctex_toc.html: auctex.texi rm -rf html mkdir html cd html && $(TEXI2HTML) -split_node -I .. ../auctex.texi && \ test ! -d auctex || { mv auctex/* . && rm -rf auctex ; } tex-ref.dvi: tex-ref.tex $(TEX) tex-ref tex-ref.ps: tex-ref.dvi $(DVIPS) tex-ref.dvi -Ppdf -o tex-ref.ps tex-ref.pdf: tex-ref.tex $(PDFTEX) tex-ref.tex version.texi: ../ChangeLog echo @set VERSION $(AUCTEXVERSION) >version.texi echo @set UPDATED $(AUCTEXDATE) >>version.texi auctex.dvi: $(AUCTEXTEXIFILES) $(TEXI2DVI) auctex.texi auctex.pdf: $(AUCTEXTEXIFILES) $(TEXI2PDF) auctex.texi auctex.ps: auctex.dvi $(DVIPS) auctex.dvi -Ppdf -o auctex.ps auctex.info: $(AUCTEXTEXIFILES) $(MAKEINFO) auctex.texi install-auctex: auctex.info tex-ref.pdf -$(MKINSTALLDIRS) $(DESTDIR)$(infodir) rm -f $(DESTDIR)$(infodir)/auctex $(DESTDIR)$(infodir)/auctex-* $(INSTALL_DATA) auctex.info $(DESTDIR)$(infodir) for x in auctex.info-*; do \ if [ -r $$x ]; then \ $(INSTALL_DATA) $$x $(DESTDIR)$(infodir) ; \ fi; \ done -$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) auctex.info test X$(packagedir) != Xno || { \ $(MKINSTALLDIRS) $(DESTDIR)$(docdir); \ rm -f $(DESTDIR)$(docdir)/tex-ref.pdf; \ $(INSTALL_DATA) tex-ref.pdf $(DESTDIR)$(docdir); \ } # preview preview-latex/index.html: $(PREVIEWTEXIFILES) rm -f preview-latex/* $(TEXI2HTML) preview-latex.texi html-docs: preview-latex/index.html preview-dtxdoc.texi: ../preview/latex/preview.dtx preview-dtxdoc.pl -$(PERL) preview-dtxdoc.pl ../preview/latex/preview.dtx \ preview-dtxdoc.texi preview-latex.dvi: $(PREVIEWTEXIFILES) $(TEXI2DVI) preview-latex.texi preview-latex.ps: preview-latex.dvi $(DVIPS) preview-latex.dvi -Ppdf -o preview-latex.ps preview-latex.pdf: $(PREVIEWTEXIFILES) $(TEXI2PDF) preview-latex.texi preview-latex.info: $(PREVIEWTEXIFILES) $(MAKEINFO) preview-latex.texi install-preview: preview-latex.info -$(MKINSTALLDIRS) $(DESTDIR)$(infodir) for x in preview-latex.info* ; do \ $(INSTALL_DATA) $$x $(DESTDIR)$(infodir) ; \ done -$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) preview-latex.info # disttexts ../INSTALL: install.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) install.texi --output $@ ../INSTALL.windows: wininstall.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) wininstall.texi --output $@ ../README: intro.texi preview-readme.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) intro.texi --output $@ $(MAKEINFO) $(MAKEINFO_PLAIN) preview-readme.texi --output - >> $@ ../CHANGES: changes.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) changes.texi --output $@ ../TODO: todo.texi preview-todo.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) todo.texi --output $@ $(MAKEINFO) $(MAKEINFO_PLAIN) preview-todo.texi --output - >> $@ ../FAQ: faq.texi preview-faq.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) faq.texi --output $@ $(MAKEINFO) $(MAKEINFO_PLAIN) --number-sections preview-faq.texi --output - >> $@ ../PROBLEMS: preview-problems.texi macros.texi $(MAKEINFO) $(MAKEINFO_PLAIN) --number-sections preview-problems.texi --output $@ # clean clean: rm -f *.dvi *.ps *.pdf *.aux *.cp *.fn *.ky *.log *~ \#*\# \ *.tp *.vr *.pg *.toc *.tp *.bak *.cps *.kys *.tps \ *.fns *.vrs *.pgs *.tmp *.html rm -rf html preview-latex distclean: clean rm -f Makefile maintainer-clean: distclean rm -f INSTALL.windows README CHANGES HISTORY TODO FAQ \ preview-dtxdoc.texi version.texi $(DISTTEXTS) *.info *.info-* auctex-11.87/doc/tex-ref.log0000644000000000000000000001071512056205161014345 0ustar rootrootThis is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) (format=pdftex 2012.11.25) 30 NOV 2012 20:35 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **tex-ref.tex (./tex-ref.tex \columnsperpage=\count27 \intercolumnskip=\dimen16 \columna=\box16 \columnb=\box17 [3 columns per page] \keyindent=\dimen17 \metaxbox=\box18 \metaxwidth=\dimen18 Underfull \vbox (badness 10000) detected at line 396 \vbox(161.80061+2.0)x104.068 .\hbox(6.80002+2.0)x104.068, glue set 17.8531fil ..\glue(\tabskip) 0.0 ..\hbox(6.80002+2.0)x64.11172, glue set 8.50012fil ...\rule(6.80002+*)x0.0 ...\hbox(4.30554+0.0)x20.66666, glue set 14.23262fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.80002+2.0)x4.25006 ...\eighttt a ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .\glue(\baselineskip) 0.6556 .\hbox(6.94444+2.0)x104.068, glue set 17.8531fil ..\glue(\tabskip) 0.0 ..\hbox(6.94444+2.0)x64.11172, glue set 12.75018fil ...\hbox(6.94444+1.94444)x20.66666, glue set 14.48264fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...\eighttt b ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.94444+2.0)x4.25006 ...\eighttt b ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .\glue(\baselineskip) 1.60004 .\hbox(6.0+2.0)x104.068, glue set 17.8531fil ..\glue(\tabskip) 0.0 ..\hbox(6.0+2.0)x64.11172, glue set 8.50012fil ...\hbox(4.30554+1.94444)x20.66666, glue set 14.9338fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...\eighttt g ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.0+2.0)x4.25006 ...\eighttt g ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .etc. Underfull \vbox (badness 10000) detected at line 436 \vbox(176.20067+2.0)x104.068 .\hbox(6.80002+2.0)x104.068, glue set 7.22795fil ..\glue(\tabskip) 0.0 ..\hbox(6.80002+2.0)x76.86191 ...\rule(6.80002+*)x0.0 ...\hbox(3.0239+0.0)x20.66666, glue set 12.16653fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.80002+2.0)x12.75018 ...\eighttt C ...\eighttt - ...\eighttt f ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .\glue(\baselineskip) 1.60004 .\hbox(6.0+2.0)x104.068, glue set 7.22795fil ..\glue(\tabskip) 0.0 ..\hbox(6.0+2.0)x76.86191, glue set 4.25006fil ...\hbox(3.0239+0.0)x20.66666, glue set 12.16653fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...\eighttt l ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.0+2.0)x12.75018 ...\eighttt C ...\eighttt - ...\eighttt b ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .\glue(\baselineskip) 1.60004 .\hbox(6.0+2.0)x104.068, glue set 7.22795fil ..\glue(\tabskip) 0.0 ..\hbox(6.0+2.0)x76.86191, glue set 12.75018fil ...\hbox(5.55556+1.55554)x20.66666, glue set 16.4166fill [] ...\glue 2.83337 plus 1.41669 minus 0.94446 ...\eightrm ( ...\eighttt \ ...\eighttt u ...etc. ..\glue(\tabskip) 0.0 plus 1.0fil ..\hbox(6.0+2.0)x12.75018 ...\eighttt C ...\eighttt - ...\eighttt p ...\hbox(0.0+0.0)x0.0 ...\glue 0.0 plus 1.0fil ..\glue(\tabskip) 0.0 plus 1.0fil .etc. [1{/home/angeli/.texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2] ) Output written on tex-ref.pdf (2 pages, 153648 bytes). PDF statistics: 59 PDF objects out of 1000 (max. 8388607) 42 compressed objects within 1 object stream 0 named destinations out of 1000 (max. 500000) 1 words of extra memory for PDF output out of 10000 (max. 10000000) auctex-11.87/doc/tex-ref.tex0000644000000000000000000004556312055735330014402 0ustar rootroot% Reference Card for AUCTeX version 11.87 %**start of header \newcount\columnsperpage % This file has only been checked with 3 columns per page. But it % should print fine either via DVI or PDFTeX. \columnsperpage=3 % Papersize stuff. Use default paper size for PDF, but switch % orientation. Use papersize special for dvips. \ifx\pdfoutput\undefined \csname newcount\endcsname\pdfoutput \pdfoutput=0 \fi \ifnum\pdfoutput=0 % \special{papersize 8.5in,11in}% \special{papersize 297mm,210mm}% \else \dimen0\pdfpagewidth \pdfpagewidth\pdfpageheight \pdfpageheight\dimen0 \fi % This file is intended to be processed by plain TeX (TeX82). % compile-command: "tex tex-ref" or "pdftex tex-ref" % % Original author of Auc-TeX Reference Card: % % Terrence Brannon, PO Box 5027, Bethlehem, PA 18015 , USA % internet: tb06@pl118f.cc.lehigh.edu (215) 758-1720 (215) 758-2104 % % Kresten Krab Thorup updated the reference card to 6. % Per Abrahamsen updated the reference card to 7, 8, and 9. % Ralf Angeli updated it to 11.50. % And David Kastrup messed around with it, too, merging the math reference. % % Thanks to Stephen Gildea % Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik % for creating the GNU Emacs Reference Card from which this was mutated \def\versionnumber{11.87} \def\year{2012} \def\version{November \year\ v\versionnumber} \def\shortcopyrightnotice{\vskip 1ex plus 2 fill \centerline{\small \copyright\ \year\ Free Software Foundation, Inc. Permissions on back. v\versionnumber}} \def\copyrightnotice{% \vskip 1ex plus 2 fill\begingroup\small \centerline{Copyright \copyright\ 1987, 1992, 1993, 2004, 2005, 2008,} \centerline{2010, 2012 Free Software Foundation, Inc.} \centerline{for AUC\TeX\ version \versionnumber} Permission is granted to make and distribute copies of this card provided the copyright notice and this permission notice are preserved on all copies. \endgroup} % make \bye not \outer so that the \def\bye in the \else clause below % can be scanned without complaint. \def\bye{\par\vfill\supereject\end} \newdimen\intercolumnskip \newbox\columna \newbox\columnb \edef\ncolumns{\the\columnsperpage} \message{[\ncolumns\space column\if 1\ncolumns\else s\fi\space per page]} \def\scaledmag#1{ scaled \magstep #1} % This multi-way format was designed by Stephen Gildea % October 1986. \if 1\ncolumns \hsize 4in \vsize 10in \voffset -.7in \font\titlefont=\fontname\tenbf \scaledmag3 \font\headingfont=\fontname\tenbf \scaledmag2 \font\smallfont=\fontname\sevenrm \font\smallsy=\fontname\sevensy \footline{\hss\folio} \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}} \else \hsize 3.2in \vsize 7.6in \hoffset -.75in \voffset -.8in \font\titlefont=cmbx10 \scaledmag2 \font\headingfont=cmbx10 \scaledmag1 \font\smallfont=cmr6 \font\smallsy=cmsy6 \font\eightrm=cmr8 \font\eightbf=cmbx8 \font\eightit=cmti8 \font\eighttt=cmtt8 \font\eightsl=cmsl8 \font\eightsc=cmcsc8 \font\eightsy=cmsy8 \textfont0=\eightrm \textfont2=\eightsy \def\rm{\fam0 \eightrm} \def\bf{\eightbf} \def\it{\eightit} \def\tt{\eighttt} \def\sl{\eightsl} \def\sc{\eightsc} \normalbaselineskip=.8\normalbaselineskip \ht\strutbox.8\ht\strutbox \dp\strutbox.8\dp\strutbox \normallineskip=.8\normallineskip \normallineskiplimit=.8\normallineskiplimit \normalbaselines\rm %make definitions take effect \if 2\ncolumns \let\maxcolumn=b \footline{\hss\rm\folio\hss} \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}} \else \if 3\ncolumns \let\maxcolumn=c \nopagenumbers \else \errhelp{You must set \columnsperpage equal to 1, 2, or 3.} \errmessage{Illegal number of columns per page} \fi\fi \intercolumnskip=.46in \def\abc{a} \output={% % This next line is useful when designing the layout. %\immediate\write16{Column \folio\abc\space starts with \firstmark} \if \maxcolumn\abc \multicolumnformat \global\def\abc{a} \else\if a\abc \global\setbox\columna\columnbox \global\def\abc{b} %% in case we never use \columnb (two-column mode) \global\setbox\columnb\hbox to -\intercolumnskip{} \else \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi} \def\multicolumnformat{\shipout\vbox{\makeheadline \hbox{\box\columna\hskip\intercolumnskip \box\columnb\hskip\intercolumnskip\columnbox} \makefootline}\advancepageno} \def\columnbox{\leftline{\pagebody}} \def\bye{\par\vfill\supereject \if a\abc \else\null\vfill\eject\fi \if a\abc \else\null\vfill\eject\fi \end} \fi % we won't be using math mode much, so redefine some of the characters % we might want to talk about \catcode`\^=12 \catcode`\_=12 \chardef\\=`\\ \chardef\{=`\{ \chardef\}=`\} \hyphenation{mini-buf-fer} \parindent 0pt \parskip 1ex plus .5ex minus .5ex \def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip} \def\newcolumn{\vfill\eject} \def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex} \def\section#1{\par\vskip 0pt plus 0.2\vsize \penalty-3000 \vskip 0pt plus -0.2\vsize \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}% \vskip 2ex plus 1ex minus 1.5ex} \newdimen\keyindent \def\beginindentedkeys{\keyindent=1em} \def\endindentedkeys{\keyindent=0em} \endindentedkeys \def\paralign{\vskip\parskip\halign} \def\<#1>{$\langle${\rm #1}$\rangle$} \def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows \def\beginexample{\par\leavevmode\begingroup \obeylines\obeyspaces\parskip0pt\tt} {\obeyspaces\global\let =\ } \def\endexample{\endgroup} \def\key#1#2{\leavevmode\hbox to \hsize{\vtop {\hsize=.68\hsize\rightskip=1em \hskip\keyindent\relax#1}\kbd{#2}\hfil}} \newbox\metaxbox \setbox\metaxbox\hbox{\kbd{M-x }} \newdimen\metaxwidth \metaxwidth=\wd\metaxbox \def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize {\hskip\keyindent\relax#1\hfil}% \hskip -\metaxwidth minus 1fil \kbd{#2}\hfil}} \def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad &\kbd{#3}\quad\cr} \def\LaTeX{% L\kern-.36em\raise.3ex\hbox{\sc{a}}\kern-.15em\TeX} %**end of header \title{AUC\TeX\ Reference Card} \centerline{(for version \versionnumber)} \section{Conventions Used} \key{Carriage Return or \kbd{C-m}}{RET} \key{Tabular or \kbd{C-i}}{TAB} \key{Linefeed or \kbd{C-j}}{LFD} \section{Shell Interaction} \key{Run a command on the master file}{C-c C-c} \key{Run a command on the buffer}{C-c C-b} \key{Run a command on the region}{C-c C-r} \key{Fix the region}{C-c C-t C-r} \key{Kill job}{C-c C-k} \key{Recenter output buffer}{C-c C-l} \key{Next error in \TeX/\LaTeX\ session}{C-c `} \key{Toggle debug of bad boxes}{C-c C-t C-b} \key{Toggle debug of warnings}{C-c C-t C-w} \key{View output file}{C-c C-v} Commands you can run on the master file (with \kbd{C-c C-c}) or the region (with \kbd{C-c C-r}) include the following (starred versions are not available in all modes): \def\star{\llap{\rm*}} \key{\TeX}{\star TeX} \key{\LaTeX}{\star LaTeX} \key{Con\TeX{}t (once)}{\star ConTeXt} \key{Con\TeX{}t Full}{\star ConTeXt Full} \key{Makeinfo}{\star Makeinfo} \key{Makeinfo with HTML output}{\star Makeinfo HTML} \key{Appropriate previewer}{View} \key{Print the output}{Print} \key{Bib\TeX}{BibTeX} \key{Biber}{Biber} \key{MakeIndex}{Index} \key{LaCheck}{Check} \key{Make (PostScript) File}{File} \key{Ispell}{Spell} \key{Delete intermediate files}{Clean} \key{Delete all output files files}{Clean All} \section{\TeX ing options} \TeX\ runs can come in various types, which may be toggled and are indicated in the mode line. \key{PDF/DVI mode}{C-c C-t C-p} \key{Stop on errors (Interactive mode)}{C-c C-t C-i} \key{I/O correlation (S. Specials, Sync\TeX)}{C-c C-t C-s} \section{Miscellaneous} \key{Read AUC\TeX\ manual}{C-c TAB} \key{Math Mode}{C-c \string~} \key{Reset Buffer}{C-c C-n} \key{Reset AUC\TeX}{C-u C-c C-n} \section{Multifile Handling} \key{Save Document}{C-c C-d} \key{Switch to master file or active buffer}{C-c ^} \key{Query for a master file}{C-c \_} \section{Command Insertion} \key{Insert Section}{C-c C-s} \key{Insert \LaTeX\ environment}{C-c C-e} \key{Insert item}{C-c LFD} \key{Insert item (alias)}{M-RET} \key{Close \LaTeX\ environment}{C-c ]} \key{Insert \TeX\ macro \kbd{\\\{\}} }{C-c C-m} \key{Insert double brace}{C-c \{} \key{Complete \TeX\ macro}{M-TAB} \key{Smart ``quote''}{"} \key{Smart ``dollar''}{\$} \section{Font Selection} \key{Insert {\bf bold\/} text}{C-c C-f C-b} \key{Insert {\it italics\/} text}{C-c C-f C-i} \key{Insert {\rm roman} text}{C-c C-f C-r} \key{Insert {\it emphasized\/} text}{C-c C-f C-e} \key{Insert {\tt typewriter\/} text}{C-c C-f C-t} \key{Insert {\sl slanted\/} text}{C-c C-f C-s} \key{Insert {\sc Small Caps\/} text}{C-c C-f C-c} \key{Delete font}{C-c C-f C-d} \key{Replace font}{C-u C-c C-f \} \section{Source Formatting} \key{Indent current line}{TAB} \key{Indent next line}{LFD} \key{Format a paragraph}{M-q} \key{Format a region}{C-c C-q C-r} \key{Format a section}{C-c C-q C-s} \key{Format an environment}{C-c C-q C-e} \key{Mark an environment}{C-c .} \key{Mark a section}{C-c *} \key{Comment or uncomment region}{C-c ;} \key{Comment or uncomment paragraph}{C-c \%} \copyrightnotice \newcolumn \title{Math Mode} \section{Variables} All math mode commands are under the prefix key specified by LaTeX-math-abbrev-prefix, default is "`". You can define your own math mode commands by setting the variable LaTeX-math-list before loading LaTeX-math-mode. \section{Greek Letters} \def\disp#1{\hbox to 6ex{$#1$\hfill}} \def\twocol#1\par{{% \def\key##1##2{##1&##2\cr}% \setbox0\vbox{\halign to 0.45\hsize{\tabskip0ptplus1fil\relax ##\hfil&\kbd{##}\hfil\cr\vrule width0ptheight\ht\strutbox#1}}% \line{% \splittopskip=\ht\strutbox \dimen0\ht0 \advance\dimen0\baselineskip \setbox2\vsplit0to0.5\dimen0 \vtop{\unvbox2}\hfill\raise \ht\strutbox \vtop {\unvbox0}}}} \def\keycs#1#2#{\keycsii#1{#2}} \def\keycsii#1#2#3{\key{\disp{#1#2} ({\tt\string#1})}{#3}} \twocol \keycs\alpha{a} \keycs\beta{b} \keycs\gamma{g} \keycs\delta{d} \keycs\epsilon{e} \keycs\zeta{z} \keycs\eta{h} \keycs\theta{j} \keycs\kappa{k} \keycs\lambda{l} \keycs\mu{m} \keycs\nu{n} \keycs\xi{x} \keycs\pi{p} \keycs\rho{r} \keycs\sigma{s} \keycs\tau{t} \keycs\upsilon{u} \keycs\phi{f} \keycs\chi{q} \keycs\psi{y} \keycs\omega{w} \keycs\Delta{D} \keycs\Gamma{G} \keycs\Theta{Q} \keycs\Lambda{L} \keycs\Xi{X} \keycs\Pi{P} \keycs\Sigma{S} \keycs\Upsilon{U} \keycs\Phi{F} \keycs\Psi{Y} \keycs\Omega{W} \section{Symbols} \twocol \keycs\rightarrow{C-f} \keycs\leftarrow{C-b} \keycs\uparrow{C-p} \keycs\downarrow{C-n} \keycs\leq{<} \keycs\geq{>} \keycs\tilde x{\string~} \keycs\nabla{N} \keycs\infty{I} \keycs\forall{A} \keycs\exists{E} \keycs\not \ {/} \keycs\in{i} \keycs\times{*} \keycs\cdot{.} \keycs\subset{\{} \keycs\supset{\}} \keycs\subseteq{[} \keycs\supseteq{]} \keycs\emptyset{0} \keycs\setminus{\\} \keycs\cup{+} \keycs\cap{-} \keycs\langle{(} \keycs\rangle{)} \keycs\exp{C-e} \keycs\sin{C-s} \keycs\cos{C-c} \keycs\sup{C-^} \keycs\inf{C-_} \keycs\det{C-d} \keycs\lim{C-l} \keycs\tan{C-t} \keycs\hat x{^} \keycs\vee{|} \keycs\wedge{\&} \section{Miscellaneous} \key{cal letters}{c \} \newcolumn \def\previewlatex{{preview-latex}} \title{\previewlatex} \section{Activation} \previewlatex\ is part of AUC\TeX. If it is active, you should see an entry ``Preview'' in the menu bar when editing \LaTeX{} files. If you have a ``LaTeX'', but no ``Preview'' menu, add the following to your {\tt .emacs} file: \beginexample (load "preview-latex.el" nil t t) \endexample \section{Usage and keybindings} \previewlatex\ operation only affects the display of the buffer, not its contents. It runs only on demand, using the target {\sc dvi} or {\sc PDF} files in the process. The first command in the following list (also on the toolbar button) will (as applicable) repreview an active region or a single modified preview, toggle the visibility of an unmodified preview or generate previews for a surrounding buffer area up to the next preview. \key{Preview at point}{C-c C-p C-p} \key{Preview environment}{C-c C-p C-e} \key{Preview region}{C-c C-p C-r} \key{Preview buffer}{C-c C-p C-b} \key{Preview document}{C-c C-p C-d} \key{Remove previews at point}{C-c C-p C-c C-p} \key{Remove previews from region}{C-c C-p C-c C-r} \key{Remove previews from buffer}{C-c C-p C-c C-b} \key{Remove previews from document}{C-c C-p C-c C-d} \key{Cache preamble}{C-c C-p C-f} \key{Switch off preamble cache}{C-c C-p C-c C-f} \key{Read Texinfo manual}{C-c C-p TAB} \key{Copy region as MML}{C-c C-p C-w} The last keysequence will copy a region with previews into the kill buffer in a form fit for sending in Emacs' message-mode. \section{Customization within Emacs} You can use \kbd{M-x customize-variable RET} or the ``Preview\slash Customize'' menu for customization. Worthwhile settings: \halign to \hsize{\tabskip=1ptplus1fil\relax#\hfil&\hfil\kbd{#}\tabskip0pt\cr \noalign{\medskip If you have dvipng available:} Set to \kbd{dvipng}&preview-image-type\cr \noalign{\medskip \vbox{Keep counter values when regenerating single previews:}} Set to \kbd{t}&preview-preserve-counters\cr \noalign{\medskip \vbox{Cache/Don't cache preamble without query (preamble caching is done using {\tt mylatex.ltx} and might not always work. Use the appropriate key sequences for overriding the following setting):}} Set to \kbd{t}/\kbd{nil}&preview-auto-cache-preamble\cr} \section{Customization from \LaTeX{}} Customization is done in the document preamble (you need to load {\tt preview.sty} explicitly) or in {\tt prauctex.cfg} (which should load the system {prauctex.cfg} first). Commands: \halign to \hsize{\tabskip=1ptplus1fil\relax#\hfil&\hfil\kbd{#}\tabskip0pt\cr Preview macro&\string\PreviewMacro[\{\\}]\{\\}\cr Preview env&\string\PreviewEnvironment[\{\\}]\{\\}\cr Skip macro&\string\PreviewMacro*[\{\\}]\{\\}\cr Skip env&\string\PreviewEnvironment*[\{\\}]\{\\}\cr \noalign{\smallskip Diverting material from float environments} Snarf stuff&\string\PreviewSnarfEnvironment[\{\\}]\{\\}\cr } Values to be used within \: \halign to \hsize{\tabskip=1ptplus1fil\relax#\hfil&\hfil\kbd{#}\tabskip0pt\cr Optional argument&[]\cr Mandatory argument&\{\}\cr Optional star&*\cr Conditionals&?\\{\\}\{\\}\cr Skip next token&-\cr Transformation&\#\{\\}\{\\}\cr } More options and explanations can be found in {\tt preview.dvi} or the Texinfo manual. \vskip 5ex plus 6ex minus 1ex \title{Folding Source Display} \key{Toggle folding mode}{C-c C-o C-f} \key{Hide all items in buffer}{C-c C-o C-b} \key{Hide all items in region}{C-c C-o C-r} \key{Hide all items in paragraph}{C-c C-o C-p} \key{Hide current macro}{C-c C-o C-m} \key{Hide current environment}{C-c C-o C-e} \key{Show all items in buffer}{C-c C-o b} \key{Show all items in region}{C-c C-o r} \key{Show all items in paragraph}{C-c C-o p} \key{Show current item}{C-c C-o i} \key{Hide or show current item}{C-c C-o C-o} \vskip 5ex plus 6ex minus 1ex \title{Outlining \TeX\ Documents} AUC\TeX\ supports outline mode by defining section, subsection, etc. as heading levels. You can use \kbd{M-x outline-minor-mode RET} to toggle outline minor mode. All outline minor mode commands are under the prefix key specified by outline-minor-mode-prefix, default is ``C-c @''. \key{Hide all of buffer except headings}{C-c @ C-t} \key{Show all text in buffer}{C-c @ C-a} \key{Hide body following this heading}{C-c @ C-c} \key{Show body following this heading}{C-c @ C-e} \key{Hide subtree}{C-c @ C-d} \key{Show subtree}{C-c @ C-s} \key{All subheadings visible}{C-c @ C-k} \key{next visible heading}{C-c @ C-n} \key{previous visible heading}{C-c @ C-p} \key{forward to next subheading}{C-c @ C-f} \key{backward to next subheading}{C-c @ C-b} \key{up one heading level}{C-c @ C-u} \newcolumn \iftrue % RefTeX long version \title{RefTeX} \section{Activation} RefTeX is part of [X]Emacs. To activate and make it interact with AUCTeX, insert the following lines in .emacs. \vskip-3mm \beginexample (add-hook 'latex-mode-hook 'turn-on-reftex) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-auctex t) \endexample \section{Table of Contents} The table of contents is a structured view of the entire document. It contains the sections, and optionally labels, index entries, and file boundaries. \key{Show the table of contents$\sp1$}{C-c =} \key{Recenter *toc* buffer to here$\sp1$}{C-c -} \section{Crossreferences, Citations, Index} \key{Insert unique label$\sp1$}{C-c (} \key{Reference a label$\sp1$}{C-c )} \key{Insert citation with key selection}{C-c [} \key{\dots\ prompt for optional arguments}{C-u C-c [} \key{Index word at point with default macro}{C-c /} \key{Insert an index entry}{C-c <} \key{Add word to index phrases}{C-c \\} \key{Visit index phrases buffer}{C-c |} \key{Compile and display index}{C-c >} \key{View cross reference$\sp1$}{C-c \&} \key{View cross reference with mouse}{S-mouse-2} \key{View cross reference from BibTeX file}{C-c \&} \section{Standard keys in special buffers} RefTeX's special buffers have many active keys. The common ones are: \key{Display summary of active keys}{?} \key{Select this item}{RET} \key{Rescan the document}{r} \key{Display location in other window}{SPC} \key{Follow mode}{f} \section{Multifile actions} Since RefTeX scans the entire (multifile) document, it can provide commands that act on all files of a document. Check the {\tt Ref->Global Actions} menu for these commands. \section{Variables} To tell reftex about your own macro definitions, customize the variables \vskip-3mm \beginexample reftex-label-alist reftex-section-lecels reftex-index-macros reftex-cite-format \endexample \vskip2mm\hrule $\sp1$ An argument of \kbd{C-u} triggers a document scan first. This can be necessary if file content and RefTeX's knowledge are no longer consistent. \else % RefTeX compact version \csname title\endcsname{RefTeX} \section{Activation in .emacs} \vskip-4mm \beginexample (add-hook 'latex-mode-hook 'turn-on-reftex) (add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-auctex t) \endexample \section{Table of Contents} \key{Show the table of contents$\sp1$}{C-c =} \key{Recenter *toc* buffer to here$\sp1$}{C-c -} \section{Crossreferences, Citations, Index} \key{Insert unique label$\sp1$}{C-c (} \key{Reference a label$\sp1$}{C-c )} \key{Insert citation with key selection}{C-c [} \key{... prompt for optional arguments}{C-u C-c [} \key{Index word at point with default macro}{C-c /} \key{Insert an index entry}{C-c <} \key{Add word to index phrases}{C-c \\} \key{Visit index phrases buffer}{C-c |} \key{Compile and display index}{C-c >} \key{View cross reference$\sp1$}{C-c \&} \key{View cross reference with mouse}{S-mouse-2} \key{View cross reference from BibTeX file}{C-c \&} \vskip2mm\hrule $\sp1$ An argument of \kbd{C-u} triggers a document scan first. \fi \bye %%% Local Variables: %%% mode: plain-TeX %%% TeX-master: t %%% End: auctex-11.87/doc/preview-latex.texi0000644000000000000000000010530512013365745015767 0ustar rootroot\input texinfo @comment %**start of header @setfilename preview-latex.info @include version.texi @settitle preview-latex @value{VERSION} @comment %**end of header @include macros.texi @copying This manual is for preview-latex, a @LaTeX{} preview mode for @AUCTeX{} (version @value{VERSION} from @value{UPDATED}). Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License.'' @end quotation @end copying @dircategory Emacs @direntry * preview-latex: (preview-latex). Preview LaTeX fragments in Emacs @end direntry @dircategory TeX @direntry * preview-latex: (preview-latex). Preview LaTeX fragments in Emacs @end direntry @c footnotestyle separate @c paragraphindent 2 @syncodeindex vr cp @syncodeindex ky cp @syncodeindex fn cp @iftex @tolerance 10000 @emergencystretch 3em @end iftex @finalout @titlepage @title @previewlatex{} @subtitle A @LaTeX{} preview mode for @AUCTeX{} in Emacs. @subtitle Version @value{VERSION}, @value{UPDATED} @author Jan-@AA{}ke Larsson @author David Kastrup and others @page @vskip 0pt plus 1filll @insertcopying @end titlepage @c @summarycontents @contents @c Use @ifinfo _and_ @ifhtml here because Texinfo 3 cannot cope with @c @ifnottex around a top node. @ifinfo @node top, , (dir), (dir) @top @previewlatex{} This manual may be copied under the conditions spelled out in @ref{Copying this Manual}. @end ifinfo @ifhtml @node top, Copying, (dir), (dir) @top @previewlatex{} @insertcopying @end ifhtml @contents @iftex @unnumbered @previewlatex{} @end iftex @previewlatex{} is a package embedding preview fragments into Emacs source buffers under the @AUCTeX{} editing environment for @LaTeX{}. It uses @file{preview.sty} for the extraction of certain environments (most notably displayed formulas). Other applications of this style file are possible and exist. The name of the package is really @samp{preview-latex}, all in lowercase letters, with a hyphen. If you typeset it, you can use a sans-serif font to visually offset it. @menu * Copying:: Copying * Introduction:: Getting started. * Installation:: Make Install. * Keys and lisp:: Key bindings and user-level lisp functions. * Simple customization:: To make it fit in. * Known problems:: When things go wrong. * For advanced users:: Internals and more customizations. * ToDo:: Future development. * Frequently Asked Questions:: All about @previewlatex{} * Copying this Manual:: GNU Free Documentation License * Index:: A menu of many topics. @end menu @node Copying, Introduction, top, top @unnumbered Copying @cindex Copying @cindex Copyright @cindex GPL @cindex General Public License @cindex License @cindex Free @cindex Free software @cindex Distribution @cindex Right @cindex Warranty For the conditions for copying parts of @previewlatex{}, see the General Public Licenses referres to in the copyright notices of the files, the General Public Licenses accompanying them and the explanatory section in @ref{Copying,,,auctex,the @AUCTeX{} manual}. This manual specifically is covered by the GNU Free Documentation License (@pxref{Copying this Manual}). @node Introduction, Installation, Copying, top @c Used as @file{README} as well: in separate file @chapter Introduction @include preview-readme.texi @node Installation, Keys and lisp, Introduction, top @chapter Installation Installation is now being covered in @ref{Installation,,,auctex,the @AUCTeX{} manual}. @node Keys and lisp, Simple customization, Installation, top @chapter Key bindings and user-level lisp functions @cindex Menu entries @previewlatex{} adds key bindings starting with @kbd{C-c C-p} to the supported modes of @AUCTeX{} (@inforef{Key Index,,auctex}). It will also add its own @samp{Preview} menu in the menu bar, as well as an icon in the toolbar. The following only describes the interactive use: view the documentation strings with @kbd{C-h f} if you need the Lisp information. @table @w @item @kbd{C-c C-p C-p} @itemx @code{preview-at-point} @itemx Preview/Generate previews (or toggle) at point If the cursor is positioned on or inside of a preview area, this toggles its visibility, regenerating the preview if necessary. If not, it will run the surroundings through preview. The surroundings include all areas up to the next valid preview, unless invalid previews occur before, in which case the area will include the last such preview in either direction. And overriding any other action, if a region is active (@code{transient-mark-mode} or @code{zmacs-regions}), it is run through @code{preview-region}. @kindex @kbd{C-c C-p C-p} @findex preview-at-point @item @kbd{} The middle mouse button has a similar action bound to it as @code{preview-at-point}, only that it knows which preview to apply it to according to the position of the click. You can click either anywhere on a previewed image, or when the preview is opened and showing the source text, you can click on the icon preceding the source text. In other areas, the usual mouse key action (typically: paste) is not affected. @item @kbd{} The right mouse key pops up a context menu with several options: toggling the preview, regenerating it, removing it (leaving the unpreviewed text), copying the text inside of the preview, and copying it in a form suitable for copying as an image into a mail or news article. This is a one-image variant of the following command: @item @kbd{C-c C-p C-w} @itemx @code{preview-copy-region-as-mml} @itemx Copy a region as MML @kindex @kbd{C-c C-p C-w} @findex preview-copy-region-as-mml This command is also available as a variant in the context menu on the right mouse button (where the region is the preview that has been clicked on). It copies the current region into the kill buffer in a form suitable for copying as a text including images into a mail or news article using mml-mode (@pxref{Composing,,Composing,emacs-mime,Emacs MIME}). If you regenerate or otherwise kill the preview in its source buffer before the mail or news gets posted, this will fail. Also you should generate images you want to send with @code{preview-transparent-border} @vindex preview-transparent-border set to @code{nil}, or the images will have an ugly border. @previewlatex{} detects this condition and asks whether to regenerate the region with borders switched off. As this is an asynchronous operation running in the background, you'll need to call this command explicitly again to get the newly generated images into the kill ring. Preview your articles with @code{mml-preview} (on @kbd{M-m P}, or @kbd{C-c C-m P} in @w{Emacs 22}) @kindex @kbd{M-m P} @kindex @kbd{C-c C-m P} to make sure they look fine. @item @kbd{C-c C-p C-e} @itemx @code{preview-environment} @itemx Preview/Generate previews for environment Run preview on @LaTeX{} environment. The environments in @code{preview-inner-environments} are treated as inner levels so that for instance, the @code{split} environment in @code{\begin@{equation@}\begin@{split@}@dots{}\end@{split@}\end@{equation@}} is properly displayed. If called with a numeric argument, the corresponding number of outward nested environments is treated as inner levels. @kindex @kbd{C-c C-p C-e} @findex preview-environment @item @kbd{C-c C-p C-s} @itemx @code{preview-section} @itemx Preview/Generate previews for section Run preview on this @LaTeX{} section. @kindex @kbd{C-c C-p C-s} @findex preview-section @item @kbd{C-c C-p C-r} @itemx @code{preview-region} @itemx Preview/Generate previews for region Run preview on current region. @kindex @kbd{C-c C-p C-r} @findex preview-region @item @kbd{C-c C-p C-b} @itemx @code{preview-buffer} @itemx Preview/Generate previews for buffer Run preview on the current buffer. @kindex @kbd{C-c C-p C-b} @findex preview-buffer @item @kbd{C-c C-p C-d} @itemx @code{preview-document} @itemx Preview/Generate previews for document Run preview on the current document. @kindex @kbd{C-c C-p C-d} @findex preview-document @item @kbd{C-c C-p C-c C-p} @itemx @code{preview-clearout-at-point} @itemx Preview/Remove previews at point @kindex @kbd{C-c C-p C-c C-p} @findex preview-clearout-at-point Clear out (remove) the previews that are immediately adjacent to point. @item @kbd{C-c C-p C-c C-s} @itemx @code{preview-clearout-section} @itemx Preview/Remove previews from section @kindex @kbd{C-c C-p C-c C-s} @findex preview-clearout-document Clear out all previews in current section. @item @kbd{C-c C-p C-c C-r} @itemx @code{preview-clearout} @itemx Preview/Remove previews from region @kindex @kbd{C-c C-p C-c C-r} @findex preview-clearout Clear out all previews in the current region. @item @kbd{C-c C-p C-c C-b} @itemx @code{preview-clearout-buffer} @itemx Preview/Remove previews from buffer @kindex @kbd{C-c C-p C-c C-b} @findex preview-clearout-buffer Clear out all previews in current buffer. This makes the current buffer lose all previews. @item @kbd{C-c C-p C-c C-d} @itemx @code{preview-clearout-document} @itemx Preview/Remove previews from document @kindex @kbd{C-c C-p C-c C-d} @findex preview-clearout-document Clear out all previews in current document. The document consists of all buffers that have the same master file as the current buffer. This makes the current document lose all previews. @item @kbd{C-c C-p C-f} @itemx @code{preview-cache-preamble} @itemx Preview/Turn preamble cache on @kindex @kbd{C-c C-p C-f} @findex preview-cache-preamble Dump a pregenerated format file. For the rest of the session, this file is used when running on the same master file. Use this if you know your @LaTeX{} takes a long time to start up, the speedup will be most noticeable when generating single or few previews. If you change your preamble, do this again. @previewlatex{} will try to detect the necessity of that automatically when editing changes to the preamble are done from within Emacs, but it will not notice if the preamble effectively changes because some included file or style file is tampered with. @item @kbd{C-c C-p C-c C-f} @itemx @code{preview-cache-preamble-off} @itemx Preview/Turn preamble cache off @kindex @kbd{C-u C-c C-p C-f} @findex preview-cache-preamble-off Clear the pregenerated format file and stop using preambles for the current document. If the caching gives you problems, use this. @item @kbd{C-c C-p C-i} @itemx @code{preview-goto-info-page} @itemx Preview/Read Documentation @kindex @kbd{C-c C-p C-i} @findex preview-goto-info-page Read @ifinfo this @end ifinfo @ifnotinfo the @end ifnotinfo info manual. @item @kbd{M-x preview-report-bug @key{RET}} @itemx @code{preview-report-bug} @itemx Preview/Report Bug @kindex @kbd{M-x preview-report-bug @key{RET}} @findex preview-report-bug @cindex Report a bug This is the preferred way of reporting bugs as it will fill in what version of @previewlatex{} you are using as well as versions of relevant other software, and also some of the more important settings. Please use this method of reporting, if at all possible and before reporting a bug, have a look at @ref{Known problems}. @item @kbd{C-c C-k} @itemx LaTeX/TeX Output/Kill Job @kindex @kbd{C-c C-k} @cindex Kill preview-generating process Kills the preview-generating process. This is really an @AUCTeX{} keybinding, but it is included here as a hint. If you are generating a preview and then make a change to the buffer, @previewlatex{} may be confused and place the previews wrong. @end table @node Simple customization, Known problems, Keys and lisp, top @chapter Simple customization Customization options can be found by typing @kbd{M-x customize-group @key{RET} preview @key{RET}}. Remember to set the option when you have changed it. The list of suggestions can be made very long (and is covered in detail in @ref{For advanced users}), but some are: @itemize @bullet @item Change the color of the preview background If you use a non-white background in Emacs, you might have color artifacts at the edges of your previews. Playing around with the option @code{preview-transparent-color} in the @code{Preview Appearance} group might improve things. With some settings, the cursor may cover the whole background of a preview, however. This option is specific to the display engine in use. Its default is different in @w{Emacs 21} and @w{Emacs 22}, and it is not available in XEmacs. @item Showing @code{\label}s @cindex Showing @code{\label}s When using @previewlatex{}, the @code{\label}s are hidden by the previews. It is possible to make them visible in the output by using the @LaTeX{} package @code{showkeys} alternatively @code{showlabels}. However, the boxes of these labels will be outside the region @previewlatex{} considers as the preview image. To enable a similar mechanism internal to @previewlatex{}, enable the @code{showlabels} option in the variable @code{preview-default-option-list} in the @code{Preview Latex} group. It must be noted, however, that a much better idea may be to use the Ref@TeX{} package for managing references. @xref{RefTeX in a Nutshell,,RefTeX in a Nutshell,reftex,The Ref@TeX{} Manual}. @item Open previews automatically The current default is to open previews automatically when you enter them with cursor left/right motions. Auto-opened previews will close again once the cursor leaves them again (this is also done when doing incremental search, or query-replace operations), unless you changed anything in it. In that case, you will have to regenerate the preview (via e.g., @kbd{C-c C-p C-p}). Other options for @code{preview-auto-reveal} are available via @code{customize}. @item Automatically cache preambles Currently @previewlatex{} asks you whether you want to cache the document preamble (everything before @code{\begin@{document@}}) before it generates previews for a buffer the first time. Caching the preamble will significantly speed up regeneration of previews. The larger your preamble is, the more this will be apparent. Once a preamble is cached, @previewlatex{} will try to keep track of when it is changed, and dump a fresh format in that case. If you experience problems with this, or if you want it to happen without asking you the first time, you can customize the variable @code{preview-auto-cache-preamble}. @vindex preview-auto-cache-preamble @cindex Caching a preamble @item Attempt to keep counters accurate when editing @vindex preview-preserve-counters @vindex preview-required-option-list Since @previewlatex{} frequently runs only small regions through @LaTeX{}, values like equation counters are not consistent from run to run. If this bothers you, customize the variable @code{preview-preserve-counters} to @code{t} (this is consulted by @code{preview-required-option-list}). @LaTeX{} will then output a load of counter information during compilation, and this information will be used on subsequent updates to keep counters set to useful values. The additional information takes additional time to analyze, but this is relevant mostly only when you are regenerating all previews at once, and maybe you will be less tempted to do so when counters appear more or less correct. @item Preview your favourite @LaTeX{} constructs If you have a certain macro or environment that you want to preview, first check if it can be chosen by cutomizing @code{preview-default-options-list} in the @code{Preview Latex} group. If it is not available there, you can add it to @code{preview-default-preamble} also in the @code{Preview Latex} group, by adding a @code{\PreviewMacro} or @code{\PreviewEnvironment} entry (@pxref{Provided commands}) @emph{after} the @code{\RequirePackage} line. For example, if you want to preview the @code{center} environment, press the @key{Show} button and the last @key{INS} button, then add @example \PreviewEnvironment@{center@} @end example @noindent in the space that just opened. Note that since @code{center} is a generic formatting construct of @LaTeX{}, a general configuration like that is not quite prudent. You better to do this on a per-document base so that it is easy to disable this behavior when you find this particular entry gives you trouble. One possibility is to save such settings in the corresponding file-local variable instead of your global configuration (@pxref{File Variables,,Local Variables in Files,emacs,GNU Emacs Manual}). A perhaps more convenient place for such options would be in a configuration file in the same directory with your project (@pxref{Package options}). The usual file for @previewlatex{} preconfiguration is @file{prauctex.cfg}. If you also want to keep the systemwide defaults, you should add a line @example \InputIfFileExists@{preview/prauctex.cfg@}@{@}@{@} @end example @noindent to your own version of @file{prauctex.cfg} (this is assuming that global files relating to the @code{preview} package are installed in a subdirectory @file{preview}, the default behavior). @item Don't preview inline math @cindex Inline math If you have performance problems because your document is full of inline math (@code{$@dots{}$}), or if your usage of @code{$} conflicts with @previewlatex{}'s, you can turn off inline math previews. In the @code{Preview Latex} group, remove @code{textmath} from @code{preview-default-option-list} by customizing this variable. @end itemize @node Known problems, For advanced users, Simple customization, top @chapter Known problems @c also used as PROBLEMS file @include preview-problems.texi @node For advanced users, ToDo, Known problems, top @chapter For advanced users This package consists of two parts: a @LaTeX{} style that splits the output into appropriate parts with one preview object on each page, and an Emacs-lisp part integrating the thing into Emacs (aided by @AUCTeX{}). @menu * The LaTeX style file:: * The Emacs interface:: * The preview images:: * Misplaced previews:: @end menu @node The LaTeX style file, The Emacs interface, For advanced users, For advanced users @section The @LaTeX{} style file @c Autogenerated from ../preview.dtx @include preview-dtxdoc.texi @node The Emacs interface, The preview images, The LaTeX style file, For advanced users @section The Emacs interface You can use @kbd{M-x customize-group @key{RET} preview-latex @key{RET}} in order to customize these variables, or use the menus for it. We explain the various available options together with explaining how they work together in making @previewlatex{} work as intended. @vtable @code @item preview-LaTeX-command When you generate previews on a buffer or a region, the command in @code{preview-LaTeX-command} gets run (that variable should only be changed with Customize since its structure is somewhat peculiar, though expressive). As usual with @AUCTeX{}, you can continue working while this is going on. It is not a good idea to change the file until after @previewlatex{} has established where to place the previews which it can only do after the @LaTeX{} run completes. This run produces a host of pseudo-error messages that get parsed by @previewlatex{} at the end of the @LaTeX{} run and give it the necessary information about where in the source file the @LaTeX{} code for the various previews is located exactly. The parsing takes a moment and will render Emacs busy. @item preview-LaTeX-command-replacements This variable specifies transformations to be used before calling the configured command. One possibility is to have @samp{\pdfoutput=0 } appended to every command starting with @samp{pdf}. This particular setting is available as the shortcut @samp{preview-LaTeX-disable-pdfoutput}. Since @previewlatex{} can work with @acronym{PDF} files by now, there is little incentive for using this option, anymore (for projects not requiring @acronym{PDF} output, the added speed of @samp{dvipng} might make this somewhat attractive). @item preview-required-option-list @code{preview-LaTeX-command} uses @code{preview-required-option-list} in order to pass options such as @option{auctex}, @option{active} and @option{dvips} to the @file{preview} package. This means that the user need (and should) not supply these in the document itself in case he wants to be able to still compile his document without it turning into an incoherent mass of little pictures. These options even get passed in when the user loads @file{preview} explicitly in his document. The default includes an option @code{counters} that is controlled by the boolean variable @item preview-preserve-counters This option will cause the @file{preview} package to emit information that will assist in keeping things like equation counters and section numbers reasonably correct even when you are regenerating only single previews. @item preview-default-option-list @itemx preview-default-preamble If the document does not call in the package @code{preview} itself (via @code{\usepackage}) in the preamble, the preview package is loaded using default options from @code{preview-default-option-list} and additional commands specified in @code{preview-default-preamble}. @item preview-fast-conversion This is relevant only for @acronym{DVI} mode. It defaults to `On' and results in the whole document being processed as one large PostScript file from which the single images are extracted with the help of parsing the PostScript for use of so-called @acronym{DSC} comments. The bounding boxes are extracted with the help of @TeX{} instead of getting them from Dvips. If you are experiencing bounding box problems, try setting this option to `Off'. @item preview-prefer-TeX-bb If this option is `On', it tells @previewlatex{} never to try to extract bounding boxes from the bounding box comments of @acronym{EPS} files, but rather rely on the boxes it gets from @TeX{}. If you activated @code{preview-fast-conversion}, this is done, anyhow, since there are no @acronym{EPS} files from which to read this information. The option defaults to `Off', simply because about the only conceivable reason to switch off @code{preview-fast-conversion} would be that you have some bounding box problem and want to get Dvips' angle on that matter. @item preview-scale-function @itemx preview-reference-face @itemx preview-document-pt-list @itemx preview-default-document-pt @code{preview-scale-function} determines by what factor images should be scaled when appearing on the screen. If you specify a numerical value here, the physical size on the screen will be that of the original paper output scaled by the specified factor, at least if Emacs' information about screen size and resolution are correct. The default is to let @code{preview-scale-from-face} determine the scale function. This function determines the scale factor by making the size of the default font in the document match that of the on-screen fonts. The size of the screen fonts is deduced from the font @code{preview-reference-face} (usually the default face used for display), the size of the default font for the document is determined by calling @code{preview-document-pt}. @findex preview-document-pt This function consults the members of @code{preview-document-pt-list} in turn until it gets the desired information. The default consults first @code{preview-parsed-font-size}, @vindex preview-parsed-font-size then calls @code{preview-auctex-font-size} @findex preview-auctex-font-size which asks @AUCTeX{} about any size specification like @option{12pt} to the documentclass that it might have detected when parsing the document, and finally reverts to just assuming @code{preview-default-document-pt} as the size used in the document (defaulting to 10pt). If you find that the size of previews and the other Emacs display clashes, something goes wrong. @code{preview-parsed-font-size} is determined at @code{\begin@{document@}} time; if the default font size changes after that, it will not get reported. If you have an outdated version of @file{preview.sty} in your path, the size might not be reported at all. If in this case @AUCTeX{} is unable to find a size specification, and if you are using a document class with a different default value (like KomaScript), the default fallback assumption will probably be wrong and @previewlatex{} will scale up things too large. So better specify those size options even when you know that @LaTeX{} does not need them: @previewlatex{} might benefit from them. Another possibility for error is that you have not enabled @AUCTeX{}'s document parsing options. The fallback method of asking @AUCTeX{} about the size might be disabled in future versions of @previewlatex{} since in general it is more reliable to get this information from the @LaTeX{} run itself. @item preview-fast-dvips-command @itemx preview-dvips-command The regular command for turning a @acronym{DVI} file into a single PostScript file is @code{preview-fast-dvips-command}, while @code{preview-dvips-command} is used for cranking out a @acronym{DVI} file where every preview is in a separate @acronym{EPS} file. Which of the two commands gets used depends on the setting of @code{preview-fast-conversion}. The printer specified here by default is @option{-Pwww} by default, which will usually get you scalable fonts where available. If you are experiencing problems, you might want to try playing around with Dvips options (@inforef{Command-line options,,dvips}). The conversion of the previews into PostScript or @acronym{EPS} files gets started after the @LaTeX{} run completes when Emacs recognizes the first image while parsing the error messages. When Emacs has finished parsing the error messages, it activates all detected previews. This entails throwing away any previous previews covering the same areas, and then replacing the text in its visual appearance by a placeholder looking like a roadworks sign. @item preview-nonready-icon-specs This is the roadworks sign displayed while previews are being prepared. You may want to customize the font sizes at which @previewlatex{} switches over between different icon sizes, and the ascent ratio which determines how high above the base line the icon gets placed. @item preview-error-icon-specs @itemx preview-icon-specs Those are icons placed before the source code of an opened preview and, respectively, the image specs to be used for PostScript errors, and a normal open preview in text representation. @item preview-inner-environments This is a list of environments that are regarded as inner levels of an outer environment when doing @code{preview-environment}. One example when this is needed is in @code{\begin@{equation@}\begin@{split@}@dots{}\end@{split@}\end@{equation@}}, and accordingly @code{split} is one entry in @code{preview-inner-environments}. @item preview-use-balloon-help If you turn this XEmacs-only option `on', then moving the mouse over previews and icons will show appropriate help texts. This works by switching on @code{balloon-help-mode} in the buffer if it is not already enabled. The default now is `off' since some users reported problems with their version of XEmacs. @w{GNU Emacs} has its corresponding @code{tooltip-mode} enabled by default and in usable condition. @end vtable @node The preview images, Misplaced previews, The Emacs interface, For advanced users @section The preview images @vtable @code @item preview-image-type @itemx preview-image-creators @itemx preview-gs-image-type-alist What happens when @LaTeX{} is finished depends on the configuration of @code{preview-image-type}. What to do for each of the various settings is specified in the variable @code{preview-image-creators}. The options to pass into Ghostscript and what Emacs image type to use is specified in @code{preview-gs-image-type-alist}. @code{preview-image-type} defaults to @code{png}. For this to work, your version of Ghostscript needs to support the @option{png16m} device. If you are experiencing problems here, you might want to reconfigure @code{gs-image-type-alist} or @code{preview-image-type}. Reconfiguring @code{preview-image-creators} is only necessary for adding additional image types. Most devices make @previewlatex{} start up a single Ghostscript process for the entire preview run (as opposed to one per image) and feed it either sections of a @acronym{PDF} file (if PDF@LaTeX{} was used), or (after running Dvips) sections of a single PostScript file or separate @acronym{EPS} files in sequence for conversion into @acronym{PNG} format which can be displayed much faster by Emacs. Actually, not in sequence but backwards since you are most likely editing at the end of the document. And as an added convenience, any preview that happens to be on-screen is given higher priority so that @previewlatex{} will first cater for the images that are displayed. There are various options customizable concerning aspects of that operation, see the customization group @code{Preview Gs} for this. Another noteworthy setting of @code{preview-image-type} is @samp{dvipng}: in this case, the @samp{dvipng} @pindex dvipng program will get run on @acronym{DVI} output (see below for @acronym{PDF}). This is in general much faster than Dvips and Ghostscript. In that case, the option @item preview-dvipng-command will get run for doing the conversion, and it is expected that @item preview-dvipng-image-type images get produced (@samp{dvipng} might be configured for other image types as well). You will notice that @code{preview-gs-image-type-alist} contains an entry for @code{dvipng}: this actually has nothing to with @samp{dvipng} itself but specifies the image type and Ghostscript device option to use when @samp{dvipng} can't be used. This will obviously be the case for @acronym{PDF} output by PDF@LaTeX{}, but it will also happen if the @acronym{DVI} file contains PostScript specials in which case the affected images will get run through Dvips and Ghostscript once @samp{dvipng} finishes. @item preview-gs-options Most interesting to the user perhaps is the setting of this variable. It contains the default antialiasing settings @option{-dTextAlphaBits=4} and @option{-dGraphicsAlphaBits=4}. Decreasing those values to 2 @w{or 1} might increase Ghostscript's performance if you find it lacking. @end vtable Running and feeding Ghostscript from @previewlatex{} happens asynchronously again: you can resume editing while the images arrive. While those pretty pictures filling in the blanks on screen tend to make one marvel instead of work, rendering the non-displayed images afterwards will not take away your attention and will eventually guarantee that jumping around in the document will encounter only prerendered images. @node Misplaced previews, , The preview images, For advanced users @section Misplaced previews If you are reading this section, the first thing is to check that your problem is not caused by x-symbol in connection with an installation not supporting 8-bit characters (@pxref{x-symbol interoperation}). If not, here's the beef: As explained previously, Emacs uses pseudo-error messages generated by the @samp{preview} package in order to pinpoint the exact source location where a preview originated. This works in running text, but fails when preview material happens to lie in macro arguments, like the contents of @code{\emph}. Those macros first read in their entire argument, munge it through, perhaps transform it somehow, process it and perhaps then typeset something. When they finally typeset something, where is the location where the stuff originated? @TeX{}, having read in the entire argument before, does not know and actually there would be no sane way of defining it. For previews contained inside such a macro argument, the default behaviour of @previewlatex{} is to use a position immediately after the closing brace of the argument. All the previews get placed there, all at a zero-width position, which means that Emacs displays it in an order that @previewlatex{} cannot influence (currently in Emacs it is even possible that the order changes between runs). And since the placement of those previews is goofed up, you will not be able to regenerate them by clicking on them. The default behaviour is thus somewhat undesirable. The solution (like with other preview problems) is to tell the @LaTeX{} @samp{preview} package how to tackle this problem (@pxref{The LaTeX style file}). Simply, you don't need @code{\emph} do anything at all during previews! You only want the text math previewed, so the solution is to use @code{\PreviewMacro*\emph} in the preamble of your document which will make @LaTeX{} ignore @code{\emph} completely as long as it is not part of a larger preview (in which case it gets typeset as usual). Its argument thus becomes ordinary text and gets treated like ordinary text. Note that it would be a bad idea to declare @code{\PreviewMacro*[@{@{@}@}]\emph} since then both @code{\emph} as well as its argument would be ignored instead of previewed. For user-level macros, this is almost never wanted, but there may be internal macros where you might want to ignore internal arguments. The same mechanism can be used for a number of other text-formatting commands like @code{\textrm}, @code{\textit} and the like. While they all use the same internal macro @code{\text@@command}, it will not do to redefine just that, since they call it only after having read their argument in, and then it already is too late. So you need to disable every of those commands by hand in your document preamble. Actually, we wrote all of the above just to scare you. At least all of the above mentioned macros and a few more are already catered for by a configuration file @file{prauctex.cfg} that gets loaded by default unless the @samp{preview} package gets loaded with the @option{noconfig} option. You can make your own copy of this file in a local directory and edit it in case of need. You can also add loading of a file of your liking to @code{preview-default-preamble}, @vindex preview-default-preamble or alternatively do the manual disabling of your favorite macro in @code{preview-default-preamble}, @vindex preview-default-preamble which is customizable in the Preview Latex group. @node ToDo, Frequently Asked Questions, For advanced users, top @c Also used as TODO: in separate file @appendix ToDo @include preview-todo.texi @node Frequently Asked Questions, Copying this Manual, ToDo, top @c Also used as TODO: in separate file @appendix Frequently Asked Questions @include preview-faq.texi @node Copying this Manual, Index, Frequently Asked Questions, top @c Not to be changed often, I think: in separate file. @appendix Copying this Manual @ifinfo The copyright notice for this manual is: @insertcopying @end ifinfo The full license text can be read here: @menu * GNU Free Documentation License:: License for copying this manual. @end menu @include fdl.texi @c @node Credits, Index, Internals, top @c @appendix Credits @node Index, , Copying this Manual, top @unnumbered Index @printindex cp @bye auctex-11.87/doc/tex-ref.pdf0000644000000000000000000045406012056205161014342 0ustar rootroot%PDF-1.5 % 3 0 obj << /Length 4291 /Filter /FlateDecode >> stream xڵ\wܶb63fh$َRo։=Ir8ĘC#i^|рc}Ϟ22#]\|׉pƢ hv}??Yxtˋŏ?gK!zx9!t=~Xz7_)[27 KY#d$ԉ@veeYA/o;U-d^.ȼlNp C11eD%}9˲..,jۚk-tnKl y xe_:z|Cv^n(7_^ +Y^]\+Rj VQb[RYqu[3 .㷏%wQyHwnVԏ법7iK;^Rtv*9Ys18RI:xI]ω:8gS| ͨbP4o\ %J-n @AM C10X(ؑҤRv(΁P $YrkwnJX׈W9L|[c?thЯg:!o= *3n*gd 0H,6bj-!FHR=8CzO;]DѼEтՍ& u]0I>DqbI( 4wL!tY*hdu!Nj7gԝDL_ c4*4JA:oGbDmf<<<R"[) Aɖէj8NB[a My5Mx^ Yp;Huw1yyS$p-?LS1hw}Y7imigǨ¯\|MM+f2D2L1rӉ*+>c=#0qqAĉChXxW2fI.*cnqح JfS?曬Nn%G1>T.]{1M2X6T7pb4 t鄹@jZ 3_Q).Ǐ 2]|҃ ݘF MehIzZ+H1 ,)¼ ]qi* iʽݮd-ݥ09fu˫{I߯H`Dg&ٗ>>TǝPX,ᚦg܁V܀f>gϾ~ĂFa(D!۩tWk(qgbKe-~o$Qf@\BYɪxJ X̘Oq9SM$z`9Y42/kJNĸAQ;6^d F!sUA* %r_X~mDeq˶ t1-mCb }}|!.jl$a&xؖ ?;ju \ux~:* *TI"rk{=S̸hQ>!lx\!Kd^5lpJL,^NV⽀lY2"";WO)t3PLXf}r>!f{|T!~xYQ8f@#@ӽ-FWJCo#On\SC& 48>@"z:dYd>4@Ӌa,-=kӌq'tK .zE9z@L-( H ].+*U)t&iL8"k+mU֏p`+CFtN~=BUWU&M O]%kp9=e>N='\O>ZrOOOU&~F,uR}Pz1)%#pLk]=#(cJo]u-WEwƁ1bFգef OX]pl1.eypNg#"x@긐 ~p {L7v¸$/KpSq१RK6\F_ȍs< Kܾ!rL!,w; }-֢x]r+"agǐ(ca+azX9sh6zNvb8+G\X[ 48[m2y>lX8j %ˀی|x'*XxVm^6j,oxEl"C#!k1fݽo+y'rCjC»~4?"#7;;ns8@P/s$EZRFzp"W`>H;`,diР!4쭯I1rkf0EY3wwȭȭ[S-꺴b+c[ R$Vfڛ1t<93a(zt?Ű{cqooq>zu 4ڂZ5vߛql.7ʎ}v?s݇X#򕵴1H@7+c@BA^XK>1CN@ًόY#J|/&Lb;c ڟ5o|k 0@kZsn 21Z5Iܩ|ku5!S9֒1T.Ś790|Nj&wVbkIvk7Ra`?_wf r~wC9*p|rkuhlc=Lx5\؂.o /e*d㑶w2ͱ[W,aήBR+j2rn1;[k|䃥 Rj6-E+lh-Yq[ڐ-e>- 8w|b=euSۀ!tkU'qF!pjOҏ͒ {jHڭ (n˵fbҵNd6 1tv[_{o-ycD2lF~Ĭ< ú`O@ϵ WwͶ׊]CYX=o6Ya#〆v)n뷦Kn NǞ4~m xW_82GX́A-UD%>VY~],G@ v_;D؇gֆ`0e a![^4~oZJc.v0 5Ǹ%k3γT܌ ';AĖ^7fUTE;ryέ!?r+i79_Vz v?6wi~(8}UCJKBOcА`?o@f endstream endobj 19 0 obj << /Length 4930 /Filter /FlateDecode >> stream xY.X`)OtC}'LOߝ?{} ·=?tE!qd^8_->/wUz?#a'A>P}eyvugLۼ*3oIYXcǡo`7tݥuKw՚qY^gbY ndIryyI$#ȇ;nBХ$(o}o,|2\32zGlaćMO׸`-`T/Q?gqƋNe5Љo4xD"΄\(*Pš_f#;. ư6͚C̺ExeJ<; 8Q8E'ϧ!`9reݷԻIFQBۍ\&Dp+)Wg0`9Zd]r$V(.ɬmq=fWs|W/tdt]8 d⃖0{Ww%w$莮+ hBeg0%*RԦl b7eՙ-Ć^w ؼC}®1|@ț1(ҺNFQ?;7h찫9)(FKN@(09#1T]Zv |&RͫJ0U0cnxب0~Q^;Ml~oX2%3 !]Nzp90mz HV{39S<\}K#V% ࢓,7*O㞝{~deH)DF4 .ƂFBheUx{۪a7  JGfz8Ds=@S{aOloТ[Z؎PwU&/7dգ&-nYnRW(X0t}pĶLE"ĺځc9!fd[zƉX")Py:gU:$ $ƣC,ڮ/Mw(s1AҮLy i)}v="욁6e!KYdaI0Bf'?CF*_evD8فsSbMz9LkK M S&py9FH yAҏɔ'p^ cǀPHk ִFB1Xx#˿\H&ظg'ǫ| vfI}kȎQԥ72ʁEJdH<[`,Ly-!&؂{>bmsT:hH7&LkV=DLX*wA; cL_0rQof\(ώ{]#;ĄA|?wiWN Xvj\o{ňA3Wi[r4׽Y~},ӥ4mZ'>|$,\oL/7>1kU=D{\Fm~{,(Zre'Vɢf~ (fxػDzIOΚ9Y,l0:~Dx:a.&y4ZHMzwz*{rWj)HO?Pռ^);xrUUw{@[=ȳ P_>|V{KklRC3)nd{, UY_~:ҟ\x. K'FMUfaˠ8f祚Z?#)-fkqNfu^~˵u3aBTġSԶ\J\~AysUR*?ic/=cXgJӮz5v<_#Wl ǜpȯS|mW GN]=(z򂤛VǐXZw@ۍ&aN;0L3x䱸R09}ft5KL8P=XL}u_Hf,YŗU<3]uUSQFP2J̸WnP` _$*A=GS@grf \c/?O9>Wa^>'<; O(|,O_TMt+Wx-' ,q]yF镮|u2O]u `0\+ =G QsxJ)z.3Y/@MA jem*ReomWVUZ\C;α!=5`#_9pS]]]Z9b,*yLl7)i7w{ G'pRi&RCP* cT劏M[*wu38yϺ ,-#|xgiyElᣝ( )„R^և:$EJ^5}4 ;Jb4眢( ;p# eM{3SuQEDsE*XvXzmosO6drZ-(˾5Bk<[8-P +:Xn=ܖQ~D`'>M]5 @u/X`wT.^`ke#k6]1:\pؾzIVwh~t U! ~_ ar̦ٟ|lEK4dC긠EpsD:߃ xDhFT{;{KOt|xυat$=cLȞW!HZ'q}i6յ:W2ذ_f&~Om)?sΆ1m>ndZaGBgS`rcu&km oU<^{Hwl༏ !<(HsRN8MY\C|& T0>aPPFXo|q܀?dܮ)݅@{pa8_Cj A)Hl:{EZ\g֟.҂4{ꀌ.2')!Ϋͩ"mzQ!}c8#p <"Ou0sDot=9?{^<NN'qÉG 8.U21WDS:`EswWg`HpZ;B!qwJǰ߳w~}l_Ďfg8OenTǭ:X~k8glj6j/ǝx6076U-Tۑ; *L? ƶ//U7·d m,kN'pͦjtR/Rqr£*Tt!N~*;H,|R_.ꒇQҳO:Us6JavWq> endstream endobj 33 0 obj << /Length1 2039 /Length2 16328 /Length3 0 /Length 17548 /Filter /FlateDecode >> stream xڌp%Z Ƕ1Ivl۶cĚmOm{ys΃9}UVvouս69*1P΅ */`bbe`bb#'Wtg\lioQ'ǚˇ@ `aab01qމ ffi gE<,-\>+ʄIv- obhbdP7xO*> FFwww#[g{'sj:@ tr P0[9@_U{3w#' chP(:,/:pW K7:yZڙ,mE 9:_F6܌,m?. ! 0Po}&N. Ζ6id+1ۙ\O hq\k;{w;_2L],]bXft311qrp_ <Z`04~v6r\\4/13L-M\@sK;??fw0}3鯿~0S{;?_1:%("bgг39_|7O?^U2wu(mgfwտdž?LL&-z(+pN/=>c6?&j5"6&b1!v6=FKg Kſ?dl׃gfb?3xT?oc7_qFNNFpWAo!5zF;{-q3{'n(ҿ(b(_d0J!fb0J!V0|##jCȠ>4h?n_bvMrj,c` X!6%(4GiRyg(Q? G2<ex&NNOG=&p &!Vu!5iN?\S6SFzQvũnV^6@%)?$L-Ma N D&th %Cʅ/Q?P:|P! R6CXG;e;DI~aHw7$ucӬZ c8l8v hs68"GAZ.gmh1mV5Mz\B:U=J<&hNy|ԖWLpɯ{ߚfPU1[#'Ck0 c5۰Mv9P&]R1O#QZx!ۨ`DB[TQˈK '.|LZEY"F'\KiR)A._Gyi#l%$E4CU  XhO xm[BouvL`) qKs;7jMEX-4G3Sjs"F[Q(A+:cF d__̐uRa9T&Q2^䰭PIۺot&zVC;NNқ.*6|b`LqGo[Qz`91_kpml-QPQlfk*HoCBqZNkvxJq~; NRԞ\AAYbWkXsakdfqyEqP3mhoTu b/r;e84B^ES)E!,kP_!iRn2 p6RFcP\ EqvkuN>ܕLlxÄyF7!F ^q[tFBMv\p?CpHBI}Ps:.OQـڊE{B׉߇=E>t儯&z"E,6]mrh珮wrGI"n,;zOQ@0=j M&/4ZS^M% gLlJ/&TEMkbJ8 t邭Mi ۘρNL| Ey&)n OD׶4[+9P V)z (%ھ͚ xG=1PEclܣʮWԑTͲAsr&XPpe$[?+9DWBrEPhꀊ_ϏvcOyϘ:(`g}.V0;^E!tۂڗBO*J"~^EhH [Xڧ5UAndqAAC\\@u D*H)syG-"츨 IJO6s.թo7 YRZ_ pVY!vixwT>H]GtmDvvSc ^آB{OX]bV) J&ͳRX[Mz>s(%{.kL2?QlDRv rJv{t zHYS-E'O*pi5a#[u_#!TUzO(> 2T%=LP6v?x`<~YWqi?^\ _O>84hm=nuGkDrZKk~4DW-Y9nEQ9]"3΀]ˀ7֟(7˦Sv(񹬲Pjl!hB곲f? XeVHwnɑ٪8BotА{lPn{kuDⲽE*CYN| OeNdiHLNaYXھF5 `=j]̭ /l7lPљH0t7Hrv*7#Sp sw!rZd˥nЊyq-@q99䆋MaztkZ, 7'nAKwHq&Z6q!ӊrE#hP&Nާ嶥/\ DAgxe`#𒇜T4e+9[vuۓ5S\]BD` D9h~.y{ gG IMטћdHgbtGļDTD+7T<ħlLp҂!x/? `3 F˪דpA+% Ig{<]rceaߎ`aI0pu 2;vd֨tp+c5sj~_J?SXM#ObiYiT0\,o,Kp~x2.4We˜'u4YNK;F.b{D9rFs5 xqS pb҃߬pSM"2Nj Y|N~)ѴCNìس'D*O95cЕ`=l(n*QD,v$7IXt[gkT%H64_>s,Ǭ,: Xztс2{̚vk Bi.sga@Y 6e4>ӡ~6g+z.IKB[tptp. [8Y4u׊X{7V/1sfzy+ }r7{]~&f,՗: {+iv5D6Ͼr 4gHRsTmO|b1RO!3oC.){&zW\s3ޕX,Ќ\rd>6 N: s,u Պ2&t4qNݖ/֧!h-1G|!iFn]-|E(Y=`p@T![i QUKE 6-@vIgYL2=jQIJ*Iv/umwJXޜdʠӼ\ԙEN6;y>Gf}b: %m i׾kk364I_d331uО~+l2bъ&Q5F?|}35p<}Z0y|JB?w0g_׾%"&z~\|B=iM߭ZYÃS@9&.ɼ{{ )r{F ;-RCMP1/,pwdWܱ]Nk!¸"xhR;noynaX-vUO730PF=`fOaR{̦2~4cWkvˊ̘ܟPk 0dMI"JaE +q>$$Sm1Q.'PSʡ&jz7]%o&~Sb(˥t w|]|!҈Vֹfc;Ȣ+濕ݶ2uZ@!dJy$YO1Y E#΋8:jhOL>"HAكQ*\+Z:H43ۼԌnXwi.cijV>f Gy߶F@˂e]m 1r 9=p=fԔn/l_&{e4'tl y"N⑜c㧼 3k ic VE'3Pɋ#Cm"T[{:{Ś|B-G5w djо2)8˱.L'vB ʱ`n'w`_(^2'M K̪u5 DN~'èg2KS,+C *<^,(uuDeN{1gL/Y8Q YbX 'jVzhi IۇrFv߭o×ȘЪvCQR7!HN(RWw6]xnY=LSYl\816`gCyn~Ì`WB$E֡@X91@Å4m%B^<%马u"yR-xc&R85j*4~ GVKMGpʘ* r|/_m벭{1-Oex)6-Η5oޠx )osui U7̋K(kNf<1ݷ쐈Vx[SBO汽 a'l u\(qj& h%i*<پXSud$6gpnF.$peqSsFC1PeeN@1)K WO"73D'=qɄM#լXb[yFy0nT5bu 7+rQ;*F2}joGm2 Y"| eLRU L6W<ӯ dD ~K{ (Խ~_LFY<jNwӉa,yiц[?LǼc`Oc'Av9"/\tn.㾝:ݟ._T4h@*ċ({!I_IVI!Uqu4T6uH+H.d961Ȧ V"&z٤pRؚ%S4؏2lẌ́!&@sy""ϧTYA"` nlݟ=*궺|`eφ7[l{""rT,{ kp;'@צ&cDd-/\btI:7P. e=-jMȢzbbL` _tF Ȋ;&Z$NbZ#R^=K~R!ҔF$"QyY־62{0X+"}Vh~^m]AmH;`<Ш]ӯ wա1MLU/4zjX\~k 0XK> C!·>u%\oN&Ek$0 c1 [rwz3v-4 NzT!+J`qz qVO ~z}Jc DBFN-X>go2&* \kdsk4B9E"-7Šbu*[7;ls'zl .=f2,}xUW B[ W4ə1dCf)9[su8{D86n=x56SFfD+`u4߱8szW\OX+~'շ顃XT`dI,.G0EXDu UXSW!ωmf7jyٴ_ZwjFS)FHBI/] [>:7d7gguQH3NYoG} MV}>U sƾBj,$@\Fy.6P*js,XqLrn9O YCv@: g_͍ ARa|y+ ' D5Tl mT~|bH@ q &2g)eO!c|%ӏXّ+֬Dml fTH:lP՘0_f .|="W9#e2q̠`=تNCꥪoBLi']7۞+ "ظ3"S)V(sM5r}=xr-:2=BJW?҉lkNבT ٩".&!Jb~ Y8@(XEcqґuGFn56*:yy$[ʩ]y=߇P,ݳfCU$6+o08Wg\a+% Bkn /~ {q#Z iԲAb ltX& ~36/1ZX9(:bcrBBj&da‘Gܣ&J a-_"[ |Z=qFt(i5ʛr;8~o]/*3Z7;w2ߗAnj? R_SW7~D""U)JNˊ؋Nd4[\"gP'+WD;OU ^ ^>+:F˨hU0>gt [ 4"k=25][[Ѩnث`nJCW ͣ_Җؚ<5;%ضMwe`ݧX9E%̟&0wEJ6\=hGb`)nQ0TҲ I'N҂ 59ZT oz˛ǵjqѱl >{z6RX)?5+ H߮rtnfyDN TtIJ0S,t?tͣ״s@r? ɜ 9X~y2,\[ MPd މJwޣW_)>/%<>@ E'Oj\a]K> %fFF/[-iFpafWc=Һ{X뚛t~mQFrIZhj^h-Q|UHRg&ֺDbb%?Xo+~BƎ cȩDsBf¸y7J~0iw^u )M"#Lp@Вߐ!mk'>ӭ+ O+N/ML"+n"V0cA|y~S'?wRž;;` ]invZy lgέB28K`;ҚfMXATYG us}hoݞGF4 ]!q嬃0#,CIg\. EZc戆5p`?BfX{m5NiMwsPMuPÉ T:q^VJUr.T >q[y@1t+ulK#JPv1꿄<XvxpUvaO)+tVpS<-KZ'ꠡiGzzYnj!Nň\ߘOyTJlp}%l0̛nLZS^" =ύ=nLA9,;~rļZ-r=?븚F~Zׅ9õ6 Ł҈>ؗ&ejt?s~I;_Jm1ȉFTÈ:Ti'ho ڤ SwҚ,(mqk4yk'"MK2d!pXx;lJSN]*UH#z-v=I&頭}EJ:n&v3?=cΫkKtr諀Bqv"ШS80xQ!Un "s7a|)jI+*ffhcbݍ wubkв>r}o.v_cO˽uJF߄әҴNwq¸nGși=L8JPu>.#ŧx4[4m"'&,°gZsֈ薋Ss{n 3JxJm!<0<0̖d#ZHH(<'* 0~5yԻ V*?ݜ۬ ;=T[}9_AB|g. iê&^%rg]Wc0S̒$ïz#3љOr4N2 |""tO~?*|}itc{Ť26pIw{22 ?aM2~fjxGQ> ӈeJܵ{E\|ԯhk{r鋦8]O&Fn7}|~ؾŝ=VWlu \!ne>~Z_I򇇖`1>mthY|8jIڗ/GzԞ_kS"0OcܢkB_#lng 2A[ Q;c_ kQKe=ӣh)n\5oE~Xvvl$+9!aD2V0N+kv 5V+=S*F Wl(ճIy")%^c\rSl5fRK rŞھ_<> p^{C~!0.G5Z,ISPNQ PeAw%Xcay/kIJԗU"ـM3[]Y_]ȥUﰵ\Y VPOAx_6p+F#F"D;+uة;Z9CNu"*vПO&2 X!snÊ t"bIm'̄qJ`z~=0Ot˹gmċ\sC;z%ln͛?SU@JCqhXIR 7ji{?h|=.dT-.H+hAN[zl߀%c^u9 \ۼ)uu&:0UQ( ? ȿW;ͼ5A߬`cQ8o?Ls>KsY ʀ֗t. NK<lY^ [-$p8Sv*ǾʦPѶ/Ix'N!l(!r'b~>d,Ua#ލEg^<];&Mt.Ì1 A[}G0wk[Xã8FMUy$t)n@X_,=*un,m֦Yu|=Աg ߗ-DȃYI9UП},v Tk"ح;/`)X&̊=%bT0h!G];dwT$ k 'KJ0ʴ\B7HYϒ&G  yl3 QlU;L)먠x!?/+5(Ml(6j(sPa]tk}\uqwԆ {3SgO<-"?C{ 2iz7=ZKJ/-/wܥ ; BL#ޭ18(d J7 \w6#/=J9- U 3rYս$£`ә_ꠖ*u^Uw$|jɰ_B=Q,7 Zqmf$]!/2 Wi'\IvfEDa6}% *CxJjK|E:!= oЊY^۪*sIndș~Wqg +zN5 i#Ka5&"Sg}eCoaа;Q(!-kű _\Exwڮ#J|p>I݅>BY2 KEС ͈@擑׹ḭY9;L͓4 yn?G^I|*'="y@3˜% U\x]+u;-s.(ef=JEڌW` 4ۋ RfWt#?*?23Ru+HYpnLmr|] WFTzߓG%7!%"8e;'߲~% Zu.mҥGS6 AOw9$Fb\nz'./<UE돱 eiI=Oxoˑz cS)ՙSVMUyORv*Nh7mvp3lrko}fߨmA7韤]p`0^1s L}U?_xmqNzQ1vl-0 ~7nl߃ !v^$U}l'#>[9gٱt9h>^<%!+ 4&)-a*iᵼjLr\2o!ԛ|qEg/7 BSWvRN襁6A/顴qΛOfֿB64"^5 ^XL$@2$^r~r岼Tn䒧Դn>#A@ks<#G $Ĭ~U#YIҥh_cPރeܟyEl esCnkV4Z,BF2E-mz&ˣ@!r+M/J :Āi2(jZ<^x9j(xOhfʩmywH; .6 n~&qU-񺙟y홭N"Z)砞[^}m`ƠMBC Ī/Y?MhD%Yw8!@z'Ȉ nHO݁@#ss!*|#~dlN%\v y7 Yr""${\K?wӊ$wsK*.Jңfp -eL]5tL=<\Q*"4i a4򡮌lne>G^i؜bj [d3+dDbVRZ߻.׵p:2碽W(|_M<%Ӽp={}lc%rLK8/_BT_M3ͥ:t0 1ڔ6U%DmEz֡n0lJQ-" Ámqv:':]~ ɉGIg*&OL=g:HP)Xʢ_}ھ=)кT`OGI_n"jʹMm[jB;;R3cA c [Qb0w&YVYAIrnҍnK.oڒ;'$oC6'ౕ7&|XQsXMⵡ:в(SfSQ`J͐W{l~ZKa^Xm*h(̤")bc!eDU" gyùV`( 3}k,>#Q쐿2SъjNO#?u^Dĕ4 q{gN][]{UWP COs$b]ݎ#ɖo7"VSتF5|5=C}"oaW ;ymRO\DՒkAc>HրK݅zC[N>Js9{ DRa-Lk:һP}a3ygaoZ*I0b9kh<3~tΙ||֑&`et^Ġ"=Ny'o~_K9֞!Dv :9Om<0,cœ\zTz9M5wDTH4L'rg:nꕳPDNTM/twȲk,*\ 8e(((*޵LnEr^Q raNSX|J`kw Xͦw3s?nCI8TO;Ͳ'X_LtHQ"gIqV_ mc~_g9Xl=@1-Pq=!َSJ^EE"aiE 7 $zw'S]x`rFHEtv*dJȆG5y r3@oBw%B8 k*Ӕ)#b\ֽMOI{Xu -@e1 :^ADA޷FVs'E} Hpp 8&#VTK:J4{(X%jL4gVPl Nj _d/E}F;)eʺw瓰Dk RRiڞڄ#4b BC?Nxo\ :ADEв)÷+&ųpy"gs@m!tǚCYr$-w٦eOfKJxw[H((>WxwT:M.xן gʭ~vOx D%ڣlD4|x{@7ΊY|di /Mx#f)&-c2VH(AD5==~vyMMk&`۾h{uDj}YfƲNaFxƺuSq?4v{黚4rzW2֗$zѧTgx6Ɉc5 uq%- C43+4n8*5(6Ի(vwA w X"$ŷ4*lR^pd~$(7R!Y' l2)SW.S> stream xڍwTZ6J -1 R C04Hw JwJII|c{Z߷fggA[[*!(n~ y@||<||} G `1"`pGB(NBi Uw' _>}>>_}iTpE⍄٣upE~䜡H mN = W vI{>/'ٍyP ]~iX@0z=- ' pCHr:H ہ 7 ~ A80i)P\ 0@ǃ=0'5W` rq93 ˊp< G~֧CBmm=YG8G!?A@]x 0Ww  񉊈 =._Fj4_  n`(t٠@P;Ovj[F dw|yuqFȗ[X- NwK )*p[H7tV4h.CAPߌO^_!?Q Rrwrefe`g4Q@߮F߫o ^9M)m7: F~>5 n~>'EoӿT ?N@XF"ђ0ȗ/bxy:E ?).%"&3/lܑHj_N!l$BCNjh<ׇY֍rp"_rd?YB˥#_Ud?y7%Y2Qwt03B3\#MG˭/wgF*Kv>ىgWCwǁu51X {w3|ÍB7B1_ iOEqX\}3Ug'@w?yĤ΄V w߶|⑖'(|l&M!NȡcL@srAHF2ECD}P:y c|)FF U0c:Ha0hp?VQ1!0xFQCkt֋&3;* ̭ٕQ VV8.R8s2cVa,B^w4L$Ҿ*Ҷ.$NHpٲ`5|jzt;@.:62\);T/~9m9/kc "SD (mU1~kfJE) b2<+[jiګ W|Sے5HpDr*Hy=5_>aH^`n[Jšx&ƦOp%"ppՊGAي=HϖlN4@Pi+yzVQ*OA`,a§ߩ`kfEQo=CR%'ݰY{m^MOWq>Q{+t7E<3?N{wG`GRτ-Yjm]A'f7.7wre0Ƕ'ARg U]q҄:S^ 6}.fv꧁Sgލh.Ec#ͨj򔊥t ۸*]KB1 $9ykIzHN>g4JpЬSN]$ڸվSanih\A"2R wdqsw,+gIiFr@̴SWNΚV98H`-fi@])F5R5(l8a/28H!V/ȒZ'C\i 2# ;b]^WKյφ1)^A:m*՛&tPCW+H.Mҩ˹JS&N'~]LyForšL񴱳:_*0A3tpV{@~MB:c#RgIOIE;|%5 ] qzMU՟s>IJNL8\1\ͧH 75, R:DG-%S?:Udj(#BʫiwR/ mθX{NzϿsBY\Ӕ  ͱa!h c9*t_3x^,|zy b;EoJeɳWU;WTe7gL{XR]!ùfx59,ԆǘX>ŧ9 p[Ib"Hb47BlҰb_Rq $S*"=e;z,#P>~) ޜ= +/B䢭*Dy"1/cf=_J /f>[lѸϷ w R+4{:~}8&ʛTbNK•EϘ,qd%^>+Oo/NSZ;u2#0A&zLjncֱG(zW1|+Y@9g *Js#3ں"rJvƗ4|GCm  gga8?UnQtqchfumEH.xf|VlF27~N=󦯖;W^xᅪZr(ZϙJ5o6@`->&y'znOEޏβ"L6uc&%p E. 3O X+lu4 nsNDd tZpJHyV kO$;lfbЮY*3t$d79ՑQ70e̪&~$QOe25Lb9X#8;]@m= -g_M`;oK'8bե"yYҵ)1q6 MOP:wy.q *'Ajl`);h˲gńNʱs 4Ln7R0P5)I_{PUDt-ɹ>#/@'^kR9 (Ʋ'KjdJ-H[jlJ }Z6͸ ijU.XfSuk[Ϸh]V'xȟQ12g?7[d2L}㄄18l%Mvn5 0&jX+i9 i8n6ZbĦUN YJa9,y ۔+[;﷯J0d%gj*Ɲ[ܽ:l8i o{] }Ca^DtVnMW1%.һ`:w!&܃}6;B&pXkwN౥ʆ?9v ]htx)ma$x3|!tB yKNi3BݦS/F36~Jԧmq5֩疯\XPӯ^OKd],"uE?2x<$U]YTE Wo28E|I!M+o"`+}tƍot Z<b𫘔玔l͇4k%-U֏< y-&ژ۠Iao=ߒ]ʈU޻Mb| Xl.⢖G &^+os,{Վv&0!İgh],6uDXF[jWuRl<aM&jtTI8VPgD=.`[.Yr3M1R&a:U۪23yj#Cq*Gb%?ӶjwAt߷Ep^jXixehTLq-ʇ foמBFKB/R&;Fɭƒ <JAVy FDIJ!cb u|\Ĭ\mp6פ)c+Fe0?_FKIYD׮$D6>{u8XoU1͆iA׋Dpeba}3~'ޯ CzZzj;_Pl^0Zd * U2% UpC@Z*['*:˥&7Z{My|yȸFy@3 M@e$R.V9uX_ڲ h'XlYIoWYOy;ݹE2slb$97BPj*PO6{Bwhl7Xe% ^Hf;0mf 0»ިlLqov#7 L«H頪+L̴K)#tODه{'pڗ'\˥MV*iyۢ5(XmsNǡI,N>| o9LCEQMGCs JN8{[8,OLH˴ 1XN^"vk)% ~l>hs,ǙqniEsb3%YXX:κ8>(@9˷0?cUu\b7d,i3=MA4Rs|xcqN"lj&@M=⺪=E/#O endstream endobj 37 0 obj << /Length1 1592 /Length2 8320 /Length3 0 /Length 9355 /Filter /FlateDecode >> stream xڍ4}6wAt%DgGb]a.DK{ %<}?Ξs}\37s0jq˂V%8 k@ȏ¢E8BqB\\p(.ަB350#O','"@pq 4xjpECf# qZ` t_Ѓ[C!J&i@8򺻻\y.R\w( q !`oMom>jXAl0d7Cl#<O ϛ0Ge^Eueuο5㕓{B@PD ryj_ Ua6p Uܷo%ȿaw MLClY3,#)9:A`!Q q 5/Zk@P7"@" uPW% EX9I_}zG( wݯt\ƐM#(¬+/$ < ݏ! <G܇l.xoYX+'*D^=Au"b^@>~}},_]vsqo{ߢ_)b0 nu|<m ©/s?$ &7 "=Trl9!d ֚=?Žp DFJeSSH-boVzq_HO/)7([p  DuY}f{!Wå4Q$r71Qi=9kPω5.̼ U&HD ٛ="EA{ S,j|nc2]ׅoج~5HE 폻%jOQ=2|ۋJɰkӵ%gNncѳUVFټn$2V]T5}v,Bӟ_gߟ6;>x:O|^Ӵ> ]nLBCնG__ i׊.kqRK|*8of!CaoC6Zr;v&ϥs bpbF9i}yEt$ nϧ x Ε"+PrW]8opPYV ,߾gt] ezq)RC_'QgsfScl J+f )4>lmPӛ?3-x?Ed*4([Y cיh˪Sr;X(mxǓ 2:|OZ?:Co2*:$gLtOn{ ]Fbl @/Tont]56Wob+ٶJ]y[ssk8;IR'^ye͌ME3SOaC~g2:gd_H}0_[_ OSn< q^b@io yyu14wi795p wۭ3R/:42/Z[heG9#&֒0sYxN$pzG?1h yRTX'\V =\qr:%1RLS$C'QqqwR5;i9Tw5~9P6?*f6H qHia41[5!Ma*e"5ΐzaf.MPKm%i+Wayd\xެoY5^x`x! Of@?{K㍮dG\1s vs--RLWK*y6>P R 2Q$!r j9Rs|tAB+;(Zx'WW ͍Btƴ3sw/2a Nz'ԝj- vq2vK3n} o6~!BۅxD}g%a_UIy/v9X }bMst|\)WەN-˫E0OxW|}7yswNPG/oVDzɍW|zsswEV턿)6VBe$%6WLrpvƺn痪d1;rCI(Q¨fpg(Z,IW_o嶾ޅ[35 :ф•H/Ҽ{f[2'\4I^W/Ѿey;W1bpg:X-W}N :Js2D'? |Ċuۂ.3$aBXgv* 4H_kHs1҉Bꈣ$!;L=ÛЫ] 4JyWU}C>pS?}U@&I(X)fݶ"zy b@xiS7g@.nXEOHϝu I ?_TFja`'?%2;ެ! Z1[  9Oq;FZ YҠVݴ8V.(*ǜbY'/k]cx~wzxC6_& .ȹGwq Rwkmyŷr q+T;'=dŻ!ǩPciE ST${n<'eq!s=:Y:o2%?р +9n [A]mOM4r^R|c70%Cf%zJ~5HÛ%} Jq5'MQʶm޶':KMt N\ _"kl , )r)kl!<|TI9-t)ag.fߞn㌣5Z=y/I[ᏆgU!YybH2PJ渹X'#ǴILCڷV4:u(c+&1"fӨB4*:ғCZm x6?3<ϧ SXGB,W6. *͢$F|Nq-7,: th)zjlG{9ho$l]~(gKQ9Mvsg49/T 5Ot]XvL^xX^3N c>yƥ?A|6L(bKL켩9Dg>ixFs-o9˯T H})nLϤ@$BC[[yRsGlݪ|^&e6nc Ќ3wW(ҝΪ6e3Bh~ABUL^ W/K+»տ8J>E NS3K7+ Vpdz_,O7k*%R?Ѭі6A->rֱpqO9g[,Շk#BsΟ`7$8VN ]X'|;~|J .ڗO~7z7΢ a|1?њ̌SWr X!v,oL8+aMpɪD'['D `-饱@f9u(7PZN rl]ZIu{.> 2N5-l5Og\;s35ŗƐuQY;(&# PO6r 3f'>LpqAd@lAeYZi" TmBGG~3;) 7(dA8N'G>1=6PX/ݟ.HV@V c5w6u#[H=B~<: 1"cxLx*[!_-_g"v?Y?u(Lodg{XwGglNO+L| aHK3 Is8'W唩(pj_63=e"TG~pp9_n`ףcCD}_PVa!@;(a#ow Z>gQG"@xxŇx;L grP8,Ay ],TuqbT?A#!#>U!xGը_O-\ +~ /z4w`C&|scd *`[ dy#+GۙS++Ow\77@h߄78k) ol_K}̷t/Y(RKjAwe.7X?| ѡ }bZM:?} a+ AaLUIQ Ǧ/4QIFu'm-ӒEFy%mxazN\ݪ ;$;/ *dS j<NIs ®gqN0fe6\rM-]FBz,СȘ*:r~342rdi43l)O WpᮛgZirYhM̔jՊaVFY]t\g8ԏ 3 SPEc#aw9epDhR޾byRwS,s%bG' U}W*:]wc\erʸzZ,}FO`QWH|'m B6gk;=f-g$K'ڟY42v^2u0^{14J}36%l _NgMϽ^/kU M7( _wZeӼ=&_ 3(Zǝ}ջ <d=,ؘ)e~chgr(Rn?.=Z&D +t7[~=rjPEʘM;n^yUhzkL. bwˀtWUmfMGlMD&f!vEd~6/[91q.\)9\6bco"*=131Bd#!gsϥ^#xy垙(Qwb{K'㯳S1Y,bvW,ėcxt&wn"뒷/cl}E# ^GO\AxM3jeケ:cUWjճ>Mr֟` ɈXh5KZGNFdX2a Fl:IJxByyc+ۚBRz%W[~WE "0GVk,I`yn  N({b?.QUrE6Tx dR}WJPd3 ^Sha o4y3|EWJ1}_jʘ_E3gPE.#,na5{2l:]9Ghm754M*=L;Nzб}2 grྪK^x-UV <KF4ٰY÷g56rزVgY'Ըؘ<"k{( " B Ĺ=X]?  76#d5*ETKq[i{5I5}"y^|9kk\3.+CO􄘑_hIM/Y 9ݨ̩1Mtj ;֖&hsvuH_'QR"yUpZ f8mRLHs|a)Z|v{wehImWRjWAJACsL5"ŽFSKzMJzq@Qy^ e؁[d$\ھtK^|ԂW7,UewC޾L=Ȫ)rt‡xbTӢg- vkNYhЧjửӬL}25W]X(`;XKh((7z%4"c٤x"-Kw)T Xu4=9=UZz}04m`2R?yi,[h܎}cy;>~v`]rt7@zp5f穬S̕JϙG.w7gtL=vȾK@޼s*%6hi+Doc3<:; -鯩dk4Yɱ{ĉYn'"u3N*6@E*ёQ|w\Tx`M/e:h gn Ҋ(:[ڦw4~kwMNe1AlČm}dF>6!(v. I ">',U !{>V(eq$ Ss`d[K<MҘXň G븩P.._of2-vRsjjKP,0&.faWb`^CkBQ#QYբqj>#]s;F[yW'I7?E:>]#7,0~ 0Mc06UqIf)J`?+H u'=~lQvrmLQ߫]4E88A̱wu;rEitw*X`hcT< endstream endobj 39 0 obj << /Length1 1811 /Length2 10378 /Length3 0 /Length 11534 /Filter /FlateDecode >> stream xڍT6 -"H ݍ"1CCtw#))%ݍtI7|xs}kbg4͠& (&TVggqqQSka6q4j# C=aR@Q (89<ll66PlPf(@! G4jIG)=s-l 0KSDS @j % f'ud:X3\0K 2.U 5@Bjs:O q|2qOJU;Oҟ&__ֿ!MMv@b0ۀ2J,0W1M8B@ G@:T_9:`,`5vfi$9O 2}_õ@] K`2̜X!`{'_'prq@%Znv?8iљٹXظ2`Wfj2=6`H ybcZ?\f t?[=! 1InO7x@<=jC~iuY6v|Z!pX@6bsXAvO >&qX- lVkݿP6@[AO:#>y#r>P[?|n>ӺA!=űWO#>SyBN) Oe`u#jSP>Euiͧ-\AhSPSʀrq"a!ģ+=/(n18Os2]2Vm*WKӧ?Ȫݸ.d-Lb/M{\SLa}M wS# jG5֤윉w+UlVim//HW'_Ӏ5impfFGMVH(zR߷E*--G,Ņ\.3y#,؞Yw2}Uʉϓ=rv^K}kl<0`2^KGTܷ5k@Eѕ;'dy=tLq?j["̓i˓J3zgP|Z Kl[hpjdE}{}*A3g_ĉp_Z;jԊIw 2U^[hW{-4vTT@u-, 1d~+䜴> @% lj\q~fWXJPg͂7^dX1YGVm^vϣ1'?j irOU1LK/fy( ?<>f񕳆p ¾(,_8-ޜ $o5"{4y%AeoDgo+;GX/Gf' .*M%r"R^P?vM||P]nߢ%RIkCB!Ӹ22}[#S}6_zpnWh)u4pvͧ )#n".wmJQ$H3)6QR?H՛&#::0$/ @ .."m 3}ݚJ~;hmzQ(BH\Ս>EG0oV[?wSm~-Ue}#׹\5%4Ŝ`Zqƣ4UfXdt Y/ KоDŽg=RaX&P42y+kP+J.jʺb̖+?k5PiÛj#o YQ2s&Z-HAkY%Jc{4!hzVn.kED}q~VkeA5\> XOPCI;n_zd6)x}Na+7^8 A|55^;VsX%67bQ!2ɚU\U6L]nٖ%>HNT/1.] X[( 0 qDw8 (EΦڙ;-b7n_|f)pRy>>9q |#z+;~h#OXCgLq 4_,T 00W/NHR, :g+<ߟͼ uyPR˟<\vW W/EC#rA|vPkC%]5=]qZp|~0SQո[Kkz_X}dSd:ljJ!b,X.oKp\C,@d{HLSC#O}xs':LvhtV=f4^YtͶxiWJS}Xu o[w&\zlNV"֕>zJ1W{c/67Zr}.vOc0h 'ٰ &{J)MImv V~xQg?dZ}gXly\WHP*]*XoMVA]GjJ]s*5[R޻C^6fl)^#1YS*|p q9驛b֪!g~GAHЉ&GO~SC}ADɋUdgRX%[.H q)[_IM4d馦$hcN$%vϏːǜ VvéN=O2d–) }@3SORmL|G7Coa{Om>ϔTSڈ&g޴X Q=ZtJ|{͆o]YXS‘v 6j;am̼t|\TGf܎&K){/߰XIt=>kU$(ݏq*z'򜫅!0 .ukךRnԯly4wz8kP-L`} NM)/p4y &cZ4n2'?JbD]K& #W۔{HrU,͍$5&V[%dD~n!E7ɪJ/D9vⰄR@z*n{KFC)"UD!Wr>/{fl榆$ճ&ERE%/ⴛqP4@R%vJ#-ċيϞo?7kUM4Wj|PR6OHfyTײ @]|rg+:kwU>y 7 (}:wM™$KO;ipsz&R;qV5v[mt0{m'c,|RrRש] Skl>,2,Y埄ؘXx 1%6?F܄ ݹ#| ݩL5[[;8#* ?X77 J[Nlஔ'~Z'OSj%h1h0t\j 1K6i-q,kkHh)Wt]n')Iۉ՝aޔ+kL`90\qȤ#)mϩ .VM]NMa>Q^vw4v4Ɉt3wlfOX i TVlsd^:*>CmN2G맒EmVp)7 $u,Dr-6mՕx8?r/A(907&BA ַH; д,܀\>YjP{=u7oT>{DqlaksbI?P)_||Rx$p\BWvl޴;`A|ӿre;mɯQ )߉0%Α{xbo,0Q@ł/}tY ̼/eؤSVQ,͍tڿ/+J(۲`y}#hLbͅVVP{| V뽕.yKi^\8V\F㡼A"a)%Fnԇn}d8S{m __$5DECmAzjY:-t;K-Q*0㏦XpRoЍaKivHke R _\-Ty IWݼnnXj^1. ]ȻK7A#wޝ'Eu˨ظgZmydeG]&ͽ9շ?mm>$U.lJSk@.)vW)34n<?'BbJsH:2v0W\ҎH/vG<"\G-myUp|\$um9$RT yrfRF7Zc|U~~dK& #Z؍>1g-uϘ\6ʿ$5H=!&QDG6bStgU`+u>@р )ĦHXb376d[<#8pc = fI'80(|Ҳtk9_cEB oO^DFߠ'330R:#`wvTizV5o=ɝlx$Uofkǻa1&K.|ƜNWۆCwԉ`c[ebI_=8 V`ѰhyI7s~^פ&Qwy+%z>/Ube $65G'CÕrTo2[Qu74/ :SWd- uyYtV& ž"&ӱx6n6!G!F^d d2'Uܡ} EUfXoi:fz\}Pj`e^d\4|k?_$VY4VU5"ŢJ纅}uWOU<`(gtVE;=s58Emf&dn|10 _,ӹ( Ke_ @\86\ 5=<2`=M5H)FÍ@+~#z_31sgn *% #ZŃi:1 p{.$[zB6117"Tu߱<LJ }M28.J2B.D}Ƌ:ļȒKtJ'"l{K sw&)pKV%QV3AN[)ٗ~o2G"a9CW3$UX- 1Qaz&*Y8yܓN??"N<;r& khMxmUG׋)P}_҇`@xrE]OG-2Z&x4jT|4byko3"/r Otw2!KkbȽ܊錀aKtþo1t-#j+#GbeE4(!Ɍ6{{Ȓo΂[Z >甭, GYIisn7jp);ql݉~*ˆ$3Iۄ4K(9S8}ߔܬ,zL[hO6\tcu̞㯳gS]Ua x Y-DvJMҽ{gdpBhytncٙ?xeԻ^8)*Db,9kihvG6*aU ?-Nld,<'/7/e"м@|gq#U52|-;CagM,ɯϻ˸nrmn<:FH73_r>% MK^o":.묃>-Ͱcdy`S=;At4v9=)FXiYW)^Ey,. K4$9G{V֑8T[QtGmk^̇b5Maǩ'  ڰ3U7kfth`'WwKwkV-1+w8> ["&w-J; r_>^ v8036- T|_BnvL:4ڪNa~ݭlPՐqGf%`s}KKx&p Y xGh˘'eG q 2Q1upzO\Z(-ʘyGŒ<<|*%FfXoUO&bL`RCtW"m6O0 \lrGm ,?k $ieּ5fZםLSc-Ї$S7DˣPWKazU7}lnrB ߲inׁk9-|]ӥ!0*vtqQ#Z=n\r6%|9s ی O4(\\̕TGJ[8JaʳʅU% %JְQG'3жnGJVR_-=/lȮVk>FafLxOMU\vBf![u|œז(6ّ&sH $3bZnȝ 2,ql#xɾ-Y0uk]JU6SvڜUg>Ɉ(W+KA|ڴ$}4 VnD®Z]τxD&vU 0;hzv HP' j]&WMD.l'nE0fF\7ghmykI,x4A oq:9ϑ< '])yf1v&6m$NlKZv|\.ئ}If 5qN=I=,+@WV0 羝UIuzmRrZ|;sB },zsϔk0}|SI Xs.F+R5uḞu-lڎ]g]k,MCȆW?AeIY'}=T75{ޑBgIͰ 5ڱٷ.~qrnU Wt>b'eCX,>\3 C?KPb$dC"8cq&6xF.-weA+=6 Y,σe;f xvvH_\5u_Bj/.8.Ӧ'݃ȖU ar a?~S2<'- a>mϙUӀ׵dXT߷U>63M 3aӣ;՛Lr\R,gz3A~g?';_gfb: t?!͘Qa}Ro}Ȉk9vllorRՖ6"3eWrqX%p/}˺YkvfHoc6.N}<G[ .ef7m zN'gpxY UB p[CDAL{{dl ܣhW؊ʻ@@PpcIP]ciӹgǰ;c6xA[} +@S( BP:$ACV[pJhvcM.b-J?uCfaKS4Hd1r(u48dv&Y[-q?Y _r)焈W3V[;cSDBQ\IgT,S^,~pYByF`0 M~MݗpnDū5[Q! jH#[=J$w$xɲ.V@r5sٷT z>߭1QRt]O^)y9xzXr$l&@գ@3* Ճ 6~2 *қ;ݼ/N[Q XL7#֖{u/l#xTCh C\5nO~Сy]NS4}G93g{HrX}<~.!UkW>%-Rʼn5 ɬ91#qasOI6ץ.~fbf_mP+gp$CuPz8 XxH},r`R8aW/AшAwirg&0j~eyUl*bsIZ k;NM˥gњ1C{!ӅF>qNuZNaQ bzbEA1%9|{{3$X*߹2X J9y?'M%M m>.⼇ wѪWb*yj)Rj#';\ usR4ɜ"X@Y ۾R],;.Qnʖ9yXK_W6Hl}+o;؇ {ăGC}2K0DH2w_f?̂*Xyxk,uxwD/KZUx#Bt.Y ]*m“y!5XKg}oF' e@೮Ʈ ;sK)5vy0)R9M0~⭉UFf@vil^%3&EteL_.~wJٓ%ֵTf-f2~~u4⍏;]1 EM3a,7riDV0 8w8va;nI .5C endstream endobj 41 0 obj << /Length1 2040 /Length2 13756 /Length3 0 /Length 14994 /Filter /FlateDecode >> stream xڍP\ Awwwנ6XNp,Xpw N[8J=\\MYl ۻ0 $yll,llHԚ [࿤H@'g^zI'˛LLlPpsyyll1; L@eD- vtYZe#Ό;@23(X24f rqq`euwwg1sf;Y3A.Vu3 h.@71$j_b &\́N y%_J2`5v_@;L=A -*07of51}3p{s6s988lbW&KۛK.H'ruݓc{donsWV-{+P^o"?2K t=̬X [~_od|Av6q\\T/Bbg\@K=ҟobſ;<lo`'÷2z1pYPQaU`73 }{(KL@ODy{ 0_zn  =33llfo_o3WȸK5z[6Ů.o ~ k+AvW+bm"Y4WYksomA@53ktoffv8**oJi{3_;0qr2Dz;7 f[Nss `e,NH'7U/ѿ/UJXe NߛNziA\V?-`_zәAoq|nX;V@v+5:?V?o%[7Fc&|gdc'8CF'3o;Qwx[4?V?ȱ'_O2o1tmY][.8Fb?-zlN ?n6z[_7@ iql&l]~W#Νy{Bxz['{ѩ >:+pFOFmH SxE$̚b;>ώ>6-] y|hjwcswygc JPf$sa&A`:@q}3;Jψ{Y쭷j&s7! 54^uԟxm輶U/>PO BGE%ؕ'qe({_:3&^Umy`*gKwLqO>L`>A,u=C+VH(*ߞ7k#+.l% iI2,(WV$= mhiq`9% 1&SOʐwEՆYh`S;vlֵRsRFh ߃e{8_"I׼ocD?FmQc$V9?+roIM"0*&Nv1EhC`'W"㸬i1GwuV5㓾1aU5uޣ3RvNFJaDΩZ2O-RδWk*,P"O!d ʔѩBHiP'x ZړK J˩)W} ٩'kk|c'tm}|8>< 371954*wKa*+4ݜ272@hFҸ0mL\fʫuEsSI|R#P &99[[fOH.{ں~v%Q1`08sA"MCN2ȳa^ZpuJr#'wjUR3& _d n3,wKSEMhyECWE(eڇIE Gc$2@}EޣAC]6Yu'ak·*|Ͷg5R˫*-yoHd_3B>wN`KUAV"e|g{y{&&MD<cُ.~H%<%{]p͎DQl' ȮYڱ䊠I1<]J6_q;oªFjΛ!r/6V0cȓ.j];zvYtz.WvT+(Oj~x&. H(5Nf|.s &7NV Ay&u]f(k )@ѓhg DB-jutg:a)}sz5jz/ ʋ*T_ߧT[UcWu ηG %Ots/Fu `ꆧp&P0ɗ:#',d Ps~HUQm 9wS4{8 KaX)eh?QL~mQUKy|?7c2oF[ŨM>:aڳ,U CI ȩ({+1s|x)VO4/j5 Hkns!1'UfV`܈q䘢qDf>\E3|K`ltR2gQUh^;㸵"g(L:&L|ՆLBf@YQ43:R%{. L9]}&n5 ' v?V]%;'$|(P)R#9`9<O)QO=KwZ MjI:z,^FMJI}`ORb7  p 2$7K>a{>Y,LBT"?2o t|W(&ޗ4D&_!FAiB i!@ciy9nIFd :e׵F܍4Zύ@Ug*mf]NgnX_ֿhP 7f 㤺if/{3wu&ibYr<'>ז{5_hP.JxutDF֛z4JUj%PbW_Ba/57jui:Xfcut&a\ ݃#  Z㇁:# Ey#59 آG DvX+W>QIL0$q>9v:o3.P k̩vF 7cq/1>s|saRwkCs,rw^p\1*A:gц5n|C7ZmuQ]cӻWi\ ?lI%Iʯ)#w4S0d8O_;MA$(MՌfm-JֽߴnϤv+*%:KpQ=%D{oqdגVdK-:IAhwQyDkORE.Aj 1uM_75M֎xq5ݖYրh LwV)%XA>+hgI!P2.a+OzAxXtܶQa͏ޝCzd#Pز̯t,Lsn = ,Ky6Cݕ1 /%Z;[$kKH/~!o>;/h0ju|_kh&Dn\D0R(@ "i --,۩MQ|J|Aɭ@@t緍/VKG3w\Rz`ϟvu8T#\HmE1D>'ny>fcAsQ~͝52֪?/Wf܀by75T&Px)6?*G]_ghv~½Wo+xSUQ6oUyxv5&"<PWھߦD8Qn/ʁxM PB7\ gNU3g~cRY`'*5"i򴰅4"U"RūvW^ðesZpCaacpǂ/΍3kyaa(jC:YL]e4+~"ӎIS1ĬĞ-jHh7ف8Q*%ړ{9E64Pb#iνAFM8tFe,'xӈD0/.,*g%p>?}{Y]7(y)*5 <P`MX;8mg+H C#"sQQb> Jab}{iA~*T&rE&^ịмs O 2KbiU8h$7G92ԡ6̻Zm,3yQibw֣S,9AdGjEwCZr ]+s<,٠7O a&qSpm^z`N$n<T?Y7u^ <zaii {Ff˖Lv$]kzal4\Sc3rIrQWYhuU'>/n)W?b~>4f]1PĪܿNhPɅkm%3wF`qU)K>s%11*v;8D|TvRON>l<k,cK-lդ򌥛}+kaV@~n͐lWiQ$h#yٕD]DE+^Y&H'I)`N ;3䊵{TAd9I+tҸ ݏ"]aAᨤV~L{nN$5g_;8qU;Oc> NJ1"BYEqbb  NP#pH4=WTT̒*+mJ#T:24p8De3{\1h^Nz##fyX瓙dÀmX흄hOQvW^ Gtu+PEmw{7T2`X"*XK*w.‡²_5S+kmPzZ9:͎N!zSTB*.Kh!Ԑ&Rp˫cv=q*1O_TsX^Ѥ?XŮ ガ}l@j[ Y,ږLaq Gz=?p)okeo@mr LHƳ6ebH$D6>]3yғUpTt "qBP1D;'ễUH!<7`ݾsGUIz&'* 08Ҋ_.y'#KJsxW:mQ-::xXw)i˯]1>kn\%Z^{J c&H2Z^HIǫҫѯza{cEb%@RԫVlίp&kaɂXeG07DSp٣anP֦K<+Q4d/㿊&!)ӮV9F װ]ԶJ_QFñH"kRI|fmg)bGP8p:>ɾ+WA$H1%' S>m.7SO~֋g*{ 8;>l[א9THjY)Y]]xLFM;i@Q6N/$#M~G98yxfSUo%ܞ/αXP0Jd6S7zYQ  NۗKD~)+-5 {-'1r?f,*Ȱj[*qslua /N I!ALp܍XEjk<8N \U0 3;kڝ%U&i֫nh--qb"QLҥ_kvVtE5tJpW1#HQuQBrͨ޶B}VWp >\UTD \a8eL4oq=`AT:p*_Ű3Dj-GbGCtMA9ϐr>,.=+S3b_*C*>ǥ>2+0vxל{F:F!DMͯflک^s:A<)@|"_IVӲDM Ǣ +8h3%AIPk*xQ,%Z#܂*Gϻ8x#\NXQzbgXձn\Wو70.Yon -sVQ1ԡXR#1{;^W),fC6)keR퇮(͹ NtዖөpErb%}/OimڗD,61x0Z* mBڳ-jp?לFGx(o5R(|5D{uBf*%:Բ_^VoT, / #Fo1^,M(r3=J;O`!5=iނW=_b5ynƹ6+ 1N;h9}I.#K2:] LĝU.ijӻ-vUVLafu (WZH1-eTٻG Qhl\s2hO~KQOI 農?GS r{9z*>O׽VLhXtఃD.oī"N#NZSt,&q  ,ŦN&an/|ˍ3j]lQc}ɘ>sl-kS:rvHʙC6`Z5ɺ7Rɵ>_CMТ(Tvߘ rϖ:уѠΝH7F= fXLDPTǗ@uąT=蓒^Ftw-;= 踸)2Pal\ GI7n= MTNÐCy"?!R yږ. Z$ӕ@cAՏȔ!#/ _a=]J;;:/ >@c )i}5^eLEr wiU^CјK , ,Yzƒn?783$;1G>;r]פE-N^9 '3v;D;ZSq6(V$kF^y/}"hҧ*WCH\\qfC5qzTw э-V9etݦ_u"߸j ÷|@YL!g&dtgK4x9rx";v¹3  Tۉ:?izKx;_^P#1ep]9G9jO5D90{6DuX MfN'c!G Mw.$Tن77]]8kuUN0Lݢ#f|}eR P;hëjM30jy>7*%#6{]iS7wk5sLC+n[rk3p\u`tk׉V}L\wN*+#ιW $*5eXDg=ڋqgߒHk˭"Ũ/g:Utxgx T589WC$.بG+oObV9}\{H)+6L|6tɜޙ(!=nk  n]?jLp(Xb{VCL@FUسo+,ҩgÍ`Lyzi2~繁8G#Y: lZm!Z+S2p/r.-҂_2>!D님t7*iVn)WܲĄ0Oh.8 LabeL, z BQ4?6yϬ"W\fJFu{}gf2)% &&=1^eKN? $7 N _ԽLމɁ[f%6dChYÝ`n lScSJ-yH ӓ>K1S Y[b"&0OЫ-]tcf}G (,˃㝹g(گG K8S./Q΀QrCr(,x"޶('>UO^2h|&dA=@5^;fX$_Ƒ̼Z*OQ.pE~7]6?h3,>GjM6K"͌wyd|'w(Y8 og,)v8,UկDBJgw%'n ̳[wzG~.p|pA-Gk%7KekחxjlˈVc eDX T,8Fm޾J -/4&~~rf+ +QV@NY.z\6g.-ژ_Pf_B7_U BI݀|x(6<'ڀ'ֲv$Iɒeun6h9xs0Đ9BJjA ݦxNL }÷|1UҺఒQ^,:bX~X1&#ֆ",=198/r6M88<ϯ|G~I4̥|*|8z[V)߳J"䎗IՁ7xX 4F;=٥CM/}?޷*%'NT|`fT2=w D朗0˻v @p^;t"Go*.Q}Dx:|n7PFJw|CԐ[Vwր~hi-?M(lTYͪVJ8SK;l1ˤmz=/E$FXy<~4O:ܾ]"8ꮢgZ|6nDsdLOD.pM)vt[C:/4]*h|NwPۓm?amRݼeG_+V{'9|)c_Uv_!yjV, `QD@traw$$._.ϮG敲C՛p=Ax)g\Ϻ|"ڽH41^X$Z6u[ycikƈ L7 eŀB싁H^ڇMM͸ln!lsʢ!# Qbщ$YKEP1(nܩ1n.itnu}l y v(n.rcyFtӸ@uBjXVjp@h| k? 1StzW)ސ :^[cti[|xI&jՂ^QP8&SC<.;Jkϣ铍ܧgj %mY,qe5]ۓi*mx! F!U&KV@z^1w'llTs8DX'r/b|Ayb&)Rb szٍF8fHXQTp׌[`u0ԝpyW&b8 :rؗg 15C&cK:8Sݿ?؃Uz^~ե`w|q0~&RtS?#Н*pU;TLqo0AW8w0KAcDD%,9@#W,C!~x 2,7pJ}3ә}ΈC7EUgC2>D 4sEQY 4#6X|PPhW$*P ) /c઄[dⳃ8[zz7= S-1]Ѭ)x|(C##vnVCކ i5W3!3Z'=KttlCOc,9yp2F%|-BZ? "w] B.3̪RHR.M ͫ=i x\huA {+UuY_Yڹk8amx7u4̵,]mPn_CE:(P)XqvmȄpvQ2KZ9/ !?(.&⸄@ X2DН\-Lw rFG#Q!V L$b8ưF'nsDZւ_TO HIH}N@Sk>9t& _ls ; 8Vf>UI' $k쑌pfZ﯇Cbw%FTvYY)!?v}Fb\382虸ā~o^Q~iK44>\3h+!fBA`ԜϤ]f%_:ta;JʭZ^y&Ű8HL@xNVRWOĹxR^fRWGa3>λEYS/&$B)|nu":T<& 4֥s 6'H e9UVSJA$ R_K3MK D,|жu n 񷛨RK4EPyN|Q{yx|DUKv4MLGi^"-KL3]@4*~Y wjL%r%-gy~sq^3ۄä_o:pvU_%w)HKJ{d.1w?Xo%}~j'IYW#z<cЦ[l)/4ngma%| 2ll3&%_7lY#%z0&I=LL=vLۺ+taGT 9;3 {fh%j [caPQ,5@2vOƺC -BAxc$X>p)~2S#,Od:W ~}XToTNHTRônzY?oՏsxrzZC9%JM[>kxۆ#–w~;Zu˄a~ce4q!ٰPb {;eC  l53pWƆ_ɫN=-Vm]¹@I~Ÿ}"hMTgvN}[-"Vu׶\kDY\_ԇrk683>_&uX}Wϊp>pZA󵤇8thIzDяCe=eIƵ#y)>HZ-wMG j8`  |Ti }O85~{T}T?{=u!#~%ansDq!Xk 3 VGP oWZW>2a6g5M^@XET5Vvc .ƈy%cn!R?nX.-kaK`/;%2~2ƙ_̃S_a`&}MhB W_~ٷ5ub8VD0+tfe\]}No.R`Ό)C;ly_sxqf+|jIBE6S0dz9sת'-:+uLA?VZ[Ҿ64OhR~in b1Ef!@2\;dB1lǕV=9eٮ%Pz7_g> _(]6A%(.7_#9{fϱ3bD'v+ ';T6k+Ҏ*LjRIlCO[gZ<%#$rw mvd77&._VU8ͧ Oo$cWGYH 'D$ؐiRrO*[$:ֱH ߴPKxeg1{23yb3K{0@D##C+Me'A{V ^#>J1/ن75nJT> stream xڍVPݳI HG~R*(WMZ$j&*HSAtE҉H"ERyѯ{=gﹻ{'M-$0 ' ( "#H-8V5ĠEpD Gt3Ơ*@啠 J (*Z@`,`&7DTQQAw8B`p0<(bF8\ȿ(DxpJ`pPP /zJAH'`G`n/ -L $ Xz"0[`qA0, |pڟvC`bnB@lP)tF"Bp A=wc$ I0/G? !}`D:fOup,/xh7M @AΧ"[.7vGIp [~}?=&?6@  _! xp/p'J@#pD8ށP $;ьpcO< \ @~}^9{ wqF ih` )-Pii@7j Cy6?hw %#Ϟs\Dg097m  C!}Bĉ]#N18tA17d?Q}8h/鯃 F"qp?}h)$`Y{b~C(;6q5sr '<8n} 1 1XЯz*`c1<%=D0/zy^:ObQI)*MyV vW=ザȎ$1~UlCYaؑsb#h|U* Rر_ oz\K {AUw1cfK iKޱJtQ<"xS'G-Ʋ8;̒3po, _#S?驥+='˻ xtx$c4 WBɗ^v_B[׋ЍLt,Q~—Lni}i?WRR艂ޫg# s++\Lޞ WJ87a0~Ap!od G #XUG4n)Nշx($AxhWy{y] ZiFF}A"eY5ồ89nQM\hvJm~V~>";K i.wզvYӦUS^Q}N]!x`7GVtmC^D5W1"n4Ȋ%ֽ}iJgX>NsҚYݦ]n%ZmEa~m.ڴ2q=Yh 3-7qfԻ\!t+%E s3C&WNr<-8+/7{T_JҘ%e`:ػ=6zd*~@3rdL;J%$X`4p̿͘NڞGف>Igjܠ _?>~hUs׊6iU\O*H""Tnk~=:j˽ ]it|jLٌQ|}/ iĝԍWa{Otymkz~ؼyB}0<^ֲ*7Dy>(oK >xgx`dAjUyZ]*?_[z;;Uy%wؓd0*DٍC&RՑʹ7j y;@b5}QQṔѤW*Έ[i 'OV6_P(q_P?#4V!.S5*Gg#kK !/iepJ򊵓9O /12->wv6ky51,Nx}P1[Fh:K) q|L{aWocrs b,/'1yj4?1~r .S|&[ ۦ:݋xLhi|4)~^n" ܛ؅i{*e/PTa% DAE;hcG4Sٹ2A_=U@:QMydl4HJ/>$riWH퉆tܳS% `';&[˰'W֤C&_-Uhz ri?Nv:+›OLx 6eq썋,b_k.U?/[sYٕ%BڻqkRc(Y%6 z>SyKҜ6IWtBjzn= fQeD/>9gαT#y,hWijԵoz^SےMj6vȹ]WLbQQ4Vp'Ø~E:3jJ()_p wp`?`3N`#,Un}YL^ےxҦ\@5%~q]H:&La뫱P\85݁Ԕreu'MC\_C@car͇fkֶٛiRE:oñ5!v8'GvG55Qkڻ5Cyۈҷ.W3| Wʗ<;7iANIjJ 3Ϝt$ڴ+I^h|֋$"OKPk>/zHrY`ս" m}_ja#}G{YjL󒛵ZEsM1b_K3C؏ seTRdHT8٪ޖq"c OQDQ\|ݯ2 G u/TD5S@yRiV]"wPTo;N.rK̠Okʭ+Am=5?4@em;OḟrNZh#7mRw6 {&6Uo*ܼk"}F'Fut?Kj̺}olZ9ΧAL^Ä$𲄝Z>i3Ql*lmÒ]?J8;eTGyn!X} aYܖQh?_?TmKAy r#|6$F' ɜ7f #ɸ]}i hfK/OZX3LR݉3SpI,׎Df_@ʃ$⋌}/_C|P7EK]qV)d[.{w[FDš8B[gFԡH-,\Yfj6󭀭GNkcn=+-Zh7U]ܴzyGWdxE"+;g=Iۻ%+fv%",5˱)stdgP="em`1WZS:(7-8jLNs8TW`)IIKĤ*YsƕyrUë Pؑgb zKBT^TE|FU?]#ˢ8E4& *nu:(To[%\X'wQ:S*2pf ԣ}LM@:MἵƲ޹\[(8b1\a^h` `,Պؕ|&%!\x+_Bn9*d,Wn-0(3# <~'1oqg&}EeTO"NegHţivK,՟MSZvw92Vl3yTL铋p$F]RdTZq|{pFG¨$뛱KD., ݔcLCJM|_ױS|>SZ:S`y|S31X`%?%0/ÒǜW,5#]7_C.X3JX9d>2ܓR.űAjU6zzK2& Ltd\V1A+3CVzIF/6gfLwي-@T6+ѻ ux̧PZvv6vzDZ  =jGGbI.YگԎA޼NQE/5= ӊ$7;)Տ)G.iڃN Pi;)1s}j`[=I2,lbih짌)5_:矀-c062s5ʄ]DBd:_\ur^Qb6ĉk[.Yֽ5ȑ>N=oߦsZW<'1+U۞S78P=MnP]|+ZO"γ]("?w.]`Po"m+j۰`ԩrՐV L2X§C紐>͟ Zb>[}GM.Xql `B?-Dz ]u+XN}^(xL,]w |vwSUS}˵,ME(|a䰢r]8?_>w7Z,CЗ>1rkzclH$(?(jj=Fyvoney _iN^q}_:;#4tXG6%ie#F^)ESOF*GSV z²Sz丠uN`0(HOװc`x /^:# QsO٫hܳjȋP^Qѝ$0ʒgu&ۤk`%L͡I U ByMUv\{Ew<]a:K{7X{蜢p$4F(җ΃Y-/K2Skx{- ~D|+K'F<]p}oG86tTrD K^Ky{oz4p#Ϋ{LN֤Y@, i-T4绖&_c< ";1VLb8}ܩ:휌린P[͚%UۦomEv[JiC&1S}}$* jWCYaDqbiU|Vo](U e|Rs0pb};2rZ[7IrA#~n{Y2^S^zﰷ1}D^8Ėw>$z H1VLӳ.4M[B$L:?|HCH7mO='THW.9?K&<]xư} );V_p LKoLLIݭcX?ݧvj1 3; SkQz6,fKV3osݵk)B|@ɁH:P,]Nj.2IA>keotՎSs7ɝ`ȓsq TGp}) W/69P*+O^?(yꅠW *NDqltFNc`FLH~Z/`h~}^#_yxi¿xQArb/`ɧt_l*άknj¢褹"W5bL '1&a:4Еۮ) F.Dƚ1.~$9Z`ݶwL &8A\3Y>eaޖ'UWLqsA]XHo yniV3`W?&J _Tf +  c/#=PTc* {ˀlFh7 endstream endobj 45 0 obj << /Length1 2710 /Length2 20752 /Length3 0 /Length 22271 /Filter /FlateDecode >> stream xڌP]bݝNp8w A{p N`wws:{*XɜkAM,f` v2 $ll,ll֮vH. ?@WLlȹ9<ll66:8 $Mܭ,9Z:3z;??/1{ hjg43;Y]NQÃޅ-= t: P2] "5@?bu Wg ,6\n s3.Pvc&[`ga' d e XX ,L_&v.`wk;SMbp}Յ Y n\ruA3 u/ֿj rdnW n k'7-"2K+t=ͬX [`.gmAq1q\݀~>*fS5wth '@ x~y2e}#+/w<>̜<fn6;/(X Jew'{\Πc q^]_Q_v[KGkbom_=x\'B|.@=?Xhnf&!.֞@skW3,fog 8Xu|lW xRR 37 D7+ oWըF`֖`=5Ww`8oxkiA\z~ri7soplSg3[ j?f8x?98ßreuHX`&+1;8lnKI;`l <*+/G+  pl`:6@pmrLnDu/sm8V}/zп_G&]N 47WDNߊ3ojm_鿍q._G}t3qAk;?;vr3@? s^@p?ܜu] =f f!6u!m5bD{³{?3,;BK|+<܃}GFt+\x'G'DVĥ)܁ɂc~bf }g'_ [fN9'7>T<{>ձ=jyX9\Ӭy| XWfx OY/dr~'>qk.]T$7c4>)rx>%c[Ivt{Jj?~PO BcFlh_L+܆OfS&֯vuF}W]x{TRR6Ubz~euӁ>)7(ԿYAֻmg;wct**ÏI iD?cei]L׉ZR`}U:q̔q*Ƌonjkvz)5& %0F*Gkz/ۛt|:xط,Mo'GZ͹DZFcix*"Z z2'J5, @Vn\`Oqĕ|? Ji'6 F=&bβWn yZak|3{#DZ _81BʩgKGGZA( [+Bcv7`bKR?U)O`ګ[s̵Г|SP)>䘪cۖz爒3[1NynhL(L@uv缐pPĥ+ɓEh̚"P_OJChO":K'Ֆd$M{8b)ݱ{t`D"4IPTSÜ*b埊+mTthKZ9@QTzԵW%[Ꝺfv^aj$^ O[pD5e^FRzjB۷ĵ ~rhU+^:lAoϝ@"tҶmPjq:֎Ė=j>oOq >j)m)DStrW2O37mW^y%CL̦yV[M/㳥^\"/9JLxf\J>)g(Ǭc7Ůp Og$C?a&!DC;n,q1WILo(Bj4! `;2+`g?(%:}Th鈎w&5n5^9@b.m$M'duȖ"., _v-G22qSKi^g~h΢OpڷZQIRʞramB ۡs£DHqE5g,m BiUM`M3cYl7th=^#`AiOZCԴ+q'Ŷ$Vܪ"WeQɖ4rTgdsL684#'NSc CG qev?-R}tiE7aAv$M>}y \:hx~\V@Udn#^$ ]b;B1),Rn}.AYd\O07] Z,HY~ΐ[$NvӠh~ g t JC)k1.?K' _nǑ2~i YΉBq!J-J2Q&>=GOӛ /],Zz2ژ:}_}sۅ"U~B//'FrY8NiprٹInC^ue5NLMGI{i7{HMj Uc1m,@pVA{i cn|"ꄟФ9WIH~o%% \Ͼ{ddI1޼cZdJ syl[ -n3qGt̎=aY}/HJ/Ey;w7Bw"Z.ọ U_5|3N[ٶed. +.OCV$Xܻcr߆bInf*QwX%6B$muhSk|..m$.%N *!_+q/K.~TG@ E>i3WYdQ)ښo40[$eߪӌdQ0^YĔFz⹪]E u6pZG^@}N[]U2cLuP;RGMM|A}iNɣH[]CV8Q|(eV/5͞o8gOgPmQ{g`4Ŵxq(SÚ9e;D>-GŠ`vz=r숱 v 7ecNݪ90G=mdP+{t c҉H`꟩j-#v I2&C]4rLJ`.6^?N["hϲ^jMkaReT =zcM,ly"BER}+qxSR/Đ[tLs(aB`#4T_v#n\V3fezD56 @iG*i92)f)<,3fnjBj]"kX0TaV6yº ? Aim;y T>A6BEI/Q=[;.[ Q*uI>ޙ{nؤ7{ o"ϖ?u:<$C\4P6F2,:qOzr| 4Y4T>2gE"v_zci|Q[zoQQ.lY#biD!gco7_S.k†'qS%efYg# ; ;(Hn^J'zˠӌ0`[flRJD3H lbf%c>:@ws ѓ&r2ߚ8EO;@0hn_ ѶdV>eɥŅR2y1Lө CyπGjJͣ]ep"$i B=sO-{(D<&4x?,\_)qU}?2B{+u2 D*byX\ݽ~z !([IaĘ4{O+ՑxNH%xeӔόy1+ 7ͬ/1U1g6vmII F~أ8EKg.? {5jAXt vx5̼;:h/`Mи#ZYV!1H,jⱿ0: OD A5@ٮ""bϴ@Vykj~hc&Khwú4E ]Eh.:B֐#V#}ALPv}fY[H/!Poo!xdF!eS$1xYq9st;mK* M&&ag^}e0]ڰ!HW asiʂuJW)=̘kQZzR0n(ps${=TKRwi e)nZx\Fo5ol^~Hqر^}4M_ݵZ$8~AV堞& N"|OA縧V|CX݉3rṗOd/[JhSTF^|`Чn=UT v* +[.vZ(qhzTEBuO"PڎGfN:QP!Uք. YL7[M˒p\W'E_n\V&62 )ai5Ϧ|K?z1 ~6p=u^M*;'%,BsȪwx([ix>soT;܌obhT)kWkfӦHP^hNnj\w;<]GЯ;!|HLboA$YIcd[ʦφrWXTe~.8?†H{}GA-Y ųSO2s6Q7[Q׽'c׆SkfA q1]MZ(KTz &U{.{lb8)T\^4TAJl%6=D?eW'fC9LpnrȬ@¢w巹3&s۳x jJQ"iV! vlԱs29ж\ d"˫]ABUwnٳac%oavt$ȓkpmfMhDesY:ˁ$-A"Ϧ=G|7=muk}}^+/r U{5ixQ01{bej&ϝ`JsK)RNY Z]qqX-BذDtn%wP 6B]$Z շNEV.6怺74ͳ{UxT.Mt|P9gCH`>cW-X%]x^3rC{tYC]gXL?-,W4B{#p1)GYV% fׇ: j'QDX1ekox2)1aM}mf(9 Jsrğ?q ˨gz6,_#y}.1v4ݷOYzMA/ByZMbKOSd:W}^ P^_ MyPJ&NUhGѼ$gBҌP&6oS:eCk۬HxժdFPH .'ߢA±q ӁܑDw~6avX&L );sM~Hh􆼻t\ox ]O՞ޡYԃB ַ*P >@^_Cl\c:]YLk`%-ALC}o_06C0K-$Y{+5(f1GK>n\xkV& -\ Nhp)A d-ŽFBL'G"I6L6D;|ZkOj+ERoC9W;v~ ÓTtWÏp7SGXEiVɷu[eRʼKk |@3pnéH.sWi/V|vژo:(̽⸁܆>).Ϡ߯k; C!ϱvb`~W,HH/"8C%ϛO a"oG3 &T.,?p&|%X!1TCm'b_DŽ8Hblp#قιFE^Y5k'7ܹ'Y!lF]u`a3'(Jj.,@ L#ra h$*#%˻Y\]ϹD[.֔Ko_ec~A3#K5m҇ɂLYT }I$Aª:95!6cP(_ҠT׷>V*5_3ϩNhVsd}oQV{U!/Z?-N\)hC2'=~cO=}r~GY|)/ݧi{Au% Kc,`yqwĘ MPPŋR x+D=Pl~p^LëAq|''.mAl >W\Py?F 65zJ!Â2N1ųRJ~ԩ\滛݇w܏C6?/Za#}v0r#IkG#ߤ:nן|.Μ1Wpy-~(Rۚ67i%lqM@-bX*g!wbQM{x LF  D^֚ 1wlV~)NVe$"[q1bGP"ދС-ـfY㌾xo&sτ.AL%<>|Ꝟ}Huo I-L>\֖v_n,KF5xdNe^6awEzeF|e.'wqc4w#Z}aTNmsʻEvzZiOl\%PyՎB\nM.oHӶ7Hp-coN!h9OH@܋r pv+|^DO<ҽRp8;k+ܩZ]2w몛{Crw[(Ar5D'Ai^6g %iz+Ho}~Ɛ" QcK!{.5a-WerNu8[w ߲6cP13ښ'ܳ7cc@ZE؝Y!"AwNE:1QV۞s. h@0(Zb+ gcؽ>;1Rjo]ؤ/ VKa Q(otF;j)tQvJv1D ` 3Et?`ݑOǼ&Oոi!`=rJu)! f,'\%..]A'ž=zQyjOO^'{?S8 [\s<у6\:bF: ^u&&?5*tQ0>o&t*(捆 Ѷ5ɂm[㍽]|@U)hX# 䋪ʽYcirfha2o-\MX32$T_Gp>ِnP5. bؐsDeuNQib'"sᩧ^q_F8%.m&s!:Vwo^. Ōq̎fH wJ̱_$'"l?JHu,ڴƘ5 ?rcZK}ʹul7*50#CcSBM/_u/~Eݰvksgϐ䩠 ?噩kMi@+w.Z,L /-1i@D+ KU8i\vDi )|-Z9s'j;|:Nge Nҁ]Ugv:^i}9v+2ɔ7- {3?XpFGzڡw-jU=b#$cFT6syv[X."ˠyE& Cߜ _zڛFۏIIXT7R&7@b:IYgIN{pyK~΃.o:cBD!|v'DtxNE8S}Q!L ij:X#Z3 ͨ us}2f;*8CO&'Y}=-d/Ep~b J Iˊid!;vŲ ƚ2єs"h\S$s_-L}rXP KPt۩&#ũ& :Z뤮ڲw\)^djӟ.{{SѡD6뤈C jJ犉 h,w~z\3Gc1߸erf~QZ3Ǚ:sd Hi7Mƪd݀kkLJ q 87**$zN){]ٞ<,,䎜 _΂En[MkL@m`]ڱݘRm~C"nQJ順Dž3Hznodogma8>]hf6i`\r_\4$n8QaPc \@m ƮwUA?ǰ~ NqT"i.CI{{w^KU8r:뇇бӭt@to|ZB^a 5q@6;,J㱬X(6t֌?q`$}^vCҺЂa|OczGݩ ' ǦK-c`wLCDzw<{ML!$osey|Uoy0 ɪեe` <aˊlZ%A$zpPGMW-)yTœ0Ɛ3?Lvl!ÖY< jpь Y}G?#H;"n_m>L*Ň9f5K KU't rwg;>KPTAC6m2uT\%KAٞC9_x|*~dh4HN˕!c+f.D)22يpb+bkJُ.@XwTo<4y|O᫥,3vJ1L4~I'|!خML(3퐜tKs7 )?_CrXɡkV(]':w'juH6f @t4]$Fz^J% B/3I>b./_ w {WCa8 |,?F)+t#ҜSS)JrX/GmחG.+ory?KqyܤŇjLYdU"?{pգq.>G٫hAMߥ >F3INk|א=p,Es+@+.q`а~h?9:"<4ud%{{}oA=Ο|eB["CI~e!;#7SvRW6QhSHU"8w3HS)hbKfsߓ@tHذY[(__&O:Bs4/O49gQ{qC4lPߩ5FgMbyUu\ L,9fB!) RW], p{"IUjaDOq_VSaȋi&%\Yϧ{H=2RϼpB%,ZyPə')}<@.~8)4_(y)av:y a25Fosu.)Bޕ;0|#yCīɻZ+Sℝ5yyofy8ypv70xD7.9LC\R!RED}hkҗ˚t }[u7r;c ǿ C UvL_ݗ@w:Ϋ&Xz0Wnx䓌g[(=(Nꥍm}I}?jv,f$;>噺Fҳߍ_۩g &F-3euU'+?FGXrZ:ܲmUann>3&(ˑVȎr_'F}f,LhlVO~ ɪ0D_AUr'W+rb*̔CfO0]Y䥦{tCv @}ͺɑC7V^,?F.{|&{i@i~&y&w$:=5/@щSC}r3S.nXRqЈV8"/Y ,p%н"pCWuՆyW&gSEGҬl.B4]9>$ɵI&%fLnlF|:R\w/ fDLj (H}0;=Uk?.Ko@<çsLZ|i⦞ݥ4'2uJ7s_fG/jũT||oRAT/W%ۡXxh{x&?6=J< *^IgˈT?Z´7V#ZT]:=[ |Ϡ,-Mk-Rq|qbLg(^g6ʋn97>|=QC7Ɋ.xfBB#reX!̒B]i[ynlCĬkDSإs} -(PB+h.!3"Aw@(aN[9,HTV`"63;"ڕ nOHd. Om/ WRG| dh'93J,Q,,;IҚ6"e*~e.ȴ~_E ʐ54ѿ{5u`m .Kf-iltaa p)$xv[?O;W:w{ru*p@"TqQZ б<lI1S:|^.39$"rCTtl,5o~+>BяX!d@WW  tc~qd31zbmЧA!ЎQtpyF_6j{HM,C]+D[tZ3|k6Ge0 ~>X+o=bu}oNp1B{MCʒZi6\eyQEUVx۬)mO% tKEM. p*~f*bLhkVE#_]gZ*a Kc;NcAFۀRևh;OUZ6.D`PJ^%OvJC?IZPd1(<7mVеw}Z0m^7/*3#mfC&^6`^:qOBͺ'OB'~o:!Lxƀ>n!G 5_jN'N؀DﺋE(7![ MA4ٻYUCV&LNI+,7o}T5k(j"*gEw7 JxT#„ŝbGU^We~!AH&m!]`G5X_}= N 6@y1E7%7xxʤqsq8'W֋*TaN w&Gԭ1籹 ԞҰcЮ1Ç3v۠B]urh[5Gc2;S`s]Q:]y{T2R|ͲℸB^!KI%1I#dTV0uߨ(32B<–?룑bkL`%o$?V饀# HrPLjŗGGF@GwQ{*¬x3yF̌orXA⺼ @=9++ӼlsT)?[~tl;#6 %;]d6(٦mSxC?*\n5+TϾ]ocC-++^Sʃ7跑s)bt`[L,B׹0a/2e TqӲd6: `> n%Qqva!^õ舨3VY !L=;nz!lf nA6nɚqԄ;=S!bof,]CS]񶻭!ƟXki\%>s,A~Sm{Ӳir8rg_C#nE7A w^?ڣ漻T^q.B1{[Ax b>)7J\2kBy{O_cJLdf ؑFY~ɟݕKS{&P-&Xe<5O㌬8"oZQcx@^/^.(ǡLI"6&(Ơ[)eN o-"2;{:;'*8Y(>U*O ؕv[Prz>eK%MoǴKr\{I_PQ< Ra ѫ!!jz|6e%E#PiZΪ6qS[/⍈__i8h\jo$ǭM$'α;Tջ)>/| s*<.@U؍J$ǽ*|J:R %Iv<o>5wV@dlW5T'&x^{g#חa,2̀L>fBc7D:+w<`'(⿒B6Lo\;rݖ&fA|6eVlsX`}VGVzK/\av6^+ˀG|v;\BI`Àd7p}g%5J=yKwPHF bW*}rr%AuCG]MwFC U; ?횽`ԉ^08StpAԆ@tkvpUMdœĹj%R* ?ڹKR)"y|`1oKi>M4PrL+a'i_xe=O 0v4i!۠XH`- u U]B(+J  r ?ҰVC&WKfmEʻI xkoaFFVt4\.=Ə̰D2`'iV}GA3'_.KnANË6 Af=3Tsy H })@_Lw-7_tlEME8jJaH oE%,t$Gne-<64KҌ/h삭hl|<8t U:%$}'k@wtˑ(+C}t.h=|ӧ 5 UR!Gw`F=y%&~j* H Tj_O!}!QX>+ʅj`)<дTSpQv ՘fr?9nxh6Й^s >H}se #LMFB"JyNvY<ZŵA{V?[^GwOӁ(Z" -pիp4ʠl8nx? ,<+T/;7NCV"+ RR^(4ޓ*a_aW wvv`U~65(2AӸ&xC4\%3z~hةDCF p8֩E] :}EH&^JcHyN۾򰯾 (Z a"L{4 =1rPI.N6|sG#0Yo咿oRaNG4XPu$`QSnLqEޝӭK(yhxZV7l+t6r͢pl"9rsGt^q|ߖ%\E"0 n<+FO*@L٠ z*rh=;FYl'('Q"Op}!*BWl@cmHNvƋHqX;^u@MZ#V<}e Z:f窮37ljxj HO.*|"rfUr %2$t nY߯qkArsx4̷bþ +[D g{ծJ@XX';\h!cw'r^o8p+nQT%ǼM ?%9QI԰!x#חdjpӍ+A smj7HD&)1.?'-+A5Vb[Rdэnuu ؗw!{-v "|JкXooY|@j@WQwy# l2[P谴=ێGsϷbsS%K)> ,#?:3f`YFȟ5E!X!uPLUOa.1o]OHÔ[G`s H^9̘ |zVKH,di\)yyንqCCY]v\έ VL'ZY)ŘXnRXDC5t"IZ|\˛i!L7.C#֌FE Š8la z]geQ] D9kneFoc~D#/KydO^yE0~;PYQW>/v()mTT3F@Jɇ1}8RNq 7N6ƟaVTO~ȩ@|6@&y_6wãGf62k sOjv_eYؓ r<0v6 AfcCSЅf&=gðuJ  4fw_Enal?m7D{LO D :4nB!!G']mΰB?vFjG/YlB+DJ?m@~yӬ>( NN'tCw[? 6?ɣ Pga< [|˟Rh:3xrzBA L {>,no^*Yy &gJ(m!+IMiѭlŪԆ);3C c"Ÿ EܰeҲCvf}SF+re:85^o]cVT9/h|,h=b<=?Xax݉,E,fSv^^0紬0y;j4yj$;JV{>!xh lJS?vs oX/N^znΥa ܋z/;xn endstream endobj 47 0 obj << /Length1 1479 /Length2 7059 /Length3 0 /Length 8045 /Filter /FlateDecode >> stream xڍt4k׶DFO{ cf0 =JD^;'95k=sᆵ{_ff攄"-`rH3'H("@ ^3sB8H;η:*TryEx@@^H/GPr ,tpw[Y;ߖ| a ?9!`Pl 8_)Y;;;psrQ\H'+ V+C^_j`{ȸ@k86*uႀœŁڊ*@ug?8 ? @`;ar*\n@0lBƃ_v`[ߝr@-? Npg n "4,J#agW2p'ݹ-S#@@]upG̟.*:+3P=075:F_[ޞH-7vD_N.0o-xxP8h#gU,owndzK/(ar*kȰ?6))ГS W>=x;./`́ΨDp{yx'-2WPCr|7M@ C7$bg1v:Rv-TˁoW} ]۪ ]I-9[8Jj!Iܖ#`H׃vtGu;&N,Z>^A $R(7\m75U'@n/oW<@n?D! "ϭ3Q[W'mM[4ɿ LO !A6A awWd_kHeOI-lTPl{%PLW6`[Z,sx oT\xהP+5ZݮFY)9nʋԔ[j c 2>FPdjcTXC8:ͳ/K_?piS$6> (GW>R]<8llҊR64LczZis!im-HV ^O7 \œ]KB)RQ iDI.6J}Ǎ<"$WLPܸxP`-G5Vr %G& X>NlLz u&5PY%BUea`3Ŧߧ#e{"'hF'ZVsӄY/cdr{ zC[޺5a9jКWybOv:0%;fx]{ea*h<ļpM#YT nDUy2 Vyhl{)/g/&(iw4O_.Ȟ{H&8j?t-s,zzRjIfqxc}"G [{ڠ(`] dBӵY槯qc۟h&$FLcWǗante' I1=,r7a}ĘK(xX$E6||? " mq5/^?wפt`5)(ZQd7TsRp| 7V֋?zC^tERYt43.ua!g)`wfjl_+M?ڒ~Gf-xw9BNܮ/S2>;"tQ6R  ~4eӐj ˍ}uJBJE ʼnAvcŰ /7ìh99,pUpogn,iat/^㧶Ll8%ED(  /MCǿ5-rDbt/83HK:Ϸ&on5Gڴs!eաp7S2=*J9WsB|jyqxJT5D]X5dž Yh+"AX];|m>SnLj.% ^V„~?IUғ3w^|v&)׌1ZajٛS4l!nVN[i-׫~7]'PwwWR2MGp)sG_i lp,(ap3~Ro.r)fP?rrV<ԚN=-%v$}9>(\(aNW 4rX~vOy pp,Y@7~g'8}L͞EއYd1Qܽ.7`;.YGR%-8kP;v D H'0SUk \ Q%1ā~ī#wFtUݛX?(.m{r32Z(DO[7jZVDOݐN xH^# JFͮ51 w$W_Y5i1꘥ۓMJ!>p.;Gۄ;ǡ&NJ ݃b#Wȝ.uTo,WQ(|). JeQ\ԱQdvdx$McplYrJoxnS/㙦W$&i0M_)[7G#{]-Ru*'x>OCJF^A =XtOrhw"y~ImDezܭ5d yӯZr I}j7*jʢY8ϓ;G:\;[A-(dJW}ǽ; g2W^aVE5v).:~#bҋ&2/1SDK磓xA&4-r{M'y*Q&u],1}p9]O-7Цho3H2ALYx }ߘL\fx \}7\a^fS `! 4#w3 VAKil ˰OyKV֎qɪnNW-| ɂ&-hlhhd^w(;11V[`GPUz)׿ٰt|tn "pkàM|y455aź;ĆP\_mZsmd 봉ܡY]{ˉ[#Ƣ 5}֞=Y^wP_SĴPa 0-]A0< At˖s[mՉ] jh}$v^wJ#irS)C)Cqub D1Ll>.3/.9g08>>E7 *;j]()H3)`CԫsIVwCKȪ mj4UG?ҀsBtak`2ޠLU(Lԩ1|}ylB]TCό[$Jf-/\ r͛5ooRWZLP%GBʿ7ە'|߀72M3uYĚ l=  }<7ZHG泦PP)-vYkUwS nCSk*Rfc8ֺjsc% i洦>"=}z>6q>;P].xHv D=|݁(WˣYeZ*k $c2rN;M}\ +ZVw. zH=nL2pPNB4ﺱu\&.Bw m;Lɻ+ |l/o5buj~pNet/>Ex@wwy-b 8q>m(a?*Zܺj`ij+<~$PyN-L_Te9ԭ^笣+4>Cm%kPg,fs10r> }ňag1;L/>\dVԸBӬ21mp(ec}g%$Qgo7IF*) ̕§#CeurF8lSrOV"~^+N0b)]Vq=2z">a̞+s!fI8Ìt 3xw7,Q1iG{q;{2Օu /ܐn貦M^>qp:jYgUԱeY틪 ^ıC7%=|e(pxfA1>RXGZЙ2@|Bͧ5lauz.Y'_?:\k$|ByQj9~ xTԫ~uA h=U\ueRô-p?ƍInL'CZN\n~݀$pሂ%Yɗ҉d{{"0JzeqMuޑq2Jvpu$G[6@UtÎ1LO"Oؑb!Y|AZwVv/O~aO3#R3  Y B>7 {˴ߜ, :5S:%۲N +4M< ;Lݢb<a{;Z_ҤSZc3s>z ' M$qAgeX$3K%|v/zSwѥ=OS)pz4ɧ(L%90CwDl ;GY M٫#w'J&$ȗZJJu`%ǛgO:xᒾ|IU(/; 53.wK0y?+ HM99l`먿nFՠ$^H1nܳ6IQf%̤Ġ]52ZlM Sk-9yn2)z+;I?Ƽp0fmVsGUJSDYy|l2 %gVyHq(z7M7je(O`q+f#!mykb܂l"zjvcld Ttסy;ڬa{(f\8$>Â5I%ZXd-݋K+Ͷx|^~d(h%"Z vUAmrJ뇖˸=Dp$l3JKIwf endstream endobj 49 0 obj << /Length1 1400 /Length2 5976 /Length3 0 /Length 6935 /Filter /FlateDecode >> stream xڍvT[.ҫ4P^UzRB $t{QJ"*ґ.4M.R|?߽kݻ޵{晙yfq*0p ' HS!pH_f >s;A/; 8?ZL>@WO2pQ$$ǎj 0#GG_@Í0Xį ?tP7 UGC1_'.% C|(@xKI) DcpcNM p"_R?~/p(\t\%<@2`!I戛j_˰ 6ǃ6YgӴrqꝋ*;y=?akd#%sY[H8 X-[yvւ]p9-і\ ^K+fw>F#TbX,Z=zߙ.\4W+/)1KK"u25?KƽcE}ʈKIZOo9)5)&&^e##N?zc0'\0ݲ&fD0k|?- t=H#ؤOM%УGj I|=Z +IuVl/o4L8,gzFWmޕM\ɬyPCZIԱBJ;0O]e3K$@nw>\3u:.CuJJe~uIs􋹵C/Bh/(iOAnڐ$$@v߽5zcm!/aӸTNL\efKaB!Tim#kA_D|+XIEMu]iWzh4ϊ(_q7P\(}MVMnAfV:7PP(ٿw_z.@HMNUSs`l$)}~1k-=f<n(`/|,棲9 zzu($S!f}H&!9%޷&~ \;Twt,ɖ/ؚܻFuO?~/)!]2Cw.v fmɻNV݆8-w5]7g-j?rNQy;]ٔ auӊX/o*ajٹ!\*Wюong+Ośg6~0>=zT)Tm9ngk0hA̲eBq]0N+RAb`8ʜm6*Y W#hO['(ŠLq!BQ{ [@Y!yS$j ~Gx}[zDG>wZ}1RO<.rdj@W]p}?9W䶾cKjq](uo/D#?]f_/%_ʯw {i$=O2#j5vb?|>J uվ9}ql:6-[E;xAU\{X)'ț`IP#oW򉑂~_OtG2 STfߧhџ=M/dU;T`;@˰"d= =Vޘݽ\Ǟ,Y(׸rs!.HRE2u4A7iS .>ȧD۽B]|t)sF9a}m [M5 n)?9ْc|u~VK1+Iֵَ7w 'oR]L k=U6+SG mw;U-1ϱîNl6-`bq)∏֖\mgbY/}ӠgzEդxwV=孳-9.A^( gXH2KUSԆ_h6IwuȔ5Wn]Rj1"Jv40k 6s}OTx#ܴyt:Q\:Y蹐>/Ϳ^W=tbBTV:훴My!7݉72d%\gK m<%dEV=wcYrZ%u@u'՛:K zkhycl|0r?{87s4*~ytgS}C–qY4XSǤ} +$O ES/lILD3DBCBam֓F̧5 Z!PdQWE'Шfҥjs:}H5[$s1GGP'.LX'>5/(.PQ KHD/N L+sJρ͆@ѧwchwg4y\Jgv66UaAs]5cnG MϵPGjl|/+&3wQ2h=}^2j2$Fn{>rI,oY43SbN\Z0@5U2ƔM!atc'ŤԹeOށGo -2+9%` H RG؊9.Ϸv <p#JpE굷ЧP\s͉69JP z"?ЄA4iQ54V8\ZWhTf4RaWS/^{:u7ڧDa}@hnYJS 4exdhMirIsةT$חdg_JY<+9svj9fJDb@#^9FT&AOJ-_{>y/몕oˎe̴~`mI;?Ș1 y /N3zF^8'l7U]_4|IKo0oz73 |y_5&:wf8_)8UX M>_/~[+si&noů2GΗ|wS#ȥ]_nܘy<$5<VesCh㉌x}R\3oSCڗp^&\+n]%z1AwZ#R k#є;gmT9!.-Keud:xt#vOLʍo1|Q vi4AM˔=yqCCe_RGT==H]K@{L8JLDۃʲ 7| ifqѝ63-_ >P*-LxG+sxy~P}~,Iطg+v)~4]ƐJ-Z%QjHCɣ|ov-9|&)Xw 0UϒZo\)=8mQ)/}gȒBgZ0;̲]}Bvy!{).VAV;RrQݝd/UGhģj-45,йYk;'|UHt6;){ؚ"Z!%%vo\ݝ A+fr"H1>MOL78>ΙXtXM)|3Bj[&%cN_kizܙg-K uCF.x]~#zUNZO`Af^c rIܪù dl<:%ːMu+&|1dQH[3@iFY"!p1>㇕ .PDI1͓{[*Nο:O_!$uF焮˒^js.kbƺ?A0 cħV[EO<'횾h`>_\#g8'Tt20bv7X[0!aM3FҁtDOXB?X,}뮤}#(yi;G#)qo'?TL{z$UO_=v\pVQM{8a; gA`=d#'OnPX٨n&ŴؾQ5nlRG$802:woĮ0g+K CK\>*}9oZ+i/?OІ}]׺W&>@ u"ƫYUaji3h%u!b&4>]佧jwoi`Xx)Ն *}%oW=UYt]nw endstream endobj 51 0 obj << /Length1 1981 /Length2 9492 /Length3 0 /Length 10737 /Filter /FlateDecode >> stream xڍTTm6(]ݍtIJ403034H7R"JHH#(Ht77>OY9׎}}fXtym`*0(G_o"ca1 a<#0A%(L Diu7'@@TR@L /# . PClZucQx!vH2A 1?`8H{3jE AH`G"]$<<C9s @E^DMC\^E_iP Q9;Hޯ)A`ؽ#` "agՔ~ 0;0 /!**, {_ \~(~>.0-b F} `Ox x@Ɏ>xQ}g 356Vב6'G#!"I{sdTr@_<˂wpJ`?7. GeI7 t8yv@I j -9j 67!ڡ$# /'A@<6:$O!U N(X8(~䈚*T0QMu ͯp?Jd(|P@qx*'j 9QM߶?Q yؠT7DBBI!F?j=a7v`( C AI/\Pgkd`WPMF%@ _ 6jw>Po '/ z"0?)|nNH׿X2@Q_=00EEQ&8 eE=cuI@:='F@H 5~T rQc$/ 0 ›8TԝUxa/6DƛG Ykd<vU)}Г3Q64Kù{iޜ8ܾϓ}~lQ F.%>$64c{iRo_T*Tw[8ݤZͰ Z0 I;yLERd} =0WGCOpIdM|̾&9e`)#c f7ݥ#lb]Z. |leVNUHU!Eu؈؝>1]W7q6/Ν3D" "u%(ODyqDuG#&1.]ibOIļ?|j{Mɒ/^6AKS-Scɠ#K|C3F;OWJyJdr:h 0ͤ7n4HH3@C9^0y^9n(LUgϖwDžAT8DG§tu̦ }gY#꼸"qE zѱd|s&z^f0<ذd'okL?-82PEL]`qՆVIq=(HM:i`}G+.5O\.߻*(H&"Ϧ^'~x±7o1nrNuuE2pDeaFPZ/ˬu 527M}#ٌ~u/(La-)v7109VC\J5xmzA+IIL_IJW{,VY|ڑ6(8sOۢqn*{ȘA[K@%M%;bF=) ɞAݘZJC+y^ϒY 1ČJˀGL-lh_Ӎ(ͽ{L?>\u9\^YK; //WUa5z ]y'ZG x};y4^vrɟ:1Ti sDtYցǤU`gi8K٪xrpZ,h(gBgY~ӢWjB|vq&6flą`{&XrK BfmIwBN?h`]xzq'(BP?vw\K3G݊H yZ\拢XRup +z+\]iwswiD nk2[)S¤ $Lpjۉ. 7of =Ci׀{1 $tˌ9Z#ߔ+Klyv=R\ٻFv+#;!#!.F,BhR"ؗ1euXh\((j\g+M{<ORK^;"4}}c 9,Eeȹ}k#pk x!sfD3H{ uwv)vvJYH9'P9Jw)H,)kBt4>tA7E ;]t aIc 9'^aER|߇vT[O`.;Q W>$$0$wr@ڌ40^9|'RC'pË3R!pMݖ{bŢĈ1[*6̇|Y93e2.JTi>`բ4yw1M . CLOy}1 aE=A bGn ',!_u-lG'6ZaƝ<*,- S1\'oMk1eS?0nW76ٹQ)*۴(]lR ͖h˜jɖ޸/e"Hy9/X8qjΊ}>+ҫ|<:pDZXxOhj 麰"_B勖me ;?:Xq q'_KcWjƪxfr·+'5~Y4kmk}|l?_OI~3's?D11# +NEt ËJ-G\oO>)ո@M +,aD (J,s Q/a)o>fǯ,ѹw1$ PJC# Ke% c̡6 66pǼ@` 𱗉kDS,1 Eb_SaAqSG Uڐ/.LQ cQ5ڮj=PG]%5hY!8B]lnf͈"WdžQvЮ+O;R{= oG?F<5)/s鋧n!݇:'=^}..FR>|;||f~6` '&BD%liGs\;b{~*h/s?!˼p"7~"E1\ƗѽM`g6+ NھrUW^()|hVP֝2FYʼ m/Sp"ˠף 1ʧKBB/I ƀ^0/C.o5 . ZQ2A.M>}4!˽dtO:-Ey4rĔaPyo./~؂zDβZg }ή#tHL²wDNonL{[UPg;˵Z.=0r[^yʀ&[a>,Fʧa.0 hDL>f1kkCZ2<λ]ʃ=wM?aeD2ۏ8`kEItp:]1? P"~8+hِO&_IR6ܖv&@(,[֟ivV-S~6_+4]آ:}r vE#֐<%i,^&xW&cy!>'q4۟GXf0ͬ]Ed#̾?qWoK]4.FBDPWu1_݉u#$a61z{|nYԩ^B dtPf?uluʣpo1TM&alwŎxH]qtÓ^S;/J{SD^S),T4|2#lɼ5rUB2 >ص'=7bx)؊c9<3tEzf8:>'/aHcM<#Bs?&(~˝b+m!q~UNܥoLiaҘ:&պKؠCor, F}G7hX߆y&2f0>pKKeqGĀmx>dly+@ɑj,]W [c2 22q14Βp;vj ~S?12¿"gP2_DVV6,7sރ@qfmT)MX\燬cVnMwF:)ޓgnEHi ?\ /o8_E|%dksxX}$V^򶰚/OJ.ݴkvG^a`O[åѐ$'y6k34-F{rVF4O +ki~h$$;vT`(e#uphg3&d2Ʒ"Y6@60 KYȣQ3-ZL(FQÑ-p }g(nхŝj$G粌~u,4bxwO$hTCgA~^җ% nTt9LvӔn&j"pv]&>rGnc;V&#"I#6ez ˀpRs4ɑQLeGIfW nXcn,߼bܵgF-_i=ޖlI!m* ͻfNs_7j#~&3Úl{rOa>UMB: F-Df GiM&/_  N_]OŃlkFľR[6WNbAY;BD~ I! ݘGla\2}bokǵsκYיԹI,/O\MYtdsǥpGzĥt69~jup=}rΑU-z3M5M" /آwO~33iU@wP$m%Ad!8Tsi9 Ώ(DơbRGf/@nJDNw׳ 輼x2Iwk.OMV+ `BM&'rH8<IR =P/u}1qp1l ìa1se!`oDuѣ\6""VT4JNGswgt=cPs2z#qOS6w:/yk"i{y+`mvk|2, /"x}\ˤgWݲMy1ʼnU=iS|wk#ѢRϋ]\ ^ŦU3c?X%=Gw ۿ_?.O~ue#RUR'ԿѶkj,ᬆ}&Jk++)\_n; 3<C?,"eI ^4&T$PG}(Ú?~9x};U*iY/oYϱ4`a_0;Veݣ&Riq8揣}meKOw<Du҉ߤkM:ej0QȢ1)=׷?&߬S}W'4*|t[FvͧLG'%N0<@_%&Q.e-JಭJ7aAwH?ۤ7`LhF{`lIbd8mΰ%b@ח YG͍T9qEFzX7؏}"ʕʭ?@4rb8::`R8%TXT=K<~q8`|K(zgtYW%ݹÉˡ^jvV7=]23f"{[e,4XN`.cL;),HP i:Z~uSIu@A(T8YsZ,0>UzDZx9e<}0_-VfdmCtq[r?e\hރiZmz:F #x|O?Ixre(\Zt&OGH:ŅD.ϵ=ma$_ٌj]t=gb篎WNޤnSUN$>suٖm\͠uAÆ}zj(Vط1ԼVE/&_:PĔ9l,ai'+)Py8ٴ  C,oܝP9 r?ZP9Ab>|ڄ(E|,ifVE,^,adRŭhGGV0XV]7SEh,U6i9ߔ16Bp}hL.j.%HLզH!Huz|Lg&#dH;7ŕa7yÃ*(=0L f[?T nQn b1LbKIшY;<ZuIŁCB =VӨ=H2i@[$Y]w, Ome̊HgnWø^8E8o<~ ,PrNrPk= +"cvfSCw$t՚ܠG 'x3ҡK轰զjc kDgCFT'vZC1ʢd=~5> stream xڍT6,!  ]C48t#C ݍtwwIHHHw{s9Yxhյ8,y8̅(Q @^N Ab[ɠ A8C0 .2Ys;8 jp p  P_p@ j P(agL'jm_G3-,, A@0 !#C!.YQݝ~p4!0@3NL /<`f A@5G/c p{q60O(`9]<\0߆s7sŃ4 F@]9)rPe9 sq}?Y(~('_a^+(7 KWG.A5x'l;#䏒#`@0>7xYa1_.MW %m['- xq8xnna @a]#U7}9"`Vp_/n+ Y3F@~ \w]?js*UVXB]W r1X)ÈspqCKu AW+rCau3avC Ky``#枘@/5xo' x#0UXe[p~߇pB.<._@ σ?𿨃]τ>_+x@ `@ۚ*)Jwq>쁓3 9r-72bקy祺>}` d;B]c+oޓ7ʮ<ߕ:; xa$MCg3,NǛ bM6L {XɄxۥ+f>u;HQo_,#AR(wvw^$P20lȑf~sl<%֤ũgٺIٽ/IhĮT(c, p(2Qk |drhOմK1;(CPMz8%]7EVX[mDY_-s-ڒy&#g/& L \N35^;)k%>vl8pblĐD1\)-(((nRSV)dvk|g_mxLU\0RÕ$bˋc!77c&.NJ^״a|o6{l﹔gU3,q.t{xtp?WeJ: )7d8i_v?5!i60ӨtBXBQ:;k]j&BpVx̞KQeY/S'[tAc~M/gZxg'ҹ}29+sj]Q䢁EܳdWvU #"K*#ecn&*$#aV6?U.R|i=jH1g >CG''ŝq4O?AEM]M@3"Mƣ/%a~rK]_dGP|C٤#*[yV_Udh*wKgeO[.\+Oh|[ {!oV7s *Ц)x:({_5]'XXOqDO2Ee;*vտ| ESgy~.Ut0 tJ}9hJlj:qazsV E7ub?NE ]8U^ܖ\ 1:[|a@B#J15"Q' /C{98M/ID^IaA>'QWDߛX\.j<S3ω{LzJuյ "hV^"ty: 6~^oO?UH!e:c7!#e.K|u u8MW&fli{Dyƾ{s>7}&Fi[C<՞thYmSl2wj7/%V's'A$sBh8~"v},G-ͽڿbEl⭢Y$kZQRY4LɳLS4|СL+z@C5~42ń9]Sށo(i&8sVY2@*he{@21 UAM:^S%|$3.'4 \{DFڿʏt%BQ8l(#K\-wX_&s8K.S^a|/NbdY +IIe;tgu7:sV:a W^r#</C{dlb&>T ^ \jlfkIDg'sLL RKOF'{^0:QR!f%H:[ *&wىuǬiJE6~aة*ݫS26h,(bT? zcaDOMeb/D&\RRwyԾ%ޜXҾ+08KEj Z+$B&p 4S@XljqgLH4[T6_28pęJfܸZs@u7ih !{?)ñ? qU#-Kyt(kXsZⲕ C7GBϗr_uJm{J_j%_sSvF>Vm)dBxVqfLXG6P vX%f3xԳ{LZnψQ-<1=qB״BfFXn{X's|VQnjђgcvOCFȸ׹pu@3u||ۦ||xPP !$ڿ(41-YDu9v:ܫZYnm)}~t쓕)g\I͑:`d۬Dd UG#Et_>ds4xZN?G1zY^Hi.OK;%V#bq5QSlے\i%R9b)45@U:fϕ5vE=9i'* ʜc5'߯LifԭeT+C}oN5JK )!e~Tg?z&>gEgFqYV!_<\#ֿ 9 W />zOufXM=d=XZ`+#<=wVR7xِHX>F]V9c4V7HsȱM]"PZX1s2L9V9%;Be?Fmo*:Ikͣ >ل ]AeV2٘1K?.iv2`}.Ut܄1fc,vo"u6I·`ĝ8 ]*WQnKj{q 5 !E_-vc?Pu )mпת; 8#,չ4ѺȣgRWBwL~5cODы]aba_1vYF2g xQP0vAmv(e,Fqn.)O oU*w(9Mk/QLiu_a~+mo+x 6(?dN75>kl߬G0On.+PL#):8w΄{#vҲԬŒp0Zku=×޴t}Yj=F[КM{v5.+g;7J]5$-K-_8O5DUE%eOAG\Xi-kpϴ)n׫S>5Ot;W S"<|iⴂH;Nd =/5W&)ڠi n0s;`iM[Bz$_MF3'E[[;4*F(ǡ^,<. :? 48(f]oz2m;p )&k0?P<;ϑ_ʽ9dpeq5k|W>`*K`gKt㔓MǷfZZ,2_`CTTmG*SCipkʉOSS涶e{;:xp[JkH4V.kDXdգb _aHQW>̶d"v/ F ?+PGr0kV<A5FmDIJLmD yO,d7{2TkʐEĮlg`#/zSs ~l|NnjLSp. ?k<#3gj/S{5E7wA=࿦z:*])Fwڊ(\r䨑-:G+DNRk)OjH)Vi# [5硰{Hw @ ?S` ?c"~-i!K 5zGEu?;HLWʳэeox0c~+'נ3hb8\K1ة8PJЦwrKm yGT.l]qbP i$nHgM9z .;aN|[0z4M?өz]sO9 >[=SX\`= nQaKB.bl>+%ĹS)p紳m[a$ WL+{N2Vӡ ǎk4NnPٽqk:DV7{~T<˙ޥjcϖY،t(樽+!-IBP{E.ջܣW˒mtZ'skiUd\ 0> yZ~ FuMY^]ɬfq5|&I@,i^3X +w$ql+p*R|kTuCnP)JqTd6/=JR⯚]8[@n4#VM/_F " ui q"M׏ҟ؛-9=NnQAfmwS3/hh]bڀզ/KS̪? o*1xı<|z52͋=2 Z‰ɓ!r#Պ J:kҗF!@J!I-aNn"BhoTSeXE-kz뺅v%nT8a kDsfċ;KO1LZ5Z8vbyT63K ؛;DƎsb.30~QʳK'T%~dVf}+*)x5.4*,!X0Ę x2frId~]h{6w+. 8cAlOP`9Fy&[<%wLJ|U[{@?#1⦵A\>bdNDlS kJO_jh'BXj,F3AO 5NOFw,_u˘P}woq2m=†f]곚=u8R#QM rl[ǙCf , )/kA|ޡGEӃy[h؞,+XNi-b%3@mnQ΀ڷI!_͌*AW,3ӎÿV;0"*"u*-nbFWsWҚ/}1iw֣3׊ 2Lē8I 5ZuAʧI[CxJ$I&-*|xXk +͸74<9^Q=͐UU߈]R~Nr{„uoFMGwb_MQCvhY!.Oz&aKd͇եq;jrB}g^ E -OǷ$SZf ]xm9{xG3\Zdx_k>rhqkRXE6m)wֺ2&oMg=6|'IGBފ~jrѮ}{OgqmJVnG=Abs~by+򉶟4np ` l}+#u)7m_Zt$F>S~Bq0xG V,qU\>t'ST駩&oXuߝ endstream endobj 55 0 obj << /Length1 2718 /Length2 12536 /Length3 0 /Length 14061 /Filter /FlateDecode >> stream xڍT6LHn6-%!Ԧ%[RQ$۞s{<Ϝk\"SRe6$ NL,Qy55n ;3 *JrpClyPu9A91#'< l `ereaG 3r2[#*(lnu&tV7ۀ&Fy#' ԣ5@b9 Z~ '';^ ՕƑ`.@p;YT@ )w#ߙ1R,3'W#JXM@ζ 9@UZh[YoF?2kӿ m:ldb3uۚ ##zlmd U+r#2?98ֿS6(d;>1Zvwߝzf0uۂAb@)'daafg 7 ojvihޞv;4 7 h898=7BeeM s-u( 2Cv@ge vR@qwҢ gLDd0898\<<6oI/VOh,Om 3?Y3, =(@ > . ' uo[ $lm/GldvG:NХ@WU5A/<lRi'#rۚ[[F dv2k\uk-H }XYXG6+mm_"tۣ ֱqrQY d)m!N#hv3rq¿(O{B<a%+(@'J?!?''ԟ⿈O A)?!?'8@'] AcxBX44'E_4C5lW 6;8˳q#p[9~!;Z='POOzi?h=L@ 3?h迷_V aҘ<4 dM!OysFKII*44 +hng}؞4mZxY^'94?: Uxrdlc4#y= 5a}m]qvhq>rŁ!O2@~#g_7ѿ9~'Sx!+:vjްB'#l+4cV'лg'C H? Թ5VmSPK #!K]2AZV^W rea9 ;G'tV9c  Yc+|lg_J şmE035vQΙmK!9QJ$KF]I~2#$}ftp$nnvt6ᴶr*ɩviJS7)8{ak)~İ=O)Hp 0IE.5ЏqH)YPͺfl+9XoVDbXjn8zRAS0[qU؆l݇Ę-ls tOf /I <XJ0aSG9q/m-oݸoZ[!mTrLRͫSex!Ipk_>JG("jqvWX[^',@:sbgGJ*Gd+!fK`] b|%F}a O֨sDJ^w5h ^b'Jil?% ˤ&&- &Mo7(x_"x,Ƕ^%K$vҧ"hk{po:loc~U=gd*Bh\XP^3W3T^~xP7nDdHh^pMRԽPgDԅ7 ޷N56wsu\ߞ|C@7"S`!^MjbF'wk-QTFEg-4hRx |nE״(lfƖ uba|$ttZ4J_D$ ;P<\9yAj7R0~(HP3w~kc+v]5>-6v#mu4@:wDnfʻjMflT<@!xXZ;Ad'Gn|_Uot/t'< ?ł%6ÊMFtd /EqT 2ՠ{>w·J[?g_c1Q6ҿ$_6I[F:2Xش 6^I}eu!YO.^`ҡяTij:.c UV!nO/Zf]ci?Dz #I76Ze TK&nീ*]#HG[*?=PZgJ Xˑ3J`}CIm|C(K,Ғ -Z>m?cPNsH+o+S;2.-+Y(z%H>}auRO>_~BJAs畎5秜 ]u?[ݑI&Fh_і C B:Jz~m @(Ȃ$Li]\ Ǘ pc dt)L]2m ۭh*W:]겡0"2X~L4AC32Z{G-jM,@RUi@m}BQ#"I9gγyZ5F}.mD=qGژlVg*=o"I#KToG]5W&Dy4)qAD Q+LAֆC7VԢ e'&6 d*g7\!TDZ/d|yك{ӿe#n2?\Lwu'q=Dy^H jP%0 \%dw[WX95esA]!יBqr]knM氵ҠINm"˹o{h;19KD#X[喥SS2bO qFW$Xrb6M;4b)bl?,QJ+aa,Iˋ`;6?IK&;kz҇%1(͆SIyTagFZrJqReF=hJ{@I[D8]5ɲ :KKl9 bnĭGW^qLP>BbyVCkBArhB}%Fdt3EޔU$WkK lS*CCH'_Mc-ÿ1[# N9 X68p0UuPj4Yߛɧ`tyY}O.r g'χ'ȉZڀiANJ(]{9T%̷!!OGn$?D@Wf=|dIoZZ ,Lm7mz'F-\ׯ,,b|آpи ~< 64Q4ZUOM4q,naSsYRAUe^wsg&g>5<_7;E:{RF89(,/5iP%4l|UwInl.Cbh}Tς~vOO"YT;i/ ճw|56Vs*V~U"2j|ے`l^~9 ݬ%*Рy@rKv_;-Ѿnv(w:pj)AU(97|9~( {"Átɻ>jfbߌv &Y[gl"!EP^MGHD9lfN*G,cC(.ncjM >;Aކ* ͮZT;{>VS#×~X|p/gmmg7LI#0Jco]LMzb/Z8H^AABΉT_9pňpO R3mMjhA"?"`4?sH?(1]Rzes`/Tٷ|q}XQK*ƟLvJ}4YYp\>>j2~7QyH)ET[Mr"{{ 1Y,a+\-QdvyDM~h+\_| D$jMirqsOṀ*${5uvXW?# Zҡf*ѯ+p쑽3o3W 5QF#F&f?AG1Ah(WF 0i9-Zk{ф垫E0Kϳ0,;FRwU)\swr7/@<ŀVQ9t!`  WO">2L0((NpgN~?bDεf"J6;/ fX9O~1HlC^ke0"jSK+1+QYX`D(eo omnI!Ŵ J1h/_ܑrŒ_72EuOk@7_pyEk6Q}T^nXu/+`ɋübJ'wQݠ2} 7N~HB3N{Ly AC\A7cq7AVN"D/CMEqsoH=kg蹇jՄ> Wt`^ dSlZFy>#H\wz|s~yKo0.v[|1oRsZUse2v{dԊOe vbt8p01I(;Y^W2r}Hs:tBAosCNPF;,c"Kc ?$uM(&997#~Y{1k{=w*xW%$,|8NAR|F$9Ё\N=)-y7 D[ /0|׶qdJ%OOvAK/oiLuD#N~v'H-]l&ܛpPpBx1_zyBL.9ˍT睏QSp7}n_9&lNJ(NΈ(L@ "ٻӓjϞpǿxW}?X闖VM^vL~7Uho*O{Q*7H>k EDe2[\?V2[`k`%]/M y4<2[|L"g]sIhzY!ngl2*7a%WMyz{eY1N6xϐ:\5# U'P? QR|XYU{LLҐw:фi?$i&I(" 2"(PKb$ F0qѢ^B9ndG7h?ضƆ80.3%/\DsKd[-uEm[\" Ť$RExjP嶄Rz},7أsm`K~=A# lRTSG.8y~?7 .{ݸv޵Z;>J*b{.JUMlBl[ԁ ':*ѻ†tȮ/Wء6xVp#'L:$ƭKn4ڗ}NoGlߟ~sQs|!ͦZ/BF2?ܬ]ݴYB}T9D(3JL6!東 p4#P'Y(s\G(k] bYucCOV-zݹ‰闇qAA8=ӻMx}qM!&rº6SwJzb \PQRO ;FnR8q~G5&g ס& ܢjk IWK?2D˨B ^x4cU(~[y`z8.X:Cms {S,8uslcWrϴ>a鏤 ϻX䈃E&_j|'M;됵.fe[|B? {/nr+Bt A}L^r҃~V#27[/zf*QC3? d>e #ݷ~x W겦XkSꘀo)޵͐6{B˗G4z4q~8f`pG}{N \bNwLv W^Z+5 s8Dm&Me ʖlpr9&e~pnZ"י3\WAu}60%4 ǚhaNAxAZʛƥm^!,ٖ8iRY[eESJc|"[1&^Lಽ-^%cMXҘo>Ҷvl 0=MTܭ'Hopd#棱BK IWW_ zp8ճ4Dz*;]QMVQ<{Oʭ9,R>_i-W74?y[53q`1Twʙas+3 x1 ׎1iQ.Dkmj'^W]U[3V`f]Y&Ebr]2'gw1G2~t ;8=B7t'!wD }v4lx4+0Ghwm8a5f$Q#0ֳv.tt6k1>N{TgœRC#YcG=ir~4a%[5uKZn->o)$ŁٓON[ef8yKہԷ}~Z==4Q5Z?'ā xZQGщjȠY-/To /la}݈-IjmECvdF3HH!=i(sC?M:7X"K_2s`6X+;x#/8 (|[96|c2 4vTsoZ?RS-ߨV-섎-1&I#4LѪU%X7=x?**]Cxxb|̼"1Փ4]_ci|$uڽ8tʸWM#N΍+6 }oнVbΨPb) U3{M}n,9~څ*&"0E?;+hR;U*ƍx-a(YEMj3O{I3U.` KKpFگА=Rj3Ū j9O}~8nů^QeEMa<0m\Ca$]4 GQ;߳OlhhM7+F0$QqJ99>ป񐒩h{qclE T7Hzˆ$Nݶbpr D/a$uo4tAD@VٚcWIY~Zbyi!W߶cD_#jg1* _!67w۳fG,d7|j'ʹJ<{0]`5SPpa3Omn8$/]5 s3)CJFnG L-ŗ^& ,E{0 r.:Ty4:!sML#{F,sL26/Y,˚Ĉ xO6ߗ?&JцEsw9 ++X6RM>ŠH0=NȻ Ͷ& pյ ) C"7œaj׌-˜i$Ӫouo?jDuOmd;1hCW0k1DAuz1c@8<9&Y62Dm6iyڃR'"B==MjH3G,7͐zc5BRU ;X^Dwr5j c0969J#Yo+h{qlx\zUH8V6_'iZhiHnTtr%* 89LrZ7' .?ҫ.*EBM;ZN(2MB{w;nx 滰ex^,V=$ؒNׄ;{A,zs=ŋ$ʐQSL*l~:yc]ڋ8#{ oK yR, >IV0or8sTe#Lb'kԽ៿dUe,AqL,0mYR}W{q nkK}|i6OW^N7ϵ7:k)/$)ߗ427Ґ|9YCPS5ɅS݊9ޠ۴BwYFFrKpP|y=Cz|+٣+Q~??j"#_}]Y.Sju*JߵR/@ȺȨVm4%jcZu6L,܊~)H΅(u-{8<%>i9ײַItHw.ұlWyDG&`n~îX'kفIU*yG嗈ۿy)z6#[cX~mz\l:qAVb}^0->Ex^&CUmv_<ÅRJ/1tQ^Z~=3}6uNC5e5p~ WqܟS&Bv;ԏ\L[^ZXAI*AmԒh:NVioѺPK%gm|QΧOq1Q佯Ө,)rHP>Px|zƊ HNv95& 79X9G+eOOzOuFs*lcyp{ '[2(CzxݷJ#1_bd ~5 gp;=XpD/ip=.L":[-q[_vTL-'~R =Z'|PnӨmL&[M[e#ۣgQ`3$ǎ I0_ƹL ¹;/Ah{ xHc@ÀAǏ_[`Jf w2@*pC|i&tsv)1O *is]'Ο6Jw+u$rcl{8Q8!rIy߫T$z38zȨ΂Vi$0 bSCI A^9g?t>e )ij!X{គTPbb7tGp6~s5!1~ Rz:LdHl /spcOJ>XX<>! eo_oLFE- JFf^lg!%;O/\J7eJYz;+ns$TZF7( endstream endobj 58 0 obj << /Producer (pdfTeX-1.40.13) /Creator (TeX) /CreationDate (D:20121130203513+01'00') /ModDate (D:20121130203513+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) kpathsea version 6.1.0) >> endobj 15 0 obj << /Type /ObjStm /N 42 /First 322 /Length 3094 /Filter /FlateDecode >> stream xR9u*htR[aCHB6`N|[ٞ1YUH[FB(D*cJX+hor@(0iX`0@L Sj0ZXg< & gLy.kPzᭇ(BQ 4h8+B]QVPEF`FY0*-Y]dpH)xt`2"D!P (|S(@U{OɋI%iySɃhVf0ڳ=yV5W5gxUX(.ҟ` d?DxT#!@ g2 q W %y8<{L|+ħ҆;eum,Fz'>:ݧޤ}21Q}H'aMw&V@;.}ȏh6LB1P#)ך8{ő㾢kvv3(ց:x巽6,90g 2&t4 ʂQ54ր!(< >}6gb#)@ |&!\pD y#RgE=^%^8롖DУ W^c1EabQ@SO"JpYQU6-ͥܓbơ@ap CJ?70[.J&.ɫ{uӂ272F,]۲x$H*&IU=Wަl!+Jw8֭s)̮dGC V 4(Q:;谀6r /-:ss X.A87ƶ36ͱ31[y\b1LTŷW,.H[Gqr gl^CQkAe!ukEe-reHYxv~Y[2o)jadp>4e !'/ 0)(: x09>"]YRtKZ /ܷu[DcqV4ycOGUIK+LanAM{}8CS9޴S~z~ 7L =q^<7H*O{Y7DpߓEUc{dzrPnje^d--_\b+9?Vxb{bKhv N^??F>le45WFn{Tn5j>#ma( "bBVb5io#m9_G1 bD^kH!#dvT|gh]ŽV%l9<ԣzTjدix~0{x x0';9*AQe,7'd@a_8FCP_cv;gg// b Q' μmfݺvjG? Vw>=R+1i <94E92B124E8CCBEDA30E144C4FE908B7>] /Length 171 /Filter /FlateDecode >> stream x9Aqs=*,AT(tP@Amrs(Tm11C1}2f۩G1 )9"ܬ|ⰳ*UxŭdٳU so that we can explain things better in future. Windows is a problematic platform for installation scripts. The main problem is that the installation procedure requires consistent file names in order to find its way in the directory hierarchy, and Windows path names are a mess. The installation procedure tries finding stuff in system search paths and in Emacs paths. For that to succeed, you have to use the same syntax and spelling and case of paths everywhere: in your system search paths, in Emacs' `load-path' variable, as argument to the scripts. If your path names contain spaces or other `shell-unfriendly' characters, most notably backslashes for directory separators, place the whole path in `"double quote marks"' whenever you specify it on a command line. Avoid `helpful' magic file names like `/cygdrive/c' and `C:\PROGRA~1\' like the plague. It is quite unlikely that the scripts will be able to identify the actual file names involved. Use the full paths, making use of normal Windows drive letters like ` 'C:/Program Files/Emacs' ' where required, and using the same combination of upper- and lowercase letters as in the actual files. File names containing shell-special characters like spaces or backslashes (if you prefer that syntax) need to get properly quoted to the shell: the above example used single quotes for that. Ok, now here are the steps to perform: 1. You need to unpack the AUCTeX distribution (which you seemingly have done since you are reading this). It must be unpacked in a separate installation directory outside of your Emacs file hierarchy: the installation will later copy all necessary files to their final destination, and you can ultimately remove the directory where you unpacked the files. Line endings are a problem under Windows. The distribution contains only text files, and theoretically most of the involved tools should get along with that. However, the files are processed by various utilities, and it is conceivable that not all of them will use the same line ending conventions. If you encounter problems, it might help if you try unpacking (or checking out) the files in binary mode, if your tools allow that. If you don't have a suitable unpacking tool, skip to the next step: this should provide you with a working `unzip' command. 2. The installation of AUCTeX will require the MSYS tool set from `http://www.mingw.org/' or the Cygwin tool set from `http://cygwin.com/'. The latter is slower and larger (the download size of the base system is about 15 MB) but comes with a package manager that allows for updating the tool set and installing additional packages like, for example, the spell checker aspell. If Cygwin specific paths like `/cygdrive/c' crop up in the course of the installation, using a non-Cygwin Emacs could conceivably cause trouble. Using Cygwin either for everything or nothing might save headaches, _if_ things don't work out. 3. Install a current version of XEmacs from `http://www.xemacs.org/' or Emacs from `ftp://ftp.gnu.org/gnu/emacs/windows/'. Emacs is the recommended choice because it is currently the primary platform for AUCTeX development. 4. You need a working TeX installation. One popular installation under Windows is MiKTeX (http://www.miktex.org). Another much more extensive system is TeX Live (http://www.tug.org/texlive) which is rather close to its Unix cousins. 5. A working copy of Ghostscript (http://www.cs.wisc.edu/~ghost/) is required for preview-latex operation. Examining the output from gswin32c -h on a Windows command line should tell you whether your Ghostscript supports the `png16m' device needed for PNG support. MiKTeX apparently comes with its own Ghostscript called `mgs.exe'. 6. Perl (http://www.perl.org) is needed for rebuilding the documentation if you are working with a copy from CVS or have touched documentation source files in the preview-latex part. If the line endings of the file `preview/latex/preview.dtx' don't correspond with what Perl calls `\n' when reading text files, you'll run into trouble. 7. Now the fun stuff starts. If you have not yet done so, unpack the AUCTeX distribution into a separate directory after rereading the instructions for unpacking above. 8. Ready for takeoff. Start some shell (typically `bash') capable of running `configure', change into the installation directory and call `./configure' with appropriate options. Typical options you'll want to specify will be `--prefix=DRIVE:/PATH/TO/EMACS-HIERARCHY' which tells `configure' where to perform the installation. It may also make `configure' find Emacs or XEmacs automatically; if this doesn't happen, try one of `--with-emacs' or `--with-xemacs' as described below. All automatic detection of files and directories restricts itself to directories below the PREFIX or in the same hierarchy as the program accessing the files. Usually, directories like `man', `share' and `bin' will be situated right under PREFIX. This option also affects the defaults for placing the Texinfo documentation files (see also `--infodir' below) and automatically generated style hooks. If you have a central directory hierarchy (not untypical with Cygwin) for such stuff, you might want to specify its root here. You stand a good chance that this will be the only option you need to supply, as long as your TeX-related executables are in your system path, which they better be for AUCTeX's operation, anyway. `--with-emacs' if you are installing for a version of Emacs. You can use `--with-emacs=DRIVE:/PATH/TO/EMACS' to specify the name of the installed Emacs executable, complete with its path if necessary (if Emacs is not within a directory specified in your `PATH' environment setting). `--with-xemacs' if you are installing for a version of XEmacs. Again, you can use `--with-xemacs=DRIVE:/PATH/TO/XEMACS' to specify the name of the installed XEmacs executable complete with its path if necessary. It may also be necessary to specify this option if a copy of Emacs is found in your `PATH' environment setting, but you still would like to install a copy of AUCTeX for XEmacs. `--with-packagedir=DRIVE:/DIR' is an XEmacs-only option giving the location of the package directory. This will install and activate the package. Emacs uses a different installation scheme: `--with-lispdir=DRIVE:/PATH/TO/SITE-LISP' This Emacs-only option tells a place in `load-path' below which the files are situated. The startup files `auctex.el' and `preview-latex.el' will get installed here unless a subdirectory `site-start.d' exists which will then be used instead. The other files from AUCTeX will be installed in a subdirectory called `auctex'. If you think that you need a different setup, please refer to the full installation instructions in the `INSTALL' file. `--infodir=DRIVE:/PATH/TO/INFO/DIRECTORY' If you are installing into an Emacs directory, info files have to be put into the `info' folder below that directory. The configuration script will usually try to install into the folder `share/info', so you have to override this by specifying something like `--infodir='C:/Program Files/info'' for the configure call. `--with-auto-dir=DRIVE:/DIR' Directory containing automatically generated information. You should not normally need to set this, as `--prefix' should take care of this. `--disable-preview' Use this option if your Emacs version is unable to support image display. This will be the case if you are using a native variant of Emacs 21. `--with-texmf-dir=DRIVE:/DIR' This will specify the directory where your TeX installation sits. If your TeX installation does not conform to the TDS (TeX directory standard), you may need to specify more options to get everything in place. For more information about any of the above and additional options, see the `Configure' section in the `INSTALL' file. Calling `./configure --help=recursive' will tell about other options, but those are almost never required. Some executables might not be found in your path. That is not a good idea, but you can get around by specifying environment variables to `configure': GS="DRIVE:/PATH/TO/GSWIN32C.EXE" ./configure ... should work for this purpose. `gswin32c.exe' is the usual name for the required _command line_ executable under Windows; in contrast, `gswin32.exe' is likely to fail. As an alternative to specifying variables for the `configure' call you can add directories containing the required executables to the `PATH' variable of your Windows system. This is especially a good idea if Emacs has trouble finding the respective programs later during normal operation. 9. Run `make' in the installation directory. 10. Run `make install' in the installation directory. 11. With XEmacs, AUCTeX and preview-latex should now be active by default. With Emacs, activation depends on a working `site-start.d' directory or similar setup, since then the startup files `auctex.el' and `preview-latex.el' will have been placed there. If this has not been done, you should be able to load the startup files manually with (load "auctex.el" nil t t) (load "preview-latex.el" nil t t) in either a site-wide `site-start.el' or your personal startup file (usually accessible as `~/.emacs' from within Emacs and `~/.xemacs/init.el' from within XEmacs). The default configuration of AUCTeX is probably not the best fit for Windows systems with MiKTeX. You might want to add (require 'tex-mik) after loading `auctex.el' and `preview-latex.el' in order to get more appropriate values for some customization options. You can always use M-x customize-group RET AUCTeX RET in order to customize more stuff, or use the `Customize' menu. 12. Load `preview/circ.tex' into Emacs or XEmacs and see if you get the `Command' menu. Try using it to LaTeX the file. 13. Check whether the `Preview' menu is available in this file. Use it to generate previews for the document. If this barfs and tells you that image type `png' is not supported, you can either add PNG support to your Emacs installation or choose another image format to be used by preview-latex. Adding support for an image format usually involves the installation of a library, e.g. from `http://gnuwin32.sf.net/'. If you got your Emacs from `gnu.org' you might want to check its README file (ftp://ftp.gnu.org/gnu/emacs/windows/README) for details. A different image format can be chosen by setting the variable `preview-image-type'. While it is recommended to keep the `dvipng' or `png' setting, you can temporarily select a different format like `pnm' to check if the lack of PNG support is the only problem with your Emacs installation. Try adding the line (setq preview-image-type 'pnm) to your init file for a quick test. You should remove the line after the test again, because PNM files take away *vast* amounts of disk space, and thus also of load/save time. Well, that about is all. Have fun! auctex-11.87/tex-style.el0000644000000000000000000002654212050755571014021 0ustar rootroot;;; tex-style.el --- Customizable variables for AUCTeX style files ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Keywords: tex, wp, convenience ;; 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 file provides customizable variables for AUCTeX style files. ;;; Code: (defgroup LaTeX-style nil "Support for special LaTeX style files in AUCTeX." :group 'LaTeX-macro) ;; Note: We don't have any defcustom in plain TeX style files yet. Else we ;; should also create a TeX-style group. ;; style/amsmath.el (defcustom LaTeX-amsmath-label nil "Default prefix to amsmath equation labels. Amsmath equations include \"align\", \"alignat\", \"xalignat\", \"multline\", \"flalign\" and \"gather\". If it is nil, `LaTeX-equation-label' is used." :group 'LaTeX-label :type '(choice (const :tag "Use `LaTeX-equation-label'" nil) (string))) ;; style/beamer.el (defcustom LaTeX-beamer-section-labels-flag nil "If non-nil section labels are added" :type 'boolean :group 'LaTeX-style) (defcustom LaTeX-beamer-item-overlay-flag t "If non-nil do prompt for an overlay in itemize-like environments." :type 'boolean :group 'LaTeX-style) (defcustom LaTeX-beamer-themes 'local "Presentation themes for the LaTeX beamer package. It can be a list of themes or a function. If it is the symbol `local', search only once per buffer." :group 'LaTeX-style :type '(choice (const :tag "TeX search" LaTeX-beamer-search-themes) (const :tag "Search once per buffer" local) (function :tag "Other function") (list :value ;; Work around (bug in customize?), see ;; ("Antibes" "Bergen" "Berkeley" "Berlin" "Boadilla" "Copenhagen" "Darmstadt" "Dresden" "Frankfurt" "Goettingen" "Hannover" "Ilmenau" "JuanLesPins" "Luebeck" "Madrid" "Malmoe" "Marburg" "Montpellier" "PaloAlto" "Pittsburgh" "Rochester" "Singapore" "Szeged" "Warsaw") (set :inline t (const "Antibes") (const "Bergen") (const "Berkeley") (const "Berlin") (const "Boadilla") (const "Copenhagen") (const "Darmstadt") (const "Dresden") (const "Frankfurt") (const "Goettingen") (const "Hannover") (const "Ilmenau") (const "JuanLesPins") (const "Luebeck") (const "Madrid") (const "Malmoe") (const "Marburg") (const "Montpellier") (const "PaloAlto") (const "Pittsburgh") (const "Rochester") (const "Singapore") (const "Szeged") (const "Warsaw")) (repeat :inline t :tag "Other" (string))))) (defcustom LaTeX-beamer-inner-themes 'local "Presentation inner themes for the LaTeX beamer package. It can be a list of themes or a function. If it is the symbol `local', search only once per buffer." :group 'LaTeX-style :type '(choice (const :tag "TeX search" LaTeX-beamer-search-inner-themes) (const :tag "Search once per buffer" local) (function :tag "Other function") (list :value ("circles" "default" "inmargin" "rectangles" "rounded") (set :inline t (const "circles") (const "default") (const "inmargin") (const "rectangles") (const "rounded")) (repeat :inline t :tag "Other" (string))))) (defcustom LaTeX-beamer-outer-themes 'local "Presentation outer themes for the LaTeX beamer package. It can be a list of themes or a function. If it is the symbol `local', search only once per buffer." :group 'LaTeX-style :type '(choice (const :tag "TeX search" LaTeX-beamer-search-outer-themes) (const :tag "Search once per buffer" local) (function :tag "Other function") (list :value ("default" "infolines" "miniframes" "shadow" "sidebar" "smoothbars" "smoothtree" "split" "tree") (set :inline t (const "default") (const "infolines") (const "miniframes") (const "shadow") (const "sidebar") (const "smoothbars") (const "smoothtree") (const "split") (const "tree")) (repeat :inline t :tag "Other" (string))))) (defcustom LaTeX-beamer-color-themes 'local "Presentation color themes for the LaTeX beamer package. It can be a list of themes or a function. If it is the symbol `local', search only once per buffer." :group 'LaTeX-style :type '(choice (const :tag "TeX search" LaTeX-beamer-search-color-themes) (const :tag "Search once per buffer" local) (function :tag "Other function") (list :value ("albatross" "beetle" "crane" "default" "dolphin" "dove" "fly" "lily" "orchid" "rose" "seagull" "seahorse" "sidebartab" "structure" "whale") (set :inline t (const "albatross") (const "beetle") (const "crane") (const "default") (const "dolphin") (const "dove") (const "fly") (const "lily") (const "orchid") (const "rose") (const "seagull") (const "seahorse") (const "sidebartab") (const "structure") (const "whale")) (repeat :inline t :tag "Other" (string))))) (defcustom LaTeX-beamer-font-themes 'local "Presentation font themes for the LaTeX beamer package. It can be a list of themes or a function. If it is the symbol `local', search only once per buffer." :group 'LaTeX-style :type '(choice (const :tag "TeX search" LaTeX-beamer-search-font-themes) (const :tag "Search once per buffer" local) (function :tag "Other function") (list :value ("default" "professionalfonts" "serif" "structurebold" "structureitalicserif" "structuresmallcapsserif") (set :inline t (const "default") (const "professionalfonts") (const "serif") (const "structurebold") (const "structureitalicserif") (const "structuresmallcapsserif")) (repeat :inline t :tag "Other" (string))))) ;; style/biblatex.el (defcustom LaTeX-biblatex-use-Biber t "Whether to use Biber with biblatex." :type 'boolean :group 'LaTeX-style) ;; style/comment.el (defcustom LaTeX-comment-env-list '("comment") "List of environment names defined with comment.sty. Setting this variable does not take effect unless you reinitialize affected buffers." :type '(repeat string) :group 'LaTeX-style) ;; style/csquotes.el (defcustom LaTeX-csquotes-quote-after-quote nil "Initial value of `TeX-quote-after-quote' for `csquotes.el'" :type 'boolean :group 'LaTeX-style) (defcustom LaTeX-csquotes-open-quote "" "Opening quotation mark to be used with the csquotes package. The specified string will be used for `TeX-open-quote' (and override any language-specific setting) only if both `LaTeX-csquotes-open-quote' and `LaTeX-csquotes-close-quote' are non-empty strings." :type 'string :group 'LaTeX-style) (defcustom LaTeX-csquotes-close-quote "" "Closing quotation mark to be used with the csquotes package. The specified string will be used for `TeX-close-quote' (and override any language-specific setting) only if both `LaTeX-csquotes-open-quote' and `LaTeX-csquotes-close-quote' are non-empty strings." :type 'string :group 'LaTeX-style) ;; style/emp.el (defcustom LaTeX-write18-enabled-p t "*If non-nil, insert automatically the \\write18 calling metapost. When disabled, you have to use mpost on the mp files automatically produced by emp.sty and then re-LaTeX the document." :type 'boolean :group 'LaTeX-style) ;; style/graphicx.el (defcustom LaTeX-includegraphics-extensions '("eps" "jpe?g" "pdf" "png") "Extensions for images files used by \\includegraphics." :group 'LaTeX-style :type '(list (set :inline t (const "eps") (const "jpe?g") (const "pdf") (const "png")) (repeat :inline t :tag "Other" (string)))) (defcustom LaTeX-includegraphics-options-alist '((0 width) ;; (1 width height clip) ;; (2 width height keepaspectratio clip) (4) ;; --> (4 nil) (5 trim) (16 ;; Table 1 in epslatex.ps: ``includegraphics Options'' height totalheight width scale angle origin bb ;; Table 2 in epslatex.ps: ``cropping Options'' viewport trim ;; Table 3 in epslatex.ps: ``Boolean Options'' ;; [not implemented:] noclip draft final clip keepaspectratio ;; Only for PDF: page)) "Controls for which optional arguments of \\includegraphics you get prompted. An alist, consisting of \(NUMBER . LIST\) pairs. Valid elements of LIST are `width', `height', `keepaspectratio', `clip', `angle', `totalheight', `trim' and `bb' \(Bounding Box\). The list corresponding to 0 is used if no prefix is given. Note that 4 \(one \\[universal-argument]\) and 16 \(two \\[universal-argument]'s\) are easy to type and should be used for frequently needed combinations." :group 'LaTeX-style :type '(repeat (cons (integer :tag "Argument") (list (set :inline t (const height) (const totalheight) (const width) (const scale) (const angle) (const origin) (const :tag "Bounding Box" bb) ;; (const viewport) (const trim) ;; (const clip) (const keepaspectratio)))))) (defcustom LaTeX-includegraphics-strip-extension-flag t "Non-nil means to strip known extensions from image file name." :group 'LaTeX-style :type 'boolean) (defcustom LaTeX-includegraphics-read-file 'LaTeX-includegraphics-read-file-TeX "Function for reading \\includegraphics files. `LaTeX-includegraphics-read-file-TeX' lists all graphic files found in the TeX search path. `LaTeX-includegraphics-read-file-relative' lists all graphic files in the master directory and its subdirectories and inserts the relative file name. This option does not work with Emacs 21 or XEmacs. The custom option `simple' works as `LaTeX-includegraphics-read-file-relative' but it lists all kind of files. Inserting the subdirectory in the filename (as `LaTeX-includegraphics-read-file-relative') is discouraged by `epslatex.ps'." ;; ,----[ epslatex.ps; Section 12; (page 26) ] ;; | Instead of embedding the subdirectory in the filename, there are two ;; | other options ;; | 1. The best method is to modify the TeX search path [...] ;; | 2. Another method is to specify sub/ in a \graphicspath command ;; | [...]. However this is much less efficient than modifying the ;; | TeX search path ;; `---- ;; See "Inefficiency" and "Unportability" in the same section for more ;; information. :group 'LaTeX-style :type '(choice (const :tag "TeX" LaTeX-includegraphics-read-file-TeX) (const :tag "relative" LaTeX-includegraphics-read-file-relative) (const :tag "simple" (lambda () (file-relative-name (read-file-name "Image file: ") (TeX-master-directory)))) (function :tag "other"))) ;; style/shortvrb.el (defcustom LaTeX-shortvrb-chars '(?|) "List of characters toggling verbatim mode." :group 'LaTeX-style :type '(repeat character)) (provide 'tex-style) ;;; tex-style.el ends here auctex-11.87/tex-font.el0000644000000000000000000001475110751352554013626 0ustar rootroot;;; tex-font.el --- Font-Lock support stolen from Emacs 21. ;; ;; Copyright (C) 1985, 86, 89, 92, 94, 95, 96, 97, 98, 1999 ;; Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; Keywords: tex, faces ;; This file is part of AUC TeX. ;; AUC TeX 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. ;; AUC TeX 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 AUC TeX; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Comments: ;; Please keep this file in sync with GNU Emacs 21. ;;; Code: (defconst tex-font-lock-keywords-1 (eval-when-compile (let* (;; Names of commands whose arg should be fontified as heading, etc. (headings (regexp-opt '("title" "begin" "end" "chapter" "part" "section" "subsection" "subsubsection" "paragraph" "subparagraph" "subsubparagraph" "newcommand" "renewcommand" "newenvironment" "newtheorem") t)) (variables (regexp-opt '("newcounter" "newcounter*" "setcounter" "addtocounter" "setlength" "addtolength" "settowidth") t)) (includes (regexp-opt '("input" "include" "includeonly" "bibliography" "epsfig" "psfig" "epsf" "nofiles" "usepackage" "documentstyle" "documentclass" "verbatiminput" "includegraphics" "includegraphics*") t)) ;; Miscellany. (slash "\\\\") (opt " *\\(\\[[^]]*\\] *\\)*") ;; This would allow highlighting \newcommand\CMD but requires ;; adapting subgroup numbers below. ;; (arg "\\(?:{\\(\\(?:[^{}\\]+\\|\\\\.\\|{[^}]*}\\)+\\)\\|\\\\[a-z*]+\\)")) (arg "{\\(\\(?:[^{}\\]+\\|\\\\.\\|{[^}]*}\\)+\\)")) (list ;; Heading args. (list (concat slash headings "\\*?" opt arg) ;; If ARG ends up matching too much (if the {} don't match, f.ex) ;; jit-lock will do funny things: when updating the buffer ;; the re-highlighting is only done locally so it will just ;; match the local line, but defer-contextually will ;; match more lines at a time, so ARG will end up matching ;; a lot more, which might suddenly include a comment ;; so you get things highlighted bold when you type them ;; but they get turned back to normal a little while later ;; because "there's already a face there". ;; Using `keep' works around this un-intuitive behavior as well ;; as improves the behavior in the very rare case where you do ;; have a comment in ARG. 3 'font-lock-function-name-face 'keep) (list (concat slash "\\(re\\)?newcommand\\** *\\(\\\\[A-Za-z@]+\\)") 2 'font-lock-function-name-face 'keep) ;; Variable args. (list (concat slash variables " *" arg) 2 'font-lock-variable-name-face) ;; Include args. (list (concat slash includes opt arg) 3 'font-lock-builtin-face) ;; Definitions. I think. '("^[ \t]*\\\\def *\\\\\\(\\(\\w\\|@\\)+\\)" 1 font-lock-function-name-face)))) "Subdued expressions to highlight in TeX modes.") (defconst tex-font-lock-keywords-2 (append tex-font-lock-keywords-1 (eval-when-compile (let* (;; ;; Names of commands whose arg should be fontified with fonts. (bold (regexp-opt '("textbf" "textsc" "textup" "boldsymbol" "pmb") t)) (italic (regexp-opt '("textit" "textsl" "emph") t)) (type (regexp-opt '("texttt" "textmd" "textrm" "textsf") t)) ;; ;; Names of commands whose arg should be fontified as a citation. (citations (regexp-opt '("label" "ref" "pageref" "vref" "eqref" "cite" "nocite" "index" "glossary" "bibitem" ;; These are text, rather than citations. ;; "caption" "footnote" "footnotemark" "footnotetext" ) t)) ;; ;; Names of commands that should be fontified. (specials (regexp-opt '("\\" "\\*" ;; "-" "linebreak" "nolinebreak" "pagebreak" "nopagebreak" "newline" "newpage" "clearpage" "cleardoublepage" "displaybreak" "allowdisplaybreaks" "enlargethispage") t)) (general "\\([a-zA-Z@]+\\**\\|[^ \t\n]\\)") ;; ;; Miscellany. (slash "\\\\") (opt " *\\(\\[[^]]*\\] *\\)*") (arg "{\\(\\(?:[^{}\\]+\\|\\\\.\\|{[^}]*}\\)+\\)")) (list ;; ;; Citation args. (list (concat slash citations opt arg) 3 'font-lock-constant-face) ;; ;; Text between `` quotes ''. (cons (concat (regexp-opt `("``" "\"<" "\"`" "<<" "") t) "[^'\">]+" ;a bit pessimistic (regexp-opt `("''" "\">" "\"'" ">>" "") t)) 'font-lock-string-face) ;; ;; Command names, special and general. (cons (concat slash specials) 'font-lock-warning-face) (concat slash general) ;; ;; Font environments. It seems a bit dubious to use `bold' etc. faces ;; since we might not be able to display those fonts. (list (concat slash bold " *" arg) 2 '(quote bold) 'append) (list (concat slash italic " *" arg) 2 '(quote italic) 'append) ;; (list (concat slash type arg) 2 '(quote bold-italic) 'append) ;; ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for tables. (list (concat "\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>" "\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)") 3 '(if (match-beginning 2) 'bold 'italic) 'append))))) "Gaudy expressions to highlight in TeX modes.") (defvar tex-font-lock-keywords tex-font-lock-keywords-1 "Default expressions to highlight in TeX modes.") (defface tex-math-face '((t :inherit font-lock-string-face)) "Face used to highlight TeX math expressions.") (defvar tex-math-face 'tex-math-face) ;; Use string syntax but math face for $...$. (defun tex-font-lock-syntactic-face-function (state) (if (nth 3 state) tex-math-face font-lock-comment-face)) ;;;###autoload (defun tex-font-setup () "Setup font lock support for TeX." (set (make-local-variable 'font-lock-defaults) '((tex-font-lock-keywords tex-font-lock-keywords-1 tex-font-lock-keywords-2) nil nil ((?$ . "\"")) nil ;; Who ever uses that anyway ??? (font-lock-mark-block-function . mark-paragraph) (font-lock-syntactic-face-function . tex-font-lock-syntactic-face-function))) ) (provide 'tex-font) ;;; tex-font.el ends hereauctex-11.87/tex-bar.el0000644000000000000000000004450411045140533013410 0ustar rootroot;;; tex-bar.el --- toolbar icons on AUCTeX in GNU emacs and XEmacs ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. ;; This program 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 of ;; the License, or (at your option) any later version. ;; This program 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 this program; if not, write to the Free ;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, ;; MA 02110-1301 USA ;; Author: Miguel V. S. Frasson ;; Keywords: tool-bar, tex, latex ;;; Commentary: ;; ;; This package also needs `toolbar-x.el', and `latex.el' for the ;; symbol-toolbar. ;;; Use of this preliminary version: ;; - Add `LaTeX-install-toolbar' to `LaTeX-mode-hook'. ;; Special requirements for the use of experimental symbol-toolbar: ;; - Customize `TeX-bar-LaTeX-buttons', adding the label ;; `LaTeX-symbols-experimental' at the end. ;; - You should have a folder called "symb-pics" with the pics of the ;; symbols (xpm format is a good one), and the *parent* of this ;; folder should be in `load-path'. ;; Did you read carefully this item? I will say again: the folder ;; "symb-pics" should *not* be in `load-path', but its *parent*. ;; - each image file is named after the command that it represents in ;; the following rules: the base name is the name of the command ;; without the escape character "\", like \delta -> "delta.xpm"; ;; however, since in some OS filenames are case insensitive, all ;; occurences of capital letter should be replaced by the letter ;; plus a dash: \Rightarrow -> "R-ightarrow.xpm" --- actually, for ;; the correct name, apply `TeX-bar-img-filename' to "Rightarrow" ;; (TeX-bar-img-filename "Rightarrow") ;; --> "R-ightarrow" ;; The function `TeX-bar-img-filename' also treats special commands ;; like `\{', `\|', etc. ;; You can get the symbol images on (temporary solution) ;; http://www.math.leidenuniv.nl/~frasson/symb-pics.tar.gz ;;; Code: (require 'custom) (require 'toolbar-x) ;; for error handling (require 'tex-buf) ;; For the symbol toolbar (require 'latex) ;;; Standard buttons ;; help strings (defun TeX-bar-help-from-command-list (item) "Return the help string of ITEM in `TeX-command-list'. If there is no help, the empty string is returned." (let ((help (nth 1 (memq :help (assoc item TeX-command-list))))) (if help help ""))) (defgroup TeX-tool-bar nil "Tool bar support in AUCTeX." :group 'AUCTeX) (defcustom TeX-bar-TeX-buttons '(new-file open-file dired kill-buffer save-buffer cut copy paste undo [separator nil] tex next-error view bibtex) "List of buttons available in `tex-mode'. It should be a list in the same format of the BUTTONS parameter in function `toolbarx-install-toolbar', often a symbol that labels a button or Emacs/XEmacs choice of buttons. Type `\\[TeX-bar-TeX-buttons]' for a list of available buttons. Buttons are defined in alists (labels associated to properties that define a button). For a list of variables that hold such alists, see variable `TeX-bar-TeX-all-button-alists'." :type '(list (set :inline t (const new-file) (const open-file) (const dired) (const kill-buffer) (const save-buffer) (const write-file) (const undo) (const cut) (const copy) (const paste) (const search-forward) (const print-buffer) (const [separator nil]) (const tex) (const next-error) (const view) (const file) (const bibtex) (const clean)) ;; (const latex-symbols-experimental) (repeat (choice (symbol :tag "Label") (vector :args ((symbol :tag "Label in Emacs ") (symbol :tag "Label in XEmacs")) :tag "Emacs/XEmacs choice") (sexp :tag "General element")))) :group 'TeX-tool-bar) (defun TeX-bar-TeX-buttons () "Display in a buffer a list of buttons for `tex-bar.el'." (interactive) (let ((assqs-button-alists) (labels)) (dolist (m-alist TeX-bar-TeX-all-button-alists) (setq labels nil) (dolist (as (eval m-alist)) (setq labels (cons (car as) labels))) (setq assqs-button-alists (cons (cons m-alist (nreverse labels)) assqs-button-alists))) (setq assqs-button-alists (nreverse assqs-button-alists)) ;; displaying results (save-excursion (set-buffer (get-buffer-create "*TeX tool bar buttons*")) (erase-buffer) (insert "Available buttons for TeX mode ================================") (dolist (i assqs-button-alists) (insert (format "\n\n`%s' provides the following buttons:\n " (car i))) (dolist (j (cdr i)) (insert (format " %s" j))) (fill-region (point-at-bol) (point-at-eol)))) (display-buffer "*TeX tool bar buttons*" t))) (defgroup TeX-tool-bar-button-definitions nil "Collections of button definitions." :group 'TeX-tool-bar) (defcustom TeX-bar-TeX-all-button-alists '(TeX-bar-TeX-button-alist toolbarx-default-toolbar-meaning-alist) "List of variables that hold buttons properties. Each element should be a symbol bound to list in the format of the argument BUTTON-ALIST in function `toolbarx-install-toolbar'." :type '(repeat variable) :group 'TeX-tool-bar-button-definitions) (defcustom TeX-bar-TeX-button-alist '((tex :image (lambda nil (if TeX-PDF-mode "pdftex" "tex")) :command (progn (TeX-save-document (TeX-master-file)) (TeX-command "TeX" 'TeX-master-file -1)) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "TeX"))) (pdftex :image "pdftex" :command (progn (TeX-save-document (TeX-master-file)) (TeX-command "PDFTeX" 'TeX-master-file -1)) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "PDFTeX"))) (next-error :image "error" :command TeX-next-error :enable (plist-get TeX-error-report-switches (intern (TeX-master-file))) :visible (plist-get TeX-error-report-switches (intern (TeX-master-file)))) (view :image (lambda nil (if TeX-PDF-mode "viewpdf" "viewdvi")) :command (TeX-command "View" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "View"))) (file :image "dvips" :command (TeX-command "File" 'TeX-master-file -1) :visible (not TeX-PDF-mode) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "File"))) (bibtex :image "bibtex" :command (TeX-command "BibTeX" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "BibTeX"))) (clean :image "delete" :command (TeX-command "Clean" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "Clean")))) ;; latex-symbols-experimental? "Alist for button definitions in TeX bar. Value should le a list where each element is of format (KEY . PROPS), where KEY is a symbol that labels the button and PROPS is a list of properties of the button. For a description of the format of PROPS, please see documentation of function `toolbarx-install-toolbar'. This custom variable is in the same format of the argument MEANING-ALIST in the mentioned function." :type '(alist :key-type symbol :value-type sexp) :group 'TeX-tool-bar-button-definitions) ;;; Installation of the tool bar ;;;###autoload (defun TeX-install-toolbar () "Install toolbar buttons for TeX mode." (interactive) (require 'toolbar-x) (add-to-list 'toolbarx-image-path (expand-file-name "images" TeX-data-directory)) (add-hook 'TeX-PDF-mode-hook 'toolbarx-refresh nil t) (toolbarx-install-toolbar TeX-bar-TeX-buttons (let ((append-list)) (dolist (elt TeX-bar-TeX-all-button-alists) (setq append-list (append append-list (eval elt)))) append-list))) (defcustom TeX-bar-LaTeX-buttons '(new-file open-file dired kill-buffer save-buffer cut copy paste undo [separator nil] latex next-error view bibtex) "List of buttons available in `latex-mode'. It should be a list in the same format of the BUTTONS parameter in function `toolbarx-install-toolbar', often a symbol that labels a button or Emacs/XEmacs choice of buttons. Type `\\[TeX-bar-LaTeX-buttons]' for a list of available buttons. Buttons are defined in alists (labels associated to properties that define a button). For a list of variables that hold such alists, see variable `TeX-bar-LaTeX-all-button-alists'." :type '(list (set :inline t (const new-file) (const open-file) (const dired) (const kill-buffer) (const save-buffer) (const write-file) (const undo) (const cut) (const copy) (const paste) (const search-forward) (const print-buffer) (const [separator nil]) (const latex) (const next-error) (const view) (const file) (const bibtex) (const clean) (const latex-symbols-experimental)) (repeat (choice (symbol :tag "Label") (vector :args ((symbol :tag "Label in Emacs ") (symbol :tag "Label in XEmacs")) :tag "Emacs/XEmacs choice") (sexp :tag "General element")))) :group 'TeX-tool-bar) (defun TeX-bar-LaTeX-buttons () "Display in a buffer a list of buttons for `tex-bar.el'." (interactive) (let ((assqs-button-alists) (labels)) (dolist (m-alist TeX-bar-LaTeX-all-button-alists) (setq labels nil) (dolist (as (eval m-alist)) (setq labels (cons (car as) labels))) (setq assqs-button-alists (cons (cons m-alist (nreverse labels)) assqs-button-alists))) (setq assqs-button-alists (nreverse assqs-button-alists)) ;; displaying results (save-excursion (set-buffer (get-buffer-create "*TeX tool bar buttons*")) (erase-buffer) (insert "Available buttons for LaTeX mode ================================") (dolist (i assqs-button-alists) (insert (format "\n\n`%s' provides the following buttons:\n " (car i))) (dolist (j (cdr i)) (insert (format " %s" j))) (fill-region (point-at-bol) (point-at-eol)))) (display-buffer "*TeX tool bar buttons*" t))) (defgroup TeX-tool-bar-button-definitions nil "Collections of button definitions." :group 'TeX-tool-bar) (defcustom TeX-bar-LaTeX-all-button-alists '(TeX-bar-LaTeX-button-alist toolbarx-default-toolbar-meaning-alist) "List of variables that hold buttons properties. Each element should be a symbol bound to list in the format of the argument BUTTON-ALIST in function `toolbarx-install-toolbar'." :type '(repeat variable) :group 'TeX-tool-bar-button-definitions) (defcustom TeX-bar-LaTeX-button-alist '((latex :image (lambda nil (if TeX-PDF-mode "pdftex" "tex")) :command (progn (TeX-save-document (TeX-master-file)) (TeX-command "LaTeX" 'TeX-master-file -1)) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "LaTeX"))) (pdflatex :image "pdftex" :command (progn (TeX-save-document (TeX-master-file)) (TeX-command "PDFLaTeX" 'TeX-master-file -1)) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "PDFLaTeX"))) (next-error :image "error" :command TeX-next-error :enable (plist-get TeX-error-report-switches (intern (TeX-master-file))) :visible (plist-get TeX-error-report-switches (intern (TeX-master-file)))) (view :image (lambda nil (if TeX-PDF-mode "viewpdf" "viewdvi")) :command (TeX-command "View" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "View"))) (file :image "dvips" :command (TeX-command "File" 'TeX-master-file -1) :visible (not TeX-PDF-mode) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "File"))) (bibtex :image "bibtex" :command (TeX-command "BibTeX" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "BibTeX"))) (clean :image "delete" :command (TeX-command "Clean" 'TeX-master-file -1) :help (lambda (&rest ignored) (TeX-bar-help-from-command-list "Clean"))) (latex-symbols-experimental . (:alias :eval-group LaTeX-symbols-toolbar-switch-contents LaTeX-symbols-toolbar-contents))) "Alist for button definitions in TeX bar. Value should le a list where each element is of format (KEY . PROPS), where KEY is a symbol that labels the button and PROPS is a list of properties of the button. For a description of the format of PROPS, please see documentation of function `toolbarx-install-toolbar'. This custom variable is in the same format of the argument MEANING-ALIST in the mentioned function." :type '(alist :key-type symbol :value-type sexp) :group 'TeX-tool-bar-button-definitions) ;;; Installation of the tool bar ;;;###autoload (defun LaTeX-install-toolbar () "Install toolbar buttons for LaTeX mode." (interactive) (require 'toolbar-x) (add-to-list 'toolbarx-image-path (expand-file-name "images" TeX-data-directory)) (add-hook 'TeX-PDF-mode-hook 'toolbarx-refresh nil t) (toolbarx-install-toolbar TeX-bar-LaTeX-buttons (let ((append-list)) (dolist (elt TeX-bar-LaTeX-all-button-alists) (setq append-list (append append-list (eval elt)))) append-list))) ;;; Experimental Symbol Toolbar ;;; symbol toolbar (defun TeX-bar-img-filename (tex-command) "Return the filename (no extension) for the image button of TEX-COMMAND." (let ((str-list (append tex-command nil)) (str-result)) (dolist (i str-list) (cond ;; capital letter -> letter + "-" ((and (>= i ?A) (<= i ?Z)) (setq str-result (cons ?- (cons i str-result)))) ;; lowercase letter -> letter ((and (>= i ?a) (<= i ?z)) (setq str-result (cons i str-result))) ;; open curly brackets `{' -> "ocb--" ((eq i ?{) (setq str-result (cons ?o str-result)) (setq str-result (cons ?c str-result)) (setq str-result (cons ?b str-result)) (setq str-result (cons ?- str-result)) (setq str-result (cons ?- str-result))) ;; close curly brackets `}' -> "ccb--" ((eq i ?}) (setq str-result (cons ?c str-result)) (setq str-result (cons ?c str-result)) (setq str-result (cons ?b str-result)) (setq str-result (cons ?- str-result)) (setq str-result (cons ?- str-result))) ;; vertical bar `|' -> "v--" ((eq i ?|) (setq str-result (cons ?v str-result)) (setq str-result (cons ?- str-result)) (setq str-result (cons ?- str-result))) ;; slash `/' -> "s--" ((eq i ?/) (setq str-result (cons ?s str-result)) (setq str-result (cons ?- str-result)) (setq str-result (cons ?- str-result))))) (concat (nreverse str-result)))) (let* ((menu-strings-buttons-alist ;; make a alist os strings with the symbol classes and store it in ;; `menu-strings-alist' (let* ((menu-strings-alist-temp)) (dolist (item-external (cdr LaTeX-math-menu) (nreverse menu-strings-alist-temp)) (when (listp item-external) ;; if first element is vector, I am supposing that all are ;; vectors as well (if (vectorp (cadr item-external)) (let* ((menu-str (car item-external)) (menu-buttons)) (dolist (button (cdr item-external)) (setq menu-buttons (cons (list (intern (TeX-bar-img-filename (aref button 0))) :image (concat "symb-pics/" (TeX-bar-img-filename (aref button 0))) :help (aref button 0) :command (aref button 1)) menu-buttons))) (setq menu-buttons (nreverse menu-buttons)) (setq menu-strings-alist-temp (cons (cons menu-str (list menu-buttons)) menu-strings-alist-temp))) ;; if another list (therefore, up to second level menu) (let ((parent-str (concat (car item-external) " "))) (dolist (item-internal (cdr item-external)) (unless (equal (car item-internal) "Special") (let* ((menu-str (concat parent-str (car item-internal))) (menu-buttons)) (dolist (button (cdr item-internal)) (setq menu-buttons (cons (list (intern (aref button 0)) :image (concat "symb-pics/" (TeX-bar-img-filename (aref button 0))) :help (aref button 0) :command (aref button 1)) menu-buttons))) (setq menu-buttons (nreverse menu-buttons)) (setq menu-strings-alist-temp (cons (cons menu-str (list menu-buttons)) menu-strings-alist-temp))))))))))) (list-strings (let* ((list-str-temp)) (dolist (i menu-strings-buttons-alist (nreverse list-str-temp)) (setq list-str-temp (cons (car i) list-str-temp)))))) (defvar LaTeX-symbols-toolbar-visible-flag nil "Non-nil means that the LaTeX symbols on toolbar are visible. Internal variable.") (defconst LaTeX-symbols-toolbar-switch-contents `(;; the on-off switch button (latex-symbols-switch :image (lambda nil (if LaTeX-symbols-toolbar-visible-flag "ltx-symb-turn-off" "ltx-symb-turn-on")) :command (progn (setq LaTeX-symbols-toolbar-visible-flag (not LaTeX-symbols-toolbar-visible-flag)) (toolbarx-refresh)) ;; help message depends on if symb-toolbar is on or off, and in ;; the name of the current class of symbols :help (lambda (&rest ignore) (concat "Turn " (if LaTeX-symbols-toolbar-visible-flag "off " "on ") "the toolbar of LaTeX symbols (current class: " (nth (1- LaTeX-symbols-active-menuitem) (quote ,list-strings)) ")"))) ;; the dropdown button, that also switch on the symbols ,(append '(:dropdown-group) list-strings '(:variable LaTeX-symbols-active-menuitem :save offer :dropdown-prepend-command (setq LaTeX-symbols-toolbar-visible-flag t) :dropdown-help "Select a class of symbols to be displayed")))) (defconst LaTeX-symbols-toolbar-contents (let* ((ltx-symb) (count 0)) (dolist (i menu-strings-buttons-alist (append (nreverse ltx-symb) '(:insert LaTeX-symbols-toolbar-visible-flag :toolbar (bottom . top)))) (setq count (1+ count)) (setq ltx-symb (cons (append (cdr i) `(:insert (eq LaTeX-symbols-active-menuitem ,count))) ltx-symb)))))) (provide 'tex-bar) ;;; tex-bar.el ends here auctex-11.87/README0000644000000000000000000002555212056205161012410 0ustar rootrootThis is the README file for the AUCTeX distribution. Copyright (C) 2008 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. Introduction to AUCTeX ********************** This file gives a brief overview of what AUCTeX is. It is *not* an attempt to document AUCTeX. Real documentation for AUCTeX is available in the manual, which should be available as an info file after installation. AUCTeX is a comprehensive customizable integrated environment for writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs or XEmacs. It supports you in the insertion of macros, environments, and sectioning commands by providing completion alternatives and prompting for parameters. It automatically indents your text as you type it and lets you format a whole file at once. The outlining and folding facilities provide you with a focused and clean view of your text. AUCTeX lets you process your source files by running TeX and related tools (such as output filters, post processors for generating indices and bibliographies, and viewers) from inside Emacs. AUCTeX lets you browse through the errors TeX reported, while it moves the cursor directly to the reported error, and displays some documentation for that particular error. This will even work when the document is spread over several files. One component of AUCTeX that LaTeX users will find attractive is preview-latex, a combination of folding and in-source previewing that provides true "What You See Is What You Get" experience in your sourcebuffer, while letting you retain full control. For more information, see further below. More detailed information about the features and usage of AUCTeX can be found in the AUCTeX manual. You can access it from within Emacs by typing `C-h i d m auctex '. If you prefer the standalone info reader, issue the command `info auctex' in a terminal. AUCTeX is written entirely in Emacs Lisp, and hence you can easily add new features for your own needs. It is a GNU project and distributed under the `GNU General Public License Version 3'. The most recent version is always available at `http://ftp.gnu.org/pub/gnu/auctex/'. WWW users may want to check out the AUCTeX page at `http://www.gnu.org/software/auctex/'. For comprehensive information about how to install AUCTeX read the file `INSTALL' or `INSTALL.windows', respectively. If you are considering upgrading AUCTeX, the recent changes are described in the `CHANGES' file. If you want to discuss AUCTeX with other users or its developers, there are several mailing lists you can use. Send a mail with the subject "subscribe" to in order to join the general discussion list for AUCTeX. Articles should be sent to . In a similar way, you can subscribe to the list for just getting important announcements about AUCTeX. The list is for bug reports which you should usually file with the `M-x TeX-submit-bug-report ' command. If you want to address the developers of AUCTeX themselves with technical issues, they can be found on the discussion list . preview-latex in a nutshell *************************** Does your neck hurt from turning between previewer windows and the source too often? This AUCTeX component will render your displayed LaTeX equations right into the editing window where they belong. The purpose of preview-latex is to embed LaTeX environments such as display math or figures into the source buffers and switch conveniently between source and image representation. 1 What use is it? ***************** WYSIWYG (what you see is what you get) sometimes is considered all the rage, sometimes frowned upon. Do we really want it? Wrong question. The right question is _what_ we want from it. Except when finetuning the layout, we don't want to use printer fonts for on-screen text editing. The low resolution and contrast of a computer screen render all but the coarsest printer fonts (those for low-quality newsprint) unappealing, and the margins and pagination of the print are not wanted on the screen, either. On the other hand, more complex visual compositions like math formulas and tables can't easily be taken in when seen only in the source. preview-latex strikes a balance: it only uses graphic renditions of the output for certain, configurable constructs, does this only when told, and then right in the source code. Switching back and forth between the source and preview is easy and natural and can be done for each image independently. Behind the scenes of preview-latex, a sophisticated framework of other programs like `dvipng', Dvips and Ghostscript are employed together with a special LaTeX style file for extracting the material of interest in the background and providing fast interactive response. 2 Activating preview-latex ************************** After installation, the package may need to be activated (and remember to activate AUCTeX too). In XEmacs, and in any prepackaged versions worth their salt, activation should be automatic upon installation. If this seems not the case, complain to your installation provider. The usual activation (if it is not done automatically) would be (load "preview-latex.el" nil t t) If you still don't get a "Preview" menu in LaTeX mode in spite of AUCTeX showing its "Command", your installation is broken. One possible cause are duplicate Lisp files that might be detectable with ` list-load-path-shadows '. 3 Getting started ***************** Once activated, preview-latex and its documentation will be accessible via its menus (note that preview-latex requires AUCTeX to be loaded). When you have loaded a LaTeX document (a sample document `circ.tex' is included in the distribution, but most documents including math and/or figures should do), you can use its menu or `C-c C-p C-d' (for `Preview/Document'). Previews will now be generated for various objects in your document. You can use the time to take a short look at the other menu entries and key bindings in the `Preview' menu. You'll see the previewed objects change into a roadworks sign when preview-latex has determined just what it is going to preview. Note that you can freely navigate the buffer while this is going on. When the process is finished you will see the objects typeset in your buffer. It is a bad idea, however, to edit the buffer before the roadworks signs appear, since that is the moment when the correlation between the original text and the buffer locations gets established. If the buffer changes before that point of time, the previews will not be placed where they belong. If you do want to change some obvious error you just spotted, we recommend you stop the background process by pressing `C-c C-k'. To see/edit the LaTeX code for a specific object, put the point (the cursor) on it and press `C-c C-p C-p' (for `Preview/at point'). It will also do to click with the middle mouse button on the preview. Now you can edit the code, and generate a new preview by again pressing `C-c C-p C-p' (or by clicking with the middle mouse button on the icon before the edited text). If you are using the `desktop' package, previews will remain from one session to the next as long as you don't kill your buffer. If you are using XEmacs, you will probably need to upgrade the package to the newest one; things are being fixed just as I am writing this. 4 Basic modes of operation ************************** preview-latex has a number of methods for generating its graphics. Its default operation is equivalent to using the `LaTeX' command from AUCTeX. If this happens to be a call of PDFLaTeX generating PDF output (you need at least AUCTeX 11.51 for this), then Ghostscript will be called directly on the resulting PDF file. If a DVI file gets produced, first Dvips and then Ghostscript get called by default. The image type to be generated by Ghostscript can be configured with M-x customize-variable RET preview-image-type RET The default is `png' (the most efficient image type). A special setting is `dvipng' in case you have the `dvipng' program installed. In this case, `dvipng' will be used for converting DVI files and Ghostscript (with a `PNG' device) for converting PDF files. `dvipng' is much faster than the combination of Dvips and Ghostscript. You can get downloads, access to its CVS archive and further information from its project site (http://savannah.nongnu.org/projects/dvipng). 5 More documentation ******************** After the installation, documentation in the form of an info manual will be available. You can access it with the standalone info reader with info preview-latex or by pressing `C-h i d m preview-latex ' in Emacs. Once preview-latex is activated, you can instead use `C-c C-p ' (or the menu entry `Preview/Read documentation'). Depending on your installation, a printable manual may also be available in the form of `preview-latex.dvi' or `preview-latex.ps'. Detailed documentation for the LaTeX style used for extracting the preview images is placed in `preview.dvi' in a suitable directory during installation; on typical teTeX-based systems, texdoc preview will display it. 6 Availability ************** The preview-latex project is now part of AUCTeX and accessible as part of the AUCTeX project page (http://savannah.gnu.org/projects/auctex). You can get its files from the AUCTeX download area (ftp://ftp.gnu.org/pub/gnu/auctex). As of AUCTeX 11.81, preview-latex should already be integrated into AUCTeX, so no separate download will be necessary. You will also find `.rpm' files there for Fedora and possibly SuSE. Anonymous CVS is available as well. 7 Contacts ********** Bug reports should be sent by using `M-x preview-report-bug ', as this will fill in a lot of information interesting to us. If the installation fails (but this should be a rare event), report bugs to . There is a general discussion list for AUCTeX which also covers preview-latex, look at `http://lists.gnu.org/mailman/listinfo/auctex'. For more information on the mailing list, send a message with just the word "help" as subject or body to . For the developers, there is the list; it would probably make sense to direct feature requests and questions about internal details there. There is a low-volume read-only announcement list available to which you can subscribe by sending a mail with "subscribe" in the subject to . Offers to support further development will be appreciated. If you want to show your appreciation with a donation to the main developer, you can do so via PayPal to , and of course you can arrange for service contracts or for added functionality. Take a look at the `TODO' list for suggestions in that area. auctex-11.87/texmathp.el0000644000000000000000000003715611016206070013702 0ustar rootroot;;; texmathp.el -- Code to check if point is inside LaTeX math environment ;; Copyright (C) 1998, 2004 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org ;; 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 code provides a function to determine if point in a buffer is ;; inside a (La)TeX math environment. This is not trivial since many ;; different ways are used to switch between the two. Examples: ;; ;; \begin{equation} ... \end{equation} ;; $ ... $ ;; $$ ... $$ ;; \[ ... \] ;; \ensuremath{...} ;; \mbox{...} ;; ;; To install, put this file on your load-path and compile it. ;; ;; To use this in a Lisp program, do ;; ;; (require 'texmathp) ;; ;; You can then write code like this: ;; ;; (if (texmathp) ...) ;; ;; The call to `texmathp' leaves some extra information in the ;; variable `texmathp-why'. It's value is a cons cell (MATCH . POSITION), ;; specifying which command at what position is responsible for math ;; mode being on or off. ;; ;; To configure which macros and environments influence LaTeX math mode, ;; customize the variable `texmathp-tex-commands'. By default ;; it recognizes the LaTeX core as well as AMS-LaTeX (see the variable ;; `texmathp-tex-commands-default', also as an example). ;; ;; To try out the code interactively, use `M-x texmathp RET'. ;; ;; Of course, in order to work this function has to assume that the ;; LaTeX above point is syntactically correct. In particular: ;; ;; o The different math delimiters are paired correctly. Thus if ;; you do things like "\begin{equation} $" or "\[ ... \)" ;; the result of (texmathp) is undefined. It is in fact possible ;; in LaTeX to pair \[ with $$ and \( with $, but this will confuse ;; texmathp (and human readers as well). ;; ;; o However, texmathp will correctly work with nested delimiters. ;; Something like the following will be parsed correctly at any point: ;; ;; \begin{equation} ;; x = y \mbox{abc \ensuremath{\alpha} cba $2^3$} ;; \end{equation} ;; ;; o texmathp is somewhat forgiving if you have an empty line inside ;; the current math environment, which is not legal in TeX but may ;; easily happen during editing. Depending upon the variable ;; `texmathp-search-n-paragraphs' several paragraphs are checked ;; backwards, by default 2. Paragraph here means something limited ;; by an empty line. ;;-------------------------------------------------------------------------- ;; ;; BUGS: ;; ;; If any of the the special macros like \mbox or \ensuremath has optional ;; arguments, math mode inside these optional arguments is *not* influenced ;; by the macro. ;;-------------------------------------------------------------------------- ;;; Code: (defgroup texmathp nil "Testing TeX and LaTeX documents for math mode." :tag "Test For TeX and LaTeX Math Mode" :prefix "texmathp-" :group 'tex) ;; Some internal variables which are computed from `texmathp-tex-commands' ;; and `texmathp-tex-commands-default'. (defvar texmathp-environments nil) (defvar texmathp-macros nil) (defvar texmathp-onoff-regexp nil) (defvar texmathp-toggle-regexp nil) (defvar texmathp-tex-commands1 nil) (defvar texmathp-memory nil) (defvar texmathp-tex-commands) ; silence the compiler (defvar texmathp-tex-commands-default '(;; Plain TeX ("$$" sw-toggle) ("$" sw-toggle) ("\\hbox" arg-off) ("\\vbox" arg-off) ("\\vtop" arg-off) ("\\vcenter" arg-off) ;; Standard LaTeX ("equation" env-on) ("equation*" env-on) ("eqnarray" env-on) ("eqnarray*" env-on) ("math" env-on) ("displaymath" env-on) ("minipage" env-off) ("\\fbox" arg-off) ("\\mbox" arg-off) ("\\framebox" arg-off) ("\\label" arg-off) ("\\textrm" arg-off) ("\\(" sw-on) ("\\)" sw-off) ("\\[" sw-on) ("\\]" sw-off) ("\\ensuremath" arg-on) ;; AMS-LaTeX ("align" env-on) ("align*" env-on) ("gather" env-on) ("gather*" env-on) ("multline" env-on) ("multline*" env-on) ("flalign" env-on) ("flalign*" env-on) ("alignat" env-on) ("alignat*" env-on) ("xalignat" env-on) ("xalignat*" env-on) ("xxalignat" env-on) ("\\boxed" arg-on) ("\\text" arg-off) ("\\intertext" arg-off)) "The default entries for `texmathp-tex-commands', which see.") (defun texmathp-compile () "Compile the value of `texmathp-tex-commands' into the internal lists. Call this when you have changed the value of that variable without using customize (customize calls it when setting the variable)." (interactive) ;; Extract lists and regexp. (setq texmathp-macros nil texmathp-environments nil) (setq texmathp-memory (cons texmathp-tex-commands texmathp-tex-commands-default)) (setq texmathp-tex-commands1 (append texmathp-tex-commands texmathp-tex-commands-default)) (let ((list (reverse texmathp-tex-commands1)) var entry type switches togglers) (while (setq entry (car list)) (setq type (nth 1 entry) list (cdr list) var (cond ((memq type '(env-on env-off)) 'texmathp-environments) ((memq type '(arg-on arg-off)) 'texmathp-macros) ((memq type '(sw-on sw-off)) 'switches) ((memq type '(sw-toggle)) 'togglers))) (set var (cons (car entry) (symbol-value var)))) (setq texmathp-onoff-regexp (concat "[^\\\\]\\(" (mapconcat 'regexp-quote switches "\\|") "\\)") texmathp-toggle-regexp (concat "\\([^\\\\\\$]\\|\\`\\)\\(" (mapconcat 'regexp-quote togglers "\\|") "\\)")))) (defcustom texmathp-tex-commands nil "List of environments and macros influencing (La)TeX math mode. This user-defined list is used in addition to LaTeX and AMSLaTeX defaults. The structure of each entry is (NAME TYPE) - The first item in each entry is the name of an environment or macro. If it's a macro, include the backslash. - The second item is a symbol indicating how the command works: `env-on' Environment: turns math mode for its body on `env-off' Environment: turns math mode for its body off `arg-on' Command: turns math mode for its arguments on `arg-off' Command: turns math mode for its arguments off `sw-on' Switch: turns math-mode of following text on `sw-off' Switch: turns math-mode of following text off `sw-toggle' Switch: toggles math mode of following text" :group 'texmathp :set '(lambda (symbol value) (set-default symbol value) (texmathp-compile)) :type '(repeat (list :value ("" env-on) (string :tag "Name") (choice :tag "Type" (const :tag "Environment: turns math mode for its body on" env-on) (const :tag "Environment: turns math mode for its body off" env-off) (const :tag "Command: turns math mode for its argument on" arg-on) (const :tag "Command: turns math-mode for its argument off" arg-off) (const :tag "Switch: turns math-mode of following text on" sw-on) (const :tag "Switch: turns math-mode of following text off" sw-off) (const :tag "Switch: toggles math mode of following text" sw-toggle))))) (defcustom texmathp-search-n-paragraphs 2 "*Number of paragraphs to check before point. Normally, you cannot have an empty line in a math environment in (La)TeX. The fastest method to test for math mode is then limiting the search backward to the nearest empty line. However, during editing it happens that such lines exist temporarily. Therefore we look a little further. This variable determines how many empty lines we go back to fix the search limit." :group 'texmathp :type 'number) (defcustom texmathp-allow-detached-args nil "*Non-nil means, allow arguments of macros to be detached by whitespace. When this is t, `aaa' will be interpreted as an argument of \bb in the following construct: \bbb [xxx] {aaa} This is legal in TeX. The disadvantage is that any number of braces expressions will be considered arguments of the macro independent of its definition." :group 'texmathp :type 'boolean) (defvar texmathp-why nil "After a call to `texmathp' this variable shows why math-mode is on or off. The value is a cons cell (MATCH . POSITION). MATCH is a string like a car of an entry in `texmathp-tex-commands', e.q. \"equation\" or \"\\ensuremath\" or \"\\[\" or \"$\". POSITION is the buffer position of the match. If there was no match, it points to the limit used for searches, usually two paragraphs up.") ;; We need our own syntax table to play with the syntax of () [] and {} ;; For speed reasons we define it statically instead of copying it each time. (defvar texmathp-syntax-table (let ((table (make-syntax-table))) (mapc (lambda (x) (modify-syntax-entry (car x) (cdr x) table)) '((?\\ . "\\") (?\f .">") (?\n . ">") (?% . "<") (?\[ . ".") (?\] . ".") (?\{ . "(}") (?\} . "){") (?\( . ".") (?\) . ".") (?\" . ".") (?& . ".") (?_ . ".") (?@ . "_") (?~ . " ") (?$ . "$") (?' . "w"))) table) "Syntax table used while texmathp is parsing.") ;;;###autoload (defun texmathp () "Determine if point is inside (La)TeX math mode. Returns t or nil. Additional info is placed into `texmathp-why'. The functions assumes that you have (almost) syntactically correct (La)TeX in the buffer. See the variable `texmathp-tex-commands' about which commands are checked." (interactive) (let* ((pos (point)) math-on sw-match (bound (save-excursion (if (re-search-backward "[\n\t][ \t]*[\n\r]" nil 1 texmathp-search-n-paragraphs) (match-beginning 0) (point-min)))) (mac-match (texmathp-match-macro bound)) (env-match (texmathp-match-environment (if (and mac-match (> (cdr mac-match) bound)) (cdr mac-match) bound))) (match (cons nil bound))) ;; Select the nearer match (and env-match (setq match env-match)) (and mac-match (> (cdr mac-match) (cdr match)) (setq match mac-match)) (setq math-on (memq (nth 1 (assoc (car match) texmathp-tex-commands1)) '(env-on arg-on))) ;; Check for switches (and (not math-on) (setq sw-match (texmathp-match-switch bound)) (> (cdr sw-match) (cdr match)) (eq (nth 1 (assoc (car sw-match) texmathp-tex-commands1)) 'sw-on) (setq match sw-match math-on t)) ;; Check for togglers (if (not math-on) (save-excursion (goto-char (cdr match)) (while (re-search-forward texmathp-toggle-regexp pos t) (if (setq math-on (not math-on)) (setq sw-match (cons (match-string 2) (match-beginning 2))) (setq sw-match nil))) (and math-on sw-match (setq match sw-match)))) ;; Store info, show as message when interactive, and return (setq texmathp-why match) (and (interactive-p) (message "math-mode is %s: %s begins at buffer position %d" (if math-on "on" "off") (or (car match) "new paragraph") (cdr match))) (and math-on t))) (defun texmathp-match-environment (bound) "Find out if point is inside any of the math environments. Limit searched to BOUND. The return value is like (\"equation\" . (point))." (catch 'exit (save-excursion (and (null texmathp-environments) (throw 'exit nil)) ;; Check if the line we are starting with is a commented one. (let ((orig-comment-flag ;; Could be replaced by `TeX-in-commented-line'. (progn (save-excursion (beginning-of-line) (skip-chars-forward " \t") (string= (buffer-substring-no-properties (point) (min (point-max) (+ (point) (length comment-start)))) comment-start)))) end-list env) (while (re-search-backward "\\\\\\(begin\\|end\\)[ \t]*{\\([^}]+\\)}" bound t) ;; Check if the match found is inside of a comment. (let ((current-comment-flag ;; Could be replaced by `TeX-in-comment'. (when (save-match-data (re-search-backward comment-start-skip (line-beginning-position) t)) ;; We need a t for comparison with `orig-comment-flag', ;; not a number. t))) ;; Only consider matching alternatives with respect to ;; "in-commentness", i.e. if we started with a comment ;; only consider matches which are in comments as well and ;; vice versa. (when (eq orig-comment-flag current-comment-flag) (setq env (buffer-substring-no-properties (match-beginning 2) (match-end 2))) (cond ((string= (match-string 1) "end") (setq end-list (cons env end-list))) ((equal env (car end-list)) (setq end-list (cdr end-list))) ((member env texmathp-environments) (throw 'exit (cons env (point)))))))) nil)))) (defun texmathp-match-macro (bound) "Find out if point is within the arguments of any of the Math macros. Limit searches to BOUND. The return value is like (\"\\macro\" . (point))." (catch 'exit (and (null texmathp-macros) (throw 'exit nil)) (let (pos cmd (syntax-table (syntax-table))) (unwind-protect (save-restriction (save-excursion (set-syntax-table texmathp-syntax-table) (narrow-to-region (max 1 bound) (point)) ;; Move back out of the current parenthesis (while (condition-case nil (progn (up-list -1) t) (error nil)) ;; Move back over any touching sexps (in fact also non-touching) (while (and (cond ((memq (preceding-char) '(?\] ?\}))) ((and texmathp-allow-detached-args (re-search-backward "[]}][ \t]*[\n\r]?\\([ \t]*%[^\n\r]*[\n\r]\\)*[ \t]*\\=" bound t)) (goto-char (1+ (match-beginning 0))) t)) (if (eq (preceding-char) ?\}) ;; Jump back over {} (condition-case nil (progn (backward-sexp) t) (error nil)) ;; Jump back over []. Modify syntax temporarily for this. (unwind-protect (progn (modify-syntax-entry ?\{ ".") (modify-syntax-entry ?\} ".") (modify-syntax-entry ?\[ "(]") (modify-syntax-entry ?\] ")[") (condition-case nil (progn (backward-sexp) t) (error nil))) (modify-syntax-entry ?\{ "(}") (modify-syntax-entry ?\} "){") (modify-syntax-entry ?\[ ".") (modify-syntax-entry ?\] ".") nil)))) (setq pos (point)) (and (memq (following-char) '(?\[ ?\{)) (re-search-backward "\\\\[*a-zA-Z]+\\=" nil t) (setq cmd (buffer-substring-no-properties (match-beginning 0) (match-end 0))) (member cmd texmathp-macros) (throw 'exit (cons cmd (point)))) (goto-char pos)) (throw 'exit nil))) (set-syntax-table syntax-table))))) ;;;###autoload (defun texmathp-match-switch (bound) "Search backward for any of the math switches. Limit searched to BOUND." ;; The return value is like ("\\(" . (point)). (save-excursion (if (re-search-backward texmathp-onoff-regexp bound t) (cons (buffer-substring-no-properties (match-beginning 1) (match-end 1)) (match-beginning 1)) nil))) (provide 'texmathp) ;;; texmathp.el ends here auctex-11.87/aclocal.m40000644000000000000000000005075710454153452013402 0ustar rootroot# serial 1 dnl this was once done by Katsumi Yamaoka , but dnl pretty much no original code remains. dnl EMACS_LISP takes 5 arguments. $1 is the name of the shell dnl variable to assign a value, $2 is a Lisp expression placed into dnl shell double quotes (which has consequences for quoting and dnl variable expansion). $3 is a list of Emacs options evaluated before dnl the expression itself, $4 is a list of Elisp variables that is dnl assigned from the command line arguments from $5. AC_DEFUN(EMACS_LISP, [ elisp="$2" OUTPUT=./conftest-$$ echo "${EMACS}" -batch $3 -eval "(let* (patsubst([$4], [\w+], [(\&(pop command-line-args-left))])(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" $5 >& AC_FD_CC 2>&1 "${EMACS}" -batch $3 -eval "(let* (patsubst([$4], [\w+], [(\&(pop command-line-args-left))])(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" $5 >& AC_FD_CC 2>&1 $1="`cat ${OUTPUT}`" echo "=> [$]{$1}" >& AC_FD_CC 2>&1 rm -f ${OUTPUT} ]) # This generates a prefix variables $1 from the executable in $2. # The executable is searched in PATH, and a potential bin/ or # bin/architecture/ component is stripped from it. AC_DEFUN(EMACS_PATH_PREFIX,[ EMACS_LISP([$1],[[(condition-case nil (let* ((prefix (directory-file-name (file-name-directory (executable-find cmd)))) (parent (directory-file-name (file-name-directory prefix)))) (if (string= (file-name-nondirectory prefix) \"bin\") (setq prefix parent) (if (string= (file-name-nondirectory parent) \"bin\") (setq prefix (directory-file-name (file-name-directory parent))))) prefix) (error "NONE"))]],[[-no-site-file]],[[cmd]],[$2])]) AC_DEFUN(EMACS_PROG_EMACS, [ # Check for (X)Emacs, report its path, flavor and prefix # Apparently, if you run a shell window in Emacs, it sets the EMACS # environment variable to 't'. Let's undo the damage. if test "${EMACS}" = "t"; then EMACS="" fi AC_ARG_WITH(emacs, [ --with-emacs@<:@=PATH@:>@ Use Emacs to build (on PATH if given)], [if test "${withval}" = "yes"; then EMACS=emacs elif test "${withval}" = "no"; then EMACS=xemacs else EMACS="${withval}"; fi]) AC_ARG_WITH(xemacs, [ --with-xemacs@<:@=PATH@:>@ Use XEmacs to build (on PATH if given)], [if test "x${withval}" != xno then if test "x${with_emacs}" != xno -a "x${with_emacs}" != x then AC_MSG_ERROR([[cannot use both Emacs and XEmacs]]) fi if test "x${withval}" = "xyes" then EMACS=xemacs else EMACS="${withval}" fi elif test "x${with_emacs}" = xno then AC_MSG_ERROR([[need to use either Emacs or XEmacs]]) fi]) # "${prefix}/bin" is for Windows users AC_PATH_PROGS(EMACS, ${EMACS} emacs xemacs, "", ${PATH} "${prefix}/bin" ) if test -z "${EMACS}"; then AC_MSG_ERROR([(X)Emacs not found! Aborting!]) fi AC_MSG_CHECKING([if ${EMACS} is XEmacs]) EMACS_LISP(XEMACS, [[(if (featurep (quote xemacs)) \"yes\" \"no\")]],[[-no-site-file]]) if test "${XEMACS}" = "yes"; then EMACS_FLAVOR=xemacs EMACS_NAME="XEmacs" elif test "${XEMACS}" = "no"; then EMACS_FLAVOR=emacs EMACS_NAME="Emacs" else AC_MSG_ERROR([Unable to run ${EMACS}! Aborting!]) fi AC_MSG_RESULT(${XEMACS}) AC_SUBST(XEMACS) AC_SUBST(EMACS_FLAVOR) AC_MSG_CHECKING([for ${EMACS_NAME} prefix]) EMACS_PATH_PREFIX([[emacsprefix]],[["${EMACS}"]]) AC_MSG_RESULT([["${emacsprefix}"]]) ]) AC_DEFUN(AC_DATE_VERSION_FROM_CHANGELOG, [ AC_MSG_CHECKING([for date in ChangeLog]) $1=[`sed -n '1s/^\([-0-9][-0-9]*\).*/\1/p' ChangeLog`] if test "X${$1}" = X then AC_MSG_ERROR([[not found]]) fi AC_MSG_RESULT(${$1}) AC_MSG_CHECKING([for release in ChangeLog]) $2=[`sed -n '2,/^[0-9]/s/.*Version \(.*\) released\..*/\1/p' ChangeLog`] if test "X${$2}" = X then $2=${$1} AC_MSG_RESULT([not found, using ${$2} instead]) else AC_MSG_RESULT([${$2}]) fi ]) AC_DEFUN(EMACS_CHECK_VERSION, [ AC_MSG_CHECKING([if ${EMACS_NAME} is recent enough]) EMACS_LISP(result,[(cond ((< emacs-major-version $1) \"no\") ((> emacs-major-version $1) \"yes\") ((< emacs-minor-version 0$2) \"no\") (t \"yes\"))],[[-no-site-file]]) AC_MSG_RESULT([${result}]) if test "${result}" != "yes" then AC_MSG_ERROR([This package requires at least ${EMACS_NAME} version $1.$2 Aborting!]) fi ]) dnl Look for an installation directory under given prefixes. dnl $1 is the variable name we are looking for. dnl $2 is a list of prefixes to try as a list of shell words dnl $3 is a Lisp expression giving a list of directory names dnl those should be be either nil or a relative path like "tex/latex". dnl Those names are tried in turn, and every one of them is matched dnl against the tail of each location in $4. nil matches everything, dnl it is a wildcard. dnl $4 is Lisp expression giving a list of locations where to find names. dnl A location is only considered if it is nonnil, an existing dnl absolute directory, dnl and is a subdirectory of one of the given prefixes. dnl $5,$6,$7 are additional arguments for the elisp call AC_DEFUN(EMACS_EXAMINE_INSTALLATION_DIR, [ for currentprefix in $2 do expprefix="${currentprefix}" AC_FULL_EXPAND(expprefix) EMACS_LISP([$1], [(catch 22 (let (reldir (dirs $4)) (dolist (name $3 \"NONE\") (dolist (dir dirs) (when (and dir (setq dir (directory-file-name dir)) (file-name-absolute-p dir) (file-directory-p dir) (not (string-match \"\\\\\`\\\\.\\\\.\" (setq reldir (file-relative-name dir expanded)))) (not (file-name-absolute-p reldir)) (let ((name name) (dir dir)) (while (and dir name (string= (file-name-nondirectory dir) (file-name-nondirectory name)) (setq dir (file-name-directory dir) name (file-name-directory name)) (if (and dir name) (setq dir (directory-file-name dir) name (directory-file-name name))))) (null name)) (throw 22 (if (string= reldir \".\") (directory-file-name prefix) (concat (file-name-as-directory prefix) reldir)))))))))],[$5], [prefix expanded $6],["${currentprefix}" "${expprefix}" $7]) if test "[$]$1" != NONE; then break; fi; done]) AC_DEFUN(EMACS_PATH_PACKAGEDIR, [AC_ARG_WITH(packagedir, [ --with-packagedir=DIR package DIR for XEmacs], [packagedir="`echo ${withval} | sed 's/^~\//${HOME}\//;s/[[\/\\]]$//'`"], [if test ${EMACS_FLAVOR} = xemacs; then AC_MSG_CHECKING([for XEmacs package directory]) EMACS_EXAMINE_INSTALLATION_DIR(packagedir, [['${datadir}/xemacs/xemacs-packages' \ '${libdir}/xemacs/xemacs-packages' \ '${datadir}' '${libdir}' "${emacsprefix}"]], [[(list \"xemacs/site-packages\" \"xemacs/xemacs-packages\" \"site-packages\" \"xemacs-packages\")]], [[(if (boundp 'late-packages) (append late-packages last-packages early-packages) (append late-package-hierarchies last-package-hierarchies early-package-hierarchies))]]) if test "x${packagedir}" = xNONE -o -z "${packagedir}"; then AC_MSG_ERROR([not found, exiting!]) fi AC_MSG_RESULT(${packagedir}) else packagedir=no fi]) AC_SUBST(packagedir)]) AC_DEFUN(EMACS_PATH_LISPDIR, [ AC_MSG_CHECKING([where lisp files go]) AC_ARG_WITH(lispdir, [ --with-lispdir=DIR A place in load-path for Lisp files; most files will be place in a subdirectory.], [[lispdir="${withval}"]]) if test "X${lispdir}" = X; then if test "X${packagedir}" = Xno; then # Test paths relative to prefixes EMACS_EXAMINE_INSTALLATION_DIR(lispdir, [['${datadir}/'${EMACS_FLAVOR} '${libdir}/'${EMACS_FLAVOR} \ "${emacsprefix}/share/${EMACS_FLAVOR}" \ '${datadir}' '${libdir}' "${emacsprefix}"]], [[(list \"${EMACS_FLAVOR}/site-lisp\" \"${EMACS_FLAVOR}/site-packages\" \"site-lisp\" \"site-packages\")]], load-path) if test "${lispdir}" = "NONE"; then # No? notify user. AC_MSG_ERROR([Cannot locate lisp directory, use --with-lispdir, --datadir, or possibly --prefix to rectify this]) fi else # XEmacs lispdir="${packagedir}/lisp" fi fi AC_MSG_RESULT([[${lispdir}]]) AC_SUBST(lispdir) ]) AC_DEFUN(TEX_PATH_TEXMFDIR, [ AC_ARG_WITH(texmf-dir, [ --with-texmf-dir=DIR TEXMF tree to install into, or --without-texmf-dir for runtime config], [ texmfdir="${withval}" ; if test "x${texmfdir}" = xno then previewtexmfdir="${packagedatadir}/latex" previewdocdir="${packagedatadir}/doc" else AC_FULL_EXPAND(withval) if test ! -d "${withval}" ; then AC_MSG_ERROR([--with-texmf-dir="${texmfdir}": Directory does not exist]) fi previewtexmfdir="${texmfdir}/tex/latex/preview" previewdocdir="${texmfdir}/doc/latex/styles" fi ]) AC_ARG_WITH(tex-dir, [ --with-tex-dir=DIR Location to install preview TeX sources], [ previewtexmfdir="${withval}" ; AC_FULL_EXPAND(withval) if test ! -d "${withval}" ; then AC_MSG_ERROR([--with-tex-dir="${previewtexmfdir}": Directory does not exist]) fi ]) AC_ARG_WITH(doc-dir, [ --with-doc-dir=DIR Location to install preview.dvi], [ previewdocdir="${withval}" ; AC_FULL_EXPAND(withval) if test ! -d "${withval}" ; then AC_MSG_ERROR([--with-doc-dir="${previewdocdir}": Directory does not exist]) fi ]) # First check for docstrip.cfg information -- removed. Too high # likelihood to pick up a user preference instead of a system setting. # Next # kpsepath -n latex tex # and then go for the following in its output: # a) first path component in datadir/prefix ending in tex/latex// (strip trailing # // and leading !!): "Searching for TDS-compliant directory." Install # in preview subdirectory. # b) first absolute path component ending in // "Searching for directory # hierarchy" Install in preview subdirectory. # c) anything absolute. Install both files directly there. if test "x${texmfdir}" != xno ; then if test "x${previewtexmfdir}" = x ; then AC_MSG_CHECKING([for prefix from kpsepath]) EMACS_PATH_PREFIX(texprefix,kpsepath) if test "x${texprefix}" != "xNONE" then AC_MSG_RESULT([["${texprefix}"]]) AC_MSG_CHECKING([for TDS-compliant directory]) pathoutput="`kpsepath -n latex tex`" EMACS_EXAMINE_INSTALLATION_DIR(texmfdir, [['${datadir}/texmf' "${texprefix}/share/texmf-local" "${texprefix}/share/texmf" "${texprefix}/texmf-local" "${texprefix}/texmf"]], [[(list nil)]], [[(mapcar (lambda(x) (and (string-match \"\\\\\`!*\\\\(.*\\\\)/tex/latex//+\\\\'\" x) (match-string 1 x))) (append (split-string pathoutput \";\") (split-string pathoutput \":\")))]], [[-no-site-file]], [[pathoutput]],[["${pathoutput}"]]) if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewdocdir="${texmfdir}/doc/latex/styles" previewtexmfdir="${texmfdir}/tex/latex/preview" fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then AC_MSG_RESULT([no]) AC_MSG_CHECKING([for TeX directory hierarchy]) EMACS_EXAMINE_INSTALLATION_DIR(texmfdir, [['${datadir}/texmf' "${texprefix}/share/texmf-local" "${texprefix}/share/texmf" "${texprefix}/texmf-local" "${texprefix}/texmf" '${datadir}' "${texprefix}/share" "${texprefix}"]], [[(list nil)]], [[(mapcar (lambda(x) (and (string-match \"\\\\\`!*\\\\(.*[^/]\\\\)//+\\\\'\" x) (match-string 1 x))) (append (split-string pathoutput \";\") (split-string pathoutput \":\")))]], [[-no-site-file]], [[pathoutput]],[["${pathoutput}"]]) if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewtexmfdir="${texmfdir}/preview" previewdocdir="${texmfdir}/preview" fi fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then AC_MSG_RESULT([no]) AC_MSG_CHECKING([for TeX input directory]) EMACS_EXAMINE_INSTALLATION_DIR(texmfdir, [['${datadir}' "${texprefix}/share" "${texprefix}"]], [[(list nil)]], [[(mapcar (lambda(x) (and (string-match \"\\\\\`!*\\\\(.*[^/]\\\\)/?\\\\'\" x) (match-string 1 x))) (append (split-string pathoutput \";\") (split-string pathoutput \":\")))]], [[-no-site-file]], [[pathoutput]],[["${pathoutput}"]]) if test -n "${texmfdir}" -a "${texmfdir}" != "NONE" ; then previewtexmfdir="${texmfdir}" previewdocdir="${texmfdir}" fi fi fi if test -z "${previewtexmfdir}" -o "${previewtexmfdir}" = no ; then AC_MSG_RESULT([no]) AC_MSG_ERROR([Cannot find the texmf directory! Please use --with-texmf-dir=dir to specify where the preview tex files go]) fi AC_MSG_RESULT(${texmfdir}) fi fi echo Preview will be placed in ${previewtexmfdir} echo Preview docs will be placed in ${previewdocdir} AC_SUBST(texmfdir) AC_SUBST(previewtexmfdir) AC_SUBST(previewdocdir)]) AC_DEFUN(AC_FULL_EXPAND, [ __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "[$]$1" in *\[$]*) __ac_tmp__='s/[[\`"-"]]/\\&/g' eval "$1=`sed ${__ac_tmp__} < conftest.texi echo @$1{test} >> conftest.texi if ${MAKEINFO} conftest.texi > /dev/null 2> /dev/null; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) ifelse([$3], , :, [$3]) fi rm -f conftest.texi conftest.info fi ]) dnl dnl MAKEINFO_CHECK_MACROS( MACRO ... [, ACTION-IF-FOUND dnl [, ACTION-IF-NOT-FOUND]]) dnl AC_DEFUN(MAKEINFO_CHECK_MACROS, [for ac_macro in $1; do MAKEINFO_CHECK_MACRO(${ac_macro}, $2, [MAKEINFO_MACROS="-D no-${ac_macro} ${MAKEINFO_MACROS}" $3])dnl done AC_SUBST(MAKEINFO_MACROS) ]) AC_DEFUN(AC_SHELL_QUOTIFY, [$1=["`sed 's/[^-0-9a-zA-Z_./:$]/\\\\&/g;s/[$]\\\\[{(]\\([^)}]*\\)\\\\[})]/${\\1}/g' < (prefix-numeric-value current-prefix-arg) 0) (or (TeX-active-mark) (null TeX-command-region-begin))) (list (region-beginning) (region-end)) '(nil nil))) (if begin (progn (unless (markerp TeX-command-region-begin) (setq TeX-command-region-begin (make-marker)) (setq TeX-command-region-end (make-marker))) (set-marker TeX-command-region-begin begin) (set-marker TeX-command-region-end end) (message "TeX region pinned.")) (when (markerp TeX-command-region-begin) (set-marker TeX-command-region-begin nil) (set-marker TeX-command-region-end nil)) (setq TeX-command-region-begin nil) (setq TeX-command-region-end nil) (message "TeX region unpinned."))) (defun TeX-command-region (&optional override-confirm) "Run TeX on the current region. Query the user for a command to run on the temporary file specified by the variable `TeX-region'. If there is an explicitly active region, it is stored for later commands. If not, a previously stored region \(can be also be set with `TeX-pin-region') overrides the current region, if present. If a prefix argument OVERRIDE-CONFIRM is given, prompting will ignore the prompting flag from `TeX-command-list' and instead will prompt iff the prefix is positive. If the master file for the document has a header, it is written to the temporary file before the region itself. The document's header is all text before `TeX-header-end'. If the master file for the document has a trailer, it is written to the temporary file before the region itself. The document's trailer is all text after `TeX-trailer-start'." (interactive "P") ;; Note that TeX-command-region-begin is not a marker when called ;; from TeX-command-buffer. (and (or (null TeX-command-region-begin) (markerp TeX-command-region-begin)) (TeX-active-mark) (TeX-pin-region (region-beginning) (region-end))) (let ((begin (or TeX-command-region-begin (region-beginning))) (end (or TeX-command-region-end (region-end)))) (TeX-region-create (TeX-region-file TeX-default-extension) (buffer-substring begin end) (file-name-nondirectory (buffer-file-name)) (TeX-current-offset begin))) (TeX-command (TeX-command-query (TeX-region-file nil t)) 'TeX-region-file override-confirm)) (defun TeX-command-buffer (&optional override-confirm) "Run TeX on the current buffer. Query the user for a command to run on the temporary file specified by the variable `TeX-region'. The region file will be recreated from the visible part of the buffer. If a prefix argument OVERRIDE-CONFIRM is given, confirmation will depend on it being positive instead of the entry in `TeX-command-list'." (interactive "P") (let ((TeX-command-region-begin (point-min)) (TeX-command-region-end (point-max))) (TeX-command-region override-confirm))) (unless (featurep 'xemacs) ;; This variable is not defined in XEmacs because XEmacs' version of ;; `pop-to-buffer' doesn't support the optional NORECORD argument. In ;; XEmacs, the third arg is ON-FRAME (Emacs: NORECORD). (defcustom TeX-record-buffer nil "Whether to record buffer names of generated TeX buffers. When non-nil, these buffers are put at the front of the list of recently selected ones." :group 'TeX-command :type 'boolean)) (defun TeX-pop-to-buffer (buffer &optional other-window norecord) "Compatibility wrapper for `pop-to-buffer'. Select buffer BUFFER in some window, preferably a different one. BUFFER may be a buffer, a string (a buffer name), or nil. If BUFFER is a string which is not the name of an existing buffer, then this function creates a buffer with that name. If BUFFER is nil, then it chooses some other buffer. If `pop-up-windows' is non-nil, windows can be split to do this. If optional second arg OTHER-WINDOW is non-nil, insist on finding another window even if BUFFER is already visible in the selected window, and ignore `same-window-regexps' and `same-window-buffer-names'. This function returns the buffer it switched to. This uses the function `display-buffer' as a subroutine; see the documentation of `display-buffer' for additional customization information. Optional third arg NORECORD non-nil means do not put this buffer at the front of the list of recently selected ones. NORECORD is ignored in XEmacs." ;; Make sure not to use third arg in XEmacs. In XEmacs, the third arg is ;; ON-FRAME (Emacs: NORECORD), so we set it to nil. (pop-to-buffer buffer other-window (and norecord (boundp 'TeX-record-buffer) TeX-record-buffer))) (defun TeX-recenter-output-buffer (line) "Redisplay buffer of TeX job output so that most recent output can be seen. The last line of the buffer is displayed on line LINE of the window, or at bottom if LINE is nil." (interactive "P") (let ((buffer (TeX-active-buffer))) (if buffer (let ((old-buffer (current-buffer))) (TeX-pop-to-buffer buffer t t) (bury-buffer buffer) (goto-char (point-max)) (recenter (if line (prefix-numeric-value line) (/ (window-height) 2))) (TeX-pop-to-buffer old-buffer nil t)) (message "No process for this document.")))) (defun TeX-kill-job () "Kill the currently running TeX job." (interactive) (let ((process (TeX-active-process))) (if process (kill-process process) ;; Should test for TeX background process here. (error "No TeX process to kill")))) (defun TeX-home-buffer () "Go to the buffer where you last issued a TeX command. If there is no such buffer, or you already are in that buffer, find the master file." (interactive) (if (or (null TeX-command-buffer) (null (buffer-name TeX-command-buffer)) (eq TeX-command-buffer (current-buffer))) (find-file (TeX-master-file TeX-default-extension)) (switch-to-buffer TeX-command-buffer))) (defun TeX-next-error (reparse) "Find the next error in the TeX output buffer. With \\[universal-argument] prefix, start from the beginning of the errors." (interactive "P") (if (null (TeX-active-buffer)) (next-error reparse) (funcall (TeX-process-get-variable (with-current-buffer TeX-command-buffer (TeX-active-master)) 'TeX-parse-function) reparse))) (defun TeX-previous-error (arg) "Find the previous error in the TeX output buffer." (interactive "P") (if (null (TeX-active-buffer)) (previous-error arg) (error "Jumping to previous error not supported"))) ;;; Command Query (defun TeX-command (name file &optional override-confirm) "Run command NAME on the file returned by calling FILE. FILE is the symbol of a function returning a file name. The function has one optional argument, the extension to use on the file. Use the information in `TeX-command-list' to determine how to run the command. If OVERRIDE-CONFIRM is a prefix argument, confirmation will be asked if it is positive, and suppressed if it is not." (cond ((eq file 'TeX-region-file) (setq TeX-current-process-region-p t)) ((eq file 'TeX-master-file) (setq TeX-current-process-region-p nil))) (let ((command (TeX-command-expand (nth 1 (assoc name TeX-command-list)) file)) (hook (nth 2 (assoc name TeX-command-list))) (confirm (if override-confirm (> (prefix-numeric-value override-confirm) 0) (nth 3 (assoc name TeX-command-list))))) ;; Verify the expanded command (if confirm (setq command (read-from-minibuffer (concat name " command: ") command nil nil))) ;; Now start the process (setq file (funcall file)) (TeX-process-set-variable file 'TeX-command-next TeX-command-Show) (funcall hook name command file))) (defun TeX-command-expand (command file &optional list) "Expand COMMAND for FILE as described in LIST. LIST default to `TeX-expand-list'. As a special exception, `%%' can be used to produce a single `%' sign in the output without further expansion." (let (pat pos entry TeX-command-text TeX-command-pos (file `(lambda (&rest args) (shell-quote-argument (concat (and (stringp TeX-command-pos) TeX-command-pos) (apply ',file args) (and (stringp TeX-command-pos) TeX-command-pos))))) case-fold-search string expansion arguments) (setq list (cons (list "%%" (lambda nil (setq pos (1+ pos)) "%")) (or list TeX-expand-list)) pat (regexp-opt (mapcar #'car list))) (while (setq pos (string-match pat command pos)) (setq string (match-string 0 command) entry (assoc string list) expansion (car (cdr entry)) ;Second element arguments (cdr (cdr entry)) ;Remaining elements string (save-match-data ;; Note regarding the special casing of `file': ;; `file' is prevented from being evaluated as a ;; function because inside of AUCTeX it only has ;; a meaning as a variable. This makes sure that ;; a function definition made by an external ;; package (e.g. icicles) is not picked up. (cond ((and (not (eq expansion 'file)) (TeX-function-p expansion)) (apply expansion arguments)) ((boundp expansion) (apply (eval expansion) arguments)) (t (error "Nonexpansion %s" expansion))))) (if (stringp string) (setq command (replace-match string t t command))))) command) (defun TeX-check-files (derived originals extensions) "Check if DERIVED is newer than any of the ORIGINALS. Try each original with each member of EXTENSIONS, in all directories in `TeX-check-path'. Returns true if any of the ORIGINALS with any of the EXTENSIONS are newer than DERIVED. Will prompt to save the buffer of any ORIGINALS which are modified but not saved yet." (let (existingoriginals found (extensions (TeX-delete-duplicate-strings extensions)) (buffers (buffer-list))) (dolist (path (mapcar (lambda (dir) (expand-file-name (file-name-as-directory dir))) TeX-check-path)) (dolist (orig originals) (dolist (ext extensions) (let ((filepath (concat path orig "." ext))) (if (file-exists-p filepath) (setq existingoriginals (cons filepath existingoriginals))))))) (while buffers (let* ((buffer (car buffers)) (name (buffer-file-name buffer))) (setq buffers (cdr buffers)) (if (and name (member name existingoriginals)) (progn (and (buffer-modified-p buffer) (or (not TeX-save-query) (y-or-n-p (concat "Save file " (buffer-file-name buffer) "? "))) (save-excursion (set-buffer buffer) (save-buffer))))))) (dolist (eo existingoriginals) (if (file-newer-than-file-p eo derived) (setq found t))) found)) (defcustom TeX-save-query t "*If non-nil, ask user for permission to save files before starting TeX." :group 'TeX-command :type 'boolean) (defvar TeX-command-history nil) (defun TeX-command-query (name) "Query the user for what TeX command to use." (let* ((default (cond ((if (string-equal name TeX-region) (TeX-check-files (concat name "." (TeX-output-extension)) (list name) TeX-file-extensions) (TeX-save-document (TeX-master-file))) TeX-command-default) ((and (memq major-mode '(doctex-mode latex-mode)) ;; Want to know if bib file is newer than .bbl ;; We don't care whether the bib files are open in emacs (TeX-check-files (concat name ".bbl") (mapcar 'car (LaTeX-bibliography-list)) (append BibTeX-file-extensions TeX-Biber-file-extensions))) ;; We should check for bst files here as well. (if LaTeX-using-Biber TeX-command-Biber TeX-command-BibTeX)) ((TeX-process-get-variable name 'TeX-command-next TeX-command-Show)) (TeX-command-Show))) (completion-ignore-case t) (answer (or TeX-command-force (completing-read (concat "Command: (default " default ") ") (TeX-mode-specific-command-list major-mode) nil t nil 'TeX-command-history)))) ;; If the answer is "latex" it will not be expanded to "LaTeX" (setq answer (car-safe (TeX-assoc answer TeX-command-list))) (if (and answer (not (string-equal answer ""))) answer default))) (defvar TeX-command-next nil "The default command next time `TeX-command' is invoked.") (make-variable-buffer-local 'TeX-command-next) (defun TeX-printer-query (&optional queue) "Query the user for a printer name. QUEUE is non-nil when we are checking for the printer queue." (let (command element printer) (if queue (unless (setq element 2 command TeX-queue-command) (error "Need to customize `TeX-queue-command'")) (unless (setq element 1 command TeX-print-command) (error "Need to customize `TeX-print-command'"))) (while (progn (setq printer (if TeX-printer-list (let ((completion-ignore-case t)) (completing-read (concat "Printer: " (and TeX-printer-default (concat "(default " TeX-printer-default ") "))) TeX-printer-list)) "")) (setq printer (or (car-safe (TeX-assoc printer TeX-printer-list)) printer)) (not (if (or (null printer) (string-equal "" printer)) (setq printer TeX-printer-default) (setq TeX-printer-default printer))))) (let ((expansion (let ((entry (assoc printer TeX-printer-list))) (or (nth element entry) command)))) (if (string-match "%p" printer) (error "Don't use %s in printer names" "%p")) (while (string-match "%p" expansion) (setq expansion (replace-match printer t t expansion 0))) expansion))) (defun TeX-style-check (styles) "Check STYLES compared to the current style options." (let ((files (TeX-style-list))) (while (and styles (not (TeX-member (car (car styles)) files 'string-match))) (setq styles (cdr styles)))) (if styles (nth 1 (car styles)) "")) (defun TeX-output-extension () "Get the extension of the current TeX output file." (if (listp TeX-output-extension) (car TeX-output-extension) (or (TeX-process-get-variable (TeX-active-master) 'TeX-output-extension TeX-output-extension) TeX-output-extension))) (defun TeX-view-mouse (event) "Start `TeX-view' at mouse position." (interactive "e") (save-excursion (set-buffer (window-buffer (posn-window (event-start event)))) (goto-char (posn-point (event-start event))) (TeX-view))) (defun TeX-view () "Start a viewer without confirmation. The viewer is started either on region or master file, depending on the last command issued." (interactive) (let ((output-file (TeX-active-master (TeX-output-extension)))) (if (file-exists-p output-file) (TeX-command "View" 'TeX-active-master 0) (message "Output file %S does not exist." output-file)))) (defun TeX-output-style-check (styles) "Check STYLES compared to the current view output file extension and the current style options." (let ((ext (TeX-output-extension)) (files (TeX-style-list))) (while (and styles (or (not (string-match (car (car styles)) ext)) (let ((style (nth 1 (car styles)))) (cond ((listp style) (while (and style (TeX-member (car style) files 'string-match)) (setq style (cdr style))) style) ((not (TeX-member style files 'string-match))))))) (setq styles (cdr styles))) (if styles (nth 2 (car styles)) "%v"))) ;;; Command Hooks (defvar TeX-after-start-process-function nil "Hooks to run after starting an asynchronous process. Used by Japanese TeX to set the coding system.") (defcustom TeX-show-compilation nil "*If non-nil, show output of TeX compilation in other window." :group 'TeX-command :type 'boolean) (defun TeX-run-command (name command file) "Create a process for NAME using COMMAND to process FILE. Return the new process." (let ((default TeX-command-default) (buffer (TeX-process-buffer-name file)) (dir (TeX-master-directory)) (command-buff (current-buffer))) (TeX-process-check file) ; Check that no process is running (setq-default TeX-command-buffer command-buff) (get-buffer-create buffer) (set-buffer buffer) (buffer-disable-undo) (erase-buffer) (set (make-local-variable 'line-number-display-limit) 0) (setq TeX-output-extension nil) (set (make-local-variable 'TeX-command-buffer) command-buff) (if dir (cd dir)) (insert "Running `" name "' on `" file "' with ``" command "''\n") (setq mode-name name) (if TeX-show-compilation (display-buffer buffer) (message "Type `%s' to display results of compilation." (substitute-command-keys "\\\\[TeX-recenter-output-buffer]"))) (setq TeX-parse-function 'TeX-parse-command) (setq TeX-command-default default) (setq TeX-sentinel-function (lambda (process name) (message (concat name ": done.")))) (if TeX-process-asynchronous (let ((process (start-process name buffer TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (TeX-command-mode-line process) (set-process-filter process 'TeX-command-filter) (set-process-sentinel process 'TeX-command-sentinel) (set-marker (process-mark process) (point-max)) (setq compilation-in-progress (cons process compilation-in-progress)) process) (setq mode-line-process ": run") (set-buffer-modified-p (buffer-modified-p)) (sit-for 0) ; redisplay (call-process TeX-shell nil buffer nil TeX-shell-command-option command)))) (defun TeX-run-set-command (name command) "Remember TeX command to use to NAME and set corresponding output extension." (setq TeX-command-default name TeX-output-extension (if TeX-PDF-mode "pdf" "dvi")) (let ((case-fold-search t) (lst TeX-command-output-list)) (while lst (if (string-match (car (car lst)) command) (setq TeX-output-extension (car (cdr (car lst))) lst nil) (setq lst (cdr lst)))))) (defun TeX-run-format (name command file) "Create a process for NAME using COMMAND to format FILE with TeX." (TeX-run-set-command name command) (let ((buffer (TeX-process-buffer-name file)) (process (TeX-run-command name command file))) ;; Hook to TeX debuger. (save-excursion (set-buffer buffer) (TeX-parse-reset) (setq TeX-parse-function 'TeX-parse-TeX) (setq TeX-sentinel-function 'TeX-TeX-sentinel) (if TeX-process-asynchronous (progn ;; Updating the mode line. (setq TeX-current-page "[0]") (TeX-format-mode-line process) (set-process-filter process 'TeX-format-filter))) process))) (defvar TeX-error-report-switches nil "Reports presence of errors after `TeX-run-TeX'. To test whether the current buffer has an compile error from last run of `TeX-run-TeX', use (plist-get TeX-error-report-switches (intern (TeX-master-file)))") (defun TeX-run-TeX (name command file) "Create a process for NAME using COMMAND to format FILE with TeX." ;; Save information in TeX-error-report-switches ;; Initialize error to nil (no error) for current master. ;; Presence of error is reported inside `TeX-TeX-sentinel-check' (let ((current-master (TeX-master-file))) ;; the current master file is saved because error routines are ;; parsed in other buffers; (setq TeX-error-report-switches (plist-put TeX-error-report-switches 'TeX-current-master current-master)) ;; reset error to nil (no error) (setq TeX-error-report-switches (plist-put TeX-error-report-switches (intern current-master) nil))) ;; can we assume that TeX-sentinel-function will not be changed ;; during (TeX-run-format ..)? --pg ;; rather use let* ? --pg (if TeX-interactive-mode (TeX-run-interactive name command file) (let ((sentinel-function TeX-sentinel-default-function)) (let ((process (TeX-run-format name command file))) (setq TeX-sentinel-function sentinel-function) (if TeX-process-asynchronous process (TeX-synchronous-sentinel name file process)))))) ;; backward compatibilty (defalias 'TeX-run-LaTeX 'TeX-run-TeX) (defun TeX-run-BibTeX (name command file) "Create a process for NAME using COMMAND to format FILE with BibTeX." (let ((process (TeX-run-command name command file))) (setq TeX-sentinel-function 'TeX-BibTeX-sentinel) (if TeX-process-asynchronous process (TeX-synchronous-sentinel name file process)))) (defun TeX-run-Biber (name command file) "Create a process for NAME using COMMAND to format FILE with Biber." (let ((process (TeX-run-command name command file))) (setq TeX-sentinel-function 'TeX-Biber-sentinel) (if TeX-process-asynchronous process (TeX-synchronous-sentinel name file process)))) (defun TeX-run-compile (name command file) "Ignore first and third argument, start compile with second argument." (compile command)) (defun TeX-run-shell (name command file) "Ignore first and third argument, start shell-command with second argument." (let ((default-directory (TeX-master-directory))) (shell-command command) (if (eq system-type 'ms-dos) (redraw-display)))) (defun TeX-run-discard (name command file) "Start COMMAND as process, discarding its output. NAME and FILE are ignored." (let ((default-directory (TeX-master-directory))) (call-process TeX-shell nil 0 nil TeX-shell-command-option command))) (defun TeX-run-discard-foreground (name command file) "Call process with second argument in the foreground, discarding its output. With support for MS-DOS, especially when dviout is used with PC-9801 series." (if (and (boundp 'dos-machine-type) (eq dos-machine-type 'pc98)) ;if PC-9801 (send-string-to-terminal "\e[2J")) ; clear screen (call-process TeX-shell (if (eq system-type 'ms-dos) "con") nil nil TeX-shell-command-option command) (if (eq system-type 'ms-dos) (redraw-display))) (defalias 'TeX-run-dviout 'TeX-run-discard-foreground) (defun TeX-run-background (name command file) "Start process with second argument, show output when and if it arrives." (let ((dir (TeX-master-directory))) (set-buffer (get-buffer-create "*TeX background*")) (if dir (cd dir)) (erase-buffer) (let ((process (start-process (concat name " background") nil TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (set-process-filter process 'TeX-background-filter) (process-kill-without-query process)))) (defun TeX-run-silent (name command file) "Start process with second argument." (let ((dir (TeX-master-directory))) (set-buffer (get-buffer-create "*TeX silent*")) (if dir (cd dir)) (erase-buffer) (let ((process (start-process (concat name " silent") nil TeX-shell TeX-shell-command-option command))) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (process-kill-without-query process)))) (defun TeX-run-interactive (name command file) "Run TeX interactively. Run command in a buffer (in comint-shell-mode) so that it accepts user interaction. If you return to the file buffer after the TeX run, Error parsing on \\[next-error] should work with a bit of luck." (TeX-run-set-command name command) (require 'comint) (let ((default TeX-command-default) (buffer (TeX-process-buffer-name file)) (process nil) (dir (TeX-master-directory)) (command-buff (current-buffer)) (sentinel-function TeX-sentinel-default-function)) ; inherit from major mode (TeX-process-check file) ; Check that no process is running (setq-default TeX-command-buffer command-buff) (with-output-to-temp-buffer buffer) (set-buffer buffer) (set (make-local-variable 'TeX-command-buffer) command-buff) (setq buffer-read-only nil) (if dir (cd dir)) (insert "Running `" name "' on `" file "' with ``" command "''\n") (comint-exec buffer name TeX-shell nil (list TeX-shell-command-option command)) (comint-mode) (add-hook 'comint-output-filter-functions 'TeX-interactive-goto-prompt) (setq mode-name name) (setq TeX-command-default default) (setq process (get-buffer-process buffer)) (if TeX-after-start-process-function (funcall TeX-after-start-process-function process)) (TeX-command-mode-line process) (set-process-sentinel process 'TeX-command-sentinel) (set-marker (process-mark process) (point-max)) (setq compilation-in-progress (cons process compilation-in-progress)) (TeX-parse-reset) (setq TeX-parse-function 'TeX-parse-TeX) ;; use the sentinel-function that the major mode sets, not the LaTeX one (setq TeX-sentinel-function sentinel-function))) (defun TeX-run-function (name command file) "Execute Lisp function or function call given as the string COMMAND. Parameters NAME and FILE are ignored." (let ((fun (car (read-from-string command)))) (if (functionp fun) (funcall fun) (eval fun)))) (defun TeX-run-discard-or-function (name command file) "Start COMMAND as process or execute it as a Lisp function. If run as a process, the output is discarded. COMMAND is expected to be a string. NAME and FILE are ignored." (if (functionp (car (read-from-string command))) (TeX-run-function name command file) (TeX-run-discard name command file))) (defun TeX-run-ispell-on-document (command ignored name) "Run ispell on all open files belonging to the current document. This function is *obsolete* and only here for compatibility reasons. Use `TeX-run-function' instead." (interactive) (TeX-ispell-document "")) ;;; Command Sentinels (defun TeX-synchronous-sentinel (name file result) "Process TeX command output buffer after the process dies." (let ((buffer (TeX-process-buffer (file-name-nondirectory file)))) (save-excursion (set-buffer buffer) ;; Append post-mortem information to the buffer (goto-char (point-max)) (insert "\n" mode-name (if (and result (zerop result)) " finished" " exited") " at " (substring (current-time-string) 0 -5)) (setq mode-line-process ": exit") ;; Do command specific actions. (setq TeX-command-next TeX-command-Show) (goto-char (point-min)) (apply TeX-sentinel-function nil name nil) ;; Force mode line redisplay soon (set-buffer-modified-p (buffer-modified-p))))) (defun TeX-command-sentinel (process msg) "Process TeX command output buffer after the process dies." ;; Set `TeX-transient-master' here because `preview-parse-messages' ;; may open files and thereby trigger master file questions which we ;; don't want and need because we already know the master. Use ;; `TeX-master-file' instead of `TeX-active-master' to determine the ;; master because the region file should never be the master. (let* ((TeX-transient-master (TeX-master-file)) (buffer (process-buffer process)) (name (process-name process))) (cond ((null (buffer-name buffer)) ; buffer killed (set-process-buffer process nil) (set-process-sentinel process nil)) ((memq (process-status process) '(signal exit)) (save-excursion (set-buffer buffer) ;; Append post-mortem information to the buffer (goto-char (point-max)) (insert-before-markers "\n" mode-name " " msg) (forward-char -1) (insert " at " (substring (current-time-string) 0 -5)) (forward-char 1) ;; Do command specific actions. (TeX-command-mode-line process) (setq TeX-command-next TeX-command-Show) (goto-char (point-min)) (apply TeX-sentinel-function process name nil) ;; If buffer and mode line will show that the process ;; is dead, we can delete it now. Otherwise it ;; will stay around until M-x list-processes. (delete-process process) ;; Force mode line redisplay soon (set-buffer-modified-p (buffer-modified-p)))))) (setq compilation-in-progress (delq process compilation-in-progress))) (defvar TeX-sentinel-function (lambda (process name)) "Hook to cleanup TeX command buffer after temination of PROCESS. NAME is the name of the process.") (make-variable-buffer-local 'TeX-sentinel-function) (defvar TeX-sentinel-default-function (lambda (process name)) "Default for `TeX-sentinel-function'. To be set in major mode. Hook to cleanup TeX command buffer after temination of PROCESS. NAME is the name of the process.") (make-variable-buffer-local 'TeX-sentinel-default-function) (defun TeX-TeX-sentinel (process name) "Cleanup TeX output buffer after running TeX." (if (TeX-TeX-sentinel-check process name) () (message (concat name ": formatted " (TeX-current-pages))) (setq TeX-command-next TeX-command-Show))) (defun TeX-current-pages () "Return string indicating the number of pages formatted." (cond ((null TeX-current-page) "some pages") ((string-match "[^0-9]1[^0-9]" TeX-current-page) (concat TeX-current-page " page")) (t (concat TeX-current-page " pages")))) (defun TeX-TeX-sentinel-check (process name) "Cleanup TeX output buffer after running TeX. Return nil ifs no errors were found." (save-excursion (goto-char (point-max)) (if (re-search-backward "^Output written on \\(.*?\\) (\\([0-9]+\\) page" nil t) (let ((output-file (TeX-match-buffer 1))) (setq TeX-current-page (concat "{" (TeX-match-buffer 2) "}")) ;; Shave off quotation marks if present. (when (string-match "\\`\"\\(.*\\)\"\\'" output-file) (setq output-file (match-string 1 output-file))) (setq TeX-output-extension (if (string-match "\\.\\([^.]*\\)$" output-file) (match-string 1 output-file) "dvi"))))) (if process (TeX-format-mode-line process)) (if (re-search-forward "^\\(!\\|.*:[0-9]+:\\) " nil t) (progn (message "%s errors in `%s'. Use %s to display." name (buffer-name) (substitute-command-keys "\\\\[TeX-next-error]")) (setq TeX-command-next TeX-command-default) ;; error reported to TeX-error-report-switches (setq TeX-error-report-switches (plist-put TeX-error-report-switches (intern (plist-get TeX-error-report-switches 'TeX-current-master)) t)) t) (setq TeX-command-next TeX-command-Show) nil)) (defun TeX-LaTeX-sentinel-has-warnings () "Return non-nil, if the output buffer contains warnings. Warnings can be indicated by LaTeX or packages." (save-excursion (goto-char (point-min)) (re-search-forward "^\\(LaTeX [A-Za-z]*\\|Package [A-Za-z]+ \\)Warning:" nil t))) (defun TeX-LaTeX-sentinel-has-bad-boxes () "Return non-nil, if LaTeX output indicates overfull or underfull boxes." (save-excursion (goto-char (point-min)) (re-search-forward "^\\(Ov\\|Und\\)erfull \\\\" nil t))) ;; should go into latex.el? --pg (defun TeX-LaTeX-sentinel (process name) "Cleanup TeX output buffer after running LaTeX." (cond ((TeX-TeX-sentinel-check process name)) ((and (save-excursion (re-search-forward "^Package biblatex Warning: Please (re)run Biber on the file" nil t)) (with-current-buffer TeX-command-buffer (and (LaTeX-bibliography-list) (TeX-check-files (TeX-master-file "bbl") (TeX-style-list) (append TeX-file-extensions BibTeX-file-extensions TeX-Biber-file-extensions))))) (message "%s%s" "You should run Biber to get citations right, " (TeX-current-pages)) (setq TeX-command-next (with-current-buffer TeX-command-buffer TeX-command-Biber))) ((and (save-excursion (re-search-forward "^\\(?:LaTeX\\|Package natbib\\) Warning: Citation" nil t)) (with-current-buffer TeX-command-buffer (and (LaTeX-bibliography-list) (TeX-check-files (TeX-master-file "bbl") (TeX-style-list) (append TeX-file-extensions BibTeX-file-extensions TeX-Biber-file-extensions))))) (message "%s%s" "You should run BibTeX to get citations right, " (TeX-current-pages)) (setq TeX-command-next (with-current-buffer TeX-command-buffer TeX-command-BibTeX))) ((re-search-forward "Package biblatex Warning: Please rerun LaTeX" nil t) (message "%s%s" "You should run LaTeX again, " (TeX-current-pages)) (setq TeX-command-next TeX-command-default)) ((re-search-forward "^(biblatex)\\W+Page breaks have changed" nil t) (message "%s%s" "You should run LaTeX again - page breaks have changed, " (TeX-current-pages)) (setq TeX-command-next TeX-command-default)) ((re-search-forward "^\\(?:LaTeX Warning: Label(s)\\|\ Package natbib Warning: Citation(s)\\)" nil t) (message "%s%s" "You should run LaTeX again to get references right, " (TeX-current-pages)) (setq TeX-command-next TeX-command-default)) ((re-search-forward "^LaTeX Warning: Reference" nil t) (message "%s%s%s" name ": there were unresolved references, " (TeX-current-pages)) (setq TeX-command-next TeX-command-Show)) ((re-search-forward "^\\(?:LaTeX Warning: Citation\\|\ Package natbib Warning:.*undefined citations\\)" nil t) (message "%s%s%s" name ": there were unresolved citations, " (TeX-current-pages)) (setq TeX-command-next TeX-command-Show)) ((re-search-forward "Package longtable Warning: Table widths have \ changed\\. Rerun LaTeX\\." nil t) (message "%s" "You should run LaTeX again to get table formatting right") (setq TeX-command-next TeX-command-default)) ((re-search-forward "^\\(\\*\\* \\)?J?I?p?\\(La\\|Sli\\)TeX\\(2e\\)? \ \\(Version\\|ver\\.\\|<[0-9/]*>\\)" nil t) (let* ((warnings (and TeX-debug-warnings (TeX-LaTeX-sentinel-has-warnings))) (bad-boxes (and TeX-debug-bad-boxes (TeX-LaTeX-sentinel-has-bad-boxes))) (add-info (when (or warnings bad-boxes) (concat " (with " (when warnings "warnings") (when (and warnings bad-boxes) " and ") (when bad-boxes "bad boxes") ")")))) (message "%s" (concat name ": successfully formatted " (TeX-current-pages) add-info))) (setq TeX-command-next TeX-command-Show)) (t (message "%s%s%s" name ": problems after " (TeX-current-pages)) (setq TeX-command-next TeX-command-default)))) ;; should go into latex.el? --pg (defun TeX-BibTeX-sentinel (process name) "Cleanup TeX output buffer after running BibTeX." (goto-char (point-max)) (cond ;; Check whether BibTeX reports any warnings or errors. ((re-search-backward (concat "^(There \\(?:was\\|were\\) \\([0-9]+\\) " "\\(warnings?\\|error messages?\\))") nil t) ;; Tell the user their number so that she sees whether the ;; situation is getting better or worse. (message (concat "BibTeX finished with %s %s. " "Type `%s' to display output.") (match-string 1) (match-string 2) (substitute-command-keys "\\\\[TeX-recenter-output-buffer]"))) (t (message (concat "BibTeX finished successfully. " "Run LaTeX again to get citations right.")) (setq TeX-command-next TeX-command-default)))) (defun TeX-Biber-sentinel (process name) "Cleanup TeX output buffer after running Biber." (goto-char (point-max)) (cond ((re-search-backward (concat "^INFO - \\(WARNINGS\\|ERRORS\\): \\([0-9]+\\)") nil t) (message (concat "Biber finished with %s %s. " "Type `%s' to display output.") (match-string 2) (downcase (match-string 1)) (substitute-command-keys "\\\\[TeX-recenter-output-buffer]")) (setq TeX-command-next TeX-command-default)) ((re-search-backward (concat "^FATAL") nil t) (message (concat "Biber had a fatal error and did not finish! " "Type `%s' to display output.") (substitute-command-keys "\\\\[TeX-recenter-output-buffer]")) (setq TeX-command-next TeX-command-Biber)) (t (message (concat "Biber finished successfully. " "Run LaTeX again to get citations right.")) (setq TeX-command-next TeX-command-default)))) ;;; Process Control ;; This variable is chared with `compile.el'. (defvar compilation-in-progress nil "List of compilation processes now running.") (or (assq 'compilation-in-progress minor-mode-alist) (setq minor-mode-alist (cons '(compilation-in-progress " Compiling") minor-mode-alist))) (defun TeX-process-get-variable (name symbol &optional default) "Return the value in the process buffer for NAME of SYMBOL. Return DEFAULT if the process buffer does not exist or SYMBOL is not defined." (let ((buffer (TeX-process-buffer name))) (if (and buffer (local-variable-p symbol buffer)) (save-excursion (set-buffer buffer) (symbol-value symbol)) default))) (defun TeX-process-set-variable (name symbol value) "Set the variable SYMBOL in the process buffer to VALUE. Return nil iff no process buffer exist." (let ((buffer (TeX-process-buffer name))) (if buffer (save-excursion (set-buffer buffer) (set symbol value) t) nil))) (defun TeX-process-check (name) "Check if a process for the TeX document NAME already exist. If so, give the user the choice of aborting the process or the current command." (let (process) (while (and (setq process (TeX-process name)) (eq (process-status process) 'run)) (cond ((yes-or-no-p (concat "Process `" (process-name process) "' for document `" name "' running, kill it? ")) (delete-process process)) ((eq (process-status process) 'run) (error "Cannot have two processes for the same document")))))) (defun TeX-process-buffer-name (name) "Return name of AUCTeX buffer associated with the document NAME." (concat "*" (abbreviate-file-name (expand-file-name name)) " output*")) (defun TeX-process-buffer (name) "Return the AUCTeX buffer associated with the document NAME." (get-buffer (TeX-process-buffer-name name))) (defun TeX-process (name) "Return AUCTeX process associated with the document NAME." (and TeX-process-asynchronous (get-buffer-process (TeX-process-buffer name)))) ;;; Process Filters (defun TeX-command-mode-line (process) "Format the mode line for a buffer containing output from PROCESS." (setq mode-line-process (concat ": " (symbol-name (process-status process)))) (set-buffer-modified-p (buffer-modified-p))) (defun TeX-command-filter (process string) "Filter to process normal output." (with-current-buffer (process-buffer process) (save-excursion (goto-char (process-mark process)) (insert-before-markers string) (set-marker (process-mark process) (point))))) (defvar TeX-current-page nil "The page number currently being formatted, enclosed in brackets.") (make-variable-buffer-local 'TeX-current-page) (defun TeX-format-mode-line (process) "Format the mode line for a buffer containing TeX output from PROCESS." (setq mode-line-process (concat " " TeX-current-page ": " (symbol-name (process-status process)))) (set-buffer-modified-p (buffer-modified-p))) (defun TeX-format-filter (process string) "Filter to process TeX output." (with-current-buffer (process-buffer process) (let (str pos end (pt (marker-position (process-mark process)))) (save-excursion (goto-char pt) (insert-before-markers string) (set-marker (process-mark process) (point)) ;; Remove line breaks at column 79 (while (> (point) pt) (end-of-line 0) (when (and (= (- (point) (line-beginning-position)) 79) ;; Heuristic: Don't delete the linebreak if the ;; next line is empty or starts with an opening ;; parenthesis or if point is located after a period. (not (memq (char-after (1+ (point))) '(?\n ?\())) (not (eq (char-before) ?.))) (delete-char 1))) (goto-char (marker-position (process-mark process))) ;; Determine current page (while (and pt (skip-chars-backward "^]" pt) (> (point) pt)) (setq end (point)) (backward-char) (skip-chars-backward "-0-9\n." (max (point-min) (- pt 128))) (when (and (eq ?\[ (char-before)) (not (eq ?\] (char-after))) (progn (setq str (buffer-substring (1- (point)) end) pos nil) (while (setq pos (string-match "\n" str pos)) (setq str (replace-match "" t t str))) (string-match "\\`\\[-?[0-9]+\\(\\.-?[0-9]+\\)\\{0,9\\}\\]\\'" str))) (setq TeX-current-page str pt nil) (TeX-format-mode-line process))))))) (defvar TeX-parse-function nil "Function to call to parse content of TeX output buffer.") (make-variable-buffer-local 'TeX-parse-function) (defun TeX-background-filter (process string) "Filter to process background output." (let ((old-window (selected-window)) (pop-up-windows t)) (TeX-pop-to-buffer "*TeX background*" nil t) (goto-char (point-max)) (insert string) (select-window old-window))) ;; Copy and adaption of `comint-postoutput-scroll-to-bottom' from CVS ;; Emacs of 2005-04-24. (defun TeX-interactive-goto-prompt (string) "Move point to prompt of an interactive TeX run." (let* ((selected (selected-window)) (current (current-buffer)) (process (get-buffer-process current))) (unwind-protect (when process (walk-windows (lambda (window) (when (eq (window-buffer window) current) (select-window window) (when (and (< (point) (process-mark process)) (string-match "^\\? $" string)) (goto-char (process-mark process))) (select-window selected))) nil t)) (set-buffer current)))) ;;; Active Process (defvar TeX-current-process-region-p nil "This variable is set to t iff the last TeX command is on a region.") (defun TeX-active-process () "Return the active process for the current buffer." (TeX-process (TeX-active-master))) (defun TeX-active-buffer () "Return the buffer of the active process for this buffer." (and TeX-command-buffer (TeX-process-buffer (with-current-buffer TeX-command-buffer (TeX-active-master))))) (defun TeX-active-master (&optional extension nondirectory) "The master file currently being compiled. If optional argument EXTENSION is non-nil, add that file extension to the name. Special value t means use `TeX-default-extension'. If optional second argument NONDIRECTORY is non-nil, do not include the directory." (if TeX-current-process-region-p (TeX-region-file extension nondirectory) (TeX-master-file extension nondirectory))) (defvar TeX-command-buffer nil "The buffer from where the last TeX command was issued.") ;;; Region File (defcustom TeX-region-extra "" "*String to insert in the region file between the header and the text." :group 'TeX-command :type 'string) ;; This was "{\\makeatletter\\gdef\\AucTeX@cite#1[#2]#3{[#3#1#2]}\ ;; \\gdef\\cite{\\@ifnextchar[{\\AucTeX@cite{, }}\ ;; {\\AucTeX@cite{}[]}}}\n" ;; However, that string is inappropriate for plain TeX and ConTeXt. ;; This needs reconsideration. (defvar TeX-region-hook nil "List of hooks to run before the region file is saved. The hooks are run in the region buffer, you may use the variable `master-buffer' to access the buffer of the master file and `orig-buffer' to access the buffer where \\[TeX-command-region] or \\[TeX-command-buffer] is invoked from.") (defun TeX-quote-filename (file) "Convert file name into a form acceptable to TeX." (let (pos) (while (setq pos (string-match "\\\\" file pos)) (setq file (replace-match "/" t t file 0) pos (1+ pos))) (while (setq pos (string-match "[~#]" file pos)) (setq file (replace-match "\\\\string\\&" t nil file 0) pos (+ pos 8)))) file) (defun TeX-region-create (file region original offset) "Create a new file named FILE with the string REGION. The region is taken from ORIGINAL starting at line OFFSET. The current buffer and master file is searched, in order to ensure that the TeX header and trailer information is also included. The OFFSET is used to provide the debugger with information about the original file." (let* (;; We shift buffer a lot, so we must keep track of the buffer ;; local variables. (header-end TeX-header-end) (trailer-start TeX-trailer-start) ;; We seach for header and trailer in the master file. (orig-buffer (current-buffer)) (master-name (TeX-master-file TeX-default-extension)) (master-buffer (find-file-noselect master-name)) ;; Attempt to disable font lock. (font-lock-defaults-alist nil) (font-lock-defaults nil) (font-lock-maximum-size 0) (font-lock-mode-hook nil) (font-lock-auto-fontify nil) (font-lock-mode-enable-list nil) ;; And insert them into the FILE buffer. (file-buffer (let ((TeX-transient-master t)) (find-file-noselect file))) ;; But remember original content. original-content ;; We search for the header from the master file, if it is ;; not present in the region. (header (if (string-match header-end region) "" (save-excursion (save-restriction (set-buffer master-buffer) (save-excursion (save-restriction (widen) (goto-char (point-min)) ;; NOTE: We use the local value of ;; TeX-header-end from the master file. (if (not (re-search-forward TeX-header-end nil t)) "" (re-search-forward "[\r\n]" nil t) (buffer-substring (point-min) (point))))))))) ;; We search for the trailer from the master file, if it is ;; not present in the region. (trailer-offset 0) (trailer (if (string-match trailer-start region) "" (save-excursion (save-restriction (set-buffer master-buffer) (save-excursion (save-restriction (widen) (goto-char (point-max)) ;; NOTE: We use the local value of ;; TeX-trailer-start from the master file. (if (not (re-search-backward TeX-trailer-start nil t)) "" ;;(beginning-of-line 1) (re-search-backward "[\r\n]" nil t) (setq trailer-offset (TeX-current-offset)) (buffer-substring (point) (point-max)))))))))) ;; file name should be relative to master (setq original (TeX-quote-filename (file-relative-name original (TeX-master-directory))) master-name (TeX-quote-filename master-name)) (save-excursion (set-buffer file-buffer) (setq buffer-undo-list t) (setq original-content (buffer-string)) (erase-buffer) (when (boundp 'buffer-file-coding-system) (setq buffer-file-coding-system (with-current-buffer master-buffer buffer-file-coding-system))) (insert "\\message{ !name(" master-name ")}" header TeX-region-extra "\n\\message{ !name(" original ") !offset(") (insert (int-to-string (- offset (1+ (TeX-current-offset)))) ") }\n" region "\n\\message{ !name(" master-name ") !offset(") (insert (int-to-string (- trailer-offset (1+ (TeX-current-offset)))) ") }\n" trailer) (run-hooks 'TeX-region-hook) (if (string-equal (buffer-string) original-content) (set-buffer-modified-p nil) (save-buffer 0))))) (defun TeX-region-file (&optional extension nondirectory) "Return TeX-region file name with EXTENSION. If optional second argument NONDIRECTORY is non-nil, do not include the directory." (concat (if nondirectory "" (TeX-master-directory)) (cond ((eq extension t) (concat TeX-region "." TeX-default-extension)) (extension (concat TeX-region "." extension)) (t TeX-region)))) (defcustom TeX-region "_region_" "*Base name of temporary file for `TeX-command-region' and `TeX-command-buffer'." :group 'TeX-command :type 'string) ;;; Parsing ;;; - Global Parser Variables (defvar TeX-error-point nil "How far we have parsed until now.") (make-variable-buffer-local 'TeX-error-point) (defvar TeX-error-file nil "Stack of files in which errors have occured.") (make-variable-buffer-local 'TeX-error-file) (defvar TeX-error-offset nil "Add this to any line numbers from TeX. Stack like `TeX-error-file'.") (make-variable-buffer-local 'TeX-error-offset) (defun TeX-parse-reset () "Reset all variables used for parsing TeX output." (setq TeX-error-point (point-min)) (setq TeX-error-offset nil) (setq TeX-error-file nil)) ;;; - Parsers Hooks (defun TeX-parse-command (reparse) "We can't parse anything but TeX." (error "I cannot parse %s output, sorry" (if (TeX-active-process) (process-name (TeX-active-process)) "this"))) (defun TeX-parse-TeX (reparse) "Find the next error produced by running TeX. With \\[universal-argument] prefix, start from the beginning of the errors. If the file occurs in an included file, the file is loaded (if not already in an Emacs buffer) and the cursor is placed at the error." (let ((old-buffer (current-buffer)) (default-major-mode major-mode)) (with-current-buffer (TeX-active-buffer) (if reparse (TeX-parse-reset)) (goto-char TeX-error-point) (TeX-parse-error old-buffer)))) ;;; - Parsing (La)TeX (defvar TeX-translate-location-hook nil "List of functions to be called before showing an error or warning. You might want to examine and modify the free variables `file', `offset', `line', `string', `error', and `context' from this hook.") (defun TeX-parse-error (old) "Goto next error. Pop to OLD buffer if no more errors are found." (let ((regexp (concat ;; TeX error "^\\(!\\|\\(.*?\\):[0-9]+:\\) \\|" ;; New file "(\\(\"[^\"]*?\"\\|/*\ \\(?:\\.+[^()\r\n{} \\/]*\\|[^()\r\n{} .\\/]+\ \\(?: [^()\r\n{} .\\/]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)\ \\(?:[\\/]+\\(?:\\.+[^()\r\n{} \\/]*\\|[^()\r\n{} .\\/]+\ \\(?: [^()\r\n{} .\\/]+\\)*\\(?:\\.[-0-9a-zA-Z_.]*\\)?\\)?\\)*\\)\ )*\\(?: \\|\r?$\\)\\|" ;; End of file "\\()\\))*\\|" ;; Hook to change line numbers " !\\(?:offset(\\([---0-9]+\\))\\|" ;; Hook to change file name "name(\\([^)]+\\))\\)\\|" ;; LaTeX bad box "^\\(\\(?:Overfull\\|Underfull\\|Tight\\|Loose\\)\ \\\\.*?[0-9]+--[0-9]+\\)\\|" ;; LaTeX warning "^\\(LaTeX [A-Za-z]*\\|Package [A-Za-z]+ \\)Warning:.*"))) (while (cond ((null (re-search-forward regexp nil t)) ;; No more errors. (message "No more errors.") (beep) (TeX-pop-to-buffer old) nil) ;; TeX error ((match-beginning 1) (when (match-beginning 2) (unless TeX-error-file (push nil TeX-error-file) (push nil TeX-error-offset)) (unless (car TeX-error-offset) (rplaca TeX-error-file (TeX-match-buffer 2)))) (if (looking-at "Preview ") t (TeX-error) nil)) ;; LaTeX bad box ((match-beginning 7) (if TeX-debug-bad-boxes (progn (TeX-warning (TeX-match-buffer 7)) nil) (re-search-forward "\r?\n\ \\(?:.\\{79\\}\r?\n\ \\)*.*\r?$") t)) ;; LaTeX warning ((match-beginning 8) (if TeX-debug-warnings (progn (TeX-warning (TeX-match-buffer 8)) nil) t)) ;; New file -- Push on stack ((match-beginning 3) (let ((file (TeX-match-buffer 3)) (end (match-end 3))) ;; Strip quotation marks and remove newlines if necessary (when (or (eq (string-to-char file) ?\") (string-match "\n" file)) (setq file (mapconcat 'identity (split-string file "[\"\n]+") ""))) (push file TeX-error-file) (push nil TeX-error-offset) (goto-char end)) t) ;; End of file -- Pop from stack ((match-beginning 4) (when (> (length TeX-error-file) 0) (pop TeX-error-file) (pop TeX-error-offset)) (goto-char (match-end 4)) t) ;; Hook to change line numbers ((match-beginning 5) (setq TeX-error-offset (list (string-to-number (TeX-match-buffer 5)))) t) ;; Hook to change file name ((match-beginning 6) (setq TeX-error-file (list (TeX-match-buffer 6))) t))))) (defun TeX-error () "Display an error." (let* (;; We need the error message to show the user. (error (progn (re-search-forward "\\(.*\\)") (TeX-match-buffer 1))) ;; And the context for the help window. (context-start (point)) context-available ;; And the line number to position the cursor. (line (cond ;; regular style ((re-search-forward "l\\.\\([0-9]+\\)" nil t) (setq context-available t) (string-to-number (TeX-match-buffer 1))) ;; file:line:error style ((save-excursion (re-search-backward ":\\([0-9]+\\): " (line-beginning-position) t)) (string-to-number (TeX-match-buffer 1))) ;; nothing found (t 1))) ;; And a string of the context to search for. (string (progn (beginning-of-line) (re-search-forward " \\(\\([^ \t]*$\\)\\|\\($\\)\\)") (TeX-match-buffer 1))) ;; And we have now found to the end of the context. (context (if context-available (buffer-substring context-start (progn (forward-line 1) (end-of-line) (point))) ;; There is no real context available, so we ;; simply show the line with the error message. (buffer-substring (1- (line-beginning-position)) context-start))) ;; We may use these in another buffer. (offset (or (car TeX-error-offset) 0)) (file (car TeX-error-file))) ;; Remember where we was. (setq TeX-error-point (point)) ;; Find the error. (if (null file) (error "Error occured after last TeX file closed")) (let ((runbuf (current-buffer)) (master (with-current-buffer TeX-command-buffer (expand-file-name (TeX-master-file)))) (command-buffer TeX-command-buffer) error-file-buffer) (run-hooks 'TeX-translate-location-hook) (setq error-file-buffer (find-file file)) ;; Set the value of `TeX-command-buffer' in the next file with an ;; error to be displayed to the value it has in the current buffer. (with-current-buffer error-file-buffer (set (make-local-variable 'TeX-command-buffer) command-buffer)) (goto-line (+ offset line)) (if (not (string= string " ")) (search-forward string nil t)) ;; Explain the error. (cond ((eq TeX-display-help 'expert) (TeX-pop-to-buffer runbuf nil t) (goto-char TeX-error-point) (TeX-pop-to-buffer error-file-buffer nil t)) (TeX-display-help (TeX-help-error error context runbuf)) (t (message (concat "! " error))))))) (defun TeX-warning (string) "Display a warning for STRING." (let* ((error (concat "** " string)) ;; bad-box is nil if this is a "LaTeX Warning" (bad-box (string-match "\\\\[vh]box.*[0-9]*--[0-9]*" string)) ;; line-string: match 1 is beginning line, match 2 is end line (line-string (if bad-box " \\([0-9]*\\)--\\([0-9]*\\)" "on input line \\([0-9]*\\)\\.")) ;; word-string: match 1 is the word (word-string (if bad-box "[][\\W() ---]\\(\\w+\\)[][\\W() ---]*$" "`\\(\\w+\\)'")) ;; Get error-line (warning) (line (when (re-search-backward line-string nil t) (string-to-number (TeX-match-buffer 1)))) (line-end (if bad-box (string-to-number (TeX-match-buffer 2)) line)) ;; Find the context (context-start (progn (if bad-box (end-of-line) (beginning-of-line)) (point))) (context (progn (forward-line 1) (end-of-line) (while (equal (current-column) 79) (forward-line 1) (end-of-line)) (buffer-substring context-start (point)))) ;; This is where we want to be. (error-point (point)) ;; Now find the error word. (string (when (re-search-backward word-string context-start t) (TeX-match-buffer 1))) ;; We might use these in another file. (offset (or (car TeX-error-offset) 0)) (file (car TeX-error-file))) ;; This is where we start next time. (goto-char error-point) (setq TeX-error-point (point)) (unless file (error "Could not determine file for warning")) ;; Go back to TeX-buffer (let ((runbuf (current-buffer)) (master (with-current-buffer TeX-command-buffer (expand-file-name (TeX-master-file)))) (command-buffer TeX-command-buffer) error-file-buffer) (run-hooks 'TeX-translate-location-hook) (setq error-file-buffer (find-file file)) ;; Set the value of `TeX-command-buffer' in the next file with an ;; error to be displayed to the value it has in the current buffer. (with-current-buffer error-file-buffer (set (make-local-variable 'TeX-command-buffer) command-buffer)) ;; Find line and string (when line (goto-line (+ offset line)) (beginning-of-line 0) (let ((start (point))) (goto-line (+ offset line-end)) (end-of-line) (when string (search-backward string start t) (search-forward string nil t)))) ;; Display help (cond ((eq TeX-display-help 'expert) (TeX-pop-to-buffer runbuf nil t) (goto-char TeX-error-point) (TeX-pop-to-buffer error-file-buffer nil t)) (TeX-display-help (TeX-help-error error (if bad-box context (concat "\n" context)) runbuf)) (t (message (concat "! " error))))))) ;;; - Help (defun TeX-help-error (error output runbuffer) "Print ERROR in context OUTPUT from RUNBUFFER in another window." (let ((old-buffer (current-buffer)) (log-file (with-current-buffer runbuffer (with-current-buffer TeX-command-buffer (expand-file-name (TeX-active-master "log"))))) (TeX-error-pointer 0)) ;; Find help text entry. (while (not (string-match (car (nth TeX-error-pointer TeX-error-description-list)) error)) (setq TeX-error-pointer (+ TeX-error-pointer 1))) (TeX-pop-to-buffer (get-buffer-create "*TeX Help*") nil t) (erase-buffer) (insert "ERROR: " error "\n\n--- TeX said ---" output "\n--- HELP ---\n" (let ((help (cdr (nth TeX-error-pointer TeX-error-description-list)))) (save-excursion (if (and (string= help "No help available") (let* ((log-buffer (find-buffer-visiting log-file))) (if log-buffer (progn (set-buffer log-buffer) (revert-buffer t t)) (setq log-buffer (find-file-noselect log-file)) (set-buffer log-buffer)) (auto-save-mode nil) (setq buffer-read-only t) (goto-line (point-min)) (search-forward error nil t 1)) (re-search-forward "^l\\." nil t) (re-search-forward "^ [^\n]+$" nil t)) (let ((start (1+ (point)))) (forward-char 1) (re-search-forward "^$") (concat "From the .log file...\n\n" (buffer-substring start (point)))) help)))) (goto-char (point-min)) (TeX-pop-to-buffer old-buffer nil t))) ;;; Error Messages (defcustom TeX-error-description-list '(("\\(?:Package Preview Error\\|Preview\\):.*" . "The `auctex' option to `preview' should not be applied manually. If you see this error message outside of a preview run, either you did something too clever, or AUCTeX something too stupid.") ("Bad \\\\line or \\\\vector argument.*" . "The first argument of a \\line or \\vector command, which specifies the slope, is illegal\.") ("Bad math environment delimiter.*" . "TeX has found either a math-mode-starting command such as \\[ or \\( when it is already in math mode, or else a math-mode-ending command such as \\) or \\] while in LR or paragraph mode. The problem is caused by either unmatched math mode delimiters or unbalanced braces\.") ("Bad use of \\\\\\\\.*" . "A \\\\ command appears between paragraphs, where it makes no sense. This error message occurs when the \\\\ is used in a centering or flushing environment or else in the scope of a centering or flushing declaration.") ("\\\\begin{[^ ]*} ended by \\\\end{[^ ]*}." . "LaTeX has found an \\end command that doesn't match the corresponding \\begin command. You probably misspelled the environment name in the \\end command, have an extra \\begin, or else forgot an \\end.") ("Can be used only in preamble." . "LaTeX has encountered, after the \\begin{document}, one of the following commands that should appear only in the preamble: \\documentclass, \\nofiles, \\includeonly, \\makeindex, or \\makeglossary. The error is also caused by an extra \\begin{document} command.") ("Command name [^ ]* already used.*" . "You are using \\newcommand, \\newenvironment, \\newlength, \\newsavebox, or \\newtheorem to define a command or environment name that is already defined, or \\newcounter to define a counter that already exists. (Defining an environment named gnu automatically defines the command \\gnu.) You'll have to choose a new name or, in the case of \\newcommand or \\newenvironment, switch to the \\renew ... command.") ("Counter too large." . "1. Some object that is numbered with letters, probably an item in a enumerated list, has received a number greater than 26. Either you're making a very long list or you've been resetting counter values. 2. Footnotes are being ``numbered'' with letters or footnote symbols and LaTeX has run out of letters or symbols. This is probably caused by too many \\thanks commands.") ("Environment [^ ]* undefined." . "LaTeX has encountered a \\begin command for a nonexistent environment. You probably misspelled the environment name. ") ("Float(s) lost." . "You put a figure or table environment or a \\marginpar command inside a parbox---either one made with a minipage environment or \\parbox command, or one constructed by LaTeX in making a footnote, figure, etc. This is an outputting error, and the offending environment or command may be quite a way back from the point where LaTeX discovered the problem. One or more figures, tables, and/or marginal notes have been lost, but not necessarily the one that caused the error.") ("Illegal character in array arg." . "There is an illegal character in the argument of an array or tabular environment, or in the second argument of a \\multicolumn command.") ("Missing \\\\begin{document}." . "LaTeX produced printed output before encountering a \\begin{document} command. Either you forgot the \\begin{document} command or there is something wrong in the preamble. The problem may be a stray character or an error in a declaration---for example, omitting the braces around an argument or forgetting the \\ in a command name.") ("Missing p-arg in array arg.*" . "There is a p that is not followed by an expression in braces in the argument of an array or tabular environment, or in the second argument of a \\multicolumn command.") ("Missing @-exp in array arg." . "There is an @ character not followed by an @-expression in the argument of an array or tabular environment, or in the second argument of a \\multicolumn command.") ("No such counter." . "You have specified a nonexistent counter in a \\setcounter or \\addtocounter command. This is probably caused by a simple typing error. However, if the error occurred while a file with the extension aux is being read, then you probably used a \\newcounter command outside the preamble.") ("Not in outer par mode." . "You had a figure or table environment or a \\marginpar command in math mode or inside a parbox.") ("\\\\pushtabs and \\\\poptabs don't match." . "LaTeX found a \\poptabs with no matching \\pushtabs, or has come to the \\end{tabbing} command with one or more unmatched \\pushtabs commands.") ("Something's wrong--perhaps a missing \\\\item." . "The most probable cause is an omitted \\item command in a list-making environment. It is also caused by forgetting the argument of a thebibliography environment.") ("Tab overflow." . "A \\= command has exceeded the maximum number of tab stops that LaTeX permits.") ("There's no line here to end." . "A \\newline or \\\\ command appears between paragraphs, where it makes no sense. If you're trying to ``leave a blank line'', use a \\vspace command.") ("This may be a LaTeX bug." . "LaTeX has become thoroughly confused. This is probably due to a previously detected error, but it is possible that you have found an error in LaTeX itself. If this is the first error message produced by the input file and you can't find anything wrong, save the file and contact the person listed in your Local Guide.") ("Too deeply nested." . "There are too many list-making environments nested within one another. How many levels of nesting are permitted may depend upon what computer you are using, but at least four levels are provided, which should be enough.") ("Too many unprocessed floats." . "While this error can result from having too many \\marginpar commands on a page, a more likely cause is forcing LaTeX to save more figures and tables than it has room for. When typesetting its continuous scroll, LaTeX saves figures and tables separately and inserts them as it cuts off pages. This error occurs when LaTeX finds too many figure and/or table environments before it is time to cut off a page, a problem that is solved by moving some of the environments farther towards the end of the input file. The error can also be caused by a ``logjam''---a figure or table that cannot be printed causing others to pile up behind it, since LaTeX will not print figures or tables out of order. The jam can be started by a figure or table that either is too large to fit on a page or won't fit where its optional placement argument says it must go. This is likely to happen if the argument does not contain a p option.") ("Undefined tab position." . "A \\>, \\+, \\-, or \\< command is trying to go to a nonexistent tab position---one not defined by a \\= command.") ("\\\\< in mid line." . "A \\< command appears in the middle of a line in a tabbing environment. This command should come only at the beginning of a line.") ("Double subscript." . "There are two subscripts in a row in a mathematical formula---something like x_{2}_{3}, which makes no sense.") ("Double superscript." . "There are two superscripts in a row in a mathematical formula---something like x^{2}^{3}, which makes no sense.") ("Extra alignment tab has been changed to \\\\cr." . "There are too many separate items (column entries) in a single row of an array or tabular environment. In other words, there were too many & 's before the end of the row. You probably forgot the \\\\ at the end of the preceding row.") ("Extra \\}, or forgotten \\$." . "The braces or math mode delimiters don't match properly. You probably forgot a {, \\[, \\(, or $.") ("Font [^ ]* not loaded: Not enough room left." . "The document uses more fonts than TeX has room for. If different parts of the document use different fonts, then you can get around the problem by processing it in parts.") ("I can't find file `.*'." . "TeX can't find a file that it needs. If the name of the missing file has the extension tex, then it is looking for an input file that you specified---either your main file or another file inserted with an \\input or \\include command. If the missing file has the extension sty , then you have specified a nonexistent document style or style option.") ("Illegal parameter number in definition of .*" . "This is probably caused by a \\newcommand, \\renewcommand, \\newenvironment, or \\renewenvironment command in which a # is used incorrectly. A # character, except as part of the command name \\#, can be used only to indicate an argument parameter, as in #2, which denotes the second argument. This error is also caused by nesting one of the above four commands inside another, or by putting a parameter like #2 in the last argument of a \\newenvironment or \\renewenvironment command.") ("Illegal unit of measure ([^ ]* inserted)." . "If you just got a ! Missing number, treated as zero. error, then this is part of the same problem. If not, it means that LaTeX was expecting a length as an argument and found a number instead. The most common cause of this error is writing 0 instead of something like 0in for a length of zero, in which case typing return should result in correct output. However, the error can also be caused by omitting a command argument.") ("Misplaced alignment tab character \\&." . "The special character &, which should be used only to separate items in an array or tabular environment, appeared in ordinary text. You probably meant to type \\&.") ("Missing control sequence inserted." . "This is probably caused by a \\newcommand, \\renewcommand, \\newlength, or \\newsavebox command whose first argument is not a command name.") ("Missing number, treated as zero." . "This is usually caused by a LaTeX command expecting but not finding either a number or a length as an argument. You may have omitted an argument, or a square bracket in the text may have been mistaken for the beginning of an optional argument. This error is also caused by putting \\protect in front of either a length command or a command such as \\value that produces a number.") ("Missing [{}] inserted." . "TeX has become confused. The position indicated by the error locator is probably beyond the point where the incorrect input is.") ("Missing \\$ inserted." . "TeX probably found a command that can be used only in math mode when it wasn't in math mode. Remember that unless stated otherwise, all all the commands of Section 3.3 in LaTeX Book (Lamport) can be used only in math mode. TeX is not in math mode when it begins processing the argument of a box-making command, even if that command is inside a math environment. This error also occurs if TeX encounters a blank line when it is in math mode.") ("Not a letter." . "Something appears in the argument of a \\hyphenation command that doesn't belong there.") ("Paragraph ended before [^ ]* was complete." . "A blank line occurred in a command argument that shouldn't contain one. You probably forgot the right brace at the end of an argument.") ("\\\\[^ ]*font [^ ]* is undefined .*" . "These errors occur when an uncommon font is used in math mode---for example, if you use a \\sc command in a formula inside a footnote, calling for a footnote-sized small caps font. This problem is solved by using a \\load command.") ("Font .* not found." . "You requested a family/series/shape/size combination that is totally unknown. There are two cases in which this error can occur: 1) You used the \\size macro to select a size that is not available. 2) If you did not do that, go to your local `wizard' and complain fiercely that the font selection tables are corrupted!") ("TeX capacity exceeded, sorry .*" . "TeX has just run out of space and aborted its execution. Before you panic, remember that the least likely cause of this error is TeX not having the capacity to process your document. It was probably an error in your input file that caused TeX to run out of room. The following discussion explains how to decide whether you've really exceeded TeX's capacity and, if so, what to do. If the problem is an error in the input, you may have to use the divide and conquer method described previously to locate it. LaTeX seldom runs out of space on a short input file, so if running it on the last few pages before the error indicator's position still produces the error, then there's almost certainly something wrong in the input file. The end of the error indicator tells what kind of space TeX ran out of. The more common ones are listed below, with an explanation of their probable causes. buffer size =========== Can be caused by too long a piece of text as the argument of a sectioning, \\caption, \\addcontentsline, or \\addtocontents command. This error will probably occur when the \\end{document} is being processed, but it could happen when a \\tableofcontents, \\listoffigures, or \\listoftables command is executed. To solve this problem, use a shorter optional argument. Even if you're producing a table of contents or a list of figures or tables, such a long entry won't help the reader. exception dictionary ==================== You have used \\hyphenation commands to give TeX more hyphenation information than it has room for. Remove some of the less frequently used words from the \\hyphenation commands and insert \\- commands instead. hash size ========= Your input file defines too many command names and/or uses too many cross-ref- erencing labels. input stack size ================ This is probably caused by an error in a command definition. For example, the following command makes a circular definition, defining \\gnu in terms of itself: \\newcommand{\\gnu}{a \\gnu} % This is wrong! When TeX encounters this \\gnu command, it will keep chasing its tail trying to figure out what \\gnu should produce, and eventually run out of ``input stack''. main memory size ================ This is one kind of space that TeX can run out of when processing a short file. There are three ways you can run TeX out of main memory space: (1) defining a lot of very long, complicated commands, (2) making an index or glossary and having too many \\index or \\glossary commands on a single page, and (3) creating so complicated a page of output that TeX can't hold all the information needed to generate it. The solution to the first two problems is obvious: define fewer commands or use fewer \\index and \\glossary commands. The third problem is nastier. It can be caused by large tabbing, tabular, array, and picture environments. TeX's space may also be filled up with figures and tables waiting for a place to go. To find out if you've really exceeded TeX's capacity in this way, put a \\clearpage command in your input file right before the place where TeX ran out of room and try running it again. If it doesn't run out of room with the \\clearpage command there, then you did exceed TeX's capacity. If it still runs out of room, then there's probably an error in your file. If TeX is really out of room, you must give it some help. Remember that TeX processes a complete paragraph before deciding whether to cut the page. Inserting a \\newpage command in the middle of the paragraph, where TeX should break the page, may save the day by letting TeX write the current page before processing the rest of the paragraph. (A \\pagebreak command won't help.) If the problem is caused by accumulated figures and tables, you can try to prevent them from accumulating---either by moving them further towards the end of the document or by trying to get them to come out sooner. If you are still writing the document, simply add a \\clearpage command and forget about the problem until you're ready to produce the final version. Changes to the input file are likely to make the problem go away. pool size ========= You probably used too many cross-ref-erencing \\labels and/or defined too many new command names. More precisely, the labels and command names that you define have too many characters, so this problem can be solved by using shorter names. However, the error can also be caused by omitting the right brace that ends the argument of either a counter command such as \\setcounter, or a \\newenvironment or \\newtheorem command. save size ========= This occurs when commands, environments, and the scopes of declarations are nested too deeply---for example, by having the argument of a \\multiput command contain a picture environment that in turn has a \\footnotesize declaration whose scope contains a \\multiput command containing a ....") ("Text line contains an invalid character." . "The input contains some strange character that it shouldn't. A mistake when creating the file probably caused your text editor to insert this character. Exactly what could have happened depends upon what text editor you used. If examining the input file doesn't reveal the offending character, consult the Local Guide for suggestions.") ("Undefined control sequence." . "TeX encountered an unknown command name. You probably misspelled the name. If this message occurs when a LaTeX command is being processed, the command is probably in the wrong place---for example, the error can be produced by an \\item command that's not inside a list-making environment. The error can also be caused by a missing \\documentclass command.") ("Use of [^ ]* doesn't match its definition." . "It's probably one of the picture-drawing commands, and you have used the wrong syntax for specifying an argument. If it's \\@array that doesn't match its definition, then there is something wrong in an @-expression in the argument of an array or tabular environment---perhaps a fragile command that is not \\protect'ed.") ("You can't use `macro parameter character \\#' in [^ ]* mode." . "The special character # has appeared in ordinary text. You probably meant to type \\#.") ("Overfull \\\\hbox .*" . "Because it couldn't find a good place for a line break, TeX put more on this line than it should.") ("Overfull \\\\vbox .*" . "Because it couldn't find a good place for a page break, TeX put more on the page than it should. ") ("Underfull \\\\hbox .*" . "Check your output for extra vertical space. If you find some, it was probably caused by a problem with a \\\\ or \\newline command---for example, two \\\\ commands in succession. This warning can also be caused by using the sloppypar environment or \\sloppy declaration, or by inserting a \\linebreak command.") ("Underfull \\\\vbox .*" . "TeX could not find a good place to break the page, so it produced a page without enough text on it. ") ;; New list items should be placed here ;; ;; ("err-regexp" . "context") ;; ;; the err-regexp item should match anything (".*" . "No help available")) ; end definition "A list of the form (\"err-regexp\" . \"context\") used by function `TeX-help-error' to display help-text on an error message or warning. err-regexp should be a regular expression matching the error message given from TeX/LaTeX, and context should be some lines describing that error." :group 'TeX-output :type '(repeat (cons :tag "Entry" (regexp :tag "Match") (string :format "Description:\n%v")))) (provide 'tex-buf) ;;; tex-buf.el ends here auctex-11.87/tex-mik.el0000644000000000000000000000470010751352554013431 0ustar rootroot;;; tex-mik.el --- MiKTeX support for AUCTeX. ;; Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Maintainer: auctex-devel@gnu.org ;; 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 contains variables customized for MiKTeX. ;;; Code: ;; Remove the Queue entry from the default, and make a non-Unix ;; specific print entry, assuming that we'll print via gsview32. (unless (get 'TeX-queue-command 'saved-value) (setq TeX-queue-command nil)) (unless (get 'TeX-printer-list 'saved-value) (setq TeX-printer-list nil)) (unless (get 'TeX-print-command 'saved-value) (setq TeX-print-command "start \"\" %f")) (unless (get 'TeX-view-style 'saved-value) (setq TeX-view-style '(("^epsf$" "start \"\" %f") ("." "yap -1 %dS %d")))) (unless (get 'TeX-output-view-style 'saved-value) (setq TeX-output-view-style '(("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "dvips %d -o && start \"\" %f") ("^dvi$" "." "yap -1 %dS %d") ("^pdf$" "." "start \"\" %o") ("^html?$" "." "start \"\" %o")))) (unless (get 'TeX-source-specials-view-position-flags 'saved-value) (setq TeX-source-specials-view-position-flags "-s %n%b")) ;; Yap does not support a command line option for inverse searching. ;; The editor command has to be configured inside Yap in ;; "View/Options/Inverse Search" instead. (unless (get 'TeX-source-specials-view-editor-flags 'saved-value) (setq TeX-source-specials-view-editor-flags "")) ;; kpsewhich in MiKTeX (aka findtexmf) does not emit any useful ;; information if fed with kpathsea-related variables anyway. (unless (get 'TeX-kpathsea-path-delimiter 'saved-value) (setq TeX-kpathsea-path-delimiter nil)) (provide 'tex-mik) ;;; tex-mik.el ends here auctex-11.87/TODO0000644000000000000000000003500012056205161012205 0ustar rootrootFuture Development of AUCTeX **************************** The following sections describe future development of AUCTeX. Besides mid-term goals, bug reports and requests we cannot fix or honor right away are being gathered here. If you have some time for Emacs Lisp hacking, you are encouraged to try to provide a solution to one of the following problems. If you don't know Lisp, you may help us to improve the documentation. It might be a good idea to discuss proposed changes on the mailing list of AUCTeX first. 1 Mid-term Goals **************** * Integration of preview-latex into AUCTeX As of AUCTeX 11.81 preview-latex is a part of AUCTeX in the sense that the installation routines were merged and preview-latex is being packaged with AUCTeX. Further integration will happen at the backend. This involves folding of error parsing and task management of both packages which will ease development efforts and avoid redundant work. * More flexible option and command handling The current state of command handling with `TeX-command-list' is not very flexible because there is no distinction between executables and command line options to be passed to them. Customization of `TeX-command-list' by the user will interfere with updates of AUCTeX. * Error help catalogs Currently, the help for errors is more or less hardwired into `tex.el'. For supporting error help in other languages, it would be sensible to instead arrange error messages in language-specific files, make a common info file from all such catalogs in a given language and look the error texts up in an appropriate index. The user would then specify a preference list of languages, and the errors would be looked up in the catalogs in sequence until they were identified. * Combining `docTeX' with RefTeX Macro cross references should also be usable for document navigation using RefTeX. 2 Wishlist ********** * Documentation lookup for macros A parser could gather information about which macros are defined in which LaTeX packages and store the information in a hashtable which can be used in a backend for `TeX-doc' in order to open the matching documentation for a given macro. The information could also be used to insert an appropriate `\usepackage' statement if the user tries to insert a macro for which the respective package has not been requested yet. * Spell checking of macros A special ispell dictionary for macros could be nice to have. * Quick error overviews An error overview window (extract from the log file with just the error lines, clickable like a "grep" buffer) and/or fringe indicators for errors in the main text would be nice. * A math entry grid A separate frame with a table of math character graphics to click on in order to insert the respective sequence into the buffer (cf. the "grid" of x-symbol). * Crossreferencing support It would be nice if you could index process your favorite collection of `.dtx' files (such as the LaTeX source), just call a command on arbitrary control sequence, and get either the DVI viewer opened right at the definition of that macro (using Source Specials), or the source code of the `.dtx' file. * Better plain TeX support For starters, `LaTeX-math-mode' is not very LaTeX-specific in the first place, and similar holds for indentation and formatting. * Poor man's Source Specials In particular in PDF mode (and where Source Specials cause problems), alternatives would be desirable. One could implement inverse search by something like Heiko Oberdiek's `vpe.sty', and forward search by using the `.aux' file info to correlate labels in the text (possibly in cooperation with RefTeX) with previewer pages. In AUCTeX 11.83, support for forward search with PDF files was added. Currently this only works if you use the pdfsync LaTeX package and xpdf as your PDF viewer. * Page count when compiling should (optionally) go to modeline of the window where the compilation command was invoked, instead of the output window. Suggested by Karsten Tinnefeld . * Command to insert a macrodefinition in the preamble, without moving point from the current location. Suggested by "Jeffrey C. Ely" . * A database of all commands defined in all stylefiles. When a command or environment gets entered that is provided in one of the styles, insert the appropriate `\usepackage' in the preamble. * A way to add and overwrite math mode entries in style files, and to decide where they should be. Suggested by Remo Badii . * Create template for (first) line of tabular environment. * I think prompting for the master is the intended behaviour. It corresponds to a `shared' value for TeX-master. There should probably be a `none' value which wouldn't query for the master, but instead disable all features that relies on TeX-master. This default value for TeX-master could then be controled with mapping based on the extension. * Multiple argument completion for `\bibliography'. In general, I ought to make `,' special for these kind of completions. * Suggest `makeindex' when appropriate. * Use index files (when available) to speed up `C-c C-m include '. * Option not to calculate very slow completions like for `C-c C-m include '. * Font menu should be created from `TeX-font-list'. * Installation procedure written purely in emacs lisp. * Included PostScript files should also be counted as part of the document. * A nice hierarchical by-topic organization of all officially documented LaTeX macros, available from the menu bar. * `TeX-command-default' should be set from the master file, if not set locally. Suggested by Peter Whaite `'. * Make AUCTeX work with `crypt++'. Suggested by Chris Moore `'. * Make AUCTeX work with `longlines'. This would also apply to preview-latex, though it might make sense to unify error processing before attempting this. * The `Spell' command should apply to all files in a document. Maybe it could try to restrict to files that have been modified since last spell check? Suggested by Ravinder Bhumbla `'. * Make <.> check for abbreviations and sentences ending with capital letters. * Use Emacs 19 minibuffer history to choose between previewers, and other stuff. Suggested by John Interrante `'. * Make features. A new command `TeX-update' (`C-c C-u') could be used to create an up-to-date dvi file by repeatedly running BibTeX, MakeIndex and (La)TeX, until an error occurs or we are done. An alternative is to have an `Update' command that ensures the `dvi' file is up to date. This could be called before printing and previewing. * Documentation of variables that can be set in a style hook. We need a list of what can safely be done in an ordinary style hook. You can not set a variable that AUCTeX depends on, unless AUCTeX knows that it has to run the style hooks first. Here is the start of such a list. `LaTeX-add-environments' `TeX-add-symbols' `LaTeX-add-labels' `LaTeX-add-bibliographies' `LaTeX-largest-level' * Completion for counters and sboxes. * Outline should be (better) supported in TeX mode. At least, support headers, trailers, as well as TeX-outline-extra. * `TeX-header-start' and `TeX-trailer-end'. We might want these, just for fun (and outlines) * Plain TeX and LaTeX specific header and trailer expressions. We should have a way to globally specify the default value of the header and trailer regexps. * Get closer to original `TeX-mode' keybindings. A third initialization file (`tex-mode.el') containing an emulator of the standard `TeX-mode' would help convince some people to change to AUCTeX. * Make `TeX-next-error' parse ahead and store the results in a list, using markers to remember buffer positions in order to be more robust with regard to line numbers and changed files. This is what `next-error' does. (Or did, until Emacs 19). * Finish the Texinfo mode. For one thing, many Texinfo mode commands do not accept braces around their arguments. * Hook up the letter environment with `bbdb.el'. 3 Bugs ****** * The parsed files and style hooks for `example.dtx', `example.sty', `example.drv' and `example.bib' all clash. Bad. * `C-c `' should always stay in the current window, also when it finds a new file. * Do not overwrite emacs warnings about existing auto-save files when loading a new file. * Maybe the regexp for matching a TeX symbol during parsing should be `"\\\\\\([a-zA-Z]+\\|.\\)"' -- `' Peter Thiemann. * AUCTeX should not parse verbatim environments. * Make ``' check for math context in `LaTeX-math-mode'. and simply self insert if not in a math context. * Make `TeX-insert-dollar' more robust. Currently it can be fooled by `\mbox''es and escaped double dollar for example. * Correct indentation for tabular, tabbing, table, math, and array environments. * No syntactic font locking of verbatim macros and environments. (XEmacs only) * Font locking inside of verbatim macros and environments is not inhibited. This may result in syntax highlighting of unbalanced dollar signs and the like spilling out of the verbatim content. (XEmacs only) * Folding of LaTeX constructs spanning more than one line may result in overfull lines. (XEmacs only) Future Development of preview-latex *********************************** * Support other formats than just LaTeX plain TeX users and ConTeXt users should not have to feel left out. While ConTeXt is not supported yet by released versions of AUCTeX, at least supporting plain would help people, and be a start for ConTeXt as well. There are plain-based formats like MusiXTeX that could benefit a lot from preview-latex. The main part of the difficulties here is to adapt `preview.dtx' to produce stuff not requiring LaTeX. * Support nested snippets Currently you can't have both a footnote (which gets displayed as just its footnote number) and math inside of a footnote rendered as an image: such nesting might be achieved by rerunning preview-latex on the footnote contents when one opens the footnote for editing. * Support other text properties than just images Macros like `\textit' can be rendered as images, but the resulting humungous blob is not suitable for editing, in particular since the line filling from LaTeX does not coincide with that of Emacs. It would be much more useful if text properties just switched the relevant font to italics rather than replacing the whole text with an image. It would also make editing quite easier. Then there are things like footnotes that are currently just replaced by their footnote number. While editing is not a concern here (the number is not in the original text, anyway), it would save a lot of conversion time if no images were generated, but Emacs just displayed a properly fontified version of the footnote number. Also, this might make preview-latex useful even on text terminals. * Find a way to facilitate Source Specials Probably in connection with adding appropriate support to `dvipng', it would be nice if clicking on an image from a larger piece of source code would place the cursor at the respective source code location. * Make `preview.dtx' look reasonable in AUCTeX It is a bit embarrassing that `preview.dtx' is written in a manner that will not give either good syntax highlighting or good indentation when employing AUCTeX. * Web page work Currently, preview-latex's web page is not structured at all. Better navigation would be desirable, as well as separate News and Errata eye catchers. * Manual improvements - Pepper the manual with screen shots and graphics This will be of interest for the HTML and TeX renditions of the texinfo manual. Since Texinfo now supports images as well, this could well be nice to have. - Fix duplicates Various stuff appears several times. * Implement rendering pipelines for Emacs The current `gs.el' interface is fundamentally flawed, not only because of a broken implementation. A general batchable and daemonizable rendering infrastructure that can work on all kinds of preview images for embedding into buffers is warranted. The current implementation has a rather adhoc flavor and is not easily extended. It will not work outside of AUCTeX, either. * Integrate into RefTeX When referencing to equations and the like, the preview-images of the source rather than plain text should be displayed. If the preview in question covers labels, those should appear in the bubble help and/or a context menu. Apropos: * Implement LaTeX error indicators Previews on erroneous LaTeX passages might gain a red border or similar. * Pop up relevant online documentation for frequent errors A lot of errors are of the "badly configured" variety. Perhaps the relevant info pages should be delivered in addition to the error message. * Implement a table editing mode where every table cell gets output as a separate preview. Alternatively, output the complete table metrics in a way that lets people click on individual cells for editing purposes. * Benchmark and kill Emacs inefficiencies Both the LaTeX run under Emacs control as well as actual image insertion in Emacs could be faster. CVS Emacs has improved in that respect, but it still is slower than desirable. * Improve image support under Emacs The general image and color handling in Emacs is inefficient and partly defective. This is still the case in CVS. One option would be to replace the whole color and image handling with GDK routines when this library is available, since it has been optimized for it. auctex-11.87/lpath.el0000644000000000000000000000040610172170457013157 0ustar rootroot;;; This file is only used for installing AUCTeX. ;;; It is not a part of AUCTeX itself. ;; Make sure we get the right files. (setq load-path (cons "." load-path) byte-compile-warnings nil TeX-lisp-directory "" TeX-auto-global "") auctex-11.87/COPYING0000644000000000000000000010451310751352556012571 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 of the License, or (at your option) any later version. This program 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 this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . auctex-11.87/configure0000755000000000000000000043507412056205161013443 0ustar rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for auctex 11.87. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-auctex@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='auctex' PACKAGE_TARNAME='auctex' PACKAGE_VERSION='11.87' PACKAGE_STRING='auctex 11.87' PACKAGE_BUGREPORT='bug-auctex@gnu.org' PACKAGE_URL='' enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS subdirs preview_enabled INSTALL_INFO TEXI2PDF TEXI2DVI TEXI2HTML MAKEINFO PERL DVIPS PDFTEX TEX lispautodir autodir texsite lisptexsite packagedatadir lisppackagedatadir packagelispdir lisppackagelispdir auctexstartfile lispdir packagedir MULEELC MULESRC HAVE_mule EMACS_FLAVOR XEMACS EMACS AUCTEXVERSION AUCTEXDATE INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE MAKECMD target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_emacs with_xemacs enable_build_dir_test with_packagedir with_lispdir with_auctexstartfile with_packagelispdir with_packagedatadir with_auto_dir enable_preview ' ac_precious_vars='build_alias host_alias target_alias PERL MAKEINFO INSTALL_INFO' ac_subdirs_all='preview' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures auctex 11.87 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/auctex] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of auctex 11.87:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-build-dir-test test for build directory inside `load-path' (on by default) --disable-preview disable inclusion of preview-latex Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-emacs[=PATH] Use Emacs to build (on PATH if given) --with-xemacs[=PATH] Use XEmacs to build (on PATH if given) --with-packagedir=DIR package DIR for XEmacs --with-lispdir=DIR A place in load-path for Lisp files; most files will be place in a subdirectory. --with-auctexstartfile=FILE What file to use for auctex startup. --with-packagelispdir=DIR Directory for the package lisp files. --with-packagedatadir=DIR Where the data files go. --with-auto-dir=DIR directory containing AUCTeX automatically generated global style hooks Some influential environment variables: PERL Perl executable. If set to :, some documentation cannot be regenerated, but installation of an unmodified tarball will succeed. MAKEINFO Makeinfo executable. If set to :, some documentation cannot be regenerated, but installation of an unmodified tarball will succeed. INSTALL_INFO install-info executable. Set to : to skip making a dir file. This is the default when installing into an XEmacs package. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF auctex configure 11.87 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by auctex $as_me 11.87, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for ac_prog in make do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MAKECMD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MAKECMD"; then ac_cv_prog_MAKECMD="$MAKECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MAKECMD="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MAKECMD=$ac_cv_prog_MAKECMD if test -n "$MAKECMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKECMD" >&5 $as_echo "$MAKECMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$MAKECMD" && break done test -n "$MAKECMD" || MAKECMD="NONE" if test "${MAKECMD}"x = NONEx ; then as_fn_error $? "make not found, aborting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for date in ChangeLog" >&5 $as_echo_n "checking for date in ChangeLog... " >&6; } AUCTEXDATE=`sed -n '1s/^\([-0-9][-0-9]*\).*/\1/p' ChangeLog` if test "X${AUCTEXDATE}" = X then as_fn_error $? "not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${AUCTEXDATE}" >&5 $as_echo "${AUCTEXDATE}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for release in ChangeLog" >&5 $as_echo_n "checking for release in ChangeLog... " >&6; } AUCTEXVERSION=`sed -n '2,/^[0-9]/s/.*Version \(.*\) released\..*/\1/p' ChangeLog` if test "X${AUCTEXVERSION}" = X then AUCTEXVERSION=${AUCTEXDATE} { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found, using ${AUCTEXVERSION} instead" >&5 $as_echo "not found, using ${AUCTEXVERSION} instead" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${AUCTEXVERSION}" >&5 $as_echo "${AUCTEXVERSION}" >&6; } fi # Check for (X)Emacs, report its path, flavor and prefix # Apparently, if you run a shell window in Emacs, it sets the EMACS # environment variable to 't'. Let's undo the damage. if test "${EMACS}" = "t"; then EMACS="" fi # Check whether --with-emacs was given. if test "${with_emacs+set}" = set; then : withval=$with_emacs; if test "${withval}" = "yes"; then EMACS=emacs elif test "${withval}" = "no"; then EMACS=xemacs else EMACS="${withval}"; fi fi # Check whether --with-xemacs was given. if test "${with_xemacs+set}" = set; then : withval=$with_xemacs; if test "x${withval}" != xno then if test "x${with_emacs}" != xno -a "x${with_emacs}" != x then as_fn_error $? "cannot use both Emacs and XEmacs" "$LINENO" 5 fi if test "x${withval}" = "xyes" then EMACS=xemacs else EMACS="${withval}" fi elif test "x${with_emacs}" = xno then as_fn_error $? "need to use either Emacs or XEmacs" "$LINENO" 5 fi fi # "${prefix}/bin" is for Windows users for ac_prog in ${EMACS} emacs xemacs do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_EMACS+:} false; then : $as_echo_n "(cached) " >&6 else case $EMACS in [\\/]* | ?:[\\/]*) ac_cv_path_EMACS="$EMACS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in ${PATH} "${prefix}/bin" do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_EMACS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi EMACS=$ac_cv_path_EMACS if test -n "$EMACS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5 $as_echo "$EMACS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$EMACS" && break done test -n "$EMACS" || EMACS="""" if test -z "${EMACS}"; then as_fn_error $? "(X)Emacs not found! Aborting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS} is XEmacs" >&5 $as_echo_n "checking if ${EMACS} is XEmacs... " >&6; } elisp="(if (featurep (quote xemacs)) \"yes\" \"no\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 XEMACS="`cat ${OUTPUT}`" echo "=> ${XEMACS}" >& 5 2>&1 rm -f ${OUTPUT} if test "${XEMACS}" = "yes"; then EMACS_FLAVOR=xemacs EMACS_NAME="XEmacs" elif test "${XEMACS}" = "no"; then EMACS_FLAVOR=emacs EMACS_NAME="Emacs" else as_fn_error $? "Unable to run ${EMACS}! Aborting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${XEMACS}" >&5 $as_echo "${XEMACS}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${EMACS_NAME} prefix" >&5 $as_echo_n "checking for ${EMACS_NAME} prefix... " >&6; } elisp="(condition-case nil (let* ((prefix (directory-file-name (file-name-directory (executable-find cmd)))) (parent (directory-file-name (file-name-directory prefix)))) (if (string= (file-name-nondirectory prefix) \"bin\") (setq prefix parent) (if (string= (file-name-nondirectory parent) \"bin\") (setq prefix (directory-file-name (file-name-directory parent))))) prefix) (error "NONE"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${EMACS}" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((cmd(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${EMACS}" >& 5 2>&1 emacsprefix="`cat ${OUTPUT}`" echo "=> ${emacsprefix}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${emacsprefix}\"" >&5 $as_echo "\"${emacsprefix}\"" >&6; } if test ${EMACS_FLAVOR} = xemacs then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS_NAME} is recent enough" >&5 $as_echo_n "checking if ${EMACS_NAME} is recent enough... " >&6; } elisp="(cond ((< emacs-major-version 21) \"no\") ((> emacs-major-version 21) \"yes\") ((< emacs-minor-version 04) \"no\") (t \"yes\"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 result="`cat ${OUTPUT}`" echo "=> ${result}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${result}" >&5 $as_echo "${result}" >&6; } if test "${result}" != "yes" then as_fn_error $? "This package requires at least ${EMACS_NAME} version 21.4 Aborting!" "$LINENO" 5 fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${EMACS_NAME} is recent enough" >&5 $as_echo_n "checking if ${EMACS_NAME} is recent enough... " >&6; } elisp="(cond ((< emacs-major-version 21) \"no\") ((> emacs-major-version 21) \"yes\") ((< emacs-minor-version 01) \"no\") (t \"yes\"))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 result="`cat ${OUTPUT}`" echo "=> ${result}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${result}" >&5 $as_echo "${result}" >&6; } if test "${result}" != "yes" then as_fn_error $? "This package requires at least ${EMACS_NAME} version 21.1 Aborting!" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MULE support" >&5 $as_echo_n "checking for MULE support... " >&6; } if test -z "silent"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mule" >&5 $as_echo_n "checking for mule... " >&6; } fi library=`echo mule | tr _ -` elisp="(condition-case nil (require '${library} ) \ (error (prog1 nil (message \"${library} not found\"))))" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 mule="`cat ${OUTPUT}`" echo "=> ${mule}" >& 5 2>&1 rm -f ${OUTPUT} if test "$mule" = "nil"; then mule=no fi if test "$mule" = "${library}"; then mule=yes fi HAVE_mule=$mule if test -z "silent"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${HAVE_mule}" >&5 $as_echo "${HAVE_mule}" >&6; } fi if test "${HAVE_mule}" = "yes" && test "X${EMACS_UNIBYTE}" = X; then MULESRC="tex-jp.el" MULEELC="tex-jp.elc" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "X${EMACS_UNIBYTE}" != X; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: EMACS_UNIBYTE environment variable set. Disabling features requiring international character support." >&5 $as_echo "$as_me: WARNING: EMACS_UNIBYTE environment variable set. Disabling features requiring international character support." >&2;} fi fi # The Debian package uses `--disable-build-dir-test'; normal users should # never need to modify the default behavior. # Check whether --enable-build-dir-test was given. if test "${enable_build_dir_test+set}" = set; then : enableval=$enable_build_dir_test; if ! [ "X-${enableval}" = "X-no" ] then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is valid" >&5 $as_echo_n "checking if build directory is valid... " >&6; } elisp="(if (or (member (directory-file-name default-directory) load-path)\ (member (file-name-as-directory default-directory) load-path))\ \"no\" \"yes\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 valid_build_dir="`cat ${OUTPUT}`" echo "=> ${valid_build_dir}" >& 5 2>&1 rm -f ${OUTPUT} if test "${valid_build_dir}" = "no"; then as_fn_error $? "Build directory inside load-path! Aborting!" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is valid" >&5 $as_echo_n "checking if build directory is valid... " >&6; } elisp="(if (or (member (directory-file-name default-directory) load-path)\ (member (file-name-as-directory default-directory) load-path))\ \"no\" \"yes\")" OUTPUT=./conftest-$$ echo "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 "${EMACS}" -batch -eval "(let* ((x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1 valid_build_dir="`cat ${OUTPUT}`" echo "=> ${valid_build_dir}" >& 5 2>&1 rm -f ${OUTPUT} if test "${valid_build_dir}" = "no"; then as_fn_error $? "Build directory inside load-path! Aborting!" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test ${EMACS_FLAVOR} = "xemacs" ; then # Check whether --with-packagedir was given. if test "${with_packagedir+set}" = set; then : withval=$with_packagedir; packagedir="`echo ${withval} | sed 's/^~\//${HOME}\//;s/[\/\\]$//'`" else if test ${EMACS_FLAVOR} = xemacs; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XEmacs package directory" >&5 $as_echo_n "checking for XEmacs package directory... " >&6; } for currentprefix in '${datadir}/xemacs/xemacs-packages' \ '${libdir}/xemacs/xemacs-packages' \ '${datadir}' '${libdir}' "${emacsprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" >& 5 2>&1 packagedir="`cat ${OUTPUT}`" echo "=> ${packagedir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$packagedir" != NONE; then break; fi; done if test "x${packagedir}" = xNONE -o -z "${packagedir}"; then as_fn_error $? "not found, exiting!" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagedir}" >&5 $as_echo "${packagedir}" >&6; } else packagedir=no fi fi else packagedir=no fi if test "X${packagedir}" = Xno then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where lisp files go" >&5 $as_echo_n "checking where lisp files go... " >&6; } # Check whether --with-lispdir was given. if test "${with_lispdir+set}" = set; then : withval=$with_lispdir; lispdir="${withval}" fi if test "X${lispdir}" = X; then if test "X${packagedir}" = Xno; then # Test paths relative to prefixes for currentprefix in '${datadir}/'${EMACS_FLAVOR} '${libdir}/'${EMACS_FLAVOR} \ "${emacsprefix}/share/${EMACS_FLAVOR}" \ '${datadir}' '${libdir}' "${emacsprefix}" do expprefix="${currentprefix}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$expprefix" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "expprefix=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -eval "(let* ((prefix(pop command-line-args-left)) (expanded(pop command-line-args-left)) (x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${currentprefix}" "${expprefix}" >& 5 2>&1 lispdir="`cat ${OUTPUT}`" echo "=> ${lispdir}" >& 5 2>&1 rm -f ${OUTPUT} if test "$lispdir" != NONE; then break; fi; done if test "${lispdir}" = "NONE"; then # No? notify user. as_fn_error $? "Cannot locate lisp directory, use --with-lispdir, --datadir, or possibly --prefix to rectify this" "$LINENO" 5 fi else # XEmacs lispdir="${packagedir}/lisp" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lispdir}" >&5 $as_echo "${lispdir}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking what file to use for auctex startup" >&5 $as_echo_n "checking what file to use for auctex startup... " >&6; } # Check whether --with-auctexstartfile was given. if test "${with_auctexstartfile+set}" = set; then : withval=$with_auctexstartfile; auctexstartfile="${withval}" else _tmpdir_="${lispdir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$_tmpdir_" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "_tmpdir_=`sed ${__ac_tmp__} <&5 $as_echo "${auctexstartfile}" >&6; } packagelispdir="${lispdir}/auctex" packagedatadir="${packagelispdir}" texsitedir="${lispdir}" else #lispdir is only used for determining relative files. lispdir="${packagedir}" packagelispdir="${packagedir}/lisp/auctex" texsitedir="$packagelispdir" auctexstartfile="${packagelispdir}"/auto-autoloads.el packagedatadir="${packagedir}/etc/auctex" infodir="${packagedir}/info" INSTALL_INFO=: fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the package lisp files go" >&5 $as_echo_n "checking where the package lisp files go... " >&6; } # Check whether --with-packagelispdir was given. if test "${with_packagelispdir+set}" = set; then : withval=$with_packagelispdir; packagelispdir="${withval}" fi tmpdir="${packagelispdir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lisppackagelispdir="`cat ${OUTPUT}`" echo "=> ${lisppackagelispdir}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagelispdir}" >&5 $as_echo "${packagelispdir}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the data files go" >&5 $as_echo_n "checking where the data files go... " >&6; } # Check whether --with-packagedatadir was given. if test "${with_packagedatadir+set}" = set; then : withval=$with_packagedatadir; packagedatadir="${withval}" fi tmpdir="${packagedatadir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lisppackagedatadir="`cat ${OUTPUT}`" echo "=> ${lisppackagedatadir}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${packagedatadir}" >&5 $as_echo "${packagedatadir}" >&6; } tmpdir="${texsite}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" tex-site.el >& 5 2>&1 lisptexsite="`cat ${OUTPUT}`" echo "=> ${lisptexsite}" >& 5 2>&1 rm -f ${OUTPUT} { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the info files go" >&5 $as_echo_n "checking where the info files go... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${infodir}" >&5 $as_echo "${infodir}" >&6; } if test $EMACS_FLAVOR = "xemacs" -a "$infodir" = '${prefix}/info'; then if test $packagedir != 'no'; then infodir='${packagedir}/info' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where automatically generated global style hooks go" >&5 $as_echo_n "checking where automatically generated global style hooks go... " >&6; } # Check whether --with-auto-dir was given. if test "${with_auto_dir+set}" = set; then : withval=$with_auto_dir; autodir="${withval}" else autodir='${localstatedir}/auctex' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${autodir}" >&5 $as_echo "${autodir}" >&6; } tmpdir="${autodir}" __ac_tmp_oldprefix__="${prefix}" __ac_tmp_oldexec_prefix__="$exec_prefix" test "x${prefix}" = xNONE && prefix="${ac_default_prefix}" test "x${exec_prefix}" = xNONE && exec_prefix='${prefix}' while :;do case "$tmpdir" in *\$*) __ac_tmp__='s/[\`"-"]/\\&/g' eval "tmpdir=`sed ${__ac_tmp__} <& 5 2>&1 "${EMACS}" -batch -no-site-file -eval "(let* ((path(pop command-line-args-left)) (lispdir(pop command-line-args-left)) (startup(pop command-line-args-left)) (target(pop command-line-args-left))(x ${elisp})) (write-region (if (stringp x) x (prin1-to-string x)) nil \"${OUTPUT}\"))" "${tmpdir}" "${explispdir}" "${expstartup}" >& 5 2>&1 lispautodir="`cat ${OUTPUT}`" echo "=> ${lispautodir}" >& 5 2>&1 rm -f ${OUTPUT} # Extract the first word of "tex", so it can be a program name with args. set dummy tex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEX+:} false; then : $as_echo_n "(cached) " >&6 else case $TEX in [\\/]* | ?:[\\/]*) ac_cv_path_TEX="$TEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TEX" && ac_cv_path_TEX=":" ;; esac fi TEX=$ac_cv_path_TEX if test -n "$TEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEX" >&5 $as_echo "$TEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "pdftex", so it can be a program name with args. set dummy pdftex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PDFTEX+:} false; then : $as_echo_n "(cached) " >&6 else case $PDFTEX in [\\/]* | ?:[\\/]*) ac_cv_path_PDFTEX="$PDFTEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PDFTEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PDFTEX" && ac_cv_path_PDFTEX=":" ;; esac fi PDFTEX=$ac_cv_path_PDFTEX if test -n "$PDFTEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFTEX" >&5 $as_echo "$PDFTEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "dvips", so it can be a program name with args. set dummy dvips; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_DVIPS+:} false; then : $as_echo_n "(cached) " >&6 else case $DVIPS in [\\/]* | ?:[\\/]*) ac_cv_path_DVIPS="$DVIPS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_DVIPS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_DVIPS" && ac_cv_path_DVIPS=":" ;; esac fi DVIPS=$ac_cv_path_DVIPS if test -n "$DVIPS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DVIPS" >&5 $as_echo "$DVIPS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$PERL" = x then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PERL" && ac_cv_path_PERL=":" ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MAKEINFO+:} false; then : $as_echo_n "(cached) " >&6 else case $MAKEINFO in [\\/]* | ?:[\\/]*) ac_cv_path_MAKEINFO="$MAKEINFO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MAKEINFO="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_MAKEINFO" && ac_cv_path_MAKEINFO=":" ;; esac fi MAKEINFO=$ac_cv_path_MAKEINFO if test -n "$MAKEINFO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5 $as_echo "$MAKEINFO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "texi2html", so it can be a program name with args. set dummy texi2html; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEXI2HTML+:} false; then : $as_echo_n "(cached) " >&6 else case $TEXI2HTML in [\\/]* | ?:[\\/]*) ac_cv_path_TEXI2HTML="$TEXI2HTML" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEXI2HTML="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TEXI2HTML" && ac_cv_path_TEXI2HTML=":" ;; esac fi TEXI2HTML=$ac_cv_path_TEXI2HTML if test -n "$TEXI2HTML"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXI2HTML" >&5 $as_echo "$TEXI2HTML" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "texi2dvi", so it can be a program name with args. set dummy texi2dvi; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEXI2DVI+:} false; then : $as_echo_n "(cached) " >&6 else case $TEXI2DVI in [\\/]* | ?:[\\/]*) ac_cv_path_TEXI2DVI="$TEXI2DVI" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEXI2DVI="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TEXI2DVI" && ac_cv_path_TEXI2DVI=":" ;; esac fi TEXI2DVI=$ac_cv_path_TEXI2DVI if test -n "$TEXI2DVI"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXI2DVI" >&5 $as_echo "$TEXI2DVI" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "texi2pdf", so it can be a program name with args. set dummy texi2pdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_TEXI2PDF+:} false; then : $as_echo_n "(cached) " >&6 else case $TEXI2PDF in [\\/]* | ?:[\\/]*) ac_cv_path_TEXI2PDF="$TEXI2PDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TEXI2PDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_TEXI2PDF" && ac_cv_path_TEXI2PDF=":" ;; esac fi TEXI2PDF=$ac_cv_path_TEXI2PDF if test -n "$TEXI2PDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEXI2PDF" >&5 $as_echo "$TEXI2PDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "X${INSTALL_INFO}" = X then # Extract the first word of "install-info", so it can be a program name with args. set dummy install-info; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INSTALL_INFO+:} false; then : $as_echo_n "(cached) " >&6 else case $INSTALL_INFO in [\\/]* | ?:[\\/]*) ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in ${PATH} /usr/sbin /sbin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO=":" ;; esac fi INSTALL_INFO=$ac_cv_path_INSTALL_INFO if test -n "$INSTALL_INFO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL_INFO" >&5 $as_echo "$INSTALL_INFO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Check whether --enable-preview was given. if test "${enable_preview+set}" = set; then : enableval=$enable_preview; preview_enabled="$enableval" else preview_enabled="yes" fi if test "X${preview_enabled}" = Xyes then auctexdir=..; export auctexdir export PDFTEX export DVIPS # Export unquoted variables. TEX_UNQUOTED="$TEX" export TEX_UNQUOTED packagedir_unquoted="$packagedir" export packagedir_unquoted packagelispdir_unquoted="$packagelispdir" export packagelispdir_unquoted packagedatadir_unquoted="$packagedatadir" export packagedatadir_unquoted EMACS_UNQUOTED="$EMACS" export EMACS_UNQUOTED subdirs="$subdirs preview" fi prefix="`sed 's/[^-0-9a-zA-Z_./:$]/\\\\&/g;s/[$]\\\\[{(]\\([^)}]*\\)\\\\[})]/${\\1}/g' <confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by auctex $as_me 11.87, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ auctex config.status 11.87 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "tex-site.el.out") CONFIG_FILES="$CONFIG_FILES tex-site.el.out:tex-site.el.in" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "auctex.el") CONFIG_FILES="$CONFIG_FILES auctex.el" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cat >&2 < ;; 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 is in progress ConTeXt support for AUCTeX. Please report ;; anomalies or things you believe should be added. ;; AUCTeX is closely interwoven with LaTeX. We have to split up ;; things without breaking 'em. ;; some parts are stolen from latex.el and adapted to ConTeXt. ;; TODO ;; 1. indentation still bad. ;; 2. paragraph refilling doesn't work 100%, and is very slow. ;; 4. Remove dependency on LaTeX by moving LaTeX commands to TeX. ;; 5. Most ConTeXt macro's don't currently have lisp code to query for ;; arguments. As ConTeXt arguments are quite complex, the LaTeX way ;; of querying for arguments just doesn't cut it. ;; 6. Check auto-parsing: does it detect % interface=nl for example? ;; 7. Complete adding ConTeXt macro's. Perhaps parse cont-en.xml and ;; generate the interfaces? ;; 8. Add to menu: make TeX hash (mktexlsr), context format and metapost format. ;; TODO Documentation ;; 1. multifile done differently with ConTeXt ;;; Code: (require 'tex-buf) (require 'tex) (require 'latex) ; for functions like `TeX-look-at' and `LaTeX-split-long-menu' (require 'plain-tex) ; for `plain-TeX-common-initialization' (defgroup ConTeXt-macro nil "Special support for ConTeXt macros in AUCTeX." :prefix "TeX-" :group 'ConTeXt :group 'TeX-macro) ;;; variables ;; globals used in certain macro's. (defvar done-mark nil "Position of point afterwards, default nil (meaning end).") (defvar reference nil "Set by `ConTeXt-section-ref', used by `ConTeXt-section-section'.") (defvar title nil "Set by `ConTeXt-section-title', used by `ConTeXt-section-section'.") ;; others (defvar ConTeXt-known-interfaces '("cz" "de" "en" "it" "nl" "ro" "uk")) (defcustom ConTeXt-default-interface "en" "Default interface to be used when running ConTeXt." :group 'ConTeXt :type 'string) (defvar ConTeXt-current-interface "en" "Interface to be used for inserting macros and ConTeXt run.") (make-variable-buffer-local 'ConTeXt-current-interface) (defvar ConTeXt-menu-changed nil) ;; Need to update ConTeXt menu. (make-variable-buffer-local 'ConTeXt-menu-changed) (defvar ConTeXt-largest-level nil "Largest sectioning level within current document.") (make-variable-buffer-local 'ConTeXt-largest-level) (defun ConTeXt-largest-level () (TeX-update-style) ConTeXt-largest-level) ;;; Syntax (defvar ConTeXt-optop "[" "The ConTeXt optional argument opening character.") (defvar ConTeXt-optcl "]" "The ConTeXt optional argument closing character.") ;; Define a ConTeXt macro (defvar ConTeXt-define-list () "Calls ConTeXt-XX-define-list where XX is the current interface.") (defun ConTeXt-define-command (what) "The ConTeXt macro to define WHAT." (funcall (intern (concat "ConTeXt-define-command-" ConTeXt-current-interface)) what)) (defun ConTeXt-insert-define (define) "Insert the ConTeXt define macro DEFINE." (insert TeX-esc (ConTeXt-define-command define)) (newline) (indent-according-to-mode) (ConTeXt-arg-setup nil)) ;; Setup a ConTeXt macro (defvar ConTeXt-setup-list () "Calls ConTeXt-XX-setup-list where XX is the current interface.") (defun ConTeXt-setup-command (what) "The ConTeXt macro to setup WHAT." (funcall (intern (concat "ConTeXt-setup-command-" ConTeXt-current-interface)) what)) (defun ConTeXt-insert-setup (setup) "Insert the ConTeXt setup macro SETUP." (insert TeX-esc (ConTeXt-setup-command setup)) (newline) (indent-according-to-mode) (ConTeXt-arg-setup nil)) ;; Referencing ConTeXt macro's (defvar ConTeXt-referencing-list () "Calls ConTeXt-XX-other-macro-list where XX is the current interface.") (defun ConTeXt-referencing-command (what) "The ConTeXt macro to call WHAT is itself, no interface specific calls." what) (defun ConTeXt-insert-referencing (what) "Insert the ConTeXt referencing SETUP." (insert TeX-esc (ConTeXt-referencing-command what)) (newline) (indent-according-to-mode) (ConTeXt-arg-setup nil)) ;; Other ConTeXt macro's (defvar ConTeXt-other-macro-list () "Calls ConTeXt-XX-other-macro-list where XX is the current interface.") (defun ConTeXt-other-macro-command (what) "The ConTeXt macro to call WHAT is itself, no interface specific calls." what) (defun ConTeXt-insert-other-macro (other-macro) "Insert the ConTeXt other macro's macro SETUP." (insert TeX-esc (ConTeXt-other-macro-command other-macro)) (newline) (indent-according-to-mode) (ConTeXt-arg-setup nil)) ;;; Project structure (defvar ConTeXt-project-structure-list () "Calls ConTeXt-XX-project-structure where XX is the current interface.") (defun ConTeXt-project-structure (N) "Insert a ConTeXt project structure where N is in index into `ConTeXt-project-structure-list'." (funcall (intern(concat "ConTeXt-project-" (nth N ConTeXt-project-structure-list) "-insert")))) (defun ConTeXt-project-project-insert () "Insert a basic template for a new ConTeXt project." (save-excursion (insert "% The following names are examples only\n") (insert TeX-esc (ConTeXt-environment-start-name) (nth 0 ConTeXt-project-structure-list) " myproject") (newline 2) (insert TeX-esc (nth 1 ConTeXt-project-structure-list) " myenvironment") (newline 2) (insert TeX-esc (nth 2 ConTeXt-project-structure-list) " myproduct1") (newline 2) (insert TeX-esc (nth 2 ConTeXt-project-structure-list) " myproduct2") (newline 2) (insert TeX-esc (ConTeXt-environment-stop-name) (nth 0 ConTeXt-project-structure-list)))) (defun ConTeXt-project-environment-insert () "Insert a basic template for the environment of a ConTeXt project." (save-excursion (insert "% The name 'myenvironment' is an example only.\n" "% It must match the name in your project file.\n") (insert TeX-esc (ConTeXt-environment-start-name) (nth 1 ConTeXt-project-structure-list) " myenvironment\n\n") (insert "% Put environment charateristics that must be defined at the " "highest level here\n\n") (insert TeX-esc (ConTeXt-environment-stop-name) (nth 1 ConTeXt-project-structure-list)))) (defun ConTeXt-project-product-insert () "Insert a basic template for a product of a ConTeXt project." (save-excursion (insert "% The following names are examples only\n") (insert TeX-esc (ConTeXt-environment-start-name) (nth 2 ConTeXt-project-structure-list) " myproduct1") (newline 2) (insert TeX-esc (nth 0 ConTeXt-project-structure-list) " myproject") (newline 2) (insert "% Components are optional. " "You can also just start your document here.\n") (insert TeX-esc (nth 3 ConTeXt-project-structure-list) " mycomponent1") (newline 2) (insert TeX-esc (nth 3 ConTeXt-project-structure-list) " mycomponent2") (newline 2) (insert TeX-esc (ConTeXt-environment-stop-name) (nth 2 ConTeXt-project-structure-list)))) (defun ConTeXt-project-component-insert () "Insert a basic template for a component of a ConTeXt project." (save-excursion (insert "% The following names are examples only\n") (insert TeX-esc (ConTeXt-environment-start-name) (nth 3 ConTeXt-project-structure-list) " mycomponent1") (newline 2) (insert TeX-esc (nth 0 ConTeXt-project-structure-list) " myproject\n") (insert TeX-esc (nth 2 ConTeXt-project-structure-list) " myproduct1") (newline 2) (insert "% ... text here ...") (newline 2) (insert TeX-esc (ConTeXt-environment-stop-name) (nth 3 ConTeXt-project-structure-list)))) ;;; Section blocks (defvar ConTeXt-section-block-list () "Calls ConTeXt-XX-section-list where XX is the current interface.") (defun ConTeXt-section-block (section-block) "Insert the ConTeXt section block SECTION-BLOCK." (ConTeXt-environment-menu section-block)) ;;; Sections (defun ConTeXt-section (arg) "Insert a template for a ConTeXt section. Determinate the type of section to be inserted, by the argument ARG. If ARG is nil or missing, use the current level. If ARG is a list (selected by \\[universal-argument]), go downward one level. If ARG is negative, go up that many levels. If ARG is positive or zero, use absolute level: 0 : part 1 : chapter 2 : section 3 : subsection 4 : subsubsection 5 : subsubsubsection Or: 0 : title 1 : subject 2 : subsubject 3 : subsubsubject The following variables can be set to customize: `ConTeXt-section-hook' Hooks to run when inserting a section. `ConTeXt-section-ref' Prefix to all section references." (interactive "*P") (let* ((val (prefix-numeric-value arg)) (level (cond ((null arg) (ConTeXt-current-section)) ((listp arg) (ConTeXt-down-section)) ((< val 0) (ConTeXt-up-section (- val))) (t val))) (name (ConTeXt-section-name level)) (toc nil) (title "") (done-mark (make-marker))) (newline) (run-hooks 'ConTeXt-section-hook) (newline) (if (marker-position done-mark) (goto-char (marker-position done-mark))) (set-marker done-mark nil))) ;; LaTeX has a max function here, which makes no sense. ;; I think you want to insert a section that is max ConTeXt-largest-level (defun ConTeXt-current-section () "Return the level of the section that contain point. See also `ConTeXt-section' for description of levels." (save-excursion (min (ConTeXt-largest-level) (if (re-search-backward outline-regexp nil t) (+ 1 (- (ConTeXt-outline-level) (ConTeXt-outline-offset))) (ConTeXt-largest-level))))) (defun ConTeXt-down-section () "Return the value of a section one level under the current. Tries to find what kind of section that have been used earlier in the text, if this fail, it will just return one less than the current section." (save-excursion (let ((current (ConTeXt-current-section)) (next nil) (regexp outline-regexp)) (if (not (re-search-backward regexp nil t)) (1+ current) (while (not next) (cond ((eq (ConTeXt-current-section) current) (if (re-search-forward regexp nil t) (if (<= (setq next (ConTeXt-current-section)) current) ;Wow! (setq next (1+ current))) (setq next (1+ current)))) ((not (re-search-backward regexp nil t)) (setq next (1+ current))))) next)))) (defun ConTeXt-up-section (arg) "Return the value of the section ARG levels above this one." (save-excursion (if (zerop arg) (ConTeXt-current-section) (let ((current (ConTeXt-current-section))) (while (and (>= (ConTeXt-current-section) current) (re-search-backward outline-regexp nil t))) (ConTeXt-up-section (1- arg)))))) (defvar ConTeXt-section-list () "ConTeXt-XX-section-list where XX is the current interface.") (defun ConTeXt-section-name (level) "Return the name of the section corresponding to LEVEL." (let ((entry (TeX-member level ConTeXt-section-list (function (lambda (a b) (equal a (nth 1 b))))))) (if entry (nth 0 entry) nil))) (defun ConTeXt-section-level (name) "Return the level of the section NAME." (let ((entry (TeX-member name ConTeXt-section-list (function (lambda (a b) (equal a (nth 0 b))))))) (if entry (nth 1 entry) nil))) ;;; Section Hooks. (defcustom ConTeXt-section-hook '(ConTeXt-section-heading ConTeXt-section-title ConTeXt-section-ref ConTeXt-section-section) "List of hooks to run when a new section is inserted. The following variables are set before the hooks are run level - numeric section level, see the documentation of `ConTeXt-section'. name - name of the sectioning command, derived from `level'. title - The title of the section, default to an empty string. `done-mark' - Position of point afterwards, default nil (meaning end). The following standard hook exist - ConTeXt-section-heading: Query the user about the name of the sectioning command. Modifies `level' and `name'. ConTeXt-section-title: Query the user about the title of the section. Modifies `title'. ConTeXt-section-section: Insert ConTeXt section command according to `name', `title', and `reference'. If `title' is an empty string, `done-mark' will be placed at the point they should be inserted. ConTeXt-section-ref: Insert a reference for this section command. To get a full featured `ConTeXt-section' command, insert (setq ConTeXt-section-hook '(ConTeXt-section-heading ConTeXt-section-title ConTeXt-section-section ConTeXt-section-ref)) in your .emacs file." :group 'ConTeXt-macro :type 'hook :options '(ConTeXt-section-heading ConTeXt-section-title ConTeXt-section-ref ConTeXt-section-section)) (defun ConTeXt-section-heading () "Hook to prompt for ConTeXt section name. Insert this hook into `ConTeXt-section-hook' to allow the user to change the name of the sectioning command inserted with `\\[ConTeXt-section]'." (let ((string (completing-read (concat "Select level: (default " name ") ") ConTeXt-section-list nil nil nil))) ;; Update name (if (not (zerop (length string))) (setq name string)))) (defun ConTeXt-section-title () "Hook to prompt for ConTeXt section title. Insert this hook into `ConTeXt-section-hook' to allow the user to change the title of the section inserted with `\\[ConTeXt-section]." (setq title (read-string "What title: "))) (defun ConTeXt-section-section () "Hook to insert ConTeXt section command into the file. Insert this hook into `ConTeXt-section-hook' after those hooks which sets the `name', `title', and `reference' variables, but before those hooks which assumes the section already is inserted." (insert TeX-esc name) (cond ((null reference)) ((zerop (length reference)) (insert ConTeXt-optop) (set-marker done-mark (point)) (insert ConTeXt-optcl)) (t (insert ConTeXt-optop reference ConTeXt-optcl))) (insert TeX-grop) (if (zerop (length title)) (set-marker done-mark (point))) (insert title TeX-grcl) (newline) ;; If RefTeX is available, tell it that we've just made a new section (and (fboundp 'reftex-notice-new-section) (funcall (symbol-function 'reftex-notice-new-section)))) (defun ConTeXt-section-ref () "Hook to insert a reference after the sectioning command. Insert this hook into `ConTeXt-section-hook' to prompt for a label to be inserted after the sectioning command." (setq reference (completing-read (TeX-argument-prompt t nil "Comma separated list of references") (LaTeX-label-list) nil nil)) ;; No reference or empty string entered? (if (string-equal "" reference) (setq reference nil))) ;; Various (defun TeX-ConTeXt-sentinel (process name) "Cleanup TeX output buffer after running ConTeXt." (cond ((TeX-TeX-sentinel-check process name)) ((save-excursion ;; in a full ConTeXt run there will multiple texutil ;; outputs. Just looking for "another run needed" would ;; find the first occurence (goto-char (point-max)) (re-search-backward "TeXUtil " nil t) (re-search-forward "another run needed" nil t)) (message (concat "You should run ConTeXt again " "to get references right, " (TeX-current-pages))) (setq TeX-command-next TeX-command-default)) ((re-search-forward "removed files :" nil t) (message "sucessfully cleaned up")) ((re-search-forward "^ ?TeX\\(Exec\\|Util\\)" nil t) ;; strange regexp --pg (message (concat name ": successfully formatted " (TeX-current-pages))) (setq TeX-command-next TeX-command-Show)) (t (message (concat name ": problems after " (TeX-current-pages))) (setq TeX-command-next TeX-command-default)))) ;;; Environments (defgroup ConTeXt-environment nil "Environments in AUCTeX." :group 'ConTeXt-macro) ;; TODO: interface awareness (defcustom ConTeXt-default-environment "itemize" "*The default environment when creating new ones with `ConTeXt-environment'." :group 'ConTeXt-environment :type 'string) (make-variable-buffer-local 'ConTeXt-default-environment) (TeX-auto-add-type "environment" "ConTeXt") (fset 'ConTeXt-add-environments-auto (symbol-function 'ConTeXt-add-environments)) (defun ConTeXt-add-environments (&rest environments) "Add ENVIRONMENTS to the list of known environments." (apply 'ConTeXt-add-environments-auto environments) (setq ConTeXt-menu-changed t)) ;; (defvar ConTeXt-environment-list () ;; "ConTeXt-environment-list-XX where XX is the current interface.") (defvar ConTeXt-environment-history nil) (defun ConTeXt-environment-start-name () "Return the \\start translated to the language in current interface." ;; it is "inizia", others are "start" (cond ((equal ConTeXt-current-interface "it") "inizia") ((member ConTeXt-current-interface ConTeXt-known-interfaces) "start") (t ;; this should not happen (error "Unknown interface: %s" ConTeXt-current-interface)))) (defun ConTeXt-environment-stop-name () "Return the \\stop translated to the language in current interface." ;; it is "termina", others are "stop" (cond ((equal ConTeXt-current-interface "it") "termina") ((member ConTeXt-current-interface ConTeXt-known-interfaces) "stop") (t ;; this should not happen (error "Unknown interface: %s" ConTeXt-current-interface)))) (defun ConTeXt-environment (arg) "Make ConTeXt environment (\\start...-\\stop... pair). With optional ARG, modify current environment." (interactive "*P") (let ((environment ( completing-read (concat "Environment type: (default " (if (TeX-near-bobp) "text" ConTeXt-default-environment) ") ") ConTeXt-environment-list nil nil nil 'ConTeXt-environment-history) )) ;; Get default (cond ((and (zerop (length environment)) (TeX-near-bobp)) (setq environment "text")) ((zerop (length environment)) (setq environment ConTeXt-default-environment)) (t (setq ConTeXt-default-environment environment))) (let ((entry (assoc environment ConTeXt-environment-list))) (when (null entry) (ConTeXt-add-environments (list environment))) (if arg (ConTeXt-modify-environment environment) (ConTeXt-environment-menu environment))))) (defun ConTeXt-modify-environment (environment) "Modify current environment." (save-excursion (ConTeXt-find-matching-stop) (re-search-backward (concat (regexp-quote TeX-esc) (ConTeXt-environment-stop-name) " *\\([a-zA-Z]*\\)") (save-excursion (beginning-of-line 1) (point))) (replace-match (concat TeX-esc (ConTeXt-environment-stop-name) environment) t t) (beginning-of-line 1) (ConTeXt-find-matching-start) (re-search-forward (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name) " *\\([a-zA-Z]*\\)") (save-excursion (end-of-line 1) (point))) (replace-match (concat TeX-esc (ConTeXt-environment-start-name) environment) t t))) (defun ConTeXt-environment-menu (environment) "Insert ENVIRONMENT around point or region." (let ((entry (assoc environment ConTeXt-environment-list))) (cond ((not (and entry (nth 1 entry))) (ConTeXt-insert-environment environment)) ((numberp (nth 1 entry)) (let ((count (nth 1 entry)) (args "")) (while (> count 0) (setq args (concat args TeX-grop TeX-grcl)) (setq count (- count 1))) (ConTeXt-insert-environment environment args))) ((stringp (nth 1 entry)) (let ((prompts (cdr entry)) (args "")) (while prompts (setq args (concat args TeX-grop (read-from-minibuffer (concat (car prompts) ": ")) TeX-grcl)) (setq prompts (cdr prompts))) (ConTeXt-insert-environment environment args))) (t (apply (nth 1 entry) environment (nthcdr 2 entry)))))) (defun ConTeXt-close-environment () "Insert \\stop... to match the current environment." (interactive "*") (beginning-of-line) (let ((empty-line (looking-at "[ \t]*$"))) (end-of-line) (if (not empty-line) (newline))) (insert TeX-esc (ConTeXt-environment-stop-name) (ConTeXt-current-environment)) ;; indent broken, so don't do it. ;;(indent-according-to-mode) (end-of-line) (newline)) (defun ConTeXt-insert-environment (environment &optional extra) "Insert ENVIRONMENT, with optional argument EXTRA." (if (and (TeX-active-mark) (not (eq (mark) (point)))) (save-excursion (if (< (mark) (point)) (exchange-point-and-mark)) (insert TeX-esc (ConTeXt-environment-start-name) environment) (newline) (forward-line -1) (indent-according-to-mode) (if extra (insert extra)) (goto-char (mark)) (or (TeX-looking-at-backward "^[ \t]*") (newline)) (insert TeX-esc (ConTeXt-environment-stop-name) environment) (newline) (forward-line -1) (indent-according-to-mode) ;;(goto-char (point)) ) (or (TeX-looking-at-backward "^[ \t]*") (newline)) (insert TeX-esc (ConTeXt-environment-start-name) environment) (indent-according-to-mode) (if extra (insert extra)) (end-of-line) (newline-and-indent) (newline) (insert TeX-esc (ConTeXt-environment-stop-name) environment) (or (looking-at "[ \t]*$") (save-excursion (newline-and-indent))) (indent-according-to-mode) (end-of-line 0))) ;; with the following we can call a function on an environment. Say ;; you have metapost stuff within your TeX file, go to the environment ;; and run ConTeXt-work-on-environment (suggested Key: C-c !). AUCTeX ;; sees that you are inside e.g. \startMPpage....\stopMPpage and ;; looks in ConTeXt-environment-helper for a function to be called. ;; % so pressing C-c ! inside the following ... ;;\startuseMPgraphic{Logo}{Scale} ;; % Top rectangle ;; filldraw (0,0)--(2cm,0)--(2cm,1cm)--(0,1cm)--cycle withcolor blue ; ;; % Bottom black rectangle ;; drawfill (0,0)--(2cm,0)--(2cm,-1cm)--(0,-1cm)--cycle withcolor black; ;; % White Text ;; draw btex \bf AB etex withcolor white ; ;; % resize to size ;; currentpicture := currentpicture scaled \MPvar{Scale} ; ;; \stopuseMPgraphic ;; % ...should give you a "new buffer" (currently narrowed to region ;; % and switched to metapost-mode and recursive-edit) ;; % Top rectangle ;; filldraw (0,0)--(2cm,0)--(2cm,1cm)--(0,1cm)--cycle withcolor blue ; ;; % Bottom black rectangle ;; drawfill (0,0)--(2cm,0)--(2cm,-1cm)--(0,-1cm)--cycle withcolor black; ;; % White Text ;; draw btex \bf AB etex withcolor white ; ;; % resize to size ;; currentpicture := currentpicture scaled \MPvar{Scale} ; (defvar ConTeXt-environment-helper '(("useMPgraphic" . ConTeXt-mp-region) ("MPpage" . ConTeXt-mp-region)) "Alist that holds functions to call for working on regions. An entry looks like: (\"environment\" . function)") (defun ConTeXt-mp-region () "Edit region in `metapost-mode'." (ConTeXt-mark-environment t) (narrow-to-region (mark) (point)) (metapost-mode) (message "Type `M-x exit-recursive-edit' to get back") (recursive-edit) (context-mode) (widen)) ;; find smarter name. Suggestions welcome (defun ConTeXt-work-on-environment () "Takes current environment and does something on it (todo: documentation)." (interactive) (let ((fun (cdr (assoc (ConTeXt-current-environment) ConTeXt-environment-helper)))) (when (functionp fun) (funcall fun)))) (defun ConTeXt-current-environment () "Return the name of the current environment." ;; don't make this interactive. (let ((beg)) (save-excursion (ConTeXt-last-unended-start) (setq beg (+ (point) (length (ConTeXt-environment-start-name)) 1)) (goto-char (match-end 0)) (skip-chars-forward "a-zA-Z") (buffer-substring beg (point))))) (defun ConTeXt-last-unended-start () "Leave point at the beginning of the last `\\start...' that is unstopped looking from the current cursor." (while (and (re-search-backward "\\\\start[a-zA-Z]*\\|\\\\stop[a-zA-Z]*") (looking-at "\\\\stop[a-zA-Z]*")) (ConTeXt-last-unended-start))) (defun ConTeXt-mark-environment (&optional inner) "Set mark to end of current environment (\\start...-\\stop...) and point to the matching begin. If optional INNER is not nil, include \\start... and \\stop, otherwise only the contents." (interactive) (let ((cur (point))) (ConTeXt-find-matching-stop inner) (set-mark (point)) (goto-char cur) (ConTeXt-find-matching-start inner) (TeX-activate-region))) (defun ConTeXt-find-matching-stop (&optional inner) "Find end of current \\start...\\stop-Pair. If INNER is non-nil, go to the point just past before \\stop... macro. Otherwise goto the point just past \\stop..." (interactive) (let ((regexp (concat (regexp-quote TeX-esc) "\\(" (ConTeXt-environment-start-name) "\\|" (ConTeXt-environment-stop-name) "\\)" )) (level 1) (pos)) ;;jump over the \start... when at the beginning of it. (when (looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name))) (re-search-forward regexp nil t)) (while (and (> level 0) (re-search-forward regexp nil t) (goto-char (1- (match-beginning 1))) (cond ((looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name))) (re-search-forward regexp nil t) (setq level (1+ level))) ((looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-stop-name))) (re-search-forward regexp nil t) (setq level (1- level)))))) ;; now we have to look if we want to start behind the \start... macro (if inner (beginning-of-line) (skip-chars-forward "a-zA-Z")))) (defun ConTeXt-find-matching-start (&optional inner) "Find beginning of current \\start...\\stop-Pair. If INNER is non-nil, go to the point just past the \\start... macro." (interactive) (let ((regexp (concat (regexp-quote TeX-esc) "\\(" (ConTeXt-environment-start-name) "\\|" (ConTeXt-environment-stop-name) "\\)" )) (level 1) (pos)) (while (and (> level 0) (re-search-backward regexp nil t) (cond ((looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-stop-name))) (setq level (1+ level))) ((looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name))) (setq level (1- level)))))) ;; now we have to look if we want to start behind the \start... macro (when inner ;; \startfoo can have 0 or more {} and [] pairs. I assume that ;; skipping all those parens will be smart enough. It fails when ;; the first part in the \start-\stop-environment is { or [, like ;; in \startquotation {\em important} \stopquotation. There is ;; yet another pitfall: \startsetups SomeSetup foo bar ;; \stopsetups will use SomeSetup as the argument and the ;; environment (skip-chars-forward "\\\\a-zA-Z") (save-excursion (while (progn (skip-chars-forward "\t\n ") (forward-comment 1) (skip-chars-forward "\t\n ") (looking-at "\\s\(")) (forward-list 1) (setq pos (point)))) (when pos (goto-char pos)) (unless (bolp) (forward-line))))) ;;; items (defun ConTeXt-insert-item () "Insert a new item." (interactive "*") (or (TeX-looking-at-backward "^[ \t]*") (newline)) (TeX-insert-macro "item") (indent-according-to-mode)) ;;; Macro Argument Hooks (defun ConTeXt-optional-argument-insert (arg &optional prefix) "Insert ARG surrounded by square brackets." (insert ConTeXt-optop) (insert arg) (insert ConTeXt-optcl)) (defun ConTeXt-required-argument-insert (arg &optional prefix) "Insert ARG surrounded by curly braces." (insert TeX-grop) (insert arg) (insert TeX-grcl)) (defun ConTeXt-argument-insert (arg optional &optional prefix) "Insert ARG surrounded by curly braces. If OPTIONAL, only insert it if not empty, and then use square brackets." (if optional (if (not (string-equal arg "")) (ConTeXt-optional-argument-insert arg prefix)) (ConTeXt-required-argument-insert arg prefix))) (defun ConTeXt-arg-ref (optional &optional prompt definition) "Prompt for a reference completing with known references." (let ((ref (completing-read (TeX-argument-prompt optional prompt "ref") (LaTeX-label-list)))) (if (and definition (not (string-equal "" ref))) (LaTeX-add-labels ref)) (ConTeXt-argument-insert ref optional))) (defun ConTeXt-arg-define-ref (&optional prompt) "Prompt for an optional reference completing with known references." (ConTeXt-arg-ref t prompt t)) (defun ConTeXt-arg-setup (optional &optional prompt) "Prompt for setup arguments." (let ((setup (read-from-minibuffer (TeX-argument-prompt optional prompt "Setup")))) (ConTeXt-argument-insert setup t))) ;; paragraph (re)-formatting (defvar ConTeXt-item-list () "List of macro's considered items.") (defun ConTeXt-paragraph-commands-regexp () "Return a regexp matching macros that should have their own line." (concat (regexp-quote TeX-esc) "\\(" "[][]\\|" ; display math delimitors (is this applicable to ConTeXt??) (ConTeXt-environment-start-name) "\\|" (ConTeXt-environment-stop-name) "\\|" (mapconcat 'car ConTeXt-section-list "\\b\\|") "\\b\\|" (mapconcat 'identity ConTeXt-extra-paragraph-commands "\\b\\|") "\\b\\|" (mapconcat 'identity ConTeXt-item-list "\\b\\|") "\\b\\)")) ;; Outline support (defun ConTeXt-environment-full-start-name (environment) "Return the ConTeXt macro name that starts ENVIRONMENT. It is interface aware" (concat (ConTeXt-environment-start-name) environment)) (defun ConTeXt-outline-regexp (&optional anywhere) "Return regexp for ConTeXt section blocks and sections. If optional argument ANYWHERE is not nil, do not require that the header is at the start of a line." (concat (if anywhere "" "^") "[ \t]*" (regexp-quote TeX-esc) "\\(" (mapconcat 'ConTeXt-environment-full-start-name ConTeXt-section-block-list "\\|") "\\|" (mapconcat 'car ConTeXt-section-list "\\|") "\\)\\b" (if TeX-outline-extra "\\|" "") (mapconcat 'car TeX-outline-extra "\\|") "\\|" (ConTeXt-header-end) "\\b" "\\|" (ConTeXt-trailer-start) "\\b")) (defvar ConTeXt-text "Name of ConTeXt macro that begins the text body.") (defun ConTeXt-header-end () "Default end of header marker for ConTeXt documents." (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name) ConTeXt-text)) (defun ConTeXt-trailer-start () "Default start of trailer marker for ConTeXt documents." (concat (regexp-quote TeX-esc) (ConTeXt-environment-stop-name) ConTeXt-text)) (defun ConTeXt-outline-offset () "Offset to add to `ConTeXt-section-list' levels to get outline level." (- 4 (ConTeXt-largest-level))) (defun ConTeXt-start-environment-regexp (list) "Regular expression that matches a start of all environments mentioned in LIST." (concat "start\\(" (mapconcat 'identity list "\\|") "\\)\\b")) ;; The top headings are \starttext, \startfrontmatter, \startbodymatter etc. ;; \part, \chapter etc. are children of that. (defun ConTeXt-outline-level () "Find the level of current outline heading in an ConTeXt document." (cond ((looking-at (concat (ConTeXt-header-end) "\\b")) 1) ((looking-at (concat (ConTeXt-trailer-start) "\\b")) 1) ((TeX-look-at TeX-outline-extra) (max 1 (+ (TeX-look-at TeX-outline-extra) (ConTeXt-outline-offset)))) (t (save-excursion (skip-chars-forward " \t") (forward-char 1) (cond ((looking-at (ConTeXt-start-environment-regexp ConTeXt-section-block-list)) 1) ((TeX-look-at ConTeXt-section-list) (max 1 (+ (TeX-look-at ConTeXt-section-list) (ConTeXt-outline-offset)))) (t (error "Unrecognized header"))))))) ;;; Fonts (defcustom ConTeXt-font-list '((?\C-b "{\\bf " "}") (?\C-c "{\\sc " "}") (?\C-e "{\\em " "}") (?\C-i "{\\it " "}") (?\C-r "{\\rm " "}") (?\C-s "{\\sl " "}") (?\C-t "{\\tt " "}") (?\C-d "" "" t)) "List of fonts used by `TeX-font'. Each entry is a list. The first element is the key to activate the font. The second element is the string to insert before point, and the third element is the string to insert after point. If the fourth and fifth element are strings, they specify the prefix and suffix to be used in math mode. An optional fourth (or sixth) element means always replace if t." :group 'TeX-macro :type '(repeat (group :value (?\C-a "" "") (character :tag "Key") (string :tag "Prefix") (string :tag "Suffix") (option (group :inline t (string :tag "Math Prefix") (string :tag "Math Suffix"))) (option (sexp :format "Replace\n" :value t))))) ;; Imenu support (defun ConTeXt-outline-name () "Guess a name for the current header line." (save-excursion (if (re-search-forward "{\\([^\}]*\\)}" (point-at-eol) t) (match-string 1) (buffer-substring-no-properties (point) (point-at-eol))))) ;; This imenu also includes commented out chapters. Perhaps a feature ;; for LaTeX, not sure we want or need that for ConTeXt. (defun ConTeXt-imenu-create-index-function () "Imenu support function for ConTeXt." (TeX-update-style) (let (entries level (regexp (ConTeXt-outline-regexp))) (goto-char (point-max)) (while (re-search-backward regexp nil t) (let* ((name (ConTeXt-outline-name)) (level (make-string (1- (ConTeXt-outline-level)) ?\ )) (label (concat level level name)) (mark (make-marker))) (set-marker mark (point)) (set-text-properties 0 (length label) nil label) (setq entries (cons (cons label mark) entries)))) entries)) ;; Indentation, copied from Berend's context mode. ;; TODO: doesn't work great. (defvar ConTeXt-indent-allhanging t) (defvar ConTeXt-indent-arg 2) (defvar ConTeXt-indent-basic 2) (defvar ConTeXt-indent-item ConTeXt-indent-basic) (defvar ConTeXt-indent-item-re "\\\\\\(item\\|sym\\)\\>") (defvar ConTeXt-indent-syntax-table (make-syntax-table TeX-mode-syntax-table) "Syntax table used while computing indentation.") (progn (modify-syntax-entry ?$ "." ConTeXt-indent-syntax-table) (modify-syntax-entry ?\( "." ConTeXt-indent-syntax-table) (modify-syntax-entry ?\) "." ConTeXt-indent-syntax-table)) (defun ConTeXt-indent-line (&optional arg) (with-syntax-table ConTeXt-indent-syntax-table ;; TODO: Rather than ignore $, we should try to be more clever about it. (let ((indent (save-excursion (beginning-of-line) (ConTeXt-find-indent)))) (if (< indent 0) (setq indent 0)) (if (<= (current-column) (current-indentation)) (indent-line-to indent) (save-excursion (indent-line-to indent)))))) (defun ConTeXt-find-indent (&optional virtual) "Find the proper indentation of text after point. VIRTUAL if non-nil indicates that we're only trying to find the indentation in order to determine the indentation of something else. There might be text before point." (save-excursion (skip-chars-forward " \t") (or ;; Trust the current indentation, if such info is applicable. (and virtual (>= (current-indentation) (current-column)) (current-indentation)) ;; Put leading close-paren where the matching open brace would be. (condition-case nil (and (eq (char-syntax (char-after)) ?\)) (save-excursion (skip-syntax-forward " )") (backward-sexp 1) (ConTeXt-find-indent 'virtual))) (error nil)) ;; Default (maybe an argument) (let ((pos (point)) (char (char-after)) (indent 0) up-list-pos) ;; Look for macros to be outdented (cond ((looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-stop-name))) (setq indent (- indent ConTeXt-indent-basic))) ((looking-at ConTeXt-indent-item-re) (setq indent (- indent ConTeXt-indent-item)))) ;; Find the previous point which determines our current indentation. (condition-case err (progn (backward-sexp 1) (while (> (current-column) (current-indentation)) (backward-sexp 1))) (scan-error (setq up-list-pos (nth 2 err)))) (cond ((= (point-min) pos) 0) ; We're really just indenting the first line. ((integerp up-list-pos) ;; Have to indent relative to the open-paren. (goto-char up-list-pos) (if (and (not ConTeXt-indent-allhanging) (> pos (progn (down-list 1) (forward-comment (point-max)) (point)))) ;; Align with the first element after the open-paren. (current-column) ;; We're the first element after a hanging brace. (goto-char up-list-pos) (+ indent ConTeXt-indent-basic (ConTeXt-find-indent 'virtual)))) ;; We're now at the "beginning" of a line. ((not (and (not virtual) (eq (char-after) ?\\))) ;; Nothing particular here: just keep the same indentation. (+ indent (current-column))) ;; We're now looking at an item. ((looking-at ConTeXt-indent-item-re) ;; Indenting relative to an item, have to re-add the outdenting. (+ indent (current-column) ConTeXt-indent-item)) ;; We're looking at an environment starter. ((and (looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name))) (not (looking-at (concat (regexp-quote TeX-esc) (ConTeXt-environment-start-name) ConTeXt-text)))) ; other environments? (+ indent (current-column) ConTeXt-indent-basic)) (t (let ((col (current-column))) (if (not (and char (eq (char-syntax char) ?\())) ;; If the first char was not an open-paren, there's ;; a risk that this is really not an argument to the ;; macro at all. (+ indent col) (forward-sexp 1) (if (< (line-end-position) (save-excursion (forward-comment (point-max)) (point))) ;; we're indenting the first argument. (min (current-column) (+ ConTeXt-indent-arg col)) (skip-syntax-forward " ") (current-column)))))))))) ;; XML inside ConTeXt support (defun ConTeXt-last-unended-start-xml () "Leave point at the beginning of the last `tag' that is unstopped." (while (and (re-search-backward "<[_A-Za-z][-:._A-Za-z0-9]*\\([ \t\r\n]\\|[_A-Za-z][-:._A-Za-z0-9]*\=\"[^\"]*\"\\)*>\\|") (looking-at "")) (ConTeXt-last-unended-start-xml))) (defun ConTeXt-close-xml-tag () "Create an to match the last unclosed <...>. Not fool-proof." (interactive "*") (let ((new-line-needed (bolp)) text indentation) (save-excursion (condition-case nil (ConTeXt-last-unended-start-xml) (error (error "Couldn't find unended XML tag"))) (setq indentation (current-column)) (re-search-forward "<\\([_A-Za-z][-:._A-Za-z0-9]*\\)") (setq text (buffer-substring (match-beginning 1) (match-end 1)))) (indent-to indentation) (insert "") (if new-line-needed (insert ?\n)))) ;; Key bindings (defvar ConTeXt-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map TeX-mode-map) (define-key map "\e\C-a" 'ConTeXt-find-matching-start) (define-key map "\e\C-e" 'ConTeXt-find-matching-stop) ;; likely to change in the future (define-key map "\C-c!" 'ConTeXt-work-on-environment) (define-key map "\C-c\C-e" 'ConTeXt-environment) (define-key map "\C-c\n" 'ConTeXt-insert-item) (or (key-binding "\e\r") (define-key map "\e\r" 'ConTeXt-insert-item)) ;*** Alias (define-key map "\C-c]" 'ConTeXt-close-environment) (define-key map "\C-c\C-s" 'ConTeXt-section) ;; XML in ConTeXt support (define-key map "\C-c/" 'ConTeXt-close-xml-tag) map) "Keymap used in `ConTeXt-mode'.") ;;; Menu building ;; functions to create menu entries ;; ConTeXt \start... \stop... pairs ;; (Choose a different name than the one in LaTeX mode. Otherwise the ;; contents of the "Insert Environment" and "Change Environment" menus ;; will not be updated correctly upon loading and switching between ;; LaTeX and ConTeXt files. AFAICS this is due to a bug in ;; easymenu.el not returning the correct keymap when ;; `easy-menu-change' (and therefore `easy-menu-get-map') is called. ;; It just sees an entry with a matching name and returns this first ;; match.) (defvar ConTeXt-environment-menu-name "Insert Environment (C-c C-e)") (defun ConTeXt-environment-menu-entry (entry) "Create an entry for the environment menu." (vector (car entry) (list 'ConTeXt-environment-menu (car entry)) t)) (defvar ConTeXt-environment-modify-menu-name "Change Environment (C-u C-c C-e)") (defun ConTeXt-environment-modify-menu-entry (entry) "Create an entry for the change environment menu." (vector (car entry) (list 'ConTeXt-modify-environment (car entry)) t)) ;; ConTeXt define macros (defvar ConTeXt-define-menu-name "Define") (defun ConTeXt-define-menu-entry (entry) "Create an entry for the define menu." (vector entry (list 'ConTeXt-define-menu entry))) (defun ConTeXt-define-menu (define) "Insert DEFINE from menu." (ConTeXt-insert-define define)) ;; ConTeXt setup macros (defvar ConTeXt-setup-menu-name "Setup") (defun ConTeXt-setup-menu-entry (entry) "Create an entry for the setup menu." (vector entry (list 'ConTeXt-setup-menu entry))) (defun ConTeXt-setup-menu (setup) "Insert SETUP from menu." (ConTeXt-insert-setup setup)) ;; ConTeXt referencing macros (defvar ConTeXt-referencing-menu-name "Referencing") (defun ConTeXt-referencing-menu-entry (entry) "Create an entry for the referencing menu." (vector entry (list 'ConTeXt-referencing-menu entry))) (defun ConTeXt-referencing-menu (referencing) "Insert REFERENCING from menu." (ConTeXt-insert-referencing referencing)) ;; ConTeXt other macros (defvar ConTeXt-other-macro-menu-name "Other macro") (defun ConTeXt-other-macro-menu-entry (entry) "Create an entry for the other macro menu." (vector entry (list 'ConTeXt-other-macro-menu entry))) (defun ConTeXt-other-macro-menu (other-macro) "Insert OTHER MACRO from menu." (ConTeXt-insert-other-macro other-macro)) ;; meta-structure project structure menu entries (defvar ConTeXt-project-structure-menu-name "Project Structure") (defun ConTeXt-project-structure-menu (project-structure) "Insert project structure from menu." (ConTeXt-project-structure (let ((l ConTeXt-project-structure-list)) (- (length l) (length (member project-structure l)))))) (defun ConTeXt-project-structure-menu-entry (entry) "Create an ENTRY for the project structure menu." (vector entry (list 'ConTeXt-project-structure-menu entry))) ;; meta-structure section blocks menu entries (defvar ConTeXt-section-block-menu-name "Section Block") (defun ConTeXt-section-block-menu (section-block) "Insert section block from menu." (ConTeXt-section-block section-block)) (defun ConTeXt-section-block-menu-entry (entry) "Create an ENTRY for the section block menu." (vector entry (list 'ConTeXt-section-block-menu entry))) ;; section menu entries (defvar ConTeXt-section-menu-name "Section (C-c C-s)") (defun ConTeXt-section-enable-symbol (level) "Symbol used to enable section LEVEL in the menu bar." (intern (concat "ConTeXt-section-" (int-to-string level) "-enable"))) (defun ConTeXt-section-enable (entry) "Enable or disable section ENTRY from `ConTeXt-section-list'." (let ((level (nth 1 entry))) (set (ConTeXt-section-enable-symbol level) (>= level ConTeXt-largest-level)))) (defun ConTeXt-section-menu (level) "Insert section from menu." (let ((ConTeXt-section-hook (delq 'ConTeXt-section-heading (copy-sequence ConTeXt-section-hook)))) (ConTeXt-section level))) (defun ConTeXt-section-menu-entry (entry) "Create an ENTRY for the section menu." (let ((enable (ConTeXt-section-enable-symbol (nth 1 entry)))) (set enable t) (vector (car entry) (list 'ConTeXt-section-menu (nth 1 entry)) enable))) ;; etexshow support (defun ConTeXt-etexshow () "Call etexshow, if available, to show the definition of a ConText macro." (interactive) (if (fboundp 'etexshow) (let () (require 'etexshow) (funcall (symbol-function 'etexshow-cmd))) (error "etexshow is not installed. Get it from http://levana.de/emacs/"))) ;; menu itself (easy-menu-define ConTeXt-mode-command-menu ConTeXt-mode-map "Command menu used in ConTeXt mode." (TeX-mode-specific-command-menu 'context-mode)) ;; it seems the menu is evaluated at compile/load-time ;; we don't have ConTeXt-current-interface at that time ;; so make sure to do updates based on that variable in ;; ConTeXt-menu-update (easy-menu-define ConTeXt-mode-menu ConTeXt-mode-map "Menu used in ConTeXt mode." (TeX-menu-with-help `("ConTeXt" (,ConTeXt-project-structure-menu-name) (,ConTeXt-section-block-menu-name) (,ConTeXt-section-menu-name) ["Add Table of Contents to Emacs Menu" (imenu-add-to-menubar "TOC") t] "-" ["Macro ..." TeX-insert-macro :help "Insert a macro and possibly arguments"] ["Complete" TeX-complete-symbol :help "Complete the current macro or environment name"] ["Show ConTeXt Macro Definition" ConTeXt-etexshow] "-" (,ConTeXt-environment-menu-name) (,ConTeXt-environment-modify-menu-name) ["Item" ConTeXt-insert-item :help "Insert a new \\item into current environment"] (,ConTeXt-define-menu-name) (,ConTeXt-setup-menu-name) (,ConTeXt-other-macro-menu-name) "-" ("Insert Font" ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] ["Sans Serif" (TeX-font nil ?\C-f) :keys "C-c C-f C-f"] ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] ["Slanted" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"] ["Calligraphic" (TeX-font nil ?\C-a) :keys "C-c C-f C-a"]) ("Replace Font" ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] ["Sans Serif" (TeX-font t ?\C-f) :keys "C-u C-c C-f C-f"] ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] ["Slanted" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"] ["Calligraphic" (TeX-font t ?\C-a) :keys "C-u C-c C-f C-a"]) ["Delete Font" (TeX-font t ?\C-d) :keys "C-c C-f C-d"] "-" ["Comment or Uncomment Region" TeX-comment-or-uncomment-region :help "Make the selected region outcommented or active again"] ["Comment or Uncomment Paragraph" TeX-comment-or-uncomment-paragraph :help "Make the current paragraph outcommented or active again"] ,TeX-fold-menu "-" . ,TeX-common-menu-entries))) (defun ConTeXt-menu-update (&optional menu) "Update entries on AUCTeX menu." (or (not (memq major-mode '(context-mode))) (null ConTeXt-menu-changed) (not (fboundp 'easy-menu-change)) (progn (TeX-update-style) (setq ConTeXt-menu-changed nil) (message "Updating section menu...") (mapc 'ConTeXt-section-enable ConTeXt-section-list) (message "Updating environment menu...") (easy-menu-change '("ConTeXt") ConTeXt-environment-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-environment-menu-entry (ConTeXt-environment-list)))) (message "Updating modify environment menu...") (easy-menu-change '("ConTeXt") ConTeXt-environment-modify-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-environment-modify-menu-entry (ConTeXt-environment-list)))) (message "Updating define menu...") (easy-menu-change '("ConTeXt") ConTeXt-define-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-define-menu-entry ConTeXt-define-list))) (message "Updating setup menu...") (easy-menu-change '("ConTeXt") ConTeXt-setup-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-setup-menu-entry ConTeXt-setup-list))) (message "Updating referencing menu...") (easy-menu-change '("ConTeXt") ConTeXt-referencing-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-referencing-menu-entry ConTeXt-referencing-list))) (message "Updating other macro's menu...") (easy-menu-change '("ConTeXt") ConTeXt-other-macro-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-other-macro-menu-entry ConTeXt-other-macro-list))) (message "Updating project structure menu...") (easy-menu-change '("ConTeXt") ConTeXt-project-structure-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-project-structure-menu-entry ConTeXt-project-structure-list))) (message "Updating section block menu...") (easy-menu-change '("ConTeXt") ConTeXt-section-block-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-section-block-menu-entry ConTeXt-section-block-list))) (message "Updating section menu...") (easy-menu-change '("ConTeXt") ConTeXt-section-menu-name (LaTeX-split-long-menu (mapcar 'ConTeXt-section-menu-entry ConTeXt-section-list))) (message "Updating...done") (and menu (easy-menu-return-item ConTeXt-mode-menu menu)) ))) ;;; Option expander (defvar ConTeXt-texexec-option-nonstop "--nonstop " "Command line option for texexec to use nonstopmode.") (defun ConTeXt-expand-options () "Expand options for texexec command." (concat (let ((engine (eval (nth 4 (assq TeX-engine (TeX-engine-alist)))))) (when engine (format "--engine=%s " engine))) (unless (eq ConTeXt-current-interface "en") (format "--interface=%s " ConTeXt-current-interface)) (when TeX-source-correlate-mode (format "--passon=\"%s\" " (if (eq TeX-source-correlate-method-active 'synctex) TeX-synctex-tex-flags TeX-source-specials-tex-flags))) (unless TeX-interactive-mode ConTeXt-texexec-option-nonstop))) ;;; Mode ;; ConTeXt variables that are interface aware ;; They are mapped to interface specific variables (defvar ConTeXt-language-variable-list '(ConTeXt-define-list ConTeXt-setup-list ConTeXt-referencing-list ConTeXt-other-macro-list ConTeXt-project-structure-list ConTeXt-section-block-list ConTeXt-section-list ConTeXt-text ConTeXt-item-list ConTeXt-extra-paragraph-commands)) (defcustom ConTeXt-clean-intermediate-suffixes ;; See *suffixes in texutil.pl. '("\\.tui" "\\.tup" "\\.ted" "\\.tes" "\\.top" "\\.log" "\\.tmp" "\\.run" "\\.bck" "\\.rlg" "\\.mpt" "\\.mpx" "\\.mpd" "\\.mpo" "\\.tuo" "\\.tub" "\\.top" "-mpgraph\\.mp" "-mpgraph\\.mpd" "-mpgraph\\.mpo" "-mpgraph\\.mpy" "-mprun\\.mp" "-mprun\\.mpd" "-mprun\\.mpo" "-mprun\\.mpy") "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defcustom ConTeXt-clean-output-suffixes '("\\.dvi" "\\.pdf" "\\.ps") "List of regexps matching suffixes of files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (TeX-abbrev-mode-setup context-mode) (defun ConTeXt-mode-common-initialization () "Initialization code that is common for all ConTeXt interfaces." ;; `plain-TeX-common-initialization' kills all local variables, but ;; we need to keep ConTeXt-current-interface, so save and restore ;; it. (let (save-ConTeXt-current-interface) (setq save-ConTeXt-current-interface ConTeXt-current-interface) (plain-TeX-common-initialization) (setq ConTeXt-current-interface save-ConTeXt-current-interface)) (setq major-mode 'context-mode) (setq local-abbrev-table context-mode-abbrev-table) ;; Make language specific variables buffer local (dolist (symbol ConTeXt-language-variable-list) (make-variable-buffer-local symbol)) (require (intern (concat "context-" ConTeXt-current-interface))) (dolist (symbol ConTeXt-language-variable-list) (set symbol (symbol-value (intern (concat (symbol-name symbol) "-" ConTeXt-current-interface))))) ;; Create certain regular expressions based on language (setq ConTeXt-indent-item-re (concat "\\\\\\(" (mapconcat 'identity ConTeXt-item-list "\\|") "\\)\\>")) ;; What's the deepest level at we can collapse a document? ;; set only if user has not set it. Need to be set before menu is created. ;; level 2 is "section" (or ConTeXt-largest-level (setq ConTeXt-largest-level 2)) ;; keybindings (use-local-map ConTeXt-mode-map) ;; Indenting (set (make-local-variable 'indent-line-function) 'ConTeXt-indent-line) (set (make-local-variable 'fill-indent-according-to-mode) t) ;; Paragraph formatting (set (make-local-variable 'LaTeX-syntactic-comments) nil) (set (make-local-variable 'LaTeX-paragraph-commands-regexp) (ConTeXt-paragraph-commands-regexp)) (set (make-local-variable 'paragraph-ignore-fill-prefix) t) (set (make-local-variable 'fill-paragraph-function) 'LaTeX-fill-paragraph) (set (make-local-variable 'adaptive-fill-mode) nil) (setq paragraph-start (concat "[ \t]*\\(" (ConTeXt-paragraph-commands-regexp) "\\|" "\\$\\$\\|" ; Plain TeX display math "$\\)")) (setq paragraph-separate (concat "[ \t]*\\(" "\\$\\$" ; Plain TeX display math "\\|$\\)")) ;; Keybindings and menu (use-local-map ConTeXt-mode-map) (easy-menu-add ConTeXt-mode-menu ConTeXt-mode-map) (easy-menu-add ConTeXt-mode-command-menu ConTeXt-mode-map) (setq ConTeXt-menu-changed t) (if (= emacs-major-version 20) (make-local-hook 'activate-menubar-hook)) (add-hook 'activate-menubar-hook 'ConTeXt-menu-update nil t) ;; Outline support (require 'outline) (set (make-local-variable 'outline-level) 'ConTeXt-outline-level) (set (make-local-variable 'outline-regexp) (ConTeXt-outline-regexp t)) ;;(make-local-variable 'outline-heading-end-regexp) (setq TeX-header-end (ConTeXt-header-end) TeX-trailer-start (ConTeXt-trailer-start)) ;; font switch support (set (make-local-variable 'TeX-font-list) ConTeXt-font-list) ;; imenu support (set (make-local-variable 'imenu-create-index-function) 'ConTeXt-imenu-create-index-function) ;; run hooks (setq TeX-command-default "ConTeXt") (setq TeX-sentinel-default-function 'TeX-ConTeXt-sentinel) (TeX-run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'ConTeXt-mode-hook)) (defun context-guess-current-interface () "Guess what ConTeXt interface the current buffer is using." (interactive) (save-excursion (goto-char (point-min)) (setq ConTeXt-current-interface (cond ((re-search-forward "%.*?interface=en" (+ 512 (point)) t) "en") ((re-search-forward "%.*?interface=nl" (+ 512 (point)) t) "nl") ((re-search-forward "\\\\starttext" (+ 1024 (point)) t) "en") ((re-search-forward "\\\\starttekst" (+ 1024 (point)) t) "nl") (t ConTeXt-default-interface))))) ;;;###autoload (defalias 'ConTeXt-mode 'context-mode) ;;;###autoload (defun context-mode () "Major mode in AUCTeX for editing ConTeXt files. Special commands: \\{ConTeXt-mode-map} Entering `context-mode' calls the value of `text-mode-hook', then the value of `TeX-mode-hook', and then the value of context-mode-hook." (interactive) (context-guess-current-interface) (require (intern (concat "context-" ConTeXt-current-interface))) (funcall (intern (concat "context-" ConTeXt-current-interface "-mode")))) (provide 'context) ;;; context.el ends here auctex-11.87/multi-prompt.el0000644000000000000000000001762311170667114014531 0ustar rootroot;;; multi-prompt.el --- Completing read of multiple strings ;; Copyright (C) 1996, 1997, 2000, 2009 Free Software Foundation ;; Author: Per Abrahamsen ;; Maintainer: auctex-devel@gnu.org ;; Created: 1996-08-31 ;; Keywords: extensions ;; This program 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 program 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 this program; if not, write to the Free Software ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Commentary: ;; This package is written for use in emacs lisp programs, where the ;; user is prompted for a string of the form: ;; ;; FOO,BAR,BAZ ;; ;; where FOO, BAR, and BAZ are elements of some table. The function ;; `multi-prompt' is a replacement `completing-read' that will allow ;; the user to enter a string like the above, yet get completion on ;; all FOO, BAR, and BAZ. ;;; Code: (defvar multi-prompt-found nil "List of entries currently added during a `multi-prompt'.") ;;;###autoload (defun multi-prompt (separator unique prompt table &optional mp-predicate require-match initial history) "Completing prompt for a list of strings. The first argument SEPARATOR should be the string (of length 1) to separate the elements in the list. The second argument UNIQUE should be non-nil, if each element must be unique. The remaining elements are the arguments to `completing-read'. See that." (let ((old-map (if require-match minibuffer-local-must-match-map minibuffer-local-completion-map)) (new-map (make-sparse-keymap))) (if (fboundp 'set-keymap-parent) ;; `set-keymap-parent' was introduced in Emacs 19.32. (set-keymap-parent new-map old-map) (setq new-map (copy-keymap old-map))) (define-key new-map separator (if require-match 'multi-prompt-next-must-match 'multi-prompt-next)) (define-key new-map "\C-?" 'multi-prompt-delete) (let* ((minibuffer-local-completion-map new-map) (minibuffer-local-must-match-map new-map) (multi-prompt-found nil) (done nil) (filter (cond (unique (lambda (x) (and (not (member (car x) multi-prompt-found)) (or (null mp-predicate) (funcall mp-predicate x))))) (mp-predicate))) (answer (catch 'multi-prompt-exit (while t (let ((extra (catch 'multi-prompt-next (throw 'multi-prompt-exit (completing-read prompt table filter require-match initial history))))) (cond ((eq extra 'back) (when multi-prompt-found (setq prompt (substring prompt 0 (- 0 (length separator) (length (car multi-prompt-found)))) initial (car multi-prompt-found)) (setq multi-prompt-found (cdr multi-prompt-found)))) (t (setq prompt (concat prompt extra separator) initial nil) (setq multi-prompt-found (cons extra multi-prompt-found))))))))) (if answer (nreverse (cons answer multi-prompt-found)) multi-prompt-found)))) (defun multi-prompt-delete () (interactive) (if (bobp) (throw 'multi-prompt-next 'back) (call-interactively 'backward-delete-char))) (defun multi-prompt-next () (interactive) (throw 'multi-prompt-next (cond ((fboundp 'minibuffer-contents-no-properties) ;; buffer-substring no longer works in emacs-21, it returns ;; the whole prompt line. Use this instead. (minibuffer-contents-no-properties)) (t (buffer-substring-no-properties (point-min) (point-max)))))) (defun multi-prompt-next-must-match () (interactive) (when (call-interactively 'minibuffer-complete) (let ((content (buffer-substring-no-properties (point-min) (point-max)))) (when (or (not require-match) (assoc content table)) (throw 'multi-prompt-next content))))) ;;; Support for key=value completion ;; The following code was ripped out of crm.el ;; (completing-read-multiple) and extended to support comma-separated ;; key=value lists. The code is separate from the code above. ;; WARNING: This obviously relies on internals of crm.el and ;; minibuffer.el and will therefore have to be adapted if these ;; change. ;; TODO: How to support stuff like "caption={[one]two}" or ;; "morekeywords={one,three,five}"? (defvar multi-prompt-key-value-sep "=" "Single-character string separating key=value pairs.") (defvar multi-prompt-completion-table nil "Completion table used by `multi-prompt-key-value'.") (defun multi-prompt-key-value-collection-fn (string predicate flag) "Function used by `multi-prompt-key-value' to compute completion values. The value of STRING is the string to be completed. The value of PREDICATE is a function to filter possible matches, or nil if none. The value of FLAG is used to specify the type of completion operation. A value of nil specifies `try-completion'. A value of t specifies `all-completions'. A value of lambda specifes a test for an exact match. For more information on STRING, PREDICATE, and FLAG, see the Elisp Reference sections on 'Programmed Completion' and 'Basic Completion Functions'." (let ((beg 0) (last 0) matched) (while (string-match multi-prompt-key-value-sep string beg) (setq matched t last beg beg (match-end 0))) (completion-table-with-context (substring string 0 beg) (if (not matched) multi-prompt-completion-table (cadr (assoc (substring string last (1- beg)) multi-prompt-completion-table))) (substring string beg) predicate flag))) (defun multi-prompt-expand-completion-table (table) "Return an expanded version of completion table TABLE. This is achieved by eval'ing all variables in the value parts of the alist elements." (mapcar (lambda (x) (if (and (cadr x) (symbolp (cadr x)) (not (functionp (cadr x)))) (cons (car x) (list (eval (cadr x)))) x)) table)) ;; Silence the byte compiler. (defvar crm-local-must-match-map) (defvar crm-local-completion-map) ;;;###autoload (defun multi-prompt-key-value (prompt table &optional predicate require-match initial-input hist def inherit-input-method) "Read multiple strings, with completion and key=value support. PROMPT is a string to prompt with, usually ending with a colon and a space. TABLE is an alist. The car of each element should be a string representing a key and the optional cdr should be a list with strings to be used as values for the key. See the documentation for `completing-read' for details on the other arguments: PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and INHERIT-INPUT-METHOD. The return value is the string as entered in the minibuffer." (require 'crm) (let* ((minibuffer-completion-table #'multi-prompt-key-value-collection-fn) (minibuffer-completion-predicate predicate) (minibuffer-completion-confirm (unless (eq require-match t) require-match)) (multi-prompt-completion-table ;; Expand the table here because completion would otherwise ;; interpret symbols in the table as functions. However, it ;; would be nicer if this could be done during the actual ;; completion in order to avoid walking through the whole ;; table. (multi-prompt-expand-completion-table table)) (map (if require-match crm-local-must-match-map crm-local-completion-map)) (input (read-from-minibuffer prompt initial-input map nil hist def inherit-input-method))) (and def (string-equal input "") (setq input def)) input)) (provide 'multi-prompt) ;;; multi-prompt.el ends here auctex-11.87/plain-tex.el0000644000000000000000000002147511476775237014000 0ustar rootroot;;; plain-tex.el --- Support for plain TeX documents. ;; Copyright (C) 2010 Free Software Foundation, Inc. ;; Maintainer: auctex-devel@gnu.org ;; 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 provides support for plain TeX in AUCTeX. ;;; Code: (require 'tex) (require 'tex-buf) ;;; Tool bar (defcustom plain-TeX-enable-toolbar t "Enable TeX tool bar in plain TeX mode." :group 'TeX-tool-bar :type 'boolean) (defun plain-TeX-maybe-install-toolbar () "Conditionally install tool bar buttons for plain TeX mode. Install tool bar if `plain-TeX-enable-toolbar' is non-nil." (when plain-TeX-enable-toolbar ;; Defined in `tex-bar.el': (TeX-install-toolbar))) ;;; Keymap and menu (defvar plain-TeX-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map TeX-mode-map) map) "Keymap used in plain TeX mode.") (defvar plain-TeX-menu-entries (TeX-menu-with-help `(["Macro..." TeX-insert-macro :help "Insert a macro and possibly arguments"] ["Complete" TeX-complete-symbol :help "Complete the current macro"] "-" ("Insert Font" ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] ["Sans Serif" (TeX-font nil ?\C-f) :keys "C-c C-f C-f"] ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] ["Slanted" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"] ["Calligraphic" (TeX-font nil ?\C-a) :keys "C-c C-f C-a"]) ("Replace Font" ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] ["Sans Serif" (TeX-font t ?\C-f) :keys "C-u C-c C-f C-f"] ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] ["Slanted" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"] ["Calligraphic" (TeX-font t ?\C-a) :keys "C-u C-c C-f C-a"]) ["Delete Font" (TeX-font t ?\C-d) :keys "C-c C-f C-d"] "-" ["Comment or Uncomment Region" TeX-comment-or-uncomment-region :help "Comment or uncomment the currently selected region"] ["Comment or Uncomment Paragraph" TeX-comment-or-uncomment-paragraph :help "Comment or uncomment the paragraph containing point"] ,TeX-fold-menu "-" . ,TeX-common-menu-entries))) (easy-menu-define plain-TeX-mode-command-menu plain-TeX-mode-map "Command menu used in TeX mode." (TeX-mode-specific-command-menu 'plain-tex-mode)) (easy-menu-define plain-TeX-mode-menu plain-TeX-mode-map "Menu used in plain TeX mode." (cons "TeX" plain-TeX-menu-entries)) ;;; The mode (defcustom plain-TeX-mode-hook nil "A hook run in plain TeX mode buffers." :type 'hook :group 'TeX-misc) (TeX-abbrev-mode-setup plain-tex-mode) ;;;###autoload (defun TeX-plain-tex-mode () "Major mode in AUCTeX for editing plain TeX files. See info under AUCTeX for documentation. Special commands: \\{plain-TeX-mode-map} Entering `plain-tex-mode' calls the value of `text-mode-hook', then the value of `TeX-mode-hook', and then the value of plain-TeX-mode-hook." (interactive) (plain-TeX-common-initialization) (setq major-mode 'plain-tex-mode) (use-local-map plain-TeX-mode-map) (easy-menu-add plain-TeX-mode-menu plain-TeX-mode-map) (easy-menu-add plain-TeX-mode-command-menu plain-TeX-mode-map) (setq TeX-base-mode-name "TeX") (setq TeX-command-default "TeX") (setq TeX-sentinel-default-function 'TeX-TeX-sentinel) (add-hook 'tool-bar-mode-on-hook 'plain-TeX-maybe-install-toolbar nil t) (when (if (featurep 'xemacs) (featurep 'toolbar) (and (boundp 'tool-bar-mode) tool-bar-mode)) (plain-TeX-maybe-install-toolbar)) (TeX-run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'plain-TeX-mode-hook) (TeX-set-mode-name)) (defun plain-TeX-common-initialization () "Common initialization for plain TeX like modes." (VirTeX-common-initialization) (set-syntax-table TeX-mode-syntax-table) (setq local-abbrev-table latex-mode-abbrev-table) (setq paragraph-start (concat "\\(^[ \t]*$" "\\|" (regexp-quote TeX-esc) "par\\|" "^[ \t]*" (regexp-quote TeX-esc) "\\(" "begin\\|end\\|part\\|chapter\\|" "section\\|subsection\\|subsubsection\\|" "paragraph\\|include\\|includeonly\\|" "tableofcontents\\|appendix\\|label\\|caption\\|" "\\[\\|\\]" ; display math delimitors "\\)" "\\|" "^[ \t]*\\$\\$" ; display math delimitor "\\)" )) (setq paragraph-separate (concat "[ \t]*" "\\(" (regexp-quote TeX-esc) "par\\|" "%\\|" "$\\|" "\\$\\$\\|" (regexp-quote TeX-esc) "\\(" "begin\\|end\\|label\\|caption\\|part\\|chapter\\|" "section\\|subsection\\|subsubsection\\|" "paragraph\\|include\\|includeonly\\|" "tableofcontents\\|appendix\\|" (regexp-quote TeX-esc) "\\)" "\\)")) (setq TeX-header-end (regexp-quote "%**end of header")) (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye"))) (TeX-add-symbols ;; From the TeX Book, Appendix B ;; ;; XXX: This should be refined and extended by somebody who is ;; familiar with plain TeX. "dag" "ddag" "copyright" "TeX" "dots" "break" "nobreak" "allowbreak" "hbox" "slash" "enskip" "quad" "qquad" "enspace" "thinspace" "negthinspace" "smallskip" "medskip" "bigskip" "eject" "supereject" "goodbreak" "filbreak" "smallbreak" "medbreak" "bigbreak" "hrulefill" "dotfill" "rightarrowfill" "leftarrowfill" "upbracefill" "downbracefill" "halign" "valign" "omit" "span" "multispan" "centerline" "rightline" "leftline" "line" "par" "noindent" "frenchspacing" "nonfrenchspacing" "llap" "rlap" "raggedright" "ttraggedright" "raggedbottom" "normalbottom" "obeylines" "obeyspaces" "hsize" "vsize" "hoffset" "voffset" "tolerance" "looseness" "parindent" "baselineskip" "parskip") (TeX-run-style-hooks "TEX")) ;;; Miscellaneous (defcustom plain-TeX-clean-intermediate-suffixes TeX-clean-default-intermediate-suffixes "List of regexps matching suffixes of intermediate files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) (defcustom plain-TeX-clean-output-suffixes TeX-clean-default-output-suffixes "List of regexps matching suffixes of output files to be deleted. The regexps will be anchored at the end of the file name to be matched, i.e. you do _not_ have to cater for this yourself by adding \\\\' or $." :type '(repeat regexp) :group 'TeX-command) ;;; AmSTeX (defvar AmSTeX-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map TeX-mode-map) map) "Keymap used in `AmSTeX-mode'.") ;; Menu for AmSTeX mode (easy-menu-define AmSTeX-mode-command-menu AmSTeX-mode-map "Command menu used in AmsTeX mode." (TeX-mode-specific-command-menu 'ams-tex-mode)) (easy-menu-define AmSTeX-mode-menu AmSTeX-mode-map "Menu used in AMS-TeX mode." (cons "AmS-TeX" plain-TeX-menu-entries)) ;;;###autoload (defun ams-tex-mode () "Major mode in AUCTeX for editing AmS-TeX files. See info under AUCTeX for documentation. Special commands: \\{AmSTeX-mode-map} Entering AmS-tex-mode calls the value of `text-mode-hook', then the value of `TeX-mode-hook', and then the value of `AmS-TeX-mode-hook'." (interactive) (plain-TeX-common-initialization) (setq major-mode 'ams-tex-mode) (use-local-map AmSTeX-mode-map) ;; Menu (easy-menu-add AmSTeX-mode-menu AmSTeX-mode-map) (easy-menu-add AmSTeX-mode-command-menu AmSTeX-mode-map) (setq TeX-base-mode-name "AmS-TeX") (setq TeX-command-default "AmSTeX") (TeX-run-mode-hooks 'text-mode-hook 'TeX-mode-hook 'AmS-TeX-mode-hook) (TeX-set-mode-name)) (provide 'plain-tex) ;;; plain-tex.el ends here auctex-11.87/Makefile.in0000644000000000000000000004473712050755571013614 0ustar rootroot# Makefile for AUCTeX # Maintainer: auctex-devel@gnu.org # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free Software # Foundation, Inc. # 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 Street, Fifth Floor, Boston, # MA 02110-1301, USA. @SET_MAKE@ prefix = @prefix@$(null) exec_prefix = @exec_prefix@$(null) libdir = @libdir@$(null) packagedatadir = @packagedatadir@$(null) datarootdir = @datarootdir@$(null) datadir = @datadir@$(null) localstatedir = @localstatedir@$(null) infodir = @infodir@$(null) lispdir = @lispdir@$(null) auctexstartfile=@auctexstartfile@ packagelispdir = @packagelispdir@$(null) packagedatadir = @packagedatadir@$(null) packagedir = @packagedir@$(null) autodir = @autodir@$(null) preview_enabled=@preview_enabled@ subdirs=@subdirs@ styledir = $(packagedatadir)/style AUCTEXDATE = @AUCTEXDATE@ AUCTEXVERSION = @AUCTEXVERSION@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = ./mkinstalldirs DESTDIR= PACKAGE=auctex PACKAGE_INFO=auctex preview-latex EMACS=@EMACS@ ELCC=$(EMACS) -batch -q -no-site-file -no-init-file -l lpath.el AUTOLOAD=--eval '(let ((generated-autoload-file (expand-file-name "$@"))) \ (mapcar (function update-file-autoloads) command-line-args-left) \ (save-buffers-kill-emacs t))' DESCEND=test -z "$(subdirs)" || (OLDPWD="`pwd`";for i in ""$(subdirs);do cd $$i;echo "Descending into `pwd`";$(MAKE) 'DESTDIR=$(DESTDIR)' PACKAGE=$(PACKAGE) $@ || exit $$?;cd "$$OLDPWD";echo "Ascending into $$OLDPWD";done) CVSFILES=autogen.sh .cvsignore doc/.cvsignore preview/.cvsignore \ preview/latex/.cvsignore README.CVS .SUFFIXES: .el .elc .texi SHELL = /bin/sh CP = cp -p CP_A = $(CP) -R DIST_PREFIX=$(PWD)/auctex-dist FTPDIR = $(DIST_PREFIX)/ftp WWWDIR = $(DIST_PREFIX)/www XEMACS_BUILD_DIR = xemacs-build PREVIEW_BUILD_DIR = preview-build COMMITTER="David Kastrup " RPMROOT = /usr/src/redhat RPM_SIGN = --sign MULESRC = @MULESRC@ MULEELC = @MULEELC@ AUCSRC = tex.el tex-buf.el tex-style.el plain-tex.el latex.el tex-info.el \ texmathp.el multi-prompt.el tex-mik.el font-latex.el tex-font.el \ context.el context-en.el context-nl.el tex-fold.el \ toolbar-x.el tex-bar.el bib-cite.el AUCELC = $(AUCSRC:.el=.elc) STYLESRC = style/prosper.el \ style/slides.el style/foils.el style/amstex.el \ style/article.el style/book.el style/letter.el \ style/report.el style/amsart.el style/amsbook.el \ style/epsf.el style/psfig.el style/latexinfo.el \ style/dutch.el style/german.el style/dk.el \ style/j-article.el style/j-book.el style/j-report.el \ style/jarticle.el style/jbook.el style/jreport.el \ style/dinbrief.el style/virtex.el style/plfonts.el \ style/plhb.el style/harvard.el style/swedish.el \ style/danish.el style/slovak.el style/czech.el \ style/amsmath.el style/amstext.el style/amsbsy.el \ style/amsopn.el style/amsthm.el style/natbib.el \ style/index.el style/makeidx.el style/multind.el \ style/varioref.el style/fancyref.el style/mdwlist.el \ style/ngerman.el style/graphicx.el style/graphics.el \ style/verbatim.el style/scrbase.el style/scrartcl.el \ style/scrbook.el style/scrreprt.el style/scrlttr2.el \ style/scrpage2.el style/captcont.el style/subfigure.el \ style/paralist.el style/booktabs.el style/emp.el \ style/jura.el style/alphanum.el style/beamer.el \ style/alltt.el style/italian.el style/doc.el \ style/ltxdoc.el style/ltx-base.el style/units.el \ style/nicefrac.el style/url.el style/listings.el \ style/jurabib.el style/csquotes.el style/jsarticle.el \ style/jsbook.el style/babel.el style/dk-bib.el \ style/inputenc.el style/frenchb.el style/francais.el \ style/MinionPro.el style/pdfsync.el style/polish.el \ style/polski.el style/icelandic.el style/comment.el \ style/flashcards.el style/pstricks.el style/nomencl.el \ style/hyperref.el style/bulgarian.el style/CJK.el \ style/ruby.el style/CJKutf8.el style/tabularx.el \ style/multido.el style/pst-grad.el style/pst-node.el \ style/pst-plot.el style/pst-slpe.el style/shortvrb.el \ style/austrian.el style/naustrian.el style/french.el \ style/lettrine.el style/multicol.el style/xspace.el \ style/setspace.el style/biblatex.el STYLEELC = $(STYLESRC:.el=.elc) CLEANFILES = $(AUCELC) $(STYLEELC) $(MULEELC) DISTCLEANFILES = Makefile tex-site.el tex-site.el.out auctex.el \ auto-loads.el config.* DISTTEXTS = FAQ INSTALL INSTALL.windows README TODO NOSEARCH = style/.nosearch all: lisp docs $(DESCEND) .PHONY: all lisp info dvi some install install-el install-lisp docs \ install-docs install-auto install-metadata install-startup \ install-man clean distclean maintainer-clean extraclean \ tar-ball-clean check-tag release-commit dist snapshot patch \ tar-ball rpm-packages wc xemacs-package windows-package \ release-sign release-upload preview-ball lisp: tex-site.el $(AUCSRC) $(STYLESRC) $(MULESRC) $(ELCC) -f batch-byte-compile $(AUCSRC) $(STYLESRC) $(MULESRC) docs: cd doc ; $(MAKE) all info: cd doc ; $(MAKE) info dvi: cd doc ; $(MAKE) dvi tex-site.el: tex-site.el.out auto-loads.el Makefile cat tex-site.el.out >$@ test X$(packagedir) != Xno || cat auto-loads.el >>$@ echo "(provide 'tex-site)" >>$@ ; \ test X$(packagedir) != Xno || echo ";;; tex-site.el ends here" >>$@ tex-site.el.out: tex-site.el.in Makefile config.status ./config.status auctex.el: auctex.el.in config.status ./config.status configure: configure.ac aclocal.m4 autoconf Makefile: Makefile.in config.status ./config.status doc/Makefile: doc/Makefile.in config.status ChangeLog ./config.status config.status: configure ./config.status --recheck auto-loads.el: $(AUCSRC) $(MULESRC) Makefile test X$(packagedir) != Xno || { \ rm -f $@ ; \ $(ELCC) $(AUTOLOAD) $(AUCSRC) $(MULESRC) || : ; \ test -r $@ || { \ echo ";; Auto-generated part of tex-site.el" > $@ ; \ echo " " >> $@ ; \ $(ELCC) $(AUTOLOAD) $(AUCSRC) $(MULESRC) ; \ } ; \ } some: $(AUCELC) $(STYLEELC) install: install-lisp install-docs install-images install-startup $(DESCEND) $(MAKE) 'DESTDIR=$(DESTDIR)' install-metadata install-man: doc/Makefile cd doc && $(MAKE) 'DESTDIR=$(DESTDIR)' install-man $(INSTALL_DATA) RELEASE $(DESTDIR)$(packagedir)/man/auctex install-startup: test $(packagedir) != no || \ $(INSTALL_DATA) auctex.el $(DESTDIR)$(auctexstartfile) install-el: -$(MKINSTALLDIRS) $(DESTDIR)$(lispdir) rm -f $(DESTDIR)$(packagelispdir)/tex-site.el # Remove old (CVS-version) mistakes test ! -f $(DESTDIR)$(lispdir)/tex-site.el || { \ if grep -q "tex-site.*Don't edit." $(DESTDIR)$(lispdir)/tex-site.el; then \ echo "Overwriting old tex-site.el" ; \ else \ echo "Renaming old tex-site.el to tex-site.el.save" ; \ mv $(DESTDIR)$(lispdir)/tex-site.el $(DESTDIR)$(lispdir)/tex-site.el.save ; \ fi; \ } if test X$(packagedir) = Xno; \ then $(INSTALL_DATA) tex-site.el $(DESTDIR)$(lispdir) ; \ else rm -f $(DESTDIR)$(lispdir)/tex-site.el ; \ fi -$(MKINSTALLDIRS) $(DESTDIR)$(packagelispdir) @: $(MAKE) ; for x in $(AUCSRC) $(MULESRC); do \ echo '$(INSTALL_DATA)' $$x '$(DESTDIR)$(packagelispdir)' ; \ done @for x in $(AUCSRC) $(MULESRC); do \ $(INSTALL_DATA) $$x $(DESTDIR)$(packagelispdir) ; \ done; -$(MKINSTALLDIRS) $(DESTDIR)$(styledir) $(INSTALL_DATA) $(NOSEARCH) $(DESTDIR)$(styledir) @: $(MAKE) ; for x in $(STYLESRC) ; do \ echo '$(INSTALL_DATA)' $$x '$(DESTDIR)$(styledir)' ; \ done; @for x in $(STYLESRC) ; do \ $(INSTALL_DATA) $$x $(DESTDIR)$(styledir) ; \ done; -$(MKINSTALLDIRS) $(DESTDIR)$(autodir) -$(INSTALL_DATA) $(NOSEARCH) $(DESTDIR)$(autodir) install-lisp: some install-el @: $(MAKE) ; for x in $(AUCSRC) $(MULESRC); do \ echo '$(INSTALL_DATA)' $${x}c '$(DESTDIR)$(packagelispdir)' ; \ done @for x in $(AUCSRC) $(MULESRC); do \ $(INSTALL_DATA) $${x}c $(DESTDIR)$(packagelispdir) ; \ done @: $(MAKE) ; for x in $(STYLESRC) ; do \ echo '$(INSTALL_DATA)' $${x}c '$(DESTDIR)$(styledir)' ; \ done @for x in $(STYLESRC) ; do \ $(INSTALL_DATA) $${x}c $(DESTDIR)$(styledir) ; \ done install-images: -$(MKINSTALLDIRS) $(DESTDIR)$(packagedatadir)/images @: $(MAKE) ; for x in images/*.xpm ; do \ echo '$(INSTALL_DATA)' $${x} '$(DESTDIR)$(packagedatadir)/images' ; \ done @for x in images/*.xpm ; do \ $(INSTALL_DATA) $${x} $(DESTDIR)$(packagedatadir)/images ; \ done install-docs: doc/Makefile cd doc ; $(MAKE) DESTDIR=$(DESTDIR) install-auctex test "x$(preview_enabled)" != xyes || { \ cd doc ; $(MAKE) DESTDIR=$(DESTDIR) install-preview; } install-auto: @echo "Use \"M-x TeX-auto-generate-global RET\" instead." install-metadata: test "x$(packagedir)" = xno || { \ $(MKINSTALLDIRS) $(DESTDIR)$(packagedir)/pkginfo || : ; \ if test "x$(preview_enabled)" = xyes; then \ $(ELCC) -l preview/prv-install -f preview-make-package $(DESTDIR)$(packagedir) "$(PACKAGE)" \"`echo $(AUCTEXDATE)|sed 's/\(.*\)-\(.*\)-\(.*\)/\1.\2\3/'`\" \"$(AUCTEXVERSION)\" tex-site.el preview/auto.el; \ else \ $(ELCC) -l preview/prv-install -f preview-make-package $(DESTDIR)$(packagedir) "$(PACKAGE)" \"`echo $(AUCTEXDATE)|sed 's/\(.*\)-\(.*\)-\(.*\)/\1.\2\3/'`\" \"$(AUCTEXVERSION)\" tex-site.el; \ fi && \ cd $(DESTDIR)$(packagedir) && \ find "etc/$(PACKAGE)" "lisp/$(PACKAGE)" -print >"pkginfo/MANIFEST.$(PACKAGE)" && \ for i in $(PACKAGE_INFO); do \ test -r "info/$$i.info" && echo "info/$$i.info" >> "pkginfo/MANIFEST.$(PACKAGE)" ; \ done && \ echo "pkginfo/MANIFEST.$(PACKAGE)" >> "pkginfo/MANIFEST.$(PACKAGE)" ; \ } .el.elc: $(ELCC) -f batch-byte-compile $< clean: doc/Makefile rm -f $(CLEANFILES) cd doc && $(MAKE) clean $(DESCEND) distclean: doc/Makefile rm -f $(CLEANFILES) $(DISTCLEANFILES) cd doc && $(MAKE) distclean $(DESCEND) maintainer-clean: doc/Makefile rm -f $(DISTTEXTS) rm -rf autom4te.cache rm -f $(CLEANFILES) $(DISTCLEANFILES) cd doc && $(MAKE) maintainer-clean $(DESCEND) extraclean: maintainer-clean rm -f *~ \#*\# tar-ball-clean: check-tag rm -rf auctex-$(TAG)/ rm -rf $(XEMACS_BUILD_DIR)/ wc: wc $(AUCSRC) $(STYLESRC) # ---------------------------------------------------------------------- # The targets below are concerned with the release process and # intended to be used only by the maintainers. # Steps for making a release: # # 1) release-commit TAG= COMMITTER= # Tag the release. # # 2) dist TAG= # Create the tar ball. # # 3) xemacs-package TAG= # Create the precompiled XEmacs package. # # 4) windows-package WEMACSVER= TAG= # Create the precompiled AUCTeX package for Windows. # # 5) release-sign # Sign the tar ball and create directive files for upload. # # 6) release-upload # Upload files to GNU FTP server. # # 7) www-doc TAG= GENDOCSPATCH= # Create documentation for AUCTeX home page. # # 8) preview-ball TAG= # Create preview package. (Not for GNU FTP server but for CTAN.) dist: check-tag tar-ball snapshot: dist check-tag: @if [ "X$(TAG)" = "X" ]; then echo "*** Error: No TAG ***"; exit 1; fi release-commit: check-tag @echo "Tagging release $(TAG) in CVS ..." sleep 5 mv ChangeLog ChangeLog.old echo `date "+%Y-%m-%d "`" "${COMMITTER} > ChangeLog echo >> ChangeLog echo " * Version" $(TAG) released. >> ChangeLog echo >> ChangeLog cat ChangeLog.old >> ChangeLog cvs commit -m 'Release_$(TAG)' ChangeLog cvs tag release_`echo $(TAG) | sed -e 's/[.]/_/g'` tar-ball: doc/Makefile test ! -d auctex-$(TAG) || rm -r auctex-$(TAG) mkdir auctex-$(TAG) # Use TAG_EXPORT if set (for snapshots) cvs export -d auctex-$(TAG) \ `echo $${TAG_EXPORT:=$(TAG)} | \ sed -e '/^\([-0-9]*[0-9]\)[-a-z]*$$/s//-D \1/' \ -e '/[.]/{s/^/-r release_/;s/[.]/_/g}'` auctex cd auctex-$(TAG) && AUCTEXVERSION=$(TAG) AUCTEXDATE=$(AUCTEXDATE) ./autogen.sh && rm $(CVSFILES) chmod -R go-w+rX auctex-$(TAG) rm -rf $(FTPDIR) mkdir -p $(FTPDIR) tar -cf - --owner=root --group=root auctex-$(TAG) | gzip --best > $(FTPDIR)/auctex-$(TAG).tar.gz -zip -r $(FTPDIR)/auctex-$(TAG).zip auctex-$(TAG) $(CP) auctex-$(TAG)/CHANGES $(FTPDIR)/CHANGES $(CP) auctex-$(TAG)/RELEASE $(FTPDIR)/RELEASE-$(TAG) # The following files aren't produced in auctex-$(TAG) since they # are not in the tarball and should not become part of the patch target. $(CP) auctex-$(TAG)/doc/version.texi doc/version.texi cd doc && $(MAKE) extradist rm -f doc/version.texi $(CP) doc/auctex.ps doc/auctex.pdf doc/tex-ref.ps doc/tex-ref.pdf $(FTPDIR) $(CP) ChangeLog $(FTPDIR) rpm-packages: rpmbuild -ta $(RPM_SIGN) $(FTPDIR)/auctex-$(TAG).tar.gz $(CP) $(RPMROOT)/{RPMS/noarch/{auctex-emacs,preview-tetex},SRPMS/auctex}-$(TAG)[.-]* $(FTPDIR) @echo "If you need to prepare RPM on some other system, you need to add" @echo "them in $(FTPDIR) before 'make release-sign'." sleep 2 patch: diff -u auctex-$(OLD) auctex-$(TAG) | gzip --best \ >$(FTPDIR)/auctex-$(OLD)-to-$(TAG).patch.gz xemacs-package: check-tag rm -rf $(XEMACS_BUILD_DIR) $(CP_A) auctex-$(TAG) $(XEMACS_BUILD_DIR) cd $(XEMACS_BUILD_DIR) \ && ./configure INSTALL_INFO=: TEXHASH=: --with-xemacs --with-packagedir=`pwd`/xemacs-package --without-texmf-dir --with-auto-dir=etc/auctex/auto \ && make all install-man install && cd xemacs-package && tar -cf - --owner=root --group=root . | gzip --best > $(FTPDIR)/auctex-$(TAG)-pkg.tar.gz # Pre-compiled AUCTeX package for Emacs on Windows WBUILDDIR=$(PWD)/windows-package WEMACS=/usr/src/emacs-$(WEMACSVER)/src/emacs WPACKAGE=auctex-$(TAG)-e$(WEMACSVER)-msw.zip WPACKAGEFILES=site-lisp/auctex site-lisp/site-start.d site-lisp/site-start.el \ site-lisp/tex-site.el var/auctex doc info/dir info/auctex.info* \ info/preview-latex.info* windows-package: check-tag @if [ "X$(WEMACSVER)" = "X" ]; then \ echo "*** Error: No Emacs version (WEMACSVER) ***"; \ exit 1; \ fi # Make sure the prerequisites are available test -d $(WBUILDDIR) || mkdir $(WBUILDDIR) test -f $(WBUILDDIR)/emacs-$(WEMACSVER)-bin-i386.zip \ || { cd $(WBUILDDIR) \ && wget http://ftp.gnu.org/gnu/emacs/windows/emacs-$(WEMACSVER)-bin-i386.zip; } test -f $(WBUILDDIR)/auctex-$(TAG).zip \ || { test -f $(FTPDIR)/auctex-$(TAG).zip \ && $(CP) $(FTPDIR)/auctex-$(TAG).zip $(WBUILDDIR); } \ || { cd $(WBUILDDIR) \ && wget http://ftp.gnu.org/gnu/auctex/auctex-$(TAG).zip; } # Reset to clean state cd $(WBUILDDIR) \ && rm -rf emacs-$(WEMACSVER) \ && rm -rf auctex-$(TAG) \ && unzip emacs-$(WEMACSVER)-bin-i386.zip \ && unzip auctex-$(TAG).zip rm -f $(WPACKAGE) # Create site-start.el and site-start.d cd $(WBUILDDIR)/emacs-$(WEMACSVER)/site-lisp \ && echo -e ";; Load files in \`site-start.d' directory.\ \n(dolist (file (directory-files\ \n (concat (file-name-directory load-file-name) \"site-start.d\")\ \n t \"\\\\\\\\.el\\\\\\\\'\"))\ \n (load file nil t t))" > site-start.el \ && mkdir site-start.d # Build and install AUCTeX cd $(WBUILDDIR)/auctex-$(TAG) \ && ./configure --prefix=$(WBUILDDIR)/emacs-$(WEMACSVER) \ --without-texmf-dir --with-emacs=$(WEMACS) \ --with-lispdir=$(WBUILDDIR)/emacs-$(WEMACSVER)/site-lisp \ --datarootdir=$(WBUILDDIR)/emacs-$(WEMACSVER) \ && make \ && sed -i -e 's/"\/[^\n]\+/(expand-file-name "..\/var\/auctex" (file-name-directory load-file-name))/' tex-site.el \ && make install # Create the package test -d $(FTPDIR) || mkdir -p $(FTPDIR) cd $(WBUILDDIR)/emacs-$(WEMACSVER) \ && zip -r $(FTPDIR)/$(WPACKAGE) $(WPACKAGEFILES) release-sign: rm -f $(FTPDIR)/*.{directive,asc,sig} if [ "x$$GPG_AGENT_INFO" = "x" ]; then \ read -sp "Enter pass phrase: " phrase ; \ gpg_opt="--passphrase-fd 0"; \ else \ gpg_opt=""; phrase=""; \ fi; \ for i in $(FTPDIR)/*; do \ echo "$$phrase" | gpg --detach-sign $$gpg_opt $$i ; \ echo "version: 1.1" >$$i.directive; \ case $$i in *-$(TAG)*) echo "directory: auctex" >>$$i.directive;; \ *) echo "directory: auctex/$(TAG)-extra" >>$$i.directive ;; \ esac ; \ echo "filename: "`basename $$i` >>$$i.directive ; \ echo "$$phrase" | gpg $$gpg_opt --clearsign $$i.directive ; \ done rm $(FTPDIR)/*.directive release-upload: @echo "Uploading everything in FTPDIR to GNU FTP server ..." @sleep 5 ncftpput ftp-upload.gnu.org /incoming/ftp $(FTPDIR)/* # AUCTeX and preview-latex manuals for the home page www-doc: check-tag rm -rf $(WWWDIR) mkdir -p $(WWWDIR)/manual $(CP) auctex-$(TAG)/doc/*.texi $(WWWDIR)/manual cd $(WWWDIR)/manual \ && wget -O gendocs.sh 'http://cvs.savannah.gnu.org/viewvc/%2acheckout%2a/texinfo/texinfo/util/gendocs.sh' \ && patch <$(GENDOCSPATCH) \ && chmod u+x gendocs.sh \ && wget -O gendocs_template 'http://cvs.savannah.gnu.org/viewvc/%2acheckout%2a/texinfo/texinfo/util/gendocs_template' \ && sed -i -e 's/html_node\/index\.html/%%PACKAGE%%\/index.html/' gendocs_template \ && mkdir .texinfo \ && echo -e "emacs split http://www.gnu.org/software/emacs/manual/html_node/emacs/\nemacs mono http://www.gnu.org/software/emacs/manual/html_mono/emacs.html\nreftex split http://www.gnu.org/software/auctex/manual/reftex/\nreftex mono http://www.gnu.org/software/auctex/manual/reftex.html\n" > .texinfo/htmlxref.cnf \ && ./gendocs.sh --email bug-auctex@gnu.org --texi2html \ --html --use-nodes auctex "AUCTeX Manual" \ && ./gendocs.sh --email bug-auctex@gnu.org --texi2html \ --html --use-nodes preview-latex "preview-latex Manual" preview-ball: check-tag test ! -d $(PREVIEW_BUILD_DIR) || rm -r $(PREVIEW_BUILD_DIR) mkdir $(PREVIEW_BUILD_DIR) # Use TAG_EXPORT if set (for snapshots) cvs export -d $(PREVIEW_BUILD_DIR) \ `echo $${TAG_EXPORT:=$(TAG)} | \ sed -e '/^\([-0-9]*[0-9]\)[-a-z]*$$/s//-D \1/' \ -e '/[.]/{s/^/-r release_/;s/[.]/_/g}'` auctex/preview/latex cd $(PREVIEW_BUILD_DIR) && make -f ../preview/latex/Makefile preview.ins preview.pdf chmod -R go-w+rX $(PREVIEW_BUILD_DIR) test -d $(FTPDIR) || mkdir -p $(FTPDIR) cd $(PREVIEW_BUILD_DIR) && \ tar -cf - --owner=root --group=root README preview.dtx preview.ins preview.pdf | gzip --best > $(FTPDIR)/preview-$(TAG).tar.gz auctex-11.87/tex-site.el.in0000644000000000000000000001155711161466176014234 0ustar rootroot;;; tex-site.el - Site specific variables. Don't edit. ;; Copyright (C) 2005 Free Software Foundation, Inc. ;; ;; completely rewritten. ;; Author: David Kastrup ;; Maintainer: auctex-devel@gnu.org ;; 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 contains startup code, autoloads and variables adapted to ;; the local site configuration. It is generated and placed by the ;; installation procedure and should not be edited by hand, nor moved ;; to a different place, as some settings may be established relative ;; to the file. ;; All user customization should be done with ;; M-x customize-variable RET ;;; Code: (if (< emacs-major-version 21) (error "AUCTeX requires Emacs 21 or later")) ;; Define here in order for `M-x customize-group AUCTeX ' ;; to work if the main AUCTeX files are not loaded yet. (defgroup AUCTeX nil "A (La)TeX environment." :tag "AUCTeX" :link '(custom-manual "(auctex)Top") :link '(url-link :tag "Home Page" "http://www.gnu.org/software/auctex/") :prefix "TeX-" :group 'tex :load "tex" :load "latex" :load "tex-style") (defvar TeX-lisp-directory @lisppackagelispdir@ "The directory where most of the AUCTeX lisp files are located. For the location of lisp files associated with styles, see the variables TeX-style-* (hand-generated lisp) and TeX-auto-* (automatically generated lisp).") (add-to-list 'load-path TeX-lisp-directory) (defvar TeX-data-directory @lisppackagedatadir@ "The directory where the AUCTeX non-Lisp data is located.") (defcustom TeX-auto-global @lispautodir@ "*Directory containing automatically generated information. Must end with a directory separator. For storing automatic extracted information about the TeX macros shared by all users of a site." :group 'TeX-file :type 'directory) (defconst TeX-mode-alist '((tex-mode . tex-mode) (plain-tex-mode . tex-mode) (texinfo-mode . texinfo) (latex-mode . tex-mode) (doctex-mode . tex-mode)) "Alist of built-in TeX modes and their load files.") (defalias 'TeX-load-hack 'ignore) (add-hook 'tex-site-unload-hook (lambda () (let ((list after-load-alist)) (while list ;; Adapted copy of the definition of `assq-delete-all' ;; from Emacs 21 as substitute for ;; `(assq-delete-all'TeX-modes-set (car list))' which ;; fails on non-list elements in Emacs 21. (let* ((alist (car list)) (tail alist) (key 'TeX-modes-set)) (while tail (if (and (consp (car tail)) (eq (car (car tail)) key)) (setq alist (delq (car tail) alist))) (setq tail (cdr tail)))) (setq list (cdr list)))) (setq load-path (delq TeX-lisp-directory load-path)))) (defun TeX-modes-set (var value &optional update) "Set VAR (which should be `TeX-modes') to VALUE. This places either the standard or the AUCTeX versions of functions into the respective function cell of the mode. If UPDATE is set, a previously saved value for the non-AUCTeX function gets overwritten with the current definition." (custom-set-default var value) (let ((list TeX-mode-alist) elt) (while list (setq elt (car (pop list))) (when (or update (null (get elt 'tex-saved))) (when (fboundp elt) (put elt 'tex-saved (symbol-function elt)))) (defalias elt (if (memq elt value) (intern (concat "TeX-" (symbol-name elt))) (get elt 'tex-saved)))))) (defcustom TeX-modes (mapcar 'car TeX-mode-alist) "List of modes provided by AUCTeX. This variable can't be set normally; use customize for that, or set it with `TeX-modes-set'." :type (cons 'set (mapcar (lambda(x) (list 'const (car x))) TeX-mode-alist)) :set 'TeX-modes-set :group 'AUCTeX :initialize (lambda (var value) (custom-initialize-reset var value) (let ((list TeX-mode-alist)) (while list (eval-after-load (cdar list) `(TeX-modes-set ',var ,var t)) (setq list (cdr list)))))) (defconst AUCTeX-version "@AUCTEXVERSION@" "AUCTeX version. If not a regular release, the date of the last change.") (defconst AUCTeX-date "@AUCTEXDATE@" "AUCTeX release date using the ISO 8601 format, yyyy-mm-dd.") ;; Store bibitems when saving a BibTeX buffer (add-hook 'bibtex-mode-hook 'BibTeX-auto-store) auctex-11.87/ChangeLog0000644000000000000000000160343312056205035013303 0ustar rootroot2012-11-30 Ralf Angeli * Version 11.87 released. 2012-11-30 Ralf Angeli * tex.el (TeX-evince-dbus-p): Make last change a little more conventional. 2012-11-30 Tassilo Horn * tex.el (TeX-evince-dbus-p): Check for feature emacs in order not to signal an error on XEmacs. 2012-11-29 Ralf Angeli * RELEASE, configure.ac, doc/auctex.texi, doc/changes.texi, doc/install.texi, doc/tex-ref.tex: Update for upcoming release. 2012-11-26 Ralf Angeli * latex.el (LaTeX-split-bibs): Add doc string and use variable for Biber file extensions. (LaTeX-search-files-type-alist): Add entry for Biber. (BibTeX-Biber-global-files): Remove. (BibTeX-global-files): Reintroduce. (TeX-Biber-global-files): New variable. (TeX-arg-bibliography): Check if Biber or BibTeX is used and react accordingly. * tex-buf.el (TeX-check-files): Do not check duplicate extensions. (TeX-command-query, TeX-LaTeX-sentinel): Use separate variables for BibTeX and Biber file extensions. (TeX-synchronous-sentinel): Use `let' instead of `let*'. * tex.el (TeX-clean-default-intermediate-suffixes): Add suffixes for biblatex. (TeX-auto-generate, TeX-auto-generate-global): Use separate variables for BibTeX and Biber file extensions. (TeX-Biber-file-extensions): New variable. (BibTeX-Biber-file-extensions): Remove. (BibTeX-file-extensions): Reintroduce. (TeX-search-files-type-alist): Use `BibTeX-file-extensions'. (TeX-normal-mode): Use separate variables for BibTeX and Biber global files. 2012-07-17 Vincent Belache * tex-info.el (Texinfo-reftex-hook): Added function. (TeX-texinfo-mode): Added RefTeX plugging. 2012-11-23 Tassilo Horn * doc/quickstart.texi (Quick Start): Document that one mustn't load auctex.el if AUCTeX is installed from ELPA. * doc/install.texi (Installation): Mention installation from ELPA. 2012-11-20 Davide G. M. Salvetti * doc/tex-ref.tex (column{preview-latex}): Fix typo. Reported by Sbastien Villemot. Update copyright information. 2012-11-14 Ralf Angeli * latex.el (LaTeX-auto-regexp-list): Remove entries for Biber. (LaTeX-biber): Remove. (LaTeX-listify-package-options): Rewrite so that the function can deal with key=value pairs. (LaTeX-always-use-Biber): Remove. (LaTeX-using-Biber): Add doc string and make buffer-local. * tex-style.el (LaTeX-biblatex-use-Biber): New variable. * doc/auctex.texi (top): Remove reference to `LaTeX-always-use-Biber'. (Selecting a Command): Mention Biber and `LaTeX-biblatex-use-Biber'. * Makefile.in (STYLESRC): Add style/biblatex.el. * style/biblatex.el: New file. 2012-11-05 Tassilo Horn * tex.el (TeX-doc-extensions): Fix typo. This variable was formerly named TeX-doc-extenstions. 2012-10-04 Masayuki Ataka * tex-jp.el: Repair coding from iso-2022-7bit to iso-2022-jp. 2012-10-03 Ralf Angeli * tex-jp.el: Repair coding. 2012-10-02 Ikumi Keita * tex-jp.el (japanese-TeX-engine-default) (TeX-engine-alist-builtin, japanese-TeX-use-kanji-opt-flag): New defcustoms. (japanese-TeX-coding-ejsu, japanese-TeX-get-encoding-string): New functions. (japanese-TeX-command-list): Support %(kanjiopt). (TeX-expand-list): Support new option kanjiopt, bibtex, makeindex, mendexkopt, xdvi. (TeX-view-predicate-list-builtin): Judge paper. (TeX-view-program-list): Support dviout paper size, and other DVI previewers in Mac and others. (TeX-view-program-selection): Add Dviout, TeXworks and Preview. (LaTeX-command-style): Support uplatex. (japanese-plain-tex-mode-initialization): Use TeX-engine-set. (japanese-latex-mode-initialization): Ditto. * tex-jp.el: Comment fix. (TeX-error-description-list): Doc fix. 2012-09-27 Joost Kremers (tiny change) * tex-buf.el (TeX-check-files): Use mapcar instead of cl's map. 2012-09-16 Philip Kime (tiny change) * tex-buf.el (TeX-LaTeX-sentinel): Detect generic rerun message from biblatex 2012-09-14 Ken Brown (tiny change) * doc/auctex.texi (top): Mention LaTeX-always-use-Biber. * doc/tex-ref.tex: Add Biber. 2012-09-13 Tassilo Horn Merge Biber support developed by Philip Kime . * doc/changes.texi: Mention Biber support. * tex.el (TeX-command-list, TeX-auto-generate) (TeX-auto-generate-global, TeX-search-files-type-alist) (TeX-normal-mode): Adapt. (TeX-command-Biber): New defcustom. (BibTeX-Biber-file-extensions): Renamed from BibTeX-file-extensions. * tex-buf.el (TeX-save-document, TeX-check-files) (TeX-command-query, TeX-LaTeX-sentinel): Adapt. (TeX-Biber-sentinel, TeX-run-Biber): New functions. * latex.el (LaTeX-auto-regexp-list, LaTeX-auto-cleanup) (TeX-arg-bibliography, LaTeX-common-initialization): Adapt. (LaTeX-biber, LaTeX-split-bibs, LaTeX-using-Biber) (LaTeX-always-use-Biber): New functions and vars. (BibTeX-Biber-global-files): Renamed from BibTeX-global-files. * font-latex.el (font-latex-built-in-keyword-classes) (font-latex-add-keywords): Adapt. 2012-06-21 Patrice Dumas (tiny change) * doc/preview-latex.texi (The preview images): Place index command `@pindex dvipng' on a line of its own. * doc/macros.texi: Replace user macro `@sans' by user macro `@sansserif' and make definition conditional against flag no-sansserif as `@sansserif' is a Texinfo macro and does not need to be redefined. * doc/macros.texi: Suppress user macro `@LaTeX' as this macro is already defined in Texinfo. * doc/quickstart.texi (Editing Facilities): Use texinfo `@sansserif' macro rather than user macro `@sans'. * doc/auctex.texi (Font Specifiers): Use texinfo `@sansserif' macro rather than user macro `@sans'. 2012-08-14 Ralf Angeli * tex.el (TeX-source-correlate-determine-method): Match --synctex as well as -synctex. 2012-07-04 Tassilo Horn * doc/changes.texi: Mention Evince forward/backward search changes. 2012-07-03 Tassilo Horn * font-latex.el (byte-code-function-p): Reference the generated functions with font-latex-match prefix. See Emacs bug 11837. 2012-06-22 Tassilo Horn * tex.el (TeX-evince-dbus-p): Add check for `dbus-register-signal', which might be unavailable if emacs was configured with --without-dbus. 2012-04-26 Tassilo Horn * tex.el (TeX-engine-set): Fix docstring leading to a misplaced interactive spec warning. 2012-04-25 Tassilo Horn * tex.el (TeX-evince-dbus-p): Improve check for emacs's dbus support. 2012-04-11 Tassilo Horn * tex.el (TeX-evince-sync-view): Work around emacs integer limits. Also provide the current column to Evince. (TeX-evince-dbus-p): Also check the signature of Evince's FindDocument DBUS method, which is only stable since evince 3.0. 2012-04-10 Tassilo Horn * tex.el (TeX-evince-sync-view): Fix arithmetic range error. (TeX-evince-dbus-p): Add parameter to extend the check depending on wanted features (e.g., forward search). (TeX-view-program-list-builtin): Use it. 2012-04-08 Tassilo Horn * tex.el (TeX-evince-dbus-p): New function. (TeX-evince-sync-view): New function. (TeX-view-program-list-builtin): Use Evince's DBUS interface for forward search if available. (TeX-source-correlate-mode): Use TeX-evince-dbus-p. 2012-01-11 Ralf Angeli * style/setspace.el ("setspace"): Correct quoting. 2011-09-18 Ralf Angeli * doc/auctex.texi (Marking): Make a few corrections throughout the section. (Adding Macros): Document special values for numbers used together with `TeX-add-symbols'. 2011-09-18 Vincent Belache * doc/auctex.texi: Add documentation for functions LaTeX-mark-section, LaTeX-mark-environment, Texinfo-mark-section, Texinfo-mark-environment and Texinfo-mark-node. 2011-08-24 Tassilo Horn * tex.el (TeX-synctex-output-page): TeXLive 2011's synctex wants absolute file names with dot indicating the master, like /foo/bar/./baz/chap1.tex. So add this as another variant. (TeX-view-program-list-builtin): Use evince's -i,--page-index switch instead of -p,--page-label if that evince version supports it (>=3.0.x). 2011-08-07 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Take characters after closing dollar sign into account when deciding to break before inline math. 2011-07-12 Ralf Angeli * tex.el (TeX-search-files-kpathsea): Check if directories are accessible. 2011-07-11 Vincent Belache * tex-info.el (Texinfo-mark-environment, Texinfo-mark-section) (Texinfo-mark-node): New defun. (Texinfo-mode-map): added key bindings for Texinfo-mark-environment, Texinfo-mark-section, and Texinfo-mark-node. 2011-06-19 Ralf Angeli * tex.el (TeX-engine-alist-builtin): Add --jobname to luatex and lualatex calls. (TeX-engine-alist-builtin): Remove --jobname again for luatex but not for lualatex. 2011-06-05 Tassilo Horn * tex.el (TeX-source-correlate-sync-source): Restore Emacs 21 compatibility. 2011-05-26 Tassilo Horn * tex.el (TeX-source-correlate-sync-source): Adapt to handle file:// URLs. 2011-05-15 Ralf Angeli * Makefile.in (STYLESRC): Add style/setspace.el. * tex.el (TeX-expand-list): Add a safeguard to the %(outpage) expander for when an output page function returns nil. 2011-05-09 Tassilo Horn * tex.el (TeX-synctex-output-page-1): New function for calling synctex. (TeX-synctex-output-page): Use it, and try relative file names with and without leading ./ when calling synctex before falling back to page 1. (TeX-source-correlate-sync-source): Add &rest parameter, because Evince 3 sends an additional (ignored) parameter via dbus. 2011-05-01 Ralf Angeli * tex.el (TeX-tree-expand): Use a different test to check for an absolute path on Windows. * font-latex.el (font-latex-built-in-keyword-classes): Add definition for \rule and remove the one for \sbox. 2011-04-25 Ralf Angeli * style/setspace.el: Add support for changing \displayskipstretch. 2011-04-25 Mads Jensen * style/setspace.el: New file. 2011-04-25 Ralf Angeli * latex.el (LaTeX-style-list): Add memoir. 2011-04-20 Ralf Angeli * tex-fold.el (TeX-fold-expand-spec): Make sure the expansion of a placeholder is not processed again. 2011-04-15 Ralf Angeli * font-latex.el (font-latex-built-in-keyword-classes): Make a few additions and corrections. * latex.el (LaTeX-common-initialization): Prompt for file extension instead of name when inserting \addcontentsline or \addtocontents. 2011-04-10 Ralf Angeli * tex.el (TeX-source-correlate-mode): Check for D-Bus session. 2011-04-10 Antoine Levitt (tiny change) * tex.el (TeX-source-correlate-sync-source): Do not use `goto-line'. 2011-04-03 Ralf Angeli * Makefile.in (STYLESRC): Add style/xspace.el. * style/xspace.el: Add copyright notice and license blurb. Correct a few things. 2011-04-03 Mads Jensen * style/xspace.el: New file. 2011-03-27 Tassilo Horn * tex.el (TeX-source-correlate-mode): Add support for I/O correlation mode inverse search for the Evince document viewer. 2011-03-23 Ralf Angeli * style/bulgarian.el, style/czech.el, style/danish.el, style/frenchb.el, style/icelandic.el, style/polish.el, style/polski.el, style/slovak.el, style/swedish.el: Do not set `TeX-quote-language' if `override' is in effect. 2011-03-20 Ralf Angeli * tex-buf.el (TeX-synchronous-sentinel): Strip directory part of master file because we are already in the master directory. 2011-03-13 Ralf Angeli * Makefile.in (STYLESRC): Add style/lettrine.el and style/multicol.el. * style/lettrine.el: Add copyright notice and license blurb. Correct a few things. * style/multicol.el: Add copyright notice and license blurb. Simplify environment definitions. Provide completion for lengths the package defines. Get rid of indentation and filling barrier. Remove fontification definitions. 2011-03-13 Mads Jensen * style/lettrine.el: New file. * style/multicol.el: New file. 2011-02-27 Ralf Angeli * latex.el (LaTeX-common-initialization): Add support for \ProvidesPackage. 2011-02-06 Ralf Angeli * style/letter.el (LaTeX-env-recipient): Use \renewcommand instead of \def to set date. 2011-01-30 Ralf Angeli * tex.el (TeX-parse-macro): Do not insert braces if the argument is 0 or less. (TeX-parse-argument): Put both the macro and the marked region in a TeX group if the argument is less than 0. * latex.el (LaTeX-common-initialization): Give macros that change font size a -1 argument so that braces are added around them if if there is an active region. * doc/auctex.texi (Adding Macros): Document special options 0 and -1 for number-type specs. 2011-01-29 Ralf Angeli * tex.el (TeX-complete-symbol): Get rid of the window with the completions when possible. 2011-01-23 Ralf Angeli * tex-fold.el (TeX-fold-post-command): Add `forward-char' and `backward-char' to commands on which to open an overlay. * doc/auctex.texi (Adding Macros): Mention `TeX-arg-input-file-search'. 2011-01-22 Ralf Angeli * tex.el (TeX-tree-expand): Make `subdirs' parameter optional. Do not try to call kpsewhich with --expand-braces anymore and adapt code for handling of results accordingly. (TeX-doc-extenstions): New variable. (TeX-tree-roots): New function. (TeX-tree-roots): New user option. (TeX-kpathsea-format-alist): Remove. (TeX-search-files-kpathsea): Add and use `extensions' and `scope' parameters. (TeX-search-files): Do not call `TeX-search-files-kpathsea' anymore. (TeX-search-files-type-alist): New variable. (TeX-search-files-by-type): New function. * latex.el (LaTeX-arg-usepackage): Let-bind `TeX-input-file-search'. (LaTeX-search-files-type-alist): New user option. (TeX-arg-input-file-search): Doc fix. (TeX-arg-input-file, TeX-arg-bibstyle, TeX-arg-bibliography): Use `TeX-search-files-by-type' instead of `TeX-search-files'. (LaTeX-common-initialization): Set `TeX-search-files-type-alist'. 2011-01-09 Ralf Angeli * latex.el (LaTeX-common-initialization): Add support for \settoheight and \settodepth. 2010-12-26 Ralf Angeli * doc/auctex.texi (Simple Style): Add a note about the naming of the style file and the style hook. 2010-12-12 Ralf Angeli * latex.el (LaTeX-env-args): Add the optional argument at the right position when wrapping the environment around existing text. 2010-12-05 Ralf Angeli * context.el: Set up abbrev table. (ConTeXt-mode-common-initialization): Set `local-abbrev-table'. * latex.el: Set up abbrev table for LaTeX and docTeX mode. (docTeX-mode): Set abbrev table. (LaTeX-common-initialization): Set `local-abbrev-table'. * plain-tex.el: Set up abbrev table. (plain-TeX-common-initialization): Set `local-abbrev-table'. * tex.el (TeX-mode-prefix): Add mode parameter. (VirTeX-common-initialization): Do not set `local-abbrev-table' anymore. (TeX-abbrev-mode-setup): New function. * doc/changes.texi: Mention change of abbrev handling. 2010-12-04 Ralf Angeli * latex.el (LaTeX-verbatim-macro-boundaries): Support verbatim macros with braces. 2010-12-04 Augusto Ritter Stoffel (tiny change) * latex.el (LaTeX-math-keymap): Define a key for the math prefix only if it has not been used as a prefix after the prefix. 2010-11-16 Ralf Angeli * tex.el (TeX-view-program-list-builtin): Add Okular. 2010-10-17 Ralf Angeli * latex.el (TeX-arg-input-file-search): New user option. (TeX-arg-input-file): Use it. 2010-10-11 Ralf Angeli * tex.el (TeX-synctex-output-page): Return "1" if no page number can be found to prevent an infinite loop in command expansion. 2010-10-02 Ralf Angeli * style/beamer.el ("beamer"): Prompt for block title. 2010-09-28 Ralf Angeli * context.el (ConTeXt-extra-paragraph-commands): Remove. (ConTeXt-language-variable-list): Add `ConTeXt-extra-paragraph-commands'. * context-en.el (ConTeXt-extra-paragraph-commands-en): New variable. * context-nl.el (ConTeXt-extra-paragraph-commands-nl): New variable. 2010-09-18 Ralf Angeli * context.el (ConTeXt-expand-options): Eval value from engine alist. 2010-09-12 Ralf Angeli * tex-fptex.el: Remove. * Makefile.in (AUCSRC): Reflect removal of tex-fptex.el. * doc/wininstall.texi: Reflect removal of tex-fptex.el. * style/virtex.el: Mention author. Do not unnecessarily protect `lambda' with `function'. * font-latex.el (font-latex-keyword-matcher): Refine last change to work properly with lists of face symbols. 2010-09-11 Ralf Angeli * style/natbib.el: Update copyright information. * style/letter.el: Update copyright information. * style/harvard.el: Update copyright information. * style/doc.el: Do not unnecessarily protect `lambda' with `function'. 2010-09-06 Arne Jrgensen * style/danish.el: Changed font-latex-add-quotes from french to german. 2010-08-30 Ralf Angeli * style/ngerman.el: Prevent "| from leading to color bleed. * style/german.el: Prevent "| from leading to color bleed. 2010-08-29 Ralf Angeli * doc/preview-dtxdoc.pl: Use explicit variable with split instead of implicit split to @_ which does not work anymore in Perl 5.12. 2010-07-11 Ralf Angeli * tex-info.el: Delete trailing whitespace. 2010-07-04 Ralf Angeli * doc/faq.texi: Update infos about Emacs versions. Add FAQ entry for file:line:error messages in case `TeX-next-error' fails due to unbalanced parens. * tex.el (TeX-print-command, TeX-queue-command) (TeX-printer-list): Switch back to Berkeley-style commands. 2010-06-24 Ralf Angeli * doc/auctex.texi (Texinfo mode): Make a few corrections. 2010-06-19 Berend de Boer * context.el: proper indent of all macros that can appear inside an itemize list such as \sym. 2010-06-12 Ralf Angeli * tex-info.el (Texinfo-find-env-end, Texinfo-find-env-start): Enable the commands to be used repeatedly without getting stuck at an environment start or end respectively. 2010-05-27 Ralf Angeli * autogen.sh: Set LANG=C when looking into ChangeLog for AUCTEXDATE. 2010-05-24 Vincent Belache * doc/auctex.texi (Texinfo mode): New section. 2010-05-17 Ralf Angeli * tex.el (TeX-math-input-method-off-regexp): Fix regexp. 2010-04-25 Ralf Angeli * tex.el (TeX-print-command): Support printing of Postscript and PDF files. Doc fix. (TeX-queue-command): Use lpstat instead of lpq. Doc fix. (TeX-printer-list): Support printing of Postscript and PDF files. Make use of System V style commands (lp, lpstat) instead of Berkeley style (lpr, lpq). (TeX-printer-default): Doc fix. 2010-04-17 Ralf Angeli * tex-buf.el (TeX-warning): Throw an error with a sensible message if the file for the warning could not be determined. 2010-04-13 Ralf Angeli * tex-buf.el (TeX-format-filter): Calculate the current column as difference between line start and end instead of using `current-column' in order to do the right thing when octal codes are present. 2010-04-11 Ralf Angeli * font-latex.el (font-latex-keyword-matcher): Quote a list of face properties but do not to quote a face symbol. 2010-04-05 Ralf Angeli * tex-buf.el (TeX-parse-error): Allow `TeX-error-file' to become empty. 2010-03-28 Ralf Angeli * plain-tex.el: New file. * tex.el: Move code related to plain TeX to plain-tex.el. * Makefile.in (AUCSRC): Add plain-tex.el. * context.el: Require `plain-tex'. 2010-03-27 Ralf Angeli * tex.el (TeX-view-program-selection): Doc fix. (TeX-clean): Regexp-quote the master file name. 2010-03-20 Ralf Angeli * style/french.el: New file. * Makefile.in (STYLESRC): Add style/french.el. 2010-03-07 Ralf Angeli * latex.el (TeX-arg-key-val): Hint at key=value format in prompt. (LaTeX-fill-region-as-para-do): Match whitespace without comment starter at beginning of line when dealing with code comments. 2010-03-06 Ralf Angeli * Makefile.in (DIST_PREFIX): Use the working directory for the folder with distribution files. (FTPDIR, WWWDIR): Make them subdirectories of `DIST_PREFIX'. (COMMITTER_NAME, COMMITTER_EMAIL): Remove. (COMMITTER): New variable. (.PHONY): Update. (tar-ball-clean): Use `check-tag'. (check-tag): New name for `check-dist'. (dist): Do not call `release-commit' anymore. (snapshot): Now an alias for `dist'. (release-commit): Use `COMMITTER'. (release-sign): New name for `full-release' target. Generate version 1.1 directive files. (xemacs-package): Depend on `check-tag'. (WPACKAGEFILES): Include info files with a numerical supplement to the .info extension. Depend on `check-tag'. Check for presence of `WEMACSVER' variable. Try to find a local AUCTeX tar ball before downloading one. Use `TAG' instead of `WAUCVER'. Put ZIP archive into `FTPDIR'. (WAUCVER, WEMACSVER): Remove. (release-upload): New target. (www-doc): Depend on `check-tag'. Update URLs for Emacs manuals. 2010-02-21 Ralf Angeli * Version 11.86 released. 2010-02-21 Ralf Angeli * RELEASE: Update for upcoming release. * doc/install.texi (Prerequisites): Update information about Emacs distributions. * doc/tex-ref.tex: Bump version number. Update section on TeXing options. * configure.ac: Bump version number. * auctex.spec (Version): Bump version number. * doc/fdl.texi: Switch to GFDL 1.3. * doc/auctex.texi: Switch to GFDL 1.3. * doc/preview-latex.texi: Switch to GFDL 1.3. * doc/changes.texi: Update for next release. 2010-02-20 Ralf Angeli * tex.el (TeX-doc): Add a fallback in case nothing is found via the backend list, e.g. when using MiKTeX 2.8. * doc/auctex.texi (Documentation): Document change in `TeX-doc'. 2010-02-14 Ralf Angeli * doc/changes.texi: Mention preview.sty supporting XeTeX. 2010-02-13 Ralf Angeli * tex.el (TeX-XeTeX-command, LaTeX-XeTeX-command): Remove. (ConTeXt-engine): Doc fix. (ConTeXt-Omega-engine): Doc fix. Make obsolote. (TeX-expand-list): Add support for LuaTeX. Adapt to new engine handling. (AUC-TeX-version, AUC-TeX-date): Remove. (TeX-engine-alist-builtin): New variable. (TeX-engine-alist): Adapt to new engine handling and make it a defcustom. (TeX-engine-alist): New function. (TeX-engine): Adapt to new engine handling and make it buffer-local. (LaTeX-engine-alist): Remove. (TeX-engine-set): Adapt to new engine handling and take care of TeX PDF mode. (TeX-clean-default-output-suffixes): Add .xdv. (TeX-mode-specific-command-menu-entries): Construct list of engines from `TeX-engine-alist'. * context.el (ConTeXt-expand-options): Adapt to new engine handling. * doc/auctex.texi (Processor Options): Document options and functions of new engine handling. 2009-12-30 Ralf Angeli * tex.el (TeX-view-command-raw): Abort if no matching viewer is found. * doc/preview-faq.texi (Troubleshooting): Add some hints about preview-latex overwriting output files. 2009-12-28 Ralf Angeli * style/austrian.el: New file. * style/naustrian.el: New file. * Makefile.in (STYLESRC): Add style/austrian.el and style/naustrian.el. 2009-12-26 Ralf Angeli * doc/auctex.texi (Known problems): New subsection on dealing with font locking problems. * font-latex.el (font-latex-syntax-alist): New variable. (font-latex-add-to-syntax-alist): New function. (font-latex-setup): Use `font-latex-syntax-alist'. * style/shortvrb.el: New file. * Makefile.in (STYLESRC): Add style/shortvrb.el. * tex-style.el (LaTeX-shortvrb-chars): New variable. * doc/changes.texi: Document changes after 11.85. * context.el (ConTeXt-expand-options): Check for XeTeX engine, not for mode which does not exist anymore. * tex.el (plain-TeX-common-initialization): Let commented lines be matched by `paragraph-separate' in order for commented and non-commented paragraphs to be filled separately. 2009-12-12 Ralf Angeli * tex-buf.el (TeX-parse-error): Also find quoted file names with newlines. Remove the newlines from the matched string if necessary. 2009-12-07 Ralf Angeli * tex-buf.el (TeX-parse-error): Add an alternative in the parser regexp for quoted file names. Strip the quotation marks if a file name was found with the alternative. 2009-12-06 Ralf Angeli * tex-fold.el (TeX-fold-command-prefix): New variable. (TeX-fold-mode): Use it. (TeX-fold-keymap): Remove prefix strings. * tex.el (TeX-fold-menu): Remove hard-coded key binding labels. * doc/auctex.texi (Folding): Mention `TeX-fold-command-prefix'. 2009-11-22 Ralf Angeli * doc/wininstall.texi: Do not refer to Emacs 22 anymore. Improve the paragraphs about PNG support. 2009-11-01 Ralf Angeli * style/pstricks.el: Disable key bindings for macro parameter addition and change. (LaTeX-pst-color-list, LaTeX-pst-boolean-list) (LaTeX-pst-fillstyle-list): Remove information for completion mechanism. (LaTeX-pst-trimode-list, LaTeX-pst-linestyle-list): Remove. Handled directly in `LaTeX-pst-basic-parameters-list'. (LaTeX-pst-basic-parameters-list): New variable. (LaTeX-pst-parameters): Call `TeX-arg-key-val' instead of `LaTeX-package-parameters' and thereby use a different completion mechanism. (LaTeX-pst-macro-psdots): Do not add a dotstyle parameter. (LaTeX-pst-env-pspicture): Handle optional parameter via `multi-prompt-key-value'. ("pstricks"): Handle arguments of \psdot and \psdots correctly. 2009-10-31 Ralf Angeli * tex.el (TeX-verbatim-p-function): New variable. (TeX-verbatim-p): New function. (TeX-in-comment): Use it. (TeX-brace-count-line): Use `TeX-in-comment' instead of just checking for a comment character. * latex.el (LaTeX-common-initialization): Set `TeX-verbatim-p-function'. 2009-10-25 Ralf Angeli * doc/auctex.texi (Starting Viewers): Describe new viewer selection options. (Folding): Add some hints on how to do automatic folding. * tex.el (TeX-view-predicate-list-builtin) (TeX-view-predicate-list, TeX-view-program-list): Doc fix. (TeX-view-program-list-builtin, TeX-view-program-selection): Conditionalize default value based on system type. Doc fix. (TeX-synctex-output-page): Do not return random stuff if there was no match. (TeX-clean-default-intermediate-suffixes): Remove SyncTeX files as well. 2009-10-21 Ralf Angeli * tex.el (TeX-synctex-output-page): Handle files in subdirectories correctly. 2009-10-18 Ralf Angeli * tex-buf.el (TeX-run-discard): Doc fix. (TeX-run-discard-or-function): New function. * tex.el (TeX-command-list): Use `TeX-run-discard-or-function' as hook for View command and provide it as a customization option. (TeX-view-program-list): Add the possibility to use a function to call the viewer. (TeX-view-command-raw): Support the use of a function to call the viewer. 2009-10-11 Ralf Angeli * tex.el (TeX-view-predicate-list-builtin): Remove combined predicates for paper properties and add new predicates testing only one property. (TeX-view-program-list-builtin): Use new predicates. (TeX-view-program-list): Provide the possibility to use a list of predicates. 2009-10-10 Ralf Angeli * tex.el (TeX-view-program-list): Shave off extra closing paren. 2009-10-04 Ralf Angeli * tex.el (LaTeX-command-style, TeX-print-style, TeX-view-style): Doc fix. (TeX-view-predicate-list-builtin, TeX-view-program-list-builtin): New variables. (TeX-view-predicate-list, TeX-view-program-list) (TeX-view-program-selection): New user options. (TeX-match-style, TeX-view-match-predicate) (TeX-view-command-raw): New functions. (TeX-expand-list): Use `TeX-view-command-raw' for %V expander. 2009-09-13 Ralf Angeli * tex-buf.el (TeX-error): Cater for case of file:line:error messages without context. (TeX-parse-error): Add support for quoted file names with backslashes as path separators. Those might be emitted by MiKTeX 2.8. 2009-06-14 Ralf Angeli * doc/auctex.texi (Indenting): Mention `LaTeX-item-regexp'. (Fontification of math): New section replacing and extending `Subscript and superscript'. 2009-04-26 Ralf Angeli * tex.el (TeX-source-correlate-mode): Clean `custom-requests' property. (VirTeX-common-initialization): Call `TeX-source-correlate-mode' minor mode function when initializing the mode instead of when loading the file. 2009-04-13 Ralf Angeli * latex.el (TeX-arg-key-val): Eval `key-val-alist' argument if it is a symbol. * style/listings.el ("listings"): Do not eval arguments of `TeX-arg-key-val'. * multi-prompt.el (multi-prompt-expand-completion-table): New function. (multi-prompt-key-value): Use it. * style/pstricks.el: Correct header info. (LaTeX-pst-input-int, LaTeX-pst-point, LaTeX-pst-angle) (LaTeX-pst-extdir, LaTeX-pst-arrows, LaTeX-pst-dotstyle-list) (LaTeX-pst-refpoint-list, LaTeX-pst-refpoint) (LaTeX-pst-macro-multirputps, LaTeX-pst-env-pspicture): Improve or correct prompt. ("pstricks"): Move to the bottom of the file. Do not use `function' to quote `lambda'. Turn off TeX PDF mode. Use `mapc' instead of `mapcar'. 2009-04-05 Ralf Angeli * tex-buf.el (TeX-help-error): Make search for help text in log file more robust. 2009-04-04 Ralf Angeli * style/listings.el ("listings"): Remove redundant list when calling `TeX-arg-key-val'. Use `LaTeX-env-args' for lstlisting environment. * latex.el (LaTeX-env-args): New function. (TeX-arg-conditional, TeX-arg-eval, TeX-arg-label) (TeX-arg-index-tag, TeX-arg-index, TeX-arg-macro) (TeX-arg-environment, TeX-arg-cite, TeX-arg-counter) (TeX-arg-savebox, TeX-arg-file, TeX-arg-define-label) (TeX-arg-define-macro, TeX-arg-define-environment) (TeX-arg-define-cite, TeX-arg-define-counter) (TeX-arg-define-savebox, TeX-arg-document, LaTeX-arg-usepackage) (TeX-arg-input-file, TeX-arg-bibstyle, TeX-arg-bibliography) (TeX-arg-corner, TeX-arg-lr, TeX-arg-tb, TeX-arg-pagestyle) (TeX-arg-verb, TeX-arg-pair, TeX-arg-size, TeX-arg-coordinate) (TeX-arg-insert-braces): Doc fix. * multi-prompt.el (multi-prompt-separator): Remove. (multi-prompt-key-value-collection-fn): Do not search for `multi-prompt-separator'. (crm-local-must-match-map, crm-local-completion-map): Silence the byte compiler. (multi-prompt-key-value): Require crm.el here and not at top-level. * tex-info.el (TeX-texinfo-mode): Add @lowersections and @raisesections. * doc/auctex.texi (Adding Environments): Document hooks for `LaTeX-add-environments'. 2009-03-29 Ralf Angeli * style/listings.el (LaTeX-listings-key-val-options): New variable. ("listings"): Use it. Check for font-latex function, not feature. * latex.el (TeX-arg-key-val): New function. * multi-prompt.el: Require crm.el. (multi-prompt-separator, multi-prompt-key-value-sep) (multi-prompt-completion-table): New variables. (multi-prompt-key-value-collection-fn, multi-prompt-key-value): New functions. 2009-03-22 Ralf Angeli * tex-site.el.in: Revitalize support for completion in \cite macros via `BibTeX-auto-store'. 2009-03-02 Holger Sparr * Makefile.in (STYLESRC): Add style/multido.el; style/pst-{grad|node|plot|slpe}.el 2009-03-01 Ralf Angeli * latex.el (LaTeX-verbatim-macro-boundaries): Do step backwards at beginning of buffer. (LaTeX-search-forward-comment-start): Treat find of comment at limit correctly. * tex-fold.el (TeX-fold-comment-do): Abort backward search for comment start at beginning of buffer. Do not fold empty comment. 2009-02-24 Holger Sparr * style/multido.el: New file. * style/pst-grad.el: New file. * style/pst-node.el: New file. * style/pst-plot.el: New file. * style/pst-slpe.el: New file. 2009-02-23 Holger Sparr * style/pstricks.el: Actually implement support for writing PSTricks code. 2009-02-22 Ralf Angeli * doc/auctex.texi (Multi-line fontification): Remove. * doc/todo.texi (Wishlist): Fix typo. Remove entry which is already supported. * style/tabularx.el: New file. * Makefile.in (STYLESRC): Add style/tabularx.el 2009-02-15 Ralf Angeli * style/natbib.el ("natbib"): Check for font-latex function rather than feature. Add fontification spec for \cite. * doc/auctex.texi (Simple Style): Bring example in line with reality. 2009-01-24 Ralf Angeli * tex.el (TeX-source-correlate-method): Doc fix. (TeX-source-correlate-mode): Call minor mode function after file is loaded. 2009-01-14 Ralf Angeli * latex.el (LaTeX-babel-insert-hyphen): Put `delete-selection' property on function symbol. 2009-01-04 Ralf Angeli * style/CJK.el: New file. * style/ruby.el: New file. Correct argument numbers of \rubysize and \rubysep. * style/CJKutf8.el: New file. * Makefile.in (STYLESRC): Add style/CJK.el and style/ruby.el. Add style/CJKutf8.el. 2009-01-03 Ralf Angeli * style/flashcards.el ("flashcards"): Test for font-latex function instead of feature. Reflect that \cardbackstyle has an optional argument. 2008-12-29 Ralf Angeli * style/hyperref.el ("hyperref"): Test for font-latex function instead of feature. Activate hyperref referencing style if possible. 2008-12-28 Ralf Angeli * tex-buf.el (TeX-current-pages): Get rid of trailing periods. (TeX-LaTeX-sentinel): Add support for longtable warning. Use only one search per condition. Call `message' like `format'. 2008-12-22 Ralf Angeli * tex.el (TeX-doc-backend-alist): Call `TeX-tree-expand' instead of `TeX-macro-global-internal'. * tex-jp.el (TeX-macro-global): Call `TeX-tree-expand' instead of `TeX-macro-global-internal'. * latex.el (LaTeX-env-item): Deactivate the mark before inserting \item. (LaTeX-insert-item): Swap point and mark when mark if necessary. Insert newline only when not at beginning of line. * tex.el (TeX-deactivate-mark): New function. (TeX-parse-argument): Use it. 2008-12-21 Ralf Angeli * tex.el (TeX-auto-private, TeX-style-private): Per default propose a place in the user's Emacs directory, not in the TeX tree. (TeX-style-path): Add values to the end of the list. Doc fix. * doc/auctex.texi (Automatic Private): Adjust descriptions of `TeX-macro-private', `TeX-auto-private', and `TeX-style-private'. 2008-12-16 Ralf Angeli * tex.el (TeX-tree-expand): New name for `TeX-macro-global-internal'. Adapt parameter list to make it more flexible. Update doc string. Do not return removed default argument. (TeX-macro-global): Change to accomodate new interface of `TeX-tree-expand'. (TeX-macro-private): New function. (TeX-macro-private): Use it to determine variable value. 2008-12-13 Ralf Angeli * tex.el (plain-TeX-clean-intermediate-suffixes) (plain-TeX-clean-output-suffixes): New variables. 2008-12-01 Ralf Angeli * tex.el (VirTeX-common-initialization): Revert last change. 2008-11-30 Ralf Angeli * tex.el (VirTeX-common-initialization): Do not add call to `TeX-update-style' to `find-file-hooks' but call it directly. 2008-11-23 Ralf Angeli * tex.el (TeX-source-correlate-determine-method): Use configured LaTeX command and find -synctex switch even if there are spaces in front of it, as e.g. with MiKTeX. (TeX-format-list): Use \subsection and \subsubsection as well to identify a LaTeX file. 2008-11-02 Ralf Angeli * font-latex.el (font-latex-match-math-env) (font-latex-extend-region-backwards-math-env): Do not match \\[...]. * tex-fold.el (TeX-fold-expand-spec): Do not treat `\' special in replacement text. 2008-10-26 Ralf Angeli * tex.el (plain-TeX-common-initialization): Respect double dollar, i.e. "$$", as a paragraph separator. 2008-10-14 Ralf Angeli * latex.el (LaTeX-current-environment): Fix handling of commented parts. * tex.el (TeX-comment-prefix): Save match data. 2008-10-13 Ralf Angeli * doc/changes.texi, doc/install.texi, doc/intro.texi, doc/preview-readme.texi, doc/quickstart.texi: Make some corrections and updates. 2008-10-12 Ralf Angeli * tex-buf.el (TeX-warning): Fix regexp for detecting bad boxes. 2008-10-11 Ralf Angeli * tex.el (TeX-set-mode-name): Indicate TeX PDF mode as a trailing flag. (TeX-engine): Doc fix. * doc/auctex.texi: Restructure some parts. Update and extend it a bit to reflect the recent changes of functionality. 2008-10-07 Ralf Angeli * tex.el (TeX-interactive-mode): Add to `minor-mode-alist'. ("desktop"): Remove `TeX-interactive-mode' from `desktop-locals-to-save'. 2008-10-06 Ralf Angeli * latex.el (LaTeX-paragraph-commands-regexp-make): Make it work for the case that `LaTeX-paragraph-commands' is set. 2008-10-05 Ralf Angeli * tex.el (TeX-engine): New variable. (TeX-expand-list): Use it instead of XeTeX and Omega mode variables. (hack-one-local-variable): Remove references to XeTeX and Omega mode variables. (TeX-set-mode-name): Remove lighters for XeTeX and Omega mode. (TeX-engine-alist, LaTeX-engine-alist): New variables. (TeX-engine-set): New function. (TeX-Omega-mode): Mark as obsolete. Remove defcustom. (TeX-PDF-mode): Use `TeX-engine' instead of mode variables. (TeX-XeTeX-mode): Remove. (TeX-mode-map): Remove key bindings for toggling XeTeX and Omega mode. (TeX-mode-specific-command-menu-entries): Use new facilities for switching TeX engines. ("desktop"): Remove reference to TeX Omega mode. * context.el (ConTeXt-expand-options): Use `TeX-engine' instead of XeTeX and Omega mode variables. 2008-09-07 Ralf Angeli * tex.el (TeX-PDF-mode): Add to `minor-mode-alist'. Use "" as lighter. ("desktop"): Remove `TeX-PDF-mode' from `desktop-locals-to-save'. * latex.el (LaTeX-mark-environment): Swap beg and end. 2008-08-02 Ralf Angeli * tex-bar.el (TeX-bar-TeX-buttons, TeX-bar-LaTeX-buttons): Mimic the default tool bars more closely. 2008-08-02 Reiner Steib * toolbar-x.el (toolbarx-default-toolbar-meaning-alist): Provide different defaults for different Emacs and XEmacs versions. Conditionally add a `new-file' entry. 2008-07-28 Ralf Angeli * toolbar-x.el (toolbarx-image-path): Protect against load-path items being nil. * style/foils.el (LaTeX-style-foils): Silence the byte compiler. * style/epsf.el (TeX-arg-epsfsize): Silence the byte compiler. * tex.el (TeX-source-specials-view-start-server): Alias only if `defvaralias' is available. (TeX-master, TeX-convert-master): Move upwards to prevent some compiler warnings. 2008-07-27 Ralf Angeli * tex.el (TeX-synctex-tex-flags): New variable. (TeX-source-correlate-expand-options): Use it. (TeX-source-specials-tex-flags): Remove possibility to create lists. * context.el (ConTeXt-expand-options): Support TeX XeTeX mode and TeX Source Correlate mode. 2008-07-24 Ralf Angeli * tex.el (TeX-source-specials-mode): Fix last change. 2008-07-23 Ralf Angeli * tex.el (TeX-expand-list): Prevent "%(PDF)" expander from returning "pdf" if `TeX-XeTeX-mode' is active. Make "%(tex)" and "%(latex)" expanders aware of the XeTeX commands. (hack-one-local-variable): Cater for `TeX-XeTeX-mode'. (TeX-set-mode-name): Cater for `TeX-XeTeX-mode'. (TeX-source-specials-mode): Mark as obsolete. (TeX-PDF-mode): Disable TeX XeTeX mode if TeX PDF mode is disabled. (TeX-Omega-mode): Disable TeX XeTeX mode if TeX Omega mode is to be enabled. (TeX-XeTeX-command, LaTeX-XeTeX-command): New variables. (TeX-XeTeX-mode): New minor mode. (TeX-mode-map): Define key for TeX XeTeX mode. (TeX-mode-specific-command-menu-entries): Add entry for TeX XeTeX mode. Make the engine-related options exclusive by using radio buttons. Refine the wording for some options. 2008-07-19 Ralf Angeli * tex.el (TeX-source-correlate-determine-method): Do not error out if calling the engine fails. * latex.el (LaTeX-mark-environment): Keep point upon unsuccessful search. 2008-07-19 Vincent Belache (tiny change) * latex.el (LaTeX-mark-environment): Support marking of multiple nested environments. 2008-07-17 Ralf Angeli * latex.el (LaTeX-paragraph-commands-regexp-make): Take `LaTeX-paragraph-commands' into account. (LaTeX-paragraph-commands-regexp): Move behind `LaTeX-paragraph-commands' definition. 2008-07-14 Ralf Angeli * style/pdfsync.el ("pdfsync"): Use `TeX-source-correlate-output-page-function' rather than `TeX-sync-output-page-function'. * tex.el (TeX-command-list): Remove SyncTeX expanders. (TeX-expand-list): Adapt function calls. Remove SyncTeX expander. (hack-one-local-variable, TeX-set-mode-name): Remove `TeX-synctex-mode' and `TeX-source-specials-mode'. Add `TeX-source-correlate-mode'. (TeX-source-correlate-method): New variable. (TeX-source-correlate-method-active): New variable. (TeX-source-correlate-output-page-function): Renamed from `TeX-sync-output-page-function'. (TeX-source-correlate-start-server): Renamed from `TeX-view-start-server'. (TeX-source-correlate-start-server-asked): Renamed from `TeX-view-start-server-asked'. (TeX-source-correlate-start-server-flag): Renamed from `TeX-view-start-server-flag'. (TeX-source-correlate-gnuserv-p): Renamed from `TeX-view-gnuser-p'. (TeX-source-correlate-server-enabled-p): Renamed from `TeX-view-server-enabled-p'. (TeX-source-correlate-start-server-maybe): Renamed from `TeX-view-start-server-maybe'. (TeX-source-specials): Remove custom group. (TeX-source-correlate-determine-method): New function. (TeX-source-correlate-expand-options): Renamed from `TeX-source-specials-expand-options'. Support SyncTeX as well. (TeX-source-correlate-map): Renamed from `TeX-source-specials-map'. (TeX-source-correlate-mode): Renamed from `TeX-source-specials-mode'. Support SyncTeX as well. (TeX-source-specials-mode): Now an alias for `TeX-source-specials-mode'. (TeX-source-specials-tex-flags, TeX-source-specials-places) (TeX-source-specials-view-position-flags) (TeX-source-specials-view-editor-flags) (TeX-source-specials-view-gnuclient-flags) (TeX-source-specials-view-emacsclient-flags): Put into `TeX-view' rather than `TeX-command' group. (TeX-source-specials-view-expand-options): Adapt for new function names and distinction between source specials and SyncTeX. (TeX-synctex-mode): Remove. (TeX-mode-map): Remove binding for TeX SyncTeX mode. (TeX-mode-specific-command-menu-entries): Remove menu entry for TeX SyncTeX mode. Use Source Correlate moniker instead of Source Specials. 2008-07-07 Ralf Angeli * doc/auctex.texi (Folding): Fix last change. 2008-07-06 Ralf Angeli * doc/auctex.texi (Folding): Document folding of math constructs and the possibilities of providing expanders and alternatives in replacement specifiers. * tex.el (TeX-command-list): Add expanders for SyncTeX. (TeX-expand-list): Start server if necessary when viewing. Define expander for SyncTeX. (hack-one-local-variable): Cater for TeX SyncTeX mode. (TeX-set-mode-name): Add lighter for TeX SyncTeX mode. (TeX-view): New customization group. (TeX-view-start-server): Renamed from `TeX-source-specials-view-start-server'. (TeX-source-specials-view-start-server): Rename to `TeX-view-start-server' and define alias. (TeX-view-start-server-asked): Renamed from `TeX-source-specials-view-start-server-asked'. (TeX-source-specials-view-start-server-asked): Rename to `TeX-view-start-server-asked'. (TeX-view-start-server-flag): New variable. (TeX-view-gnuserv-p): Renamed from `TeX-source-specials-view-gnuserv-p'. (TeX-source-specials-view-gnuserv-p): Rename to `TeX-view-gnuserv-p'. (TeX-view-server-enabled-p): New function. (TeX-view-start-server-maybe): New function. (TeX-source-specials-mode): Set `TeX-view-start-server-flag'. (TeX-source-specials-view-expand-client): Adapt call to new function name. (TeX-source-specials-view-expand-options): Do not try to start the server here anymore. (TeX-synctex-mode): New minor mode. (TeX-synctex-output-page): New function. (TeX-mode-map): Add key for toggling TeX SyncTeX mode. (TeX-mode-specific-command-menu-entries): Add menu entry for TeX SyncTeX mode. (TeX-math-input-method-off-regexp): New variable. (TeX-toggle-off-input-method): Remove. (TeX-math-input-method-off): Do without `TeX-toggle-off-input-method'. 2008-07-04 Berend de Boer * context.el, context-en.el: added a few more entries to the menu to select ConTeXt macro's from. 2008-06-29 Ralf Angeli * style/bulgarian.el ("bulgarian"): Use value of `TeX-quote-after-quote' for default quote insertion behavior. 2008-06-28 Ralf Angeli * font-latex.el (font-latex-find-matching-close): Simplify. There is no need for a general mechanism if the supported chars are limited at another place. * tex.el (TeX-search-syntax-table): Support (...) and <...>. * tex-fold.el (TeX-fold-macro-spec-list): New spec for \item. Adapt doc string to reflect new functionality. (TeX-fold-macro-nth-arg): New `delims' parameter which can be used to find other macro args than those enclosed by braces. (TeX-fold-expand-spec): New function. (TeX-fold-hide-item): Use it. * doc/auctex.texi (European): Document `bulgarian' language option. * Makefile.in (STYLESRC): Add style/bulgarian.el. * style/bulgarian.el: New file. 2008-06-21 Ralf Angeli * style/hyperref.el: New file. * Makefile.in (STYLESRC): Add style/hyperref.el. 2008-06-07 Ralf Angeli * font-latex.el (font-latex-make-built-in-keywords): Distinguish command-type keyword classes from others when creating the respective variables. * doc/auctex.texi (Font Locking): Structure with nodes. (Fontification of macros): Describe format specifiers for macros with arguments. 2008-05-30 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list): Add some documentation. (TeX-fold-hide-item): Support replacement of argument specifiers like "{1}" by the respective argument value in the display string. 2008-05-30 Joost Kremers (tiny change) * tex-fold.el (TeX-fold-macro-spec-list): Add function choice. (TeX-fold-hide-item): If specifier is a function, call it with all mandatory arguments of macro. 2008-05-25 Ralf Angeli * latex.el (docTeX-mode): Add regexp group to value of `TeX-comment-start-regexp'. * style/doc.el (LaTeX-doc-after-insert-macrocode): New function. ("doc"): Add it to `LaTeX-after-insert-env-hooks'. * latex.el: Get rid of some compiler warnings. (LaTeX-after-insert-env-hooks): New variable. (LaTeX-insert-environment): Remove docTeX-specific code. Run `LaTeX-after-insert-env-hooks' * style/beamer.el (LaTeX-beamer-after-insert-env): New function. ("beamer"): Add it to `LaTeX-after-insert-env-hooks'. Get rid of some compiler warnings. Support the semiverbatim environment. * style/dinbrief.el: Get rid of some compiler warnings. * style/dk-bib.el: Get rid of some compiler warnings. * style/emp.el: Get rid of some compiler warnings. * style/epsf.el: Get rid of some compiler warnings. * style/foils.el: Get rid of some compiler warnings. * style/graphicx.el: Get rid of some compiler warnings. * style/letter.el: Get rid of some compiler warnings. * style/prosper.el: Get rid of some compiler warnings. * style/psfig.el: Get rid of some compiler warnings. * texmathp.el: Get rid of some compiler warnings. * tex.el: Get rid of some compiler warnings. * tex-jp.el: Get rid of some compiler warnings. * tex-buf.el: Get rid of some compiler warnings. * font-latex.el: Get rid of some compiler warnings. * context.el: Get rid of some compiler warnings. * context-en.el: Get rid of some compiler warnings. * context-nl.el: Get rid of some compiler warnings. 2008-05-22 Ralf Angeli * tex-buf.el (TeX-command-sentinel): Use `TeX-master-file' instead of `TeX-active-master' for `TeX-transient-master'. 2008-05-17 Ralf Angeli * doc/auctex.texi (Font Specifiers): Correct argument list of `TeX-font'. 2008-05-13 Ralf Angeli * doc/auctex.texi (Font Specifiers): Document `LaTeX-font-list'. 2008-05-10 Reiner Steib * tex-bar.el (TeX-bar-TeX-buttons, TeX-bar-LaTeX-buttons): Add standard Emacs buttons to custom set. (TeX-bar-TeX-buttons): Use `tex' instead of `latex' in custom set. 2008-05-04 Ralf Angeli * tex-site.el.in (AUCTeX): Move customization group here from tex.el and load the main files defining customization options. * tex.el (AUCTeX): Move customization group to tex-site.el.in. (TeX-expand-list): Make %(outpage) default to "1". 2008-05-01 Ralf Angeli * toolbar-x.el (toolbarx-xemacs-refresh): Only activate the tool bar if it is already visible. Remove redundant if clause. * tex-buf.el (TeX-format-filter): Do not remove linebreak if the following line starts with an opening parenthesis. 2008-04-28 Ralf Angeli * doc/Makefile.in (install-auctex): Do not use `-' to suppress errors within command. 2008-04-28 David Kastrup * tex-buf.el (TeX-run-command): disable undo in run buffer 2008-03-12 Ralf Angeli * style/pdfsync.el (LaTeX-pdfsync-output-page): Kill buffer with pdfsync file if it was loaded by us. 2008-03-02 Ralf Angeli * tex-info.el (texinfo-environment-regexp): Terminate. 2008-03-01 Matan Ninio (tiny change) * style/pdfsync.el (LaTeX-pdfsync-output-page): Include subdirectories relative to master file in file names. Searching for the file entry in the .pdfsync file allows for an optional `.tex' extension in the filename. Find further p lines if the current context does not contain any more. 2008-02-24 Ralf Angeli * Makefile.in: Add windows-package target and related variables. 2008-02-23 Ralf Angeli * tex.el (TeX-common-menu-entries): Add exception for docTeX mode when extending the customization menu. 2008-02-17 Ralf Angeli * doc/auctex.texi: Repeat direntry after each category as per recommendation of Karl Berry. * doc/preview-latex.texi: Repeat direntry after each category as per recommendation of Karl Berry. 2008-02-11 Ralf Angeli * font-latex.el (font-latex-make-match-defun) (font-latex-keyword-matcher): Recognize old-style type specs which could be lists. Prevents "void-function nil" error during font locking. 2008-02-10 Ralf Angeli * Makefile.in (maintainer-clean): Do not depend on distclean. How did this ever work? (www-doc): Use release files. Update URLs. Make gendocs.sh use texi2html. * doc/Makefile.in (extradist): Re-add tex-ref.pdf dependency. (install-auctex): Do not install reference card when producing an XEmacs package. 2008-02-10 Ralf Angeli * Version 11.85 released. 2008-02-10 Ralf Angeli * RELEASE: Update for upcoming release. * auctex.spec (Version): Bump version number. * configure.ac: Bump version number. * doc/todo.texi: Add copyright notice. (Bugs): Remove entry about XEmacs bug since AUCTeX now helps XEmacs in doing multi-line font locking. * doc/tex-ref.tex: Bump version number. Updated references to toggles for bad boxes and warning. Mention `Clean' and `Clean All' commands. * doc/install.texi: Add copyright notice. (Prerequisites): Update information about Emacs 22. * doc/wininstall.texi: Update information about requirements, esp. availability of Emacs 22. 2008-02-09 Ralf Angeli * tex-buf.el (TeX-error, TeX-warning): Handle `expert' option of `TeX-display-help'. (TeX-warning): Find error file in same window. * tex.el (TeX-display-help): Add `expert' option. * doc/auctex.texi (Commands): Add some explanatory text for TeXing options. Document `TeX-show-compilation'. (Debugging): Reflect new option of `TeX-display-help'. * doc/changes.texi: Add changes for 11.85. Add copyright notice. 2008-02-08 Reiner Steib * tex-bar.el (LaTeX-symbols-toolbar-visible-flag): Improve doc string. * toolbar-x.el (toolbarx-image-path): Improve doc string. 2008-02-07 Ralf Angeli * tex-buf.el (TeX-parse-TeX): Do not pop to output buffer. (TeX-warning): Since we do not pop to the output buffer, find the source file in the original window. 2008-02-05 Ralf Angeli * font-latex.el (font-latex-built-in-keyword-classes): Add syntax alternatives for some commands. (font-latex-setup): Give ?@ word syntax for font locking. (font-latex-syntax-error-modes): New variable. (font-latex-match-command-with-arguments): Use it. 2008-02-04 Ralf Angeli * font-latex.el (font-latex-set-syntactic-keywords): Revert change from 2007-04-09 because the unbalanced treatment of \begin and \end may lead to color bleeding. 2008-02-03 Ralf Angeli * Relicense all "GPLv2 or later" files to "GPLv3 or later". * COPYING: Switch to GPLv3. * doc/Makefile.in, doc/preview-dtxdoc.pl: Add coypright and license notices. * style/beamer.el, style/scrbook.el: Add license notices. 2008-02-03 Ikumi Keita * tex-info.el (Texinfo-insert-node): Correct name of let-bound variable. 2008-02-03 Ralf Angeli * tex-info.el: Make sure the Texinfo mode of AUCTeX is still used after loading texinfo.el. 2008-02-02 Ralf Angeli * Makefile.in, auctex.spec, autogen.sh, configure.ac: Add copyright and license notices. * texmathp.el, style/amsmath.el, style/amsthm.el, style/fancyref.el, style/index.el, style/makeidx.el, style/multind.el, style/varioref.el: Reflect copyright assignment of Carsten Dominik to FSF in coypright notices and adapt licence notice accordingly. 2007-12-28 Ralf Angeli * tex-buf.el (TeX-command-expand): Do not evaluate `file' as a function. 2007-12-25 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Ignore whitespace when checking if verbatim macro starts at beginning of line. 2007-12-08 David Kastrup * texmathp.el (defgroup, defcustom): Remove compatibility cruft. 2007-11-20 Reiner Steib * doc/install.texi (Prerequisites): Add openSUSE. 2007-11-20 David Kastrup * doc/install.texi (Prerequisites): Update to reflect current realities. 2007-11-03 Reiner Steib * tex-buf.el (TeX-record-buffer): New variable, only in Emacs. (TeX-pop-to-buffer): New function. (TeX-recenter-output-buffer, TeX-background-filter) (TeX-parse-TeX, TeX-parse-error, TeX-help-error): Use `TeX-pop-to-buffer'. 2007-10-30 Reiner Steib * toolbar-x.el (toolbarx-find-image): Rename argument. Improve doc string. 2007-10-11 Ralf Angeli * latex.el (TeX-arg-verb): Honor active region. 2007-10-10 Ralf Angeli * style/MinionPro.el ("MinionPro"): Run style hook for amsmath which is loaded via MnSymbol. 2007-10-09 Ralf Angeli * style/nomencl.el: New file. * Makefile.in (STYLESRC): Add style/nomencl.el. 2007-10-03 Ralf Angeli * font-latex.el (font-latex-user-keyword-classes): Doc fix. 2007-08-26 Ralf Angeli * font-latex.el (font-latex-command-with-args-default-spec): Default to nil. 2007-08-24 Ralf Angeli * font-latex.el (font-latex-match-command-with-arguments): Show error indicator only in LaTeX mode. 2007-08-23 Ralf Angeli * style/nicefrac.el ("nicefrac"): Fix last change. 2007-08-22 Ralf Angeli * style/jurabib.el ("jurabib"): Use `font-latex-add-keywords'. Add syntax information. 2007-08-21 Ralf Angeli * style/scrreprt.el: Add licence text. ("scrreprt"): Use `font-latex-add-keywords'. Add syntax information. * style/scrpage2.el: Add licence text. ("scrpage2"): Use `font-latex-add-keywords'. Add syntax information. * style/scrlttr2.el: Add licence text. ("scrlttr2"): Use `font-latex-add-keywords'. Add syntax information. * style/scrbook.el ("scrbook"): Use `font-latex-add-keywords'. Add syntax information. * style/scrbase.el ("scrbase"): Use `font-latex-add-keywords'. Add syntax information. 2007-08-20 Ralf Angeli * style/url.el ("url"): Use `font-latex-add-keywords'. Add syntax information. * style/subfigure.el ("subfigure"): Use `font-latex-add-keywords'. Add syntax information. * style/csquotes.el ("csquotes"): Update for version 3.7. Use `font-latex-add-keywords'. Add syntax information. * style/MinionPro.el ("MinionPro"): Use `font-latex-add-keywords'. Add syntax information. * font-latex.el (font-latex-built-in-keyword-classes): Correct syntax spec for \subsubparagraph. 2007-08-19 Ralf Angeli * style/units.el ("units"): Use `font-latex-add-keywords'. Add syntax information. * style/nicefrac.el ("nicefrac"): Use `font-latex-add-keywords'. Add syntax information. * style/listings.el ("listings"): Use `font-latex-add-keywords'. Add syntax information. * style/flashcards.el ("flashcards"): Use `font-latex-add-keywords'. Add syntax information. * style/comment.el ("comment"): Use `font-latex-add-keywords'. Add syntax information. * style/booktabs.el ("booktabs"): Use `font-latex-add-keywords'. Add syntax information. * style/babel.el ("babel"): Use `font-latex-add-keywords'. Add syntax information. * style/paralist.el ("paralist"): Use `font-latex-add-keywords'. Add syntax information. * style/natbib.el ("natbib"): Use `font-latex-add-keywords'. Add syntax information. * style/mdwlist.el ("mdwlist"): Use `font-latex-add-keywords'. Add syntax information. * style/graphicx.el ("graphicx"): Use `font-latex-add-keywords'. Add syntax information. * style/fancyref.el ("fancyref"): Use `font-latex-add-keywords'. Add syntax information. * style/captcont.el ("captcont"): Use `font-latex-add-keywords'. Add syntax information. * style/beamer.el ("beamer"): Use `font-latex-add-keywords'. * font-latex.el (font-latex-add-keywords): New function. (font-latex-command-with-args-opt-arg-delims): Add parentheses. 2007-08-14 David Kastrup * tex.el (TeX-insert-backslash): put delete-selection property on. 2007-08-13 David Kastrup * Makefile.in (all): make new target "docs" as well. Descend for docs, info and dvi. Before regenerating extradist documentation, copy version info from checked-out version (can we do that saner?). On various targets, replace set -x with a somewhat more elaborate version that echoes more for make -n. 2007-08-10 Ralf Angeli * tex.el (TeX-doc-backend-alist): Delete buffers used for checking availability of info files. 2007-08-08 Ralf Angeli * tex-buf.el (TeX-TeX-sentinel-check): Shave off quotation marks from file name if present. 2007-08-04 Ralf Angeli * tex.el (TeX-run-style-hooks): Set `default-directory' to the directory of the master file. 2007-07-11 Ralf Angeli * style/pstricks.el ("pstricks"): Do not disable TeX PDF mode if pst-pdf is used. 2007-07-10 Ralf Angeli * tex-buf.el (TeX-format-filter): Remove line breaks at column 79. 2007-07-09 Ralf Angeli * tex.el (TeX-comment-forward): Call `comment-normalize-vars' if available. 2007-07-01 Ralf Angeli * style/verbatim.el: Add copyright notice and licence info. * style/paralist.el: Add copyright notice and licence info. * style/booktabs.el: Add copyright notice and licence info. * style/scrbase.el: Change copyright notice of Mark Trettin to FSF to reflect the assignment. Add licence info to header. * style/subfigure.el: Change copyright notice of Reiner Steib to FSF to reflect the assignment. Add licence info to header. * style/captcont.el: Change copyright notice of Reiner Steib to FSF to reflect the assignment. Add licence info to header. * latex.el (LaTeX-auto-minimal-regexp-list): Match optional arguments of document style or class macro even if they contain periods, e.g. in case of "BCOR8.25mm" in KOMA Script classes. Get rid of superfluous escapes in complemented character alternatives. * tex.el (TeX-insert-dollar): Show matching start only if `blink-matching-paren' is non-nil. 2007-06-20 Ralf Angeli * latex.el (LaTeX-common-initialization): Turn TeX PDF mode on when pst-pdf.sty is used. 2007-06-10 Ralf Angeli * latex.el (LaTeX-common-initialization): Do not add pstricks to style hooks. * style/pstricks.el: New file. * Makefile.in (STYLESRC): Add style/pstricks.el. 2007-05-25 Ralf Angeli * font-latex.el (font-latex-match-command-with-arguments): Check if `match-beg' is set. 2007-05-20 Ralf Angeli * style/beamer.el ("beamer"): Use new syntax in format specifier for frametitle macro. * font-latex.el (font-latex-built-in-keyword-classes): Use new syntax for format specifiers. (font-latex-user-keyword-classes): Describe new syntax for format specifiers. (font-latex-command-with-args-default-spec): Use new syntax for format specifiers. (font-latex-command-with-args-opt-arg-delims): New variable. (font-latex-match-command-with-arguments): Use it. Change format specifier parsing to support new syntax. (font-latex-match-mandatory-arg): Remove. 2007-05-05 Ralf Angeli * doc/faq.texi: Add entry about programs not being found by ./configure when PATH is not set correctly. 2007-04-29 Ralf Angeli * tex-buf.el (TeX-parse-error): Match any closing parenthesis. 2007-04-28 Ralf Angeli * font-latex.el (font-latex-fontify-region): Force redisplay instead of setting `jit-lock-context-unfontify-pos'. (font-latex-command-with-args-default-spec): New variable. (font-latex-match-command-with-arguments): Use it. (font-latex-built-in-keyword-classes): Correct some syntax specifiers. (font-latex-jit-lock-force-redisplay): New function. (font-latex-fontify-region): Use it. (font-latex-doctex-preprocessor-face): Make DocStrip guards stand out on Emacs 21. 2007-04-23 Ralf Angeli * latex.el (LaTeX-environment-menu): Support optional arguments specified by vectors. * style/flashcards.el: New file. * Makefile.in (STYLESRC): Add style/flashcards.el. * doc/auctex.texi (Adding Environments): Document possibility to specify optional arguments in `LaTeX-add-environments'. 2007-04-22 Reiner Steib * doc/changes.texi: Add index entries for auctex.el and tex-site.el. Add references to INSTALL or manual. * doc/install.texi (Loading the package): Add index entries for auctex.el and tex-site.el. * doc/wininstall.texi: Add index entries for tex-mik.el and tex-fptex.el. Clarify loading. 2007-04-22 Ralf Angeli * font-latex.el (font-latex-fontify-region): Force context-related unfontification only if the region has to be extended. (font-latex-find-matching-close): Do not look up syntax-table properties. (font-latex-extend-region-backwards-command-with-args) (font-latex-extend-region-backwards-command-in-braces) (font-latex-extend-region-backwards-math-env) (font-latex-extend-region-backwards-math-envII) (font-latex-extend-region-backwards-quotation): Doc fix. Return nil if no content requiring region extension was found. 2007-04-16 Ikumi Keita * latex.el (LaTeX-math-default): Add various Greek uppercase macros provided by amsmath.sty. 2007-04-15 Ralf Angeli * font-latex.el (font-latex-match-math-envII): Regexp-quote the string used to look for the environment end in order for starred environments to be found. 2007-04-13 Mark Trettin * style/scrbase.el ("scrbase"): Fix typo in prompt. (TeX-arg-KOMA-fontelements): Add \dictum, \pagination, \disposition, and \minisec macros. 2007-04-13 Ralf Angeli * style/beamer.el ("beamer"): Specify syntax of \frametitle macro for font locking. 2007-04-12 Ralf Angeli * style/amsmath.el ("amsmath"): Call `reftex-add-to-label-alist' only if function is bound. 2007-04-09 Ralf Angeli * tex.el (TeX-doc-backend-alist): Add --view parameter to texdoc call since texdoc in MiKTeX fires up a web page not useful for our purposes otherwise. * tex-mik.el: Set `TeX-kpathsea-path-delimiter' to nil since kpsewhich in MiKTeX (aka findtexmf) does not emit any useful information if fed with kpathsea-related variables anyway. This change makes `TeX-doc' work again on MiKTeX. * font-latex.el (font-latex-set-syntactic-keywords): Match the \begin macro of verbatim environments in case it is preceded by other content than whitespace. 2007-04-04 Ralf Angeli * latex.el (LaTeX-backward-paragraph): Fix grouping in order to return the right value when no paragraph command is found. 2007-04-01 Ralf Angeli * tex-buf.el (TeX-help-error): Correct regexp for matching line indicator. 2007-03-31 Ralf Angeli * latex.el (LaTeX-verbatim-environments): Fix typo. (LaTeX-backward-paragraph): Special-case verbatim environments in order to prevent leading brackets or braces from being interpreted as part of the \begin macro. Clean up a bit. 2007-03-24 David Kastrup * context.el (ConTeXt-find-indent): Use `condition-case' rather than `ignore-errors', and don't barf if at the end of file (like with an empty file). 2007-03-23 David Kastrup * context.el (TeX-ConTeXt-sentinel): Fix end-of-run detection. 2007-03-19 Ralf Angeli * style/comment.el: New file. * Makefile.in (STYLESRC): Add style/comment.el. * font-latex.el (font-latex-syntactic-keywords-extra): New variable. (font-latex-set-syntactic-keywords): Use it. * tex-style.el (LaTeX-comment-env-list): New variable. 2007-03-18 Ralf Angeli * doc/auctex.texi (Commands): Remove dependency on software du jour from description of `TeX-DVI-via-PDFTeX'. 2007-03-12 Ralf Angeli * font-latex.el (font-latex-quotes): Add nil option. (font-latex-match-quotation) (font-latex-extend-region-backwards-quotation): Do nothing if `font-latex-quotes' is nil. * doc/auctex.texi (Font Locking): Document nil option of `font-latex-quotes'. 2007-03-11 Ralf Angeli * latex.el (LaTeX-fold-math-spec-list): `decode-char' is not autoloaded in XEmacs. Only use it when it is defined. * doc/auctex.texi (European): Document `icelandic' language option. * Makefile.in (STYLESRC): Add style/icelandic.el. * style/icelandic.el: New file. 2007-03-11 David Kastrup * RELEASE (Footnotes): Update Emacs CVS locations. 2007-03-10 Ralf Angeli * tex-fold.el (TeX-fold-auto): Default to nil. 2007-03-09 Ralf Angeli * tex.el (TeX-clean): Catch error on Emacs 21 when only one file is to be deleted. 2007-03-06 Ralf Angeli * tex.el (TeX-search-syntax-table): Set syntax of ?\( and ?\) explicitely to whitespace for Emacs 21. (TeX-search-syntax-table): Clean the syntax table more thoroughly. 2007-03-04 Ralf Angeli * tex.el (TeX-find-macro-boundaries): Make it possible to restrict the search with new argument `lower-bound'. (TeX-find-macro-start): Make it possible to restrict the search with new argument `limit'. * font-latex.el: Merge from multiline-font-lock branch. (font-latex-do-multi-line, font-latex-use-cache): Remove. (font-latex-multiline-boundary): New variable. (font-latex-built-in-keyword-classes): Add information about syntax of macros. Quote face names. (font-latex-deactivated-keyword-classes): Adapt type to new form of `font-latex-built-in-keyword-classes'. (font-latex-make-match-defun): Accept `face' argument. (font-latex-keyword-matcher): Support up to 8 slots for faces. (font-latex-make-built-in-keywords): Support new form of keywords classes. (font-latex-user-keyword-classes): Provide possibility to specify macro syntax. (font-latex-make-user-keywords): Add warning face in relevant matchers. (font-latex-extend-region-functions): New variable. (font-latex-setup): Use it. Clean up. (font-latex-fontify-region): New function. (font-latex-unfontify-region): Cater for XEmacs. (font-lock-after-change-function): Advise function for challenged editors. (font-latex-find-matching-close): Use `TeX-search-syntax-table'. (font-latex-not-on-same-line-as): New function. (font-latex-set-cache, font-latex-get-cache) (font-latex-check-cache): Remove. (font-latex-put-multiline-property-maybe): New function. (font-latex-match-command-cache): Remove. (font-latex-matched-faces): New variable. (font-latex-matched-face): New function. (font-latex-match-command-with-arguments): Use them. Set warning face when syntax not correct. (font-latex-match-in-braces-cache): Remove. (font-latex-match-mandatory-arg): New function. (font-latex-extend-region-backwards-command-with-args): New function. (font-latex-match-command-in-braces): Set multiline property if necessary. (font-latex-extend-region-backwards-command-in-braces): New function. (font-latex-match-math-env): Set multiline property if necessary. (font-latex-extend-region-backwards-math-env): New function. (font-latex-math-environments): New variable. (font-latex-match-math-envII): Use it. Set multiline property if necessary. (font-latex-extend-region-backwards-math-envII): New function. (font-latex-update-quote-list): New function. (font-latex-match-quotation): Use it. Set multiline property if necessary. (font-latex-extend-region-backwards-quotation): New function. 2007-02-25 David Kastrup * tex.el (TeX-read-string): Add new function that will inherit the input method if feasible. TODO: replace calls of `read-string' with this wherever it may be appropriate. 2007-02-20 Ikumi Keita * tex-buf.el (TeX-region-file): Doc fix. 2007-02-15 Masayuki Ataka * tex.el (TeX-after-insert-macro-hook): New hook. (TeX-insert-macro): Use it. * tex-fold.el (TeX-fold-auto): New variable. (TeX-fold-mode): Append auto fold stuff to the end of `TeX-after-insert-macro-hook'. 2007-02-13 Ralf Angeli * tex.el (TeX-clean): Fix last change. 2007-02-10 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list-internal) (TeX-fold-env-spec-list-internal) (TeX-fold-math-spec-list-internal): New variables. (TeX-fold-region-macro-or-env, TeX-fold-item): Use them. (TeX-fold-comment-do): Doc fix. (TeX-fold-mode): Set TeX-fold-*-spec-list-internal variables. Use -fold-*-spec-list variables if bound. * latex.el (LaTeX-fold-macro-spec-list) (LaTeX-fold-env-spec-list, LaTeX-fold-math-spec-list): New variables. * tex.el (TeX-mode-prefix): New function. (TeX-clean): Use it. 2007-02-10 Masayuki Ataka * tex-jp.el (TeX-japanese-process-input-coding-system) (TeX-japanese-process-output-coding-system): Use system-type instead of window-system. Suggested by Ikumi Keita . 2007-02-09 Masayuki Ataka * tex-jp.el (TeX-japanese-process-input-coding-system) (TeX-japanese-process-output-coding-system): Do not use default-coding-system to set process-coding-system, anymore. The value is set to shift_jis or euc-jp depending on window-system. * tex-bar.el: Fix typo. Reported by Ikumi Keita . 2007-02-09 Ikumi Keita * tex-jp.el (japanese-TeX-command-list): Add `TeX-run-discard-foreground' and `TeX-run-function' for function-item. (japanese-TeX-set-process-coding-system): New function. (TeX-after-start-process-function): Use it. Cater for the accidental case that no-Japanese loads tex-jp.el and his coding-system is set to unexpected one. 2007-02-05 Ralf Angeli * tex.el (TeX-submit-bug-report): Remove unnecessary code. Include a plea for upgrading into introductory blurb. 2007-02-01 Ikumi Keita * latex.el: Move (provide 'latex) to the end of buffer. (TeX-global-input-files, BibTeX-global-style-files) (BibTeX-global-files): checkdoc cleaning. (LaTeX-fill-paragraph, LaTeX-fill-code-comment): Use function TeX-match-buffer instead of buffer-substring-*. (LaTeX-209-to-2e): Likewise. * tex-buf.el (TeX-command-region, TeX-command-buffer) (TeX-next-error, TeX-check-files, TeX-command-next) (TeX-output-extension, TeX-run-set-command, TeX-run-interactive) (TeX-sentinel-default-function, TeX-region-create, TeX-region) (TeX-error-file, TeX-error-offset, TeX-parse-TeX) (TeX-error-description-list): checkdoc cleaning. (TeX-run-command, TeX-TeX-sentinel-check, TeX-BibTeX-sentinel): Use substitute-command-keys to message key binding. (TeX-current-pages): Add doc string. * tex.el (TeX-print-command, TeX-queue-command) (TeX-command-list, TeX-printer-list, TeX-set-mode-name) (TeX-regexp-group-count): checkdoc cleaning. (plain-TeX-mode-hook): Declare user option explicitly using defcustom. (TeX-search-files-kpathsea): Use TeX-kpathsea-path-delimiter instead of kpathsea-path-delimiter. 2007-01-23 Ralf Angeli * doc/auctex.texi (Quotes): Document `TeX-math-close-double-dollar'. Add subheadings. 2007-01-22 Ralf Angeli * autogen.sh: Define PDFTEX if empty and pass it to `make dist' in `doc' directory for documentation generation. * doc/Makefile.in (docdir, PACKAGE_TARNAME): New variables. (dist): Add tex-ref.pdf target. (extradist): Remove tex-ref.pdf target. (install-auctex): Add tex-ref.pdf target. Install tex-ref.pdf into $(docdir). 2007-01-21 Ralf Angeli * tex-fptex.el: Make calls of start.exe work with quoted file names. * tex-mik.el: Make calls of start.exe work with quoted file names. 2007-01-21 Masayuki Ataka * tex-fold.el (TeX-fold-type-list): New new type 'math. (TeX-fold-math-spec-list): New variable. (TeX-fold-dwim, TeX-fold-region, TeX-fold-region-macro-or-env) (TeX-fold-item): Try to fold math macros as well. (TeX-fold-buffer, TeX-fold-paragraph, TeX-fold-make-overlay) (TeX-fold-item-end): Mention new type 'math. (TeX-fold-math): New function. 2007-01-20 David Kastrup * auctex.spec: Remove unused `%{extraconfig}' argument. 2007-01-20 Masayuki Ataka * tex-fold.el (TeX-fold-macro-spec-list): Fold marginpar, eqref, glossary, copyright, textregistered and texttrademark macros as well. 2007-01-18 Masayuki Ataka * tex-jp.el: Update maintainer email address. * style/verbatim.el: Update author email address. 2007-01-17 Reiner Steib * tex.el (TeX-clean-default-intermediate-suffixes): Add beamer suffixes. 2007-01-16 Masayuki Ataka * tex-jp.el (japanese-TeX-command-list): Use "%`" and "%'" magic to allow file names with spaces. See also change log for TeX-command-list in tex.el on 2006-10-10. Reported by Ikumi Keita . 2007-01-14 Ralf Angeli * doc/wininstall.texi: Add copyright notice and licence reference. Mention --infodir. Some clean-ups. 2007-01-13 Ralf Angeli * Makefile.in (www-doc): Generate AUCTeX and preview-latex manuals in single directory. Patch gendocs.sh to use texi2html instead of makeinfo (patch not included). 2007-01-12 Ralf Angeli * Version 11.84 released. 2007-01-12 Ralf Angeli * RELEASE: Update for release. * doc/changes.texi: Update for release. * auctex.spec (Version): Bump version number. * configure.ac: Bump version number. * doc/tex-ref.tex: Bump version number. 2007-01-11 Ralf Angeli * Makefile.in (STYLESRC): Add style/polski.el. * RELEASE: Mention support for `polski' LaTeX package. * style/polski.el: New file. * doc/auctex.texi (European): Mention `polski' language option. 2007-01-08 Ralf Angeli * RELEASE: Document some new features. * style/polish.el: New file. * Makefile.in (STYLESRC): Add style/polish.el. * doc/auctex.texi (European): Remove references to `plfonts' and `plhb' styles for typesetting Polish text because they seem to be out of use. Refer to the `polish' option for the babel LaTeX package instead. * tex.el (TeX-quote-language-alist): Replace references to `plfonts' and `plhb' by `polish'. 2007-01-07 Ralf Angeli * doc/wininstall.texi: Refer to up-to-date versions of CVS Emacs. * doc/install.texi (Prerequisites): Refer to up-to-date versions of CVS Emacs. 2007-01-05 Reiner Steib * doc/auctex.texi (European): Improve TeX-quote-language-alist. * tex.el (TeX-command-default): Mark as safe-local-variable. (TeX-quote-language-alist): Improve custom type. Add links to the manual. Improve doc string. 2006-12-30 Ralf Angeli * doc/auctex.texi (Folding): Document user-visible changes in the folding functionality. 2006-12-29 Ralf Angeli * tex-info.el (TeX-texinfo-mode): Set `comment-use-syntax'. * tex-fold.el: Update author email address. (TeX-fold-type-list): New variable. (TeX-fold-keymap): Add key binding for `TeX-fold-comment'. (TeX-fold-dwim): Try to fold comment as well. (TeX-fold-region): Move implementation of region folding for macros and environments out into the new function `TeX-fold-region-macro-or-env' and cater for comments as well. (TeX-fold-region-macro-or-env, TeX-fold-region-comment) (TeX-fold-comment, TeX-fold-comment-do): New functions. * latex.el (LaTeX-common-initialization): Set `TeX-search-forward-comment-start-function'. (LaTeX-fill-region-as-para-do, LaTeX-fill-paragraph) (LaTeX-fill-code-comment): Call `TeX-search-forward-comment-start' instead of `LaTeX-search-forward-comment-start'. * tex.el (VirTeX-common-initialization): Set `comment-end-skip' and `comment-use-syntax'. (TeX-fold-menu): Add entry for folding comments. (TeX-comment-forward): New compatibility function. (TeX-comment-or-uncomment-region): Use it. (TeX-search-forward-comment-start-function): New variable. (TeX-search-forward-comment-start): New function. 2006-12-10 David Kastrup * latex.el (LaTeX-section-hook): Place into `LaTeX-macro' group. (LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-braces): Same here. (LaTeX-verbatim-environments): Place into `LaTeX-environment' group. 2006-12-07 Ralf Angeli * tex-bar.el (TeX-install-toolbar, LaTeX-install-toolbar): Add `toolbarx-refresh' to `TeX-PDF-mode-hook' in the current buffer only. 2006-12-06 Ralf Angeli * context-nl.el (ConTeXt-nl-mode-initialization): Use correct syntax for prompting for an optional argument in case of \items macro. * context-en.el (ConTeXt-en-mode-initialization): Use correct syntax for prompting for an optional argument in case of \items macro. * context.el (ConTeXt-arg-setup): Capitalize prompt. 2006-12-04 Miguel Frasson * toolbar-x.el (toolbarx-emacs-add-button): Insert buttons in KEYMAP (new arg). Unnecessary &optional removed. Removed broken code for fake-button `:new-line'. (toolbarx-emacs-refresh-process-button-or-insert-list): New arg KEYMAP inserted. Unnecessary &optional removed. (toolbarx-emacs-refresh): Fixed bug with `tool-bar-map' let-bound and made local variable. (toolbarx-xemacs-refresh-process-button-or-insert-list): Docstring improved.. (toolbarx-xemacs-refresh): Using `nreverse' directly inside `let'. `nreverse' is applied to lists generated from actual data-structures, leaving such data-structures alone. 2006-11-26 Ralf Angeli * context.el (ConTeXt-texexec-option-nonstop): New variable. (ConTeXt-expand-options): Use it. 2006-11-24 Ralf Angeli * tex.el (plain-TeX-enable-toolbar): Rename from `TeX-enable-toolbar'. (plain-TeX-maybe-install-toolbar): Rename from `TeX-maybe-install-toolbar'. (TeX-plain-tex-mode): Use new names. * doc/auctex.texi (Running TeX and friends): Explicitely mention `plain-TeX-enable-toolbar' and `LaTeX-enable-toolbar'. 2006-11-16 Ralf Angeli * latex.el (LaTeX-fill-region-as-para-do): Do not break before code comments if at a commented beginning of a line. 2006-10-21 Reiner Steib * doc/preview-latex.texi: Fix @node commands. 2006-10-20 David Kastrup * doc/auctex.texi (top): Mention reference card. * doc/Makefile.in (PREVIEWTEXIFILES): Add `version.texi'. * doc/auctex.texi: Add formatting emergencystretch. Move macros input. (top): Rearrange somewhat. Avoid duplicate contents (?). * doc/preview-latex.texi: Restructure and relicense taking auctex.texi as an example. * doc/auctex.texi (top): In the user-visible part of the info file, move the copying info completely to the "Copying this manual" section in order to reduce clutter. 2006-10-19 David Kastrup * RELEASE: Mention previous XEmacs package problems. 2006-10-16 David Kastrup * tex-buf.el (TeX-parse-error, TeX-error, TeX-warning): Replace the error parser basically by what we have in preview-latex. However, this does not yet do the fine-grained hackery around possible TeX quote characters that preview-latex employs in order to get the correct character position in a line even under adverse conditions. 2006-10-11 David Kastrup * tex-buf.el (TeX-error-description-list): Add preview-latex error pattern here. * tex.el (TeX-expand-list): Add "%m" pattern from preview. (TeX-add-local-master): Make a local variable wrapper more suitable for docstrip. 2006-10-10 David Kastrup * RELEASE: Mention space in file names, PostScript stack tolerance. * tex-buf.el (TeX-command-expand): Make `file' self-quoting in expansion, and trick around with `TeX-command-pos' and other junk in order to make the quoting stuff of "%`" and "%'" work. (TeX-view-output-file): Became pretty pointless. Remove. * tex.el (TeX-command-list): Use "%`" and "%'" magic to allow file names with spaces. (TeX-output-view-style): Don't quote "%s", that's the job of `TeX-command-expand'. (TeX-expand-list): Use the `-interaction' option. Define "%`", " \"\\", "\"" and "%'" patterns. Somebody should probably rather turn this into external functions in `tex-buf.el': the stuff really has no business here and does not get byte-compiled. Use `file' for "%o". 2006-10-07 Ralf Angeli * latex.el (LaTeX-fill-region-as-paragraph): Match "foo\ %" as well. 2006-10-04 Ralf Angeli * tex.el (TeX-find-macro-boundaries): Prevent `up-list' and friends from finding parens in comments if point is not in a comment and vice versa. 2006-10-02 David Kastrup * doc/auctex.texi: Change the licensing terms to require no front and back cover texts, and explicitly exclude the GFDL from being licensed under the GFDL. (top): Give a synopsis for the license section in the top menu. Remove redundant version mentions, remove the explicit exclusion of the GFDL from GFDL licensing: RMS says it is unnecessary. 2006-09-29 David Kastrup * autogen.sh: Use `=' instead of `==' in tests. * doc/Makefile.in (version.texi): Let version.texi depend rather on ChangeLog in order not to disturb pregenerated documentation. * autogen.sh: Prepare `AUCTEXDATE' and `AUCTEXVERSION' for `make dist'. * Makefile.in (tar-ball): Pass version and date into autogen.sh * doc/Makefile.in (AUCTEXDATE, AUCTEXVERSION): get from configure. (AUCTEXTEXIFILES): Add fdl.texi and version.texi (version.texi): create depending on Makefile. (maintainer-clean): Remove version.texi. Should this be in the distclean target instead? * doc/fdl.texi: Add it. * Makefile.in (DOCFILES): Remove, unused. (doc/Makefile): Add target. (info, dvi, install-man, install-docs, clean, distclean) (tar-ball): depend on doc/Makefile * doc/.cvsignore: Add version.texi, remove unused auto.texi. * doc/auctex.texi: Rearrange header material, put under GFDL, add license, take version numbers from version.texi. 2006-09-21 David Kastrup * RELEASE: Adapt to upcoming release. * doc/install.texi (Configure): Remove reference to `--with-kpathseasep' option. * tex-mik.el (TeX-kpathsea-path-delimiter): initialize to ";". * tex-fptex.el (TeX-kpathsea-path-delimiter): initialize to ";". 2006-09-20 David Kastrup * tex-buf.el: Let `TeX-active-buffer' return nil if there is no command buffer. Change copyright notice from Kresten Krab Thorup to reflect assignment to FSF. * latex.el: Change copyright notice. * tex.el: Change copyright notice. * doc/tex-ref.tex: Change copyright notice. * doc/auctex.texi: Change copyright notice. 2006-09-17 Reiner Steib * doc/faq.texi: Fix syntax error. 2006-09-16 Ralf Angeli * doc/faq.texi: Explain the abbreviation AUC. 2006-09-13 Reiner Steib * toolbar-x.el (toolbarx-emacs-refresh): Don't modify global value of `tool-bar-map'. 2006-09-11 Reiner Steib * latex.el (LaTeX-math-default): Remove X2ABB for \Pr. Suggested by Adam Johnson . 2006-09-08 Reiner Steib * latex.el: Use read-kbd-macro instead of kbd for LaTeX-math-mode. (LaTeX-math-default): Add bindings for \var... symbols. (LaTeX-math-default): Change binding for \vartheta. 2006-09-08 David Kastrup * latex.el: Allow strings for keys in LaTeX-math-mode. (LaTeX-math-list): Allow string for key. 2006-09-06 Ralf Angeli * doc/auctex.texi (Mathematics): Align description of `LaTeX-math-list' with reality. 2006-08-25 David Kastrup * doc/preview-faq.texi (Requirements, Installation Trouble) (Customization): Update and remove stuff, mostly because preview-latex is integrated with AUCTeX now. 2006-08-30 Ralf Angeli * latex.el (TeX-latex-mode): Check if `tool-bar-mode' is bound. * tex.el (TeX-plain-tex-mode): Check if `tool-bar-mode' is bound. 2006-08-26 Ralf Angeli * doc/auctex.texi (European): Make replacement of language-specific hyphen strings more obvious. 2006-08-25 Ralf Angeli * style/csquotes.el: Bring up to par with version 3.5. 2006-08-17 David Kastrup * doc/auctex.texi (Viewing): Type fix. 2006-08-05 Berend de Boer * context-en.el: quite a few more English ConTeXt macros made available in menu. * context-nl.el: few more Dutch ConTeXt macros made available in menu. * context.el: more ConTeXt macros made available in menu. 2006-08-02 Reiner Steib * tex-bar.el (TeX-bar-TeX-button-alist, TeX-bar-LaTeX-button-alist): Make `file' invisible in TeX-PDF-mode. Add clean. (TeX-bar-TeX-buttons, TeX-bar-LaTeX-buttons): Improve custom type. 2006-07-27 Reiner Steib * tex-bar.el (TeX-bar-TeX-buttons, TeX-bar-LaTeX-buttons): Improve wording. * doc/changes.texi: Add bug fixes. Add TeX tool bar. * doc/auctex.texi (Running TeX and friends): Add TeX-enable-toolbar. * tex-bar.el: Copy of tool bar stuff from LaTeX-*. (TeX-bar-TeX-buttons, TeX-bar-TeX-all-button-alists) (TeX-bar-TeX-button-alist): New variables. (TeX-bar-TeX-buttons, TeX-install-toolbar): New funtions. (TeX-tool-bar-button-definitions): New custom group * tex.el (TeX-enable-toolbar): New variable. (TeX-maybe-install-toolbar): New function. (TeX-plain-tex-mode): Add `TeX-maybe-install-toolbar'. 2006-07-27 David Kastrup * doc/wininstall.texi: Add explanation of how to augment `PATH'. * doc/todo.texi (Mid-term Goals): Typo. 2006-07-25 David Kastrup * style/doc.el ("doc"): Add macrocode and macrocode* to indentation-neutral environment list. * latex.el (LaTeX-insert-environment): Leave mark at start of content when inserting around active region. 2006-07-11 David Kastrup * latex.el (LaTeX-font-list): Add `\mathbb' on C-c C-f C-s. 2006-07-25 Ralf Angeli * font-latex.el (font-latex-match-script): Don't match groups spanning more than one line in order to avoid visually wrong indentation in subsequent lines. (font-latex-match-quotation): Do not match escaped quotation marks. 2006-07-23 Ralf Angeli * bib-cite.el, tex-mik.el, doc/changes.texi, doc/history.texi, doc/wininstall.texi: Fix spelling of MiKTeX. 2006-07-21 Ralf Angeli * font-latex.el (font-latex-match-script): Fix last check-in. 2006-07-18 Ralf Angeli * font-latex.el (font-latex-match-script): Apply subscript and superscript highlighting only once in order to prevent the font size becoming too small. 2006-07-15 Ralf Angeli * latex.el (LaTeX-maybe-install-toolbar): Enable tool bar in LaTeX mode only. (LaTeX-maybe-install-toolbar): Revert last change. (TeX-latex-mode): Set `tool-bar-mode-on-hook' buffer-locally instead. 2006-07-12 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Fix regexp for matching whitespace and comment characters at the start of a line. Simplify forward search. 2006-07-11 Ralf Angeli * tex.el (TeX-find-macro-boundaries, TeX-find-macro-start): Remove unused argument. (TeX-find-macro-end-helper): Handle macros at the end of the buffer correctly. 2006-07-10 Ralf Angeli * tex.el (TeX-math-close-double-dollar): New variable. (TeX-insert-dollar): Use it. * Makefile.in, doc/Makefile.in (datarootdir): New variable used by autoconf 2.59e. 2006-07-09 Ralf Angeli * aclocal.m4 (EMACS_CHECK_MULE): Check for EMACS_UNIBYTE environment variable and do not set MULESRC if it is present. 2006-07-07 Ralf Angeli * tex.el (TeX-normal-mode): Force update of style list. 2006-07-02 Ralf Angeli * tex.el (TeX-doc-backend-alist): Explicitely supply doc directory for non-kpathsea-based TeX systems. 2006-06-29 Ralf Angeli * latex.el (LaTeX-fill-region-as-paragraph): Fix treatment of code comments in case of something like "\%}%". 2006-06-24 Ralf Angeli * tex.el (TeX-clean): Delete files in directory of master file. 2006-06-23 Joshua Buhl * doc/tex-ref.tex (title{Outlining TeX Documents}): new section. 2006-06-19 Ralf Angeli * style/amsmath.el ("amsmath"): Prompt for alignment option with subarray environments. 2006-06-18 Ralf Angeli * tex.el (TeX-doc-backend-alist): Preserve window configuration when checking for info backends. 2006-06-17 Ikumi Keita * tex.el (TeX-parse-arguments): Makes to work with proper value of TeX-insert-macro-default-style. (TeX-insert-braces): Place braces with right direction with active region, (related to the case when the region is being marked backwards). 2006-06-17 Masayuki Ataka * tex.el (TeX-clean): Delete generated files associated with `TeX-region-file'. Suggested by Ikumi Keita . 2006-06-12 Ralf Angeli * tex.el (Info-find-file): Do not autoload. (TeX-doc-backend-alist): Use a method for checking the presence of an info file which works in Emacs 21 as well. 2006-06-11 Ralf Angeli * tex.el (TeX-doc-backend-alist): Don't error out if `Info-find-file' is not available. (TeX-doc): Use `interactive-p' instead of `called-interactively-p' which is not available in Emacs 21. 2006-06-11 Ikumi Keita * style/amsmath.el ("amsmath"): Docfix for 'uproot'. (LaTeX-amsmath-env-alignat): Fix typo. 2006-06-08 David Kastrup * Makefile.in (PREVIEW_BUILD_DIR): New variable for building the preview standalone bundle. (preview-ball): New target for creating the preview standalone bundle for CTAN. 2006-06-08 Reiner Steib * auctex.spec (%post, %postun): Use mktexlsr instead of texhash. Only update the relevant ls-R file. (%install): Add comment about preview.cfg. (%install, %files): prauctex.cfg is the config file, not preview.cfg. 2006-06-07 Ralf Angeli * latex.el (LaTeX-set-paragraph-start): New function. (LaTeX-paragraph-commands-add-locally) (LaTeX-common-initialization): Use it. 2006-06-07 Reiner Steib * Version 11.83 released. 2006-06-07 Reiner Steib * Makefile.in (full-release): Remove duplicate pass phrase prompt. (release-commit): Only commit ChangeLog. * Makefile.in (rpm-packages): Rename from rpm-builds. * RELEASE: Fix typo. * Makefile.in (rpm-builds): Add preview-tetex. * auctex.spec: Add "-n" for preview-tetex. (%install): Create preview.cfg. 2006-06-07 David Kastrup * RELEASE: Add info about preview RPM. * doc/install.texi (Advice for package providers): Adapt package advice to what we actually do for RPM files. * auctex.spec: attempt to add preview-tetex package. 2006-06-07 Reiner Steib * Makefile.in (XEMACS_BUILD_DIR): New variable. (xemacs-package): Use it. (tar-ball-clean): Add XEMACS_BUILD_DIR. (CP): New variable. (tar-ball, www-doc): Use it. * RELEASE: Update RPM stuff. * tex.el (TeX-line-number-at-pos): New compatibility function. * style/pdfsync.el (LaTeX-pdfsync-output-page): Use it. * auctex.spec (Obsoletes): Remove preview-latex-common. 2006-06-06 Ralf Angeli * style/pdfsync.el (LaTeX-pdfsync-output-page): Initialize `sync-record' with a non-nil value. * doc/auctex.texi (Viewing): Fix reference to Commands node looking ugly in info output. Slightly rearrange forward/inverse search section. Document pdfsync support a bit more in detail. 2006-06-06 Reiner Steib * RELEASE: Use "SUSE" instead of "SuSE". * auctex.spec (Release): Bump to 1. (%changelog): Add 11.83. * doc/changes.texi: Add @xref for pdfsync. * doc/auctex.texi (Viewing): Mention pdfsync. * doc/todo.texi (Wishlist): Add newline. Mention pdfsync. 2006-06-06 David Kastrup * RELEASE: Add details about downloadable packages. Beg harder. 2006-06-05 Reiner Steib * RELEASE: Mention LaTeX tool bar. 2006-06-05 Ralf Angeli * font-latex.el (font-latex-quote-regexp-beg) (font-latex-quotes-control): Make buffer-local. (font-latex-add-quotes): Revert last change and do not make `font-latex-quotes-control' buffer-local which it now already is. 2006-06-04 Ralf Angeli * font-latex.el (font-latex-add-quotes): Make `font-latex-quote-regexp-beg' buffer-local. 2006-06-04 Reiner Steib * Makefile.in (rpm-builds): New target. (full-release): Use gpg-agent if available. (RPM_SIGN): New variable. (rpm-builds): Use it. * doc/install.texi (Advice for non-privileged users): Reword to avoid underfull hbox. 2006-06-03 Ralf Angeli * doc/auctex.texi (top): Update master menu. (Running TeX and friends): Update menu. (Miscellaneous Commands): Remove. (Cleaning, Documentation): New nodes. * doc/changes.texi: Update references to documentation about cleaning and documentation access. 2006-06-02 Reiner Steib * doc/auctex.texi (Miscellaneous Commands): New node. * doc/changes.texi: Add @xref-s. 2006-06-02 David Kastrup * doc/changes.texi: Change one ref to xref. 2006-05-31 Reiner Steib * doc/changes.texi: Conditionalize reference. * doc/Makefile.in (MAKEINFO_PLAIN): Remove --no-validate. * auctex.spec (%files emacs): Remove %exclude. 2006-05-30 Reiner Steib * doc/Makefile.in (MAKEINFO_PLAIN): New. Add --no-validate. * doc/changes.texi: Add tool bar. * doc/auctex.texi (top): Remove tool bar. (Running TeX and friends): Add tool bar here. Adjust. 2006-05-25 David Kastrup * RELEASE: Mention file-line-error style messages. Mention XyMTeX fix. * doc/changes.texi: The same. 2006-05-25 Ralf Angeli * tex.el (TeX-update-style-hook): New variable. (TeX-update-style): Use it. (TeX-remove-style): Fix typo. * font-latex.el (font-latex-quotes-internal): New variable. (font-latex-quotes-set-internal): New function. (font-latex-match-quotation): Use it. Use `font-latex-quotes-internal' instead of `font-latex-quotes'. (font-latex-setup): Remove code for figuring out type of language-specific quotation mark matching which is now in `font-latex-quotes-set-internal'. * RELEASE: Update for 11.83. * auctex.spec, configure.ac, doc/auctex.texi, doc/changes.texi, doc/preview-latex.texi, doc/tex-ref.tex: Bump version number. Update address of FSF in GPL notices. 2006-05-22 Ralf Angeli * font-latex.el (font-latex-quotes-fallback) (font-latex-quote-style-list-french) (font-latex-quote-style-list-german): New variables. (font-latex-quotes): Add `auto' option. (font-latex-setup): Try to derive type of quotation mark matching from document properties. * tex.el (TeX-elt-of-list-member): New function. * doc/auctex.texi (Font Locking): Document `auto' option of `font-latex-quotes'. 2006-05-21 Ralf Angeli * tex.el (TeX-source-specials-mode): Mark as safe. (TeX-PDF-mode): Use `TeX-booleanp'. (TeX-booleanp): New function. * font-latex.el (font-latex-quotes): Mark as safe. (font-latex-fontify-script): Use `TeX-booleanp'. 2006-05-17 Ralf Angeli * latex.el (LaTeX-forward-paragraph): Make regexp more efficient. 2006-05-15 Reiner Steib * tex.el (TeX-PDF-mode): Rewrite safe-local-variable property for Emacs 21 compatibility. * font-latex.el (font-latex-fontify-script): Ditto. 2006-05-10 Reiner Steib * tex.el (TeX-master): Quote safe-local-variable lambda expression to avoid byte compilation. 2006-05-08 Reiner Steib * font-latex.el (font-latex-fontify-script): Mark as safe-local-variable. 2006-05-07 Reiner Steib * tex.el (TeX-PDF-mode): Mark as safe-local-variable. (TeX-master): Don't use t in safe-local-variable declaration. (TeX-doc): Clarify. 2006-05-07 Ralf Angeli * font-latex.el (font-latex-match-quotation): Do not match quotation marks in math constructs. 2006-05-05 Berend de Boer * context.el (ConTeXt-mode-common-initialization): Previous fix still wrong. Problem is that all local variables were killed, so added a save/restore around the common initialisation. 2006-05-04 Berend de Boer * context-nl.el (context-nl-mode) and context-en.el (context-en-mode): can now assume that ConTeXt-current-interface is buffer local. * context.el (ConTeXt-current-interface): this variable should always be buffer local. With this and above two changes having buffers with two interfaces at the same time works correctly (again?). 2006-04-26 Ralf Angeli * tex-buf.el (TeX-TeX-sentinel-check, TeX-parse-error): Support file-line-error error indicators. 2006-04-22 Ralf Angeli * tex.el (TeX-format-list): Extend regexp for ConTeXt mode. 2006-04-21 Ralf Angeli * latex.el (docTeX-mode): Make filling and indentation aware of DocStrip guards. 2006-04-20 David Kastrup * tex-buf.el (TeX-warning): Don't balk if `string' is nil. 2006-04-17 Ralf Angeli * font-latex.el (font-latex-match-script): Fix matching of nested braces. 2006-04-12 Ralf Angeli * latex.el (LaTeX-babel-insert-hyphen): Do not error out at beginning of buffer. 2006-03-28 Ralf Angeli * Makefile.in (install-metadata): Do not use an inline test for checking if preview is enabled. Just to be on the safe side. 2006-03-27 David Kastrup * doc/intro.texi (Introduction): refer to `below' instead of probably non-existing `preview/README'. * tex.el: tiny typo. * latex.el (LaTeX-close-environment): Allow prefix argument to reopen the environment. 2006-03-22 Ralf Angeli * Makefile.in (install-metadata): Append preview/auto.el to start file if configured with preview-latex. 2006-03-20 Ralf Angeli * latex.el (LaTeX-insert-environment): Do not polute the kill ring. 2006-03-15 Ralf Angeli * latex.el (TeX-latex-mode): Set up tool bar correctly for XEmacs and activate it for every buffer in Emacs. Run mode hooks as late as possible. 2006-03-14 Ralf Angeli * configure.ac: Check for `make' and abort if not present. Use `AC_PROG_MAKE_SET' instead of deprecated `AC_SET_MAKE'. * latex.el (LaTeX-common-initialization): Add \dots to supported TeX symbols. 2006-03-13 Ralf Angeli * tex.el (TeX-mode-map): Change `C-c ?' binding from `describe-mode' to `TeX-doc'. (TeX-common-menu-entries): Add `Find Documentation...' entry for `TeX-doc'. (plain-TeX-menu-entries): Remove space before ellipsis. (TeX-doc-backend-alist): Make texdoc backend available in all modes. * latex.el (LaTeX-mode-menu): Remove space before ellipsis. * doc/changes.texi: Advertise cleaning and documentation finding functionality. 2006-03-07 Ralf Angeli * tex-buf.el (TeX-next-error, TeX-active-buffer): Get master from the command buffer. (TeX-error, TeX-warning): Do not set `TeX-master' but set `TeX-command-buffer' to the right value instead. 2006-02-17 Masayuki Ataka * tex-buf.el (TeX-error-description-list): Fix error messages. Changed from `documentstyle' to `documentclass'. The duplicated entries `counter too large' are combined. Add the name of referenced book and the section number to the entry `Missing \\$ inserted'. * tex-jp.el (TeX-error-description-list): Likewise. 2006-02-16 Ralf Angeli * tex.el (TeX-master): Mark as safe. 2006-02-09 Ralf Angeli * doc/wininstall.texi: Intersperse some information about PATH. 2006-02-08 Reiner Steib * tex.el (TeX-clean-default-intermediate-suffixes): Add .brf and .out for hyperref. 2006-02-08 Ralf Angeli * tex.el (TeX-kpathsea-format-alist): Add search specs for documentation. (Info-find-file, info-lookup->completions): Autoload. (TeX-doc-backend-alist): New variable. (TeX-doc): New function. * doc/todo.texi (Wishlist): Add a few words about documentation lookup for macros. 2006-02-07 Ralf Angeli * tex-buf.el (TeX-run-ispell-on-document): Reintroduce for compatibility reasons. * tex.el (TeX-command-list): Use `TeX-run-function' instead of `TeX-run-ispell-on-document' for "Spell" option. Remove `TeX-run-ispell-on-document' as option for the third element of an item. (TeX-ispell-document): Move here from tex-buf.el. * tex-buf.el (TeX-run-ispell-on-document): Remove. (TeX-ispell-document): Move to tex.el. 2006-02-07 Ralf Angeli * tex.el (TeX-command-list): Remove "ConTeXt Clean". Add general "Clean" and "Clean All" options. Add `TeX-run-function' as an option for the third element of an item and document it. (TeX-clean-default-intermediate-suffixes) (TeX-clean-default-output-suffixes, TeX-clean-confirm): New variables. (dired-mark-pop-up): Autoload. (TeX-clean): New function. * tex-buf.el (TeX-run-function): New function. * tex-info.el (Texinfo-clean-intermediate-suffixes) (Texinfo-clean-output-suffixes): New variables. * latex.el (docTeX-clean-intermediate-suffixes) (docTeX-clean-output-suffixes) (LaTeX-clean-intermediate-suffixes, LaTeX-clean-output-suffixes): New variables. * context.el (ConTeXt-clean-intermediate-suffixes) (ConTeXt-clean-output-suffixes): New variables. 2006-02-04 Ralf Angeli * font-latex.el (font-latex-make-sectioning-faces): Set the face size for XEmacs again after `set-face-parent' was called which erroneously overwrites the original size. Without this fix sectioning faces may be unscaled after starting XEmacs. 2006-02-03 Ralf Angeli * doc/auctex.texi (top): Add detailed menu for better accessibility. Fix formatting/usage of references to RefTeX and preview-latex manuals. 2006-02-03 Reiner Steib * latex.el (LaTeX-enable-toolbar): New variable. (LaTeX-maybe-install-toolbar): New function. (TeX-latex-mode): Add LaTeX-maybe-install-toolbar to tool-bar-mode-on-hook. 2006-01-31 Ralf Angeli * aclocal.m4: Check for {late,last,early}-package-hiearchies if `late-packages' is not bound (which indicates we are dealing with XEmacs 21.5). 2006-01-28 Masayuki Ataka * tex-jp.el (TeX-command-list): Use function ignore insted of nil for the third element of `separator for command menu' because defcustom of TeX-command-list requires the third element function. Reported by Ikumi Keita . 2006-01-28 Ikumi Keita * tex-buf.el (TeX-run-discard-foreground): Renamed from TeX-run-dviout. (TeX-run-dviout): alias to TeX-run-discard-foreground. * tex.el (TeX-command-list): Use TeX-run-discard-foreground instead of TeX-run-dviout. 2006-01-25 Ralf Angeli * style/csquotes.el (LaTeX-csquotes-insert-environment): Set prompt for mandatory arguments. ("csquotes"): Bring up to par with csquotes 3.2. * style/url.el ("url"): Support the \path macro. 2006-01-25 Masayuki Ataka * tex-buf.el (TeX-run-dviout): Undo previous change. * tex.el (TeX-command-list): Ditto. 2006-01-24 Ralf Angeli * latex.el (LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-delims-local) (LaTeX-verbatim-macros-with-braces) (LaTeX-verbatim-macros-with-braces-local): Doc fix. (LaTeX-verbatim-environments, LaTeX-verbatim-environments-local): Doc fix. Make the correct variable buffer-local. (LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-braces, LaTeX-verbatim-environments): New functions. (LaTeX-verbatim-macro-boundaries): Find macro in case point is just in front of it. (LaTeX-verbatim-p): Doc fix. Correct macro lookup. (LaTeX-fill-move-to-break-point): Do not break verbatim macros with braces across lines (in addition to macros with delimiters). For example in case of \lstinline{...} this would result in an error and in case of \url{...} spaces would be messed up (in conjunction with the `obeyspaces' package option). * font-latex.el (font-latex-set-syntactic-keywords): Instead of appending lists of verbatim macros and environments manually use new LaTeX-verbatim-* functions. 2006-01-24 Ikumi Keita * latex.el (LaTeX-fill-move-to-break-point): Fix previous change. 2006-01-23 Reiner Steib * Makefile.in: Add CP_A. Add coment on maintainer-only targets. (xemacs-package): Use CP_A. 2006-01-22 Ikumi Keita * latex.el (LaTeX-fill-move-to-break-point): Use TeX-espaced-p to check TeX escape char. * tex.el (TeX-command-list): Removed TeX-run-dviout because dviout here is only work with Emacs on MS-DOS. * tex-buf.el (TeX-run-dviout): Removed. * tex-jp.el (japanese-TeX-command-list): Remove TeX-run-dviout. Commented out easy-menu-define (plain-TeX|LaTeX)-mode-command-nemu. (japanese-TeX-mode, japanese-plain-tex-mode) (japanese-latex-mode): Doc fix. (japanese-TeX-self-insert-command): Renamed from tex-jp-self-insert-command. (TeX-insert-punctuation): Follow the change. (TeX-error-description-list): Doc fix. 2006-01-22 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list): Fold pageref macro as well. 2006-01-16 David Kastrup * Makefile.in (xemacs-package): Don't clean up after building so that we have a chance for debugging. 2006-01-14 David Kastrup * configure.ac: Don't check for INSTALL_INFO if already set. 2006-01-14 Ralf Angeli * doc/changes.texi: Advertize pdfsync support. * latex.el (LaTeX-header-end, LaTeX-trailer-start): Do not pick up commented header end or trailer start respectively. 2006-01-13 David Kastrup * Makefile.in (xemacs-package): Don't run `install-info' and `texhash' 2006-01-11 Reiner Steib * Makefile.in (tar-ball): Fix use of TAG_EXPORT. 2006-01-04 Reiner Steib * tex-fold.el (TeX-fold-mode): Autoload as an interactive function. 2005-12-28 Ralf Angeli * style/pdfsync.el: New file. * Makefile.in (STYLESRC): Add style/pdfsync.el. * tex.el (TeX-output-view-style): Add %(outpage) expander to xpdf call. Start xpdf in server mode. (TeX-expand-list): New %(outpage) expander. (TeX-sync-output-page-function): New variable. 2005-12-28 Reiner Steib * Makefile.in (tar-ball): Use TAG_EXPORT for snapshots. * auctex.spec (description): Add preview-latex. (install, files): Don't create preview directory. 2005-12-21 Ikumi Keita * latex.el (LaTeX-mark-section): Remove read-only mark `*' from interactive. (LaTeX-fill-move-to-break-point): Use `*' instead of `+' for looking back Japanese Macro in order to prevent breaking line just after TeX-esc, in other words, not to break TeX command `\JJJ' into `\' and `JJJ'. Use variable linebeg instead of function line-beginning-position. 2005-12-17 Reiner Steib * auctex.spec (Provides): Make emacs/site-lisp/preview. (Release): Bump to 1. 2005-12-17 Ralf Angeli * Version 11.82 released. 2005-12-17 Ralf Angeli * Makefile.in (COMMITTER_NAME, COMMITTER_EMAIL): New variables. (release-commit): Use them. * auctex.spec, configure.ac, doc/auctex.texi, doc/preview-latex.texi, doc/tex-ref.tex: Bump version number. * doc/changes.texi: Minor rewordings for 11.82. 2005-12-08 Reiner Steib * tex.el (TeX-completing-read-multiple): Mention the availability of crm.el in recent XEmacs packages. 2005-12-07 Ralf Angeli * tex.el (TeX-macro-history): New variable. (TeX-insert-macro): Use it. 2005-12-05 Ralf Angeli * tex-info.el (TeX-texinfo-mode): Do not add braces around arguments of commands which do not expect them. * latex.el (TeX-arg-free): Move to tex.el. * tex.el (TeX-arg-free): Move here from latex.el. (TeX-insert-dollar): Do not abort with an error with an error if a dollar is inserted in a math construct not started with a dollar. Issue a message about the mismatch instead and insert the dollar. * font-latex.el (font-latex-quote-list): Add default quotes. (font-latex-add-quotes): New function. (font-latex-match-quotation): Remove hard-coded quotation mark lists and adapt `font-latex-quote-list' to the active quote style instead. Babel-specific quotation mark strings are now added to `font-latex-quote-list' by style files. * style/slovak.el, style/ngerman.el, style/italian.el, style/german.el, style/danish.el: Add fontification support for quotation mark strings provided by babel. 2005-11-30 Ralf Angeli * texmathp.el: Revert last change because it makes math switch/toggle matching tricks harder to use. * latex.el (LaTeX-listify-package-options): New function. (LaTeX-auto-cleanup): Use it. (LaTeX-arg-usepackage): Add \usepackage options to style list. * tex.el (TeX-insert-quote): Turn opening/closing quotation mark into "" if <"> is typed with point behind it and insert " with any following <"> key type. 2005-11-29 Ralf Angeli * texmathp.el (texmathp-in-commented-line, texmathp-in-comment): New functions. (texmathp-match-environment): Use them. (texmathp-match-switch): Make aware of comments. 2005-11-27 Ralf Angeli * style/MinionPro.el: New file. Contributed by Mark Trettin. * Makefile.in (STYLESRC): Add style/MinionPro.el. * doc/changes.texi: Advertise support for MinionPro.sty. * RELEASE (IMPORTANT): Add Mark. 2005-11-25 David Kastrup * doc/todo.texi (Wishlist): Add suggestion about longlines.el. 2005-11-24 Ralf Angeli * tex.el (TeX-toggle-debug-warnings): Use correct variable for state indication. (TeX-kpathsea-format-alist): Add entry for "sty". Prevents kpathsea-based search from failing e.g. in case of \usepackage insertion. * doc/changes.texi: Document removal of `font-latex-title-fontify' alias. * font-latex.el: Remove alias for `font-latex-title-fontify'. (font-latex-make-user-keywords): Use hack from tex-mode.el to fontify the backslash in "\end{verbatim}" and similar correctly. (font-latex-set-syntactic-keywords): Use the backslash of "\end{verbatim}" and similar for the syntax property, not the newline character which led to fontification going wild when text at the end of the environment was inserted. 2005-11-22 Ralf Angeli * doc/changes.texi: Mention completion support for LaTeX packages. * RELEASE: Update for 11.82. 2005-11-19 Ralf Angeli * tex-site.el.in (tex-site-unload-hook): Don't let it fail on Emacs 21. 2005-11-18 Ralf Angeli * doc/changes.texi: Fix key binding for `TeX-toggle-debug-bad-boxes'. * doc/auctex.texi (Quotes): Document change of `TeX-insert-braces'. (Filling): `M-g' for `LaTeX-fill-region' has been deactivated for a long time. Reflect that in the documentation. * tex.el (TeX-token-char): Doc fix. (TeX-insert-braces): Do something more sensible if region is activated. 2005-11-17 Ralf Angeli * tex-buf.el (TeX-parse-error): Do not match empty strings. 2005-11-12 Ralf Angeli * tex-buf.el (TeX-toggle-debug-boxes): Move to tex.el. (TeX-LaTeX-sentinel-has-warnings) (TeX-LaTeX-sentinel-has-bad-boxes): New functions. (TeX-LaTeX-sentinel): Check for warnings and bad boxes and inform the user is the respective options are non-nil. (TeX-parse-error): Conditionalize checking for warnings and bad boxes. Find warnings without line numbers as well. (TeX-warning): Doc fix (no need to return nil anymore). Support warnings without line numbers. * tex.el (TeX-toggle-debug-boxes): Do not autoload. (TeX-debug-bad-boxes): Doc fix. (TeX-debug-warnings): New variable. (TeX-toggle-debug-bad-boxes): Moved here from tex-buf.el. (TeX-toggle-debug-warnings): New function. (TeX-mode-map): Define new key bindings for `TeX-toggle-debug-bad-boxes' and `TeX-toggle-debug-warnings'. (TeX-mode-specific-command-menu-entries): Add or change menu entries for `TeX-toggle-debug-bad-boxes' and `TeX-toggle-debug-warnings'. * doc/auctex.texi (Debugging): Document debugging support for warnings and changes of debugging bad boxes. * doc/changes.texi: Advertise debugging support for warnings and changes of debugging bad boxes. * font-latex.el (font-latex-set-syntactic-keywords): Doc fix. Check if LaTeX-specific variables are bound which may be unbound if font-latex is being used in ConTeXt mode. 2005-11-07 Ralf Angeli * tex.el (TeX-insert-backslash): Use regular function call instead of `funcall'. 2005-11-05 Ralf Angeli * tex.el (TeX-electric-sub-and-superscript): New variable. (TeX-insert-sub-or-superscript): New function. (TeX-mode-map): Use `TeX-insert-sub-or-superscript' for `_' and `^' keys. (TeX-insert-backslash): New function. (TeX-mode-map): Use `TeX-insert-backslash' for `\'. (TeX-electric-escape): Adapt doc string. * doc/auctex.texi (Mathematics): Document `TeX-electric-sub-and-superscript'. * doc/changes.texi: Advertise `TeX-electric-sub-and-superscript'. 2005-10-31 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Do not break lines in the Japanese Macros. Suggested by Ikumi Keita . 2005-10-30 Ralf Angeli * doc/install.texi (Prerequisites): Update information about development version of Emacs for Debian. Update information about development version of Emacs for Mac OS X and Windows. 2005-10-29 Ralf Angeli * style/frenchb.el, style/francais.el: Clean up. 2005-10-28 Ralf Angeli * tex.el (TeX-quote-language-alist, TeX-insert-quote): Support functions as opening and closing quotation marks. * style/frenchb.el: New file. * style/francais.el: New file. * doc/auctex.texi (European): Document support of French. * doc/changes.texi: Advertise support of French. * Makefile.in (STYLESRC): Add style/frenchb.el and style/francais.el. 2005-10-24 Ralf Angeli * doc/install.texi (Configure): Document --with-kpathseasep. * doc/auctex.texi (Commands): Add index entry for PDF mode. * configure.ac (preview_enabled): Export `TEX' in unquoted form. 2005-10-23 David Kastrup * style/babel.el (LaTeX-babel-package-options): Only use 2 argument form of defvaralias in order not to make XEmacs barf. 2005-10-23 Arne Jrgensen * style/amstext.el (LaTeX-amstext-package-option): New variable. * style/amstex.el (LaTeX-amstex-package-options): New variable. * style/amsopn.el (LaTeX-amsopn-package-options): New variable. * style/amsmath.el (LaTeX-amsmath-package-options): New variable. * style/amsbsy.el (LaTeX-amsbsy-package-options): New variable. * style/fancyref.el (LaTeX-fancyref-package-options): New variable. * style/harvard.el: Updated GPL to version 2. Fixed FSF address. (LaTeX-harvard-package-options): New variable. * style/index.el (LaTeX-index-package-options): New variable. * style/listings.el (LaTeX-listings-package-options): New variable. * style/makeidx.el (LaTeX-makeidx-package-options): New variable. * style/mdwlist.el (LaTeX-mdwlist-package-options): New variable. * style/multind.el (LaTeX-multind-package-options): New variable. * style/natbib.el (LaTeX-natbib-package-options): New variable. * style/nicefrac.el (LaTeX-nicefrac-package-options): New variable. * style/paralist.el (LaTeX-paralist-package-options): New variable. * style/units.el (LaTeX-units-package-options): New variable. * style/scrpage2.el (LaTeX-scrpage2-package-options): New variable. 2005-10-21 Reiner Steib * toolbar-x.el (toolbarx-find-image): Fix previous commit. 2005-10-21 Ralf Angeli * tex-mik.el (tex-site): Require 'tex-site no more. * doc/changes.texi: Document removal of 'tex-site requirement from `tex-mik.el'. * configure.ac (packagedir): Quote value of `infodir'. 2005-10-20 David Kastrup * toolbar-x.el: Revert mostly to 2005-05-02 state, but add a fallback to find-image. 2005-10-20 Reiner Steib * toolbar-x.el (toolbarx-find-image): Use image-search-load-path and image-load-path when available. (toolbarx-find-image): Revert previous fix. Instead, rely on find-image whenever possible and don't abuse locate-library. 2005-10-20 Ralf Angeli * font-latex.el (font-latex-make-user-keywords): Append string face in order to make string fontification of ``foo $bar$ baz'' constructs work. 2005-10-19 Arne Jrgensen * latex.el (LaTeX-arg-usepackage): If `LaTeX--package-options' is bound and nil don't ask for package options. * style/verbatim.el (LaTeX-verbatim-package-options): New variable. * style/varioref.el (LaTeX-varioref-package-options): New variable. * style/url.el (LaTeX-url-package-options): New variable. * style/subfigure.el (LaTeX-subfigure-package-options): New variable. * style/inputenc.el (LaTeX-arg-inputenc-inputenc): Doc fix. (LaTeX-inputenc-package-options): Doc fix. * style/dk-bib.el (LaTeX-dk-bib-package-options): Doc fix. * style/captcont.el (LaTeX-captcont-package-options): New variable. * style/booktabs.el (LaTeX-booktabs-package-options): New variable. * style/babel.el: Add doc string to `LaTeX-babel-package-options' and use `defvar' instead of `setq'. * style/alltt.el (LaTeX-alltt-package-options): New variable. 2005-10-13 Reiner Steib * style/dk-bib.el, style/inputenc.el: Add coding cookie. Delete trailing whitespace. Reindent. 2005-10-13 Ralf Angeli * style/dk-bib.el (LaTeX-dk-bib-package-options): Define only once. 2005-10-13 Jan-Ake Larsson * tex-buf.el: Change defcustom group from TeX-commands to TeX-command 2005-10-12 Arne Jrgensen * tex.el: Provide a `TeX-completing-read-multiple' either by defalias'ing `completing-read-multiple' or defining a wrapper around `multi-prompt'. * latex.el (LaTeX-arg-usepackage): New function. Asks about what package to use, loads the AUCTeX style file, and asks about package options (possibly based on definitions in the AUCTeX style file). (LaTeX-common-initialization): Use it. * style/babel.el: Define `LaTeX-babel-package-options' to be a list of languages/options for the babel package. * style/inputenc.el: New file. * style/dk-bib.el: New file. * Makefile.in (STYLESRC): Added style/inputenc.el and style/dk-bib.el. 2005-10-10 Arne Jrgensen * latex.el (LaTeX-auto-regexp-list): Removed spurious characters in variable definition. 2005-10-10 Reiner Steib * doc/auctex.texi (top): Index "tool bar" and "toolbar". Use "tool bar" in the text. * doc/changes.texi: Use "tool bar". * auctex.spec: Install auctex.el and preview-latex.el for SuSE too. Don't use extraconfig. 2005-10-07 Reiner Steib * Makefile.in (tar-ball): Re-add fixed spec file. 2005-10-07 Masayuki Ataka * tex.el (TeX-token-char): New variable. (plain-TeX-auto-regexp-list): Use it. Suggested by Ikumi Keita . * latex.el (LaTeX-auto-regexp-list, BibTeX-auto-regexp-list): Use it. * tex-jp.el (LaTeX-auto-regexp-list, plain-TeX-auto-regexp-list) (BibTeX-auto-regexp-list): Removed. 2005-10-06 Reiner Steib * auctex.spec: Fixes for Fedora. Create site-start.d and add files. 2005-10-02 Ralf Angeli * tex-buf.el (TeX-BibTeX-sentinel): Shorten message in case of errors. * Makefile.in (install-lisp): Use MULESRC instead of MULEELC because a `c' is already being appended by the installation code. * tex-jp.el (japanese-TeX-command-list): Remove obsolete `TeX-run-LaTeX' option. * tex.el (TeX-current-macro): New function. * latex.el (LaTeX-verbatim-macros-with-delims) (LaTeX-verbatim-macros-with-delims-local) (LaTeX-verbatim-macros-with-braces) (LaTeX-verbatim-macros-with-braces-local) (LaTeX-verbatim-environments, LaTeX-verbatim-environments-local): New variables. (LaTeX-verbatim-macro-boundaries, LaTeX-current-verbatim-macro) (LaTeX-verbatim-p, LaTeX-search-forward-comment-start): New functions. (LaTeX-verbatim-macros): Remove. (LaTeX-fill-region-as-para-do): Simplify. (LaTeX-fill-move-to-break-point): Use `LaTeX-verbatim-macros-with-delims'. (LaTeX-fill-paragraph, LaTeX-fill-code-comment): Handle comment starters in verbatim constructs correctly. * font-latex.el (font-latex-verbatim-environments) (font-latex-verbatim-environments-local) (font-latex-verb-like-commands) (font-latex-verb-like-commands-local) (font-latex-verbatim-macros, font-latex-verbatim-macros-local): Remove. (font-latex-set-syntactic-keywords): Use new `LaTeX-verbatim-*' instead of `font-latex-verb*' variables. * doc/auctex.texi (Font Locking): Document change of verbatim-related variables. * doc/changes.texi: Document change of verbatim-related variables. * style/alltt.el ("alltt"): Use new variables for verbatim constructs. * style/listings.el ("listings"): Use new variables for verbatim constructs. * style/url.el ("url"): Use new variables for verbatim constructs. * latex.el (LaTeX-insert-environment): Mostly rewritten. Improve handling of macrocode environments. 2005-10-02 Christian Schlauer * tex-buf.el (TeX-BibTeX-sentinel): Check whether BibTeX reports any warnings or errors. * doc/changes.texi: Mention it. 2005-10-02 Ralf Angeli * texmathp.el (texmathp-match-environment): Make aware of comments. 2005-09-29 Masayuki Ataka * doc/install.texi (Customizing): Removed "Contributed files" section. Suggested by Ikumi Keita . 2005-09-29 Ikumi Keita * texmathp.el (texmathp-tex-commands-default): Remove "xxalignat*" and add "boxed". 2005-09-27 Reiner Steib * auctex.spec: Add files in %{_datadir}/emacs/site-lisp. Suggested by Jan-Ake Larsson. Added startfiles. Exclude %{_infodir}/dir. 2005-09-27 Ralf Angeli * configure.ac: Document option for specifying AUCTeX startfile as --with-auctexstartfile, not --with-auctex-startfile which does not work. Note that changing the internal name from `auctexstartfile' to `auctex-startfile' is not an option because of the `-' in the name which gives the shell headaches. * auctex.spec: Adapt to --with-auctexstartfile and --with-preview-startfile. * doc/install.texi (Configure): Document change from --with-auctex-startfile to --with-auctex-startfile and --with-preview-startfile to --with-previewstartfile. 2005-09-26 Reiner Steib * auctex.spec: Bump version number. Remove install-contrib, use install-docs. Don't install preview/* because these are not generated. 2005-09-25 Ralf Angeli * Makefile.in (tar-ball): Don't create WWW directory and don't copy HTML files. (www-doc): New target. 2005-09-25 David Kastrup * Version 11.81 released. 2005-09-25 Ralf Angeli * RELEASE, configure.ac, font-latex.el, doc/auctex.texi, doc/changes.texi, doc/preview-latex.texi, doc preview-readme.texi, doc/tex-ref.texi, doc/todo.texi: Bump version number. * Makefile.in (DISTCLEANFILES): Add tex-site.el.out. 2005-09-24 Ralf Angeli * Makefile.in (tar-ball): Remove dysfunctional spec file from distribution. (full-release): Disable RPM creation. * doc/auctex.texi: Bump version number. * configure.ac: Bump version number. 2005-09-24 David Kastrup * doc/install.texi (Advice for package providers): Suggest "anytex" instead of "notex" for without-texmf compilations. 2005-09-23 Reiner Steib * tex-site.el.in (TeX-modes-set): Add custom group. 2005-09-19 Ralf Angeli * tex.el (TeX-auto-parse-length, TeX-auto-x-parse-length) (TeX-auto-x-regexp-list): Doc fix. 2005-09-17 Ralf Angeli * texmathp.el (texmathp-tex-commands-default): Add "minipage" as `env-off' and "\framebox" as `arg-off'. 2005-09-13 Ralf Angeli * RELEASE: Update for upcoming release. * doc/changes.texi: Mention `font-latex-slide-title-face' and `font-latex-match-slide-title-keywords'. * doc/auctex.texi (Font Locking): Document `font-latex-slide-title-face' and `font-latex-match-slide-title-keywords'. 2005-09-10 Ralf Angeli * font-latex.el (font-latex-make-match-defun): Fontify only if `font-latex-match-*-keywords' and `font-latex-match-*-keywords-local' are non-empty. (font-latex-make-match-defun): Revert. (font-latex-make-built-in-keywords): Do not set `font-latex-match-*' if there are no keywords. (Nicer solution than the original change in `font-latex-make-match-defun'.) 2005-09-08 Ralf Angeli * font-latex.el (font-latex-built-in-keyword-classes): New `slide-title' class. (font-latex-slide-title-face): New face. Specify :size for XEmacs. * style/beamer.el ("beamer"): Fontify \frametitle with `font-latex-slide-title-face'. 2005-09-05 Ralf Angeli * tex-buf.el (TeX-command): Doc fix. 2005-09-02 Ralf Angeli * texmathp.el (texmathp-tex-commands-default): Add "\textrm" as `arg-off'. 2005-08-30 Ralf Angeli * tex.el (TeX-font-replace-macro): Compute syntax table. 2005-08-26 Ralf Angeli * latex.el (LaTeX-common-initialization): Remove redundant call to `make-local-variable' for `outline-heading-alist'. Set `outline-heading-alist' only if it is already defined. 2005-08-26 Matthieu Moy (tiny change) * latex.el (LaTeX-common-initialization): Set `outline-heading-alist'. 2005-08-24 Ralf Angeli * latex.el (LaTeX-mark-section): Now marks subsections as well. Former behavior is available via prefix argument. * doc/changes.texi: Mention change of `LaTeX-mark-section'. 2005-08-23 Ralf Angeli * font-latex.el (font-latex-script): Return face symbols, not names of non-existent variables. * tex.el (TeX-font-replace-macro): Do not use `TeX-find-macro-end' for it may look too far in cases like "\emph{foo}{}". Use `forward-sexp' with a stripped syntax table instead. 2005-08-19 Ralf Angeli * doc/wininstall.texi: New "In a Nutshell" section. 2005-08-18 Ralf Angeli * configure.ac: Quotify `packagelispdir' and `packagedatadir'. (preview_enabled): Export unquoted variables. Declare/initialize and export variables separately. * Makefile.in (DESCEND): Quote $$OLDPWD. 2005-08-17 Ralf Angeli * doc/auctex.texi (Adding Macros): Remove superfluous entry for `TeX-arg-file' and correct entry for `TeX-arg-input-file'. * latex.el (TeX-arg-input-file): Doc fix. * tex.el (TeX-command-list): Remove `TeX-run-LaTeX'. Add `TeX-run-ispell-on-document' in order to prevent mismatch in customization buffer. 2005-08-05 David Kastrup * font-latex.el (font-latex-doctex-preprocessor-face): Remove `list' from already quoted list. 2005-08-02 Ralf Angeli * tex-fold.el (TeX-fold-region): In case of single-char non-letter macros there does not have to be checked for a partial match. This allows for folding of stuff like \,. 2005-08-01 Berend de Boer * context-en.el (ConTeXt-setup-list-en): typo fixed. 2005-07-21 Ralf Angeli * font-latex.el (font-latex-set-syntactic-keywords): Set and update `font-latex-doctex-syntactic-keywords' here. (font-latex-doctex-syntactic-keywords): Default to nil. * doc/auctex.texi (Japanese): Remove references to contrib make targets. Minor clean-ups. * aclocal.m4 (library): Replace COMPILE_MULE and CONTRIB_MULEELC with MULESRC and MULEELC. * Makefile.in (CONTRIB, CONTRIBELC, CONTRIB_MULE, COMPILE_MULE) (CONTRIB_MULEELC): Remove. (MULESRC, MULEELC): New variables. (AUCSRC): Add bib-cite.el and tex-fptex.el. (CLEANFILES): Remove CONTRIBELC and CONTRIB_MULEELC. Use MULEELC instead. (.PHONY): Remove contrib, install-contrib and install-contrib-el targets. (lisp): Depend on STYLESRC and MULESRC. Compile MULESRC as well. (auto-loads.el): Use MULESRC. (contrib, install-contrib-el, install-contrib): Remove. (install-el): Install MULESRC. (install-lisp): Install MULEELC. * style/csquotes.el: Bring up to par with csquotes 3.0. (LaTeX-csquotes-insert-environment): New function. 2005-07-15 David Kastrup * doc/preview-todo.texi: Mention that preview.dtx is not a showpiece for AUCTeX. 2005-07-15 Ralf Angeli * tex.el (TeX-run-style-hooks): Adjust `default-directory' to match the directory of the style. 2005-07-14 David Kastrup * doc/install.texi (Configure): explain about --without-packagedir. (Advice for package providers): Same here. * aclocal.m4 (EMACS_PATH_LISPDIR): Allow packagedir=no with XEmacs. * configure.ac: protect against packagedir starting with `-' 2005-07-12 Ralf Angeli * font-latex.el (font-latex-match-math-envII): Match environment begin and end with whitespace between macro and argument as well. * doc/install.texi (Configure): Add `file' macro. * texmathp.el (texmathp-match-environment): Match environment begin and end with whitespace between macro and argument as well. 2005-07-12 David Kastrup * doc/wininstall.texi: * doc/install.texi (Configure): Explain prefix a bit more. * doc/Makefile.in (install-man): include tex-ref.tex. 2005-07-08 Ralf Angeli * tex.el (TeX-insert-quote): Do not inhibit special quote insertion in docTeX documentation parts. * font-latex.el (font-latex-match-command-with-arguments) (font-latex-match-command-in-braces): Remove call to `font-latex-commented-outp'. (font-latex-match-quotation): Do not consider matches in comments or verbatim-like constructs. Fix typo. 2005-07-07 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Make non-MULE XEmacsen happy. (LaTeX-fill-paragraph): Don't treat trailing comment starters as code comments. * font-latex.el (font-latex-match-quotation): Always use multibyte strings for comparison. * doc/auctex.texi (top): Make the summary notes appear as "Executive Summary" in printed output. * doc/intro.texi: Main heading in rawtext case should not be numbered. Main heading in printed output has to be chapter, not section, in order to fit into the rest of the sectioning hierarchy. (Introduction): Add two intermediate headings in order to make the structure clearer. * doc/.cvsignore: Add auto directory. 2005-07-06 David Kastrup * doc/tex-ref.tex: Rearrange and add information for preview-latex. 2005-07-05 David Kastrup * doc/preview-latex.texi (Simple customization): Document new option `preview-preserve-counters'. * doc/auctex.texi (top): Mention RefTeX, `LaTeX-install-toolbar' and preview-latex. 2005-07-01 Ralf Angeli * tex.el (TeX-submit-bug-report): Mention FAQ section. * doc/changes.texi: Advertise inclusion of preview-latex and overhaul of installation procedures. * doc/install.texi (Advice for package providers): Refer to preview-latex.el file. * doc/quickstart.texi (Quick Start): Use (load "auctex.el" nil t t) instead of (require 'tex-site). * doc/faq.texi: Use (load "auctex.el" nil t t) instead of (require 'tex-site). * doc/intro.texi (Introduction): Use (load "auctex.el" nil t t) instead of (require 'tex-site). 2005-06-30 Ralf Angeli * doc/auctex.texi (Folding): Do not quote `lambda' function. 2005-06-29 Ralf Angeli * font-latex.el (font-latex-quotes): Get rid of :set function and move most of its content to `font-latex-match-quotation'. (font-latex-quotes-control): New variable. Initialize with nil. (font-latex-match-quotation): Use it. The whole changeset lets quote matching recognize automatically when the value of `font-latex-quotes' changed while making sure that the regexp only has to be rebuilt when a change actually occured. * doc/todo.texi (Mid-term Goals): Update text about integration of preview-latex. * doc/auctex.texi (Floats): Clarify use of `LaTeX-top-caption-list'. (Display, Internationalization): Make node and heading clearer. (European): Describe insertion of multiple consecutive hyphens. 2005-06-24 David Kastrup * RELEASE: Minor change. * configure.ac: Move checks and export for PERL here (needed for doc of preview-latex). (preview_enabled): Don't export Info-related variables, as they are not needed in preview. * Makefile.in (AUCTEXVERSION): import. (info, dvi): No subshell needed. (auctex.el): Depend on config.status (install-metadata): pass upstream version into prv-install.el 2005-06-21 Ralf Angeli * tex-info.el (TeX-texinfo-mode): Use `TeX-run-mode-hooks'. * latex.el (TeX-latex-mode): Use `TeX-run-mode-hooks'. * context.el (ConTeXt-mode-common-initialization): Use `TeX-run-mode-hooks'. * configure.ac: Make info about configuration clearer (in connection with the message for preview-latex). * tex.el (TeX-master-file): `TeX-default-extension' is a variable, not a function. (TeX-run-mode-hooks): New function. (TeX-plain-tex-mode, ams-tex-mode): Use it. 2005-06-21 David Kastrup * Makefile.in (xemacs-package): reorder args. * configure.ac: disable INSTALL_INFO for XEmacs package. * doc/Makefile.in (install-man): Use $$i instead of $i. 2005-06-20 David Kastrup * doc/install.texi (Advice for package providers): Propose package structure. * doc/Makefile.in (install-man): Install sources for texinfo files. (.PHONY): Add install-man. * Makefile.in (.PHONY): Add install-man and xemacs-package (install-man): Just descend into doc directory. (xemacs-package): Try building some XEmacs package. * autogen.sh: Don't run distclean, that seems unexpected. * RELEASE: Further fold in stuff from preview/RELEASE which is now deleted. 2005-06-20 Ralf Angeli * font-latex.el (font-latex-superscript-face) (font-latex-subscript-face): Add to correct customization group. (font-latex-match-command-with-arguments) (font-latex-match-command-in-braces, font-latex-match-math-env): Don't set a dummy match. Remove unnecessary throw..catch clauses. 2005-06-18 David Kastrup * RELEASE: Well, the merge with preview-latex is no longer "planned". 2005-06-16 Ralf Angeli * doc/preview-faq.texi (Requirements): Denastify. * tex.el (TeX-master-file): Don't override existing master with `TeX-transient-master'. * tex-style.el (LaTeX-includegraphics-read-file): Doc fix. 2005-06-15 Ralf Angeli * doc/install.texi (Prerequisites): Denastify. * doc/auctex.texi (Font Locking): Fix typo. * configure.ac: Use correct variable for --disable-preview switch. 2005-06-15 Masayuki Ataka * Makefile.in (auto-loads.el): Auto-load COMPILE_MULE, too. 2005-06-14 Ralf Angeli * RELEASE: Update stuff about fixed bugs and new features. 2005-06-14 David Kastrup * doc/wininstall.texi: Spell out file names more explicitly. Remove any hint of a version that might lead Windows users to assume this documentation is for some reason more outdated than year-old stuff they find via Google. * Makefile.in (install-docs): Make exit status of test bad-shell safe. 2005-06-14 Ralf Angeli * Makefile.in (all): Do not depend on `docs' target. (.PHONY): Remove `docs'. Add `info' and `dvi'. (docs): Remove. (info, dvi): New targets. (tar-ball): Make sure `dist' stuff is up-to-date. Revert, as it is superfluous. * doc/Makefile.in (dist): Correct file name for preview-latex.info. (info, dvi): New targets. (.PHONY): Add them and remove `auctex' and `preview'. (auctex, preview): Remove. 2005-06-14 David Kastrup * RELEASE: Adapt RELEASE notes to include preview-latex info. * README.CVS: Adapt to reality. * doc/Makefile.in (all): Same as dist. (dist): Just create DISTTEXTS and info files. (extradist): Additional stuff for ftp site. (disttexts): Remove target. (clean): Don't remove info files. (maintainer-clean): Remove info files. * autogen.sh: Add error messages, run autoconf in preview subdirectory. Heed MAKE variable if set. * Makefile.in (CVSFILES): Define files not to use in tarball. (tar-ball): Remove them. (tar-ball): Make extradist for additional doc files on ftp. 2005-06-12 Ralf Angeli * tex-buf.el (TeX-ispell-document): Cater for the case where the master file is located in a different directory. (TeX-run-ispell-on-document, TeX-ispell-document): Doc fix. 2005-06-11 Ralf Angeli * tex.el (TeX-master-file): Check `TeX-transient-master' not only in the shared case. * tex-buf.el (TeX-region-create): Let-bind `TeX-transient-master'. 2005-06-10 Ralf Angeli * doc/auctex.texi (Parsing Files): Fix display of reference. Get rid of references to \documentstyle. (Simple Style, Adding Macros, Adding Environments) (Hacking the Parser): Clean up code examples. * tex.el (TeX-master-file-ask): Get rid of "" string as default for `read-file-name'. Fixes unresponsiveness of Emacs on Windows and fallback to minibuffer if file is opened via menu and prevents file history from being cluttered. Use relative file name for master file. (TeX-master-file): Get rid of "this file" string as default for `read-file-name'. 2005-06-09 Ralf Angeli * tex-fold.el (TeX-fold-ellipsis): New variable. (TeX-fold-hide-item): Use it. * Makefile.in (DESCEND): Make MSYS happy if $(subdirs) is null, e.g. when --disable-preview is used. Make the change more safe with regard to the exit code. 2005-06-09 David Kastrup * doc/wininstall.texi: Change line endings blurb. Write drive: everywhere in the example strings. * doc/preview-readme.texi (Introduction): Some cosmetic changes to account for the merge. * mkinstalldirs: * install-sh: Replace `#/bin/sh' with `:' as this should be more portable when called from a Bourne shell (which is what the Makefiles do). 2005-06-08 David Kastrup * doc/preview-dtxdoc.pl: Replicate possible CR line endings faithfully, and don't use multiline strings. 2005-06-08 Ralf Angeli * doc/.cvsignore: Ignore all *.info, *.info-*, and *.pgs files. * Makefile.in (preview_enabled): New variable. (all): Depend on `docs' target. (.PHONY): Add `docs' target. (docs): New target. (install): Depend on `install-docs' instead of `install-info'. (install-info): Remove. (install-docs): New target. * autogen.sh: Generate preview-latex docs as well. * configure.ac: Substitute preview_enabled variable in output files. * doc/.cvsignore: Add relevant preview-latex files. * doc/Makefile.in (TEXIFILES): Rename to AUCTEXTEXIFILES. (PERL, PREVIEWTEXIFILES): New variables. (all): Now depends on `auctex' and `preview' targets. Move AUCTeX-specific targets from original to `auctex'. (install): Now depends on `install-auctex' and `install-preview' targets. Move AUCTeX-specific targets and content from original to `install-auctex'. (.PHONY): Add `auctex', `preview', `install-auctex', and `install-preview'. (auctex, install-auctex, preview, install-preview): New targets. (auctex.dvi, auctex.pdf, auctex.info): Depend on $(AUCTEXTEXIFILES) instead of $(TEXIFILES). (preview-latex/index.html, html-docs, preview-dtxdoc.texi) (preview-latex.dvi, preview-latex.ps, preview-latex.pdf) (preview-latex.info, ../PROBLEMS): New targets (from preview/doc/Makefile.in). (../README, ../TODO, ../FAQ): Create output combined from respective AUCTeX and preview-latex files. (clean, maintainer-clean): Cater for preview-latex files. * doc/todo.texi (Development): More specific heading for plain text output. * doc/preview-todo.texi: Move here from preview/doc/todo.texi. * doc/preview-readme.texi: Move here from preview/doc/readme.texi. * doc/preview-problems.texi: Move here from preview/doc/problems.texi. * doc/preview-faq.texi: Moved here from preview/doc/faq.texi. * doc/copying.texi, doc/preview-dtxdoc.pl, doc/preview-latex.texi: Moved here from preview/doc/. 2005-06-07 David Kastrup * tex.el (TeX-regexp-group-count): New function. (TeX-auto-parse-region): Rewrite to use hashes and to save overuse of `looking-at'. We really should keep the relevant information complete in hashes instead of moving them forward and back between hashes and lists, but at least this change removes most of the really evil quadratic behavior while keeping the original API. Yet. 2005-06-07 Ralf Angeli * font-latex.el (font-latex-fontify-sectioning): Doc fix. * doc/auctex.texi (Font Locking): Document the nature of the `color' option for `font-latex-fontify-sectioning'. 2005-06-06 David Kastrup * configure.ac: Remove call of MAKEINFO_CHECK_MACROS: we expect a recent enough makeinfo version if you want to bootstrap, anyway. 2005-06-06 Ralf Angeli * tex-bar.el (TeX-bar-LaTeX-button-alist) (menu-strings-buttons-alist): help-echo functions are called with arguments. 2005-06-06 David Kastrup * doc/Makefile.in (TEXINFOINCLUDES): Remove. (MAKEINFO_MACROS): Remove. * tex-buf.el (TeX-format-filter): Don't let match-data generate markers. This is a terrible performance hog! (TeX-format-filter): Actually, we don't need to save any match-data inside of a filter function with current versions of Emacs and XEmacs. 2005-06-05 Ralf Angeli * style/scrbase.el, style/scrbook.el, style/scrreprt.el: Use `sectioning' instead of `title' for sectioning fontification. * doc/changes.texi: Mention change of `title' to `sectioning' for keyword variables. * font-latex.el (font-latex-fontify-sectioning) (font-latex-built-in-keyword-classes) (font-latex-keyword-matcher): Use `sectioning' instead of `title'. (font-latex-deactivated-keyword-classes): New variable. Don't do extra quoting. (font-latex-make-built-in-keywords): Remove unnecessary `let'. Check `font-latex-deactivated-keyword-classes' in generated `font-latex-match-*-make' functions. * tex.el (TeX-quote-language-alist): Do not use `alist' widget because XEmacs 21.4 does not provide it. Do not use a cons cell for opening and closing quotation marks in order to simplify structure. (TeX-quote-language): Describe structure as in `TeX-quote-language-alist'. (TeX-insert-quote): Adapt to new structure of `TeX-quote-language' and `TeX-quote-language-alist'. * doc/auctex.texi (European): Describe new structure of `TeX-quote-language-alist'. (Font Locking): Use `sectioning' instead of `title'. Describe deactivation of built-in keyword classes. * style/csquotes.el, style/czech.el, style/danish.el, style/german.el, style/italian.el, style/ngerman.el, style/slovak.el, style/swedish.el: Reflect new structure of `TeX-quote-language'. 2005-06-04 David Kastrup * doc/Makefile.in (TEXINFOINCLUDES): macros.texi has moved here from ../preview/doc (../INSTALL, ../INSTALL.windows, ../README, ../CHANGES, ../TODO) (../FAQ): Change dependencies accordingly. * configure.ac: Rearrange checks for MAKEINFO. Export more stuff into preview's configure. Maybe this is better done with use of caches? * autogen.sh: Don't look in preview subdirectory. * Makefile.in (configure): Depend on local aclocal.m4 2005-06-03 David Kastrup * doc/Makefile.in (TEXINFOINCLUDES, TEXIFILES, ../INSTALL) (../INSTALL.windows, ../README, ../CHANGES, ../TODO, ../FAQ): Move ../preview/doc/macros.texi to here again. 2005-06-02 Ralf Angeli * tex.el (VirTeX-common-initialization): Explicitely make `find-file-hooks' buffer-local in XEmacs 21.4 which fails to do this via `add-hook'. 2005-06-01 Ralf Angeli * latex.el (LaTeX-backward-paragraph): Use catch..throw instead of an indicator variable. Don't refer to a saved match data. Check for `TeX-esc', not specific char. * style/babel.el ("babel"): Disable font locking of macros not handled correctly. 2005-05-30 Ralf Angeli * style/babel.el: New file. * Makefile.in: Add style/babel.el. * doc/changes.texi: Mention babel support. 2005-05-28 Ralf Angeli * tex-buf.el (TeX-next-error): Call `next-error' as fallback. (TeX-previous-error): New function. * tex.el (TeX-mode-map): Remap bindings of `next-error' and `previous-error' to `TeX-next-error' and `TeX-previous-error' respectively. 2005-05-24 Ralf Angeli * tex.el (TeX-command-list): Remove chktex comment. * doc/auctex.texi (Checking): A user should not (have to) edit tex.el to switch from lacheck to chktex. * font-latex.el (font-latex-make-match-defun) (font-latex-make-built-in-keywords): Do not byte-compile generated functions here but at the end of font-latex.el. Prevents byte-compiler warnings due to possibly undefined functions. 2005-05-24 David Kastrup * configure.ac: Recurse into preview _before_ starting any AC_SHELL_QUOTIFY business to avoid double quoting. * doc/tex-ref.tex (\title{RefTeX (long)}) (\title{RefTeX (short)}): New columns. One will have to go. 2005-05-22 David Kastrup * tex.el (TeX-PDF-mode): Use the standard minor mode function instead of redefining it. (TeX-PDF-mode-parsed): New function replacing the previous extra functionality in `TeX-PDF-mode'. (TeX-PDF-mode-on, TeX-PDF-mode-off): Warn in docstring. Use `TeX-PDF-mode-parsed'. 2005-05-21 Ralf Angeli * doc/install.texi, doc/wininstall.texi: Small corrections. * tex-bar.el (TeX-bar-LaTeX-button-alist): Reenable mode-specific images for View button. (LaTeX-install-toolbar): Add `toolbarx-refresh' to `TeX-PDF-mode-hook'. * tex.el (TeX-PDF-mode): Run `TeX-PDF-mode-hook'. 2005-05-21 David Kastrup * autogen.sh: Remove argument to preview/autogen.sh * doc/install.texi: Integrate the installation instructions for preview-latex. 2005-05-20 David Kastrup * doc/tex-ref.tex (section{Greek Letters}): Add \Xi. 2005-05-18 Ikumi Keita * style/amsmath.el (LaTeX-label-alist): Add "multline" environment. * Makefile.in: * configure.ac: * preview/Makefile.in: Change "==" to "=" in the argument of "test" for Bourne shell compatibility. 2005-05-19 David Kastrup * doc/wininstall.texi: Rearrange to make suitable for standalone installation including preview-latex. Adapt to a few changes (like tex-fptex and tex-mik not being in load-path by default). 2005-05-19 Ralf Angeli * tex-site.el.in (tex-site-unload-hook, TeX-modes): Do not use `dolist'. Prevents console pop-ups with XEmacsen on Windows. * latex.el (LaTeX-fill-move-to-break-point): Check for `charset-after' to make non-MULE XEmacsen happy. Some reformatting. 2005-05-18 David Kastrup * latex.el (LaTeX-math-default): Add Xi (reported by Uli Fahrenberg). 2005-05-17 David Kastrup * Makefile.in (EXTRAFILES): remove. No longer needed. (auto-loads.el): Undo previous change. Properly group statements. (install-el): Rewrite condition for some non-Posix shells. (install-metadata): Rewrite condition for non-Posix. (tar-ball): Change owner and group to root. This is not portable, but will be needed only by the maintainers, anyway. (auto-loads.el): ignore errors also for braindead make. (install-metadata): Same here. (clean): Burp if cd doc fails. (distclean): Same here. (tar-ball): rewrite for braindead shells. (tar-ball): make sure doc exists. Why do I bother, actually, the tarball target is not for public consumption, anyway. 2005-05-17 Ralf Angeli * Makefile.in (auto-loads.el): Don't stop on non-zero exit code. 2005-05-16 Ralf Angeli * tex.el (TeX-transient-master): New variable. (TeX-master-file): Use it. * tex-buf.el (TeX-command-sentinel): Bind `TeX-transient-master'. 2005-05-14 Ralf Angeli * latex.el (LaTeX-babel-hyphen): Doc fix. (LaTeX-common-initialization): Call `easy-menu-add' as late as possible. 2005-05-15 Ikumi Keita * Makefile.in (CLEANFILES): Add $(CONTRIBELC) and $(CONTRIB_MULEELC). (DISTCLEANFILES): Add auctex.el and auto-loads.el. (auto-loads.el): Add $(COMPILE_MULE) 2005-05-14 Ikumi Keita * style/amsopn.el: * style/amsmath.el: Move "mode"-like entries from amsopn.el to amsmath.el. * style/amsmath.el: Edit entries in TeX-add-symbols. Remove duplicate entry "raisetag". Add some new entries. Make arrow macros like "overleftarrows" to take argument. Remove accents macros like "Hat" because they are obsolate in amsmath v2. (LaTeX-item-list): Add "multline*", "matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix" and "Vmatrix" environment. (LaTeX-label-alist): Remove "aligned" environment. * tex-style.el (LaTeX-amsmath-label): Fix doc. * latex.el: (LaTeX-math-default): Remove duplicate entry "nabla". Remove AMS Accents like "Hat" because they are obsolate in amsmath v2. (LaTeX-babel-hyphen): Fix doc. (LaTeX-common-initialization): Edit some entries in TeX-add-symbols. 2005-05-13 Ralf Angeli * doc/changes.texi: Small corrections. 2005-05-12 Ralf Angeli * tex-fold.el (TeX-fold-make-overlay): Calculate priority before the overlay is instantiated. * font-latex.el (font-latex-match-command-with-arguments): Make XEmacs happy. * latex.el (LaTeX-fill-newline-hook): New hook. (LaTeX-fill-newline): Use it. * tex-fold.el (TeX-fold-keymap): Remove deprecated key bindings. (TeX-fold-region, TeX-fold-item): Use `TeX-fold-item-end'. Do not compute display string (now done in `TeX-fold-hide-item'). (TeX-fold-make-overlay): Do not mess with display string anymore. Thereby remove it from list of function arguments. (TeX-fold-item-end, TeX-fold-overfull-p) (TeX-fold-update-at-point): New functions. (TeX-fold-buffer-substring): Get 'display property instead of 'TeX-fold-display-string which is not used anymore. (TeX-fold-hide-item): Computation of display string and faces as well as provisions for overfull lines are done only in this function now. The 'display property is now set for XEmacs as well. (TeX-fold-mode): Add and remove `TeX-fold-update-at-point' to `LaTeX-fill-newline-hook' respectively. * tex.el (TeX-overlay-prioritize): Fix oversight in XEmacs version of the function. 2005-05-11 Reiner Steib * Makefile.in (tar-ball): Allow YYYYMMDD-a TAG for snapshots. 2005-05-11 Ralf Angeli * font-latex.el (font-latex-set-syntactic-keywords): Don't freak out if there is whitespace in front of the \begin/\end pair of verbatim and verbatim-like environments. * latex.el (LaTeX-auto-cleanup): Discard only options which actually include a "=". * Makefile.in: Whitespace cleanup. * tex.el (TeX-overlay-prioritize): Fix calculation of priority for in-between overlay. (TeX-insert-quote): Insert TeX quote if point is just before math, comment, or verbatim content. 2005-05-11 David Kastrup * doc/Makefile.in (TEXINFOINCLUDES): Add directory modifier TEXIPWD. This is ugly. (html/auctex_toc.html): Use it. * Makefile.in (tar-ball): Make tar-ball from exporting, and allow for TAG being a date specification. (full-release): Omit release tag check. 2005-05-10 Ralf Angeli * font-latex.el (font-latex-forward-comment): New function. Prevent infinite loops and repair regexp. Simplify. Code mainly by David Kastrup. (font-latex-match-command-with-arguments): Use it. Set fontification start of optional argument to opening bracket. Apply restriction of region more globally. Fix handling of multiple optional arguments. Break if the end of the first mandatory argument could not be found. 2005-05-09 Ralf Angeli * tex.el (TeX-normal-mode): Ask for master file in 'shared case. * font-latex.el (font-latex-built-in-keyword-classes): Doc fix (typo). (font-latex-match-command-with-arguments): Set macro end before any comments. Do not move forward over comments if point is over the limit. 2005-05-09 David Kastrup * doc/Makefile.in (dist): Use DISTTEXTS instead of explicit list in this directory. 2005-05-07 Ralf Angeli * tex.el (VirTeX-common-initialization): Remove Emacs 20 compatibility code. Call `TeX-master-file' during load of shared files as well. 2005-05-06 Reiner Steib * Makefile.in (DOCFILES): Remove macros.texi to make "tar-ball" work again. 2005-05-06 David Kastrup * tex.el (TeX-load-style): Fix typo `expand-filename'. 2005-05-06 Ralf Angeli * tex.el (TeX-local-master-p): Limit search. * doc/Makefile.in (TEXINFOINCLUDES): New variable used for file inclusion with makeinfo, texi2dvi and texi2pdf. (MAKEINFOINC): Remove. * doc/intro.texi (Introduction): Make package activation clearer. 2005-05-05 Ralf Angeli * doc/intro.texi (Introduction): Be consistent with the display of commands in the rest of the manual. * tex-fold.el (TeX-fold-mode): Improve doc string and add its first line to the autoload form. 2005-05-04 David Kastrup * tex-fold.el (TeX-fold-mode): Change autoload cookie because of XEmacs. 2005-05-03 David Kastrup * auctex.spec: First attempt 2005-05-02 David Kastrup * doc/install.texi: * doc/intro.texi: * doc/wininstall.texi: overhaul. * autogen.sh: adapt to auto.texi scheme. * toolbar-x.el (toolbarx-install-toolbar): Remove overlong doc string from autoload. * tex-site.el.in (tex-site-unload-hook): Define to remove the after-load hooks and load-path entry. (TeX-modes-set): Use defalias instead of fset to allow unloading. * README.CVS: Change instructions. 2005-05-02 David Kastrup * bib-cite.el: Revert 2005-04-19 change: autoloads are not extracted from CONTRIB packages. 2005-05-02 David Kastrup * Makefile.in (tex-site.el.out, auctex.el, configure) (Makefile, config.status): Add targets to get reconfiguration if necessary. * style/url.el: * style/ltx-base.el: * style/units.el: * style/alltt.el: * style/alphanum.el: * style/jura.el: * style/emp.el: * style/doc.el: * style/slides.el: * style/csquotes.el: * style/listings.el: * style/nicefrac.el: * style/ltxdoc.el: * style/jurabib.el: * style/mdwlist.el: * style/amstex.el: Change maintainer address. * doc/intro.texi (Introduction): Changes, cleanup, corrections. 2005-05-01 David Kastrup * doc/install.texi (Prerequisites): Shorten. (Prerequisites): Mention that one can survive without texinfo. (Configure): Add prefix information. (Configure): Sync with preview-latex docs. Mention the disable-preview option and preview-specific options. * configure.ac: Don't use have-preview macro. Conflicts with the idea of pregenerated docs. 2005-05-01 Ralf Angeli * font-latex.el (font-latex-make-match-defun) (font-latex-make-built-in-keywords): Byte-compile generated functions. * Makefile.in (clean, distclean): Descend. 2005-05-01 David Kastrup * tex.el (TeX-load-style): Properly expand file names, and fix a terrible order-of-arguments bug. * configure.ac: fix syntax error with MAKEINFO_MACROS * tex-site.el.in (TeX-mode-alist): Use correct file name for texinfo-mode. * Makefile.in (AUCSRC): Move tex-style.el before latex.el * configure.ac: Add have-preview to macros if we have preview enabled. * doc/Makefile.in (MAKEINFOINC): Use macros.texi in preview/doc directory. (auctex.dvi, auctex.pdf, auctex.info, ../INSTALL) (../INSTALL.windows, ../README, ../CHANGES, ../TODO, ../FAQ): Use MAKEINFOINC * doc/macros.texi: Remove in lieu of version in preview/doc. * doc/intro.texi (Introduction): Reorganize, use more of rawfile. Mention preview-latex. * tex-buf.el: * tex-fold.el: * tex-font.el: * tex-fptex.el: * tex-info.el: * tex-mik.el: Change maintainer to auctex-devel@gnu.org 2005-04-30 David Kastrup * Makefile.in (install-metadata): Correct version number. (DESCEND): different quoting. (install): Same here. (install-metadata): Don't depend on some exit values. * configure.ac: substitute auctexstartfile. Export auctexdir as `..'. If installing info into XEmacs package, disable install-info. If makeinfo is disabled, don't check for macros. * Makefile.in (auctexstartfile): autoconf variable. (subdirs): autoconf variable. (PACKAGE, PACKAGE_INFO): macros. (DESCEND): For rebuilding stuff and installing. (all): descend. (tex-site.el): don't include autoloads when XEmacs. (install): descend. (install-startup): new target (install-el): don't install tex-site on XEmacs. (install-el): don't fail on .nosearch not installed. (install-metadata): new target for XEmacs. 2005-04-29 Ralf Angeli * tex.el: Remove `TeX-doc' for `ams-tex-mode'. 2005-04-29 David Kastrup * auctex.el.in: * context.el: * latex.el: * tex-jp.el: * tex-site.el.in: * tex.el: * tex-info.el: Remove TeX-doc. * tex-info.el (Texinfo-mode): Fix type in alias. * tex-site.el.in (tex-site): Provides are added by Makefile. Remove them here. * configure.ac: Generate tex-site.el.out instead of tex-site.el. * Makefile.in (AUTOLOAD): New form for autoloads from rest of line. (all): Make depend on tex-site.el (lisp): Depend on tex-site.el (tex-site.el, auto-loads.el): New targets. 2005-04-28 Reiner Steib * tex-site.el.in (TeX-mode-alist): Exchange value and doc string. (TeX-modes-set): Check if mode is fbound. * doc/changes.texi: Mention changes in sectioning fontification. * doc/auctex.texi (Font Locking): Adjust to new sectioning fontification. * font-latex.el: Rename most *-title* stuff to *-sectioning*. Old names: font-latex-title-%s-face, font-latex-title-fontify, font-latex-update-title-faces, font-latex-make-title-faces font-latex-title-max. New names: font-latex-sectioning-%s-face, font-latex-fontify-sectioning, font-latex-update-sectioning-faces, font-latex-make-sectioning-faces, font-latex-sectioning-max. (font-latex-fontify-sectioning): Fix typos in doc string. 2005-04-28 Ralf Angeli * doc/auctex.texi (Development): New name replacing "ToDo". * doc/faq.texi, doc/todo.texi: Fix for raw output. 2005-04-28 David Kastrup * tex-site.el.in (TeX-doc): Use AUCTeX-version. * configure.ac: fiddle with relative paths. * Makefile.in: several changes to buld structure. * auctex.el.in (TeX-doc): Startup file source. * doc/wininstall.texi: * doc/intro.texi: * doc/install.texi: * doc/faq.texi: * doc/changes.texi: Make the stuff compile cleanly. * doc/Makefile.in (DISTTEXTS): list plain text files in parent dir. (.PHONY): everything needed here. (auctex.info): don't ignore errors. (../INSTALL, ../INSTALL.windows, ../README, ../CHANGES) (../TODO, ../FAQ, disttexts): New targets. (INSTALL, INSTALL.windows, README, CHANGES, HISTORY, TODO, FAQ): Remove. (clean): Don't remove files in this directory. (maintainer-clean): New target, removes files in parent, too. * autogen.sh: Create info files and distribution texts like preview-latex does, and recurse into preview directory to do the same. 2005-04-27 David Kastrup * tex.el (TeX-lisp-directory, TeX-auto-global): Don't `file-name-as-directory'fy. (TeX-style-global, TeX-auto-local, TeX-style-local) (TeX-macro-global, TeX-macro-private): Same here. (TeX-auto-private): Use expand-file-name. (TeX-style-private): Same here. (TeX-check-path): Same. (TeX-load-style): Adapt. * tex-buf.el (TeX-check-files): Be robust against non-slashed directory names. (TeX-ispell-document): Same here. * tex.el (AUC-TeX-version, AUC-TeX-date): Protect `make-obsolete-variable' against obsolete Emacsen. 2005-04-28 Masayuki Ataka * doc/changes.texi: Mention the fix of Japanese fill problems. 2005-04-27 David Kastrup * configure.ac: Correct bug reporting address and move stuff over from preview. * aclocal.m4: remove, we want the one in preview instead. * tex-site.el.in (AUCTeX-version, AUCTeX-date): get via configure. * tex.el (info): Add "docTeX" to info prefixes. (AUCTeX-version, AUCTeX-date): removed to tex-site.el. (AUC-TeX-version, AUC-TeX-date): Use `make-obsolete-variable'. Is version 11.50 correct? * tex-bar.el (LaTeX-install-toolbar): Adjust toolbarx-image-path. * autogen.sh: Use aclocal.m4 from preview subdirectory. * tex.el (TeX-submit-bug-report): Add `TeX-command-list' to bug reports. 2005-04-23 David Kastrup * tex-buf.el (TeX-command): Let it accept `TeX-active-master' as well, by not touching `TeX-current-process-region-p' unless `TeX-region-file' or `TeX-master-file' have been identified explicitly. (TeX-view): Simplify. (TeX-active-process, TeX-active-buffer): Simplify. 2005-04-22 David Kastrup * tex-buf.el (TeX-help-error): Create the correct log file name corresponding to the current run. (TeX-error, TeX-warning): Pass runbuffer info into the routines to get the correct log file name in all circumstances. 2005-04-20 David Kastrup * configure.ac: don't bother about pre-2.50 autoconf. Check version more fine-grainedly. 2005-04-19 David Kastrup * texmathp.el (texmathp-match-switch): Add autoload cookie. * tex.el (no-doc): Remove: not needed because autoloads are documented by the cookie extraction process. (bibtex-mode-hook): Remove. This will be done by an autoload cookie from latex.el instead. (BibTeX-auto-store, LaTeX-math-mode, japanese-plain-tex-mode) (japanese-latex-mode, texinfo-mode, latex-mode, multi-prompt) (texmathp, texmathp-match-switch): Remove autoloads since this is done by cookies extracted into auctex.el. (TeX-region-create, TeX-save-document, TeX-home-buffer) (TeX-pin-region, TeX-command-region, TeX-command-buffer) (TeX-command-master, TeX-command, TeX-kill-job) (TeX-recenter-output-buffer, TeX-next-error) (TeX-toggle-debug-boxes, TeX-region-file, TeX-current-offset) (TeX-process-set-variable, TeX-view): Make comment nil instead of no-doc. (font-latex-setup, tex-font-setup): Remove autoloads. Should be done by cookies instead. (TeX-tex-mode): rename from tex-mode. (TeX-plain-tex-mode): rename from plain-tex-mode. (ams-tex-mode): Change autoload cookie. * tex-jp.el (japanese-plain-tex-mode, japanese-latex-mode): Change autoload cookies. * tex-font.el (tex-font-setup): Add autoload cookie. * tex-fold.el (TeX-fold-mode, tex-fold-mode): Add autoload cookies. * multi-prompt.el (multi-prompt): Add autoload cookie. * latex.el (auto-mode-alist): Add .drv to latex-mode. (TeX-latex-mode): Changed name from latex-mode. (TeX-doctex-mode): Same here for doctex-mode. Explicitly set major-mode to doctex-mode: we don't want different modes. * tex-info.el (texinfo): Alias texinfo-mode to Texinfo-mode for symmetry. (Texinfo-mode): Autoload. * context.el (ConTeXt-mode, context-mode): Add definitions and aliases and autoload cookies. * bib-cite.el: Remove autoload from instructions. * toolbar-x.el (toolbarx-image-path): New variable. (toolbarx-make-string-from-symbol) (toolbarx-make-symbol-from-string, toolbarx-good-option-list-p) (toolbarx-separate-options, toolbarx-merge-props) (toolbarx-make-command, toolbarx-emacs-mount-popup-menu) (toolbarx-xemacs-mount-popup-menu, toolbarx-mount-popup-menu) (toolbarx-option-value, toolbarx-eval-function-or-symbol) (toolbarx-test-image-type, toolbarx-test-button-type) (toolbarx-test-any-type, toolbarx-test-string-or-nil) (toolbarx-test-toolbar-type, toolbarx-test-dropdown-type) (toolbarx-test-symbol, toolbarx-test-dropdown-default) (toolbarx-test-dropdown-save) (toolbarx-process-group-without-insert, toolbarx-process-group) (toolbarx-process-symbol, toolbarx-process-dropdown-group) (toolbarx-find-image, toolbarx-emacs-add-button) (toolbarx-emacs-refresh-process-button-or-insert-list) (toolbarx-emacs-refresh, toolbarx-xemacs-image-properties) (toolbarx-xemacs-button-properties, toolbarx-xemacs-refresh): Remove autoload cookies. (toolbarx-find-image): Use `toolbarx-image-path'. 2005-04-26 Reiner Steib * font-latex.el (font-latex-update-title-faces): Remove unused variable. Don't call when loading the file. (font-latex-title-fontify): Document that faces set outside of customize might be modified. (font-latex-make-title-faces): Set height or size so that customize won't complain. 2005-04-24 Ralf Angeli * tex-buf.el (TeX-interactive-goto-prompt): New function. (TeX-run-interactive): Use it instead of setting `comint-scroll-to-bottom-on-output'. Use `add-hook'. 2005-04-23 Ralf Angeli * font-latex.el (font-latex-update-title-faces): Do not touch customized faces. (font-latex-title-fontify): Use `custom-initialize-default'. (font-latex-make-title-faces): Check for value of `saved-face' property for determining face customization. * tex.el (TeX-find-macro-boundaries): Reimplement. Now handles \foo{\bar}{ba-!-z} case correctly. (TeX-find-macro-start-helper): Remove. 2005-04-22 Reiner Steib * font-latex.el (font-latex-make-title-faces): Define the face, don't set size. Set parent/inherit conditionally. (font-latex-update-title-faces): New function. (font-latex-title-fontify): Add :initialize and :set. Using `font-latex-update-title-faces' allows changing the height within an Emacs session. (font-latex-title-5-face): Renamed from title-4-face. (font-latex-built-in-keyword-classes): Use title-0 and title-5 faces. 2005-04-22 Ralf Angeli * tex-buf.el (TeX-run-interactive): Make output buffer scroll. 2005-04-18 Ralf Angeli * tex-fold.el (TeX-fold-region): Get rid of \_> for matching macros. It prevents macros immediately followed by numbers from being found. 2005-04-17 Masayuki Ataka * style/amsmath.el (LaTeX-item-equation): just-one-space before `\\' at the end of line. 2005-04-15 Ralf Angeli * style/harvard.el ("harvard"): Activate harvard citation format in RefTeX. 2005-04-14 Ralf Angeli * tex-fold.el (TeX-fold-force-fontify): New variable. (TeX-fold-buffer): Use it. Make sure the buffer is fontified before folding is done. * doc/auctex.texi (Folding): Mention `TeX-fold-force-fontify'. * doc/changes.texi: Mention `TeX-fold-force-fontify'. 2005-04-14 Ikumi Keita * style/amsmath.el: Fix comment. ("amsmath"): Removed duplicate settings of "alignat*" and "xalignat*" from LaTeX-add-environments. Add "xalignat", "xalignat*", and "xxalignat" to LaTeX-item-list. (LaTeX-amsmath-env-alignat): Do not ask label if the tail of ENV is "*". 2005-04-14 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Refactoring. Set third argument of re-search-backward to 'move instead of using skip-chars-backward. 2005-04-13 Ralf Angeli * latex.el (LaTeX-math-abbrev-prefix): Offer only string type for customization. Add proper :initialize and :set functions to allow the value to be changed without having to restart Emacs. * doc/auctex.texi (Mathematics): Document only the string-nature of `LaTeX-math-abbrev-prefix'. 2005-04-12 Ralf Angeli * latex.el (LaTeX-math-abbrev-prefix): Can now be a string to be used with `kbd'. (LaTeX-math-abbrev-prefix): New function. (LaTeX-math-keymap, LaTeX-math-mode): Use it. * doc/auctex.texi (Mathematics): Explain `LaTeX-math-abbrev-prefix' more verbosely. 2005-04-12 Reiner Steib * tex-site.el.in (TeX-lisp-directory): Avoid open-parenthesis at beginning of a line. * tex-style.el (LaTeX-beamer-inner-themes) (LaTeX-beamer-outer-themes, LaTeX-beamer-color-themes) (LaTeX-beamer-font-themes): New variables for style/beamer.el. * style/beamer.el (LaTeX-arg-beamer-inner-theme) (LaTeX-arg-beamer-outer-theme, LaTeX-arg-beamer-color-theme) (LaTeX-arg-beamer-font-theme): New functions. 2005-04-10 Ralf Angeli * tex.el (TeX-parse-argument): Another stab at fixing this function. The last change from 2005-03-23 broke the insertion of macros like \footnote with a marked region. This is pure guesswork. *sigh* * latex.el (LaTeX-section-heading): Shorten prompt. (LaTeX-section-title): Simplify. Shorten prompt. (LaTeX-auto-minimal-regexp-list): "\" and "." are not special in a complemented character alternative. (LaTeX-math-keymap): Define key for prefix insertion inside defvar. (math): Use `LaTeX-math-keymap' only. (LaTeX-math-mode-menu): Use `LaTeX-math-mode-map' (defined by `define-minor-mode'). (LaTeX-math-mode): Assign `LaTeX-math-keymap' to `LaTeX-math-abbrev-prefix'. Use `LaTeX-math-mode-menu' with `LaTeX-math-mode-map'. (LaTeX-math-insert-prefix): Remove. 2005-04-08 Ralf Angeli * font-latex.el (font-latex-match-command-with-arguments): Skip over comments as well as whitespace. * tex.el (TeX-output-extension): Default to nil. 2005-04-07 Ralf Angeli * tex.el (TeX-output-extension): Set correct default depending on the value of `TeX-PDF-mode'. (TeX-output-extension): Revert. (VirTeX-common-initialization): Set `TeX-output-extension' here. 2005-04-05 Christian Schlauer * tex.el (TeX-submit-bug-report): Fix typo in doc string, fill doc string. * latex.el: Change maintainer address. (LaTeX-section): Fix typo in doc string. Remove code that almost always inserts a new line. (LaTeX-section-section): Fix doc string. Add code that conditionally inserts a new line (which also bundles the modification of the buffer in this function). (LaTeX-section-hook): Fix typo in doc string. (LaTeX-default-position): Use `do not' instead of `don't' in doc string and customize value menu (as in `LaTeX-float). (LaTeX-item-list): Fix typo in doc string. 2005-04-05 Ralf Angeli * tex.el (TeX-PDF-mode, TeX-interactive-mode, TeX-Omega-mode): Set customization group. * latex.el (LaTeX-math-default): New entry and key for \colon. New "Punctuation" category. Get rid of some entries in "delimiters" category already defined in "Arrows". Get rid of "delimiters" category and merge entries defined there into "Delimiters.". (LaTeX-math-menu): Remove "delimiters" and add "Punctuation". 2005-04-04 Ralf Angeli * font-latex.el (font-latex-make-user-keywords): Make XEmacs happy. * doc/changes.texi: Fix @xref. * doc/auctex.texi (Quotes): Fix @xref. (European): Be more verbose. * tex-info.el (texinfo-mode): Get rid of hyphens in prompts. Add @xref command. * latex.el (LaTeX-babel-hyphen, LaTeX-babel-hyphen-after-hyphen): Doc fix. (LaTeX-babel-hyphen-language-alist): Use t as default value for insertion behavior. * tex.el (TeX-quote-language-alist): Use t as default value for insertion behavior. * doc/auctex.texi: New tag line. (Quotes): Replace description about (n)german.sty-specific quote insertion by a generalized one and refer to section about European languages. (European): Add subsections. Add information about new functionality and customization options for language-specific quote and hyphen insertion. (Folding): Add information about help echo. (Viewing): Add subsection heading. A single one does not really make sense. * doc/changes.texi: Add some news. 2005-04-03 Ralf Angeli * tex-fold.el (TeX-fold-help-echo-max-length): New variable. Add :type and :group specs. (TeX-fold-make-help-echo): New function. No space before ellipsis. Okay, color does not look too bad. (TeX-fold-make-overlay): Use it. Remove call to `TeX-fold-make-help-echo' again as we have to recompute the string anyway. (TeX-fold-hide-item): Set help-echo property. Recompute help echo string. (TeX-fold-show-item): Invalidate help-echo property. 2005-04-02 Ralf Angeli * doc/faq.texi (Frequently Asked Questions About AUCTeX): Minor enhancements in wording. * tex.el (TeX-open-quote, TeX-close-quote) (TeX-quote-after-quote): Doc fix. (TeX-quote-language-alist, TeX-quote-language): New variables. (TeX-insert-quote): Use them. (TeX-submit-bug-report): Doc fix. * latex.el (LaTeX-mode-map): Map "-" to `LaTeX-babel-insert-hyphen'. (LaTeX-babel-hyphen, LaTeX-babel-hyphen-after-hyphen) (LaTeX-babel-hyphen-language-alist, LaTeX-babel-hyphen-language): New variables. (Moved from tex-style.el and style/german.el respectively and generalized.) (LaTeX-babel-insert-hyphen): New function. (Moved from syle/german.el). * tex-style.el (LaTeX-csquotes-open-quote) (LaTeX-csquotes-close-quote): Doc fix. (LaTeX-german-quote-after-quote, LaTeX-german-open-quote) (LaTeX-german-close-quote, LaTeX-german-hyphen) (LaTeX-german-hyphen-after-hyphen): Remove. * style/csquotes.el ("csquotes"): Use `TeX-quote-language'. * style/italian.el (LaTeX-italian-open-quote) (LaTeX-italian-close-quote): Remove. ("italian"): Use `TeX-quote-language'. * style/ngerman.el (LaTeX-german-quote-after-quote) (LaTeX-german-open-quote, LaTeX-german-close-quote): Remove. ("ngerman"): Use `TeX-quote-language' and `LaTeX-babel-hyphen-language'. * style/german.el: Move definition of "-" key to latex.el. (LaTeX-german-hyphen-internal): Move to latex.el as `LaTeX-babel-hyphen-language'. (LaTeX-german-insert-hyphen): Move to latex.el as `LaTeX-babel-insert-hyphen'. ("german"): Use `TeX-quote-language' and `LaTeX-babel-hyphen-language'. * style/czech.el, style/danish.el, style/slovak.el, style/swedish.el: Use `TeX-quote-language' and `LaTeX-babel-hyphen-language' where appropriate. 2005-03-31 Ralf Angeli * doc/faq.texi (Frequently Asked Questions About AUCTeX): Add general information about how to deal with bugs. Adapt version numbers for Emacs. 2005-03-31 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Skip non-space chars backward if re-search-backward does not find white spaces or LaTeX-nospace-between-char-regexp. Add mule check before line break between 2-byte and 1-byte chars. Reported by Ikumi Keita . Do not move point if re-search-backward didn't find proper line break point. 2005-03-30 Ralf Angeli * tex.el (TeX-submit-bug-report): Insert AUCTeX version into mail subject. 2005-03-30 Ikumi Keita * latex.el (LaTeX-env-label): Remove `TeX-toggle-off-input-method' because `TeX-math-input-method-off' is already called in `LaTeX-insert-environment'. 2005-03-29 Ralf Angeli * tex-style.el (LaTeX-german-hyphen): Doc fix. Fix :type. * style/german.el (LaTeX-german-insert-hyphen): Do not add "= repeatedly but stick to - after the first swapping. 2005-03-28 Ralf Angeli * style/german.el (LaTeX-mode-map): Bind `-' to `LaTeX-german-insert-hyphen'. (LaTeX-german-quote-after-quote, LaTeX-german-open-quote) (LaTeX-german-close-quote): Move to tex-style.el. (LaTeX-german-hyphen-internal): New variable. (LaTeX-german-insert-hyphen): New function. ("german"): Set `LaTeX-german-hyphen-internal'. * tex-style.el (LaTeX-german-quote-after-quote) (LaTeX-german-open-quote, LaTeX-german-close-quote): Move here from style/german.el. (LaTeX-german-hyphen, LaTeX-german-hyphen-after-hyphen): New variables. * doc/auctex.texi (Font Locking): References are now fontified with `font-lock-constant-face' because `font-lock-reference-face' is deprecated. * font-latex.el: Change maintainer address. (font-latex-quotes, font-latex-make-built-in-keywords) (font-latex-user-keyword-classes): Doc fix. (Mention that setting the variable directly does not take effect.) (font-latex-make-match-defun, font-latex-make-built-in-keywords) (font-latex-make-user-keywords): Doc strings of generated variables and functions now refer to the creating functions. (font-latex-warning-face, font-latex-sedate-face) (font-latex-italic-face, font-latex-bold-face) (font-latex-math-face, font-latex-string-face) (font-latex-verbatim-face, font-latex-superscript-face) (font-latex-subscript-face, font-latex-title-1-face) (font-latex-title-2-face, font-latex-title-3-face) (font-latex-title-4-face): Remove these face variables. (font-latex-title-fontify): Remove :set function. (font-latex-built-in-keyword-classes): Use `font-lock-constant-face' instead of `font-lock-reference-face' because the latter is deprecated in Emacs (and only an alias for the former which will not work if the quoted face name is used). Use new `title' specifier as type of keyword for the titling keywords and mention it in the doc string. (font-latex-keyword-matcher): Quote face specifiers in any case. (font-latex-make-user-keywords) (font-latex-syntactic-face-function): Quote face specifiers. (font-latex-setup): Remove obsolete method for fontifying strings or math respectively. 2005-03-28 David Kastrup * tex.el: Change maintainer address. (TeX-submit-bug-report): Change bug reporting address. * doc/wininstall.texi: Change contact info. * doc/intro.texi (Introduction): Change contact info. * doc/auctex.texi (top): Change contact info. 2005-03-27 Ralf Angeli * font-latex.el (font-latex-match-simple-command): New function. (font-latex-make-user-keywords): Use it instead of specifying the regexp directly. Prevents stuff like "\foo\foo\foo\foo" from being fontified like a zebra. (font-latex-match-command-with-arguments): Check for limit when looking at optional and mandatory arguments. Prevents an infinite loop in XEmacs when typing the "n" of \begin in "\begi\n[foo]". (font-latex-user-keyword-classes): Specify a default value for the list. 2005-03-24 Ralf Angeli * Makefile.in (AUCELC): Derive from AUCSRC. (STYLEELC, CLEANFILES, DISTCLEANFILES, DISTTEXTS): New variables. (some): Use STYLEELC. (clean): Use CLEANFILES. (distclean): Use CLEANFILES and DISTCLEANFILES. Call distclean target in doc directory. (maintainer-clean, extraclean): New targets. 2005-03-23 Ralf Angeli * tex.el (TeX-parse-argument): Deactivate mark after insertion of first mandatory argument. Fixes insertion of braces at wrong places for multi-argument macros like \parbox and \multicolumn. See also change from 2004-12-01 which obviously did not suffice. 2005-03-22 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Prevent line break between 2-byte char an 1 byte-char. * latex.el (LaTeX-fill-move-to-break-point): Do not skip LaTeX-nospace-between-char-regexp. Reported by Ikumi Keita . 2005-03-19 Ralf Angeli * tex-fold.el (TeX-fold-buffer-substring): Better safe than sorry. 2005-03-18 Ralf Angeli * font-latex.el (font-latex-make-title-faces): According to upstream `font-size' is likely to vanish. So back to `face-height' but scale it down a bit to better match actual font size. 2005-03-17 David Kastrup * tex.el (TeX-overlay-priority-step): New variable, previously in tex-fold.el under different name. (TeX-overlay-prioritize): new function in Emacs and XEmacs variants. * tex-fold.el (TeX-fold-make-overlay): Use `TeX-overlay-prioritize'. (TeX-fold-priority-step, TeX-fold-prioritize): Renamed and moved to tex.el. * tex-buf.el (TeX-region-create): Transfer `buffer-file-coding-system' from master buffer to region. 2005-03-17 Ralf Angeli * latex.el (LaTeX-section-list-add-locally) (LaTeX-largest-level-set): New functions. (LaTeX-add-environments): Invalidate menu variables instead of setting `LaTeX-menu-changed'. (LaTeX-section-menu-entry): Do not enable symbol. (LaTeX-section-menu-create, LaTeX-menu-changed) (LaTeX-menu-update): Remove. (LaTeX-section-menu, LaTeX-environment-menu) (LaTeX-environment-modify-menu): New variables. (LaTeX-section-menu-filter, LaTeX-environment-menu-filter): New functions. (LaTeX-mode-menu): Use them. (LaTeX-common-initialization): Move setting of `LaTeX-largest-level' upwards because it is needed when the menu is being generated. Do not use `activate-menubar-hook' and `activate-popup-menu-hook' anymore. * tex.el (VirTeX-common-initialization): Force update of style information. * style/scrreprt.el, style/scrbook.el, style/scrbase.el, style/scrartcl.el, style/report.el, style/jsbook.el, style/jsarticle.el, style/jreport.el, style/jbook.el, style/jarticle.el, style/j-report.el, style/j-book.el, style/j-article.el, style/book.el, style/article.el, style/alphanum.el: Use new functions for setting `LaTeX-largest-level' or `LaTeX-section-list' respectively. 2005-03-16 Ikumi Keita * latex.el (LaTeX-fill-move-to-break-point): Limit the max number of characters to look backward for `TeX-looking-at-backward'. 2005-03-16 Masayuki Ataka * latex.el (LaTeX-nospace-between-char-regexp): Changed from defcustom to defvar. 2005-03-15 Ralf Angeli * font-latex.el (font-latex-make-title-faces): Deal with the case that `font-size' returns a number. Or nil. * tex.el (TeX-view-style): Remove support for "a4" and "a5". 2005-03-14 David Kastrup * latex.el (docTeX-indent-inner-fixed) (LaTeX-indent-calculate-last): Add support for macrocode*, macro*, environment and environment* environment. 2005-03-14 Ralf Angeli * context.el (ConTeXt-indent-item-re): Do not treat \setup... commands like \item. 2005-03-14 Masayuki Ataka * tex-fold.el (TeX-fold-prioritize): Cater for preview-latex. 2005-03-11 Ralf Angeli * latex.el (LaTeX-paragraph-commands-regexp-make): New function. (LaTeX-paragraph-commands-regexp, LaTeX-paragraph-commands): Use it. (LaTeX-paragraph-commands-add-locally): New function. * style/beamer.el ("beamer"): Use it. Newline not needed anymore because \frametitle is now a paragraph command and will not be filled together with the other content. * context.el (ConTeXt-find-indent): Correct indentation of environments. * latex.el (LaTeX-fill-region-as-para-do): Use `remove-text-properties' instead of `remove-list-of-text-properties' because the latter is not available in Emacs 21. 2005-03-10 Ralf Angeli * style/beamer.el ("beamer"): Find the correct start of environment in case a frame environment is inserted with point on a non-empty line. Insert an additional newline to set off title and content. * font-latex.el (font-latex-make-title-faces): Use `font-size' instead of `face-height' to determine the font size because the latter (as the sum of the face's ascent and descent) returns inappropriate values. Suggested by Steven E. Harris . 2005-03-09 Ralf Angeli * tex.el (TeX-comment-prefix): New function. * latex.el (LaTeX-current-environment, LaTeX-find-matching-end) (LaTeX-find-matching-begin): Rather than using the start or end of a commented region as a boundary, look further for other commented regions with the same prefix possibly containing an environment start or end respectively. (LaTeX-mode-menu): An empty help string is useless and may lead to an empty tooltip. 2005-03-09 Masayuki Ataka * style/amsmath.el ("amsmath"): Fixed typo: "dotssc" -> "dotsc". Added symbol "dots" and "dotsi". * latex.el (LaTeX-insert-environment): Call `TeX-math-input-method-off'. * style/amsmath.el (LaTeX-amsmath-env-alignat) (LaTeX-amsmath-env-aligned): Do not call `TeX-math-input-method-off' from here. Reported by Ikumi Keita . 2005-03-08 Ralf Angeli * latex.el (LaTeX-current-environment): Doc fix. * font-latex.el (font-latex-make-built-in-keywords): Make doc string of `font-latex-match-*-keywords' more clear. 2005-03-08 Masayuki Ataka * tex.el (TeX-toggle-off-input-method): Turn off input method iff `current-input-method' starts one of "chinese", "japanese", and "korean". Use `inactivate-input-method' instead of `toggle-input-method'. Doc fix. Suggested by Ikumi Keita . 2005-03-07 Reiner Steib * tex-style.el: New file. defcustoms for style/*.el should go here. * latex.el (LaTeX-includegraphics-extensions) (LaTeX-includegraphics-options-alist) (LaTeX-includegraphics-strip-extension-flag) (LaTeX-includegraphics-read-file, LaTeX-beamer-themes): Moved to tex-style.el. (tex-style): Require. * style/amsmath.el (LaTeX-amsmath-label): Moved to tex-style.el. * style/beamer.el: Remove install instructions. Won't work properly outside current AUCTeX anymore. Removed CVS Id. (LaTeX-beamer-section-labels-flag) (LaTeX-beamer-item-overlay-flag): Moved to tex-style.el. * style/csquotes.el (LaTeX-csquotes-quote-after-quote) (LaTeX-csquotes-open-quote, LaTeX-csquotes-close-quote): Moved to tex-style.el. * style/emp.el (LaTeX-write18-enabled-p): Moved to tex-style.el. * Makefile.in (AUCSRC): Added tex-style.el. 2005-03-07 Masayuki Ataka * tex-jp.el (japanese-TeX-command-list) (japanese-TeX-error-messages): Change from defvar to defcustom. 2005-03-06 Masayuki Ataka * doc/auctex.texi (I18n): Comment fix. * latex.el: Set fill-space nonsticky. (LaTeX-fill-delete-newlines): Check text property 'fill-space. 2005-03-04 David Kastrup * Organizational: preview-latex development has been moved from into the AUCTeX CVS Archive on in subdirectory auctex/preview. 2005-03-04 Reiner Steib * doc/auctex.texi (I18n): Try to make text more clear. * style/beamer.el (LaTeX-beamer-search-themes) (LaTeX-arg-beamer-theme): New functions adding completion for \usetheme. * latex.el (LaTeX-beamer-themes): New variable. 2005-03-05 Ikumi Keita (tiny change) * tex-jp.el (japanese-TeX-command-list): Doc fix. 2005-03-03 Ikumi Keita * tex.el (TeX-macro-global-internal): New function. (TeX-macro-global): Use it. (TeX-kpathsea-format-alist): Removed duplicate line. * tex-jp.el: Use `TeX-macro-global-internal' and append path for Japanese TeX into TeX-macro-global. Do not override `TeX-expand-list', no more. (japanese-TeX-command-list): Add :help string. Change `TeX-run-LaTeX' to `TeX-run-TeX'. (japanese-TeX-command-default, japanese-LaTeX-command-default): Quote symbol TeX-command in doc string. 2005-03-03 Thomas Baumann * style/beamer.el (LaTeX-beamer-item-overlay-flag): New variable. Used for controling the insertion of overlays in `LaTeX-item-beamer'. (LaTeX-item-beamer): Use it. 2005-03-02 Reiner Steib * doc/auctex.texi (I18n): Fix some markup errors. 2005-03-02 Ralf Angeli * font-latex.el (font-latex-make-title-faces) (font-latex-title-4-face): Use yellow on terminals with dark background and blue4 on terminals with light background. 2005-03-02 Masayuki Ataka * doc/auctex.texi (Floats): Document `LaTeX-top-caption-list'. 2005-03-01 Masayuki Ataka * doc/auctex.texi (I18n): Revised. 2005-02-28 Masayuki Ataka * tex-jp.el (TeX-japanese-process-input-coding-system) (TeX-japanese-process-output-coding-system): Fix comment. 2005-02-27 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Cater for kinsoku, especially for Japanese. 2005-02-24 Ralf Angeli * latex.el (LaTeX-common-initialization): Update LaTeX menu when a popup menu in XEmacs is opened. 2005-02-23 Ralf Angeli * bib-cite.el: Some doc fixes in the commentary section. 2005-02-23 Ikumi Keita (tiny change) * doc/auctex.texi (I18n): Removed FIXME comment. 2005-02-22 Ikumi Keita (tiny change) * latex.el (LaTeX-fill-delete-newlines): Call search-forward, which is copied from `fill-delete-newlines', with BOUND TO. 2005-02-21 Reiner Steib * doc/auctex.texi (Japanese): Fix bogus macro. 2005-02-21 Masayuki Ataka * doc/auctex.texi (Japanese): Doc fix. Suggested by Ikumi Keita . 2005-02-20 Ralf Angeli * tex-fold.el (TeX-fold-macro-nth-arg): Doc fix. Do not skip more than one closing brace backwards. Use `TeX-fold-buffer-substring'. (TeX-fold-prioritize): Doc fix. (TeX-fold-buffer-substring): New function. Do not use `dolist' which uses an unwanted local binding of the list variable. 2005-02-19 Ralf Angeli * latex.el (LaTeX-current-environment): New variable. (LaTeX-indent-calculate, LaTeX-fill-region-as-para-do): Use it. Improves filling performace by caching current environment. 2005-02-19 Masayuki Ataka * tex-jp.el (TeX-japanese-process-input-coding-system): Remove garbage code. Reported by Ikumi Keita . * latex.el (LaTeX-nospace-between-char-regexp): New variable. (LaTeX-fill-delete-newlines): Use it. (LaTeX-fill-move-to-break-point): Ditto. Fix comment. 2005-02-18 Masayuki Ataka * latex.el (LaTeX-fill-delete-newlines): New function. (LaTeX-fill-region-as-para-do): Use it. 2005-02-16 Ralf Angeli * font-latex.el (font-latex-set-syntactic-keywords): Give an escape char at the end of a verbatim construct punctuation syntax. Prevents wrong fontification of stuff like "\verb|foo\|". 2005-02-16 Masayuki Ataka * tex-jp.el (TeX-after-start-process-function): Removed code for XEmacs. `set-process-coding-system' is available in XEmacs 21.1. (TeX-japanese-process-input-coding-system) (TeX-japanese-process-output-coding-system): Change from defvar to defcustom. Use `default-process-coding-system'; Old XEmacs doesn't have the variable? Suggested by Ikumi Keita . 2005-02-15 Masayuki Ataka * latex.el (LaTeX-fill-move-to-break-point): Simplify. (LaTeX-fill-region-as-para-do): Cater for the situation where there is a line ending with Japanese characters and the following line starts with a non-Japanese character. 2005-02-14 David Kastrup * aclocal.m4 (AC_LISPIFY_DIR): new function. (AUCTEX_AUTO_DIR): Use it. * tex-site.el.in (TeX-lisp-directory, TeX-auto-global): put autoconfed expression on a line of its own. 2005-02-14 Masayuki Ataka * latex.el (LaTeX-fill-region-as-para-do): Get rid of a space at eol if the last character of the line is Japanese (e.g. short Japanese lines). (LaTeX-fill-move-to-break-point): Do not skip characters if the text is written in Japanese (e.g. long Japanese line). Reported by Ikumi Keita . 2005-02-14 Ikumi Keita (tiny change) * tex-jp.el (LaTeX-auto-regexp-list): Use `LaTeX-auto-class-regexp-list'. 2005-02-13 Ralf Angeli * tex-info.el (Texinfo-environment, Texinfo-modify-environment): New functions. (Texinfo-insert-environment): Not interactive anymore as it is now called by `Texinfo-environment'. (Texinfo-mode-map): `C-c C-e' now calls `Texinfo-environment'. 2005-02-12 Masayuki Ataka * tex.el (TeX-add-local-master): Insert "japanese-" before mode name if buffer local variable `japanese-TeX-mode' is non-nil. Suggested by Ikumi Keita . (japanese-slitex-mode): Removed obsolete autoload of slitex. * doc/auctex.texi (Japanese): Doc fix to follow the latest tex-jp.el. 2005-02-12 Ralf Angeli * tex.el (TeX-find-macro-boundaries): Return an alist instead of a list. (TeX-find-macro-end): With `TeX-find-macro-boundaries' returning an alist `cdr' is now sufficient. (TeX-find-macro-end-helper): Save match data. (TeX-font-replace-macro): Use `TeX-find-macro-end' instead of `forward-sexp'. Fixes errors e.g. when trying to remove the font spec of a string like "\textbf{(}". 2005-02-11 Ralf Angeli * latex.el (LaTeX-env-figure): Make function aware of active selections. There are still some indentation issues left. * style/epsf.el ("epsf"): Do not add epsffig environment. Fixes error if latex.el(c) is not loaded. (LaTeX-env-epsffigure): Remove. 2005-02-11 David Kastrup * tex-site.el.in (TeX-lisp-directory): Use `@lispauctexdir' instead of `"@auctexdir@"' and `@lispautodir' instead of `"@auctexdir_expanded"'. * configure.ac (lispauctexdir): create version of `$(auctexdir)' that is Lisp-quoted, not shell-quoted. (lispautodir): Similarly. * doc/Makefile.in (prefix): Append $(null) to some assignments to save quoted backslashes at line ends. * Makefile.in (prefix): Append $(null) to some variable assignments to let quoted backslashes at their end remain quoted. (auctexdir): Get from configure. 2005-02-10 Masayuki Ataka * tex-jp.el: Fix bug that once japanese-plain-tex-mode entered, plain-tex-mode do as japanese-plain-tex-mode. Reported by Ikumi Keita . (japanese-TeX-mode): Doc fix. Make variable buffer local and permanent-local. (japanese-plain-tex-mode-initialization) (japanese-latex-mode-initialization): Do not initialize japanese-TeX-mode. Use `when' instead of `if'. 2005-02-09 Peter S Galbraith * bib-cite.el (bib-master-file): Apply patch from Peter Heslin. TeX-master can now have symbol values (other than t or nil). 2005-02-09 Masayuki Ataka * tex-jp.el (LaTeX-auto-regexp-list): Removed `usepackage' because it is defined in `LaTeX-auto-minimal-regexp-list'. (plain-TeX-auto-regexp-list): Fix regexp; Use `\\|' instead of `|'. Fill lines in the same way in tex.el. (TeX-japanese-process-input-coding-system) (TeX-japanese-process-output-coding-system): Use if-statement in defvar instead of outside of defvar. Change default value of FSF Emacs to 'euc-jp. (TeX-after-start-process-function): Add code for FSF Emacs. 2005-02-08 Masayuki Ataka * style/alphanum.el: Added `Local Variables'. Suggested by Ikumi Keita . * font-latex.el: Fix typo in `Local Variables'. Reported by Ikumi Keita . 2005-02-07 Reiner Steib * doc/faq.texi (Frequently Asked Questions About AUCTeX): Fix typo in previous commit. 2005-02-07 Masayuki Ataka * style/jarticle.el ("jarticle"): Use `LaTeX-section-level'. 2005-02-07 Ralf Angeli * latex.el (LaTeX-fill-code-comment): Compute the end of the region to be filled _after_ indentation happened. 2005-02-07 David Kastrup * doc/faq.texi (Frequently Asked Questions About AUCTeX): Be quite more verbose about Emacs/XEmacs and versions. 2005-02-04 David Kastrup * Version 11.55 released. * Makefile.in (tar-ball): * doc/Makefile.in (clean, html/auctex_toc.html, dist): Move HTML stuff into html directory. 2005-02-04 David Kastrup * RELEASE: Some more Emacspeak blurb. 2005-02-04 Ralf Angeli * RELEASE: Make description of changes clearer. 2005-02-04 David Kastrup * RELEASE (Warning): warn about XEmacs 21.4.16. 2005-02-01 Ralf Angeli * tex.el (TeX-search-syntax-table): Give ?\" character punctuation syntax. Prevents parenthetical characters from being hidden from `TeX-find-opening-brace' if they happen to be enclosed between two quotation marks. Better use whitespace syntax for ?\" as this is the equivalent of a nil entry in the syntax table. (TeX-search-syntax-table): Remove superfluous possibility to specify comment and escape characters as arguments. 2005-02-01 Masayuki Ataka * doc/changes.texi: Mention support for the jsarticle and jsbook classes. * tex-jp.el (japanese-LaTeX-style-list): Added jsclasses (jsarticle and jsbook). 2005-01-31 Ralf Angeli * configure.ac: Bump version info to 11.55. * auctex.spec (Version): Bump to 11.55. (Release): Reset to 1. * doc/tex-ref.tex: Bump version info to 11.55. (Source Display): Adapt information about key bindings to current implementation. * doc/auctex.texi: Bump version info to 11.55. * doc/changes.texi: Add information about changes in AUCTeX 11.55. * RELEASE: Add information about fixed bugs in AUCTeX 11.55. * latex.el (LaTeX-fill-region-as-para-do): Limit the search for sentence ends. Fixes erroneous addition of spaces at places following a paragraph to be filled. 2005-01-31 Masayuki Ataka * style/jsarticle.el: New file. * style/jsbook.el: New file. * Makefile.in (STYLESRC): Add them. 2005-01-29 Masayuki Ataka * tex-jp.el (LaTeX-fill-region-as-para-do): Removed. 2005-01-28 Reiner Steib * tex.el (AUCTeX-date): Use ISO 8601 format. (TeX-submit-bug-report): Include AUCTeX-date when using a non-released version. 2005-01-26 Ralf Angeli * tex.el: Do not use whitespace syntax for ?~. Prevents these characters from being deleted during filling. 2005-01-25 Ralf Angeli * tex-buf.el: Update header. (TeX-view-output-file): Let `TeX-active-master' return file name without directory. Fixes viewer not finding output file when being called in a subdirectory. (TeX-active-master): Add new parameter `nondirectory'. Doc fix. 2005-01-21 David Kastrup * auctex.spec (Conflicts): Mention the outdated emacspeak from FC3. 2005-01-20 Ralf Angeli * font-latex.el (font-latex-set-syntactic-keywords): Do not call `regexp-opt' on empty lists. Prevents `regexp-opt-group' from entering a loop on installations with an outdated regexp-opt.el. * tex-buf.el (TeX-command-region): Pass name of region file without directory to `TeX-command-query' because a test in the latter expects it like that. (TeX-command-query): Doc fix. 2005-01-19 Jan-Ake Larsson * aclocal.m4, configure.ac: A few small changes to allow sync with preview-latex' aclocal.m4 2005-01-19 Ralf Angeli * tex.el (hack-one-local-variable): Make sure the byte compiler does not barf on `minor-mode-list' by eliminating the reference to this variable. 2005-01-15 Ralf Angeli * doc/auctex.texi (top): Restrict to one content listing in HTML output. * doc/todo.texi (Wishlist): Remove bug regarding parsing of LaTeX class files. * tex.el (TeX-macro-global): New function. (TeX-macro-global): (the variable) Moved here from tex-site.el.in. Use new `TeX-macro-global' function. * aclocal.m4 (library): Remove TEX_INPUT_DIRS function. * configure.ac (auctexdir): Remove call to TEX_INPUT_DIRS. * lpath.el: Setting `TeX-macro-global' is not necessary anymore as it now is in tex.el. * tex-site.el.in (TeX-macro-global): Move defcustom to tex.el. * doc/install.texi (Configure): Remove documentation of --with-tex-input-dirs. * doc/wininstall.texi: Remove documentation of --with-tex-input-dirs. * latex.el (LaTeX-insert-environment): Insert a simple newline character instead of using `newline'. Fixes insertion of environment end at wrong place in XEmacs. (LaTeX-fill-region): Remove superfluous `save-restriction'. (LaTeX-auto-class-regexp-list): Add patterns for commands described in "LaTeX2e font selection" (fntguide). 2005-01-14 Reiner Steib * doc/auctex.texi (European): Document all TeX-language-*-hook variables. Don't document obsolete `dk.sty'. 2005-01-14 David Kastrup * auctex.spec: Add and remove auctex.info instead of auctex in info dir. Bump release to 2 to match upload. 2005-01-13 David Kastrup * font-latex.el (font-latex-set-title-face) (font-latex-title-fontify): font-latex-title-fontify, not fontity. fontify, fontify, fontify. * doc/changes.texi: Ditto. * doc/auctex.texi (Font Locking): Ditto. 2005-01-12 David Kastrup * Version 11.54 released. 2005-01-12 Ralf Angeli * style/beamer.el: Update copyright information. General clean-up. ("beamer"): Support frame environment. The overprint has an optional "area width" argument, not a mandatory "overlay" argument. 2005-01-09 Reiner Steib * RELEASE: Addition to contributors section. * tex-bar.el (TeX-bar-LaTeX-button-alist): Use generic "view" image instead of mode specific. 2005-01-09 Ralf Angeli * RELEASE: Added information about fixed bugs and added features in AUCTeX 11.54. * auctex.spec (Version): Bump to 11.54. * configure.ac: Bump version info to 11.54. * doc/auctex.texi: Bump version info to 11.54. * doc/tex-ref.tex: Bump version info to 11.54. 2005-01-07 Ralf Angeli * latex.el (LaTeX-forward-paragraph): Allow finding paragraph commands even if they are preceded by whitespace and comment starters. 2005-01-06 Ralf Angeli * tex.el (TeX-forward-comment-skip): Differentiate prefixes with whitespace between comment starters. * latex.el: Update copyright information. (LaTeX-indent-calculate-last, LaTeX-fill-region-as-para-do): Do not widen. (LaTeX-fill-region-as-paragraph, LaTeX-fill-region-as-para-do): Use a marker instead of narrowing the region. (LaTeX-indent-line, LaTeX-indent-inner-do) (LaTeX-current-indentation, LaTeX-back-to-indentation): Handle prefixes with whitespace between comment starters correctly. 2005-01-05 Reiner Steib * style/graphicx.el: Added completion of boxing macros. Fontify some macros. * font-latex.el (font-latex-built-in-keyword-classes): Fixed typo in doc string. 2005-01-02 Reiner Steib * toolbar-x.el (toolbarx-default-toolbar-meaning-alist): Some checkdoc related fixes. Still not checkdoc clean. * tex-bar.el (Commentary): Don't mention stuff done by configure/make in the instructions. (TeX-bar-help-from-command-list): Quote symbols in doc string. File is checkdoc clean now. * doc/auctex.texi: Update copyright. (Mathematics): Explain how to enable LaTeX-math-mode by default. Suggested by Chris Wallace . (Filling, Outline): Markup fixes: Use @lisp instead of @example where appropriate. 2004-12-30 Ralf Angeli * tex-fold.el (ConTeXt-find-matching-start): Require 'tex and add autoloads to make the compiler happy. * doc/changes.texi: Add and tweak some stuff for 11.54. 2004-12-28 Ralf Angeli * tex.el (TeX-auto-parse-region): Do not add element to `symbol' if it is already contained. 2004-12-23 Ralf Angeli * latex.el (LaTeX-indent-outer-do): Remove redundant code. 2004-12-20 Ralf Angeli * font-latex.el: Add coding cookie. (font-latex-quote-end-list): Remove. (font-latex-quote-list): New variable. (font-latex-quotes, font-latex-match-quotation): Use it for generalization. (font-latex-keyword-matcher): Revert last change. (font-latex-make-built-in-keywords): Match the empty string only at the end of multi-char macros. (font-latex-make-user-keywords): Make sure sedate face is not used for words right after a "\\". (font-latex-set-syntactic-keywords): Do not match linebreaks as delimiters of `verb-like-commands'. 2004-12-19 Ralf Angeli * font-latex.el (font-latex-keyword-matcher): Highlight only first matched group. (font-latex-make-built-in-keywords): Set up grouping for warning keywords and mark its end with "[^A-Za-z@*]". 2004-12-17 Ralf Angeli * latex.el (LaTeX-fill-paragraph): Do not narrow region when code comments are filled. Fixes wrong indentation if a line with a code comment following an indented line is filled. Mark end of current line, not beginning of next. Jump to start of code comment line after regular filling. 2004-12-16 Ralf Angeli * font-latex.el (font-latex-built-in-keyword-classes): Move warning keywords up in order to save them from being covered by less important faces. Include "include" in warning keywords. * aclocal.m4 (TEX_INPUT_DIRS): Change `IFS' temporarily for tokenizing the string instead of inserting newlines. The latter did not work anyway because there was one backslash too much in "\\n". Strip trailing slashes of determined directories before concatenation. * doc/install.texi (Configure): Quote value for --with-tex-input-dirs. * doc/wininstall.texi: Quote value for --with-tex-input-dirs. * tex.el (TeX-arg-opening-brace, TeX-arg-closing-brace): New variables. (TeX-parse-arguments, TeX-parse-argument, TeX-argument-insert): Use them. * latex.el (TeX-arg-free): Temporarily bind `TeX-arg-opening-brace' and `TeX-arg-closing-brace'. 2004-12-15 Ralf Angeli * tex.el (TeX-source-specials-view-position-flags): Fix syntax for xdvi. 2004-12-14 Ralf Angeli * doc/auctex.texi (top): Duplicate top node and wrap it in @ifinfo and @ifhtml environments respectively. 2004-12-13 Ralf Angeli * context.el (ConTeXt-paragraph-commands-regexp): Match any command starting with "\start" or "\stop" and the respective language variants. 2004-12-11 Ralf Angeli * tex-fold.el (TeX-fold-keymap): Change key bindings for clearout commands. (TeX-fold-item, TeX-fold-remove-overlays): Doc fix. * tex.el (TeX-fold-menu): Change display of key bindings for clearout commands. * doc/auctex.texi (Folding): Document new key bindings for clearout commands. 2004-12-10 Ralf Angeli * tex-fold.el (TeX-fold-keymap): Add key binding for `TeX-fold-dwim'. (TeX-fold-dwim): New function. Add support for folding regions. (TeX-fold-macro, TeX-fold-env): Call `message' here instead of in `TeX-fold-item' to get the right return value for the latter. (TeX-fold-item): Move `message' out to get the right return value. (TeX-fold-remove-overlays): Signal if an overlay was deleted with the return value. * tex.el (TeX-fold-menu): Add menu entry for `Tex-fold-dwim'. * doc/auctex.texi (Folding): Document `TeX-fold-dwim'. Mention support for folding regions with `TeX-fold-dwim'. * doc/changes.texi: Advertise folding and unfolding of regions as well as DWIM functionality. * tex-fold.el (TeX-fold-keymap): Add key bindings for `TeX-fold-region and `TeX-fold-clearout-region'. (TeX-fold-region): Make interactive. * tex.el (TeX-fold-menu): Add menu entries for folding and unfolding of regions. * doc/auctex.texi (Folding): Document folding and unfolding of regions. Document `TeX-fold-dwim'. * latex.el (LaTeX-fill-code-comment): Do not hardcode tab width. 2004-12-09 Ralf Angeli * tex-fold.el (TeX-fold-keymap): Add key bindings for `TeX-fold-paragraph' and `TeX-fold-clearout-paragraph'. (TeX-fold-buffer): Now calls new `*-region' functions. (TeX-fold-paragraph): New function. (TeX-fold-buffer-type): Remove. (TeX-fold-region): New function. Basically encloses contents of `TeX-fold-buffer-type' but type parameter is not mandatory anymore. (TeX-fold-clearout-buffer): Now calls `TeX-fold-clearout-region'. (TeX-fold-clearout-paragraph, TeX-fold-clearout-region): New functions. * tex.el (TeX-fold-menu): Add menu entries for folding and unfolding of paragraphs. * doc/auctex.texi (Folding): Document folding and unfolding of paragraphs. * doc/changes.texi: Advertise folding and unfolding of paragraphs. * tex.el (TeX-comment-start-regexp): New variable. (TeX-comment-or-uncomment-region, TeX-uncomment) (TeX-forward-comment-skip, TeX-find-macro-end-helper): Use it. * latex.el (LaTeX-newline, LaTeX-insert-environment) (LaTeX-env-item, LaTeX-indent-line, LaTeX-current-indentation) (LaTeX-fill-region-as-paragraph, LaTeX-fill-region-as-para-do) (LaTeX-fill-move-to-break-point, LaTeX-fill-paragraph) (LaTeX-fill-code-comment, LaTeX-fill-region) (LaTeX-forward-paragraph, LaTeX-backward-paragraph): Use `TeX-comment-start-regexp' instead of `comment-start'. (LaTeX-backward-paragraph, LaTeX-indent-line): Simplify. * style/mdwlist.el ("mdwlist"): Use `TeX-comment-start-regexp' instead of `comment-start'. * style/doc.el (LaTeX-env-no-comment): Use `TeX-comment-start-regexp' instead of `comment-start'. 2004-12-07 Ralf Angeli * tex-fold.el (TeX-fold-buffer-type): Do not ignore case during search. * context.el (ConTeXt-paragraph-commands-regexp): New name for `ConTeXt-paragraph-commands'. Doc fix. Match escape character at front as well. (ConTeXt-mode-common-initialization): Use it. Set `LaTeX-paragraph-commands-regexp' instead of `LaTeX-paragraph-commands'. Adapt definition of `paragraph-start'. 2004-12-05 Ralf Angeli * tex.el (hack-one-local-variable): Advise it in order to call minor mode functions for AUCTeX minor modes activated by file-local minor mode variables. * latex.el (LaTeX-math-mode): Define using `define-minor-mode'. Make it compatible with older Emacsen. 2004-12-02 Ralf Angeli * style/csquotes.el (LaTeX-csquotes-quote-after-quote): Avoid interference with (n)german.el. 2004-12-01 Ralf Angeli * Makefile.in (distclean): Remove generated `configure' file. And revert again as it does not comply with the definition of standard targets in the GNU make manual. * style/jurabib.el ("jurabib"): Add further macros. * tex.el: Add coding cookie. Use punctuation syntax for "" and "" characters. (TeX-parse-argument): Deactivate mark after insertion of first pair of braces. Fixes problems with the insertion of macros with more than one brace and an active selection. * style/csquotes.el (LaTeX-csquotes-open-quote) (LaTeX-csquotes-close-quote): Doc fix. ("csquotes"): Repair quoting. Use completing-read where possible. Use a stricter test for usage of quotes. * doc/auctex.texi (Quotes): Document csquotes.el. 2004-11-29 Ralf Angeli * style/csquotes.el: New file. * Makefile.in (STYLESRC): Add style/csquotes.el. * doc/changes.texi: Advertise support for csquotes.sty. 2004-11-29 Reiner Steib * tex.el (TeX-auto-insert): Added SKIP argument. (TeX-auto-store): Use it to avoid circular dependencies. * style/graphicx.el (LaTeX-arg-includegraphics): Add "page". * latex.el (LaTeX-includegraphics-options-alist): Ditto. 2004-11-29 Ralf Angeli * doc/auctex.texi: Use "auctex.info" instead of "auctex" as info file name. * doc/Makefile.in: Adapt to suit change in info file name from "auctex" to "auctex.info". * doc/.cvsignore: Adapt to suit change in info file name from "auctex" to "auctex.info". * doc/changes.texi: Advertise use of "auctex.info" info file name. 2004-11-29 Jan-Ake Larsson * configure.ac: Add @command macro test * configure.in: Moved to configure.ac * configure.ac: Moved from configure.in * doc/macros.texi: Add @command macro * doc/auctex.texi: Change order of @top and @ifnottex, error message otherwise. * doc/Makefile.in: Add MAKEINFO environment variable for texi2... usage. Remove old (confusing) messages. 2004-11-28 Ralf Angeli * doc/intro.texi (Introduction): @/ unfortunately is only available since Texinfo 4.6. Remove it for now. * doc/auctex.texi: Correct some references. 2004-11-27 Ralf Angeli * doc/auctex.texi: Remove RCS keyword. Correct subtitle. Various corrections of filling and capitalization. Move up installation instructions. (Display): New node and chapter holding display-related content. (Font Locking): New node and section. (Folding): Now a section. Remove the silly first paragraph. (Outline): Now a section. * doc/macros.texi: Add `@fontlatex' macro. * doc/install.texi: Specify node unconditionally in the file. * doc/intro.texi (Introduction): Use `@email' instead of `@url' for email addresses. * doc/quickstart.texi (Processing): Better heading. * font-latex.el: Clean up comments. (font-latex-built-in-keyword-classes): Add explanation of the variable structure. (font-latex-match-command-with-arguments): Change "asterix" to "asterisk". 2004-11-25 Ralf Angeli * latex.el (LaTeX-backward-paragraph): Jump to macro start. D'oh. * texmathp.el: Rearrange variable and function definitions in order to get as few compiler warnings as possible due to the reintroduction of the :set function in `texmathp-tex-commands'. Add a dummy `defvar' for `texmathp-tex-commands' to silence the compiler. (texmathp-tex-commands): Reintroduce a :set function as advertised in `texmathp-compile'. (texmathp): Remove the conditional call to `texmathp-compile' as this is handled by the :set function in `texmathp-tex-commands' on load of the file. * tex.el: Autoload `texmathp-match-switch'. 2004-11-24 Ralf Angeli * font-latex.el (font-latex-bold-face, font-latex-italic-face) (font-latex-math-face, font-latex-string-face) (font-latex-warning-face, font-latex-verbatim-face): Inherit from suitable base faces if possible. Doc fix. (font-latex-sedate-face): Doc fix. * latex.el (LaTeX-paragraph-commands): Doc fix. (LaTeX-backward-paragraph): Do not unnecessarily jump to a (wrong) position after the macro start. * tex.el: Move (nearly all) autoloads to a single place. Remove redundant autoload for `TeX-region-file'. Add autoload for `TeX-view'. (TeX-parse-macro): Doc fix. Do not add braces for macros defined as `("foo" 0)'. (TeX-parse-arguments): Do not bind `<' and `>'. (TeX-parse-argument, TeX-argument-insert): Do not use `<' and `>' formerly bound by `TeX-parse-arguments'. Fixes some compiler warnings. (TeX-auto-list-information): Use `message' correctly. * tex-info.el (texinfo-mode): Add `@email' macro. 2004-11-22 Berend de Boer * context.el (ConTeXt-mode-common-initialization): ConTeXt does not need italics correction. 2004-11-20 Christian Schlauer * doc/auctex.texi (Floats): Update. * doc/changes.texi: Mention change of `LaTeX-float'. * latex.el (LaTeX-float, LaTeX-env-figure): Implement "do not prompt" option. `LaTeX-float' has the same customize value menu like `LaTeX-default-position' now. This implies that the old meaning nil corresponds to `""' now, while nil means "do not prompt". (LaTeX-env-figure): Ask for `Float position' instead of `Float to'. (LaTeX-float): New default value "" instead of "htbp" (after a discussion on the mailing list). (LaTeX-default-format, LaTeX-default-width) (LaTeX-default-position): Omit `Specifies the' in doc-string. 2004-11-19 Miguel Frasson * tex-buf.el (TeX-run-TeX): Improve comments. 2004-11-18 Ralf Angeli * tex-buf.el (TeX-TeX-sentinel-check): Use only the letters after the last dot of a file name for the file extension. 2004-11-16 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Search backward for \verb|...| constructs rather than forward. Fixes cases with more than one constructs per line. Reported by Christan Schlauer. 2004-11-16 David Kastrup * doc/wininstall.texi: Clarify --with-xemacs. 2004-11-15 Ralf Angeli * latex.el (LaTeX-paragraph-commands): Now is a customizable list instead of a regular expression. (LaTeX-paragraph-commands-internal) (LaTeX-paragraph-commands-regexp): New variables. (LaTeX-forward-paragraph, LaTeX-backward-paragraph) (LaTeX-common-initialization): Use `LaTeX-paragraph-commands-regexp' instead of `LaTeX-paragraph-commands'. 2004-11-12 Ralf Angeli * latex.el (LaTeX-close-environment): Insert a newline at the end of the environment if an uncommented line follows a commented one. 2004-11-11 Ralf Angeli * latex.el (docTeX-in-macrocode-p): Search backward for an environment beginning rather than forward for its end. 2004-11-08 David Kastrup * latex.el (doctex-mode): Set the mode name. 2004-11-04 Ralf Angeli * tex-info.el (texinfo-mode): Add `@command' macro. * doc/auctex.texi (Commands): Correct key binding for `TeX-Omega-mode'. Add index entry. Use `@command' instead of `@code' where appropriate. * font-latex.el (font-latex-built-in-keyword-classes): Use correct face for `font-latex-match-title-3'. 2004-11-04 Miguel Frasson * images/amstex.xpm: Added. Contains symbolic color 'backgroundToolBarColor', required by (GNU/Linux) XEmacs. 2004-11-03 Christian Schlauer * latex.el (LaTeX-env-figure, LaTeX-env-minipage) (LaTeX-env-tabular*): Do always accept the user's input as the new buffer-local values for `LaTeX-float' and `LaTeX-default-width', even if the user entered the empty string. (LaTeX-env-minipage): Do not ask for the (optional) position if `LaTeX-default-position' is set to `nil'. Behaviour agrees with LaTeX-env-array and LaTeX-env-tabular* now. (LaTeX-env-array, LaTeX-env-tabular*): Changed `setq'-assignment of `LaTeX-default-position' so that it works not only the first time in buffers with `LaTeX-default-position' set to `nil'. (LaTeX-env-array, LaTeX-env-minipage, LaTeX-env-tabular*): Use `LaTeX-optop', `TeX-grop', etc. instead of `{', `['. (LaTeX-env-picture): Don't delete whitespace after inserting the environment. Cursor position corresponds to proper indentation now. 2004-11-03 Ralf Angeli * tex.el (TeX-delete-dups-by-car): New name for `TeX-delete-dups'. (TeX-delete-duplicate-strings, TeX-sort-strings): New functions. Contributed by Reiner Steib and David Kastrup. * font-latex.el: Require 'tex. (font-latex-user-keyword-classes): Enhance :set function to tell user which entry is duplicated. * latex.el (TeX-arg-input-file): Use new name `TeX-delete-dups-by-car' instead of `TeX-delete-dups'. * style/graphicx.el (LaTeX-includegraphics-read-file-TeX): Use new name `TeX-delete-dups-by-car' instead of `TeX-delete-dups'. 2004-11-02 Ralf Angeli * font-latex.el (font-latex-make-user-keywords): Add the "fixed" matchers here rather than in `font-latex-make-built-in-keywords'. * latex.el (LaTeX-math-default, LaTeX-math-menu): Use "Greek Uppercase" instead of "Greek" and "Greek Lowercase" instead of "greek". 2004-11-02 David Kastrup * latex.el (LaTeX-paragraph-commands): Make `\maketitle' a paragraph starter. 2004-11-01 Ralf Angeli * font-latex.el (font-latex-make-built-in-keywords) (font-latex-make-user-keywords): Append rather than prepend matchers. 2004-11-01 Miguel Frasson * toolbar-x.el (toolbarx-make-command): Code clean up. 2004-11-01 Ralf Angeli * font-latex.el: Change maintainer information. (font-latex-keywords): New customization group. (font-latex-built-in-keyword-classes): New variable. (font-latex-make-match-defun, font-latex-keyword-matcher): New functions. (font-latex-make-built-in-keywords): New name for `font-latex-make-keywords'. Move default keyword definitions from `font-latex-match-*-keywords' to `font-latex-match-*-keywords-local'. Integrate `font-latex-match-*-keywords-set' function into `font-latex-match-*-keywords' defcustom. (font-latex-keywords-1, font-latex-keywords-2): Default to nil. All matchers are now added in `font-latex-make-built-in-keywords' and `font-latex-make-user-keywords'. (font-latex-user-keyword-classes): New variable. (font-latex-make-user-keywords): New function. * doc/changes.texi: Remove duplicate word. Mention possibility to add new keyword classes. * doc/quickstart.texi: Some rewordings, corrections and enhancements. 2004-10-29 Ralf Angeli * tex.el (TeX-auto-symbol-check): Use `add-to-list' instead of `cons' in order to avoid duplicates. * latex.el (LaTeX-auto-minimal-regexp-list): Use non-greedy operators for getting the end of a TeX group. (LaTeX-auto-cleanup): Use `add-to-list' instead of `cons' in order to avoid duplicates. 2004-10-29 Miguel Frasson * tex-buf.el: Add simple error report system. (TeX-error-report-switches): New variable (plist). (TeX-run-TeX), (TeX-TeX-sentinel-check): Use it, updating error state, where property is (intern (TeX-master-file)). * tex-bar.el: Remove defadvice's to TeX-run-TeX and TeX-TeX-sentinel-check. (TeX-bar-error-handling-switches): Removed. (TeX-bar-LaTeX-button-alist): next-error updated. 2004-10-28 Reiner Steib * tex-bar.el (TeX-bar-LaTeX-button-alist): Add `TeX-save-document'. * doc/changes.texi: Renamed function `LaTeX-install-toolbar'. * tex-site.el.in: Ditto. 2004-10-28 Miguel Frasson * tex-bar.el: Now requires tex-buf.el, for error handling. Renamed symbols: (LaTeX-install-toolbar): New name for `latex-install-toolbar'. (tex-bar-latex-buttons): New name for `tex-bar-latex-buttons'. (tex-bar-img-filename): New name for `tex-bar-img-filename'. (TeX-tool-bar): New name for `tex-tool-bar' group. (TeX-bar-LaTeX-buttons): New name for `tex-bar-latex-buttons'. (TeX-bar-LaTeX-all-button-alists): New name for `tex-bar-latex-all-button-alists'. (TeX-tool-bar-button-definitions): New name for `tex-tool-bar-button-definitions'. (LaTeX-symbols-toolbar-switch-contents): New name for `latex-symbols-toolbar-switch-contents'. (LaTeX-symbols-toolbar-contents): New name for `latex-symbols-toolbar-contents' (LaTeX-install-toolbar): New name for `latex-install-toolbar'. Use separator only in Emacs, while buildin separator is not implemented for XEmacs. (TeX-bar-help-from-command-list): New function, that returns the :help string for ITEM from TeX-command-list. (TeX-bar-error-handling-switches): New variable. (TeX-run-TeX [tex-buf.el]): before-adviced to reset error internals. (TeX-TeX-sentinel-check [tex-buf.el]): after-adviced to set error internals when error happens. (TeX-bar-LaTeX-button-alist): New button next-error, which is resp. visible/active when error detected on Emacs/XEmacs. All buttons received :help from TeX-command-list. (TeX-bar-LaTeX-buttons): next-error is default, and file is no longer default. 2004-10-27 Ralf Angeli * latex.el (LaTeX-auto-class-regexp-list): New variable. Match "\DeclareRobustCommand\foo" besides "\DeclareRobustCommand{\foo}" as well. (LaTeX-auto-regexp-list): Use it. (LaTeX-auto-cleanup): Do not consider key=value options. Check for "Package" in addition to "package". 2004-10-26 Reiner Steib * tex.el (TeX-auto-generate-global): Only parse cls and sty files. 2004-10-26 Ralf Angeli * font-latex.el (font-latex-match-command-in-braces): Remove references to non-existent variables. 2004-10-26 Reiner Steib * latex.el (LaTeX-math-list): Improve doc string and custom type. (LaTeX-math-default): Added doc string. 2004-10-26 Frank Kster * doc/quickstart.texi: Don't use so many nodes. Several fixes. 2004-10-26 Reiner Steib * Makefile.in (tar-ball): Don't include CVS stuff. * doc/changes.texi: Mention experimental tool bar support. * Makefile.in (tar-ball): Include tex-bar images. 2004-10-25 David Kastrup Toolbar patches by Reiner Steib * Makefile.in (aucteximagedir): Define. (AUCSRC, AUCELC): Add toolbar files. (install-images): new target. * tex-site.el.in (TeX-image-directory): Define. * tex-bar.el (toolbar-x): require toolbar and latex at runtime. 2004-10-24 Reiner Steib * Makefile.in (DOCFILES): Added doc/quickstart.texi. 2004-10-23 Miguel Frasson * toolbar-x.el: (toolbarx-emacs-mount-popup-menu): Nil cannot be a menu key anymore (fixed). (toolbarx-test-image-type): Improve comments. Add support for variables defined with `defimage', which are considered a simple value for the :image property. (toolbarx-emacs-refresh): Nil cannot be a toolbar (menu) key anymore (fixed). (toolbarx-install-toolbar): Improved documentation for the :image property. 2004-10-22 Miguel Frasson * tex-bar.el: Improve comments. Symbol-toolbar code moved to the bottom of the file. (tex-bar-latex-buttons): Improve comments. Add custom :type. (tex-bar-latex-buttons): New command -- display a list of defined buttons. (tex-bar-available-meaning-alists): Removed (renamed). (tex-bar-latex-all-button-alists): New name of `tex-bar-available-meaning-alists'. Add custom :type. (tex-bar-meaning-alist): Removed (renamed). (tex-bar-latex-button-alist): New name of `tex-bar-meaning-alist'. Add custom :type. Renamed `latex-symbols' button to `latex-symbols-experimental'. * toolbar-x.el: Improve comments. (toolbarx-process-group-without-insert): Become autoloaded. (toolbarx-process-group): Code cleanup. (toolbarx-process-symbol): Code cleanup. (toolbarx-default-toolbar-meaning-alist): Separator button label renamed from `:sep' to `separator'. 2004-10-22 Reiner Steib * doc/auctex.texi (European): Adjust to change of `LaTeX-italian-open-quote'. 2004-10-20 Ralf Angeli * aclocal.m4 (TEX_INPUT_DIRS): Do not use -e command line option for grep. 2004-10-18 Reiner Steib * doc/quickstart.texi: Fix markup. 2004-10-18 Frank Kster * doc/quickstart.texi: New chapter. * doc/changes.texi: Mention `Quick Start'. * doc/auctex.texi (Font Specifiers): Add \textrm and \textsf (Commands): Add TeX-Omega-mode (top): Print contents near at the beginning. * doc/macros.texi: New macro @sans. * doc/intro.texi (Introduction): Removed sections obsoleted by `Quick Start' (Indentation and filling, Completion, Editing your document, Outlines). 2004-10-18 Reiner Steib * doc/todo.texi, doc/install.texi, doc/history.texi, doc/changes.texi, doc/auctex.texi: Remove optional arguments of all @node commands. * doc/Makefile.in (TEXIFILES): Added quickstart.texi. 2004-10-18 Frank Kster * doc/Makefile.in (TEXIFILES): Add macros.texi. (auctex.dvi, auctex.pdf): Depend on TEXIFILES. 2004-10-18 Christian Schlauer * latex.el (LaTeX-env-figure, LaTeX-env-minipage): Point out to the user that the placement (figure) and position (minipage) specifiers are optional arguments. (LaTeX-env-figure): Simplified. Do not insert the (optional) placement specifier `LaTeX-float' into the buffer if the user entered the empty string when asked for `float'. 2004-10-18 Ralf Angeli * font-latex.el (font-latex-make-keywords): Correctly evaluate keywords when making `font-latex-match-*-keywords' defcustom. 2004-10-17 Ralf Angeli * doc/todo.texi (Bugs): Document some bugs related to font locking and folding. * latex.el (LaTeX-insert-environment): Partial rewrite. Stay in comments. Do not comment uncommented following lines. Get rid of redundant comment prefix. (LaTeX-indent-calculate): Check for beginning of buffer. (LaTeX-indent-calculate-last): Do not check for beginning of buffer. Fixes wrong indentation of environments at the top of the buffer. 2004-10-16 Ralf Angeli * tex-fold.el (TeX-fold-macro-nth-arg): Use `TeX-find-closing-brace' instead of `forward-sexp'. Fixes problems with comment characters in \url macros. * latex.el (LaTeX-paragraph-commands): Use `regexp-opt' to generate the regexp. (LaTeX-common-initialization): Add support for "$$" to `paragraph-start'. * context.el (ConTeXt-mode-common-initialization): Add support for "$$" to `paragraph-start'. * font-latex.el: Remove change log. (font-latex-make-keywords): New function. (font-latex-match-variable-keywords-local) (font-latex-match-variable-make) (font-latex-match-variable-keywords-set) (font-latex-match-variable-keywords, font-latex-match-variable) (font-latex-match-reference-keywords-local) (font-latex-match-reference-make) (font-latex-match-reference-keywords-set) (font-latex-match-reference-keywords) (font-latex-match-reference) (font-latex-match-function-keywords-local) (font-latex-match-function-make) (font-latex-match-function-keywords-set) (font-latex-match-function-keywords, font-latex-match-function) (font-latex-match-title-1-keywords-local) (font-latex-match-title-1-make) (font-latex-match-title-1-keywords-set) (font-latex-match-title-1-keywords, font-latex-match-title-1) (font-latex-match-title-2-keywords-local) (font-latex-match-title-2-make) (font-latex-match-title-2-keywords-set) (font-latex-match-title-2-keywords, font-latex-match-title-2) (font-latex-match-title-3-keywords-local) (font-latex-match-title-3-make) (font-latex-match-title-3-keywords-set) (font-latex-match-title-3-keywords, font-latex-match-title-2) (font-latex-match-title-4-keywords-local) (font-latex-match-title-4-make) (font-latex-match-title-4-keywords-set) (font-latex-match-title-4-keywords, font-latex-match-title-2) (font-latex-match-textual-keywords-local) (font-latex-match-textual-make) (font-latex-match-textual-keywords-set) (font-latex-match-textual-keywords, font-latex-match-textual) (font-latex-match-warning-keywords-local) (font-latex-match-warning-make) (font-latex-match-warning-keywords-set) (font-latex-match-warning-keywords, font-latex-match-warning) (font-latex-match-warning-function): Now generated by `font-latex-make-keywords'. (font-latex-match-bold-command-keywords-local) (font-latex-match-bold-command-keywords) (font-latex-match-bold-command) (font-latex-match-italic-command-keywords-local) (font-latex-match-italic-command-keywords) (font-latex-match-italic-command) (font-latex-match-math-command-keywords-local) (font-latex-match-math-command-keywords) (font-latex-match-math-command) (font-latex-match-type-command-keywords-local) (font-latex-match-type-command-keywords) (font-latex-match-type-command) (font-latex-match-bold-declaration-keywords-local) (font-latex-match-bold-declaration-keywords) (font-latex-match-bold-declaration) (font-latex-match-italic-declaration-keywords-local) (font-latex-match-italic-declaration-keywords) (font-latex-match-italic-declaration) (font-latex-match-type-declaration-keywords-local) (font-latex-match-type-declaration-keywords) (font-latex-match-type-declaration): New variables generated by `font-latex-make-keywords'. (font-latex-match-bold-command) (font-latex-match-bold-command-make) (font-latex-match-bold-command-keywords-set) (font-latex-match-italic-command) (font-latex-match-italic-command-make) (font-latex-match-italic-command-keywords-set) (font-latex-match-math-command) (font-latex-match-math-command-make) (font-latex-match-math-command-keywords-set) (font-latex-match-type-command) (font-latex-match-type-command-make) (font-latex-match-type-command-keywords-set) (font-latex-match-bold-declaration) (font-latex-match-bold-declaration-make) (font-latex-match-bold-declaration-keywords-set) (font-latex-match-italic-declaration) (font-latex-match-italic-declaration-make) (font-latex-match-italic-declaration-keywords-set) (font-latex-match-type-declaration) (font-latex-match-type-declaration-make) (font-latex-match-type-declaration-keywords-set): New functions generated by `font-latex-make-keywords'. (font-latex-keywords-1): Use new functions. (font-latex-bold-command-keywords) (font-latex-italic-command-keywords) (font-latex-math-command-keywords) (font-latex-type-command-keywords) (font-latex-bold-declaration-keywords) (font-latex-italic-declaration-keywords) (font-latex-type-declaration-keywords): Remove. (font-latex-match-command-with-arguments): New name for `font-latex-match-command-outside-arguments'. Third argument now is an integer instead of a binary. It specifies the number of mandatory arguments of a LaTeX macro. Simplify the function. (font-latex-match-font-cache) (font-latex-match-font-outside-braces): Remove. (font-latex-match-in-brace-cache): New name for `font-latex-match-infont-cache'. (font-latex-match-command-in-braces): New name for `font-latex-match-font-inside-braces'. Generalize, so that it can be used for any command and does not return a special, complex match. (font-latex-set-syntactic-keywords): Try to minimize false fontifications of macros which may look like \foo{bar} and \foo{bar{. (font-latex-commented-outp): Do not consider comment characters in verbatim content. 2004-10-15 Reiner Steib * latex.el (LaTeX-default-format, LaTeX-default-width) (LaTeX-default-position): Fix doc strings. 2004-10-14 Reiner Steib * latex.el (LaTeX-default-width): Make it buffer local. (LaTeX-env-minipage): Pick up new value of LaTeX-default-width. 2004-10-14 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list): Add starred sectioning commands. * latex.el (LaTeX-fill-region-as-paragraph): Do not add linebreaks after "$$ " at the end of paragraph filling. (LaTeX-fill-move-to-break-point): Simplify. Add support for $$...$$ type display math. * style/jurabib.el: New file. * Makefile.in (STYLESRC): Add jurabib.el. * doc/changes.texi: Mention support for the jurabib package. 2004-10-14 Miguel Frasson * auctb.el: Removed (renamed to tex-bar.el) * tex-bar.el: Added; (new name of auctb.el). Added support for buttons and customization. (install-auctex-toolbar): removed. (tex-tool-bar): New custom group, inside AUCTeX group. (tex-tool-bar-button-definitions): New custom group, inside tex-tool-bar group. (tex-bar-latex-buttons): New custom variable: buttons in LaTeX mode. (tex-bar-meaning-alist): New custom variable. (tex-bar-available-meaning-alists): New custom variable: collection of variables for meaning-alists. (latex-install-toolbar): New function: install the toolbar for LaTeX mode. (latex-symbols-toolbar-contents): added separator between symbol switches and symbols. * toolbarx.el: Removed (renamed to toolbar-x.el) * toolbar-x.el: Added; (new name of toolbarx.el). (toolbarx-default-toolbar-meaning-alist) Added `:sep' button. (toolbarx-emacs-add-button): clean up. 2004-10-13 Reiner Steib * latex.el (LaTeX-default-width): New variable. (LaTeX-env-minipage, LaTeX-env-tabular*): Use it. (LaTeX-environment): Mention it in the doc string. (LaTeX-env-label): Reindent. * tex.el (TeX-delete-dups): Use our own (faster) version. * latex.el (LaTeX-env-array, LaTeX-env-minipage) (LaTeX-env-tabular*): Don't delete whitespace after inserting the environment. Cursor position corresponds to proper indentation now. From Christian Schlauer with some modifications. 2004-10-12 Reiner Steib * doc/auctex.texi (Completion): Mention `C-c RET' for `TeX-insert-macro'. Fixed typo. (Parsing Files): Fixed typo. (European): Improved. From Frank Kster , slightly modified. * latex.el (LaTeX-common-initialization): Use `LaTeX-env-tabular*' for "tabular*". 2004-10-12 Ralf Angeli * tex-info.el (Texinfo-insert-node): Emacs 21.3 and earlier expect a list of lists. * tex.el: Cater for `delete-selection-mode'. `eval-after-load' (used for support of desktop.el) in Emacs 21.3 and earlier expects a string, not a symbol. (TeX-point-is-escaped): Remove. Implementation of `TeX-escaped-p', which does the same, is slightly nicer. (TeX-insert-dollar): Use `TeX-escaped-p'. 2004-10-11 Ralf Angeli * font-latex.el: Small clean-ups and rearrangements. (font-latex-match-variable-keywords) (font-latex-match-reference-keywords) (font-latex-match-function-keywords) (font-latex-match-title-1-keywords) (font-latex-match-title-2-keywords) (font-latex-match-title-3-keywords) (font-latex-match-title-4-keywords) (font-latex-match-textual-keywords) (font-latex-match-warning-keywords): Remove redundant defvars. (font-latex-match-variable, font-latex-match-reference) (font-latex-match-function, font-latex-match-title-1) (font-latex-match-title-2, font-latex-match-title-3) (font-latex-match-title-4, font-latex-match-textual) (font-latex-match-warning): Set default values and make buffer-local. (font-latex-match-reference): Add doc string. (font-latex-set-syntactic-keywords): Do not set comment syntax. 2004-10-10 Ralf Angeli * style/booktabs.el, style/captcont.el, style/fancyref.el, style/mdwlist.el, style/natbib.el, style/nicefrac.el, style/paralist.el, style/scrbase.el, style/scrbook.el, style/scrlttr2.el, style/scrpage2.el, style/scrreprt.el, style/subfigure.el, style/units.el (TeX-add-style-hook): Do not set up font-latex variables if font-latex is not loaded and enabled. * style/alltt.el, style/listings.el, style/url.el (TeX-add-style-hook): Do not set up font-latex variables if font-latex is not loaded and enabled. Reinitialize font-lock defaults. * font-latex.el: Do not autoload `texmathp'. (font-latex-fontify-script): Doc fix. (font-latex-script): Do without `texmathp'. (font-latex-syntactic-keywords): Default to nil. Make buffer-local. (font-latex-setup): Set syntactic keywords. 2004-10-08 Reiner Steib * tex.el (TeX-update-style, TeX-parse-arguments) (TeX-parse-argument, VirTeX-common-initialization) (TeX-auto-parse-region): Simplify code by using `unless'. 2004-10-08 Ralf Angeli * tex.el (TeX-search-forward-unescaped) (TeX-search-backward-unescaped, TeX-re-search-forward-unescaped) (TeX-search-unescaped, TeX-escaped-p): New functions. (TeX-find-macro-boundaries): Use `TeX-escaped-p'. * latex.el (LaTeX-newline, LaTeX-current-indentation) (LaTeX-fill-region-as-para-do, LaTeX-fill-move-to-break-point): Use new search functions from tex.el. * tex-fold.el (TeX-fold-make-overlay, TeX-fold-hide-item) (TeX-fold-show-item): Respect `font-lock-mode'. * style/amstex.el: Add copyright and license information. ("amstex"): Do not load amsmath.el in `plain-tex-mode' or `ams-tex-mode'. 2004-10-06 Ralf Angeli * texmathp.el (texmathp): Limit environment search with result of macro search if possible. * font-latex.el (font-latex-verb-like-commands): New variable. (font-latex-set-syntactic-keywords): Use it. (font-latex-match-command-outside-arguments) (font-latex-match-font-outside-braces) (font-latex-match-font-inside-braces): Check face at the beginning of the match to make keyword fontification possible even if a macro's argument was already fontified due to syntactic keyword fontification. * style/listings.el (TeX-add-style-hook): Suppress indentation in lstlisting environments. Fontify both \lstinline|...| and \lstinline{...}. Add lstlisting environment to `LaTeX-verbatim-regexp'. * style/url.el (TeX-add-style-hook): Treat arguments \url|...| and \url{...} as verbatim. * style/alltt.el (TeX-add-style-hook): Use buffer-local variable `font-latex-verbatim-environments-local'. 2004-10-05 Miguel Frasson * toolbarx.el (toolbarx-default-toolbar-meaning-alist): New constant, providing a MEANING-ALIST for the insertion of the default buttons and some extra ones in Emacs and XEmacs. 2004-10-05 Ralf Angeli * tex.el (TeX-output-view-style): Move more special items upwards. Remove "a4" and "a5" styles. 2004-10-04 Miguel Frasson * toolbarx.el: (toolbarx-emacs-add-button) (toolbarx-test-image-type): Add Emacs `image descriptor' as valid image specification (Emacs only). (toolbarx-emacs-add-button): "transp-strip" is new `tranparent strip' image file. * images/bibtex.xpm, images/dvipdf.xpm, images/dvips.xpm, * images/error.xpm, images/exec.xpm, images/execbibtex.xpm, * images/execdvips.xpm, images/execerror.xpm, * images/execpdftex.xpm, images/exectex.xpm, * images/execviewdvi.xpm, images/execviewpdf.xpm, * images/execviewps.xpm, images/gv.xpm, images/jumpdvi.xpm, * images/pdftex.xpm, images/pspdf.xpm, images/sep.xpm, * images/tex.xpm, images/view.xpm, images/viewdvi.xpm, * images/viewpdf.xpm, images/viewps.xpm: Add symbolic color 'backgroundToolBarColor' to make pics work in (GNU/Linux) XEmacs 2004-10-02 Ralf Angeli * font-latex.el: Some clean-ups, rearrangements and performance improvements. (font-latex-verbatim-face): XEmacs does not like :inherit. (font-latex-setup): Activate `font-latex-syntactic-face-function'. (font-latex-faces-present-p): New function. (font-latex-match-command-outside-arguments): Use it. (font-latex-bold-command-keywords) (font-latex-italic-command-keywords) (font-latex-math-command-keywords) (font-latex-type-command-keywords): New variables. (font-latex-match-font-outside-braces): Use them. Check for comment and verbatim faces. (font-latex-bold-declaration-keywords) (font-latex-italic-declaration-keywords) (font-latex-type-declaration-keywords): New variables. (font-latex-match-font-inside-braces): Use them. Check for comment and verbatim faces. (font-latex-script): Use `font-latex-faces-present-p'. * doc/changes.texi: Add some new features and fixed bugs. 2004-09-29 Miguel Frasson * images/bibtex.xpm, images/dvipdf.xpm, images/dvips.xpm, * images/error.xpm, images/exec.xpm, images/execbibtex.xpm, * images/execdvips.xpm, images/execerror.xpm, * images/execpdftex.xpm, images/exectex.xpm, * images/execviewdvi.xpm, images/execviewpdf.xpm, * images/execviewps.xpm, images/gv.xpm, images/jumpdvi.xpm, * images/pdftex.xpm, images/pspdf.xpm, images/sep.xpm, * images/tex.xpm, images/view.xpm, images/viewdvi.xpm, * images/viewpdf.xpm, images/viewps.xpm: Add designed images for toolbar buttons. 2004-09-29 Ralf Angeli * font-latex.el (font-latex-do-multi-line): Add new option and use it as default value. (font-latex-use-cache): New variable. (font-latex-match-command-outside-arguments) (font-latex-match-font-outside-braces) (font-latex-match-font-inside-braces): Use it. (font-latex-check-cache): Do not check if cache is to be used. (font-latex-setup): Set up multi-line font locking. 2004-09-28 Miguel Frasson * toolbarx.el: Support for grouping `:insert' clauses in the 3 engines (performance improvement.) Better comments and docstrings. (toolbarx-process-symbol): Fix `nreverse'-missing bug. * auctb.el: Fix Copyright notice (to FSF). Remove "AMS Special" from ppup menu. Simplify. Remove garbage comments from end. (auctb-img-filename): Remove "symb-pics/" from return. Add "symb-pics/" explicitly where it is needed in the defconst's. * images, images/dropdown.xpm, images/ltx-symb-turn-off.xpm, * images/ltx-symb-turn-on.xpm: Add designed images for symbol toolbar. 2004-09-28 Ralf Angeli * font-latex.el: Add change log entries and bump version. (font-latex-find-matching-close): Fix typo in last commit. (font-latex-match-font-inside-braces): Set actual numbers in the match, not nil. Fixes errors with `font-lock-multiline' enabled. 2004-09-27 David Kastrup * font-latex.el (font-latex-find-matching-close): Simplify. * latex.el (LaTeX-math-default): Use `W in math mode for the Omega letter. * tex.el (TeX-find-macro-start-helper): Simplify. (TeX-find-macro-end-helper): Simplify. (TeX-find-macro-end-helper): Stop if `forward-sexp' fails. * doc/todo.texi (Wishlist): Macro spell checking mentioned. 2004-09-26 Miguel Frasson * toolbarx.el: Add to cvs (first version). * auctb.el: Add to cvs (first version); features only a symbol toolbar. 2004-09-24 Davide G. M. Salvetti * configure.in: Add `--(en|dis)able-build-dir-test' switch to allow disabling `VALID_BUILD_DIR'. 2004-09-22 Ralf Angeli * tex.el (VirTeX-common-initialization): Revert last change. * font-latex.el (font-latex-keywords-2): Use function `font-latex-match-script' instead of regexp directly. (font-latex-fontify-script): Doc fix. (font-latex-match-script): Reintroduce. 2004-09-19 Ralf Angeli * latex.el (LaTeX-verbatim-macros): New variable. (LaTeX-fill-move-to-break-point): Do not break inside of macros defined in `LaTeX-verbatim-macros'. (LaTeX-fill-newline): Do not trigger auto-fill. * style/listings.el (TeX-add-style-hook): Add "lstinline" to `LaTeX-verbatim-macros'. * font-latex.el (font-latex-set-syntactic-keywords): "*" is not allowed as a \verb delimiter. * doc/todo.texi (Bugs): Another bug gone the way of the poodle. 2004-09-18 Ralf Angeli * latex.el (LaTeX-indent-line): Use XEmacs' functions to deal with extents/overlays. Avoids dependence on overlay.el. (LaTeX-fill-region-as-paragraph): Inhibit filling of "Local Variables" section, if to be filled as a paragraph. * style/url.el: Add some (low-level) symbols for completion and fontification. (TeX-arg-urlstyle): New function. * doc/todo.texi (Bugs): Remove some obsolete bug descriptions. 2004-09-17 Ralf Angeli * font-latex.el (font-latex-verbatim-environments): Change from defvar to defcustom. (font-latex-verbatim-environments-local) (font-latex-verbatim-macros) (font-latex-verbatim-macros-local): New variables. (font-latex-set-syntactic-keywords): Use them. * style/listings.el: New file. * Makefile.in (STYLESRC): Add it. * doc/changes.texi: Mention support for listings.sty. 2004-09-16 Reiner Steib * doc/changes.texi: Mention built fixes. 2004-09-16 Ralf Angeli * font-latex.el (font-latex-commented-outp): Reimplement for better performance. * doc/changes.texi: Streamline documentation of performance changes. * tex.el (TeX-search-syntax-table): Make XEmacs happy. (VirTeX-common-initialization): Append our stuff to the end of `find-file-hooks'. Fixes problems with `auto-insert-mode'. 2004-09-15 Jan-ke Larsson * aclocal.m4 (EMACS_LISP): quote ${emacs}, Windows.... 2004-09-13 Ralf Angeli * doc/changes.texi: Add changes from 11.51 up to now. * style/url.el: New file. * Makefile.in (STYLESRC): Add style/url.el. 2004-09-12 Ralf Angeli * font-latex.el (font-latex-keywords-1): Add highlighter for math macros. (font-latex-keywords-2): Use regexp for matching instead of `font-latex-match-script'. (font-latex-match-font-outside-braces): Add support for math, esp. "\ensuremath". (font-latex-match-script): Remove. (font-latex-script): Fix check for present faces. Add `texmathp' check in case there is no math face present. 2004-09-09 Reiner Steib * aclocal.m4 (texinputdirs): Strip leading "!!". 2004-09-08 Reiner Steib * latex.el (TeX-arg-input-file): Remove duplicates from the completion list. Simplify code by using `unless'. 2004-09-08 Ralf Angeli * tex-info.el (Texinfo-insert-node): New function. (Texinfo-mode-map): Use it. 2004-09-07 Davide G. M. Salvetti * aclocal.m4 (EMACS_LISP): Sync echo output with real emacs invocation. 2004-09-07 Ralf Angeli * tex-info.el (Texinfo-insert-environment): Add a space between inserted "@end" and environment name in case of active region. 2004-09-05 Ralf Angeli * tex.el (TeX-search-syntax-table): New function and variable. (TeX-find-balanced-brace): New function. (TeX-find-closing-brace): Use `TeX-find-balanced-brace'. (TeX-find-opening-brace): Ditto. (TeX-find-macro-boundaries): Add `lower-bound' argument. (TeX-find-macro-start-helper): Add `limit' argument. (TeX-find-macro-start): Ditto. 2004-08-31 Reiner Steib * doc/changes.texi: Add `LaTeX-includegraphics-read-file'. Mention use of `start' for MikTeX and fpTeX. * latex.el (LaTeX-includegraphics-read-file): New variable. * tex.el (TeX-delete-dups): New defun or defalias. * style/graphicx.el (LaTeX-includegraphics-read-file-TeX): Renamed from `LaTeX-includegraphics-read-file'. Remove duplicates using `TeX-delete-dups'. (LaTeX-includegraphics-read-file-relative): Insert relative filename. From Dan Nicolaescu . (LaTeX-arg-includegraphics): Use funcall for image-file. 2004-08-28 David Kastrup * Version 11.53 released. 2004-08-28 David Kastrup * doc/tex-ref.tex: Bump version. * configure.in: Bump version number. * auctex.spec (Version): bump to 11.53. * doc/auctex.texi: Bump version to 11.53. 2004-08-28 Ralf Angeli * Makefile.in (install-el): Fix typos. 2004-08-27 Reiner Steib * tex.el (TeX-kpathsea-format-alist): Added LaTeX-includegraphics-extensions. (TeX-search-files): Fix non-kpathsea case. * style/graphicx.el (LaTeX-includegraphics-read-file): Use completion based on TeX-search-files. 2004-08-27 Ralf Angeli * tex-fold.el (TeX-fold-preserve-comments): New variable. (TeX-fold-buffer-type): Use it. * font-latex.el (font-latex): Add to AUCTeX's customization group. (font-latex-find-matching-close): Correctly recognize multiple escape characters. Add missing paren. 2004-08-26 Masayuki Ataka * tex-site.el.in (japanese-slitex-mode): Removed obsolete autoload of slitex. * tex-jp.el (japanese-plain-tex-mode, japanese-latex-mode): Use `TeX-defun' for getting version info into mode doc. 2004-08-26 Ralf Angeli * tex-mik.el: Use `start' instead of the respective executable for PostScript, PDF and HTML files. * tex-fptex.el: Ditto. 2004-08-25 Ralf Angeli * tex.el (TeX-find-macro-boundaries): Detect the start of any macro, not just those consisting of [A-Za-z@]. Remove some superfluous `goto-char' calls. (TeX-find-macro-start-helper): Reimplement once again. Original patch by David Kastrup; slightly modified. Doc fix. (TeX-find-macro-end-helper): Doc fix. Handle macros not consisting of [A-Za-z@] correctly. (TeX-find-opening-brace): Improve performance. 2004-08-25 Reiner Steib * tex.el: Autoload `TeX-process-set-variable' and `TeX-region-file'. 2004-08-25 Jan-ke Larsson * aclocal.m4: EMACS_PATH_LISPDIR: Expand lispdir if relative to binary. Quote lispdir, and deal with exec_prefix, add missing bracket. * aclocal.m4: Fix xemacs<->emacs mistake, restore path searching when --without-packagedir is given * configure.in: enable --without-packagedir * aclocal.m4: Barf if packagedir not found, don't bother with load-path on xemacs' lispdir 2004-08-25 David Kastrup * tex-buf.el (TeX-command): Call `TeX-process-set-variable' with correct options, so that the viewer command is next unless overridden. * tex.el (TeX-set-mode-name): Set `TeX-command-next' in the buffers where they actually count. 2004-08-24 David Kastrup * latex.el (LaTeX-math-default): Correctly code "jmath" and "Bbbk". 2004-08-24 Reiner Steib * doc/auctex.texi (Mathematics): Add `LaTeX-math-menu-unicode'. (Changes): Refer to `history.texi' _after_ the newer changes. * doc/changes.texi: Added versions 11.51-11.53. 2004-08-24 Ralf Angeli * tex.el (VirTeX-common-initialization): Use "%" instead of `comment-start' for `comment-start-skip'. (TeX-find-opening-brace): Do not use an inverse matcher but negate the whole expression. (TeX-find-macro-start-helper): Reimplement. Should be much faster now. * latex.el (LaTeX-current-environment): Use `buffer-substring-no-properties'. (LaTeX-indent-line): Revert last change. Only multi-line overlays at the start of a line are affected by the XEmacs bug. * tex-info.el (Texinfo-environment-list): Add "command" macro. 2004-08-24 Reiner Steib * doc/install.texi (Prerequisites): Add `easy-mmode.el' update for XEmacs. 2004-08-23 David Kastrup * latex.el (LaTeX-indent-line): Get all overlays, not just one. (LaTeX-math-default): Add iota. (LaTeX-math-default): Use different symbol for triangle. (LaTeX-math-default): Don't use `?\S-e' for `?E'. * tex.el (TeX-match-buffer): Use `buffer-substring-no-properties' (TeX-in-commented-line): Use `skip-chars-forward' and `forward-line'. (TeX-in-line-comment): Use `forward-line'. (TeX-brace-count-line): Use `skip-chars-forward'. * RELEASE: Some updates. * latex.el (LaTeX-section): Use an active region as title if available. (LaTeX-section-title): Prompt with title if present. Should we ask at all? (LaTeX-math-list): Add Unicode code point. (LaTeX-math-menu-unicode): New customization variable for unicode in math menu. Only set in GTK Emacs for now. Does not work on XEmacs. Use it for initializing the menus. Also prefix menu points with backslash. * Makefile.in (.PHONY): Declare a bunch of phony targets to protect against users making files/directories with that name (in particular "lisp"). 2004-08-22 David Kastrup * style/italian.el ("italian"): Don't overwrite existing local variable settings. * style/ngerman.el ("ngerman"): Don't overwrite existing local variable settings. * style/german.el ("german"): Don't overwrite existing local variable settings. * tex.el (TeX-set-mode-name, TeX-PDF-mode): XEmacs needs two arguments for `local-variable-p'. 2004-08-20 David Kastrup * tex.el (desktop): Save TeX-Omega-mode, too. * Makefile.in (full-release): Source rpm is auctex, not auctex-emacs. * auctex.spec (Provides): Provide auctex as well to satisfy preview-latex. create package emacs nevertheless. * Version 11.52 released. 2004-08-20 David Kastrup * tex.el (AUCTeX-version): move to front and also eval when compiling. Other version info moved, too. (TeX-defun): Macro for putting version info into definition. (plain-tex-mode): Use `TeX-defun'. (ams-tex-mode): Use `TeX-defun'. * tex-info.el (texinfo-mode): Use `TeX-defun' for getting version info into mode doc. * latex.el (latex-mode): Use `TeX-defun' for getting version info into mode doc. * context.el (context-mode): Use `TeX-defun' for getting version info into mode doc. * auctex.spec (BuildRoot): New naming scheme. * RELEASE: Add `DESTDIR' blurb. 2004-08-19 David Kastrup * auctex.spec: Change `tex-site.el' to overwriting config file mode. * tex.el (plain-tex-mode): Move menu initializiation here instead of `plain-TeX-common-initialization'. We don't want "TeX" menus in `ConTeXt-mode' or `AmSTeX-mode'. (plain-TeX-common-initialization): remove `easy-menu-add' here. (TeX-common-menu-entries): Change "Customize" strategy again. (plain-TeX-menu-entries): Move from `plain-TeX-menu'. (plain-TeX-mode-menu): Use `plain-TeX-menu-entries'. (AmSTeX-mode-map): Derive from `TeX-mode-map' not `plain-TeX-mode-map'. (AmSTeX-mode-menu): Define menu for `AmSTeX-mode'. (ams-tex-mode): Add menus in proper order. * tex-info.el (texinfo-mode): Swap order of `easy-menu-add'. * latex.el (LaTeX-common-initialization): Swap order of `easy-menu-add'. * context.el (ConTeXt-mode-common-initialization): Swap order of `easy-menu-add', move `major-mode' init to front. * latex.el (LaTeX-common-initialization): Exchange order of `easy-menu-add' to get better menu layout in XEmacs. 2004-08-19 Reiner Steib * auctex.spec (description): Overhauled. * doc/install.texi: Markup fixes, see "(texinfo)command". * doc/wininstall.texi: Ditto. 2004-08-19 David Kastrup * latex.el (LaTeX-mode-menu): Use `TeX-common-menu-entries'. * tex-info.el (Texinfo-mode-menu): Use `TeX-common-menu-entries'. * tex.el (ams-tex-mode): Add `plain-TeX-mode-menu' here. Doh. * context.el (ConTeXt-mode-menu): Use `TeX-menu-with-help' instead of `TeX-maybe-remove-help'. (ConTeXt-mode-menu): Use `TeX-common-menu-entries'. * tex.el (TeX-customization-menu): Save the customization menu here when generated, so that we have it available in all modes. (TeX-common-menu-entries): The common menu entries for TeX modes. (plain-TeX-mode-menu): Use `TeX-common-menu-entries'. * configure.in: export `localstatedir'. * Makefile.in (localstatedir): import `localstatedir'. 2004-08-19 Ralf Angeli * doc/install.texi (Customizing): tex-site.el should be edited no more. Customize should be used instead. Relevant variables are determined during configuration now. Mention build/installation commands for contributed files. 2004-08-19 Reiner Steib * auctex.spec: Fixes for SuSE. 2004-08-19 David Kastrup * aclocal.m4: `putative-existing-lisp-dir' is not a package directory if `lisp' is not a path component. Normalize whitespace. Remove trailing slash from packagedir. * tex-site.el.in (TeX-macro-global): Don't quote texinputdirs additionally. * aclocal.m4: Really remove trailing slashes/backslashes. Don't expand `lispdir'. (library): Surround `texinputdirs' with quotes. Output it enclosed in parens. (library): Let `autodir' refer unexpanded to `localstatedir'. Add some quoting in patterns. * doc/Makefile.in (DESTDIR): introduce `DESTDIR' into installation targets. * Makefile.in (DESTDIR): introduce `DESTDIR' into installation targets. 2004-08-18 David Kastrup * tex-fold.el (TeX-fold-buffer-type): Don't use `end-of-buffer' as it plays around with the current window point. * Makefile.in (auctexdir, styledir): Use `${...}' for symmetry with aclocal.m4 * aclocal.m4: Use `${...}' instead of `$(...)' everywhere. 2004-08-18 Jan-ke Larsson * aclocal.m4 (EMACS_LISPDIR): Output expanded lispdir 2004-08-18 David Kastrup * configure.in: Shell-quote autodir. * RELEASE: Some minor changes. 2004-08-18 Ralf Angeli * RELEASE: Change version to 11.52. Replace old feature/bug information. * font-latex.el (font-latex-script): Disable raising of characters for older Emacsen. Original patch by Reiner Steib. Bump version and add change log entry. * tex-fold.el (TeX-fold-unfolded-face): Make it look more blueish on displays with 24bit color depth. (TeX-fold-buffer-type): Use either a complemented character alternative to be on the safe side or "\\_>" on Emacsen which support it. 2004-08-17 Reiner Steib * texmathp.el (texmathp-tex-commands-default): Added \label. Various checkdoc-related fixes. 2004-08-17 Ralf Angeli * tex-fold.el (TeX-fold-buffer-type): Use alternative way to determine end of search pattern. Fixes problem with starred macros. Fix compile errors and add further match alternatives. (TeX-fold-item): Recognize starred macros as well. XEmacs does not know `match-string-no-properties'. (TeX-fold-make-overlay): Do not alter `display-string' before `face' is set. (TeX-fold-hide-item): Get only the string part of `display-string'. * tex.el (TeX-fold-menu): Wrap value in `TeX-menu-with-help'. Fixes XEmacs start-up error. * tex-mik.el: Fix typo in comment. * auctex.spec (Version): Change to 11.52. * configure.in: Change AUCTeX version to 11.52. * doc/tex-ref.tex: Change AUCTeX version to 11.52. * doc/auctex.texi: Change AUCTeX version to 11.52. 2004-08-17 David Kastrup * Makefile.in (full-release): Fix a few things. * Version 11.51 released. 2004-08-17 David Kastrup * aclocal.m4: Quote when expanding and remove trailing backslash, too. (library): Don't check for $PWD but for default-directory. 2004-08-16 David Kastrup * doc/wininstall.texi: move --prefix description up, since it might be the only needed option. * doc/tex-ref.tex (section{Font Selection}): Add italic corrections and small-caps entry. * tex.el (info): Add more prefixes to `Info-file-list-for-emacs'. * tex-jp.el (japanese-TeX-command-list): Comment addition. * RELEASE: Add availability and update release notes. * Makefile.in (RPMROOT): New variable. (tar-ball): Clean up `$(FTPDIR)' and `$(WWWDIR/doc)' before installation. (full-release): New target that does RPM building, signing and other stuff for upload. (patch): gzip the patch. * auctex.spec: Add definition stuff for SuSE. (BuildRoot): Don't specify infodir when it is not used. * bib-cite.el: Fix refTeX link. 2004-08-16 Jan-ke Larsson * aclocal.m4 (EMACS_PROG_EMACS): Add "${prefix}/bin" for Windows users * aclocal.m4 (EMACS_LISPDIR): Remove trailing slash from lispdir_expanded elisp string 2004-08-16 Ralf Angeli * aclocal.m4 (VALID_BUILD_DIR): New function. * configure.in: Use it. Change AUCTeX version to 11.51. * doc/tex-ref.tex: Change AUCTeX version to 11.51. * doc/auctex.texi: Change AUCTeX version to 11.51. * auctex.spec (Version): Change to 11.51. * Makefile.in (distclean): Get rid of autom4te.cache. 2004-08-15 David Kastrup * tex-info.el: Change Copyright notice to FSF * tex-mik.el: Change Copyright notice to FSF * tex.el: Change Copyright notice to FSF * font-latex.el: Change Copyright notice to FSF * multi-prompt.el: Change Copyright notice to FSF * tex-buf.el: Change Copyright notice to FSF * tex-site.el.in: Change Copyright notice to FSF * style/scrartcl.el: Change Copyright notice to FSF * style/scrbook.el: Change Copyright notice to FSF * style/scrlttr2.el: Change Copyright notice to FSF * style/scrreprt.el: Change Copyright notice to FSF * latex.el: Change Copyright notice to FSF * tex-info.el: Change Copyright notice to FSF * tex-mik.el: Change Copyright notice to FSF * tex.el: Change Copyright notice to FSF * bib-cite.el: Change Copyright notice and URLs. 2004-08-15 Dan Nicolaescu * latex.el (LaTeX-common-initialization): Don't set `selective-display'. 2004-08-15 David Kastrup * doc/tex-ref.tex: Add Omega entry, rearrange. * tex.el (TeX-print-command): Use `%(o?)'. (TeX-command, TeX-Omega-command, LaTeX-command) (LaTeX-Omega-command, ConTeXt-engine, ConTeXt-Omega-engine): New customization strings to implement various expanders. (TeX-command-list): Use them. (LaTeX-command-style): Same here. (TeX-printer-list, TeX-view-style, TeX-output-view-style): Use `%(o?)'. (TeX-expand-list): New entries. (TeX-PDF-mode): Don't switch on in Omega mode. (TeX-Omega-mode): New minor mode. (tex-omega-mode): alias for it. (TeX-mode-map): Keybinding for it. (TeX-mode-specific-command-menu-entries): Add quick viewer entry. (TeX-mode-specific-command-menu-entries): Add Omega toggle and inactivate PDF when Omega is on. * context.el (ConTeXt-expand-options): New function for generating `texexec' options. 2004-08-15 Ralf Angeli * tex.el (TeX-fold-menu): New variable. (plain-TeX-mode-menu): Use it. * context.el (ConTeXt-mode-menu): Use `TeX-fold-menu'. * latex.el (LaTeX-mode-menu): Use `TeX-fold-menu'. * tex-info.el: Change every occurence of "TeXinfo" to "Texinfo". (Texinfo-environment-list): Add some missing environments. (Texinfo-find-env-end, Texinfo-find-env-start): New functions. (Texinfo-mode-menu): Use `TeX-fold-menu'. * tex-fold.el (TeX-fold-buffer-type): Support folding of environments in texinfo-mode. (TeX-fold-item): Ditto. (TeX-fold-hide-item): Display an error string if the macro argument cannot be found. 2004-08-14 David Kastrup * tex.el (TeX-command-list): rename `%(execmode)' to `%(execopts)' since it has gotten quite fatter. (TeX-expand-list): Implement `TeX-PDF-mode', `TeX-interactive-mode', `TeX-source-specials-mode' for ConTeXt and pass on `ConTeXt-current-interface'. 2004-08-14 Ralf Angeli * tex-mik.el: Change `TeX-source-specials-viewer-flags' to `TeX-source-specials-view-position-flags' as the latter is now used in tex.el. Set `TeX-source-specials-view-editor-flags'. * tex-fptex.el: Ditto. 2004-08-13 Ralf Angeli * doc/auctex.texi (top): We want the introduction to appear in HTML output as well. 2004-08-13 David Kastrup * Version 11.50 released. 2004-08-13 Jan-ke Larsson * aclocal.m4: Add another alternative for lispdir 2004-08-13 David Kastrup * auctex.spec (Source0): Change source URL. * Makefile.in (EXTRAFILES): Add RELEASE and auctex.spec. (tar-ball): Don't create CHANGES-$(TAG), just CHANGES (as it is always a longer history). But create RELEASE-$(TAG) instead: that's release-specific. 2004-08-13 David Kastrup * doc/wininstall.texi: Changes to --prefix and --with-auto-dir, partly by Christian Schlauer. Add a few words of my own after suggestions. * doc/changes.texi, style/units.el, style/nicefrac.el, Makefile.in: Add contributed styles for units.sty and nicefrac.sty from Christian Schlauer. 2004-08-13 Ralf Angeli * tex-fold.el (TeX-fold-unspec-use-name): New variable. (TeX-fold-item): Use it. * RELEASE: Add warning about `TeX-command-list'. * doc/auctex.texi (Commands): Add "be". (Folding): Document `TeX-fold-unspec-use-name'. 2004-08-13 David Kastrup * Makefile.in (tar-ball): copy only one auctex, add pdf manual and reference card. * doc/Makefile.in (dist): Add tex-ref, and both pdf and ps (tex-ref.ps, auctex.ps): Use -Ppdf option for better quality. * auctex.spec (BuildRoot): Add CHANGES. * Makefile.in (release-commit): There are no Version: strings anymore, don't replace them. * tex-fptex.el: customize Queue and Print commands appropriately. * tex-mik.el: customize Queue and Print commands appropriately. * tex.el (TeX-expand-list): Call TeX-printer-query differently. (TeX-command-menu-print, TeX-command-menu-printer-entry) (TeX-command-menu-entry): Implement stuff differently, add "Other" menu entry. * tex-buf.el (TeX-printer-query): Change arguments here. Reorganize, too. * doc/auctex.texi (Commands): Fix a warning. * tex-info.el (TeXinfo-mode-menu): Other quoting. (texinfo-mode): Set `TeX-mode-p', `TeX-base-mode-name', call `TeX-set-mode-name'. * context.el (ConTeXt-mode-menu): Add the environments back to folding. * doc/auctex.texi, doc/faq.texi, doc/install.texi, doc/intro.texi, doc/todo.texi: various changes and smaller typos corrected. * doc/macros.texi fix problems with PDF links and indexing. * configure.in: Check for pdftex, dvips, texi2html, texi2dvi, texi2pdf. * doc/Makefile.in (TEXI2HTML, TEXI2DVI, TEXI2PDF): new variables entered by configure. (auctex.dvi): Use texi2dvi. (auctex.pdf): New target. (clean): Remove PDF files. 2004-08-12 David Kastrup * tex-jp.el (japanese-TeX-command-list): Fixed this to new style. (LaTeX-command-style): Same here. Hey, this should even make preview-latex work mostly with Japanese files and PDFTeX. 2004-08-12 Ralf Angeli * tex-buf.el (TeX-view-extension): Remove. (TeX-view-output-file): Use the function `TeX-output-extension' instead of `TeX-view-extension'. (TeX-run-set-command): Setting `TeX-view-extension' not necessary anymore. * tex.el (TeX-view-extension): Remove. 2004-08-11 David Kastrup * doc/wininstall.texi: explain about tex-mik.el and tex-fptex.el * tex-fptex.el: require tex-site. Only set `TeX-lisp-directory' if it has not been customized. Construct `TeX-command-list' from its default value. * tex-mik.el: same here. * tex.el (TeX-mode-specific-command-menu): Tiny optimization. (TeX-mode-specific-command-menu-entries): Make it legal for `TeX-command-mode-menu-entry' to return nil for indicating no menu entry at all (so that entries like "Print" or "Queue" may be dynamically removed). 2004-08-11 Reiner Steib * doc/auctex.texi (Commands): Adjust references. (Viewing): Make source specials a subsection. Adjust references. * tex.el (TeX-source-specials-mode): Remove bogus :link. Refer to viewing node of the manual. * doc/changes.texi: Added references. * doc/todo.texi (Wishlist): Markup fix. 2004-08-11 Ralf Angeli * doc/auctex.texi (Viewing): Add some information about forward and inverse search. * tex-mik.el: Synchronize `TeX-command-list' with tex.el. Use gsview32 in `TeX-output-view-style'. * tex-fptex.el: Synchronize `TeX-command-list' with tex.el. 2004-08-11 David Kastrup * doc/tex-ref.tex: Move papersize stuff to the front. Fiddle somewhat with the sizes, too. * auctex.spec (Version): Change version, web sites, some build stuff (this is not yet finished). * auc-old.el: remove. * doc/Makefile.in (TEXIFILES): refer to auctex.texi instead of auc-tex.texi. Change all dependent stuff, too. * Makefile.in (DOCFILES): refer to doc/auctex.texi instead of doc/auc-tex.texi * doc/auc-tex.texi: renamed into doc/auctex.texi. * doc/auc-tex.texi (Commands): Some rewording. * doc/todo.texi (Wishlist): Some rearrangements and additions. 2004-08-10 David Kastrup * latex.el (LaTeX-math-default): Reorder and complete Greek letters, use Babel transcription conventions for them. * doc/tex-ref.tex: Add \sl definition. (section{Miscellaneous}): Use \string~ for tilde. (section{Greek Letters}): Reorder and complete Greek letters. * tex.el (TeX-PDF-mode): Set `TeX-output-extension' too. (ams-tex-mode): Move `TeX-set-mode-name' after running hooks. * tex-ref.tex: merge math-ref.tex, update a few things, format stuff. * math-ref.tex: removed. * doc/Makefile.in (all): Remove math-ref.tex * Makefile.in (DOCFILES): Remove math-ref.tex 2004-08-10 Reiner Steib * RELEASE: Add `volunteers welcome'. * doc/auc-tex.texi (Completion): TeX-insert-macro-default-style. * tex.el (TeX-source-specials-mode): Add manual link. * doc/auc-tex.texi (Commands): Say how to enable TeX-source-specials-mode permanently. (Viewing): Describe TeX-view. 2004-08-10 David Kastrup * tex.el (TeX-maybe-remove-help): convert Emacs' :visible into XEmacs' :included. * latex.el (LaTeX-mode-menu): Change bug submit menu entry. * context.el (ConTeXt-mode-menu): Same. * tex.el (plain-TeX-mode-menu): Same. * tex-info.el (TeXinfo-mode-menu): Same. * latex.el (LaTeX-mode-menu): A few changed help strings and other small fry. * context.el (ConTeXt-mode-menu): Rework menu, reorganize it, add help strings. 2004-08-10 Ralf Angeli * tex-info.el (TeXinfo-mode-menu): Capitalize menu entries. * context.el (ConTeXt-project-structure-menu-name) (ConTeXt-section-block-menu-name, ConTeXt-mode-menu): Capitalize menu entries. * tex-info.el (TeXinfo-mode-menu): Add help strings. * tex.el (TeX-command-list): Set a default value which will not lead to an inactive menu entry. (plain-TeX-mode-menu): Add some help strings. Capitalize menu entries. (tex-source-specials-mode): New alias for `TeX-source-specials-mode'. * latex.el (LaTeX-mode-menu): Rearrange and insert help strings. Capitalize menu entries. * tex-fold.el (tex-fold-mode): New alias for `TeX-fold-mode' used in tex.el. (TeX-fold-buffer-type): Support folding of environments in ConTeXt mode as well. (TeX-fold-item): Ditto. * doc/auc-tex.texi (Commands): Change `TeX-source-specials' to `TeX-source-specials-mode' where appropriate. * RELEASE: Include contributors. (Hopefully I got everybody.) 2004-08-10 David Kastrup * tex.el (TeX-set-mode-name, TeX-source-specials-map) (TeX-source-specials-mode, TeX-source-specials-expand-options) (TeX-source-specials-view-expand-options): Rename `TeX-source-specials' to `TeX-source-specials-mode'. (TeX-PDF-mode): Make first arg optional (actually, not sure this is a good idea). (tex-pdf-mode): alias for `TeX-PDF-mode'. (tex-interactive-mode): alias for `TeX-interactive-mode' (tex-fold-mode): add autoload. (TeX-mode-map, TeX-mode-specific-command-menu-entries): rename `TeX-source-specials' to `TeX-source-specials-mode'. (TeX-command-list): Add help strings. (TeX-command-menu-entry): Splice help into command entries. (TeX-mode-specific-command-menu-entries): Remove help in XEmacs. (TeX-mode-specific-command-list): Save unnecessary copies and conses. 2004-08-09 David Kastrup * tex.el (TeX-set-mode-name): Add LOCAL argument. (TeX-source-specials, TeX-mode-set, TeX-global-PDF-mode) (TeX-PDF-mode, TeX-interactive-mode): Use it. (plain-tex-mode): Move `TeX-set-mode-name' to after running the hooks. * latex.el (latex-mode): Move setting the mode name to after running the hooks. * tex.el (TeX-maybe-remove-help): new function (noop on Emacs). (TeX-menu-with-help): new macro (noop on Emacs). (TeX-mode-specific-command-menu-entries): Add a lot of help strings. (plain-TeX-mode-menu): Same here. * latex.el (LaTeX-mode-menu): `:visible' is not known in XEmacs, and I don't want to clutter the menu with "Convert 209 to 2e" when not necessary. * RELEASE (Requirements): some additions. Incorporate some suggestions from Ralf. * tex.el (TeX-set-mode-name): Actually use `reset' (patch by Ralf Angeli). * latex.el (LaTeX-common-initialization): There is no "LaTeX2e" command anymore, so don't set it. Don't do anything on "DVIoutput". doc fixes. * doc/auc-tex.texi (Commands): Explain `TeX-command-buffer', `TeX-pin-region', `TeX-PDF-mode', `TeX-interactive-mode', `TeX-source-specials'. 2004-08-09 Berend de Boer * context.el (ConTeXt-current-environment): now properly skips nested environments instead of always returning the last environment just above the cursor. 2004-08-08 David Kastrup * tex-buf.el (TeX-run-set-command): Initialize `TeX-output-extension' based on `TeX-PDF-mode'. * tex.el (TeX-command-output-list): Don't look at pdf* commands. Don't have default mode "dvi". (VirTeX-common-initialization): Don't add to desktop-locals-to-save locally: that's broken. (desktop): Add stuff into appropriate variables for proper desktop save/restore. (TeX-mode-specific-command-menu-entries, plain-TeX-mode-menu): Reorganize menus. Add font commands into plain TeX menu. * tex-info.el (TeXinfo-mode-menu): Reorganize menu. * latex.el (LaTeX-mode-menu): Reorganize menu. * context.el (ConTeXt-mode-menu): Reorganize menu. 2004-08-07 David Kastrup * tex.el (TeX-base-mode-name): Make buffer-local (Doh). (TeX-set-mode-name): Doc fix. * doc/todo.texi (Mid-term Goals): Use @previewlatex macro. (Mid-term Goals): New entries. Should some of them be moved to wishlist? Remove a few fixed bugs. * doc/macros.texi: move @ConTeXt macro out of info-only section. Typeset @previewlatex differently. 2004-08-06 Reiner Steib * font-latex.el: Use "gnu.org" instead of "nongnu.org". * bib-cite.el: Ditto. Use "AUCTeX", not "auc-tex". * lpath.el: Use "AUCTeX". 2004-08-05 Reiner Steib * doc/macros.texi: New @ConTeXt macro. * doc/auc-tex.texi, doc/changes.texi, doc/history.texi, doc/todo.texi, doc/wininstall.texi: Use macros @AUCTeX, @ConTeXt, @LaTeX everywhere. * doc/auc-tex.texi (European): Mention Emacs 21. Fixed typo. * doc/todo.texi: Help for documentation wanted. * doc/changes.texi: Some additions: captcont and subfigure, `LaTeX-includegraphics-options-alist', `LaTeX-default-position', kpathsea based completion, `TeX-insert-macro-default-style'. Refer to installation nodes (autoconf installation). * tex.el (TeX-submit-bug-report): Added more explanations. * latex.el (LaTeX-style-list): Improve doc-string. * font-latex.el (font-latex-script-display): New variable. Make raise of sub-/superscripts customizable. (font-latex-unfontify-region, font-latex-script): Use it. 2004-08-05 Ralf Angeli * RELEASE: Improve sectioning and add some more information. 2004-08-05 David Kastrup * tex-site.el.in: don't require 'tex-mik on Windows, let the user load it instead of tex-site if he wants to. * tex.el (TeX-command-list): Add `%(PDFout)', `%(mode)' and `%(execmode)'. Remove `TeX Interactive', `LaTeX Interactive' and `ConTeXt Interactive'. (LaTeX-command-style): Don't provide a default for a `LaTeX-version' of "2": people can customize this if necessary themselves, we would not know a sane default, anyway. (TeX-expand-list): Support `TeX-DVI-via-PDFTeX', `%(PDFout)', `%(mode)' and `%(execmode)'. (TeX-set-mode-name): Add `reset' flag to indicate that the next step should again be TeXing. Add "I" flag. (TeX-source-specials): Call `TeX-set-mode-name' with `reset' flag. (TeX-mode-set): Variable setter for TeX modes. (TeX-PDF-mode): Make the default value a global mode. (TeX-global-PDF-mode): Toggle function to change default `TeX-PDF-mode'. (TeX-PDF-mode): Remove local binding of `TeX-PDF-mode' in case of conflicts. Call `TeX-set-mode-name' with `reset' flag. (TeX-DVI-via-PDFTeX): New customizable variable. (TeX-interactive-mode): New mode. (TeX-mode-map): Add binding for `TeX-interactive-mode'. (TeX-mode-specific-command-menu-entries): Add menu entry for it. * tex-buf.el (TeX-command-expand): Document `%%'. (TeX-run-TeX): If `TeX-interactive-mode' is set, run `TeX-run-interactive' instead. 2004-08-04 Reiner Steib * font-latex.el (font-latex-fontify-script): Default to nil in XEmacs. 2004-08-04 David Kastrup * tex.el (TeX-base-mode-name, TeX-set-mode-name): Move to front, add catering for global mode switches. (TeX-source-specials, global-TeX-PDF-mode): Use this. * latex.el (LaTeX-common-initialization): Add style hook for "ifpdf". 2004-08-04 Ralf Angeli * font-latex.el (font-latex-unfontify-region): New function. (font-latex-setup): Use it. 2004-08-04 David Kastrup * tex-fptex.el (TeX-command-list): Remove PDFTeX calls. * tex-mik.el (TeX-command-list): Remove PDFTeX calls. * tex.el (TeX-command-list): Use %(PDF) where necessary, drop PDFTeX entries. (LaTeX-command-style): Add %(PDF) here. (TeX-expand-list): Expand %(PDF). (TeX-mode-p): Moved. (TeX-PDF-mode, global-TeX-PDF-mode): New minor modes. (TeX-PDF-mode-on, TeX-PDF-mode-off): Shortcuts for calling. (TeX-PDF-mode-parsed): New variable. (TeX-set-mode-name): Simplify. (TeX-mode-map): Add C-c C-t C-p for TeX-PDF-mode. (TeX-mode-specific-command-menu-entries): Add menu entry for it. * latex.el (LaTeX-math-mode): Refresh modeline after generating it, not before. (LaTeX-common-initialization): Add style-hooks fo pdftex, dvips and others. * tex.el (TeX-view-style, TeX-output-view-style): Place dvi file name last. 2004-08-03 Ralf Angeli * tex.el (TeX-source-specials): New customization group. (TeX-source-specials, TeX-source-specials-tex-flags) (TeX-source-specials-places) (TeX-source-specials-view-start-server): Use it (TeX-source-specials-view-position-flags) (TeX-source-specials-view-gnuclient-flags) (TeX-source-specials-view-emacsclient-flags): Change defvar to defcustom. (TeX-source-specials-view-editor-flags): New customize option. (TeX-source-specials-view-expand-client): Return not only client but options as well. (TeX-source-specials-view-expand-options): Use `TeX-source-specials-view-editor-flags'. 2004-08-03 Reiner Steib * tex.el (TeX-source-specials-places): Change comment. 2004-08-03 David Kastrup * latex.el (LaTeX-mode-menu): Add "Close Environment" * tex.el (TeX-source-specials-view-gnuserv-p): replaces `TeX-source-specials-view-guess-server'. (TeX-source-specials-view-expand-client) (TeX-source-specials-view-expand-options): Use this. 2004-08-03 Reiner Steib * style/alphanum.el, style/doc.el, style/jura.el, style/ltx-base.el, style/ltxdoc.el: Added coding cookies. 2004-08-03 David Kastrup * RELEASE: Change Source Special description and a few other things. 2004-08-03 Ralf Angeli * tex.el (TeX-expand-list): New %cS expander for `TeX-source-specials-view-expand-client'. (TeX-source-specials-view-start-server): New customize option. (TeX-source-specials-view-start-server-asked): New variable. (TeX-source-specials-view-position-flags): New name. Formerly known as `TeX-source-specials-viewer-flags'. (TeX-source-specials-view-gnuclient-flags): New variable. (TeX-source-specials-view-emacsclient-flags): New variable. (TeX-source-specials-view-expand-client): New function. (TeX-source-specials-view-expand-options): Expand options for inverse search as well. Correct return value. Use `TeX-source-specials-view-guess-server'. (TeX-forward-comment-skip): Only consider consecutive comment characters when comparing the comment prefix. (TeX-source-specials-view-guess-server): New function. * doc/changes.texi: Avoid email addresses. * doc/tex-ref.tex: Update to 11.50. 2004-08-02 Ralf Angeli * doc/changes.texi: Advertise support for toggling source specials. Mention macro completion in docTeX mode and fix for filling in XEmacs with preview-latex and activated previews. 2004-08-01 David Kastrup * doc/wininstall.texi: Remove info about manual installation. Explain about preferred path syntax. * doc/install.texi: Move info dor INSTALL.Windows. 2004-08-01 Ralf Angeli * tex-fptex.el: Do not overwrite customized variables. * tex-mik.el: Ditto. * Makefile.in (STYLESRC): Add new style files. * aclocal.m4: Synchronize with preview-latex. * tex-fold.el (TeX-fold-macro-spec-list): Add references to default. (TeX-fold-buffer-type): Additionally pass display string specification and type to `TeX-fold-make-overlay' (TeX-fold-item): Ditto. (TeX-fold-make-overlay): Accept display string specification and type as arguments and set them accordingly in the overlay. Do not signal overfullness if the dispay string contains a linebreak. (TeX-fold-macro-nth-arg): Make `macro-start' mandatory so that macro boundaries may be determined even if point is not inside of a macro. (TeX-fold-hide-item): Recompute display string on closure if display string specification is an integer. * style/alphanum.el: Add header and reformat. * style/jura.el: Add header. * style/doc.el: New file. Contributed by Frank Kster . (TeX-add-style-hook): Remove bogus `LaTeX-add-index-entries' call. * style/ltx-base.el: New file. Contributed by Frank Kster . * style/ltxdoc.el: Ditto. 2004-07-31 Ralf Angeli * font-latex.el: Autoload `texmathp'. (font-latex-keywords-2): Add `font-latex-match-script'. (font-latex-script-keywords): Remove. (font-latex-fontify-script): Remove :set function. (font-latex-match-script): New function. * tex-mik.el (TeX-view-style): Remove unconditional source specials option for yap. (TeX-output-view-style): Set it. (TeX-source-specials-viewer-flags): Ditto. * tex-fptex.el (TeX-view-style): Adapt options to WinDVI documentation. (TeX-output-view-style): Set it. (TeX-source-specials-viewer-flags): Ditto. 2004-07-30 Ralf Angeli * Makefile.in (tar-ball): Remove warning which often confuses users. * aclocal.m4 (EMACS_MAJOR_VERSION): New test and variable. * configure.in: Fix AUCTeX version. * tex-site.el.in: At least (X)Emacs 21 is required. * tex.el: Ditto. * doc/Makefile.in (install): Remove warning which often confuses users. * doc/auc-tex.texi: Fix version numbers. (Changes): New name. Formerly known as "History". (ToDo): New heading. * doc/changes.texi: Add heading for `rawfile'. Change `section' to `heading'. * doc/faq.texi (Frequently Asked Questions About AUCTeX): At least (X)Emacs 21 is needed. * doc/install.texi (Prerequisites): Ditto. 2004-07-29 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list): Extend default. Add specification for argument number. (TeX-fold-env-spec-list): Ditto. (TeX-fold-folded-face): Renamed from `TeX-fold-display-string-face'. (TeX-fold-unfolded-face): New face and variable. (TeX-fold-buffer-type): Move through buffer from bottom to top in a single run in order to allow easier prioritization of nested overlays. (TeX-fold-item): Compute display string via `TeX-fold-macr-nth-arg'. (TeX-fold-make-overlay): Consider the length of the display string as well when judging if a line is overfull. Let priority be computed by `TeX-fold-macr-nth-arg'. Do not call `TeX-fold-hide-item'. (TeX-fold-macro-nth-arg): New function. (TeX-fold-priority-step): New variable. (TeX-fold-prioritize): New function. (TeX-fold-hide-item): Set mouse-face. (TeX-fold-show-item): Ditto. Do not set face twice. (TeX-fold-post-command): Recognize mouse clicks as well. * tex.el (TeX-find-macro-boundaries): New function. (TeX-find-macro-end-helper): Find macro arguments with a preceding linebreak as well. * doc/auc-tex.texi (Folding): Document new functionality. * latex.el (LaTeX-fill-region): Improve performance by avoiding unnecessary calls to `LaTeX-forward-paragraph'. * font-latex.el (font-latex-fontify-script): Doc fix. 2004-07-23 Ralf Angeli * tex-fold.el (TeX-fold-make-overlay): New function. Remove superfluous `let'. (TeX-fold-buffer-type, TeX-fold-item): Use it. (TeX-fold-mode): Call `TeX-fold-clearout-buffer' after clearing `post-command-hook'. 2004-07-22 Ralf Angeli * latex.el (LaTeX-indent-line): Temporarily make invisible overlays visible in XEmacs. * tex.el (TeX-comment-region): Use a real function instead of an `fset' and temporarily change `comment-start' for certain XEmacs releases. (TeX-comment-or-uncomment-region): Use it. (TeX-comment-or-uncomment-paragraph): Ditto. * doc/changes.texi: Remove warning about TeX-fold not working correctly on XEmacs. 2004-07-21 Ralf Angeli * tex-fold.el (TeX-fold-display-string-face): Remove `min-colors' spec as XEmacs does not like them. (TeX-fold-hide-item): Set face on the glyph and not on the overlay/extent in XEmacs. (TeX-fold-post-command): Do not check detached extents in XEmacs. * context.el (ConTeXt-mode-menu): Check if variable is defined. Necessary for XEmacs compatibility. (ConTeXt-menu-update): Fix creation of environment menus. * latex.el (LaTeX-mode-menu): Check if variable is defined. Necessary for XEmacs compatibility. * tex-info.el (TeXinfo-mode-menu): Ditto. 2004-07-20 Reiner Steib * font-latex.el (font-latex-set-title-face): New function. (font-latex-title-fontity): Use it to make customization work during a session. (font-latex-title-*-face): Use it to simplify the initialization. 2004-07-20 Ralf Angeli * tex-fold.el (TeX-fold-macro-spec-list): New name for `TeX-fold-spec-list'. More unobtrusive default. (TeX-fold-env-spec-list) (TeX-fold-unspec-macro-display-string) (TeX-fold-unspec-env-display-string): New variables. (TeX-fold-keymap): New key bindings which are more mnemonic and orient at preview-latex's bindings instead of outline.el. (TeX-fold-buffer): Transfer contents to `TeX-fold-buffer-type' which can be used for both macros and environments. (TeX-fold-buffer-type): New function. (TeX-fold-macro): Transfer contents to `TeX-fold-item' which can be used for both macros and environments. (TeX-fold-env): New function. (TeX-fold-item): New function. Prioritize overlays. (TeX-fold-clearout-item): New name for `TeX-fold-clearout-macro'. (TeX-fold-hide-item, TeX-fold-show-item): Adapt doc string. * latex.el (LaTeX-hide-environment): Remove. Functionality is now provided by TeX-fold. (LaTeX-show-environment): Ditto. (LaTeX-mode-map): Remove key bindings for `LaTeX-hide-environment' and `LaTeX-show-environment'. (LaTeX-mode-menu): Adapt key bindings for folding. Remove menu entries for `LaTeX-hide-environment' and `LaTeX-show-environment'. * context.el (ConTeXt-mode-menu): Adapt key bindings for folding. * tex-info.el (TeXinfo-mode-menu): Ditto. * doc/auc-tex.texi (Folding): Document new and changed functions and variables related to folding environments (new) and macros. * doc/changes.texi: Advertise support for folding environments. 2004-07-18 Ralf Angeli * tex.el (TeX-source-specials): Do not set a lighter in `minor-mode-alist' but use `TeX-set-mode-name' instead. (TeX-base-mode-name): New variable. (TeX-set-mode-name): New function. (plain-tex-mode): Set `TeX-base-mode-name' instead of `mode-name' and use `TeX-set-mode-name'. (ams-tex-mode): Ditto. * context-en.el (context-en-mode): Ditto. * context-nl.el (context-nl-mode): Ditto. * latex.el: Do not add a lighter for `LaTeX-math-mode' in `minor-mode-alist'. (LaTeX-math-mode): Use `TeX-set-mode-name'. (latex-mode): Set `TeX-base-mode-name' instead of `mode-name' and use `TeX-set-mode-name'. * tex-fold.el (TeX-fold-mode): Do not set a lighter in `minor-mode-alist' but use `TeX-set-mode-name' instead. 2004-07-17 Ralf Angeli * tex.el (TeX-find-macro-start): Fix handling of nested macros. (TeX-find-macro-start-helper): New function. (TeX-find-macro-end-helper): New function. * tex-info.el (TeXinfo-mode-menu): Fix extension of customize menu. * latex.el (LaTeX-env-figure): Prevent superfluous blank lines and give RefTeX a chance to generate a label in environments with a bottom caption. Patch by Christian Schlauer . (LaTeX-style-list): Add entry for beamer class. * context.el (ConTeXt-mode-menu): Add "Show/Hide" submenu. * doc/auc-tex.texi (Folding): Document key binding for `TeX-fold-mode'. 2004-07-14 Ralf Angeli * tex-info.el (TeXinfo-mode-map): Inherit from `TeX-mode-map'. (texinfo-mode): Enable TeX-master functionality. * tex.el (TeX-one-master): Include .texi files. (TeX-add-local-master): Use "@c " as comment prefix in Texinfo mode. * tex-fold.el (TeX-fold): Move customization group from `LaTeX' to `AUCTeX'. * doc/changes.texi: Advertise folding functionality. 2004-07-12 Ralf Angeli * tex-fold.el (TeX-fold-display-string-face): Cater for display devices with few colors. (TeX-fold-keymap): Add key bindings for showing and hiding individual macros. (TeX-fold-macro): New function. (TeX-fold-clearout-buffer): New name for `TeX-fold-remove-all-overlays'. (TeX-fold-clearout-macro): New function. (TeX-fold-remove-overlays): New function. * latex.el (LaTeX-mode-menu): Add entries for showing and hiding individual macros. * tex-info.el (TeXinfo-mode-menu): Update and rearrange. Add entries for "Show/Hide" functionality. * doc/auc-tex.texi (Show/Hide): New section. (Folding): New subsection. (Outline): Moved under "Show/Hide". 2004-07-10 Ralf Angeli * tex.el: Do not require tex-fold.el. Autoload `TeX-fold-mode'. (TeX-mode-map): Add keybinding for `TeX-fold-mode'. * tex-fold.el: Do not add keybinding for `TeX-fold-mode' with `TeX-mode-hook'. (TeX-fold-post-command): Do not hijack other overlays. 2004-07-09 Ralf Angeli * tex-fold.el: New file. * Makefile.in (AUCSRC): Add tex-fold.el. (AUCELC): Add tex-fold.elc. * latex.el (LaTeX-find-macro-start): Move to tex.el and rename to `TeX-find-macro-start'. (LaTeX-find-macro-end): Analogous. (LaTeX-forward-paragraph): Change call to `LaTeX-find-macro-*' to `TeX-find-macro-*'. (LaTeX-backward-paragraph): Ditto. (LaTeX-mode-menu): Add submenu "Show/Hide". Add entries for relevant functions in tex-fold.el and add the show/hide environment entries which were in "Formatting and Marking" before. * tex.el: Require tex-fold.el. (TeX-find-macro-start): New function. Formerly known as `LaTeX-find-macro-start' in latex.el. (TeX-find-macro-end): New function. Formerly known as `LaTeX-find-macro-end' in latex.el. 2004-07-08 Ralf Angeli * texmathp.el (texmathp-match-environment): Let environments be added more than once. * font-latex.el (font-latex-superscript-face) (font-latex-subscript-face): New faces. (font-latex-script-keywords): New constant. (font-latex-fontify-script): New customize option. (font-latex-script): New function. 2004-07-02 Ralf Angeli * tex-buf.el (TeX-view): Inform the user if the output file is not present. * tex.el (TeX-forward-comment-skip): Fix `count' functionality. Stop as well at places where the prefix of commented lines changes. Simplify and improve efficiency by saving current prefix before while-loop starts. Adapt documentation string. (TeX-backward-comment-skip): Adapt documentation string. 2004-06-24 Ralf Angeli * context.el (ConTeXt-environment-menu-name): Make name distinct from `LaTeX-environment-menu-name'. (ConTeXt-environment-modify-menu-name): Analogous. 2004-06-17 Reiner Steib * Makefile.in (tar-ball): Change permissions of auctex-$(TAG). * tex.el (TeX-source-specials-expand-view-options): New function. (TeX-expand-list): Added new specifier (%dS) for `TeX-source-specials-expand-view-options'. (TeX-view-style, TeX-output-view-style): Add %dS for source specials in all xdvi calls. (TeX-expand-list): Remove useless lambda. * tex-buf.el (TeX-output-style-check): Remove addition of source specials. 2004-06-17 Ralf Angeli * tex.el (TeX-one-master): Add "dtx" extension. (TeX-add-local-master): Insert \iffalse...\fi in docTeX mode. (TeX-file-extensions): Add "dtx" extension. (docTeX-default-extension): New variable. * latex.el (LaTeX-find-macro-start): Use next whitespace if the end of an opened macro cannot be determined. (doctex-mode): Set `TeX-default-extension' to `docTeX-default-extension'. * doc/changes.texi: Add information about `TeX-newline-function'. 2004-06-16 Ralf Angeli * style/mdwlist.el (TeX-add-style-hook): Change variables only locally. * latex.el (LaTeX-default-verb-delimiter): New variable. (TeX-arg-verb): Use it. 2004-06-15 Ralf Angeli * style/mdwlist.el: New header. (TeX-add-style-hook): Add support for \makecompactlist, \suspend, and \resume. 2004-06-14 David Kastrup * tex-buf.el (TeX-pin-region): Don't balk at unpinning if there is no pinned region. * tex.el (TeX-mode-specific-command-menu-entries): Be more meticulous about when the pin-region menu entry can be used. 2004-06-13 David Kastrup * tex.el (TeX-pin-region): Add autoload form. (TeX-mode-map): Add keybinding for TeX-pin-region. (TeX-mode-specific-command-menu-entries): Add menu entry for it. * tex-buf.el (TeX-command-master, TeX-command-region) (TeX-command-buffer): Add `override-confirm' prefix argument. (TeX-pin-region): New function to replace previous interactive prefix for TeX-command-region. Change TeX-region semantics accordingly. 2004-06-13 Ralf Angeli * doc/faq.texi: New file. * doc/auc-tex.texi (Filling): Add information about activating `auto-fill-mode'. (FAQ): Add node. * doc/todo.texi (Bugs): Add bug when fontifying unmatched math toggles in verbatim-like environments. * doc/.cvsignore: Add `FAQ'. * doc/Makefile.in (TEXIFILES): Add `faq.texi'. (FAQ): New target. (dist): Add `FAQ'. (clean): Ditto. * .cvsignore: Add `FAQ'. * Makefile.in (DOCFILES): Add `doc/faq.texi'. (EXTRAFILES): Remove `PROBLEMS'. (tar-ball): Add `FAQ'. * autogen.sh: Activate creation of `FAQ' from `doc/faq.texi'. 2004-06-11 Ralf Angeli * tex-fptex.el (TeX-command-list): Use correct expander for "View PDF". * latex.el (LaTeX-fill-region-as-para-do): Fix removal of trailing whitespace. (LaTeX-fill-move-to-break-point): Prevent infinite loop in commented regions. (LaTeX-fill-newline): Fix compatibility with XEmacs, i.e. use code related to text properties only for Emacs and reintroduce insertion of a potential fill prefix for XEmacs. 2004-06-10 Ralf Angeli * doc/changes.texi: Add some news regarding upcoming release. Try to match former news with actual releases. 2004-06-07 Ralf Angeli * tex.el (TeX-comment-padding-string): New function. * latex.el (LaTeX-newline): Do something sensible if point is at the start of a commented line or inside of one and right at the start of another one in the same line. (LaTeX-insert-environment): Fix insertion of environments if point is inside or right before a commented line. (LaTeX-indent-line): Use `TeX-comment-padding-string'. 2004-06-05 Ralf Angeli * font-latex.el (font-latex-make-title-faces): New function. (font-latex-title-1-face, font-latex-title-2-face) (font-latex-title-3-face): Now generated by `font-latex-make-title-faces' and compatible with XEmacs. (font-latex-title-4-face): Add face specification for XEmacs. 2004-06-04 David Kastrup * tex-buf.el (TeX-view-mouse): New function. * tex.el (TeX-source-specials-map): Outcomment madcap mouse bindings. (minor-mode-map-alist): Remove TeX-source-specials manually, as I can't figure out how to not get it placed there by define-minor-mode. (TeX-split-string): Correct docs. Simplify. (TeX-parse-path): Fix pattern. 2004-06-03 Ralf Angeli * tex.el (TeX-newline): New function. (TeX-mode-map): Use it. * latex.el: Various checkdoc-related fixes. (LaTeX-forward-paragraph): Check for and cope with multi-line paragraph commands not only those with a single line. Check for LaTeX macro at the end of a paragraph command. (LaTeX-backward-paragraph): Check for and cope with multi-line paragraph commands not only those with a single line. (LaTeX-paragraph-command-p): Remove. (LaTeX-find-macro-start): Find macro start even if point is already at the start. * doc/auc-tex.texi (Marking and formatting): Split into `Indenting' and `Filling'. (Indenting): New section. (Filling): New section. * doc/intro.texi: Fix key representations and reference to `fill-paragraph'. 2004-06-02 David Kastrup * tex-buf.el (TeX-format-filter): Don't use split-string which appears to trigger an XEmacs bug. 2004-06-02 Reiner Steib * tex.el (TeX-insert-macro-default-style): Fixed typo in doc-string. 2004-06-01 Reiner Steib * tex.el (TeX-no-braces-modes): Removed. Revert unintened addition from 2004-04-19 commit. (TeX-insert-macro-default-style): New variable. (TeX-parse-arguments): Use it. (TeX-insert-macro): Document dependence on `TeX-insert-macro-default-style' and prefix. Fix typo in comment. 2004-05-29 Ralf Angeli * tex.el (TeX-source-specials-map): Fix key binding for XEmacs. 2004-05-27 Ralf Angeli * aclocal.m4 (TEX_INPUT_DIRS): Quote regexps with square brackets. * tex.el (TeX-newline-function): Rename. Formerly known as `TeX-newline'. (TeX-mode-map): Use new name. * doc/auc-tex.texi (Marking and formatting): Rename `TeX-newline' to `TeX-newline-function'. 2004-05-26 Reiner Steib * style/graphicx.el (LaTeX-arg-includegraphics): Rewrite. Optional macro arguments can be controlled by `LaTeX-includegraphics-options-alist' now. (LaTeX-includegraphics-extensions) (LaTeX-includegraphics-read-file): New functions. (TeX-include-graphics-simple): Removed; use `LaTeX-includegraphics-options-alist' instead. (TeX-string-divide-number-unit, TeX-default-unit-for-image): Moved to `tex.el'. * latex.el (LaTeX-includegraphics-extensions) (LaTeX-includegraphics-options-alist) (LaTeX-includegraphics-strip-extension-flag): New options for `style/graphicx.el'. * tex.el (TeX-kpathsea-path-delimiter): Fix doc-string. (TeX-insert-macro, TeX-parse-arguments): Skip optional macro arguments when called with a prefix. (TeX-string-divide-number-unit, TeX-default-unit-for-image): From `style/graphicx.el'. (TeX-arg-maybe): New function. * latex.el (LaTeX-common-initialization): Added additional arguments for \parbox. 2004-05-26 Ralf Angeli * tex.el (TeX-newline): New name for `TeX-indent-on-newline'. It now holds function definitions and not mere symbols anymore. (TeX-mode-map): Use it. * doc/auc-tex.texi (Marking and formatting): Remove documentation for `TeX-indent-on-newline' and document `TeX-newline'. 2004-05-26 Ralf Angeli * tex.el (TeX-indent-on-newline): New option. (TeX-mode-map): Use it. * doc/auc-tex.texi (Marking and formatting): Document `TeX-indent-on-newline' plus small corrections. 2004-05-25 David Kastrup * tex-buf.el (TeX-command): Add `override-confirm' argument. (TeX-view): New function, without confirmation. * context.el (ConTeXt-mode-map): Inherit keymap instead of copying. * latex.el (LaTeX-mode-map): Inherit keymap instead of copying. * tex.el (TeX-source-specials-map): New variable. (TeX-source-specials): Make a minor mode. Replaces `TeX-toggle-source-specials' and `TeX-source-specials-active-flag'. (TeX-source-specials-expand-options): Adapt to that. (TeX-electric-macro-map): inherit from `minibuffer-local-completion-map' instead of copying. (plain-tex-mode): Help string uses `plain-TeX-mode-map'. (TeX-mode-p): New variable, set in TeX modes. (VirTeX-common-initialization): Set it. (TeX-mode-map): Proper defvar. Add keybindings for `TeX-source-specials' and `TeX-view'. (plain-TeX-mode-map): Inherit instead of copy. (AmSTeX-mode-map): Same here. * doc/auc-tex.texi: Change info dir formatting, adapt copyrights according to the assignment process. 2004-05-25 Ralf Angeli * doc/install.texi (Configure): Remove unused option `--with-texmf-dir'. Document new option `--with-tex-input-dirs'. * doc/wininstall.texi: Ditto. Add information about new option `--with-auto-dir'. * latex.el (LaTeX-backward-paragraph): Revert check-in of 2004-05-24. 2004-05-24 Ralf Angeli * latex.el (LaTeX-backward-paragraph): Recognize if point is at the end of a line when the test for a macro following a paragraph command is carried out. 2004-05-23 Ralf Angeli * font-latex.el (font-latex-doctex-^^A): Add mistakenly deleted space again. 2004-05-21 Reiner Steib * style/graphicx.el (TeX-string-divide-number-unit): Renamed from misspelled `TeX-string-divide-nuber-unit'. Reformat file. Fix some doc-strings and comments. 2004-05-20 Ralf Angeli * aclocal.m4 (TEX_INPUT_DIRS): New help string. Better error handling. 2004-05-19 David Kastrup * aclocal.m4: Comment EMACS_LISP. (EMACS_TEST_LISPDIR): remove both trailing backslash and slash. 2004-05-19 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Prevent infinite loop in lines starting with whitespace. (LaTeX-forward-paragraph): Don't consider paragraph commands followed directly by a TeX macro as part of an adjacent paragraph. (LaTeX-backward-paragraph): Ditto. 2004-05-18 Davide G. M. Salvetti * aclocal.m4 (AUCTEX_AUTO_DIR): Change `autodir' default to `${localstatedir}/auctex' to conform to the GNU Coding Standards. Add `autodir_expanded' as the properly expanded version of `autodir'. Inform the user about the check in progress. * tex-site.el.in (TeX-lisp-directory): Use `@autodir_expanded@'. 2004-05-17 Reiner Steib * aclocal.m4 (AUCTEX_AUTO_DIR): Avoid AS_HELP_STRING for compatibility with autoconf < 2.58. 2004-05-17 Ralf Angeli * aclocal.m4 (TEX_INPUT_DIRS): Use `--expand-braces' instead of `--show-path' in the kpsewhich calls. Use `--expand-path' as a fallback e.g. for MikTeX. Assume that we are dealing with a TDS-compliant TeX system and add "/tex/" and "/bibtex/bst/" subdirectories to the output of the kpsewhich calls accordingly. * latex.el (LaTeX-fill-newline): Don't use code specific to GNU Emacs for XEmacs. Call `newline-and-indent' instead. 2004-05-15 Davide G. M. Salvetti * aclocal.m4 (AUTO_DIR): Code cleaned; renamed to `AUCTEX_AUTO_DIR'. * configure.in: Change `AUTO_DIR' to `AUCTEX_AUTO_DIR'. 2004-05-14 Davide G. M. Salvetti * style/italian.el (LaTeX-italian-open-quote) (LaTeX-italian-close-quote): Use standard babel syntax rather than latin1 characters. Patch by David Kastrup . 2004-05-14 Ralf Angeli * latex.el (LaTeX-indent-calculate-last): Ignore commented lines when called in a non-comment line. * style/scrbase.el (TeX-add-style-hook): Fontify \minisec like a sectioning command. 2004-05-14 Reiner Steib * tex.el (TeX-auto-generate): Bind `enable-local-eval'. 2004-05-13 Davide G. M. Salvetti * doc/auc-tex.texi (European): Sort languages list alphabetically. * doc/install.texi (Configure): Document `--with-auto-dir'. * Makefile.in (DOCFILES): Added `doc/macros.texi'. * doc/Makefile.in (distclean): New. 2004-05-13 Ralf Angeli * latex.el (LaTeX-env-item): Don't eat non-empty lines when called on a marked region unless they only consist of whitespace and comment characters. Fill the paragraph of a potentially outdented line after insertion of \item. * aclocal.m4 (TEX_INPUT_DIRS): Repair quoting. * tex.el (TeX-kpathsea-format-alist): Rename. Formerly known as `TeX-kpathsea-directory-alist'. Add information to every format about the file extensions to be found. (TeX-search-files-kpathsea): Adapt to new information in `TeX-kpathsea-format-alist'. (TeX-mode-specific-command-menu-entries): Move source specials toggle up to first level of command menu. 2004-05-12 Davide G. M. Salvetti * aclocal.m4 (AUTO_DIR): New function. * configure.in: Use `AUTO_DIR' to expand `@autodir@' in `tex-site.el.in'. * Makefile.in (autodir): Use `@autodir@'. * tex-site.el.in (TeX-auto-global): Definition moved from `tex.el'. Use `@autodir@'. * tex.el (TeX-auto-global): Definition moved to `tex-site.el.in'. * lpath.el: Bind `TeX-auto-global'. * style/italian.el: New file. * doc/auc-tex.texi (Font Specifiers): Removed two sentences referring to the old behavior of the short-cuts for easy insertions of fonts changing macros. (At that time they added things like `{\it --!--}', now they add things like `\textit{--!--}'.) (Marking and formatting): Reflect renaming of `LaTeX-format-comment-syntax-aware' to `LaTeX-syntactic-comments'. (European): Document `italian.el'. * Makefile.in (STYLESRC): Added `italian.el'. * lpath.el: Bind `TeX-macro-global'. * tex.el: No need to `(require 'tex-site)' at compilation time, see `lpath.el'. 2004-05-12 David Kastrup * tex.el (TeX-source-specials-active-flag) (TeX-source-specials-check-function, TeX-source-specials-xdvi-p) (TeX-source-specials-check-xdvi) (TeX-mode-specific-command-menu-entries) (TeX-maybe-set-source-specials, TeX-toggle-source-specials): Remove all checks for validity of the Source Special options. Just assume that the user knows what he is asking for. 2004-05-12 Ralf Angeli * aclocal.m4 (TEX_INPUT_DIRS): Don't use `findtexmf' but a universal call of `kpsewhich' and unify paths separated by `;' or `:'. * context.el (ConTeXt-mode-menu): Show `TeX-comment-or-uncomment-*' functions in the menu instead of the comment and uncomment functions which don't have a key binding. * tex.el (plain-TeX-mode-menu): Ditto. (TeX-mode-map): Move definitions of `C-c ;' and `C-c %' downwards so that they become visible in the menu. * latex.el (LaTeX-fill-region-as-para-do): Remove extra spaces between words. (LaTeX-mode-menu): Show `TeX-comment-or-uncomment-*' functions in the menu instead of the comment and uncomment functions which don't have a key binding. 2004-05-11 David Kastrup * style/beamer.el: Updates from Thomas Baumann checked in. 2004-05-10 Ralf Angeli * font-latex.el (font-latex-doctex-^^A): Add compatibility code for Emacs 20 and XEmacs to fix compile error. (font-latex-verbatim-face): Add parentheses to fix error with Emacs 20. (font-latex-doctex-preprocessor-face): Ditto. (font-latex-doctex-documentation-face): Ditto. * style/prosper.el (LaTeX-prosper-insert-slide): Don't stay in comment upon inserting a slide in an overlay. 2004-05-09 Reiner Steib * tex.el (TeX-source-specials-check-function): Added "Always on" choice. 2004-05-09 Ralf Angeli * font-latex.el (font-latex-doctex-syntactic-keywords): Moved to the right place and corrected quoting. * context.el (ConTeXt-indent-syntax-table): Create with `make-syntax-table' instead of `easy-mode-defsyntax' to allow compilation with Emacs 20. * aclocal.m4 (TEX_INPUT_DIRS): New function. * configure.in: Use `TEX_INPUT_DIRS' for the expansion of `@texinputdirs@' in `tex-site.el.in'. * tex-site.el.in: Updated header. (TeX-macro-global): Moved here from `tex.el'. Use `@texinputdirs@'. * tex.el: Require `tex-site' at compile time. (TeX-macro-global): Moved to `tex-site.el.in'. 2004-05-09 Reiner Steib * tex.el (TeX-toggle-source-specials): Added missing call to `TeX-maybe-set-source-specials' in last commit. 2004-05-08 Ralf Angeli * font-latex.el (font-latex-verbatim-face) (font-latex-doctex-preprocessor-face) (font-latex-doctex-documentation-face): New variables and faces. (font-latex-verbatim-environments, font-latex-syntactic-keywords) (font-latex-doctex-syntactic-keywords) (font-latex-doctex-keywords): New variables. (font-latex-set-syntactic-keywords) (font-latex-syntactic-face-function, font-latex-doctex-^^A) (font-latex-doctex-syntactic-face-function): New functions. (font-latex-setup): Set special `font-lock-defaults' for docTeX mode. (font-latex-commented-outp): Don't classify line comments in docTeX mode as "real" comments. * latex.el (doctex-mode): Call `TeX-install-font-lock' to activate special fontification in docTeX mode. * style/alltt.el (TeX-add-style-hook): Added "alltt" to `font-latex-verbatim-environments'. * context.el: Updated header. * context-nl.el: Updated header. * context-en.el: Updated header. (context-en-mode): Set `ConTeXt-current-interface' to "en". 2004-05-06 Reiner Steib * tex.el (TeX-toggle-source-specials): Simplify the code. 2004-05-06 Ralf Angeli * Makefile.in (DOCFILES): Added `todo.texi'. 2004-05-05 Reiner Steib * tex.el (TeX-command-list, TeX-source-specials-expand-options) (plain-tex-mode, TeX-view-extension, ams-tex-mode): Doc fixes. * tex.el (TeX-mode-hook, AmS-TeX-mode-hook): Have always been run, but were not declared with defcustom (or defvar). * latex.el (LaTeX-mode-hook): Ditto. * Makefile.in (tar-ball-clean): New. * autogen.sh: Create README and TODO. * .cvsignore, doc/.cvsignore: Add TODO. 2004-05-04 Ralf Angeli * tex.el (TeX-expand-list): Inserted new expander `%S' for source specials command line option. (TeX-command-list): Inserted `%S' for source specials support where appropriate. (LaTeX-command-style): Ditto. (TeX-source-specials-expand-options): New function. * tex-buf.el: Updated header. (TeX-style-check): Remove code specific to source specials and thereby revert to state before 2004-04-27. * tex-jp.el: Updated header. (japanese-TeX-command-list): Inserted `%S' for source specials support where appropriate. * tex-fptex.el: Updated header. (TeX-command-list): Inserted `%S' for source specials support where appropriate. (LaTeX-command-style): Setting removed. * tex-mik.el: Updated header. (TeX-command-list): Inserted `%S' for source specials support where appropriate. (LaTeX-command-style): Setting removed. * doc/auc-tex.texi (Checking): Updated URL's for lacheck and chktex. 2004-05-02 Ralf Angeli * tex.el: Header updated. (TeX-master-file): Removed bogus test for `TeX-header-end'. * doc/auc-tex.texi (ToDo): New name for node/section formerly known as `Projects' or `Wishlist' respectively. Removed items not relevant anymore and moved the rest to the new file `doc/todo.texi'. Removed `Credits' section. * doc/Makefile.in (TEXIFILES): New constant. (auctex): Use it. (dist): Added `TODO'. (TODO): New target. (clean): Added `TODO'. Some formattig changes. * doc/todo.texi: New file. * Makefile.in (tar-ball): Added `TODO'. * doc/changes.texi: Advertise support for `beamer.cls'. 2004-04-30 David Kastrup * tex-buf.el (TeX-command-expand): Add "%%" expansion, make order of TeX-expand-list irrelevant, make the whole junk work efficiently. 2004-04-30 Ralf Angeli * latex.el: New header. (LaTeX-indent-environment-list): Remove `alltt' and add support for it in `alltt.el' instead. * Makefile.in (STYLESRC): Added `alltt.el'. * style/alltt.el: New file. * doc/changes.texi: Describe changes in quote insertion if `german.sty' or `ngerman.sty' is used. Advertise new style files. 2004-04-29 Reiner Steib * tex-buf.el (TeX-style-check): New optional argument. This fixes an error in the last commit. * tex.el (TeX-expand-list): Use it. 2004-04-27 Reiner Steib * tex-buf.el (TeX-style-check, TeX-output-style-check): Check for source special stuff here instead of `TeX-expand-list'. Honor `TeX-source-specials-places'. * tex.el (AUCTeX): Fix URL. (TeX-default-mode, TeX-force-default-mode, TeX-install-font-lock) (TeX-source-specials-active-flag): Changed custom group. (TeX-expand-list): Move source special stuff to `TeX-style-check' and `TeX-output-style-check'. (TeX-source-specials-tex-flags): Make it customizable. (TeX-source-specials-places): New variable. (TeX-source-specials-viewer-flags): No IFS needed anymore. 2004-04-26 Reiner Steib * context.el (context-guess-current-interface): Simplify code. 2004-04-25 Ralf Angeli * tex-info.el (texinfo-mode): Make last change in `font-lock-defaults' compatible with Emacs 20. * latex.el (LaTeX-fill-region-as-paragraph): Indent lines ending with `\\' upon filling a region. (LaTeX-fill-region): Prevent infinite loop at end of buffer. 2004-04-24 David Kastrup * style/natbib.el ("natbib"): Add fontification for regexps. Patch by Thomas Baumann. 2004-04-24 Ralf Angeli * tex-info.el (texinfo-mode): Set `font-lock-defaults' as in `texinfo.el'. This way we get e.g. syntax-highlighting of comments in Texinfo mode. 2004-04-24 Reiner Steib * tex.el (TeX-toggle-source-specials) (TeX-maybe-set-source-specials, TeX-source-specials-check-xdvi): New (renamed) functions. (TeX-source-specials-active-flag, TeX-source-specials-tex-flags) (TeX-source-specials-viewer-flags) (TeX-source-specials-check-function, TeX-source-specials-xdvi-p): New (renamed) variables. Tried to clarify doc-strings and variable names. 2004-04-23 David Kastrup Source special support by Dan Nicolaescu : * tex.el (TeX-command-list): start viewer with TeX-run-discard (TeX-expand-list): Add source special flags to viewer call. (TeX-expand-list): Add source special flags to LaTeX call. Various new functions. (TeX-current-file-name-master-relative): New function replacing TeX-current-file-name-nondirectory (which is not really needed, I guess). This change sole fault of dak. (TeX-mode-specific-command-menu-entries): Source Special entry. 2004-04-23 Ralf Angeli * latex.el (LaTeX-fill-region-as-paragraph): Fix call to `indent-region' for "older" Emacsen. (LaTeX-mode-menu): Fix menu extension for customization. * context.el (ConTeXt-mode-menu): Fix menu extension for customization. * tex-info.el (TeXinfo-insert-environment): Support enclosure of a selected region by the environment to be inserted. Don't eat newline at the end of the environment. (TeXinfo-mode-map): Bind `C-c C-e' to `TeXinfo-insert-environment' analogous to LaTeX mode. 2004-04-21 Ralf Angeli * style/slides.el: Remove obsolete SliTeX-related code and replace it by minimal support for slides.cls. * latex.el: Change spaces to tabs in indentation. (LaTeX-fill-region-as-paragraph): Filling is disabled for environments listed in `LaTeX-indent-environment-list'. To be consistent with filling of other environments where indentation occurs, at least indent those environments. * tex.el: Change spaces to tabs in indentation. 2004-04-20 Reiner Steib * tex.el (TeX-output-view-style): Move "dvips && gv" element to the top of the list (not shadowed by a4paper anymore). Added "pst-" in this element. 2004-04-20 Ralf Angeli * latex.el (LaTeX-current-environment): Respect value of `LaTeX-syntactic-comments' and mode by narrowing the region if necessary and checking necessary conditions. Use `TeX-forward-comment-skip' and `TeX-backward-comment-skip' for narrowing. (LaTeX-find-matching-end): Ditto. (LaTeX-find-matching-begin): Ditto. (docTeX-in-macrocode-p): New function. * tex.el: More checkdoc-related fixes. 2004-04-20 David Kastrup * style/natbib.el: Patch from Thomas Baumann for \bibpunct. * Makefile.in (STYLESRC): Add style/beamer.el. * style/beamer.el: Support file contributed by Thomas Baumann. 2004-04-19 Reiner Steib * tex.el, latex.el: Make almost checkdoc clean. See "FIXME" for remaining issues. * context.el, context-en.el, context-nl.el: Reindent. Coding conventions fixes (but files are still far from being checkdoc clean). 2004-04-19 Berend de Boer * context-en.el (ConTeXt-default-environment-en): added default environment for en interface. * context-nl.el (ConTeXt-default-environment-nl): added default environment for nl interface. * context.el (ConTeXt-default-environment): now depends on language. 2004-04-16 Ralf Angeli * tex.el (TeX-view-style): Enhance documentation string. (TeX-output-view-style): Ditto. 2004-04-16 Reiner Steib * tex-info.el (TeXinfo-command-menu): Use `TeX-mode-specific-command-menu'. * tex-jp.el (plain-TeX-mode-command-menu) (LaTeX-mode-command-menu): Ditto. 2004-04-16 David Kastrup * Makefile.in (STYLESRC): Add jura.el and alphanum.el style/jura.el, style/alphanum.el: contributed by Frank Kster. 2004-04-16 Berend de Boer * context.el (context-guess-current-interface): support for recognizing interface=XX in comment to determine language to use. * tex.el (TeX-format-list): recognize ConTeXt dutch interface. * Makefile.in: AUCSRC includes the new context-en.el and context-nl.el. Ditto fo AUCELC. * context.el: English interface macro's moved to context-en.el. All defmacro's are now replaced by defvars which are set to the proper language dependent interface as a local buffer variable. Some changes to make the context mode actually multi-lingual. (ConTeXt-mode-common-initialization): new routine with initialization common to all ConTeXt modes. (context-mode): guesses current interface for en and nl interfaces. (context-guess-current-interface): new routine that determines what ConTeXt language interface is in use. * context-nl.el: new file containing Dutch interfaces macro's previously in context.el. Use context-nl-mode to activate. * context-en.el: new file containing English interfaces macro's previously in context.el. Use context-en-mode to activate. 2004-04-15 Ralf Angeli * tex.el (TeX-mode-specific-command-menu): Now holds the logic for returning a Command menu definition suitable for different Emacs versions. Its original content is now in the function `TeX-mode-specific-command-menu-entries'. (TeX-mode-specific-command-menu-entries): New function. (plain-TeX-mode-command-menu): Simply use `TeX-mode-specific-command-menu' instead of the logic which now is part of it. (AmSTeX-mode-command-menu): Ditto. * latex.el (LaTeX-mode-command-menu): Ditto. * context.el (ConTeXt-mode-command-menu): Ditto. 2004-04-14 Reiner Steib * doc/Makefile.in (clean): Remove *.tmp (created with auc-tex.ps). * doc/.cvsignore: Added *.tmp. * .cvsignore: Revert 2004-04-12 change. Added README. * Makefile.in (tar-ball): .nosearch is not useful here. 2004-04-13 David Kastrup * aclocal.m4: Try something in AC_FULL_EXPAND that does not require bash. Replace ' with quote in EMACS_LISP Correct a few instances of misspelled AUCTeX. 2004-04-13 Reiner Steib * Makefile.in (DOCFILES, EXTRAFILES): Added files needed for the configure based installation. 2004-04-12 Reiner Steib * Makefile.in (dist): Split into `check-dist', `release-commit' and `tar-ball'. (snapshot): New. Use `check-dist' and `tar-ball'. (release-commit): Fix mail address. (REMOVE, MINMAPSRC, min-map): Removed. (DIST_PREFIX): Derive FTPDIR and WWWDIR from this. * doc/Makefile.in (dist): Use INSTALL and INSTALL.windows instead of INSTALLATION. * doc/.cvsignore: Added INSTALL, INSTALL.windows, auc-tex.ps * .cvsignore: Removed INSTALL, INSTALL.windows. 2004-04-12 Ralf Angeli * latex.el (LaTeX-syntactic-comments): New name. Formerly known as `LaTeX-format-comment-syntax-aware'. This should better reflect the meaning the variable will receive eventually. (LaTeX-indent-line): Use new name. (LaTeX-current-indentation): Ditto. (LaTeX-back-to-indentation): Ditto. (LaTeX-fill-paragraph): Ditto. (doctex-mode): Ditto. * context.el (context-mode): Use `LaTeX-syntactic-comments' instead of `LaTeX-format-comment-syntax-aware'. 2004-04-10 Ralf Angeli * doc/auc-tex.texi (Japanese): Refer to `INSTALL' instead of `INSTALLATION'. * doc/intro.texi: Refer to `INSTALL' and `INSTALL.windows' instead of `INSTALLATION'. * IRIX: Removed. * Makefile.in (EXTRAFILES): Removed IRIX. * COPYING: Updated to current incarnation. 2004-04-09 Reiner Steib * Makefile.in (install-el, dist): Add .nosearch in style/ and auto/. 2004-04-09 Ralf Angeli * context.el (ConTeXt-current-interface): eval-and-compile instead of eval-when-compile seems to solve the undefined error message. 2004-04-08 Peter S Galbraith * font-latex.el (font-latex-setup): Bug Fix; was overriding font-latex-string-face. Thanks to Reuben Thomas for finding the bug. 2004-04-08 Jan-ke Larsson * configure.in: Remove sole reference to texmfdir * aclocal.m4: Fix --with-lispdir 2004-04-08 Ralf Angeli * latex.el (LaTeX-fill-paragraph): Fix check for code comment. (LaTeX-fill-code-comment): Ditto. * tex.el (TeX-in-commented-line): Don't alter match data. Fixes problems with `LaTeX-find-matching-end'. (TeX-in-line-comment): Ditto. (Prophylactic.) 2004-04-08 Berend de Boer * latex.el (LaTeX-outline-name): could reach past end of buffer when an imenu was created and LaTeX-outline-regexp contained a macro that either didn't take a argument between braces or a macro was found in the document and the user forgot to specify the argument. And that macro was after the last 20 characters of the buffer. * context.el (ConTeXt-current-interface): eval-when-compile this variable fixed another reported compiliation error. 2004-04-07 Reiner Steib * latex.el (LaTeX-default-position, LaTeX-env-array) (LaTeX-env-tabular*): Implement "don't prompt" option. * doc/auc-tex.texi (Tabular-like): Added `LaTeX-default-format' and `LaTeX-default-position'. 2004-04-07 Ralf Angeli * latex.el (LaTeX-fill-break-at-separators): New name. Formerly known as `LaTeX-fill-distinct-contents'. Changed 'braced and 'math options to various symbols for opening and closing separators (braces, brackets, math switches) which can be activated independently. (LaTeX-fill-move-to-break-point): Use it. * doc/auc-tex.texi (Marking and formatting): Reflect change of `LaTeX-fill-distinct-contents' to `LaTeX-fill-break-at-separators'. Describe `LaTeX-fill-break-before-code-comments'. 2004-04-07 David Kastrup * tex-buf.el (TeX-run-command): Turn off line number mode in the run-buffer effectively by setting line-number-display-limit locally to 0. (TeX-format-filter): Use a more sophisticated procedure for fishing out page numbers in order to have fast matches. 2004-04-07 Berend de Boer * Lots of enhancements to context.el. There is now a ConTeXt specific menu which lists ConTeXt specific macro's for inserting start/stop pairs, project structure and setup of things. Menu also let's you jump to the etexshow definition if you have that installed. Querying for macro parameters is non-existent or flaky. outline and imenu support added. You can close an XML tag if you're editing XML in ConTeXt with C-c /. List of environments is now complete. Paragraph formatting works in certain cases, but is really slow or doesn't work in certain cases. Indenting the same: works sometimes, but still flaky. Bugs fix: start/stop insertion works now. * documentation now mentions ConTeXt sometimes. * context.el (ConTeXt-current-interface): make now doesn't complain anymore when byte compiling ConTeXt. * tex.el now recognizes ConTeXt dutch interface. 2004-04-05 Ralf Angeli * latex.el (LaTeX-fill-code-comment): Respect `indent-tabs-mode'. Fix partially taken from GNU Emacs' fill.el. * tex.el (TeX-mode-specific-command-list): New function. (TeX-mode-specific-command-menu): Use it. * tex-buf.el (TeX-command-query): Use `TeX-mode-specific-command-list' to get a command list specific to the current mode for command completion. 2004-04-04 Ralf Angeli * latex.el (docTeX-indent-inner-fixed): New var. (LaTeX-indent-calculate): Use it. (LaTeX-indent-calculate-last): Reset indentation to zero after macrocode environments. * style/booktabs.el (TeX-add-style-hook): Add fontification support. 2004-04-04 David Kastrup * latex.el (LaTeX-find-matching-end, LaTeX-find-matching-end): Try to keep track of in-comment-ness 2004-04-03 David Kastrup * Makefile.in (STYLESRC): Add emp.el. * style/emp.el: New file contributed from Yvon Hevel. 2004-04-02 Ralf Angeli * latex.el (LaTeX-back-to-indentation): Use `beginning-of-line' instead of `move-to-left-margin' as it is faster and we don't use the margin anyway. (LaTeX-fill-region-as-para-do): Use `point-max' for correctly determining the end of the filling loop in case of a code comment. Narrow to region in any case to simplify this determination in case there is no code comment. (LaTeX-fill-move-to-break-point): Fix compatibility code for getting the initial break point. In case there is no valid break point on the way towards the beginning of the line, look down the line. 2004-03-28 Ralf Angeli * tex.el (TeX-output-view-style): Remove option for landscape in case of PDF output. 2004-03-26 David Kastrup * latex.el (LaTeX-fill-region): Correct percentage display. * tex-buf.el (TeX-format-filter): Strictly restrict backward searches for page number patterns. 2004-03-26 Davide G. M. Salvetti * bib-cite.el, latex.el, tex-buf.el, tex-jp.el, tex.el: Map (function (lambda ...)) to (lambda ...) for better readability. * doc/.cvsignore: Added CHANGES, HISTORY, README, auc-tex*.html. * doc/intro.texi: Minor fix. 2004-03-26 Ralf Angeli * latex.el (LaTeX-indent-line): Use `looking-at' instead of `re-search-forward'. Pass indent amount to `LaTeX-indent-{inner,outer}-do' functions. (LaTeX-indent-inner-do, LaTeX-indent-outer-do): Let them be called with an explicit parameter for the indent amount. (LaTeX-indent-calculate-last): Distinguish a commented and an uncommented line when skipping backwards to the preceding line. Move tests for comment skips into the `cond' statement for better readability. (LaTeX-fill-break-before-code-comments): New customize option. (LaTeX-fill-region-as-paragraph): Change the regular expression which is used for searching for special line ends so that it is not such a performance hog. Code for determining the region to fill was adapted accordingly. (LaTeX-fill-region-as-para-do): Remove trailing whitespace after newlines were changed to spaces. Reported by Reiner Steib . Use `narrow-to-region' for keeping track of potential code comment starts. Break a line at the last non-comment word before a code comment. This can be configured with `LaTeX-fill-break-before-code-comments'. (LaTeX-fill-move-to-break-point): Use `LaTeX-back-to-indentation' for going to the right start of a line. (LaTeX-fill-paragraph): `LaTeX-backward-paragraph' does not skip forward over empty lines itself anymore, so do it here. (LaTeX-fill-region): Use `LaTeX-forward-paragraph' and `LaTeX-backward-paragraph' instead of the old code which determined paragraph boundaries manually. (LaTeX-forward-paragraph, LaTeX-backward-paragraph): Improve handling of paragraph commands. (LaTeX-paragraph-command-p): Get rid of the test for the opening brace because there doesn't have to be one. (LaTeX-find-macro-start): New function. (LaTeX-find-macro-end): New function. * .cvsignore: Added `tex-site.el'. 2004-03-23 David Kastrup * tex.el (VirTeX-common-initialization): Back out last change about sentence-end-double-space. 2004-03-22 Jan-ke Larsson * aclocal.m4, configure.in: Fix bug for the case $prefix=NONE * Makefile.in: distclean target removes tex-site.el 2004-03-22 David Kastrup * latex.el (LaTeX-fill-distinct-contents): Simplify customization type: nil is a complete list. 2004-03-21 David Kastrup * tex.el (VirTeX-common-initialization): Set sentence-end-double-space and sentence-end to more appropriate values for TeX. 2004-03-21 Ralf Angeli * latex.el (LaTeX-fill-region-as-paragraph): Fix separation of lines with code comments looking like " {%". (LaTeX-fill-move-to-break-point): Fix determination of break point for an opening brace where there is no break point immediately after the respective closing brace. (LaTeX-fill-region-as-para-do): Fix determination of code comment begin in filling loop. 2004-03-20 Ralf Angeli * latex.el (LaTeX-fill-region-as-para-do): Fix compatibility code for older Emacsen. 2004-03-19 David Kastrup * tex-site.el.in (texinfo-mode): Autoload tex-info again. I suppose we will get to know why it was disabled when someone complains. 2004-03-19 Davide G. M. Salvetti * doc/Makefile.in (clean): Add HISTORY. * tex.el (TeX-lisp-directory): Removed, it's already defined in tex-site.el.in. 2004-03-19 Ralf Angeli * latex.el (LaTeX-current-environment): Use correct regexp for determination of a comment. (LaTeX-format-comment-syntax-aware): Renamed from `LaTeX-fill-comment-syntax-aware' because it affects both filling and indentation. (LaTeX-indent-line): Add support for doing outer and inner indentation. (LaTeX-current-indentation): Ditto. (LaTeX-back-to-indentation): Ditto. (LaTeX-indent-calculate): Ditto. (LaTeX-indent-calculate-last): Ditto. Fix indentation for environments mentioned in `LaTeX-document-regexp' which use an unclosed brace in the first line. (LaTeX-indent-inner-do): New function. (LaTeX-indent-outer-do): New function. (LaTeX-fill-region-as-paragraph): Include lines with code comments in regions to be filled. Recognize lines ending with `\par' as boundaries for filling. (LaTeX-fill-region-as-para-do): Better handling of code comments. (LaTeX-fill-paragraph): Make function more readable by selecting different filling methods by a `cond' statement and putting code for the determination of the region to fill in case of syntax-aware filling into the separate functions `LaTeX-forward-paragraph' and `LaTeX-backward-paragraph'. Better handling of code comments. (LaTeX-fill-code-comment): New function. (LaTeX-forward-paragraph): New function. (LaTeX-backward-paragraph): New function. (LaTeX-paragraph-command-p): New function. (LaTeX-common-initialization): Let `paragraph-start' handle comments preceded by whitespace as well. (LaTeX-fill-move-to-break-point): Support `\[' and `\]' as well if `LaTeX-fill-distinct-contents' is activated. * tex.el (tex-mode): `comment-start-skip' shouldn't match line beginnings. (VirTeX-common-initialization): Ditto. (TeX-in-line-comment): New function. (TeX-forward-comment-skip): Use correct regexp for determination of a comment. Fix case where `count' is less than zero, i.e. if a backward search is performed. (TeX-backward-comment-skip): New function. * doc/auc-tex.texi: Reflect name change of `LaTeX-fill-comment-syntax-aware' to `LaTeX-format-comment-syntax-aware'. 2004-03-18 Jan-ke Larsson * Makefile.in, configure.in, tex-site.el, tex-site.el.in: Move tex-site.el to tex-site.el.in, generate tex-site.el at configure time rather than at install time 2004-03-18 Ralf Angeli * tex.el (TeX-output-view-style): Use `%f' instead of `%s.ps' for PostScript files. (TeX-mode-map): Change key binding of `TeX-master-file-ask' to `C-c_' because `C-c-' is already taken by RefTeX. * doc/auc-tex.texi: Change "Formatting" node to "Running TeX and friends" and use a respective heading. Adapt key binding for `TeX-master-file-ask'. * doc/intro.texi: Correct URLs. 2004-03-14 David Kastrup * tex.el (TeX-command-list): Change interactive calls to use \input, so that pdflatex \pdfoutput=0 becomes a legal way to call LaTeX. (VirTeX-common-initialization): Save TeX-master if desktop package is used. 2004-03-14 Ralf Angeli * tex.el (TeX-output-view-style): Fix it after it was accidently and incorrectly changed with the last check-in. Patch by David Kastrup . (TeX-view-style): Ditto. 2004-03-11 Ralf Angeli * tex.el (TeX-find-opening-brace): Don't match the char before the brace. This returns the correct position and fixes the handling of the limit parameter. * latex.el (LaTeX-fill-move-to-break-point): Don't match the char before the char to find in case of backward searches. (LaTeX-fill-region-as-paragraph): Make the regular expression, which serves searching for lines with code comments, match the whole line. 2004-03-10 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Use `TeX-esc' in other, similar places not covered by the last check-in as well. * doc/auc-tex.texi: Document `LaTeX-indent-environment-list', `LaTeX-fill-comment-syntax-aware' and `LaTeX-fill-distinct-contents' as well as slightly improve some other parts in the section about `Marking and formatting'. 2004-03-10 David Kastrup * latex.el (LaTeX-fill-move-to-break-point): Use TeX-esc in regexps to accommodate Texinfo better. (LaTeX-fill-move-to-break-point): no regexp-quote within braces. (LaTeX-common-initialization): Correct \multicolumn prompt 2004-03-09 Ralf Angeli * latex.el (LaTeX-fill-move-to-break-point): Cope with unmatched closing braces when `LaTeX-fill-distinct-content' is enabled for braced content. 2004-03-09 Jan-ke Larsson * Makefile.in: Add separate target for .el files to cater for debian 2004-03-07 Ralf Angeli * style/booktabs.el: New file. * Makefile.in (STYLESRC): Add `booktabs.el'. * doc/changes.texi: Advertise support for `booktabs.sty'. 2004-03-06 Ralf Angeli * doc/auc-tex.texi: Small corrections in `Viewing' section. 2004-03-02 Jan-ke Larsson * doc/Makefile.in: Add packagedir 2004-03-02 Ralf Angeli * latex.el (LaTeX-insert-environment): Fix insertion of newlines for the case where `LaTeX-insert-into-comments' is activated but point is not inside a comment. 2004-02-28 David Kastrup * Makefile.in (install-lisp): Overwrite old tex-site.el if it has the "Don't edit" comment in it. Rename it otherwise. Use $(auctexdir) instead of $(lispdir) for replacing @AUCTEX. * tex-buf.el (TeX-command-query): Allow doctex-mode for .bbl file checking. * tex-site.el: Discourage customization in-file. * latex.el (LaTeX-outline-regexp, LaTeX-environment) (LaTeX-document-style-hook): Change docs to refer to document classes instead of document style. (LaTeX-env-document): Don't insert anything but document class. (LaTeX-menu-update): Check for doctex-mode. (doctex-mode): Make it a major mode derived from latex-mode. 2004-02-28 Ralf Angeli Merge with new-fill branch. 2004-02-27 Jan-ke Larsson * configure.in: Respect --infodir even if using xemacs. * aclocal.m4: Add yes/no answer for the MULE check. * Makefile.in: Correct xemacs-install. * Makefile.in, aclocal.m4, configure.in: If there is a wrongly installed tex-site.el, use the proper install directory anyway (i.e., don't be side-tracked), and remove the wrongly installed tex-site.el. These things are only needed for CVS users who have used the erroneous xemacs-installation. 2004-02-27 Ralf Angeli * latex.el (LaTeX-mode-menu): Insert customize option and rearrange. (LaTeX-fill-move-to-break-point): Bandaid for not breaking inside square brackets where the content fits into one line. * tex.el (plain-TeX-mode-menu): Insert customize option. * doc/auc-tex.texi: Document options for inserting quotes in files where `(n)german.sty' is used and the invocation of external viewers. 2004-02-26 Ralf Angeli * latex.el (LaTeX-fill-break-before-macro) (LaTeX-fill-break-after-macro): Unused, so removed. (LaTeX-fill-distinct-contents): New name for defcustom `LaTeX-fill-break-before-and-after'. (LaTeX-fill-move-to-break-point): Fix filling of nested braces and math. (TeX-find-closing-brace, TeX-find-opening-brace) (TeX-forward-comment-skip): Moved to `tex.el'. * tex.el (TeX-find-closing-brace, TeX-find-opening-brace) (TeX-forward-comment-skip): Moved from `latex.el'. 2004-02-26 David Kastrup * latex.el (doctex-mode): Make a minor mode. * tex-site.el (doctex-mode): Add autoloads and file extensions. * tex.el (TeX-master-file): Don't overwrite TeX-master when not asking the question. 2004-02-22 David Kastrup * latex.el (LaTeX-newline): New function. Spread it throughout the code in order to stay in comments for completion and insertion commands. (doctex-mode): New function. 2004-02-19 David Kastrup * latex.el (LaTeX-fill-paragraph): Back out changes from 2003-12-29. Create separate new-fill branch for Ralf's code. 2004-02-17 Reiner Steib * font-latex.el (font-latex-title-4-face): Added missing :weight and :inherit for color displays. 2004-02-15 Peter S Galbraith * bib-cite.el (bib-cite-fontify-help-as-bibtex) (bib-cite-fontify-help-as-latex): Check existence of font-lock-unset-defaults; no longer defined in CVS Emacs. Thanks to Adrian Lanz for reporting the problem. 2004-02-15 Reiner Steib * font-latex.el (font-latex-title-4-face): Use different colors depending on background. 2004-02-03 Ralf Angeli * tex.el (TeX-comment-region): Map to `comment-region' instead of `TeX-comment-or-uncomment-region'. (TeX-uncomment-region): New name for `TeX-un-comment-region'. Not mapped to `TeX-comment-or-uncomment-region' anymore. (TeX-uncomment): New name for `TeX-un-comment'. Use `TeX-uncomment-region' instead of `uncomment-region' which is not available in Emacs 20. (TeX-comment-or-uncomment-paragraph): New name for `TeX-comment-paragraph' which explains its function better. Use new name `TeX-uncomment'. (TeX-mode-map): Bind key chains to `TeX-comment-or-uncomment-*' functions. (plain-TeX-mode-menu): Adapt function calls in menu entries. * tex-info.el (TeXinfo-mode-map): Bind key chains to `TeX-comment-or-uncomment-*' functions. (TeXinfo-mode-menu): Adapt function calls in menu entries. * latex.el (LaTeX-mode-menu): Adapt function calls in menu entries. Small enhancements. * doc/auc-tex.texi (Commenting): Adapt documentation to reflect changes in commenting interface. 2004-01-31 Ralf Angeli * tex.el (TeX-comment-or-uncomment-region): New function or alias respectively introduced to obtain compatibility with GNU Emacsen before 21.4. (TeX-uncomment-region): New function or alias respectively introduced to obtain compatibility with GNU Emacsen before 21(.1?). (TeX-comment-region): Bound to `TeX-comment-or-uncomment-region'. (TeX-un-comment-region): Bound to `TeX-comment-or-uncomment-region'. 2004-01-27 Masayuki Ataka * tex-jp.el (TeX-command-list): Fixed previous change. 2004-01-25 Masayuki Ataka * tex-jp.el (japanese-TeX-command-list): Remove dummy code for command menu. 2004-01-23 Masayuki Ataka * tex-jp.el (japanese-TeX-command-list): Change single quotes to double. We get reasonable results under both Windows and Unix. See also log of TeX-command-list in tex.el on 2002-12-19. * tex.el (TeX-toggle-off-input-method): Removed some Japanese input methods (Canna, Wnn, SKK) because their code is copied from YaTeX, which is not GPL program. Toggle off CJK (Chinese, Japanese, Korean) input methods in LEIM. (TeX-math-toggle-off-input-method): Doc fix. 2004-01-13 Ralf Angeli * latex.el (LaTeX-mode-menu): Removed menu filters in the submenus for inserting and modifying environments which call `LaTeX-menu-update'. (LaTeX-common-initialization): Add `LaTeX-menu-update' to `activate-menubar-hook' instead. 2004-01-12 Ralf Angeli * tex.el (TeX-view-style, TeX-output-view-style): Use a regexp which matches `a5', `a5comb' and `a5paper' instead of the old which matches only `a5'. 2004-01-12 Ralf Angeli * tex.el (TeX-command-menu-name): New constant. (TeX-mode-specific-command-menu): Reimplemented the loop which builds the menu. (TeX-mode-command-menu): Use new constant and call `TeX-mode-specific-command-menu' via `:filter'. (AmSTeX-mode-command-menu): Ditto. * context.el (ConTeXt-mode-command-menu): Use new constant `TeX-command-menu-name' and call `TeX-mode-specific-command-menu' via `:filter'. * latex.el (LaTeX-mode-command-menu): Ditto. * tex-info.el (TeXinfo-mode-command-menu): Ditto. * tex-jp.el (plain-TeX-mode-command-menu) (LaTeX-mode-command-menu): Ditto. 2004-01-10 Ralf Angeli * doc/changes.texi: Added further news. 2004-01-09 Ralf Angeli * doc/auc-tex.texi: AUC TeX to AUCTeX. Use `%%%' instead of a single `%' character in examples for Local Variables. Add information about new behavior in respect to the query for the master file. Explain new function `TeX-master-file-ask'. * doc/changes.texi: Advertise new master file behavior. Remove news about new commenting behavior which is not true anymore. * doc/intro.tex.: AUC TeX to AUCTeX. * tex.el (TeX-local-master-p): Removed one `%' character in regexp to let it find "% TeX-master:" as well. 2004-01-07 Ralf Angeli * tex.el (TeX-command-list): Changed defcustom definition to one which allows the specification of several modes for one command and adapted the defaults to it. Thanks to David Kastrup for most of the code. (plain-TeX-command-menu): Adapted the call to `TeX-mode-specific-command-menu'. (AmSTeX-mode-command-menu): Ditto. * latex.el (LaTeX-mode-command-menu): Adapted the call to `TeX-mode-specific-command-menu'. * context.el (ConTeXt-mode-command-menu): Ditto. * tex-info.el (TeXinfo-mode-command-menu): Ditto. * tex-jp.el (japanese-TeX-command-list): Adapted list entries according to defcustom changes in `tex.el'. (plain-TeX-mode-command-menu): Adapted the call to `TeX-mode-specific-command-menu'. (LaTeX-mode-command-menu): Ditto. * tex-mik.el (TeX-command-list): Adapted list entries according to defcustom changes in `tex.el'. * tex-fptex.el (TeX-command-list): Ditto. 2004-01-06 Ralf Angeli * tex.el (TeX-command-list): Get rid of the superfluous sixth element in the defcustom and menu/command definitions. * tex-jp.el (japanese-TeX-command-list): Ditto. * tex-mik.el (TeX-command-list): Ditto. * tex-fptex.el (TeX-command-list): Ditto. 2004-01-05 David Kastrup * latex.el (LaTeX-common-initialization): Add \item to the paragraph starters. 2004-01-05 Ralf Angeli * tex.el (TeX-mode-specific-command-menu): New function to be used for generating a mode-specific command menu. (plain-TeX-mode-map): New map to be used by plain-tex-mode. (plain-TeX-mode-command-menu): New menu used instead of `TeX-mode-menu' which utilizes `TeX-mode-specific-command-menu'. (TeX-mode-menu): Removed in favor of `plain-TeX-mode-command-menu'. (AmSTeX-mode-map): New map to be used by ams-tex-mode. (AmSTeX-mode-command-menu): New menu. (ams-tex-mode): Moved and grouped with other AmSTeX-related code. Added code to use new menu. (TeX-command-list): Added new choice for the selection of the mode for the respective command. Adapted doc string. Added respective symbols to command definitions. Rearranged command definitions. Changed `LaTeX PDF' to `PDFLaTeX'. * latex.el (LaTeX-mode-command-menu): New menu used instead of `TeX-mode-menu'. (LaTeX-common-initialization): Activate it. * context.el (ConTeXt-mode-command-menu): New menu used instead of `TeX-mode-menu'. (context-mode): Activate it. * tex-info.el (TeXinfo-command-menu): Adapted for using `TeX-mode-specific-command-menu'. * tex-jp.el (japanese-TeX-command-list): Added symbols to command definitions needed for assigning them to the respective mode. (TeX-mode-menu): Removed. (plain-TeX-mode-command-menu): New menu utilizing `TeX-mode-specific-command-menu'. (LaTeX-mode-command-menu): New menu utilizing `TeX-mode-specific-command-menu'. (LaTeX-mode-map): Removed key definition for `TeX-mode-menu'. * tex-fptex.el (TeX-command-list): Added symbols to command definitions needed for assigning them to the respective mode. Changed `LaTeX PDF' to `PDFLaTeX'. * tex-mik.el (TeX-command-list): Ditto. * doc/changes.texi: Mention the change to a mode-specific command menu and the need for the deletion of any former customization of `TeX-command-list'. 2004-01-03 Ralf Angeli * tex.el (TeX-mode-map): Use `C-c -' as a key binding for `TeX-master-file-ask' as `C-c !' is already used in `context.el'. 2004-01-02 David Kastrup * latex.el (LaTeX-left-comment-regexp) (LaTeX-right-comment-regexp, LaTeX-ignore-comment-regexp): revert an inadvertant change two checkins ago. I was just experimenting with something that did not yet work (as if the original did) and did not intend checking it in. 2003-12-30 Ralf Angeli * tex.el (TeX-master-file): Added new parameter `ask' which is to be used if the user shall be asked when the function is called. Took out the code which provides the functionality for asking the respective question and added it to the newly created function `TeX-master-file-ask'. (TeX-master-file-ask): New function. (TeX-local-master-p): New function. (tex-mode): Removed the call of `TeX-master-file' via the hook `hack-local-variables-hook'. (VirTeX-common-initialization): Added the call to `TeX-master-file' via the hook `find-file-hooks'. Additionally `TeX-update-style' will be called to activate the respective style files. (TeX-mode-map): Added key binding for calling `TeX-master-file-ask'. This is a temporary solution. (TeX-mode-menu): Took out redundant entry for `TeX-home-buffer'. Added entry "Set Master File" for `TeX-master-file-ask'. Grouped menu entries relevant for multifile handling. * latex.el (LaTeX-mode-menu): Changed analogously to `TeX-mode-menu'. 2003-12-29 David Kastrup * latex.el: Fix AUCTeX URL. (LaTeX-fill-paragraph): Skip from inline comments to either line comments or something that is not merely an inline comment. I am not even sure that this skipping makes good sense, in particular since it is followed by `forward-paragraph'. (LaTeX-common-initialization): Change the definitions of `paragraph-start' and `paragraph-separate' to something that makes things like `forward-paragraph' and its ilk behave more sensibly when in comments. The previous behavior is just awful, and caused a lot of inadvertant damage when using things like `fill-paragraph' within comments. (LaTeX-common-initialization): Remove syntax error, sorry. 2003-12-29 David Kastrup * latex.el: Fix AUCTeX URL. (LaTeX-fill-paragraph): Skip from inline comments to either line comments or something that is not merely an inline comment. I am not even sure that this skipping makes good sense, in particular since it is followed by `forward-paragraph'. (LaTeX-common-initialization): Change the definitions of `paragraph-start' and `paragraph-separate' to something that makes things like `forward-paragraph' and its ilk behave more sensibly when in comments. The previous behavior is just awful, and caused a lot of inadvertant damage when using things like `fill-paragraph' within comments. 2003-12-26 Ralf Angeli * style/scrbase.el (TeX-add-symbols): Remove redundant entries. * style/scrlttr2.el (TeX-add-symbols): Remove redundant entry. * style/scrpage2.el: Remove unnecessary coding cookie and text in introductory comment. 2003-08-02 Mike Sperber * latex.el (latex-mode): Really turn off filladapt. It just doesn't work with `LaTeX-fill-paragraph'. 2003-12-02 Ralf Angeli * tex.el (tex-mode): Let `TeX-master-file' be called upon opening a file. This shall restore the behaviour before the last change regarding the question for `TeX-master'. Thanks to Peter Galbraith for setting the patch right. 2003-11-28 David Kastrup * tex.el (LaTeX-update): Advice removed because of the following: * latex.el (LaTeX-menu-update): Now called via :filter predicate of menus. 2003-11-27 Ralf Angeli * style/paralist.el: Removed coding cookie in first line. Removed obsolete comment regarding placement of file. (LaTeX-paralist-env-item-opt-label): Renamed from `pl-LaTeX-env-item-opt-label' and changed references accordingly. Added docstring. Let `itemize' and `enumerate' environments use this function. Thanks to Reiner Steib for these suggestions. 2003-11-26 Reiner Steib * latex.el (LaTeX-section-label): Added "part" and "subsubsection". Sync "chapter" with fancyref.sty. * style/fancyref.el ("fancyref"): Added font-lock keywords. 2003-11-25 Reiner Steib * latex.el (LaTeX-math-default): Added greek \var... symbols. (LaTeX-common-initialization): Removed "SLiTeX", added spacing commands and "appendix". * font-latex.el (font-latex-match-function-keywords): Added spacing commands, "nonumber", "centering", "TeX", and "LaTeX". (font-latex-match-textual-keywords): Added textsuperscript. 2003-11-17 Ralf Angeli * Makefile.in (STYLESRC): Added scrpage2.el. 2003-11-17 Peter S Galbraith * font-latex.el (font-latex-keywords-2): Had forgotten to set LAXMATCH on all title matches. Thanks to Ralf Angeli for reporting the bug. * bib-cite.el (bib-cite-file-directory-p): New functions. I had introduced a call to code from ff-paths.el by mistake. 2003-11-17 Ralf Angeli * style/scrbase.el (TeX-add-style-hook): Added further symbols to `TeX-add-symbols' and rearranged them alphabetically. Added macros with parameters to `font-latex-match--keywords-local'. Added `addsec' and `addpart' to `font-latex-match-title--keywords-local'. * style/scrbook.el (TeX-add-style-hook): Analogous. * style/scrlttr2.el (TeX-add-style-hook): Analogous. * style/scrreprt.el (TeX-add-style-hook): Analogous. * style/scrpage2.el: New file. 2003-11-16 Ralf Angeli * tex.el (VirTeX-common-initialization): Disabled lines which set `comment-add' to 1 to restore commenting with a single `%'. (TeX-un-comment-region): Function code removed and function name mapped to `comment-dwim'. (TeX-un-comment): Allow searching for commented lines with potential white space at the beginning. (TeX-comment-paragraph): Partially rewritten to allow it to be used for both commenting and uncommenting. (TeX-in-commented-line): New function used in `TeX-comment-paragraph'. * doc/auc-tex.texi (Commenting): Reflect changes in `tex.el'. 2003-11-13 Ralf Angeli * style/paralist.el: New file. * Makefile.in (STYLESRC): Added paralist.el. 2003-10-18 Peter S Galbraith * font-latex.el: checkdoc cleaning (almost clean now). 2003-09-18 Peter S Galbraith * font-latex.el (font-latex-quotes): New defcustom to fontify either french or german quotes. (font-latex-quote-regexp-beg): New variable. Holds the regexp to match the beginning of a quote. (font-latex-quote-end-list): New variable. Holds the list of strings to end a matched quote. (font-latex-match-quotation): Fixed to use above variables. 2003-09-18 Peter S Galbraith * bib-cite.el: bib-cite-aux-inputs: new defcustom. Minor code cleanup for `match-string'. 2003-09-15 Reiner Steib * tex.el (TeX-master-file): Fix 'shared case. Tiny patch from Shiro Takeda . 2003-09-08 Peter S Galbraith * bib-cite.el: Ripping out off-topic imenu code. 2003-09-07 Peter S Galbraith * font-latex.el: Bug fix when font-lock-multiline is set to t. 2003-08-21 Reiner Steib * Changelog: Added coding cookie. * doc/Makefile.in (install): Check if auctex-* exists. Needed because default split size changed in texinfo 4.6. 2003-07-25 Peter S Galbraith * font-latex.el: Make & highlighted in font-latex-warning-face. Better document font-latex-match-*-keywords-local variables. 2003-07-20 Masayuki Ataka * configure.in: Use mule support check. * Makefile.in (CONTRIB_MULE, COMPILE_MULE, CONTRIB_MULEELC): New macros. (contrib): Compile CONTRIB and COMPILE_MULE. (install-contrib): Install CONTRIB_MULE and CONTRIB_MULEELC, too. * aclocal.m4 (EMACS_CHECK_MULE): Check (X)Emacs mule supported. * Makefile.in (clean): Remove Emacs auto-save files. Remove elc files in the current and style directory. 2003-06-21 Masayuki Ataka * Makefile.in: Delete trailing whitespaces. * tex.el (TeX-near-bobp): Undo last change. * tex-jp.el: Fix some document. (AUCTeX-jp): New custom group. (japanese-TeX-command-default, japanese-LaTeX-command-default) (japanese-LaTeX-default-style, japanese-LaTeX-style-list): Support for defcustoms. 2003-06-14 David Kastrup (tiny patch from Stephen Gildea) * tex.el (TeX-auto-untabify): Change default to nil. * doc/auc-tex.texi (Parsing Files): document this. 2003-06-07 David Kastrup * tex.el (TeX-lisp-directory, TeX-auto-global, TeX-style-global) (TeX-auto-local, TeX-style-local, TeX-macro-private) (TeX-load-style, TeX-parse-path, TeX-run-style-hooks) (TeX-auto-write, TeX-auto-generate, TeX-auto-generate-global) (TeX-ignore-file, TeX-search-files): try catering with Windows file names. (TeX-directory-absolute-p): removed, since file-name-absolute-p serves the same purpose. 2003-06-06 Jan-ke Larsson * Makefile.in: Added datadir 2003-06-05 Masayuki Ataka * latex.el (LaTeX-env-label): Toggle off input method when entering math mode. * style/amsmath.el (LaTeX-amsmath-env-alignat) (LaTeX-amsmath-env-aligned): Ditto. * tex.el (TeX-toggle-off-input-method): Removed interactive. (TeX-math-input-method-off): New function. (TeX-insert-dollar): Use it. Do not call function TeX-toggle-off-input-method directly. 2003-06-03 Masayuki Ataka * tex.el (TeX-macro): Set group 'AUCTeX. 2003-06-03 David Kastrup * latex.el (LaTeX-mode-menu): Replace "Change Font" with "Replace Font" * tex-info.el (TeXinfo-mode-menu): Same here. * doc/tex-ref.tex (section{Font Selection}): Same here. 2003-06-03 Masayuki Ataka * tex.el (TeX-math-toggle-off-input-method): New user option. (TeX-toggle-off-input-method): New function. (TeX-insert-dollar): Use it. 2003-06-02 Masayuki Ataka * tex.el (TeX-near-bobp): Fixed typo in doc-string. 2003-05-27 Piet van Oostrum * latex.el (LaTeX-auto-minimal-regexp-list): Changed regexp to allow \documentclass[]{someclass}. 2003-05-02 Patrick Gundlach * context.el: ConTeXt-environment can now modify the current environment. Added preliminary functionality for calling a function on an environment. ConTeXt-mark-environment, ConTeXt-find-matching-stop and ConTeXt-find-matching-start (similar to the ones in latex.el) added. 2003-04-15 Reiner Steib * doc/wininstall.texi: Fixed typos in configure options. 2003-04-15 Patrick Gundlach * tex.el (TeX-command-list): Changed %v to %V in View. Now TeX-output-view-style is used for setting viewer preferences. See changes from 2003-02-06 below. 2003-04-15 Reiner Steib * .cvsignore: Added INSTALL and INSTALL.windows * Makefile.in (STYLESRC): Added captcont.el and subfigure.el 2003-04-15 Jan-ke Larsson * doc/wininstall.texi: Corrected download info for GNU Emacs 2003-04-14 Peter S Galbraith * font-latex.el (font-latex-match-*-keywords): New user customizable variables to add fontification keywords. See `M-x customize-group [RET] font-latex'. (font-latex-match-*-keywords-local): New buffer-local variables to be used by elisp style file writers. (font-latex-match-*-keywords-set): Support for defcustoms. (font-latex-match-*-make): Build the actual font-lock variables from the `font-latex-match-*-keywords' defcustoms. 2003-04-14 David Kastrup * doc/install.texi (Customizing): hilit-LaTeX.el deleted. 2003-04-14 Jan-ke Larsson * autogen.sh: Generate INSTALL and INSTALL.windows * doc/Makefile.in: Use the configure compatibility test results * doc/macros.texi: Compatibility macros, initial version * configure.in: Do the makeinfo tests, for compatibility with texinfo 3.12, test for tex * doc/install.texi: Changed to document the autoconf stuff * doc/wininstall.texi: Added 2003-04-10 David Kastrup * tex.el (AUCTeX): Fix URLs. * context.el: Fix AUCTeX URL. Make modification date RCS tag. 2003-04-09 Patrick Gundlach * tex.el (TeX-command-list): Changed ConTeXt Clean from purge to purgeall; I guess this behaves as users would expect. * context.el: minor cleanups, switched to the name "AUCTeX" where not done yet. Made ConTeXt-add-environments able to byte-compile. Added new copyright statement. * Makefile.in: Added context.el(c) 2003-04-09 Jan-ke Larsson * aclocal.m4: More sane emacs-macro path-searching. 2003-04-07 David Kastrup * tex.el (TeX-kpathsea-directory-alist): Fix bad kpathsea searchpath name for LaTeX files. 2003-04-03 Jan-ke Larsson * aclocal.m4: Make the emacs-macro path-searching tests run, and make EMACS_PROG_EMACS fail gracefully when no binary executable is found. 2003-03-29 David Kastrup * tex-buf.el (TeX-run-discard): Use `call-process' instead of `start-process' in order to completely detach a process. (TeX-region-extra): Make empty by default since code was not working with plain or ConTeXt. 2003-03-24 Masayuki Ataka * Makefile.in (CONTRIB): Remove hilit-LaTeX.el because it is obsolete. (contrib): Remove compile code for hilit-LaTeX.el. 2003-03-13 David Kastrup * style/german.el (LaTeX-german-quote-after-quote) (LaTeX-german-open-quote, LaTeX-german-close-quote): New variables to initialize quote stuff from. If you set these in file local variables, they will propagate accordingly to `TeX-quote-after-quote' et al. * style/ngerman.el (LaTeX-german-quote-after-quote) (LaTeX-german-open-quote, LaTeX-german-close-quote): the same. 2003-02-25 David Kastrup * Makefile.in (dist): Version info in tex.el gets automatically calculated from CVS tags. * tex.el: Some changes for dir slashiness. (TeX-master-directory): return a proper directory name, not a file name. * tex-buf.el (TeX-quote-filename): Return the changed file! Yikes! How could this ever have worked? 2003-02-24 David Kastrup * tex.el (AUCTeX-version): Generate automatically from CVS variables. (TeX-master-directory): somewhat more defensive version (final goal is to be able to make a TeX minor mode). 2003-02-22 David Kastrup * tex-wizard.el: A first sketch of the idea. 2003-02-17 Piet van Oostrum * tex.el (TeX-arg-literal): Remove illegal and superfluous &optional. * latex.el (TeX-arg-free): Remove illegal and superfluous &optional. 2003-02-17 David Kastrup * font-latex.el (font-latex-find-matching-close): Remove a very complicated way of doing nothing since the byte compiler warns about it. 2003-02-15 David Kastrup * tex.el (LaTeX): Change :prefix field to LaTeX. (TeX-auto-add-type): Make more readable and place doc string indicating the origin into generated functions. * font-latex.el (font-latex-setup): Try to behave better when the interesting newlines in verbatim environments get moved. Probably not the ultimate solution. * tex-site.el: AUC TeX to AUCTeX, new header. * Makefile.in: AUC TeX to AUCTeX. * latex.el: AUC TeX to AUCTeX, new header. * tex-buf.el (TeX-quote-filename): New function. (TeX-region-create): Use it so that Windows can talk about its master files properly. (TeX-help-error): Try not to have "log file has changed" messages. AUC TeX to AUCTeX, new header. * tex.el: AUC TeX to AUCTeX, new header. * auc-old.el: AUC TeX to AUCTeX, new header. * README.CVS: Check in a first version. Ok, it currently contains a few lies, but the basics are not wrong, and hopefully we will have soon what it takes to make it true. * doc/auc-tex.texi: Name change of AUC TeX to AUCTeX. A few other cleanups. * configure.in, Makefile.in, doc/Makefile.in: everything moves to autoconf, fix a few things. * Makefile, doc/Makefile: deleted. 2003-02-14 Patrick Gundlach * context.el: Added basic environment support (insert-envrionment and close-environment). Added basic interface support. * tex.el, latex.el : moved TeX-arg-literal and TeX-near-bopb from latex.el to tex.el. More will follow. 2003-02-13 David Kastrup * Makefile.in (clean): Remove .elc files. (distclean): new target. * aclocal.m4 (EMACS_EXAMINE_PACKAGEDIR): make this work properly more or less. (EMACS_CHECK_AUCTEX): use auctexdir instead of AUCTEXDIR (synch with preview-latex aclocal.m4) and strip trailing slash. 2003-02-11 Peter S Galbraith * hilit-LaTeX.el: Removed. It's obsolete. Use font-latex.el instead. 2003-02-11 Patrick Gundlach * tex.el (TeX-command-list): Changed TeX-run-LaTeX to TeX-run-TeX. * tex-buf.el (TeX-run-TeX): TeX-run-TeX gets the TeX-sentinel-function from the major mode, so TeX-run-LaTeX and alike won't be needed if they don't need to do something fancy. Defaliased TeX-run-LaTeX to TeX-run-TeX. (TeX-run-interactive): Uses TeX-sentinel-default-function instead of TeX-sentinel-function. * latex.el (latex-mode): Sets TeX-sentinel-default-function instead of TeX-sentinel-function. * tex-mik.el (TeX-command-list): Changed TeX-run-LaTeX to TeX-run-TeX. * tex-fptex.el (TeX-command-list): Changed TeX-run-LaTeX to TeX-run-TeX. 2003-02-08 Patrick Gundlach * tex-site.el: Added simple ConTeXt support. * latex.el (latex-mode): Added explicit set of TeX-sentinel-function to be used in TeX-run-interactive. * tex-buf.el: Added TeX-run-ConTeXt. Removed explicit call to TeX-LaTeX-sentinel in TeX-run-interactive. The sentinel-function is now inherited from the buffer calling TeX-run-interactive. Hopefully this won't break anything. * tex.el: Adapted TeX-command-list for ConTeXt support. Interfaces for texexec and texutil added. Nonstopmode (texexec) and purge (texutil) won't work right with current ConTeXt versions. This will be fixed in ConTeXt versions later than Feb 2003. * context.el: basic support for ConTeXt added. New sentinel-functiont that is different from the LaTeX one. 2003-02-08 pvoostrum * tex.el: Added missing semicolon in TeX-command-output-list. * tex.el: Changed defcustom to defvar. 2003-02-08 Piet van Oostrum * tex.el (TeX-output-extension, TeX-view-extension): Changed defcustom into defvar, as these are intermediate variables. 2003-02-07 Piet van Oostrum * tex.el (TeX-command-output-list): Corrected customization widget. 2003-02-06 Piet van Oostrum * tex-buf.el (TeX-save-document, TeX-command-query) (TeX-output-style-check, TeX-run-format, TeX-TeX-sentinel-check): Added support for pdftex (and others) (TeX-run-set-command, TeX-output-extension) (TeX-view-extension, TeX-view-output-file): new functions. * tex.el (TeX-output-extension, TeX-view-extension) (TeX-output-view-style, TeX-command-output-list): new variables (TeX-expand-list): adapted for pdf output. 2003-01-31 Jan-ke Larsson * configure.in: Use new lispdir check. * aclocal.m4: Some cleaning of macro names. Windows quoting by David Kastrup . Also, lispdir now checks (x)emacs load-path instead of physical disk content. * Makefile.in: Fix infodir 2003-01-30 Piet van Oostrum * tex-buf.el (TeX-parse-error): Exclude { and } from filenames to improve parsing of error messages from pdftex. 2003-01-24 Reiner Steib * tex.el (TeX-kpathsea-path-delimiter, TeX-search-files-kpathsea): Fixed braces. 2003-01-22 David Kastrup * tex.el (TeX-search-files): Check in first version of kpathsea support. This implementation does not yet cooperate properly with TeX-auto-generate-* 2003-01-18 David Kastrup * configure.in: Announce AUC TeX, not preview. 2003-01-16 Reiner Steib * style/varioref.el ("varioref"): Fixed typo. * Makefile.in (ELCC): `-no-init-file' is the same as `-q' 2003-01-15 Jan-Ake Larsson * configure.in, aclocal.m4: Compatibility fix * aclocal.m4 (AC_PROG_EMACS): New. File is now identical to that of preview-latex. * configure.in: Use it 2003-01-08 Jan-Ake Larsson * Makefile.in: From Makefile * configure.in, aclocal.m4, autogen.sh: Initial version * mkinstalldirs, install-sh: Prepare for autoconf 2002-12-29 David Kastrup * tex.el: Add support for Info-goto-emacs-command-node and similar. 2002-12-19 David Kastrup * tex-buf.el (TeX-home-buffer): Don't home to deleted buffers. * tex.el (TeX-command-list): Change single quotes to double. That way, we will get reasonable results under both Windows and Unix. File names with double quotes in them will break stuff, just like file names with single quotes in them did so previously. Tough. 2002-12-18 David Kastrup * tex-buf.el (TeX-run-shell): Start shell from TeX process buffer in order to inherit environment from there (like cwd). (TeX-run-discard): Same here. (TeX-run-shell, TeX-run-discard): Rather let default-directory temporarily: we may not have a TeX process buffer! 2002-12-17 Masayuki Ataka * all.el: Removed. unrelated to TeX mode. OBSOLETE files (all.el, auc-menu.el, maniac.el, and outln-18.el) are available at: 2002-12-15 David Kastrup * Makefile (dist): Correct zip file name. 2002-12-15 Masayuki Ataka * Makefile (MINMAPSRC): Remove auc-menu.el, maniac.el, and outln-18.el. 2002-12-15 David Kastrup * auctex.spec (Release): Well, change version number. retag. * Version 11.14 released. 2002-12-15 Masayuki Ataka * auc-menu.el: Removed. Taken into Emacs and unused. * maniac.el: Ditto. * outln-18.el: Ditto. 2002-12-15 David Kastrup * Makefile: some changes for my setup. 2002-12-14 David Kastrup * graphicsx.el: removed. superseded by graphicx.el and unused. 2002-12-13 Reiner Steib * latex.el (LaTeX-label): Added completing for labels. Avoid inserting an empty label. 2002-12-12 Reiner Steib * style/amsopn.el ("amsopn"): Added \operatorname. 2002-12-12 David Kastrup * doc/auc-tex.texi (top): Change "version 12" to "almost 12". This is beta, after all. 2002-12-12 Masayuki Ataka * tex-jp.el (japanese-LaTeX-style-list): Remove styles overlapped with LaTeX-style-list. Append values to LaTeX-style-list instead of overwriting. (japanese-latex-mode-initialization): Do not overwrite LaTeX-style-list. 2002-12-11 Reiner Steib * bib-cite.el: Updated URLs. * doc/intro.texi: Ditto. * font-latex.el: Ditto. * latex.el: Ditto. * tex.el: Ditto. * style/amsmath.el (LaTeX-amsmath-label): Improved doc-string. * doc/auc-tex.texi (Equations): New @subsection documenting LaTeX-equation-label, LaTeX-eqnarray-label and LaTeX-amsmath-label. 2002-12-11 Masayuki Ataka * tex-jp.el (japanese-LaTeX-default-style) (japanese-LaTeX-style-list): remove buffer-local declarations where they don't make sense. 2002-12-10 David Kastrup * doc/changes.texi: Some more news. * doc/auc-tex.texi: Start talking about version 12 (which will be the next stable release). (European): Talk a bit about LaTeX2e stuff, and don't talk about too ancient XEmacsen. Also mention X-Symbol. * doc/Makefile (install): Create infodir if not existent. 2002-12-10 Reiner Steib * font-latex.el (font-latex-match-textual): Fixed typo in doc-string. * latex.el (LaTeX-section-label): Fixed typos in doc-string. 2002-12-10 David Kastrup * latex.el (LaTeX-label): Fix a thinko/type where label would be non-nil in cases where a label should not be asked for. 2002-12-10 Reiner Steib * style/amsmath.el (LaTeX-amsmath-label): New variable. ("amsmath"): Add environments to LaTeX-label-alist. 2002-12-10 Masayuki Ataka * tex-jp.el: Remove if statement for Emacs 19. Fix lots of white spaces. 2002-12-09 David Kastrup * latex.el (LaTeX-optop, LaTeX-optcl, LaTeX-default-options, LaTeX-figure-label, LaTeX-table-label, LaTeX-equation-label, LaTeX-eqnarray-label, LaTeX-style-list): remove buffer-local declarations where they don't make sense. 2002-12-09 Reiner Steib * latex.el (LaTeX-style-list): Added some supported classes. Fixed a typo. * style/amsmath.el ("amsmath"): environment "xxalignat*" doesn't exist. (LaTeX-amsmath-env-alignat): environment "xxalignat" should not get a \label. * Makefile (BATCH): Added `-no-site-file' to batch options. 2002-12-07 David Kastrup * font-latex.el (font-latex-setup): Better stab at verbatim handling. * tex-buf.el (TeX-region-create): Make file name in !name messages relative to master file directory. 2002-12-06 David Kastrup * latex.el: Lots of doc fixes/white space. Did the mistake of running checkdoc. Not clean yet, but different. (LaTeX-label-alist): New buffer-local variable for label prefixes lookup. (LaTeX-label): Use it. 2002-11-25 David Kastrup * latex.el (TeX-arg-define-index): correct typo. 2002-11-25 Per Abrahamsen * Version 11.13 released. 2002-11-25 Per Abrahamsen * tex.el: Fixed CVS merge error. * Version 11.12 released. 2002-10-28 David Kastrup * Makefile (prefix): Revert accidental change to /usr/local/emacs-21 (sorry folks). 2002-10-26 David Kastrup * Makefile (STYLESRC): Add style/scrlttr2.el 2002-10-26 Mark Trettin * style/scrbase.el: Added optional Argument "Pagenumber" to \maketitle. Changed \textsubscript from `t' to "Text". * style/scrlttr2.el: Initial version. * style/scrbase.el: Added additional clearpage commands: \cleardoublestandardpage \cleardoubleplainpage and \cleardoubleemptypage 2002-10-24 Masayuki Ataka * latex.el (LaTeX-env-contents): New function. (LaTeX-common-initialization): Added 26 LaTeX commands, 2 LaTeX2e environments, and 41 LaTeX2e commands. 2002-10-08 David Kastrup * style/scrreprt.el, style/scrbase.el, style/scrartcl.el, style/scrbook.el: header comments refer to COPYING. 2002-10-02 David Kastrup * Makefile (STYLESRC): Add compilation targets for Komascript support. * Check in Komascript support by Mark Trettin. See below. 2002-09-28 Mark Trettin * scrbase.el: First attempt on implementing the `captionbeside'-Environment. I'm not really satisfied by now. 2002-09-27 Mark Trettin * scrreprt.el, scrbook.el: Reformatted code. * scrbase.el: Fixed Typos in comments and escape characters in function docstrings. Thanks to Reiner Steib. Reformatted code. * scrbase.el: Changed `uppertitleback', `lowertitleback' from asking to just `t' * scrbase.el: Changed `addpart', `addsec' and `minisec' from Macro to sectioning command. * scrreprt.el, scrbook.el: Changed `addchap' from Macro to sectioning command. 2002-09-26 Mark Trettin * scrartcl.el: LaTeX-section-list removed. * scrartcl.el: Initial version. Testing LaTeX-section-list. * scrbase.el: Initial version of the base file. * scrreprt.el, scrbook.el: Initial version. * scrbook.el, scrbase.el, scrreprt.el, scrartcl.el: 2002-09-22 David Kastrup * tex.el: Apply spelling fixes from "Davide G. M. Salvetti" to tex.el. 2002-03-24 David Kastrup * tex-buf.el (TeX-parse-TeX): Make subordinate files without major mode default to that of the calling file when doing error processing. 2002-03-21 Per Abrahamsen * tex-site.el (eamcs-major-version): Changed if to when. Suggested by Martin Thornquist . 2002-03-15 David Kastrup * tex.el (TeX-master-file): Don't make C-c ` bomb out in files like xxx.gls. Probably a more elaborate way would be to export the TeX-master variable into files visited by error parsing. Could be incorrect, however, if more than one file included them. 2002-02-15 Per Abrahamsen * tex.el (TeX-auto-generate): Expand file name. Suggested by "Dr. Mark A. Friedman" . * latex.el (LaTeX-common-initialization): Set `fill-paragraph-function'. (LaTeX-mode-map): Don't bind M-q. Suggested by Nils Klarlund . * tex.el (TeX-printer-list): Fixed spelling. Reported by Nils Klarlund . 2002-02-14 Per Abrahamsen * tex.el: Fixed some spelling errors. Patch by "Davide G. M. Salvetti" . 2002-01-24 Per Abrahamsen * Version 11.11 released. 2002-01-24 Masayuki Ataka * tex.el (TeX-format-list): Support t(article|report|book) class file. Reported by Atsuhito Kohda * tex-jp.el (japanese-TeX-command-list): Undo last change. (LaTeX-command-style): Support t(article|report|book) class file. (japanese-LaTeX-style-list): Ditto. Reported by Atsuhito Kohda 2002-01-21 Peter S Galbraith * font-latex.el: Updated to V0.800. Added font-lock-syntactic-keywords to font-lock-defaults to handle verbatim environment, as suggested by Stefan Monnier 5 years ago (!) * bib-cite.el: Updated to V3.17. XEmacs has imenu after all. 2002-01-21 Masayuki Ataka * tex.el (TeX-format-list): Fix problem that AUC TeX switch to JLATEX mode if the class file starts with the letter `j'. Reported by Joe Reinhardt . * tex-jp.el (LaTeX-command-style): Support js(article|book). 2002-01-21 Atsuhito Kohda (tiny change) * tex-jp.el (japanese-TeX-command-list): Use `%l' instead of [pj]latex command. 2002-01-18 Per Abrahamsen * tex.el (LaTeX-command-style): Fix comment. Reported by Atsuhito Kohda via. Debian. * latex.el (LaTeX-outline-name): Allow longer names. Reported by "Michael Soulier" via. Debian. 2001-12-22 Per Abrahamsen * latex.el (LaTeX-imenu-create-index-function): Strip text properties. Reported by Venkatesh Prasad Ranganath . 2001-12-13 Per Abrahamsen * style/prosper.el: New file. Contributed by Phillip Lord . * Makefile (STYLESRC): Added it. 2001-11-27 Per Abrahamsen * Version 11.10 released. 2001-11-26 Per Abrahamsen * Version 11.09 released. 2001-11-26 Per Abrahamsen * auc-old.el (insert-mode-line): Use `insert' instead of `insert-string'. 2001-10-27 Per Abrahamsen * latex.el (LaTeX-ignore-comment-regexp): Doc fix. Reported by Reuben Thomas . 2001-11-16 David Kastrup * tex-buf.el (TeX-process-check): We didn't catch the case where during the question a different process got started in the buffer. In that case, we just ask again. 2001-11-06 David Kastrup * tex-buf.el (TeX-command-sentinel): insert post-mortem info before any markers in order to keep markers/point at end of file. 2001-11-02 Masayuki Ataka * style/graphicx.el (TeX-arg-includegraphics): Accept prefix argument and find all files. dvipdfm image file support. 2001-10-19 Masayuki Ataka * tex-jp.el (japanese-TeX-command-list): Fixed for mendex. * doc/auc-tex.texi (Japanese): Doc fix. 2001-10-17 Per Abrahamsen * Version 11.08 released. 2001-10-17 Per Abrahamsen * doc/intro.texi, doc/install.texi: Updated contact info. Reported by Henrik Holm . 2001-10-16 Per Abrahamsen * Version 11.07 released. 2001-10-16 Per Abrahamsen * tex.el (VirTeX-common-initialization): Set `comment-add' in order to get "%%" by default by comment region like Lisp mode. Suggested by "Davide G. M. Salvetti" . Change `comment-indent-hook' to `comment-indent-function'. 2001-10-15 Peter S Galbraith * font-latex.el: Remove self-installation to LaTeX-mode-hook now that TeX-install-font-lock does it. 2001-10-15 Per Abrahamsen * Version 11.06 released. 2001-10-15 Per Abrahamsen * tex.el: Removed font lock support. (TeX-install-font-lock): New option. (VirTeX-common-initialization): Call it. * tex-font.el: New file. 2001-10-13 David Kastrup * tex-buf.el (TeX-current-offset): The number of things that can go wrong for a simple task like determining the current line number is simply amazing. count-lines skips over newlines in intangible text-properties or overlays. Fixed for GNU Emacs, don't know whether XEmacs has problems with it. 2001-10-13 Per Abrahamsen * Version 11.05 released. 2001-10-12 David Kastrup * tex-buf.el (TeX-run-command): Let the TeX-process-buffer acquire a buffer-local value of TeX-command-buffer so that its sentinel will still refer to the right buffer even if another compilation has been started. (TeX-run-interactive): Same here. (TeX-process-check): Don't bomb out when user does not want to kill a process that has died on its own in the meantime. 2001-10-11 Per Abrahamsen * tex.el (TeX-auto-local, TeX-style-local): Doc fix: Mention that these should be relative. Suggested by . 2001-10-09 Per Abrahamsen * Version 11.04 released. 2001-10-09 Per Abrahamsen * tex.el (TeX-view-style): New option. (TeX-expand-list): Use it. (TeX-command-list): Use it. 2001-10-05 Per Abrahamsen * Version 11.03 released. 2001-10-05 Per Abrahamsen * style/amsmath.el ("amsmath"): More items. Patch by Masayuki Ataka . 2001-10-04 Per Abrahamsen * tex-buf.el (TeX-LaTeX-sentinel): Use `with-current-buffer'. * tex-buf.el (TeX-LaTeX-sentinel): Use the value of `TeX-command-BibTeX' in `TeX-command-buffer'. Patch by Katsuaki KAWACHI . * tex-fptex.el: New file. Contributed by Fabrice Popineau . * Makefile (CONTRIB): Added it. 2001-10-04 Peter S Galbraith * multi-prompt.el (multi-prompt-next): fixed for emacs-21. Use minibuffer-contents-no-properties to get minibuffer contents if it exists. 2001-10-03 Per Abrahamsen * Version 11.02 released. 2001-10-03 Per Abrahamsen * latex.el (LaTeX-top-caption-list): New option. (LaTeX-env-figure): Use it. Patch by ataka@milk.freemail.ne.jp (Masayuki Ataka). * style/graphicx.el (TeX-string-numberp): New function. (TeX-arg-includegraphics): Call it. Patch by ataka@milk.freemail.ne.jp (Masayuki Ataka). * style/verbatim.sty: New file. Contributed by ataka@milk.freemail.ne.jp (Masayuki Ataka). * tex-info.el (texinfo-mode): Comment out cindex. Reported by Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Grojohann) * style/amsmath.el (LaTeX-item-equation, LaTeX-item-equations): New functions. ("amsmath"): Add new item types. Patch by ataka@milk.freemail.ne.jp (Masayuki Ataka). 2001-10-02 Per Abrahamsen * Version 11.01 released. 2001-10-01 Per Abrahamsen * latex.el (LaTeX-submenu-name-format): Fixed spelling error. Reported by Martin.Quinson@ens-lyon.fr. 2001-10-01 David Kastrup * tex-buf.el (TeX-region-create): Oops, broke more than I fixed. Offset calculation must be for the line following the offset message. This worked before since we always were in the middle of a line (only the offset calculation for the C-c C-r command itself was definitely sometimes wrong). Corrected that. * style/graphicx.el (TeX-arg-includegraphics): Fixed an obvious typo complained about by the byte-compiler. checkdoc removed a few spaces. * auc-old.el (TeX-region): Correct offset calculation. * tex.el (TeX-current-line): Correct line number calculation when at beginning of line for %n flag. Autoload TeX-current-offset for that if necessary. * tex-buf.el (TeX-current-offset, TeX-command-region, TeX-region-create): Correct offset calculations when not at start of line. New function TeX-current-offset for that. 2001-04-11 Per Abrahamsen * Version 10.0g released. 2001-04-11 Per Abrahamsen * tex-site.el: Don't enable tex-info.el by default. * latex.el (LaTeX-hide-environment): Disabled by default. Suggested by Christopher Allen . 2001-03-27 Per Abrahamsen * Version 10.0f released. 2001-03-27 Per Abrahamsen * tex.el (unless): Don't enable Emacs 21 font-lock for Emacs 20. (VirTeX-common-initialization): Ditto. 2001-03-26 Per Abrahamsen * Version 10.0e released. 2001-03-26 Per Abrahamsen * tex.el (TeX-expand-list): Changed default to lazy evaluation of `TeX-view-style' and `LaTeX-command-style'. Suggested by Peter Neergaard . * latex.el (LaTeX-indent-calculate, LaTeX-indent-calculate-last): Backindent when brace is at the start of a line. Patch by Masashi Shimbo . * doc/auc-tex.texi: Fixed dir entry. Reported by David Masterson . * tex-info.el (TeXinfo-mode-map): "\e\r" bound to `map', not `TeXinfo-mode-map'. Patch by Dan Nicolaescu . 2001-03-01 Hidenobu Nabetani * tex-jp.el: Don't work correctly in current AucTeX. Patch by Masayuki Ataka and Yuzo Furukawa . Removed support for NEmacs and Mule1,2 which are based on Emacs 18 and 19. Created new variable japanese-TeX-command-list and added support for mendex. Updated LaTeX-auto-regexp-list variable. 2001-01-09 Per Abrahamsen * all: Changed `sunsite.auc.dk' to `sunsite.dk'. 2001-01-02 Per Abrahamsen * Version 10.0d released. 2001-01-02 Per Abrahamsen * tex-mik.el (TeX-command-list): Don't prompt for view. 2000-12-04 Per Abrahamsen * Version 10.0c released. 2000-12-04 Per Abrahamsen * tex.el: Avoid :inherit font property with Emacs 20. Reported by Damien WYART . 2000-12-01 Per Abrahamsen * Version 10.0b released. 2000-11-30 Per Abrahamsen * Version 10.0a released. 2000-11-30 Per Abrahamsen * tex.el: Copied Emacs 21 font-lock defs here. (VirTeX-common-initialization): Activate them. 2000-10-25 Per Abrahamsen * PROBLEMS: Updated. * WIN-NT: Removed. * MSDOS: Removed. * VMS: Removed. * OS2: Removed. * Makefile (EXTRAFILES): Removed above files. 2000-10-20 Per Abrahamsen * style/graphicx.el: Updated by author. Ryuichi Arafune 2000-10-19 Per Abrahamsen * style/graphics.el: New file. * Makefile (STYLESRC): Added it. * style/graphicx.el: Renamed from `style/graphicx.el'. * Makefile (STYLESRC): Updated. Reported by "Dr. Thomas Baumann" . 2000-10-09 Per Abrahamsen * Version 9.10t released. 2000-10-09 Per Abrahamsen * latex.el (LaTeX-outline-name): Don't escape `{' or `}' in regexps. Patch by "Stefan Monnier" . * tex-mik.el (TeX-command-list): Use `TeX-run-discard' for "View" command. Suggested by "Claus Dethlefsen" . * latex.el (LaTeX-common-initialization): `\bibitem' starts paragraphs, just like `\item'. Reported by Werner LEMBERG . 2000-10-06 Per Abrahamsen * tex.el (TeX-current-line): Return a string, not a number. Reported by Julia Habel . Patch by Dirk.Ullrich@DaimlerChrysler.com. 2000-06-15 Per Abrahamsen * tex-site.el: Require tex-mik after changing load-path. Reported by "I. Jossang" . 2000-06-13 Per Abrahamsen * IRIX: New file. * Makefile (EXTRAFILES): Added it. 2000-05-10 Per Abrahamsen * Version 9.10s released. 2000-05-03 Per Abrahamsen * Version 9.10r released. 2000-05-02 Per Abrahamsen * tex.el (TeX-mode-map): Don't bind `.' and `,' by default. 2000-05-03 Peter Galbraith * font-latex.el: file was broken. Updated to 0.701 (30 Mar 2000). * bib-cite.el: file was broken. Updated to 3.16 (20 Dec 99). 2000-04-14 Per Abrahamsen * Version 9.10q released. 2000-03-30 Per Abrahamsen * style/graphicsx.el: New file. * Makefile (STYLESRC): Added it. Donated by Ryuichi Arafune . 2000-04-14 Per Abrahamsen * Version 9.10q released. 2000-03-23 Per Abrahamsen * latex.el (LaTeX-math-keymap): Accept vector for `LaTeX-math-abbrev-prefix'. (LaTeX-math-insert-prefix): Better error message if `LaTeX-math-abbrev-prefix' is not bound. Reported by Jan Vroonhof . 2000-02-23 Per Abrahamsen * tex-info.el (TeXinfo-environment-list): Added more missing environments. Patch by Akim Demaille . 2000-02-22 Per Abrahamsen * tex-info.el (TeXinfo-environment-list): Add `group'. Patch by Akim Demaille . 2000-01-28 Per Abrahamsen * tex.el (TeX-command-list): Add `makeinfo --html' support. Suggested by Akim Demaille . 2000-01-20 Per Abrahamsen * tex-info.el (TeXinfo-mode-map): Added "\e\r" binding for `texinfo-insert-@item'. Reported by Akim Demaille . (TeXinfo-mode-menu, texinfo-mode): Changed menu name and mode name to `Texinfo'. Suggested by Akim Demaille . 1999-12-21 Per Abrahamsen * bib-cite.el: Updated to 3.16 (20 Dec 99). * font-latex.el: Updated to 0.700 (20 December 1999). 2000-03-30 Peter Galbraith * font-latex.el: Updated to 0.701 (30 Mar 2000). 2000-01-14 Peter Galbraith * bib-cite.el: Updated to 3.16 (20 Dec 99). * font-latex.el: Updated to 0.700 (20 Dec 99). * hilit-LaTeX.el: Changed author email address. 1999-12-20 Per Abrahamsen * Version 9.10p released. 1999-12-20 Per Abrahamsen * bib-cite.el: Updated to 3.15 (20 Dec 99). * tex-mik.el (TeX-command-list): Fixed default PDF LaTeX command. Reported by "Christian Schlauer" . * Version 9.10o released. 1999-12-20 Per Abrahamsen * bib-cite.el: Updated to 3.13 (20 Dec 99). 1999-12-11 Per Abrahamsen * style/danish.el ("danish"): Support Danish quotes. Suggested by arne@daimi.au.dk (Arne Jrgensen). 1999-12-03 Per Abrahamsen * tex-info.el (texinfo-mode): Added `kill-all-local-variables'. Reported by Stefan Monnier . * Version 9.10n released. 1999-12-03 Per Abrahamsen * tex-mik.el: Fixed typo. Reported by Bernt Guldbrandtsen 1999-12-01 Per Abrahamsen * Version 9.10m released. 1999-12-01 Per Abrahamsen * Makefile (AUCSRC, AUCELC): Added `tex-mik.el'. 1999-11-26 Per Abrahamsen * Version 9.10l released. 1999-11-26 Per Abrahamsen * latex.el (LaTeX-env-figure): Use `\centering' instead of `center' environment. Patch by Stefan Monnier . 1999-11-25 Per Abrahamsen * tex-mik.el (tex-mik): Add provide. * tex-site.el: Automatically require `tex-mik.el' under NT. 1999-11-12 Per Abrahamsen * tex.el (TeX-current-file-name-nondirectory): New function. (TeX-expand-list): Use it. 1999-11-10 Per Abrahamsen * doc/auc-tex.texi: Fixed references. Patch by Stefan Monnier . * tex.el (TeX-lisp-directory): Use `locate-library' to find default under Emacs. Patch by Stefan Monnier . (TeX-dwim-master): New function. (TeX-master-file): Use it. (TeX-master): Document it. Patch by Stefan Monnier . 1999-11-06 Per Abrahamsen * Version 9.10k released. 1999-11-06 Per Abrahamsen * latex.el: Use `indent-according-to-mode' instead of `LaTeX-indent-line'. (LaTeX-mode-map): Don't remap `TAB'. Patch by "Stefan Monnier ". 1999-11-03 Per Abrahamsen * tex.el (TeX-command-list): Added `LaTeX PDF' command. 1999-10-28 Per Abrahamsen * Version 9.10j released. 1999-10-27 Per Abrahamsen * Makefile (dist): Create a .nosearch in the style directory. (install-lisp): Ditto. Suggested by Markus Rost . 1999-10-26 Per Abrahamsen * Version 9.10i released. 1999-10-26 Per Abrahamsen * tex.el (TeX-master-directory): Call `substitute-in-file-name'. Patch by Alexander Holt . * style/ngerman.el: New style. Suggested by Torsten Schuetze . * Makefile (STYLESRC): Added it. * tex-buf.el (TeX-command-query): Added history argument. Suggested by Werner LEMBERG . * latex.el (LaTeX-environment): Added history argument. * tex.el (TeX-add-style-hook): Don't add the same hook twice. Suggested by Jarl Friis . * tex.el: Removed portability code for old Emacsen. 1999-10-25 Per Abrahamsen * Version 9.10h released. 1999-09-27 Per Abrahamsen * latex.el (LaTeX-auto-cleanup): Allow multiple packages for `usepackage'. Reported by Torsten Schuetze . (LaTeX-auto-cleanup): Also add "unmangled" documentstyle. Reported by Cyril Humbert . 1999-09-09 Per Abrahamsen * style/mdwlist.el: New file. Patch by Stephen Heilbronner . * Makefile (STYLESRC): Added it. 1999-08-20 Per Abrahamsen * Version 9.10g released. 1999-08-20 Hidenobu Nabetani * tex.el (TeX-format-list): Add "JLATEX" and "JTEX" which is needed to load tex-jp.el automatically. * tex-jp.el (TeX-format-list): Remove "JLATEX" and "JTEX". 1999-08-19 Per Abrahamsen * latex.el (LaTeX-hide-environment, LaTeX-show-environment): make them work with new outline mode. Reported by Thomas Schick . * tex.el (match-string): New compatibility function. Reported by Andrew Edward Santosa . 1999-08-18 Hidenobu Nabetani * tex-jp.el (TeX-command-list): Add "jLaTeX" and "pLaTeX". (TeX-mode-menu): Fix the problem that menu "TeX" is unchanged. (TeX-japanese-process-input-coding-system): Update for Emacs 20. (TeX-japanese-process-output-coding-system): Update for Emacs 20. (TeX-command-default): Change from "j-article" to "jarticle". (LaTeX-fill-region-as-para-do): Fix the problem that fill mode don't work in Emacs 20. 1999-07-16 Per Abrahamsen * Version 9.10f released. 1999-07-16 Per Abrahamsen * latex.el (LaTeX-auto-minimal-regexp-list): Recognize usepackage options. (LaTeX-auto-cleanup): Ditto. 1999-07-15 Per Abrahamsen * tex.el (TeX-ignore-file): Ignore babel, it loads everything. Reported by Mate Wierdl . * style/foils.el: Removed require 'latex. * style/natbib.el: Ditto. * style/harvard.el: Ditto. * style/slides.el: Ditto. * style/latexinfo.el: Ditto. Reported by Mate Wierdl . * Makefile (infodir, lispdir, aucdir, EMACS): Use `standard' values. Reported by Mate Wierdl . * tex-info.el (texinfo-mode): Fix doc string. Reported by Bob Weiner . 1999-05-17 Jerry James * tex.el: Fix two typos in comments. (set-text-properties): Protect against possible XEmacs version 21.13, 22.13, etc. 1999-05-14 Per Abrahamsen * latex.el (LaTeX-indent-environment-list): Customized. * Version 9.10e released. 1999-05-14 Per Abrahamsen * tex.el: (TeX-auto-generate): Reimplemented support for numeric `TeX-file-recurse'. (TeX-search-files): Ditto. 1999-05-03 Rune Kleveland * style/amsart.el ("amsart"): Load `amsthm.el'. * style/amsbook.el ("amsbook"): Ditto. 1999-03-29 Per Abrahamsen * Version 9.10d released. 1999-03-29 Per Abrahamsen * doc/changes.texi: Added extra `@'. * Version 9.10c released. 1999-03-19 Carsten Dominik * tex.el (TeX-insert-dollar): Better error message when trying to insert a dollar in math-mode. * texmathp.el (texmathp-tex-commands-default): Added more default macros. 1999-03-12 Carsten Dominik * latex.el (TeX-arg-index-tag): New function, to be used by the index.el and multind.el style files. (LaTeX-auto-index-regexp-list): Now matches both \index and \glossary. (TeX-arg-index): Renamed from TeX-arg-define-index. (TeX-arg-define-index): Now an alias for `TeX-arg-index'. (LaTeX-common-initialization): Added a regexp for index and glossary to `TeX-complete-list'. Added entry for glossary with `Tex-add-symbols'. * style/index.el: New file. * style/makeidx.el: New file. * style/multind.el: New file. * style/varioref.el: New file. * style/fancyref.el: New file. * Makefile (STYLESRC): Added `style/index.el', `style=makeidx.el', `style/multind.el', `style/varioref.el', `style/fancyref.el'. 1999-02-23 Per Abrahamsen * tex.el (TeX-search-files): `nconc' the result. Reported by Berwin Turlach . 1999-02-11 Per Abrahamsen * Version 9.10b released. 1999-02-11 Per Abrahamsen * doc/changes.texi: Typo: @ldots -> @dots. * Version 9.10a released. * doc/auc-tex.texi: Changed version to 9.10. * doc/history.texi: Ditto. * doc/changes.texi: Ditto. 1999-02-11 Per Abrahamsen * Version 9.9p released. 1999-02-08 Per Abrahamsen * tex-jp.el (TeX-format-list): Fix JLATEX format. Patch by Tsutomu OKUMURA . * style/foils.el (LaTeX-style-foils): Removed spurious `\n'. Reported by Bernt Guldbrandtsen . 1999-02-05 Per Abrahamsen * Makefile (install-contrib): Added `$(CONTRIBELC)' dependency. Suggested by Nils Ackermann . 1999-01-29 Per Abrahamsen * tex.el (TeX-search-files): `mapcar' instead of `mapcan'. 1999-01-12 Per Abrahamsen * tex.el (TeX-font-replace-macro): Renamed from `LaTeX2e-font-replace'. Use `TeX-esc'. * latex.el (LaTeX-common-initialization): Use it. * tex-info.el (texinfo-mode): Ditto. (TeXinfo-font-list): Add `delete'. Suggested by Christoph Wedler . 1999-01-11 Per Abrahamsen * Version 9.9o released. 1999-01-11 Per Abrahamsen * tex.el (TeX-insert-braces, TeX-command-list): Fixed custom types. Patch by Markus Rost . 1999-01-09 Christoph Wedler * latex.el (LaTeX2e-font-replace): Don't use hard-coded regexp for font commands, use local `TeX-font-list', i.e., `LaTeX-font-list'. 1999-01-05 Christoph Wedler * tex.el (TeX-load-style-file): Do not prevent .elc style files to be loaded if `TeX-byte-compile' is nil, just prevent compilation. (TeX-lisp-directory): Only use `locate-data-directory' if this function is defined and AucTeX is installed as an XEmacs package. 1998-12-12 Christoph Wedler * tex.el (load-path): Don't add `TeX-lisp-directory'. (TeX-lisp-directory): Use `locate-data-directory' if present. 1998-12-12 Per Abrahamsen * Version 9.9n released. 1998-12-12 Per Abrahamsen * tex.el (TeX-file-recurse): Added right parenthesis. Reported by Bernt Guldbrandtsen . 1998-12-11 Per Abrahamsen * Version 9.9m released. 1998-12-11 Per Abrahamsen * font-latex.el: Updated. * bib-cite.el: Ditto. * Version 9.9l released. 1998-12-01 Alastair Burt * doc/auc-tex.texi (Automatic): * lisp/tex.el: Extended the semantics of TeX-file-recurse -- now accepts a positive integer as a bound on the recursion. Functions TeX-search-files and TeX-auto-generate have been amended appropriately. 1998-11-23 Carsten Dominik * texmathp.el (texmathp): Added autoload cookie. 1998-11-20 Per Abrahamsen * Version 9.9k released. 1998-11-20 Per Abrahamsen * tex.el (TeX-load-style-file): Protect `byte-compile-file'. Reported by Kurt Swanson . * latex.el (LaTeX-outline-name): New function. (LaTeX-imenu-create-index-function): New function. (LaTeX-common-initialization): Use it. * tex-buf.el (TeX-run-interactive): Make sure buffer is writable (needed in Emacs 20.3). Reported by many. 1998-10-15 Per Abrahamsen * doc/auc-tex.texi (European): Removed references to obsolete packages. 1998-07-29 Per Abrahamsen * Version 9.9j released. 1998-07-29 Per Abrahamsen * tex-buf.el (TeX-run-ispell-on-document, TeX-ispell-document): New functions. * tex.el (TeX-command-list): Use them. Patch by Jason Stewart . * Version 9.9i released. 1998-07-29 Per Abrahamsen * tex.el (TeX-parse-macro, TeX-arg-string, TeX-parse-argument): If region is active, put it inside empty brackets. Patch by Peter Thiemann . 1998-07-16 Per Abrahamsen * tex.el (plain-TeX-auto-regexp-list): Add missing \\'es. Reported by Markus Rost t4287 . 1998-07-14 Per Abrahamsen * Version 9.9h released. 1998-07-14 Per Abrahamsen * tex.el (TeX-insert-dollar): Use `string-equal' to compare strings. Patch by Carsten Dominik . 1998-06-25 Per Abrahamsen * Version 9.9g released. 1998-06-25 Per Abrahamsen * latex.el (LaTeX-auto-index-regexp-list): Remove extra quote. Patch by Carsten Dominik . 1998-06-24 Per Abrahamsen * Version 9.9f released. 1998-06-24 Per Abrahamsen * latex.el (LaTeX-auto-index-regexp-list): Fix parentheses. * texmathp.el (texmathp): Use `if (not' instead of `unless'. Patch by Carsten Dominik . 1998-06-15 Per Abrahamsen * Version 9.9e released. 1998-06-15 Per Abrahamsen * doc/Makefile (auc-tex.ps): Use `-o' to specify output file. Suggested by Paul McJones . 1998-06-12 Carsten Dominik * latex.el (LaTeX-font-list): Default value now contains special math font commands. (LaTeX2e-font-replace): Added support for math fonts. * tex.el (TeX-font-list): Docstring changed. Extra prefix and suffix for math fonts allowed. (TeX-describe-font-entry): Adapted to extended `TeX-font-list'. (TeX-font): Detects math mode (using `texmathp') and inserts special math font commands when available. 1998-06-11 Carsten Dominik * tex.el: (TeX-insert-dollar): Rewritten with `texmathp'. (TeX-dollar-verify, TeX-locate-delimiter, TeX-bouncing-point): Obsolete functions removed. 1998-06-11 Carsten Dominik * latex.el: Made index entries available for global completion like labels and citation keys. (TeX-arg-index, TeX-arg-define-index): New functions. 1998-06-10 Carsten Dominik * natbib.el ("natbib"): Rewritten to allow for more flexible control of optional note arguments. New macros in NatBib 6 supported. Added support for RefTeX. 1998-06-10 Per Abrahamsen * Version 9.9d released. 1998-06-10 Per Abrahamsen * texmathp.el: New version from Dominik. * Version 9.9c released. 1998-06-10 Per Abrahamsen * tex.el (texmathp): Added autoload. (TeX-math-mode-p): Deleted. (TeX-parse-macro): Use `texmathp' instead of `TeX-math-mode-p'. * texmathp.el: New file by Carsten Dominik . * Makefile (AUCSRC): Added. (AUCELC): Added. 1998-06-05 Per Abrahamsen * tex.el (TeX-expand-list): Add `%n' escape. (TeX-current-line): New function. Suggested by "Lee, Sang-Min" . * doc/auc-tex.texi: Doc fixes by Gustavo Chaves . * doc/intro.texi: Ditto. * doc/install.texi: Ditto. 1998-05-16 Per Abrahamsen * latex.el: Checkdoc'ed. 1998-04-29 Per Abrahamsen * doc/README: Update iesd->sunsite in addresses. 1998-04-03 Per Abrahamsen * doc/Makefile (auc-tex.ps): Cut of the first two lines. 1998-03-29 Carsten Dominik * latex.el (LaTeX-section-section): When RefTeX is available, notify it about the new section. 1998-03-04 Per Abrahamsen * doc/math-ref.tex (section{Symbols}): Wrong keybindings. Reported by "Ron Smith" . 1998-02-27 Soren Dayton * tex.el (TeX-load-style): Also look in master directory. 1998-02-27 Per Abrahamsen * tex.el (TeX-insert-punctuation): Only expand abbrevs when abbrev mode is on. Suggested by Alastair Burt . 1998-02-25 SL Baur * doc/auc-tex.texi: Add direntry section for automatic installation. 1998-02-25 Per Abrahamsen * Version 9.9b released. 1998-01-02 John Griffith * latex.el (LaTeX-auto-regexp-list): Recognize empty optional arguments and macros in optional arguments. * tex.el (TeX-parse-argument): minor spelling correction. (TeX-argument-insert): ditto 1998-02-25 Per Abrahamsen * tex.el (TeX-match-extension): Fold case when matching extensions. 1998-02-20 Per Abrahamsen * Version 9.9a released. 1998-02-20 Per Abrahamsen * Version 9.8l released. 1998-02-20 Per Abrahamsen * Version 9.8k released. 1998-02-12 Per Abrahamsen * latex.el (LaTeX-math-list): Make tags match doc string. 1998-01-28 Per Abrahamsen * Version 9.8j released. 1998-01-28 Per Abrahamsen * tex-jp.el: Added credit. Patch by KOBAYASHI Shinji . 1997-12-10 Per Abrahamsen * tex-site.el: Added `defcustom' kludge to tex-site.el. Suggested by "Ralph J. Hangleiter" . 1997-10-27 Per Abrahamsen * latex.el (TeX-arg-input-file): Add trailing slash. (TeX-arg-bibstyle): Ditto. (TeX-arg-bibliography): Ditto. Patch by Ching-Mo Chang . 1997-10-20 Per Abrahamsen * Version 9.8i released. 1997-10-20 Per Abrahamsen * Version 9.8h released. 1997-10-20 Per Abrahamsen * Version 9.8g released. 1997-10-20 Peter S Galbraith * font-latex.el: Updated to V0.504 (Oct 20 97) * bib-cite.el: Updated to 3.04 (Aug 25 97) * hilit-LaTeX.el: Updated to V1.17 (Sep 06 95) 1997-10-01 kifer@CS.SunySB.EDU (Michael Kifer) * tex.el (TeX-insert-punctuation): Expand abbrevs in the beginning. 1997-09-11 Per Abrahamsen * tex-buf.el (TeX-run-silent): New function. * tex.el (TeX-command-list): Changed default for view from `TeX-run-background' to `TeX-run-silent'. 1997-09-10 "Dr. Werner Fink" * style/dinbrief.el: Updated. 1997-09-08 karlheg@inetarena.com (Karl M. Hegbloom) * tex-info.el (texinfo-mode): Regexp fix. 1997-08-29 David J. Rowe * latex.el (LaTeX-auto-regexp-list): Added support so newcommand*, renewcommand*, providecommand*, newenvironment* and renewenvironment* are recognized by TeX-auto-generate and TeX-auto-generate-global. (LaTeX-common-initialization): Added all of above "starred" commands to symbol list and added providecommand to symbol list. 1997-08-29 Per Abrahamsen * Version 9.8f released. 1997-08-29 Carsten Dominik * amsmath.el ("amsmath"): Added environments xalignat and xxalignat, and starred forms 1997-08-22 Christoph Wedler * tex-buf.el (TeX-region-create): Also bind `orig-buffer' which might be useful in `TeX-region-hook'. 1997-07-14 Per Abrahamsen * Version 9.8e released. 1997-07-14 Per Abrahamsen * Makefile (STYLESRC): Added `style/natbib.el'. 1997-07-13 Berwin Turlach * Added style support for natbib.sty 1997-07-11 Per Abrahamsen * Version 9.8d released. 1997-07-11 Jan Vroonhof * latex.el (LaTeX-auto-regexp-list): More LaTeX2e support. 1997-07-05 Berwin Turlach * latex.el (BibTeX-auto-store): make TeX-master a local variable and set it to true. 1997-07-03 Per Abrahamsen * Version 9.8c released. 1997-07-03 Carsten Dominik * style/amsmath.el ("amsmath"): Use `TeX-arg-ref' for eqref. 1997-06-29 Berwin Turlach * harvard.el: Updated the support for harvard.el 1997-06-30 Per Abrahamsen * Version 9.8b released. 1997-06-28 Per Abrahamsen * tex-buf.el (TeX-LaTeX-sentinel): `natbib' support. Patch by Berwin Turlach . 1997-06-27 Per Abrahamsen * Version 9.8a released. 1997-06-24 Christoph Wedler * tex.el (TeX-update-style): `TeX-auto-update' could be unbound. (TeX-auto-x-parse-length): New variable. Allows to use maximimum = slow parsing for the beginning of a file and minimum = fast parsing, e.g., just for labels, for the rest of the file. (TeX-auto-x-regexp-list): Ditto. (TeX-auto-parse-region): New function. (TeX-auto-parse): Use them. * tex-buf.el (TeX-region-extra): New variable with a value which redefines \cite for the region file in order get less warnings. With value "", this variable has no effect. (TeX-region-hook): New variable. (TeX-region-create): Use them. * latex.el (LaTeX-indent-line): TeX commands are case sensitive. (LaTeX-find-matching-end): Would not work correctly with more than one \end in a line. (LaTeX-find-matching-begin): Would not work correctly with more than one \begin in a line. (LaTeX-menu-max-items): New variable with value 25. Split menu if number of entries in a menu is larger than this value. If nil, never split menu into submenus, which is the behaviour before the introduction of this variable. (LaTeX-submenu-name-format): New variable. (LaTeX-split-long-menu): New function using the two new variables. (LaTeX-menu-update): Use it. (LaTeX-document-regexp): New variable. Texts in environments other than "document", e.g., "letter", could be without initial indentation. (LaTeX-verbatim-regexp): New variable. \begin and \end of environments other than "verbatim\\*?", e.g., "program", could start at column 0. (LaTeX-begin-regexp): New variable similar to `LaTeX-item-regexp'. Commands other than "begin", e.g, "if", could increase the indentation. (LaTeX-end-regexp): New variable similar to `LaTeX-item-regexp'. Commands other than "end", e.g, "fi", could decrease the indentation. (LaTeX-indent-comment-start-regexp): New variable. Would allow you to correct the automatic indentation with commands in special comments. (LaTeX-indent-calculate): Use them. (LaTeX-indent-level-count): Use them. (LaTeX-indent-calculate-last): Use them. (LaTeX-math-insert-function): New variable. (LaTeX-math-insert): Use it. 1997-06-11 Per Abrahamsen * latex.el (TeX-arg-ref): New alias. (LaTeX-common-initialization): Use it. Patch by Soren Dayton . 1997-06-05 Per Abrahamsen * latex.el (LaTeX-auto-minimal-regexp-list): Added `usepackage'. (LaTeX-auto-minimal-regexp-list): Ditto. Patch by Carsten Dominik . * style/amsmath.el: New file. * style/amstext.el: New file. * style/amsbsy.el: New file. * style/amsopn.el : New file. * style/amsthm.el: New file. * Makefile (STYLESRC): Added them. Files provided by Carsten Dominik . 1997-06-03 Per Abrahamsen * style/slovak.el: New file. * style/czech.el: New file. * Makefile (STYLESRC): Add them. Files provided by Milan Zamazal . 1997-04-17 Per Abrahamsen * Version 9.7p released. 1997-04-12 Per Abrahamsen * tex.el: Added customize information. * tex-buf.el: Ditto. * latex.el: Ditto. 1997-04-06 Per Abrahamsen * Version 9.7o released. 1997-04-06 Per Abrahamsen * latex.el (LaTeX-equation-label): New variable. (LaTeX-eqnarray-label): New variable. (LaTeX-label): Support `figure*', `label*', `equation', and `eqnarray'. (LaTeX-env-figure): Support `table*'. Patch by Joes Staal . 1997-03-28 Per Abrahamsen * latex.el (LaTeX-down-section): Doc fix. (LaTeX-section-heading): Ditto. (LaTeX-section-title): Ditto. (LaTeX-env-array): Ditto. (TeX-braces-user-association): Ditto. (LaTeX-fill-region-as-paragraph): Ditto. (LaTeX-math-abbrev-prefix): Ditto. (LaTeX-math-mode): Ditto. (TeX-arg-right-insert-p): Ditto. (latex-mode): Ditto. 1997-03-26 Per Abrahamsen * Version 9.7n released. 1997-03-26 Per Abrahamsen * latex.el (LaTeX-math-default): Fixed hebrew delimiters. Patch by John Griffith . 1997-03-26 Per Abrahamsen * latex.el (LaTeX-209-to-2e): Use `buffer-substring-no-properties'. Reported by Graham Gough . 1997-03-17 Per Abrahamsen * Version 9.7m released. 1997-03-17 Per Abrahamsen * tex.el (TeX-auto-generate): Only generate when needed. (TeX-auto-generate-global): Ditto. Patch by Helmut Geyer . * Makefile (install-contrib): Don't move elc files twice. Patch by Helmut Geyer . 1997-03-13 Per Abrahamsen * style/danish.el: Copied from `style/dk.el'. * Makefile (STYLESRC): Added `style/danish.el'. Suggested by Lars Frellesen . 1997-03-04 Per Abrahamsen * Version 9.7l released. 1997-03-04 Per Abrahamsen * Makefile (some): Don't use `style/*.elc'. 1997-02-27 Per Abrahamsen * tex.el (TeX-electric-macro): Default to space after dot. 1997-02-26 Per Abrahamsen * Version 9.7k released. 1997-02-26 Per Abrahamsen * tex.el (TeX-submit-bug-report): Fix address (sunsite, not iesd!). 1997-02-25 Per Abrahamsen * Version 9.7j released. 1997-02-21 Per Abrahamsen * Makefile (some): New target. Suggested by Steven L Baur . 1997-02-20 Per Abrahamsen * Version 9.7i released. 1997-02-20 Per Abrahamsen * tex.el: Removed autoloads that conflicts with `tex-mode.el'. (TeX-lisp-directory): Default to data-directory. 1997-02-15 Per Abrahamsen * Version 9.7h released. 1997-02-15 Per Abrahamsen * tex-buf.el (TeX-lisp-directory): Removed. 1997-02-07 Per Abrahamsen * Version 9.7g released. 1997-02-06 Karl Eichwalder * Makefile (install-lisp): Don't install $(aucdir)/lpath.el and $(aucdir)/tex-site.el. (contrib, install-contrib): New targets. 1997-01-30 Per Abrahamsen * latex.el (LaTeX-math-default): uparow -> uparrow. Reported by Kyeong Soo Kim . 1997-01-29 Per Abrahamsen * Makefile (AUCSRC): Removed `ltx-help.el'. 1997-01-27 Per Abrahamsen * Version 9.7f released. 1997-01-27 Per Abrahamsen * latex.el (LaTeX-label-function): New variable. (LaTeX-label): New function. (LaTeX-section-label): Use it. (LaTeX-env-figure): Ditto. (LaTeX-env-label): Ditto. Patch supplied by Carsten Dominik for better RevTeX.el support. * latex.el (LaTeX-env-figure): Don't insert \leavevmode, at the request of David Carlisle . 1997-01-20 Per Abrahamsen * Version 9.7e released. 1997-01-20 Per Abrahamsen * tex-buf.el (TeX-parse-error): Support LaTeX warnings. Patch by Frederic Devernay . (TeX-warning): Ditto. 1997-01-17 Per Abrahamsen * Version 9.7d released. 1997-01-17 Per Abrahamsen * tex-jp.el: XEmacs 20 support by Soren Dayton . 1997-01-13 Per Abrahamsen * Makefile (CP): Use `cp -p'. Suggested by Graham Gough . * Version 9.7c released. 1997-01-08 Per Abrahamsen * doc/intro.texi: Spelling fixes by Franklin Chen . * tex-buf.el (TeX-shell-command-option): Insitialize from shell-command-switch. Suggested by Fabio@Colorado.EDU (Fabio Somenzi). * latex.el (LaTeX-mode-menu): Added sans serif. Patch by Ralf Fassel . 1997-01-03 Per Abrahamsen * Makefile (install-lisp): Also install `.el' files. Requested by several people. 1996-12-11 Per Abrahamsen * Makefile (tex.elc): New entry. (install-lisp): Use it. Trevor Jim reported that `make install' wouldn't make the elc files. 1996-12-10 Per Abrahamsen * Version 9.7b released. 1996-12-10 Per Abrahamsen * tex-buf.el (TeX-run-format): Bind `buffer' before `process' to avoid side effect. Suggested by Frederic Devernay . * Version 9.7a released. 1996-12-10 Per Abrahamsen * latex.el (LaTeX-fill-region-as-para-do): Minimal support for `sentence-end-double-space'. 1996-12-09 Per Abrahamsen * Version 9.6m released. 1996-12-01 Per Abrahamsen * Version 9.6l released. 1996-12-01 Per Abrahamsen * tex-jp.el: Patch from IKEMOTO Masahiro . 1996-11-29 Per Abrahamsen * Version 9.6k released. 1996-11-22 Per Abrahamsen * latex.el (LaTeX-mode-menu): Made `LaTeX-math-mode' a toggle. 1996-11-16 Per Abrahamsen * Version 9.6j released. 1996-11-14 Per Abrahamsen * latex.el (LaTeX-common-initialization): Added eqref to LaTeX-label-list. Suggested by Martin Hagstrom . 1996-11-13 Per Abrahamsen * tex-buf.el (TeX-region-create): Disable font lock. Suggested by several, patch by Christoph Wedler . 1996-11-05 Per Abrahamsen * tex.el (TeX-file-extensions): Added "texinfo". 1996-09-30 Per Abrahamsen * latex.el (LaTeX-mode-map): Do not overwrite standard binding of `M-g'. * tex.el (popup-mode-menu): Run `LaTeX-menu-update' if present. Workaround for bug reported by Hendrik Visage and othors. * latex.el (LaTeX-float): Allow nil. (LaTeX-env-figure): Don't insert float if nil. Feature suggested by Andre Eickler . 1996-09-16 Per Abrahamsen * Version 9.6i released. 1996-09-16 Per Abrahamsen * tex.el (TeX-mode-syntax-table): Made `$' have the syntax class `$' at the suggestion of Mats Bengtsson . 1996-08-31 Per Abrahamsen * latex.el (TeX-arg-cite): Use `multi-prompt' when asking for entries. (TeX-arg-bibliography): Ditto. 1996-08-29 Per Abrahamsen * Makefile: Simplified installation (I hope). 1996-08-28 Per Abrahamsen * Makefile: Removed lacheck. 1996-08-23 Per Abrahamsen * tex-buf.el (TeX-run-command): Change to master directory before executing command. (TeX-region-file): Allow dummy second argument. (TeX-run-background): Run in master directory. (TeX-run-interactive): Run in master directory. * tex.el (TeX-master-file): Allow second argument `NONDIRECTOPRY'. (TeX-expand-list): Set second argument `NONDIRECTORY' to file entries. (TeX-master-directory): New function. * tex.el (TeX-auto-write): Write in master directory. 1996-08-22 Per Abrahamsen * latex.el (LaTeX-current-environment): Ignore comments. Reported by Stephen Eglen . * tex.el (TeX-directory-absolute-p): Added `windows-nt'. * tex-buf.el (TeX-shell): Added `windows-nt'. (TeX-shell-command-option): Added `emx' and `windows-nt'. Reported by Ulrich Poetter . 1996-08-21 Per Abrahamsen * tex.el (VirTeX-common-initialization): Removed duplicate initialization of `words-include-escapes'. Reperted by Mark Hovey . 1996-08-14 Per Abrahamsen * Makefile (CONTRIB): Added `font-latex.el'. 1996-07-30 Per Abrahamsen * Makefile (aucdir): Changed `lib' to `share' per new emacs conventions. Reported by "Edward J. Huff" . 1996-07-16 Per Abrahamsen * latex.el (LaTeX-fill-region-as-para-do): Make sure `.}' gets two spaces at end of sentence when filling. 1996-07-15 Per Abrahamsen * tex.el (TeX-parse-path): Ignore tralining //. Suggested by Gran Uddeborg . 1996-05-05 Per Abrahamsen * all: Use version number instead of CVS id. * tex.el (TeX-mode-map): Don't bind `del'. We aren't supposed to have any tabs in the first place. 1996-05-02 Per Abrahamsen * tex.el (TeX-mark-active, TeX-active-mark) [XEmacs]: The definition of these two were swapped. Bug reported by Vladimir Alexiev . 1996-04-25 Per Abrahamsen * tex.el (TeX-update-style): Don't run parent style hooks for files that doesn't match `TeX-one-master'. Suggested by many people. 1996-04-24 Per Abrahamsen * latex.el (LaTeX-close-environment): Bind `next-line-add-newlines' to t. Patch by Fritz Knabe . 1996-04-01 Per Abrahamsen * latex.el (LaTeX-fill-region-as-para-do): Fill `.}' as a sentence end. Patch by Fritz Knabe . 1996-03-11 Per Abrahamsen * latex.el (LaTeX-math-cal): Use `\mathcal{}' under LaTeX2e. Reported by Mate Wierdl . 1996-03-05 Per Abrahamsen * tex-info.el (texinfo-mode): Rely on texinfo.el to provide the outline regexp. 1996-02-20 Per Abrahamsen * tex.el (TeX-command-menu-queue, TeX-command-menu-queue-entry): New functions supporting printer queue queries from the menu. By Ulrik Dickow (TeX-command-menu-entry): Use them. 1996-02-13 Per Abrahamsen * style/swedish.el: Support for Swedish quotation style by "G\vran Uddeborg" . 1995-12-21 Per Abrahamsen * latex.el (LaTeX-math-default): Added more definitions by Mehmet Balcilar . 1995-12-18 Per Abrahamsen * latex.el (LaTeX-fill-region-as-paragraph): Removed old version. (LaTeX-math-menu): Redefined the math mode menu. 1995-12-14 Per Abrahamsen * latex.el (LaTeX-math-menu): New variable. (LaTeX-mode-menu): Use it. Suggested by Peter S Galbraith . 1995-11-13 Per Abrahamsen * tex.el (VirTeX-common-initialization): Set `comment-multi-line' to nil. 1995-10-13 Per Abrahamsen * PROBLEMS: Some easymenu explanations. * tex.el: Require easymenu.el instead of auc-menu.el. * Makefile (AUCSRC): Removed easymenu.el and auc-menu.el. (MINMAPSRC): Removed easymenu.el, column.el and cpp.el. * easymenu.el: File deleted. * column.el: File deleted. * cpp.el: File deleted. * latex.el (LaTeX-math-insert): Don't check if `TeX-insert-macro' is defined. (LaTeX-close-environment): Work better when called on an empty line. Fixed by David Aspinall . 1995-10-12 Per Abrahamsen * tex.el ('LaTeX-math-mode): Autoload from latex.el instead of ltx-math.el. Reported by Richard Brankin . 1995-02-14 Per Abrahamsen * latex.el (LaTeX-fill-region-as-paragraph): Should now format \\ correctly. Patch by michal@ellpspace.math.ualberta.ca (Michal Jaegermann). (LaTeX-fill-region-as-para-do): New function. (LaTeX-fill-region-as-paragraph): Do not fill paragraphs inside special environments. 1995-02-12 Per Abrahamsen * tex.el (TeX-byte-compile): Make it default to nil. Suggested by michal@ellpspace.math.ualberta.ca (Michal Jaegermann). * tex-buf.el (TeX-command-query): Also offer to save files when started from a menu. Reported by wscoas@win.tue.nl (Anton A. Stoorvogel). (TeX-LaTeX-sentinel): Don't suggest BibTeX if there is no bibliographies. Suggested by Piet van Oostrum . 1995-02-11 Per Abrahamsen * tex-buf.el (TeX-run-format): Protect against being run from a different buffer. Patch by Michael Kifer . * latex.el (LaTeX-math-default): Moved `Phi' from V to F in LaTeX-math-mode. Suggested by dak@ind.rwth-aachen.de (David Kastrup). * doc/math-ref.tex: Documented it. 1995-02-02 Per Abrahamsen * tex-buf.el (TeX-home-buffer): Added interactive, reported by edavid@lami.univ-evry.fr. 1995-02-01 Per Abrahamsen * hilit-LaTeX.el: Upgraded to 1.06. * Makefile (CONTRIB, EXTRAFILES): Moved tex-jp.el to CONTRIB. 1995-01-27 Per Abrahamsen * latex.el (LaTeX-paragraph-commands): Incorrectly placed parenthesis. Reported by mic@cs.ucsd.edu (Michelangelo Grigni). 1995-01-26 Per Abrahamsen * latex.el (LaTeX-fill-region): Use marker to mark end of region instead of integer, as the formatting may change the size of the region. (LaTeX-common-initialization): Fixed bug in paragraph definitions. Reported by Steve Anderson . * tex.el (save-match-data): Added by koba@flab.fujitsu.co.jp (Kobayashi Shinji). (bibtex-mode-hook): Don't use add-hook yet. Reported by koba@flab.fujitsu.co.jp (Kobayashi Shinji). 1995-01-25 Per Abrahamsen * tex.el (change-major-mode-hook): Also clear `LaTeX-environment-list'. * Makefile (AUCSRC): Add `auc-menu.el'. * tex.el: Use auc-menu instead of easymenu. * tex.el: Inserted comment to mark end of site customization. Suggested by john@minster.york.ac.uk (John A. Murdie). * tex.el (change-major-mode-hook): Forgot a set of parentheses. Reported by Frederic Devernay . * tex-buf.el (TeX-current-pages): Removed extra parentheses. Reported by mic@cs.ucsd.edu (Michelangelo Grigni). 1995-01-24 Per Abrahamsen (abraham@iesd.auc.dk) * tex.el (change-major-mode-hook): Added workaround for error in XEmacs 19.11's `kill-all-local-variables'. 1995-01-23 Per Abrahamsen * latex.el (LaTeX-common-initialization): Removed unnecessary regexp quotes of `TeX-esc'. * style/amsart.el: Move `eqref' definition to `style/amstex.el' and load that style hook. * style/amstex.el: New file. * Makefile (STYLESRC): Added it. Suggested by vb1890@PLAY.CS.NYU.EDU (Victor Boyko). 1995-01-22 Per Abrahamsen * latex.el, ltx-math.el, Makefile: Integrated `ltx-math.el' in `latex.el'. * tex-site.el: Removed autoload for `LaTeX-math-mode'. 1995-01-19 Per Abrahamsen * latex.el (latex-mode): Epoch fix by Martin Sjolin . 1995-01-17 Per Abrahamsen * bib-cite.el: New file contributed by Peter S. Galbraith . * hilit-LaTeX.el: New file contributed by Peter S. Galbraith . * Makefile (CONTRIB): New macro for user contributed emacs lisp packages, initialized with `bib-cite.el' and `hilit-LaTeX.el'. (EXTRAFILES): Added $(CONTRIB) to the list. * tex.el (TeX-directory-absolute-p): Moved definition before `TeX-macro-private'. Reported by Frederic Devernay . * latex.el (LaTeX-common-initialization): Remove extra and wrong "\\\\par" from `paragraph-separate'. Bug reported by nijhof@th.rug.nl (Jeroen Nijhof). 1995-01-11 Per Abrahamsen * tex-buf.el (TeX-command-region): Comment fix. Patch by wlang@rs6000.mri.akh-wien.ac.at (Willi Langenberger). (TeX-region-create): More outline-mode safe. Patch by wlang@rs6000.mri.akh-wien.ac.at (Willi Langenberger). * Makefile (dist): Put version number in WWW page. Suggested by several people. * latex.el (LaTeX-auto-regexp-list): Ignore first optional argument to newenvironment if there is a second. Problem reported by schiotz@ltf.dth.dk (Jakob Schiotz). * style/amsbook.el: New file. Problem reported by Denby Wong <3dw16@qlink.queensu.ca>. 1995-01-04 Per Abrahamsen * tex-buf.el (TeX-TeX-sentinel-check): New function. Updates `TeX-current-page' with regexp by dodd@roebling.poly.edu (Lawrence R. Dodd) (TeX-current-pages): New function. (TeX-LaTeX-sentinel, TeX-TeX-sentinel): Use it. (TeX-format-filter): Removed unnecessary check before assignment. 1995-01-03 Per Abrahamsen * tex-buf.el (TeX-LaTeX-sentinel): Write number of pages even when labels or citations are missing. Patch by dodd@roebling.poly.edu (Lawrence R. Dodd). 1994-12-07 Per Abrahamsen * tex.el (TeX-directory-absolute-p): New function. Should work on both Unix and MS DOS. Problem reported by schiotz@ltf.dth.dk (Jakob Schiotz). (TeX-parse-path): Use it. (TeX-auto-generate): Use it. 1994-12-05 Per Abrahamsen * latex.el (BibTeX-auto-store): Set TeX-auto-parse-length to 999999 locally. Problem reported by Christoph Wedler . 1994-12-02 Per Abrahamsen * tex-buf.el (TeX-LaTeX-sentinel): Check whether the ".bbl" file need to be udpated before setting TeX-command-next to "BibTeX". (TeX-command-query): Remove previous change. 1994-11-28 Per Abrahamsen * latex.el (LaTeX-209-to-2e): New function by Graham Gough . * latex.el (LaTeX-mode-menu): Move many commands to new "Miscellaneous" submenu. * tex-buf.el (TeX-home-buffer): Don't take arg. * latex.el (LaTeX-left-right-indent-level): New variable controling indentation for \left \right blocks. (LaTeX-indent-level-count): New function. Previously only LaTeX macros at the beginning of the line would affect indentation. This problem was reported by many people. (LaTeX-indent-calculate-last): Call `LaTeX-indent-level-count'. Take into account that \end and \right at the beginning of the line has immediate effect. 1994-11-27 Per Abrahamsen * latex.el (TeX-global-input-files): New variable. Idea and sample code by Christophe Mignot . (TeX-arg-input-file): Use it. (BibTeX-global-style-files): Mention how it is reset in `TeX-normal-mode'. (BibTeX-global-files): Ditto. * tex.el (TeX-normal-mode): Reset `BibTeX-global-style-files', `BibTeX-global-files', and `TeX-global-input-files' if invoked with an argument. * tex-site.el: Ignore trailing `/' when adding TeX-lisp-directory to load-path. Patch by Michael Ernst . * tex-buf.el (TeX-LaTeX-sentinel): Don't rerun LaTeX on missing references, unless they have changed. Patch by schiotz@ltf.dth.dk (Jakob Schiotz). * latex.el (LaTeX2e-font-replace): New function. (LaTeX-common-initialization): Set TeX-font-replace-function to LaTeX2e-font-replace when using latex2e. * tex.el (TeX-font-replace-function): New variable. (TeX-font): Use it. TeX-font-replace-function and LaTeX2e-font-replace were contributed by Peter Thiemann . 1994-11-22 Per Abrahamsen * MSDOS: Added. Contributed by schiotz@ltf.dth.dk (Jakob Schiotz). * OEMACS: Removed. * tex.el (VirTeX-common-initialization): Make `words-include-escapes' a local variable before setting it. Reported by Bo Nygaard Bai . 1994-11-15 Per Abrahamsen * tex.el (TeX-auto-store): Change to functions that prevent the auto file buffer from entering emacs-lisp-mode. (TeX-auto-insert): Don't rely on emacs-lisp-mode for indentation. Suggested by Stefan Schf (schoef@informatik.uni-oldenburg.de). 1994-11-11 Per Abrahamsen * tex.el (TeX-macro-global): Change to `standard' path. 1994-11-09 Per Abrahamsen * tex-buf.el (TeX-command-query): Suggest TeX-command-default again if bbl file is newer than dvi file. 1994-11-07 Per Abrahamsen * tex.el (TeX-submit-bug-report): Indicate LaTeX-version. Suggested by schiotz@ltf.dth.dk (Jakob Schiotz). 1994-10-26 Per Abrahamsen * Makefile (dist): Automatically update AUC-TeX-version and AUC-TeX-date in tex.el * tex.el (AUC-TeX-version): Added AUC-TeX-version and AUC-TeX-date from auc-ver.el. * auc-ver.el: File removed. * tex.el: Added version specific code from seperate files. * tex-19.el, tex-18.el, tex-lcd.el: Files removed. 1994-10-25 Per Abrahamsen * doc/auc-tex.texi (Projects): Removed an implemented item. * tex.el (TeX-command-current): New variable. (TeX-command-select-master): New function. (TeX-command-select-buffer): New function. (TeX-command-select-region): New function. (TeX-command-menu): Use TeX-command-current instead of explicit file argument. (TeX-command-menu-print): Remove file argument. (TeX-command-menu-printer-entry): Don't pass file argument. (TeX-command-create-menu): Removed. (TeX-mode-menu): New menu. (plain-TeX-mode-menu): Removed entries now in TeX-mode-menu. (plain-TeX-mode-menu): Use `toggle' for bad boxes. (plain-TeX-common-initialization): Enable TeX-mode-menu. * latex.el (LaTeX-mode-menu): Removed entries now in TeX-mode-menu. (LaTeX-mode-menu): Use `toggle' for bad boxes. (LaTeX-common-initialization): Enable TeX-mode-menu. * tex-info.el (TeXinfo-command-menu): New menu. (TeXinfo-mode-menu): Move commands to new menu. (TeXinfo-mode-menu): Use `toggle' for bad boxes. (texinfo-mode): Enable TeXinfo-command-menu. 1994-10-24 Per Abrahamsen * Makefile (AUCSRC): Removed auc-menu.el from AUC TeX distribution. (MINMAPSRC): Added easymenu.el temporarily to min-map distribution. * auc-menu.el: Just load easymenu.el when using GNU Emacs. * easymenu.el Try to use RMS's easymenu instead of auc-menu. (easy-menu-define): Call `easy-menu-do-define' to do the real work. Document XEmacs keyword arguments. (easy-menu-do-define): New function. (easy-menu-create-keymaps): Support XEmacs keyword arguments in menu definition. (easy-menu-remove): Make is a function instead of a macro. (easy-menu-add): Ditto. 1994-10-21 Per Abrahamsen * doc/auc-tex.texi (Completion): Less confusing BibTeX advice, I hope. * tex-jp.el: Added patch from koba@flab.fujitsu.co.jp (Kobayashi Shinji). * latex.el (TeX-arg-insert-braces): Have \left and \right on different lines. Patch by thiemann@informatik.uni-tuebingen.de (Peter Thiemann). * Makefile (dist): Add CHANGES and ChangeLog files to the ftp directory. Suggested by Frederic Devernay . * latex.el (LaTeX-indent-calculate): Allow nil second element in `LaTeX-indent-environment-list'. (LaTeX-indent-environment-list): Added special environments suggested by thiemann@informatik.uni-tuebingen.de (Peter Thiemann). 1994-10-20 Per Abrahamsen * tex.el (TeX-auto-list-information): Spelling error. 1994-10-18 Per Abrahamsen * latex.el (LaTeX-common-initialization): Make "LaTeX2e" the default command if you have set `LaTeX-version' to "2" and is using "\documentclass". 1994-10-06 Per Abrahamsen * latex.el (LaTeX-paragraph-commands): End each word with a "\\b" to avoid accidentally matching longer macros. * tex.el (TeX-add-local-master): Use three %'s when adding buffer local variables. Suggested by Raymond Toy . * tex.el (TeX-format-list): Added entry for AmSTeX by Ulf Juergens . * tex.el (ams-tex-mode): Run AmS-TeX-mode-hook, not plain-TeX-mode-hook. Reported by Ulf Juergens . * tex-buf.el (TeX-format-filter): Add `save-match-data'. Patch by David Aspinall . 1994-09-14 Per Abrahamsen * cpp.el: Use RMS's version. 1994-09-13 Per Abrahamsen * doc/history.texi, doc/auc-tex.texi: Fixes from Chris Fearnley <@vm.uni-c.dk:FEARNLCJ@DUVM>. 1994-09-09 Per Abrahamsen * latex.el (LaTeX-insert-environment): Don't fill environments listed in `LaTeX-indent-environment-list'. Suggestion by Graham Gough . * tex.el (LaTeX-command-style): Made latex2e first in the list. Suggested by Frederic Devernay . 1994-09-05 Per Abrahamsen * tex.el (TeX-file-extensions): Added LaTeX2 `cls' extension after query by jmv@di.uminho.pt (Jose Manuel Valenca). 1994-08-30 Per Abrahamsen * tex-jp.el: New version from koba@flab.fujitsu.co.jp (Kobayashi Shinji). * tex.el (TeX-command-list): Fifth element is now ignored. * tex-buf.el (TeX-command-query): Check if region file is newer than dvi file. (TeX-command-region): Only query for command _after_ region file is created. (TeX-region-create): Only save file if the new content is different than the original content. 1994-08-29 Per Abrahamsen (abraham@research.att.com) * tex-buf.el (TeX-warning): Use offset for line end. Fixed by ddw2@sunbim.be (Dominique de Waleffe). 1994-08-26 Per Abrahamsen (abraham@iesd.auc.dk) * doc/auc-tex.texi (Projects): Removed preceding item from wishlist. * latex.el (LaTeX-common-initialization): Fix to comments separating paragraphs by koba@flab.fujitsu.co.jp (Kobayashi Shinji). * tex-jp.el (LaTeX-fill-region-as-paragraph): New version for MULE 2.0 by Tomotake FURUHATA . * tex.el (TeX-function-p): Spelling error in doc. 1994-08-23 Per Abrahamsen (abraham@iesd.auc.dk) * doc/intro.texi (Contacts): Some reformulations. 1994-08-21 Per Abrahamsen (abraham@iesd.auc.dk) * tex-jp.el (TeX-insert-punctuation): Japanese version from koba@flab.fujitsu.co.jp (Kobayashi Shinji). 1994-08-19 Per Abrahamsen (abraham@iesd.auc.dk) * doc/install.texi: The `site-lisp' directory is also available in Lucide Emacs 19.10. Reported by Tim Geisler . 1994-08-18 Per Abrahamsen (abraham@iesd.auc.dk) * latex.el (TeX-arg-cite): Prompt for multiple keys. Suggested by Masahiro Kitagawa . 1994-08-17 Per Abrahamsen (abraham@iesd.auc.dk) * style/german.el ("german"): Use `TeX-quote-after-quote'. Suggested by te@informatik.uni-hannover.de (Thomas Esser). * latex.el (LaTeX-common-initialization): Error in regexp for multiple arguments to `\cite', reported by Masahiro Kitagawa . 1994-08-17 Per Abrahamsen (abraham@iesd.auc.dk) * latex.el (LaTeX-env-figure): Put caption inside center environment. Suggested by Martin Wunderli . * tex.el (TeX-strip-extension): If NODIR is set to `path', remove the directory part iff it is equal to the current directory, or is a member of either `TeX-macro-global' or `TeX-macro-private'. (TeX-master-file): Use `path' for NODIR when querying the user for a file name. Reported finger@brachio.Informatik.Uni-Dortmund.DE (Bernd Finger). 1994-08-16 Per Abrahamsen (abraham@iesd.auc.dk) * latex.el (LaTeX-common-initialization): `eqnarray*' should not have a label. Reported by dodd@roebling.poly.edu (Lawrence R. Dodd). 1994-08-11 Per Abrahamsen (abraham@iesd.auc.dk) * tex-buf.el (TeX-background-filter): Always show background output. 1994-08-10 Per Abrahamsen (abraham@iesd.auc.dk) * Makefile (MINMAPSRC): Added `all.el'. * all.el: New file. * tex-buf.el (TeX-LaTeX-sentinel): Write "some" if TeX-current-page is nil. Reported by Michail Rozman . 1994-08-09 Per Abrahamsen (abraham@iesd.auc.dk) * auc-menu.el (easy-menu-add): Undid previous change. (top level `cond'): Use Emacs 18 code if `window-system' is nil. Patch by Patrice Belleville . 1994-08-08 Per Abrahamsen (abraham@iesd.auc.dk) * tex.el (TeX-electric-macro): No electricity after `.' or `\'. 1994-08-06 Per Abrahamsen (abraham@iesd.auc.dk) * latex.el (LaTeX-paragraph-commands): New variable. (LaTeX-common-initialization): Use it. Suggested by liyuan@allwise.research.att.com (Yuan P. Li). * auc-menu.el (easy-menu-add): Check that `x-popup-menu' is bound and that we are running under X before calling it. Reported by Adrian F. Clark 1994-08-04 Per Abrahamsen (abraham@iesd.auc.dk) * tex-jp.el (LaTeX-fill-region-as-paragraph): Patch for Emacs 19 regexps by koba@flab.fujitsu.co.jp (Kobayashi Shinji) reported by Uenami Ken'ichi . * doc/auc-tex.texi (European): Mention `iso-cvt.el' as suggested by mike@vlsivie.tuwien.ac.at (Michael Gschwind). 1994-08-03 Per Abrahamsen (abraham@iesd.auc.dk) * doc/history.texi: New file. * doc/Makefile (HISTORY): Added rule. * Makefile (EXTRAFILES): Added `ChangeLog'. (DOCFILES): Added `history.texi'. * doc/auc-tex.texi (History): Made ready for 9.2. Move history to `history.texi'. * doc/changes.texi: Made ready for 9.2. Introduce ChangeLog. * Makefile (LispInstall): Use "/bin/pwd" instead of "pwd". reported by mic@cs.ucsd.edu (Michelangelo Grigni). * ChangeLog: New file. * Version 9.1 released. ;; Local Variables: ;; coding: iso-8859-1 ;; End: