chore: remover pacotes do emacs do controlo de versões
This commit is contained in:
parent
d722200427
commit
6bae20b1c4
1690 changed files with 18 additions and 468984 deletions
18
.gitignore
vendored
Normal file
18
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Emacs - Pastas de pacotes e cache
|
||||||
|
elpa/
|
||||||
|
straight/
|
||||||
|
quelpa/
|
||||||
|
var/
|
||||||
|
auto-save-list/
|
||||||
|
eln-cache/
|
||||||
|
elfeed/
|
||||||
|
transient/
|
||||||
|
tree-sitter/
|
||||||
|
config.el
|
||||||
|
org-roam.db
|
||||||
|
projectile-bookmarks.eld
|
||||||
|
|
||||||
|
# Ficheiros temporários e backups
|
||||||
|
*~
|
||||||
|
#*#
|
||||||
|
.DS_Store
|
||||||
|
|
@ -1,357 +0,0 @@
|
||||||
(setq gc-cons-threshold (* 50 1024 1024))
|
|
||||||
(add-hook 'emacs-startup-hook
|
|
||||||
(lambda ()
|
|
||||||
(setq gc-cons-threshold (* 2 1024 1024))))
|
|
||||||
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
(tool-bar-mode -1)
|
|
||||||
(scroll-bar-mode -1)
|
|
||||||
(setq inhibit-startup-screen t)
|
|
||||||
|
|
||||||
(setq make-backup-files nil)
|
|
||||||
(setq auto-save-default nil)
|
|
||||||
(setq-default fill-column 80)
|
|
||||||
|
|
||||||
(electric-pair-mode 1)
|
|
||||||
|
|
||||||
;; Define o estilo como relativo
|
|
||||||
(setq display-line-numbers-type t)
|
|
||||||
|
|
||||||
;; Ativa globalmente
|
|
||||||
(global-display-line-numbers-mode 1)
|
|
||||||
|
|
||||||
;; Desativa em modos onde não fazem sentido (Org, PDFs, Terminais)
|
|
||||||
(dolist (mode '(org-mode-hook
|
|
||||||
pdf-view-mode-hook
|
|
||||||
term-mode-hook
|
|
||||||
eshell-mode-hook))
|
|
||||||
(add-hook mode (lambda () (display-line-numbers-mode -1))))
|
|
||||||
|
|
||||||
(require 'package)
|
|
||||||
|
|
||||||
;; Adiciona o repositório da comunidade (MELPA)
|
|
||||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
|
||||||
|
|
||||||
;; Garante que a lista de pacotes está atualizada no primeiro arranque
|
|
||||||
(package-initialize)
|
|
||||||
(unless package-archive-contents
|
|
||||||
(package-refresh-contents))
|
|
||||||
|
|
||||||
(setq package-install-upgrade-built-in t)
|
|
||||||
(require 'use-package)
|
|
||||||
(setq use-package-always-ensure t)
|
|
||||||
|
|
||||||
(use-package vertico
|
|
||||||
:init (vertico-mode 1))
|
|
||||||
|
|
||||||
(use-package orderless
|
|
||||||
:custom
|
|
||||||
(completion-styles '(orderless basic))
|
|
||||||
(completion-category-overrides '((file (styles basic partial-completion)))))
|
|
||||||
|
|
||||||
(use-package marginalia
|
|
||||||
:init (marginalia-mode 1))
|
|
||||||
|
|
||||||
(use-package consult
|
|
||||||
:bind (("C-s" . consult-line)
|
|
||||||
("C-x b" . consult-buffer)
|
|
||||||
;; Os nossos atalhos de pesquisa personalizados
|
|
||||||
("C-c s s" . consult-line)
|
|
||||||
("C-c s r" . consult-ripgrep)))
|
|
||||||
|
|
||||||
(use-package which-key
|
|
||||||
:ensure nil ; Built-in no Emacs 30
|
|
||||||
:init (which-key-mode 1)
|
|
||||||
:config
|
|
||||||
;; Dá nomes bonitos aos menus do C-c
|
|
||||||
(which-key-add-key-based-replacements
|
|
||||||
"C-c s" "Pesquisa"
|
|
||||||
"C-c c" "Código/Estrutura"
|
|
||||||
"C-c a" "Ações/Contexto"
|
|
||||||
"C-c n" "Notas/Org"
|
|
||||||
"C-c n d" "Dailies"
|
|
||||||
"C-c g" "Git"
|
|
||||||
"C-c l" "Leitura/RSS"
|
|
||||||
"C-c p" "Projetos"))
|
|
||||||
|
|
||||||
(use-package embark
|
|
||||||
:bind
|
|
||||||
(("C-." . embark-act)
|
|
||||||
("M-." . embark-dwim)
|
|
||||||
("C-h B" . embark-bindings)
|
|
||||||
;; Atalhos organizados no menu "Ações"
|
|
||||||
("C-c a a" . embark-act)
|
|
||||||
("C-c a d" . embark-dwim)
|
|
||||||
("C-c a e" . embark-export)
|
|
||||||
("C-c a b" . embark-bindings))
|
|
||||||
:init
|
|
||||||
(setq prefix-help-command #'embark-prefix-help-command)
|
|
||||||
:config
|
|
||||||
(setq embark-indicators
|
|
||||||
'(embark-minimal-indicator
|
|
||||||
embark-highlight-indicator
|
|
||||||
embark-isearch-highlight-indicator)))
|
|
||||||
|
|
||||||
(use-package embark-consult
|
|
||||||
:ensure t
|
|
||||||
:after (embark consult)
|
|
||||||
:hook
|
|
||||||
(embark-collect-mode . consult-preview-at-point-mode))
|
|
||||||
|
|
||||||
(use-package doom-themes
|
|
||||||
:config
|
|
||||||
(load-theme 'doom-dracula t))
|
|
||||||
|
|
||||||
(use-package org-modern
|
|
||||||
:hook (org-mode . org-modern-mode))
|
|
||||||
|
|
||||||
(use-package nerd-icons)
|
|
||||||
|
|
||||||
(use-package nerd-icons-completion
|
|
||||||
:after (marginalia vertico)
|
|
||||||
:init
|
|
||||||
(nerd-icons-completion-mode)
|
|
||||||
:hook
|
|
||||||
(marginalia-mode . nerd-icons-completion-marginalia-setup))
|
|
||||||
|
|
||||||
(use-package rainbow-delimiters
|
|
||||||
:hook (prog-mode . rainbow-delimiters-mode))
|
|
||||||
|
|
||||||
(use-package doom-modeline
|
|
||||||
:init (doom-modeline-mode 1)
|
|
||||||
:custom
|
|
||||||
(doom-modeline-height 30)
|
|
||||||
(doom-modeline-bar-width 4)
|
|
||||||
(doom-modeline-icon t)
|
|
||||||
(doom-modeline-major-mode-icon t)
|
|
||||||
(doom-modeline-workspace-name t)
|
|
||||||
(doom-modeline-time t))
|
|
||||||
|
|
||||||
(use-package org-auto-tangle
|
|
||||||
:defer t
|
|
||||||
:hook (org-mode . org-auto-tangle-mode)
|
|
||||||
:config
|
|
||||||
(setq org-auto-tangle-default t))
|
|
||||||
|
|
||||||
(use-package org
|
|
||||||
:bind (("C-c n a" . org-agenda))
|
|
||||||
:hook (org-mode . visual-line-mode)
|
|
||||||
:custom
|
|
||||||
(org-directory "~/org/")
|
|
||||||
(org-agenda-files '("~/org/agenda/" "~/org/roam/daily/"))
|
|
||||||
(org-todo-keywords
|
|
||||||
'((sequence "TODO(t)" "DOING(i)" "WAIT(w)" "|" "DONE(d)" "CANCEL(c)")))
|
|
||||||
(org-todo-keyword-faces
|
|
||||||
'(("DOING" . (:foreground "#ffb86c" :weight bold))
|
|
||||||
("WAIT" . (:foreground "#8be9fd" :weight bold))
|
|
||||||
("CANCEL". (:foreground "#6272a4" :weight bold))))
|
|
||||||
(org-hide-emphasis-markers t)
|
|
||||||
(org-startup-indented t)
|
|
||||||
(org-src-fontify-natively t)
|
|
||||||
(org-src-preserve-indentation nil)
|
|
||||||
(org-edit-src-content-indentation 0)
|
|
||||||
(org-src-tab-acts-natively t)
|
|
||||||
:config
|
|
||||||
(org-babel-do-load-languages
|
|
||||||
'org-babel-load-languages
|
|
||||||
'((emacs-lisp . t)
|
|
||||||
(shell . t)
|
|
||||||
(python . t)
|
|
||||||
(C . t)))
|
|
||||||
(require 'org-tempo)
|
|
||||||
(setq org-confirm-babel-evaluate
|
|
||||||
(lambda (lang body)
|
|
||||||
(not (member lang '("C" "shell" "emacs-lisp" "python"))))))
|
|
||||||
|
|
||||||
(use-package org-download
|
|
||||||
:after org
|
|
||||||
:defer t
|
|
||||||
:bind ("C-c n v" . org-download-clipboard)
|
|
||||||
:config
|
|
||||||
(org-download-enable)
|
|
||||||
(setq-default org-download-image-dir "./images")
|
|
||||||
(setq org-download-screenshot-method "wl-paste -t image/png > %s"))
|
|
||||||
|
|
||||||
(use-package flycheck
|
|
||||||
:init
|
|
||||||
(global-flycheck-mode))
|
|
||||||
|
|
||||||
(use-package treesit
|
|
||||||
:ensure nil
|
|
||||||
:bind (("C-c c m" . treesit-explore-mode)
|
|
||||||
("C-c c f" . treesit-beginning-of-defun)
|
|
||||||
("C-c c e" . treesit-end-of-defun)))
|
|
||||||
|
|
||||||
;; 1. Dizer ao Emacs a localização exata das gramáticas testadas
|
|
||||||
(setq treesit-language-source-alist
|
|
||||||
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
|
|
||||||
(python "https://github.com/tree-sitter/tree-sitter-python")
|
|
||||||
(json "https://github.com/tree-sitter/tree-sitter-json")
|
|
||||||
(yaml "https://github.com/ikatyang/tree-sitter-yaml")
|
|
||||||
(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile")))
|
|
||||||
|
|
||||||
;; 2. Instalar automaticamente as gramáticas
|
|
||||||
(dolist (lang '(bash python json yaml dockerfile))
|
|
||||||
(unless (treesit-language-available-p lang)
|
|
||||||
(treesit-install-language-grammar lang)))
|
|
||||||
|
|
||||||
;; 3. Configurar o treesit-auto
|
|
||||||
(use-package treesit-auto
|
|
||||||
:custom
|
|
||||||
(treesit-auto-install nil)
|
|
||||||
:config
|
|
||||||
(setq treesit-auto-langs '(python bash json yaml dockerfile))
|
|
||||||
(treesit-auto-add-to-auto-mode-alist 'all)
|
|
||||||
(global-treesit-auto-mode))
|
|
||||||
|
|
||||||
(use-package org-roam
|
|
||||||
:ensure t
|
|
||||||
:demand t
|
|
||||||
:bind (("C-c n f" . org-roam-node-find)
|
|
||||||
("C-c n i" . org-roam-node-insert)
|
|
||||||
("C-c n t" . org-roam-tag-add)
|
|
||||||
("C-c n d d" . org-roam-dailies-goto-today)
|
|
||||||
("C-c n d y" . org-roam-dailies-goto-yesterday)
|
|
||||||
("C-c n d m" . org-roam-dailies-goto-tomorrow))
|
|
||||||
:custom
|
|
||||||
(org-roam-directory (file-truename "~/org/roam"))
|
|
||||||
(org-roam-dailies-directory "daily/")
|
|
||||||
(org-roam-dailies-capture-templates
|
|
||||||
'(("d" "default" entry
|
|
||||||
"* Sessão de Trabalho: %?w"
|
|
||||||
:target (file+head "%<%Y-%m-%d>.org"
|
|
||||||
"#+title: %<%Y-%m-%d>\n#+filetags: :diario:sessao:\n\n* [/] Tarefas da Sessão\n** TODO Rever pendentes da sessão anterior\n** TODO %?\n\n* Notas de Engenharia & Logs\n"))))
|
|
||||||
:config
|
|
||||||
(unless (file-exists-p org-roam-directory)
|
|
||||||
(make-directory org-roam-directory t))
|
|
||||||
(require 'org-id)
|
|
||||||
(setq org-id-track-globally t)
|
|
||||||
(org-roam-db-autosync-mode))
|
|
||||||
|
|
||||||
(use-package magit
|
|
||||||
:bind ("C-c g s" . magit-status)
|
|
||||||
:commands magit-status)
|
|
||||||
|
|
||||||
(use-package org-roam-ui
|
|
||||||
:after org-roam
|
|
||||||
:bind ("C-c n u" . org-roam-ui-mode)
|
|
||||||
:config
|
|
||||||
(setq org-roam-ui-sync-theme t
|
|
||||||
org-roam-ui-follow t
|
|
||||||
org-roam-ui-update-on-save t
|
|
||||||
org-roam-ui-open-on-start t))
|
|
||||||
|
|
||||||
(use-package pdf-tools
|
|
||||||
:defer t
|
|
||||||
:mode ("\\.pdf\\'" . pdf-view-mode)
|
|
||||||
:bind ("C-c s p" . pdf-occur)
|
|
||||||
:config
|
|
||||||
(pdf-tools-install :no-query)
|
|
||||||
(setq-default pdf-view-display-size 'fit-page)
|
|
||||||
(setq pdf-annot-activate-created-annotations t))
|
|
||||||
|
|
||||||
(use-package org-noter
|
|
||||||
:defer t
|
|
||||||
:config
|
|
||||||
(setq org-noter-always-create-frame nil)
|
|
||||||
(setq org-noter-kill-frame-at-session-end nil)
|
|
||||||
(setq org-noter-doc-split-fraction '(0.5 . 0.5))
|
|
||||||
(setq org-noter-notes-search-path '("~/org/roam")))
|
|
||||||
|
|
||||||
(use-package citar
|
|
||||||
:bind ("C-c n x" . citar-insert-citation)
|
|
||||||
:custom
|
|
||||||
(citar-bibliography '("~/org/roam/referencias.bib"))
|
|
||||||
(citar-library-paths '("~/org/refs/"))
|
|
||||||
:hook
|
|
||||||
(org-mode . citar-capf-setup))
|
|
||||||
|
|
||||||
(use-package citar-org-roam
|
|
||||||
:after (citar org-roam)
|
|
||||||
:config
|
|
||||||
(citar-org-roam-mode))
|
|
||||||
|
|
||||||
(use-package tex
|
|
||||||
:ensure auctex
|
|
||||||
:custom
|
|
||||||
(TeX-auto-save t)
|
|
||||||
(TeX-parse-self t)
|
|
||||||
(TeX-master nil)
|
|
||||||
(TeX-view-program-selection '((output-pdf "PDF Tools")))
|
|
||||||
(TeX-view-program-list '(("PDF Tools" TeX-pdf-tools-sync-view)))
|
|
||||||
(TeX-source-correlate-start-server t)
|
|
||||||
:hook
|
|
||||||
(LaTeX-mode . TeX-source-correlate-mode)
|
|
||||||
(TeX-after-compilation-finished . TeX-revert-document-buffer))
|
|
||||||
|
|
||||||
(use-package projectile
|
|
||||||
:init
|
|
||||||
(projectile-mode +1)
|
|
||||||
:custom
|
|
||||||
(projectile-project-search-path '("~/dev/"))
|
|
||||||
:bind-keymap
|
|
||||||
("C-c p" . projectile-command-map))
|
|
||||||
|
|
||||||
(use-package dired
|
|
||||||
:ensure nil
|
|
||||||
:custom
|
|
||||||
(dired-listing-switches "-agho --group-directories-first")
|
|
||||||
(dired-dwim-target t))
|
|
||||||
|
|
||||||
(use-package gptel
|
|
||||||
:ensure t
|
|
||||||
:bind (("C-c q" . gptel-menu) ; Abre o menu interativo (O que você quer)
|
|
||||||
("C-c RET" . gptel-send)) ; Envia instantaneamente (Para chat rápido)
|
|
||||||
:config
|
|
||||||
;; O llama-server imita a API da OpenAI perfeitamente
|
|
||||||
(setq gptel-backend
|
|
||||||
(gptel-make-openai "llama.cpp"
|
|
||||||
:protocol "http"
|
|
||||||
:host "localhost:8080"
|
|
||||||
:stream t
|
|
||||||
:key "no-key"
|
|
||||||
:models '("Llama-3.2-3B")))
|
|
||||||
|
|
||||||
(setq gptel-model 'Llama-3.2-3B)
|
|
||||||
|
|
||||||
(setq gptel-directives
|
|
||||||
'((default . "You are a senior embedded C engineer. Keep your answers technical, accurate, and concise. Do not use Markdown formatting unless requested."))))
|
|
||||||
|
|
||||||
(use-package khoj
|
|
||||||
:ensure t
|
|
||||||
:bind ("C-c n s" . khoj) ; Atalho: "Notes Search"
|
|
||||||
:config
|
|
||||||
;; Aponta o Emacs para o servidor no seu RPi5
|
|
||||||
(setq khoj-server-url "http://192.168.1.201:5000")
|
|
||||||
|
|
||||||
;; Opcional: Define a pasta padrão caso use a interface local do pacote
|
|
||||||
(setq khoj-notes-directory "~/org/roam"))
|
|
||||||
|
|
||||||
(use-package elfeed
|
|
||||||
:ensure t
|
|
||||||
:bind (("C-c l e" . elfeed)
|
|
||||||
("C-c l u" . elfeed-update)
|
|
||||||
:map elfeed-show-mode-map
|
|
||||||
("b" . my/elfeed-abrir-no-eww))
|
|
||||||
:preface
|
|
||||||
(defun my/elfeed-abrir-no-eww ()
|
|
||||||
"Abre o artigo atual no EWW (browser interno) em vez do browser externo."
|
|
||||||
(interactive)
|
|
||||||
(let ((link (elfeed-entry-link elfeed-show-entry)))
|
|
||||||
(when link
|
|
||||||
(message "A descarregar o artigo completo...")
|
|
||||||
(eww link))))
|
|
||||||
:config
|
|
||||||
;; Atualiza o Elfeed a cada 30 minutos em background
|
|
||||||
(run-at-time nil (* 30 60) #'elfeed-update))
|
|
||||||
|
|
||||||
(use-package elfeed-protocol
|
|
||||||
:ensure t
|
|
||||||
:after elfeed
|
|
||||||
:config
|
|
||||||
(setq elfeed-feeds
|
|
||||||
'(("fever+https://gabi@vm-magasirala-rss.duckdns.org"
|
|
||||||
:api-url "https://vm-magasirala-rss.duckdns.org/api/fever.php"
|
|
||||||
:use-authinfo t
|
|
||||||
:autotags ("freshrss"))))
|
|
||||||
(elfeed-protocol-enable))
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
;;; Elfeed Database Index (version 4)
|
|
||||||
|
|
||||||
(:version 4 :feeds #s(hash-table test equal) :entries #s(hash-table test equal) :index #s(avl-tree- [nil nil nil 0] elfeed-db-compare))
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1 +0,0 @@
|
||||||
Good signature from 645357D2883A0966 GNU ELPA Signing Agent (2023) <elpasign@elpa.gnu.org> (trust undefined) created at 2026-08-06T22:10:19+0100 using EDDSA
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1 +0,0 @@
|
||||||
Good signature from 645357D2883A0966 GNU ELPA Signing Agent (2023) <elpasign@elpa.gnu.org> (trust undefined) created at 2026-08-06T22:10:22+0100 using EDDSA
|
|
||||||
|
|
@ -1,212 +0,0 @@
|
||||||
;;; async-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*-
|
|
||||||
;; Generated by the `loaddefs-generate' function.
|
|
||||||
|
|
||||||
;; This file is part of GNU Emacs.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from async.el
|
|
||||||
|
|
||||||
(autoload 'async-start-process "async" "\
|
|
||||||
Start the executable PROGRAM asynchronously named NAME. See `async-start'.
|
|
||||||
PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the
|
|
||||||
process object when done. If FINISH-FUNC is nil, the future
|
|
||||||
object will return the process object when the program is
|
|
||||||
finished. Set DEFAULT-DIRECTORY to change PROGRAM's current
|
|
||||||
working directory.
|
|
||||||
|
|
||||||
(fn NAME PROGRAM FINISH-FUNC &rest PROGRAM-ARGS)")
|
|
||||||
(autoload 'async-start "async" "\
|
|
||||||
Execute START-FUNC (often a lambda) in a subordinate Emacs process.
|
|
||||||
When done, the return value is passed to FINISH-FUNC. Example:
|
|
||||||
|
|
||||||
(async-start
|
|
||||||
;; What to do in the child process
|
|
||||||
(lambda ()
|
|
||||||
(message \"This is a test\")
|
|
||||||
(sleep-for 3)
|
|
||||||
222)
|
|
||||||
|
|
||||||
;; What to do when it finishes
|
|
||||||
(lambda (result)
|
|
||||||
(message \"Async process done, result should be 222: %s\"
|
|
||||||
result)))
|
|
||||||
|
|
||||||
If you call `async-send' from a child process, the message will
|
|
||||||
be also passed to the FINISH-FUNC. You can test RESULT to see if
|
|
||||||
it is a message by using `async-message-p'. If nil, it means
|
|
||||||
this is the final result. Example of the FINISH-FUNC:
|
|
||||||
|
|
||||||
(lambda (result)
|
|
||||||
(if (async-message-p result)
|
|
||||||
(message \"Received a message from child process: %s\" result)
|
|
||||||
(message \"Async process done, result: %s\" result)))
|
|
||||||
|
|
||||||
If FINISH-FUNC is nil or missing, a future is returned that can
|
|
||||||
be inspected using `async-get', blocking until the value is
|
|
||||||
ready. Example:
|
|
||||||
|
|
||||||
(let ((proc (async-start
|
|
||||||
;; What to do in the child process
|
|
||||||
(lambda ()
|
|
||||||
(message \"This is a test\")
|
|
||||||
(sleep-for 3)
|
|
||||||
222))))
|
|
||||||
|
|
||||||
(message \"I'm going to do some work here\") ;; ....
|
|
||||||
|
|
||||||
(message \"Waiting on async process, result should be 222: %s\"
|
|
||||||
(async-get proc)))
|
|
||||||
|
|
||||||
If you don't want to use a callback, and you don't care about any
|
|
||||||
return value from the child process, pass the `ignore' symbol as
|
|
||||||
the second argument (if you don't, and never call `async-get', it
|
|
||||||
will leave *emacs* process buffers hanging around):
|
|
||||||
|
|
||||||
(async-start
|
|
||||||
(lambda ()
|
|
||||||
(delete-file \"a remote file on a slow link\" nil))
|
|
||||||
\\='ignore)
|
|
||||||
|
|
||||||
Special case:
|
|
||||||
If the output of START-FUNC is a string with properties
|
|
||||||
e.g. (buffer-string) RESULT will be transformed in a list where the
|
|
||||||
car is the string itself (without props) and the cdr the rest of
|
|
||||||
properties, this allows using in FINISH-FUNC the string without
|
|
||||||
properties and then apply the properties in cdr to this string (if
|
|
||||||
needed).
|
|
||||||
Properties handling special objects like markers are returned as
|
|
||||||
list to allow restoring them later.
|
|
||||||
See <https://github.com/jwiegley/emacs-async/issues/145> for more infos.
|
|
||||||
|
|
||||||
Note: Even when FINISH-FUNC is present, a future is still
|
|
||||||
returned except that it yields no value (since the value is
|
|
||||||
passed to FINISH-FUNC). Call `async-get' on such a future always
|
|
||||||
returns nil. It can still be useful, however, as an argument to
|
|
||||||
`async-ready' or `async-wait'.
|
|
||||||
|
|
||||||
(fn START-FUNC &optional FINISH-FUNC)")
|
|
||||||
(register-definition-prefixes "async" '("async-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from async-bytecomp.el
|
|
||||||
|
|
||||||
(autoload 'async-byte-recompile-directory "async-bytecomp" "\
|
|
||||||
Compile all *.el files in DIRECTORY asynchronously.
|
|
||||||
All *.elc files are systematically deleted before proceeding.
|
|
||||||
|
|
||||||
(fn DIRECTORY &optional QUIET)")
|
|
||||||
(defvar async-bytecomp-package-mode nil "\
|
|
||||||
Non-nil if Async-Bytecomp-Package mode is enabled.
|
|
||||||
See the `async-bytecomp-package-mode' command
|
|
||||||
for a description of this minor mode.
|
|
||||||
Setting this variable directly does not take effect;
|
|
||||||
either customize it (see the info node `Easy Customization')
|
|
||||||
or call the function `async-bytecomp-package-mode'.")
|
|
||||||
(custom-autoload 'async-bytecomp-package-mode "async-bytecomp" nil)
|
|
||||||
(autoload 'async-bytecomp-package-mode "async-bytecomp" "\
|
|
||||||
Byte compile asynchronously packages installed with package.el.
|
|
||||||
|
|
||||||
Async compilation of packages can be controlled by
|
|
||||||
`async-bytecomp-allowed-packages'.
|
|
||||||
NOTE: Use this mode only if you install/upgrade etc... your packages
|
|
||||||
synchronously, if you use a package manager like helm-package.el which
|
|
||||||
by default is async you don't need this.
|
|
||||||
|
|
||||||
This is a global minor mode. If called interactively, toggle the
|
|
||||||
`Async-Bytecomp-Package mode' mode. If the prefix argument is positive,
|
|
||||||
enable the mode, and if it is zero or negative, disable the mode.
|
|
||||||
|
|
||||||
If called from Lisp, toggle the mode if ARG is `toggle'. Enable the
|
|
||||||
mode if ARG is nil, omitted, or is a positive number. Disable the mode
|
|
||||||
if ARG is a negative number.
|
|
||||||
|
|
||||||
To check whether the minor mode is enabled in the current buffer,
|
|
||||||
evaluate `(default-value \\='async-bytecomp-package-mode)'.
|
|
||||||
|
|
||||||
The mode's hook is called both when the mode is enabled and when it is
|
|
||||||
disabled.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(autoload 'async-byte-compile-file "async-bytecomp" "\
|
|
||||||
Byte compile Lisp code FILE asynchronously.
|
|
||||||
|
|
||||||
Same as `byte-compile-file' but asynchronous.
|
|
||||||
|
|
||||||
(fn FILE)" t)
|
|
||||||
(register-definition-prefixes "async-bytecomp" '("async-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from async-package.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "async-package" '("async-p"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from dired-async.el
|
|
||||||
|
|
||||||
(defvar dired-async-mode nil "\
|
|
||||||
Non-nil if Dired-Async mode is enabled.
|
|
||||||
See the `dired-async-mode' command
|
|
||||||
for a description of this minor mode.
|
|
||||||
Setting this variable directly does not take effect;
|
|
||||||
either customize it (see the info node `Easy Customization')
|
|
||||||
or call the function `dired-async-mode'.")
|
|
||||||
(custom-autoload 'dired-async-mode "dired-async" nil)
|
|
||||||
(autoload 'dired-async-mode "dired-async" "\
|
|
||||||
Do dired actions asynchronously.
|
|
||||||
|
|
||||||
This is a global minor mode. If called interactively, toggle the
|
|
||||||
`Dired-Async mode' mode. If the prefix argument is positive, enable the
|
|
||||||
mode, and if it is zero or negative, disable the mode.
|
|
||||||
|
|
||||||
If called from Lisp, toggle the mode if ARG is `toggle'. Enable the
|
|
||||||
mode if ARG is nil, omitted, or is a positive number. Disable the mode
|
|
||||||
if ARG is a negative number.
|
|
||||||
|
|
||||||
To check whether the minor mode is enabled in the current buffer,
|
|
||||||
evaluate `(default-value \\='dired-async-mode)'.
|
|
||||||
|
|
||||||
The mode's hook is called both when the mode is enabled and when it is
|
|
||||||
disabled.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(autoload 'dired-async-do-copy "dired-async" "\
|
|
||||||
Run ‘dired-do-copy’ asynchronously.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(autoload 'dired-async-do-symlink "dired-async" "\
|
|
||||||
Run ‘dired-do-symlink’ asynchronously.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(autoload 'dired-async-do-hardlink "dired-async" "\
|
|
||||||
Run ‘dired-do-hardlink’ asynchronously.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(autoload 'dired-async-do-rename "dired-async" "\
|
|
||||||
Run ‘dired-do-rename’ asynchronously.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(register-definition-prefixes "dired-async" '("dired-async-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from smtpmail-async.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "smtpmail-async" '("async-smtpmail-"))
|
|
||||||
|
|
||||||
;;; End of scraped data
|
|
||||||
|
|
||||||
(provide 'async-autoloads)
|
|
||||||
|
|
||||||
;; Local Variables:
|
|
||||||
;; version-control: never
|
|
||||||
;; no-byte-compile: t
|
|
||||||
;; no-update-autoloads: t
|
|
||||||
;; no-native-compile: t
|
|
||||||
;; coding: utf-8-emacs-unix
|
|
||||||
;; End:
|
|
||||||
|
|
||||||
;;; async-autoloads.el ends here
|
|
||||||
|
|
@ -1,241 +0,0 @@
|
||||||
;;; async-bytecomp.el --- Compile elisp files asynchronously -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Authors: John Wiegley <jwiegley@gmail.com>
|
|
||||||
;; Thierry Volpiatto <thievol@posteo.net>
|
|
||||||
|
|
||||||
;; Keywords: dired async byte-compile
|
|
||||||
;; X-URL: https://github.com/jwiegley/emacs-async
|
|
||||||
|
|
||||||
;; 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; This package provide the `async-byte-recompile-directory' function
|
|
||||||
;; which allows, as the name says to recompile a directory outside of
|
|
||||||
;; your running emacs. Single files can be compiled with
|
|
||||||
;; `async-byte-compile-file'. The benefit is your files will be
|
|
||||||
;; compiled in a clean environment without the old *.el files
|
|
||||||
;; loaded. A mode `async-bytecomp-package-mode' is provided to
|
|
||||||
;; automatically compile packages asynchronously when installing or
|
|
||||||
;; upgrading, among other things, this fix a bug in package.el which
|
|
||||||
;; recompile the new files in the current environment with the old
|
|
||||||
;; files loaded, creating errors in most packages after upgrades.
|
|
||||||
;;
|
|
||||||
;; NB: This package is advising the function `package--compile' when
|
|
||||||
;; `async-bytecomp-package-mode' is enabled. This mode is useful
|
|
||||||
;; only when using a synchronous package manager (e.g. M-x
|
|
||||||
;; list-package), users of M-x helm-packages don't need this anymore.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'cl-lib)
|
|
||||||
(require 'async)
|
|
||||||
(require 'bytecomp)
|
|
||||||
|
|
||||||
(declare-function package-desc-name "package.el")
|
|
||||||
(declare-function package-desc-dir "package.el")
|
|
||||||
|
|
||||||
(defcustom async-bytecomp-allowed-packages 'all
|
|
||||||
"Packages in this list will be compiled asynchronously by `package--compile'.
|
|
||||||
All the dependencies of these packages will be compiled async too,
|
|
||||||
so no need to add dependencies to this list.
|
|
||||||
The value of this variable can also be the symbol `all' (default), in this case
|
|
||||||
all packages are always compiled asynchronously."
|
|
||||||
:group 'async
|
|
||||||
:type '(choice
|
|
||||||
(const :tag "All packages" all)
|
|
||||||
(repeat symbol)))
|
|
||||||
|
|
||||||
(defvar async-byte-compile-log-file "async-bytecomp.log"
|
|
||||||
"Prefix for a file used to pass errors from async process to the caller.
|
|
||||||
The `file-name-nondirectory' part of the value is passed to
|
|
||||||
`make-temp-file' as a prefix. When the value is an absolute
|
|
||||||
path, then the `file-name-directory' part of it is expanded in
|
|
||||||
the calling process (with `expand-file-name') and used as a value
|
|
||||||
of variable `temporary-file-directory' in async processes.")
|
|
||||||
|
|
||||||
(defvar async-bytecomp-load-variable-regexp "\\`load-path\\'"
|
|
||||||
"The variable used by `async-inject-variables' when (re)compiling async.")
|
|
||||||
|
|
||||||
(defun async-bytecomp--file-to-comp-buffer-1 (log-file &optional postproc)
|
|
||||||
(let ((buf (get-buffer-create byte-compile-log-buffer)))
|
|
||||||
(with-current-buffer buf
|
|
||||||
(goto-char (point-max))
|
|
||||||
(let ((inhibit-read-only t))
|
|
||||||
(insert-file-contents log-file)
|
|
||||||
(compilation-mode))
|
|
||||||
(display-buffer buf)
|
|
||||||
(delete-file log-file)
|
|
||||||
(and postproc (funcall postproc)))))
|
|
||||||
|
|
||||||
(defun async-bytecomp--file-to-comp-buffer (file-or-dir &optional quiet type log-file)
|
|
||||||
(let ((bn (file-name-nondirectory (directory-file-name file-or-dir)))
|
|
||||||
(action-name (pcase type
|
|
||||||
('file "File")
|
|
||||||
('directory "Directory"))))
|
|
||||||
(if (and log-file (file-exists-p log-file))
|
|
||||||
(async-bytecomp--file-to-comp-buffer-1
|
|
||||||
log-file
|
|
||||||
(unless quiet
|
|
||||||
(lambda ()
|
|
||||||
(let ((n 0))
|
|
||||||
(unless quiet
|
|
||||||
(save-excursion
|
|
||||||
(goto-char (point-min))
|
|
||||||
(while (re-search-forward "^.*:Error:" nil t)
|
|
||||||
(cl-incf n)))
|
|
||||||
(if (> n 0)
|
|
||||||
(message "Failed to compile %d files in directory `%s'" n bn)
|
|
||||||
(message "%s `%s' compiled asynchronously with warnings"
|
|
||||||
action-name bn)))))))
|
|
||||||
(unless quiet
|
|
||||||
(message "%s `%s' compiled asynchronously with success" action-name bn)))))
|
|
||||||
|
|
||||||
(defmacro async-bytecomp--comp-buffer-to-file ()
|
|
||||||
"Write contents of `byte-compile-log-buffer' to a log file.
|
|
||||||
The log file is a temporary file that name is determined by
|
|
||||||
`async-byte-compile-log-file', which see. Return the actual log
|
|
||||||
file name, or nil if no log file has been created."
|
|
||||||
`(when (get-buffer byte-compile-log-buffer)
|
|
||||||
(let ((error-data (with-current-buffer byte-compile-log-buffer
|
|
||||||
(buffer-substring-no-properties (point-min) (point-max)))))
|
|
||||||
(unless (string= error-data "")
|
|
||||||
;; The `async-byte-compile-log-file' used to be an absolute file name
|
|
||||||
;; shared amongst all compilation async processes. For backward
|
|
||||||
;; compatibility the directory part of it is used to create logs the same
|
|
||||||
;; directory while the nondirectory part denotes the PREFIX for
|
|
||||||
;; `make-temp-file' call. The `temporary-file-directory' is bound, such
|
|
||||||
;; that the async process uses one set by the caller.
|
|
||||||
(let ((temporary-file-directory
|
|
||||||
,(or (when (and async-byte-compile-log-file
|
|
||||||
(file-name-absolute-p
|
|
||||||
async-byte-compile-log-file))
|
|
||||||
(expand-file-name (file-name-directory
|
|
||||||
async-byte-compile-log-file)))
|
|
||||||
temporary-file-directory))
|
|
||||||
(log-file (make-temp-file ,(let ((log-file
|
|
||||||
(file-name-nondirectory
|
|
||||||
async-byte-compile-log-file)))
|
|
||||||
(format "%s%s"
|
|
||||||
log-file
|
|
||||||
(if (string-suffix-p "." log-file)
|
|
||||||
"" "."))))))
|
|
||||||
(with-temp-file log-file
|
|
||||||
(erase-buffer)
|
|
||||||
(insert error-data))
|
|
||||||
log-file)))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun async-byte-recompile-directory (directory &optional quiet)
|
|
||||||
"Compile all *.el files in DIRECTORY asynchronously.
|
|
||||||
All *.elc files are systematically deleted before proceeding."
|
|
||||||
(cl-loop with dir = (directory-files directory t "\\.elc\\'")
|
|
||||||
unless dir return nil
|
|
||||||
for f in dir
|
|
||||||
when (file-exists-p f) do (delete-file f))
|
|
||||||
;; Ensure async is reloaded when async.elc is deleted.
|
|
||||||
;; This happen when recompiling its own directory.
|
|
||||||
(load "async")
|
|
||||||
(let ((call-back
|
|
||||||
(lambda (&optional log-file)
|
|
||||||
(async-bytecomp--file-to-comp-buffer directory quiet 'directory log-file))))
|
|
||||||
(async-start
|
|
||||||
`(lambda ()
|
|
||||||
(require 'bytecomp)
|
|
||||||
,(async-inject-variables async-bytecomp-load-variable-regexp)
|
|
||||||
(let ((default-directory (file-name-as-directory ,directory)))
|
|
||||||
(add-to-list 'load-path default-directory)
|
|
||||||
(byte-recompile-directory ,directory 0 t)
|
|
||||||
,(macroexpand '(async-bytecomp--comp-buffer-to-file))))
|
|
||||||
call-back)
|
|
||||||
(unless quiet (message "Started compiling asynchronously directory %s" directory))))
|
|
||||||
|
|
||||||
(defvar package-archive-contents)
|
|
||||||
(defvar package-alist)
|
|
||||||
(declare-function package-desc-reqs "package.el" (cl-x))
|
|
||||||
|
|
||||||
(defun async-bytecomp--get-package-deps (pkgs)
|
|
||||||
;; Same as `package--get-deps' but parse instead `package-archive-contents'
|
|
||||||
;; because PKG is not already installed and not present in `package-alist'.
|
|
||||||
;; However fallback to `package-alist' in case PKG no more present
|
|
||||||
;; in `package-archive-contents' due to modification to `package-archives'.
|
|
||||||
;; See issue #58.
|
|
||||||
(let ((seen '()))
|
|
||||||
(while pkgs
|
|
||||||
(let ((pkg (pop pkgs)))
|
|
||||||
(unless (memq pkg seen)
|
|
||||||
(let ((pkg-desc (cadr (or (assq pkg package-archive-contents)
|
|
||||||
(assq pkg package-alist)))))
|
|
||||||
(when pkg-desc
|
|
||||||
(push pkg seen)
|
|
||||||
(setq pkgs (append (mapcar #'car (package-desc-reqs pkg-desc))
|
|
||||||
pkgs)))))))
|
|
||||||
seen))
|
|
||||||
|
|
||||||
(defun async--package-compile (orig-fun pkg-desc &rest args)
|
|
||||||
(let ((cur-package (package-desc-name pkg-desc))
|
|
||||||
(pkg-dir (package-desc-dir pkg-desc)))
|
|
||||||
(if (or (member async-bytecomp-allowed-packages '(t all (all)))
|
|
||||||
(memq cur-package (async-bytecomp--get-package-deps
|
|
||||||
async-bytecomp-allowed-packages)))
|
|
||||||
(progn
|
|
||||||
(when (eq cur-package 'async)
|
|
||||||
(fmakunbound 'async-byte-recompile-directory)
|
|
||||||
;; Add to `load-path' the latest version of async and
|
|
||||||
;; reload it when reinstalling async.
|
|
||||||
(cl-pushnew pkg-dir load-path)
|
|
||||||
(load "async-bytecomp"))
|
|
||||||
;; `async-byte-recompile-directory' will add directory
|
|
||||||
;; as needed to `load-path'.
|
|
||||||
(async-byte-recompile-directory (package-desc-dir pkg-desc) t))
|
|
||||||
(apply orig-fun pkg-desc args))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(define-minor-mode async-bytecomp-package-mode
|
|
||||||
"Byte compile asynchronously packages installed with package.el.
|
|
||||||
Async compilation of packages can be controlled by
|
|
||||||
`async-bytecomp-allowed-packages'.
|
|
||||||
NOTE: Use this mode only if you install/upgrade etc... your packages
|
|
||||||
synchronously, if you use a package manager like helm-package.el which
|
|
||||||
by default is async you don't need this."
|
|
||||||
:group 'async
|
|
||||||
:global t
|
|
||||||
(if async-bytecomp-package-mode
|
|
||||||
(advice-add 'package--compile :around #'async--package-compile)
|
|
||||||
(advice-remove 'package--compile #'async--package-compile)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun async-byte-compile-file (file)
|
|
||||||
"Byte compile Lisp code FILE asynchronously.
|
|
||||||
|
|
||||||
Same as `byte-compile-file' but asynchronous."
|
|
||||||
(interactive "fFile: ")
|
|
||||||
(let ((call-back
|
|
||||||
(lambda (&optional log-file)
|
|
||||||
(async-bytecomp--file-to-comp-buffer file nil 'file log-file))))
|
|
||||||
(async-start
|
|
||||||
`(lambda ()
|
|
||||||
(require 'bytecomp)
|
|
||||||
,(async-inject-variables async-bytecomp-load-variable-regexp)
|
|
||||||
(let ((default-directory ,(file-name-directory file)))
|
|
||||||
(add-to-list 'load-path default-directory)
|
|
||||||
(byte-compile-file ,file)
|
|
||||||
,(macroexpand '(async-bytecomp--comp-buffer-to-file))))
|
|
||||||
call-back)))
|
|
||||||
|
|
||||||
(provide 'async-bytecomp)
|
|
||||||
|
|
||||||
;;; async-bytecomp.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1,145 +0,0 @@
|
||||||
;;; async-package.el --- Fetch packages asynchronously -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Author: Thierry Volpiatto <thievol@posteo.net>
|
|
||||||
|
|
||||||
;; Keywords: dired async byte-compile package
|
|
||||||
;; X-URL: https://github.com/jwiegley/emacs-async
|
|
||||||
|
|
||||||
;; 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Provide the function `async-package-do-action' to
|
|
||||||
;; (re)install/upgrade packages asynchronously.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(eval-when-compile (require 'cl-lib))
|
|
||||||
(require 'async-bytecomp)
|
|
||||||
(require 'dired-async)
|
|
||||||
(require 'package)
|
|
||||||
|
|
||||||
(define-minor-mode async-package--modeline-mode
|
|
||||||
"Notify mode-line that an async process run."
|
|
||||||
:group 'async
|
|
||||||
:global t
|
|
||||||
:lighter (:eval (propertize (format " [%s async job Installing package(s)]"
|
|
||||||
(length (dired-async-processes
|
|
||||||
'async-pkg-install)))
|
|
||||||
'face 'async-package-message))
|
|
||||||
(unless async-package--modeline-mode
|
|
||||||
(let ((visible-bell t)) (ding))))
|
|
||||||
|
|
||||||
(defvar async-pkg-install-after-hook nil
|
|
||||||
"Hook that run after package installation.
|
|
||||||
The hook runs in the call-back once installation is done in child emacs.")
|
|
||||||
|
|
||||||
(defface async-package-message
|
|
||||||
'((t (:foreground "yellow")))
|
|
||||||
"Face used for mode-line message."
|
|
||||||
:group 'async)
|
|
||||||
|
|
||||||
(defun async-package-do-action (action packages error-file)
|
|
||||||
"Execute ACTION asynchronously on PACKAGES.
|
|
||||||
Argument ACTION can be one of \\='install, \\='upgrade, \\='reinstall.
|
|
||||||
Argument PACKAGES is a list of packages (symbols).
|
|
||||||
Argument ERROR-FILE is the file where errors are logged, if some."
|
|
||||||
(require 'async-bytecomp)
|
|
||||||
(let ((fn (pcase action
|
|
||||||
('install 'package-install)
|
|
||||||
('upgrade 'package-upgrade)
|
|
||||||
('reinstall 'package-reinstall)))
|
|
||||||
(action-string (pcase action
|
|
||||||
('install "Installing")
|
|
||||||
('upgrade "Upgrading")
|
|
||||||
('reinstall "Reinstalling")))
|
|
||||||
;; As PACKAGES are installed and compiled in a single async
|
|
||||||
;; process we don't need to compute log-file in child process
|
|
||||||
;; i.e. we use the same log-file for all PACKAGES.
|
|
||||||
(log-file (make-temp-file
|
|
||||||
(expand-file-name
|
|
||||||
(file-name-nondirectory async-byte-compile-log-file)
|
|
||||||
temporary-file-directory))))
|
|
||||||
(message "%s %s package(s)..." action-string (length packages))
|
|
||||||
(process-put
|
|
||||||
(async-start
|
|
||||||
`(lambda ()
|
|
||||||
(require 'bytecomp)
|
|
||||||
(setq package-archives ',package-archives
|
|
||||||
package-pinned-packages ',package-pinned-packages
|
|
||||||
package-archive-contents ',package-archive-contents
|
|
||||||
package-user-dir ,package-user-dir
|
|
||||||
package-alist ',package-alist
|
|
||||||
load-path ',load-path)
|
|
||||||
;; Ensure `async-bytecomp-package-mode' doesn't kick in
|
|
||||||
;; (issue #194) as some packages may enable it
|
|
||||||
;; inconditionally. We don't need to compile async as we are
|
|
||||||
;; already async and in a clean environment.
|
|
||||||
(require 'async-bytecomp)
|
|
||||||
(setq async-bytecomp-allowed-packages nil)
|
|
||||||
(prog1
|
|
||||||
(condition-case err
|
|
||||||
(mapc ',fn ',packages)
|
|
||||||
(error
|
|
||||||
(with-temp-file ,error-file
|
|
||||||
(insert
|
|
||||||
(format
|
|
||||||
"%S:\n Please refresh package list before %s"
|
|
||||||
err ,action-string)))))
|
|
||||||
(when (get-buffer byte-compile-log-buffer)
|
|
||||||
(let ((error-data (with-current-buffer byte-compile-log-buffer
|
|
||||||
(buffer-substring-no-properties
|
|
||||||
(point-min) (point-max)))))
|
|
||||||
(unless (string= error-data "")
|
|
||||||
(with-temp-file ,log-file
|
|
||||||
(erase-buffer)
|
|
||||||
(insert error-data)))))))
|
|
||||||
(lambda (result)
|
|
||||||
(if (file-exists-p error-file)
|
|
||||||
(let ((buf (find-file-noselect error-file)))
|
|
||||||
(pop-to-buffer
|
|
||||||
buf '(nil . ((window-height . fit-window-to-buffer))))
|
|
||||||
(special-mode)
|
|
||||||
(delete-file error-file)
|
|
||||||
(async-package--modeline-mode -1))
|
|
||||||
(when result
|
|
||||||
(let ((pkgs (if (listp result) result (list result))))
|
|
||||||
(when (eq action 'install)
|
|
||||||
(customize-save-variable
|
|
||||||
'package-selected-packages
|
|
||||||
(delete-dups (append pkgs package-selected-packages))))
|
|
||||||
(package-load-all-descriptors) ; refresh package-alist.
|
|
||||||
(mapc #'package-activate pkgs) ; load packages.
|
|
||||||
(async-package--modeline-mode -1)
|
|
||||||
(message "%s %s packages done" action-string (length packages))
|
|
||||||
(run-with-timer
|
|
||||||
0.1 nil
|
|
||||||
(lambda (lst str)
|
|
||||||
(dired-async-mode-line-message
|
|
||||||
"%s %d package(s) done"
|
|
||||||
'async-package-message
|
|
||||||
str (length lst)))
|
|
||||||
packages action-string)
|
|
||||||
(if (zerop (nth 7 (file-attributes log-file)))
|
|
||||||
(delete-file log-file)
|
|
||||||
(async-bytecomp--file-to-comp-buffer-1 log-file)))))
|
|
||||||
(run-hooks 'async-pkg-install-after-hook)))
|
|
||||||
'async-pkg-install t)
|
|
||||||
(async-package--modeline-mode 1)))
|
|
||||||
|
|
||||||
(provide 'async-package)
|
|
||||||
|
|
||||||
;;; async-package.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1,10 +0,0 @@
|
||||||
;; -*- no-byte-compile: t; lexical-binding: nil -*-
|
|
||||||
(define-package "async" "20260729.1431"
|
|
||||||
"Asynchronous processing in Emacs."
|
|
||||||
'((emacs "24.4"))
|
|
||||||
:url "https://github.com/jwiegley/emacs-async"
|
|
||||||
:commit "4fdcb061a166e0d6ccc27d3829a28e04415ae825"
|
|
||||||
:revdesc "4fdcb061a166"
|
|
||||||
:keywords '("async")
|
|
||||||
:authors '(("John Wiegley" . "jwiegley@gmail.com"))
|
|
||||||
:maintainers '(("Thierry Volpiatto" . "thievol@posteo.net")))
|
|
||||||
|
|
@ -1,617 +0,0 @@
|
||||||
;;; async.el --- Asynchronous processing in Emacs -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Author: John Wiegley <jwiegley@gmail.com>
|
|
||||||
;; Maintainer: Thierry Volpiatto <thievol@posteo.net>
|
|
||||||
|
|
||||||
;; Created: 18 Jun 2012
|
|
||||||
;; Package-Version: 20260729.1431
|
|
||||||
;; Package-Revision: 4fdcb061a166
|
|
||||||
;; Package-Requires: ((emacs "24.4"))
|
|
||||||
|
|
||||||
;; Keywords: async
|
|
||||||
;; URL: https://github.com/jwiegley/emacs-async
|
|
||||||
|
|
||||||
;; 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Adds the ability to call asynchronous functions and process with ease. See
|
|
||||||
;; the documentation for `async-start' and `async-start-process'.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(eval-when-compile (require 'cl-lib))
|
|
||||||
|
|
||||||
(defvar tramp-password-prompt-regexp)
|
|
||||||
|
|
||||||
(defgroup async nil
|
|
||||||
"Simple asynchronous processing in Emacs"
|
|
||||||
:group 'lisp)
|
|
||||||
|
|
||||||
(defcustom async-variables-noprops-function #'async--purecopy
|
|
||||||
"Default function to remove text properties in variables."
|
|
||||||
:type 'function)
|
|
||||||
|
|
||||||
(defcustom async-prompt-for-password t
|
|
||||||
"Prompt for password in parent Emacs if needed when non nil.
|
|
||||||
When this is nil child Emacs will hang forever when a user interaction
|
|
||||||
for password is required unless a password is stored in a \".authinfo\" file."
|
|
||||||
:type 'boolean)
|
|
||||||
|
|
||||||
(defvar async-process-noquery-on-exit nil
|
|
||||||
"Used as the :noquery argument to `make-process'.
|
|
||||||
|
|
||||||
Intended to be let-bound around a call to `async-start' or
|
|
||||||
`async-start-process'. If non-nil, the child Emacs process will
|
|
||||||
be silently killed if the user exits the parent Emacs.")
|
|
||||||
|
|
||||||
(defvar async-debug nil)
|
|
||||||
(defvar async-send-over-pipe t)
|
|
||||||
(defvar async-in-child-emacs nil)
|
|
||||||
(defvar async-callback nil)
|
|
||||||
(defvar async-callback-for-process nil
|
|
||||||
"Non-nil if the subprocess is not Emacs executing a lisp form.")
|
|
||||||
(defvar async-callback-value nil)
|
|
||||||
(defvar async-callback-value-set nil)
|
|
||||||
(defvar async-current-process nil)
|
|
||||||
(defvar async--procvar nil)
|
|
||||||
(defvar async-read-marker nil
|
|
||||||
"Position from which we read the last message packet.
|
|
||||||
|
|
||||||
Message packets are delivered from client line-by-line as base64
|
|
||||||
encoded strings.")
|
|
||||||
(defvar async-child-init nil
|
|
||||||
"Initialisation file for async child Emacs.
|
|
||||||
|
|
||||||
If defined this allows for an init file to setup the child Emacs. It
|
|
||||||
should not be your normal init.el as that would likely load more
|
|
||||||
things that you require. It should limit itself to ensuring paths have
|
|
||||||
been setup so any async code can load libraries you expect.")
|
|
||||||
|
|
||||||
;; For emacs<29 (only exists in emacs-29+).
|
|
||||||
(defvar print-symbols-bare)
|
|
||||||
|
|
||||||
(defun async--purecopy (object)
|
|
||||||
"Remove text properties in OBJECT.
|
|
||||||
|
|
||||||
Argument OBJECT may be a list or a string, if anything else it
|
|
||||||
is returned unmodified."
|
|
||||||
(cond ((stringp object)
|
|
||||||
(substring-no-properties object))
|
|
||||||
((consp object)
|
|
||||||
(cl-loop for elm in object
|
|
||||||
;; A string.
|
|
||||||
if (stringp elm)
|
|
||||||
collect (substring-no-properties elm)
|
|
||||||
else
|
|
||||||
;; Proper lists.
|
|
||||||
if (and (consp elm) (null (cdr (last elm))))
|
|
||||||
collect (async--purecopy elm)
|
|
||||||
else
|
|
||||||
;; Dotted lists.
|
|
||||||
;; We handle here only dotted list where car and cdr
|
|
||||||
;; are atoms i.e. (x . y) and not (x . (x . y)) or
|
|
||||||
;; (x . (x y)) which should fit most cases.
|
|
||||||
if (and (consp elm) (cdr (last elm)))
|
|
||||||
collect (let ((key (car elm))
|
|
||||||
(val (cdr elm)))
|
|
||||||
(cons (if (stringp key)
|
|
||||||
(substring-no-properties key)
|
|
||||||
key)
|
|
||||||
(if (stringp val)
|
|
||||||
(substring-no-properties val)
|
|
||||||
val)))
|
|
||||||
else
|
|
||||||
collect elm))
|
|
||||||
(t object)))
|
|
||||||
|
|
||||||
(defvar async-inject-variables-exclude-regexps '("-syntax-table\\'" "-abbrev-table\\'")
|
|
||||||
"A list of regexps that `async-inject-variables' should ignore.")
|
|
||||||
|
|
||||||
(defun async-inject-variables
|
|
||||||
(include-regexp &optional predicate exclude-regexp noprops)
|
|
||||||
"Return a `setq' form that replicates part of the calling environment.
|
|
||||||
|
|
||||||
It sets the value for every variable matching INCLUDE-REGEXP and
|
|
||||||
also PREDICATE. It will not perform injection for any variable
|
|
||||||
matching EXCLUDE-REGEXP (if present) and variables matching one of
|
|
||||||
`async-inject-variables-exclude-regexps'.
|
|
||||||
When NOPROPS is non nil it tries to strip out text properties of each
|
|
||||||
variable's value with `async-variables-noprops-function'.
|
|
||||||
|
|
||||||
It is intended to be used as follows:
|
|
||||||
|
|
||||||
(async-start
|
|
||||||
\\=`(lambda ()
|
|
||||||
(require \\='smtpmail)
|
|
||||||
(with-temp-buffer
|
|
||||||
(insert ,(buffer-substring-no-properties (point-min) (point-max)))
|
|
||||||
;; Pass in the variable environment for smtpmail
|
|
||||||
,(async-inject-variables \"\\\\=`\\(smtpmail\\|\\(user-\\)?mail\\)-\")
|
|
||||||
(smtpmail-send-it)))
|
|
||||||
\\='ignore)"
|
|
||||||
`(setq
|
|
||||||
,@(let (bindings)
|
|
||||||
(mapatoms
|
|
||||||
(lambda (sym)
|
|
||||||
(let ((sname (and (boundp sym) (symbol-name sym)))
|
|
||||||
value)
|
|
||||||
(when (and sname
|
|
||||||
(or (null include-regexp)
|
|
||||||
(string-match include-regexp sname))
|
|
||||||
(or (null exclude-regexp)
|
|
||||||
(not (string-match exclude-regexp sname)))
|
|
||||||
(cl-loop for re in async-inject-variables-exclude-regexps
|
|
||||||
never (string-match-p re sname)))
|
|
||||||
(setq value (symbol-value sym))
|
|
||||||
(unless (or (stringp value)
|
|
||||||
(memq value '(nil t))
|
|
||||||
(numberp value)
|
|
||||||
(vectorp value))
|
|
||||||
(setq value `(quote ,value)))
|
|
||||||
(when noprops
|
|
||||||
(setq value (funcall async-variables-noprops-function
|
|
||||||
value)))
|
|
||||||
(when (or (null predicate)
|
|
||||||
(funcall predicate sym))
|
|
||||||
(setq bindings (cons value bindings)
|
|
||||||
bindings (cons sym bindings)))))))
|
|
||||||
bindings)))
|
|
||||||
|
|
||||||
(defalias 'async-inject-environment 'async-inject-variables)
|
|
||||||
|
|
||||||
(defun async-handle-result (func result buf)
|
|
||||||
(if (null func)
|
|
||||||
(progn
|
|
||||||
(set (make-local-variable 'async-callback-value) result)
|
|
||||||
(set (make-local-variable 'async-callback-value-set) t))
|
|
||||||
(unwind-protect
|
|
||||||
(if (and (listp result)
|
|
||||||
(eq 'async-signal (nth 0 result)))
|
|
||||||
(signal (car (nth 1 result))
|
|
||||||
(cdr (nth 1 result)))
|
|
||||||
(funcall func result))
|
|
||||||
(unless async-debug
|
|
||||||
(kill-buffer buf)))))
|
|
||||||
|
|
||||||
(defun async-when-done (proc &optional _change)
|
|
||||||
"Process sentinel used to retrieve the value from the child process."
|
|
||||||
(when (eq 'exit (process-status proc))
|
|
||||||
(with-current-buffer (process-buffer proc)
|
|
||||||
(let ((async-current-process proc))
|
|
||||||
(if (= 0 (process-exit-status proc))
|
|
||||||
(if async-callback-for-process
|
|
||||||
(if async-callback
|
|
||||||
(prog1
|
|
||||||
(funcall async-callback proc)
|
|
||||||
(unless async-debug
|
|
||||||
;; we need to check this because theoretically
|
|
||||||
;; `async-callback' could've killed it already
|
|
||||||
(when (buffer-live-p (process-buffer proc))
|
|
||||||
(kill-buffer (process-buffer proc)))))
|
|
||||||
(set (make-local-variable 'async-callback-value) proc)
|
|
||||||
(set (make-local-variable 'async-callback-value-set) t))
|
|
||||||
;; Maybe strip out unreadable "#"; They are replaced by
|
|
||||||
;; empty string unless they are prefixing a special
|
|
||||||
;; object like a marker. See issue #145.
|
|
||||||
(widen)
|
|
||||||
(goto-char (point-min))
|
|
||||||
(save-excursion
|
|
||||||
;; Transform markers in list like
|
|
||||||
;; (marker (moves after insertion) at 2338 in
|
|
||||||
;; test\.org) so that remap text properties function
|
|
||||||
;; can parse it to restitute marker.
|
|
||||||
(while (re-search-forward "#<\\([^>]*\\)>" nil t)
|
|
||||||
(replace-match (concat "(" (match-string 1) ")") t t)))
|
|
||||||
(while (re-search-forward "#(" nil t)
|
|
||||||
(replace-match "(" t t))
|
|
||||||
(goto-char (point-max))
|
|
||||||
(backward-sexp)
|
|
||||||
(let ((value (read (current-buffer))))
|
|
||||||
(async-handle-result async-callback value (current-buffer))))
|
|
||||||
(set (make-local-variable 'async-callback-value)
|
|
||||||
(list 'error
|
|
||||||
(format "Async process '%s' failed with exit code %d"
|
|
||||||
(process-name proc) (process-exit-status proc))))
|
|
||||||
(set (make-local-variable 'async-callback-value-set) t))))))
|
|
||||||
|
|
||||||
(defun async-read-from-client (proc string &optional prompt-for-pwd)
|
|
||||||
"Process text from client process.
|
|
||||||
|
|
||||||
The string chunks usually arrive in maximum of 4096 bytes, so a
|
|
||||||
long client message might be split into multiple calls of this
|
|
||||||
function.
|
|
||||||
|
|
||||||
We use a marker `async-read-marker' to track the position of the
|
|
||||||
lasts complete line. Every time we get new input, we try to look
|
|
||||||
for newline, and if found, process the entire line and bump the
|
|
||||||
marker position to the end of this next line.
|
|
||||||
|
|
||||||
Argument PROMPT-FOR-PWD allow binding lexically the value of
|
|
||||||
`async-prompt-for-password', if unspecified its global value
|
|
||||||
is used."
|
|
||||||
(with-current-buffer (process-buffer proc)
|
|
||||||
(when (and prompt-for-pwd
|
|
||||||
(boundp 'tramp-password-prompt-regexp)
|
|
||||||
tramp-password-prompt-regexp
|
|
||||||
(string-match tramp-password-prompt-regexp string))
|
|
||||||
(process-send-string
|
|
||||||
proc (concat (read-passwd (match-string 0 string)) "\n")))
|
|
||||||
(goto-char (point-max))
|
|
||||||
(save-excursion
|
|
||||||
(insert string))
|
|
||||||
|
|
||||||
(while (search-forward "\n" nil t)
|
|
||||||
(save-excursion
|
|
||||||
(save-restriction
|
|
||||||
(widen)
|
|
||||||
(narrow-to-region async-read-marker (point))
|
|
||||||
(goto-char (point-min))
|
|
||||||
(let (msg)
|
|
||||||
(condition-case nil
|
|
||||||
;; It is safe to throw errors in the read because we
|
|
||||||
;; send messages always on their own line, and they
|
|
||||||
;; are always a base64 encoded string, so a message
|
|
||||||
;; will always read. We will also ignore the rest
|
|
||||||
;; of this line since there won't be anything
|
|
||||||
;; interesting.
|
|
||||||
(while (setq msg (read (current-buffer)))
|
|
||||||
(let ((msg-decoded (ignore-errors (base64-decode-string msg))))
|
|
||||||
(when msg-decoded
|
|
||||||
(setq msg-decoded (car (read-from-string msg-decoded)))
|
|
||||||
(when (and (listp msg-decoded)
|
|
||||||
(async-message-p msg-decoded)
|
|
||||||
async-callback)
|
|
||||||
(funcall async-callback msg-decoded)))))
|
|
||||||
;; This is OK, we reached the end of the chunk subprocess sent
|
|
||||||
;; at this time.
|
|
||||||
(invalid-read-syntax t)
|
|
||||||
(end-of-file t)))
|
|
||||||
(goto-char (point-max))
|
|
||||||
(move-marker async-read-marker (point)))))))
|
|
||||||
|
|
||||||
(defun async--receive-sexp (&optional stream)
|
|
||||||
;; We use `utf-8-emacs-unix' for the communication channel between
|
|
||||||
;; parent and child Emacs processes. This encoding can represent any
|
|
||||||
;; character that Emacs is capable of processing and gives us full
|
|
||||||
;; control over the EOL format. (See bug#165)
|
|
||||||
(let ((sexp (decode-coding-string (base64-decode-string (read stream))
|
|
||||||
'utf-8-emacs-unix))
|
|
||||||
;; Parent expects utf-8-emacs-unix encoded text.
|
|
||||||
(coding-system-for-write 'utf-8-emacs-unix))
|
|
||||||
(if async-debug
|
|
||||||
(message "Received sexp {{{%s}}}" (pp-to-string sexp)))
|
|
||||||
(setq sexp (read sexp))
|
|
||||||
(if async-debug
|
|
||||||
(message "Read sexp {{{%s}}}" (pp-to-string sexp)))
|
|
||||||
(eval sexp t)))
|
|
||||||
|
|
||||||
(defun async--insert-sexp (sexp)
|
|
||||||
(let (print-level
|
|
||||||
print-length
|
|
||||||
(print-escape-nonascii t)
|
|
||||||
(print-circle t)
|
|
||||||
;; Fix bug#153 in emacs-29 with symbol's positions.
|
|
||||||
(print-symbols-bare t))
|
|
||||||
(prin1 sexp (current-buffer))
|
|
||||||
;; Just in case the string we're sending might contain EOF
|
|
||||||
(encode-coding-region (point-min) (point-max) 'utf-8-emacs-unix)
|
|
||||||
(base64-encode-region (point-min) (point-max) t)
|
|
||||||
(goto-char (point-min)) (insert ?\")
|
|
||||||
(goto-char (point-max)) (insert ?\" ?\n)))
|
|
||||||
|
|
||||||
(defun async--transmit-sexp (process sexp)
|
|
||||||
(with-temp-buffer
|
|
||||||
(if async-debug
|
|
||||||
(message "Transmitting sexp {{{%s}}}" (pp-to-string sexp)))
|
|
||||||
(async--insert-sexp sexp)
|
|
||||||
(process-send-region process (point-min) (point-max))))
|
|
||||||
|
|
||||||
(defun async-batch-invoke ()
|
|
||||||
"Called from the child Emacs process' command line."
|
|
||||||
;; Make sure 'message' and 'prin1' encode stuff in utf-8-emacs-unix,
|
|
||||||
;; as parent process expects.
|
|
||||||
(let ((coding-system-for-write 'utf-8-emacs-unix)
|
|
||||||
(args-left command-line-args-left))
|
|
||||||
(setq async-in-child-emacs t
|
|
||||||
debug-on-error async-debug
|
|
||||||
command-line-args-left nil)
|
|
||||||
(condition-case-unless-debug err
|
|
||||||
(let ((ret (funcall
|
|
||||||
(async--receive-sexp (unless async-send-over-pipe
|
|
||||||
args-left)))))
|
|
||||||
;; The newlines makes client messages more robust and also
|
|
||||||
;; handle some weird line-buffering issues on windows.
|
|
||||||
;; Sometimes, the last "chunk" was not read by the filter,
|
|
||||||
;; so a newline here should force a buffer flush.
|
|
||||||
(princ "\n")
|
|
||||||
(prin1 ret)
|
|
||||||
(princ "\n"))
|
|
||||||
(error
|
|
||||||
(progn
|
|
||||||
(princ "\n")
|
|
||||||
(prin1 (list 'async-signal err))
|
|
||||||
(princ "\n"))))))
|
|
||||||
|
|
||||||
(defun async-ready (future)
|
|
||||||
"Query a FUTURE to see if it is ready.
|
|
||||||
|
|
||||||
I.e., if no blocking would result from a call to `async-get' on that FUTURE."
|
|
||||||
(and (memq (process-status future) '(exit signal))
|
|
||||||
(let ((buf (process-buffer future)))
|
|
||||||
(if (buffer-live-p buf)
|
|
||||||
(with-current-buffer buf
|
|
||||||
async-callback-value-set)
|
|
||||||
t))))
|
|
||||||
|
|
||||||
(defun async-wait (future)
|
|
||||||
"Wait for FUTURE to become ready."
|
|
||||||
(while (not (async-ready future))
|
|
||||||
(sleep-for 0.05)))
|
|
||||||
|
|
||||||
(defun async-get (future)
|
|
||||||
"Get the value from process FUTURE when it is ready.
|
|
||||||
FUTURE is returned by `async-start' or `async-start-process' when
|
|
||||||
its FINISH-FUNC is nil."
|
|
||||||
(and future (async-wait future))
|
|
||||||
(let ((buf (process-buffer future)))
|
|
||||||
(when (buffer-live-p buf)
|
|
||||||
(with-current-buffer buf
|
|
||||||
(async-handle-result
|
|
||||||
#'identity async-callback-value (current-buffer))))))
|
|
||||||
|
|
||||||
(defun async-message-p (value)
|
|
||||||
"Return non-nil if VALUE is an async.el message packet."
|
|
||||||
(and (listp value)
|
|
||||||
(plist-get value :async-message)))
|
|
||||||
|
|
||||||
(defun async-send (process-or-key &rest args)
|
|
||||||
"Send the given message to the asynchronous child or parent Emacs.
|
|
||||||
|
|
||||||
To send messages from the parent to a child, PROCESS-OR-KEY is
|
|
||||||
the child process object. ARGS is a plist. Example:
|
|
||||||
|
|
||||||
(async-send proc :operation :load-file :file \"this file\")
|
|
||||||
|
|
||||||
To send messages from the child to the parent, PROCESS-OR-KEY is
|
|
||||||
the first key of the plist, ARGS is a value followed by
|
|
||||||
optionally more key-value pairs. Example:
|
|
||||||
|
|
||||||
(async-send :status \"finished\" :file-size 123)"
|
|
||||||
(let ((args (append args '(:async-message t))))
|
|
||||||
(if async-in-child-emacs
|
|
||||||
;; `princ' because async--insert-sexp already quotes everything.
|
|
||||||
(princ
|
|
||||||
(with-temp-buffer
|
|
||||||
(async--insert-sexp (cons process-or-key args))
|
|
||||||
;; always make sure that one message package has its own
|
|
||||||
;; line as there can be any random debug garbage printed
|
|
||||||
;; above it.
|
|
||||||
(concat "\n" (buffer-string))))
|
|
||||||
(async--transmit-sexp process-or-key (list 'quote args)))))
|
|
||||||
|
|
||||||
(defun async-receive ()
|
|
||||||
"Receive message from parent Emacs.
|
|
||||||
|
|
||||||
The child process blocks until a message is received.
|
|
||||||
|
|
||||||
Message is a plist with one key :async-message set to t always
|
|
||||||
automatically added to signify this plist is an async message.
|
|
||||||
|
|
||||||
You can use `async-message-p' to test if the payload was a
|
|
||||||
message.
|
|
||||||
|
|
||||||
Use
|
|
||||||
|
|
||||||
(let ((msg (async-receive))) ...)
|
|
||||||
|
|
||||||
to read and process a message."
|
|
||||||
(async--receive-sexp))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun async-start-process (name program finish-func &rest program-args)
|
|
||||||
"Start the executable PROGRAM asynchronously named NAME. See `async-start'.
|
|
||||||
PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the
|
|
||||||
process object when done. If FINISH-FUNC is nil, the future
|
|
||||||
object will return the process object when the program is
|
|
||||||
finished. Set DEFAULT-DIRECTORY to change PROGRAM's current
|
|
||||||
working directory."
|
|
||||||
(let* ((buf (generate-new-buffer (concat "*" name "*")))
|
|
||||||
(buf-err (generate-new-buffer (concat "*" name ":err*")))
|
|
||||||
(prt-for-pwd async-prompt-for-password)
|
|
||||||
(proc (let ((process-connection-type nil))
|
|
||||||
(make-process
|
|
||||||
:name name
|
|
||||||
:buffer buf
|
|
||||||
:stderr buf-err
|
|
||||||
:command (cons program program-args)
|
|
||||||
:noquery async-process-noquery-on-exit))))
|
|
||||||
(set-process-sentinel
|
|
||||||
(get-buffer-process buf-err)
|
|
||||||
(lambda (proc _change)
|
|
||||||
(unless (or async-debug (process-live-p proc))
|
|
||||||
(kill-buffer (process-buffer proc)))))
|
|
||||||
(with-current-buffer buf
|
|
||||||
(set (make-local-variable 'async-callback) finish-func)
|
|
||||||
(set (make-local-variable 'async-read-marker)
|
|
||||||
(set-marker (make-marker) (point-min) buf))
|
|
||||||
(set-marker-insertion-type async-read-marker nil)
|
|
||||||
(set-process-sentinel proc #'async-when-done)
|
|
||||||
;; Pass the value of `async-prompt-for-password' to the process
|
|
||||||
;; filter fn through the lexical local var prt-for-pwd (Issue#182).
|
|
||||||
(set-process-filter proc (lambda (proc string)
|
|
||||||
(async-read-from-client
|
|
||||||
proc string prt-for-pwd)))
|
|
||||||
(unless (string= name "emacs")
|
|
||||||
(set (make-local-variable 'async-callback-for-process) t))
|
|
||||||
proc)))
|
|
||||||
|
|
||||||
(defvar async-quiet-switch "-Q"
|
|
||||||
"The Emacs parameter to use to call emacs without config.
|
|
||||||
Can be one of \"-Q\" or \"-q\".
|
|
||||||
Default is \"-Q\" but it is sometimes useful to use \"-q\" to have a
|
|
||||||
enhanced config or some more variables loaded.")
|
|
||||||
|
|
||||||
(defvar async-library nil
|
|
||||||
"Cache async library path.
|
|
||||||
It is useful only when you run multiple async processes in a loop, to
|
|
||||||
avoid calling many times `locate-library' which is costly.
|
|
||||||
This variable should be let bound around an `async-start' call and not
|
|
||||||
used globally. Should be found with `locate-library'.")
|
|
||||||
|
|
||||||
(defun async--emacs-program-args (&optional sexp)
|
|
||||||
"Return a list of arguments for invoking the child Emacs."
|
|
||||||
;; Using `locate-library' ensure we use the right file
|
|
||||||
;; when the .elc have been deleted, its result can be cached in
|
|
||||||
;; `async-library' see Issue#193.
|
|
||||||
(let ((args (list async-quiet-switch "-l" (or async-library
|
|
||||||
(locate-library "async")))))
|
|
||||||
(when async-child-init
|
|
||||||
(setq args (append args (list "-l" async-child-init))))
|
|
||||||
(append args (list "-batch" "-f" "async-batch-invoke"
|
|
||||||
(if sexp
|
|
||||||
(with-temp-buffer
|
|
||||||
(async--insert-sexp (list 'quote sexp))
|
|
||||||
(buffer-string))
|
|
||||||
"<none>")))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun async-start (start-func &optional finish-func)
|
|
||||||
"Execute START-FUNC (often a lambda) in a subordinate Emacs process.
|
|
||||||
When done, the return value is passed to FINISH-FUNC. Example:
|
|
||||||
|
|
||||||
(async-start
|
|
||||||
;; What to do in the child process
|
|
||||||
(lambda ()
|
|
||||||
(message \"This is a test\")
|
|
||||||
(sleep-for 3)
|
|
||||||
222)
|
|
||||||
|
|
||||||
;; What to do when it finishes
|
|
||||||
(lambda (result)
|
|
||||||
(message \"Async process done, result should be 222: %s\"
|
|
||||||
result)))
|
|
||||||
|
|
||||||
If you call `async-send' from a child process, the message will
|
|
||||||
be also passed to the FINISH-FUNC. You can test RESULT to see if
|
|
||||||
it is a message by using `async-message-p'. If nil, it means
|
|
||||||
this is the final result. Example of the FINISH-FUNC:
|
|
||||||
|
|
||||||
(lambda (result)
|
|
||||||
(if (async-message-p result)
|
|
||||||
(message \"Received a message from child process: %s\" result)
|
|
||||||
(message \"Async process done, result: %s\" result)))
|
|
||||||
|
|
||||||
If FINISH-FUNC is nil or missing, a future is returned that can
|
|
||||||
be inspected using `async-get', blocking until the value is
|
|
||||||
ready. Example:
|
|
||||||
|
|
||||||
(let ((proc (async-start
|
|
||||||
;; What to do in the child process
|
|
||||||
(lambda ()
|
|
||||||
(message \"This is a test\")
|
|
||||||
(sleep-for 3)
|
|
||||||
222))))
|
|
||||||
|
|
||||||
(message \"I'm going to do some work here\") ;; ....
|
|
||||||
|
|
||||||
(message \"Waiting on async process, result should be 222: %s\"
|
|
||||||
(async-get proc)))
|
|
||||||
|
|
||||||
If you don't want to use a callback, and you don't care about any
|
|
||||||
return value from the child process, pass the `ignore' symbol as
|
|
||||||
the second argument (if you don't, and never call `async-get', it
|
|
||||||
will leave *emacs* process buffers hanging around):
|
|
||||||
|
|
||||||
(async-start
|
|
||||||
(lambda ()
|
|
||||||
(delete-file \"a remote file on a slow link\" nil))
|
|
||||||
\\='ignore)
|
|
||||||
|
|
||||||
Special case:
|
|
||||||
If the output of START-FUNC is a string with properties
|
|
||||||
e.g. (buffer-string) RESULT will be transformed in a list where the
|
|
||||||
car is the string itself (without props) and the cdr the rest of
|
|
||||||
properties, this allows using in FINISH-FUNC the string without
|
|
||||||
properties and then apply the properties in cdr to this string (if
|
|
||||||
needed).
|
|
||||||
Properties handling special objects like markers are returned as
|
|
||||||
list to allow restoring them later.
|
|
||||||
See <https://github.com/jwiegley/emacs-async/issues/145> for more infos.
|
|
||||||
|
|
||||||
Note: Even when FINISH-FUNC is present, a future is still
|
|
||||||
returned except that it yields no value (since the value is
|
|
||||||
passed to FINISH-FUNC). Call `async-get' on such a future always
|
|
||||||
returns nil. It can still be useful, however, as an argument to
|
|
||||||
`async-ready' or `async-wait'."
|
|
||||||
(let ((sexp start-func)
|
|
||||||
;; Subordinate Emacs will send text encoded in utf-8-emacs-unix.
|
|
||||||
(coding-system-for-read 'utf-8-emacs-unix))
|
|
||||||
(setq async--procvar
|
|
||||||
(apply 'async-start-process
|
|
||||||
"emacs" (file-truename
|
|
||||||
(expand-file-name invocation-name
|
|
||||||
invocation-directory))
|
|
||||||
finish-func
|
|
||||||
(async--emacs-program-args (if (not async-send-over-pipe) sexp))))
|
|
||||||
|
|
||||||
(if async-send-over-pipe
|
|
||||||
(async--transmit-sexp async--procvar (list 'quote sexp)))
|
|
||||||
async--procvar))
|
|
||||||
|
|
||||||
(defmacro async-sandbox(func)
|
|
||||||
"Evaluate FUNC in a separate Emacs process, synchronously."
|
|
||||||
`(async-get (async-start ,func)))
|
|
||||||
|
|
||||||
(defun async--fold-left (fn forms bindings)
|
|
||||||
(let ((res forms))
|
|
||||||
(dolist (binding bindings)
|
|
||||||
(setq res (funcall fn res
|
|
||||||
(if (listp binding)
|
|
||||||
binding
|
|
||||||
(list binding)))))
|
|
||||||
res))
|
|
||||||
|
|
||||||
(defmacro async-let (bindings &rest forms)
|
|
||||||
"Implements `let', but each binding is established asynchronously.
|
|
||||||
For example:
|
|
||||||
|
|
||||||
(async-let ((x (foo))
|
|
||||||
(y (bar)))
|
|
||||||
(message \"%s %s\" x y))
|
|
||||||
|
|
||||||
expands to ==>
|
|
||||||
|
|
||||||
(async-start (foo)
|
|
||||||
(lambda (x)
|
|
||||||
(async-start (bar)
|
|
||||||
(lambda (y)
|
|
||||||
(message \"%s %s\" x y)))))"
|
|
||||||
(declare (indent 1))
|
|
||||||
(async--fold-left
|
|
||||||
(lambda (acc binding)
|
|
||||||
(let ((fun (pcase (cadr binding)
|
|
||||||
((and (pred functionp) f) f)
|
|
||||||
(f `(lambda () ,f)))))
|
|
||||||
`(async-start ,fun
|
|
||||||
(lambda (,(car binding))
|
|
||||||
,acc))))
|
|
||||||
`(progn ,@forms)
|
|
||||||
(reverse bindings)))
|
|
||||||
|
|
||||||
(provide 'async)
|
|
||||||
|
|
||||||
;;; async.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1,512 +0,0 @@
|
||||||
;;; dired-async.el --- Asynchronous dired actions -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Authors: John Wiegley <jwiegley@gmail.com>
|
|
||||||
;; Thierry Volpiatto <thievol@posteo.net>
|
|
||||||
|
|
||||||
;; Keywords: dired async network
|
|
||||||
;; X-URL: https://github.com/jwiegley/emacs-async
|
|
||||||
|
|
||||||
;; 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; This file provide a redefinition of `dired-create-file' function,
|
|
||||||
;; performs copies, moves and all what is handled by `dired-create-file'
|
|
||||||
;; in the background using a slave Emacs process,
|
|
||||||
;; by means of the async.el module.
|
|
||||||
;; To use it, put this in your .emacs:
|
|
||||||
|
|
||||||
;; (dired-async-mode 1)
|
|
||||||
|
|
||||||
;; This will enable async copy/rename etc...
|
|
||||||
;; in dired and helm.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'cl-lib)
|
|
||||||
(require 'dired-aux)
|
|
||||||
(require 'async)
|
|
||||||
|
|
||||||
(eval-when-compile
|
|
||||||
(defvar async-callback))
|
|
||||||
|
|
||||||
(defgroup dired-async nil
|
|
||||||
"Copy rename files asynchronously from dired."
|
|
||||||
:group 'dired)
|
|
||||||
|
|
||||||
(defcustom dired-async-env-variables-regexp
|
|
||||||
"\\`\\(tramp-\\(default\\|connection\\|remote\\)\\|ange-ftp\\)-.*"
|
|
||||||
"Variables matching this regexp will be loaded on Child Emacs."
|
|
||||||
:type 'regexp)
|
|
||||||
|
|
||||||
(defcustom dired-async-message-function 'dired-async-mode-line-message
|
|
||||||
"Function to use to notify result when operation finish.
|
|
||||||
Should take same args as `message'."
|
|
||||||
:type 'function)
|
|
||||||
|
|
||||||
(defcustom dired-async-log-file "/tmp/dired-async.log"
|
|
||||||
"File use to communicate errors from Child Emacs to host Emacs."
|
|
||||||
:type 'string)
|
|
||||||
|
|
||||||
(defcustom dired-async-mode-lighter '(:eval
|
|
||||||
(when (eq major-mode 'dired-mode)
|
|
||||||
" Async"))
|
|
||||||
"Mode line lighter used for `dired-async-mode'."
|
|
||||||
:risky t
|
|
||||||
:type 'sexp)
|
|
||||||
|
|
||||||
(defcustom dired-async-skip-fast nil
|
|
||||||
"If non-nil, skip async for fast operations.
|
|
||||||
Same device renames and copying and renaming files smaller than
|
|
||||||
`dired-async-small-file-max' are considered fast.
|
|
||||||
If the total size of all files exceed `dired-async-small-file-max'
|
|
||||||
operation is not considered fast."
|
|
||||||
:risky t
|
|
||||||
:type 'boolean)
|
|
||||||
|
|
||||||
(defcustom dired-async-small-file-max 5000000
|
|
||||||
"Files smaller than this in bytes are considered fast to copy
|
|
||||||
or rename for `dired-async-skip-fast'."
|
|
||||||
:risky t
|
|
||||||
:type 'integer)
|
|
||||||
|
|
||||||
(defcustom dired-async-large-file-warning-threshold large-file-warning-threshold
|
|
||||||
"Same as `large-file-warning-threshold' but for dired-async."
|
|
||||||
:type 'integer)
|
|
||||||
|
|
||||||
(defface dired-async-message
|
|
||||||
'((t (:foreground "yellow")))
|
|
||||||
"Face used for mode-line message.")
|
|
||||||
|
|
||||||
(defface dired-async-failures
|
|
||||||
'((t (:foreground "red")))
|
|
||||||
"Face used for mode-line message.")
|
|
||||||
|
|
||||||
(defface dired-async-mode-message
|
|
||||||
'((t (:foreground "Gold")))
|
|
||||||
"Face used for `dired-async--modeline-mode' lighter.")
|
|
||||||
|
|
||||||
(defvar dired-async-file-directory-p-fn #'file-directory-p
|
|
||||||
"The function used as `file-directory-p' fn for the from files.
|
|
||||||
In `dired-create-files', `file-directory-p' run on each candidate
|
|
||||||
before being async, which is costly when copying many files from a
|
|
||||||
remote like for example `adb'. A faster function may be let-bound to this
|
|
||||||
variable to speedup preprocessing of candidates in
|
|
||||||
`dired-create-files'. For instance, Helm use here
|
|
||||||
`helm-ff--file-directory-p'. This is used only once on each candidate
|
|
||||||
during the preprocessing of files before running async. It should be
|
|
||||||
used only there and let-bounded, don't bind it globally.")
|
|
||||||
|
|
||||||
(define-minor-mode dired-async--modeline-mode
|
|
||||||
"Notify mode-line that an async process run."
|
|
||||||
:global t
|
|
||||||
:lighter (:eval (propertize (format " [%s Async job(s) running]"
|
|
||||||
(length (dired-async-processes)))
|
|
||||||
'face 'dired-async-mode-message))
|
|
||||||
(unless dired-async--modeline-mode
|
|
||||||
(let ((visible-bell t)) (ding))))
|
|
||||||
|
|
||||||
(defun dired-async-mode-line-message (text face &rest args)
|
|
||||||
"Notify end of operation in `mode-line'."
|
|
||||||
(message nil)
|
|
||||||
(let ((mode-line-format (concat
|
|
||||||
" " (propertize
|
|
||||||
(if args
|
|
||||||
(apply #'format text args)
|
|
||||||
text)
|
|
||||||
'face face))))
|
|
||||||
(force-mode-line-update)
|
|
||||||
(sit-for 3)
|
|
||||||
(force-mode-line-update)))
|
|
||||||
|
|
||||||
(defun dired-async-processes (&optional propname)
|
|
||||||
(cl-loop for p in (process-list)
|
|
||||||
when (process-get p (or propname 'dired-async-process))
|
|
||||||
collect p))
|
|
||||||
|
|
||||||
(defun dired-async-kill-process ()
|
|
||||||
(interactive)
|
|
||||||
(let* ((processes (dired-async-processes))
|
|
||||||
(proc (car (last processes))))
|
|
||||||
(and proc (delete-process proc))
|
|
||||||
(unless (> (length processes) 1)
|
|
||||||
(dired-async--modeline-mode -1))))
|
|
||||||
|
|
||||||
(defun dired-async-after-file-create (total operation failures skipped)
|
|
||||||
"Callback function used for operation handled by `dired-create-file'."
|
|
||||||
(unless (dired-async-processes)
|
|
||||||
;; Turn off mode-line notification
|
|
||||||
;; only when last process end.
|
|
||||||
(dired-async--modeline-mode -1))
|
|
||||||
(when operation
|
|
||||||
(if (file-exists-p dired-async-log-file)
|
|
||||||
(progn
|
|
||||||
(pop-to-buffer (get-buffer-create dired-log-buffer))
|
|
||||||
(goto-char (point-max))
|
|
||||||
(setq inhibit-read-only t)
|
|
||||||
(insert "Error: ")
|
|
||||||
(insert-file-contents dired-async-log-file)
|
|
||||||
(special-mode)
|
|
||||||
(shrink-window-if-larger-than-buffer)
|
|
||||||
(delete-file dired-async-log-file))
|
|
||||||
(run-with-timer
|
|
||||||
0.1 nil
|
|
||||||
(lambda ()
|
|
||||||
;; First send error messages.
|
|
||||||
(cond (failures
|
|
||||||
(funcall dired-async-message-function
|
|
||||||
"%s failed for %d of %d file%s -- See *Dired log* buffer"
|
|
||||||
'dired-async-failures
|
|
||||||
(car operation) (length failures)
|
|
||||||
total (dired-plural-s total)))
|
|
||||||
(skipped
|
|
||||||
(funcall dired-async-message-function
|
|
||||||
"%s: %d of %d file%s skipped -- See *Dired log* buffer"
|
|
||||||
'dired-async-failures
|
|
||||||
(car operation) (length skipped) total
|
|
||||||
(dired-plural-s total))))
|
|
||||||
(when dired-buffers
|
|
||||||
(cl-loop for (_f . b) in dired-buffers
|
|
||||||
when (buffer-live-p b)
|
|
||||||
do (with-current-buffer b
|
|
||||||
(when (and (not (file-remote-p default-directory nil t))
|
|
||||||
(file-exists-p default-directory))
|
|
||||||
(revert-buffer nil t)))))
|
|
||||||
;; Finally send the success message.
|
|
||||||
(funcall dired-async-message-function
|
|
||||||
"Asynchronous %s of %s on %s file%s done"
|
|
||||||
'dired-async-message
|
|
||||||
(car operation) (cadr operation)
|
|
||||||
total (dired-plural-s total)))))))
|
|
||||||
|
|
||||||
(defun dired-async-maybe-kill-ftp ()
|
|
||||||
"Return a form to kill ftp process in child emacs."
|
|
||||||
(quote
|
|
||||||
(progn
|
|
||||||
(require 'cl-lib)
|
|
||||||
(let ((buf (cl-loop for b in (buffer-list)
|
|
||||||
thereis (and (string-match
|
|
||||||
"\\`\\*ftp.*"
|
|
||||||
(buffer-name b)) b))))
|
|
||||||
(when buf (kill-buffer buf))))))
|
|
||||||
|
|
||||||
(defsubst dired-async--directory-p (attributes)
|
|
||||||
"Return non-nil if ATTRIBUTES is for a directory.
|
|
||||||
See `file-attributes'."
|
|
||||||
;; Can also be a string for symlinks, so check for t explicitly.
|
|
||||||
(eq (file-attribute-type attributes) t))
|
|
||||||
|
|
||||||
(defsubst dired-async--same-device-p (f1 f2)
|
|
||||||
"Return non-nil if F1 and F2 have the same device number."
|
|
||||||
;; file-attribute-device-number may be a cons cell, so use equal for
|
|
||||||
;; testing (See Emacs bug/58446).
|
|
||||||
(equal (file-attribute-device-number (file-attributes f1))
|
|
||||||
(file-attribute-device-number (file-attributes f2))))
|
|
||||||
|
|
||||||
(defun dired-async--small-file-p (file &optional attrs)
|
|
||||||
"Return non-nil if FILE is considered small.
|
|
||||||
|
|
||||||
File is considered small if it size is smaller than
|
|
||||||
`dired-async-small-file-max'."
|
|
||||||
(let ((a (or attrs (file-attributes file))))
|
|
||||||
;; Directories are always large since we can't easily figure out
|
|
||||||
;; their total size.
|
|
||||||
(and (not (dired-async--directory-p a))
|
|
||||||
(< (file-attribute-size a) dired-async-small-file-max))))
|
|
||||||
|
|
||||||
(defun dired-async--skip-async-p (file-creator file name-constructor &optional attrs)
|
|
||||||
"Return non-nil if we should skip async for FILE.
|
|
||||||
See `dired-create-files' for FILE-CREATOR and NAME-CONSTRUCTOR."
|
|
||||||
;; Skip async for small files.
|
|
||||||
(or (dired-async--small-file-p file attrs)
|
|
||||||
;; Also skip async for same device renames.
|
|
||||||
(and (eq file-creator 'dired-rename-file)
|
|
||||||
(let ((new (funcall name-constructor file)))
|
|
||||||
(dired-async--same-device-p file (file-name-directory new))))))
|
|
||||||
|
|
||||||
(defun dired-async--smart-create-files (old-func file-creator
|
|
||||||
operation fn-list name-constructor
|
|
||||||
&optional marker-char)
|
|
||||||
"Around advice for `dired-create-files'.
|
|
||||||
Uses async like `dired-async-create-files' but skips certain fast
|
|
||||||
cases if `dired-async-skip-fast' is non-nil."
|
|
||||||
(let ((total-size 0)
|
|
||||||
async-list quick-list)
|
|
||||||
(if (or (eq file-creator 'backup-file)
|
|
||||||
(null dired-async-skip-fast))
|
|
||||||
(setq async-list fn-list)
|
|
||||||
(dolist (old fn-list)
|
|
||||||
(let ((attrs (file-attributes old)))
|
|
||||||
(if (dired-async--skip-async-p
|
|
||||||
file-creator old name-constructor attrs)
|
|
||||||
(progn
|
|
||||||
(push old quick-list)
|
|
||||||
(setq total-size (+ total-size (nth 7 attrs))))
|
|
||||||
(push old async-list))))
|
|
||||||
(when (> total-size dired-async-small-file-max)
|
|
||||||
(setq async-list (append quick-list async-list)
|
|
||||||
quick-list nil)))
|
|
||||||
(when async-list
|
|
||||||
(dired-async-create-files
|
|
||||||
file-creator operation (nreverse async-list)
|
|
||||||
name-constructor marker-char))
|
|
||||||
(when quick-list
|
|
||||||
(funcall old-func file-creator operation
|
|
||||||
(nreverse quick-list) name-constructor marker-char))))
|
|
||||||
|
|
||||||
(defun dired-async--abort-if-file-too-large (size op-type filename)
|
|
||||||
"Warn when FILENAME larger than `dired-async-large-file-warning-threshold'.
|
|
||||||
Same as `abort-if-file-too-large' but without user-error."
|
|
||||||
(when (and dired-async-large-file-warning-threshold size
|
|
||||||
(> size dired-async-large-file-warning-threshold))
|
|
||||||
(files--ask-user-about-large-file
|
|
||||||
size op-type filename nil)))
|
|
||||||
|
|
||||||
(defvar overwrite-query)
|
|
||||||
(defun dired-async-create-files (file-creator operation fn-list name-constructor
|
|
||||||
&optional _marker-char)
|
|
||||||
"Same as `dired-create-files' but asynchronous.
|
|
||||||
|
|
||||||
See `dired-create-files' for the behavior of arguments."
|
|
||||||
(setq overwrite-query nil)
|
|
||||||
(let ((total (length fn-list))
|
|
||||||
failures async-fn-list skipped callback
|
|
||||||
async-quiet-switch create-dir)
|
|
||||||
(let (to)
|
|
||||||
(dolist (from fn-list)
|
|
||||||
(setq to (funcall name-constructor from))
|
|
||||||
(if (and (equal to from)
|
|
||||||
(null (eq file-creator 'backup-file)))
|
|
||||||
(progn
|
|
||||||
(setq to nil)
|
|
||||||
(dired-log "Cannot %s to same file: %s\n"
|
|
||||||
(downcase operation) from)))
|
|
||||||
(if (not to)
|
|
||||||
(setq skipped (cons (dired-make-relative from) skipped))
|
|
||||||
(let* ((overwrite (and (null (eq file-creator 'backup-file))
|
|
||||||
(file-exists-p to)))
|
|
||||||
(dired-overwrite-confirmed ; for dired-handle-overwrite
|
|
||||||
(and overwrite
|
|
||||||
(let ((help-form `(format "\
|
|
||||||
Type SPC or `y' to overwrite file `%s',
|
|
||||||
DEL or `n' to skip to next,
|
|
||||||
ESC or `q' to not overwrite any of the remaining files,
|
|
||||||
`!' to overwrite all remaining files with no more questions." ,to)))
|
|
||||||
(dired-query 'overwrite-query "Overwrite `%s'?" to)))))
|
|
||||||
;; Handle the `dired-copy-file' file-creator specially
|
|
||||||
;; When copying a directory to another directory or
|
|
||||||
;; possibly to itself or one of its subdirectories.
|
|
||||||
;; e.g "~/foo/" => "~/test/"
|
|
||||||
;; or "~/foo/" =>"~/foo/"
|
|
||||||
;; or "~/foo/ => ~/foo/bar/")
|
|
||||||
;; In this case the 'name-constructor' have set the destination
|
|
||||||
;; TO to "~/test/foo" because the old emacs23 behavior
|
|
||||||
;; of `copy-directory' was to not create the subdirectory
|
|
||||||
;; and instead copy the contents.
|
|
||||||
;; With the new behavior of `copy-directory'
|
|
||||||
;; (similar to the `cp' shell command) we don't
|
|
||||||
;; need such a construction of the target directory,
|
|
||||||
;; so modify the destination TO to "~/test/" instead of "~/test/foo/".
|
|
||||||
(let ((destname (file-name-directory to)))
|
|
||||||
(when (and (funcall dired-async-file-directory-p-fn from)
|
|
||||||
(file-directory-p to)
|
|
||||||
(eq file-creator 'dired-copy-file))
|
|
||||||
(setq to destname))
|
|
||||||
;; If DESTNAME is a subdirectory of FROM, not a symlink,
|
|
||||||
;; and the method in use is copying, signal an error.
|
|
||||||
(and (eq t (car (file-attributes destname)))
|
|
||||||
(eq file-creator 'dired-copy-file)
|
|
||||||
(file-in-directory-p destname from)
|
|
||||||
(error "Cannot copy `%s' into its subdirectory `%s'"
|
|
||||||
from to)))
|
|
||||||
;; Skip file if it is too large.
|
|
||||||
(if (and (member operation '("Copy" "Rename"))
|
|
||||||
dired-async-large-file-warning-threshold
|
|
||||||
(eq (dired-async--abort-if-file-too-large
|
|
||||||
(file-attribute-size
|
|
||||||
(file-attributes (file-truename from)))
|
|
||||||
(downcase operation) from)
|
|
||||||
'abort))
|
|
||||||
(push from skipped)
|
|
||||||
(if overwrite
|
|
||||||
(or (and dired-overwrite-confirmed
|
|
||||||
(push (cons from to) async-fn-list))
|
|
||||||
(progn
|
|
||||||
(push (dired-make-relative from) failures)
|
|
||||||
(dired-log "%s `%s' to `%s' failed\n"
|
|
||||||
operation from to)))
|
|
||||||
(push (cons from to) async-fn-list))))))
|
|
||||||
;; Fix tramp issue #80 with emacs-26, use "-q" only when needed.
|
|
||||||
(setq async-quiet-switch
|
|
||||||
(if (and (boundp 'tramp-cache-read-persistent-data)
|
|
||||||
async-fn-list
|
|
||||||
(cl-loop for (_from . to) in async-fn-list
|
|
||||||
thereis (file-remote-p to)))
|
|
||||||
"-q" "-Q"))
|
|
||||||
;; When failures have been printed to dired log add the date at bob.
|
|
||||||
(when (or failures skipped) (dired-log t))
|
|
||||||
;; When async-fn-list is empty that's mean only one file
|
|
||||||
;; had to be copied and user finally answer NO.
|
|
||||||
;; In this case async process will never start and callback
|
|
||||||
;; will have no chance to run, so notify failures here.
|
|
||||||
(unless async-fn-list
|
|
||||||
(cond (failures
|
|
||||||
(funcall dired-async-message-function
|
|
||||||
"%s failed for %d of %d file%s -- See *Dired log* buffer"
|
|
||||||
'dired-async-failures
|
|
||||||
operation (length failures)
|
|
||||||
total (dired-plural-s total)))
|
|
||||||
(skipped
|
|
||||||
(funcall dired-async-message-function
|
|
||||||
"%s: %d of %d file%s skipped -- See *Dired log* buffer"
|
|
||||||
'dired-async-failures
|
|
||||||
operation (length skipped) total
|
|
||||||
(dired-plural-s total)))))
|
|
||||||
;; Setup callback.
|
|
||||||
(setq callback
|
|
||||||
(lambda (&optional _ignore)
|
|
||||||
(dired-async-after-file-create
|
|
||||||
total (list operation (length async-fn-list)) failures skipped)
|
|
||||||
(when (string= (downcase operation) "rename")
|
|
||||||
(cl-loop for (file . to) in async-fn-list
|
|
||||||
for bf = (get-file-buffer file)
|
|
||||||
for destp = (file-exists-p to)
|
|
||||||
do (and bf destp
|
|
||||||
(with-current-buffer bf
|
|
||||||
(set-visited-file-name to t t)))))))
|
|
||||||
(let ((dirp (file-directory-p to))
|
|
||||||
(dest (file-name-directory to)))
|
|
||||||
(when (boundp 'dired-create-destination-dirs)
|
|
||||||
(setq create-dir
|
|
||||||
(cl-case dired-create-destination-dirs
|
|
||||||
(always 'always)
|
|
||||||
(ask (and (null dirp)
|
|
||||||
(null (file-directory-p dest))
|
|
||||||
(y-or-n-p (format "Create directory `%s'? " dest)))
|
|
||||||
'always))))))
|
|
||||||
;; Start async process.
|
|
||||||
(when async-fn-list
|
|
||||||
(process-put
|
|
||||||
(async-start `(lambda ()
|
|
||||||
(require 'cl-lib) (require 'dired-aux) (require 'dired-x)
|
|
||||||
,(async-inject-variables dired-async-env-variables-regexp)
|
|
||||||
(advice-add #'files--ask-user-about-large-file
|
|
||||||
:override (lambda (&rest args) nil))
|
|
||||||
(let ((dired-recursive-copies (quote always))
|
|
||||||
(dired-copy-preserve-time
|
|
||||||
,dired-copy-preserve-time)
|
|
||||||
(dired-create-destination-dirs ',create-dir)
|
|
||||||
(dired-vc-rename-file ,dired-vc-rename-file)
|
|
||||||
auth-source-save-behavior)
|
|
||||||
(setq overwrite-backup-query nil)
|
|
||||||
;; Inline `backup-file' as long as it is not
|
|
||||||
;; available in emacs.
|
|
||||||
(defalias 'backup-file
|
|
||||||
;; Same feature as "cp -f --backup=numbered from to"
|
|
||||||
;; Symlinks are copied as file from source unlike
|
|
||||||
;; `dired-copy-file' which is same as cp -d.
|
|
||||||
;; Directories are omitted.
|
|
||||||
(lambda (from to ok)
|
|
||||||
(cond ((file-directory-p from) (ignore))
|
|
||||||
(t (let ((count 0))
|
|
||||||
(while (let ((attrs (file-attributes to)))
|
|
||||||
(and attrs (null (nth 0 attrs))))
|
|
||||||
(cl-incf count)
|
|
||||||
(setq to (concat (file-name-sans-versions to)
|
|
||||||
(format ".~%s~" count)))))
|
|
||||||
(condition-case err
|
|
||||||
(copy-file from to ok dired-copy-preserve-time)
|
|
||||||
(file-date-error
|
|
||||||
(dired-log "Can't set date on %s:\n%s\n" from err)))))))
|
|
||||||
;; Now run the FILE-CREATOR function on files.
|
|
||||||
(cl-loop with fn = (quote ,file-creator)
|
|
||||||
for (from . dest) in (quote ,async-fn-list)
|
|
||||||
do (condition-case err
|
|
||||||
(funcall fn from dest t)
|
|
||||||
(file-error
|
|
||||||
(dired-log "%s: %s\n" (car err) (cdr err))
|
|
||||||
nil)))
|
|
||||||
(when (get-buffer dired-log-buffer)
|
|
||||||
(dired-log t)
|
|
||||||
(with-current-buffer dired-log-buffer
|
|
||||||
(write-region (point-min) (point-max)
|
|
||||||
,dired-async-log-file))))
|
|
||||||
,(dired-async-maybe-kill-ftp))
|
|
||||||
callback)
|
|
||||||
'dired-async-process t)
|
|
||||||
;; Run mode-line notifications while process running.
|
|
||||||
(dired-async--modeline-mode 1)
|
|
||||||
(message "%s proceeding asynchronously..." operation))))
|
|
||||||
|
|
||||||
(defvar wdired-use-interactive-rename)
|
|
||||||
(defun dired-async-wdired-do-renames (old-fn &rest args)
|
|
||||||
;; Perhaps a better fix would be to ask for renaming BEFORE starting
|
|
||||||
;; OLD-FN when `wdired-use-interactive-rename' is non-nil. For now
|
|
||||||
;; just bind it to nil to ensure no questions will be asked between
|
|
||||||
;; each rename.
|
|
||||||
(let (wdired-use-interactive-rename)
|
|
||||||
(apply old-fn args)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(define-minor-mode dired-async-mode
|
|
||||||
"Do dired actions asynchronously."
|
|
||||||
:lighter dired-async-mode-lighter
|
|
||||||
:global t
|
|
||||||
(if dired-async-mode
|
|
||||||
(progn
|
|
||||||
(advice-add 'dired-create-files :around #'dired-async--smart-create-files)
|
|
||||||
(advice-add 'wdired-do-renames :around #'dired-async-wdired-do-renames))
|
|
||||||
(progn
|
|
||||||
(advice-remove 'dired-create-files #'dired-async--smart-create-files)
|
|
||||||
(advice-remove 'wdired-do-renames #'dired-async-wdired-do-renames))))
|
|
||||||
|
|
||||||
(defmacro dired-async--with-async-create-files (&rest body)
|
|
||||||
"Evaluate BODY with ‘dired-create-files’ set to ‘dired-async-create-files’."
|
|
||||||
(declare (indent 0))
|
|
||||||
`(cl-letf (((symbol-function 'dired-create-files) #'dired-async-create-files))
|
|
||||||
,@body))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun dired-async-do-copy (&optional arg)
|
|
||||||
"Run ‘dired-do-copy’ asynchronously."
|
|
||||||
(interactive "P")
|
|
||||||
(dired-async--with-async-create-files
|
|
||||||
(dired-do-copy arg)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun dired-async-do-symlink (&optional arg)
|
|
||||||
"Run ‘dired-do-symlink’ asynchronously."
|
|
||||||
(interactive "P")
|
|
||||||
(dired-async--with-async-create-files
|
|
||||||
(dired-do-symlink arg)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun dired-async-do-hardlink (&optional arg)
|
|
||||||
"Run ‘dired-do-hardlink’ asynchronously."
|
|
||||||
(interactive "P")
|
|
||||||
(dired-async--with-async-create-files
|
|
||||||
(dired-do-hardlink arg)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun dired-async-do-rename (&optional arg)
|
|
||||||
"Run ‘dired-do-rename’ asynchronously."
|
|
||||||
(interactive "P")
|
|
||||||
(dired-async--with-async-create-files
|
|
||||||
(dired-do-rename arg)))
|
|
||||||
|
|
||||||
(provide 'dired-async)
|
|
||||||
|
|
||||||
;;; dired-async.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1,71 +0,0 @@
|
||||||
;;; smtpmail-async.el --- Send e-mail with smtpmail.el asynchronously -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Author: John Wiegley <jwiegley@gmail.com>
|
|
||||||
;; Created: 18 Jun 2012
|
|
||||||
|
|
||||||
;; Keywords: email async
|
|
||||||
;; X-URL: https://github.com/jwiegley/emacs-async
|
|
||||||
|
|
||||||
;; 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Send e-mail with smtpmail.el asynchronously. To use:
|
|
||||||
;;
|
|
||||||
;; (require 'smtpmail-async)
|
|
||||||
;;
|
|
||||||
;; (setq send-mail-function 'async-smtpmail-send-it
|
|
||||||
;; message-send-mail-function 'async-smtpmail-send-it)
|
|
||||||
;;
|
|
||||||
;; This assumes you already have smtpmail.el working.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(defgroup smtpmail-async nil
|
|
||||||
"Send e-mail with smtpmail.el asynchronously"
|
|
||||||
:group 'smptmail)
|
|
||||||
|
|
||||||
(require 'async)
|
|
||||||
(require 'smtpmail)
|
|
||||||
(require 'message)
|
|
||||||
|
|
||||||
(defvar async-smtpmail-before-send-hook nil
|
|
||||||
"Hook running in the child emacs in `async-smtpmail-send-it'.
|
|
||||||
It is called just before calling `smtpmail-send-it'.")
|
|
||||||
|
|
||||||
(defun async-smtpmail-send-it ()
|
|
||||||
(let ((to (message-field-value "To"))
|
|
||||||
(buf-content (buffer-substring-no-properties
|
|
||||||
(point-min) (point-max))))
|
|
||||||
(message "Delivering message to %s..." to)
|
|
||||||
(async-start
|
|
||||||
`(lambda ()
|
|
||||||
(require 'smtpmail)
|
|
||||||
(with-temp-buffer
|
|
||||||
(insert ,buf-content)
|
|
||||||
(set-buffer-multibyte nil)
|
|
||||||
;; Pass in the variable environment for smtpmail
|
|
||||||
,(async-inject-variables
|
|
||||||
"\\`\\(smtpmail\\|async-smtpmail\\|\\(user-\\)?mail\\)-\\|auth-sources\\|epg\\|nsm"
|
|
||||||
nil "\\`\\(mail-header-format-function\\|smtpmail-address-buffer\\|mail-mode-abbrev-table\\)")
|
|
||||||
(run-hooks 'async-smtpmail-before-send-hook)
|
|
||||||
(smtpmail-send-it)))
|
|
||||||
(lambda (&optional _ignore)
|
|
||||||
(message "Delivering message to %s...done" to)))))
|
|
||||||
|
|
||||||
(provide 'smtpmail-async)
|
|
||||||
|
|
||||||
;;; smtpmail-async.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
Good signature from 645357D2883A0966 GNU ELPA Signing Agent (2023) <elpasign@elpa.gnu.org> (trust undefined) created at 2026-01-14T22:05:01+0000 using EDDSA
|
|
||||||
|
|
@ -1,674 +0,0 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
||||||
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.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
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
|
|
||||||
<https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
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
|
|
||||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,200 +0,0 @@
|
||||||
# Rules to generate the files that need to go into the ELPA package.
|
|
||||||
|
|
||||||
# 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 of the License, 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# Files we need to auto-generate for elpa:
|
|
||||||
# README
|
|
||||||
# ChangeLog
|
|
||||||
# doc: preview-dtxdoc.texi
|
|
||||||
# doc: version.texi
|
|
||||||
# doc: tex-ref.pdf
|
|
||||||
# latex: prauctex.cfg
|
|
||||||
# latex: prauctex.def
|
|
||||||
# latex: prcounters.def
|
|
||||||
# latex: preview.sty
|
|
||||||
# latex: prfootnotes.def
|
|
||||||
# latex: prlyx.def
|
|
||||||
# latex: prshowbox.def
|
|
||||||
# latex: prshowlabels.def
|
|
||||||
# latex: prtightpage.def
|
|
||||||
# latex: prtracingall.def
|
|
||||||
|
|
||||||
EMACSBIN=emacs
|
|
||||||
EMACS=$(EMACSBIN) --batch -q -no-site-file -no-init-file -l lpath.el
|
|
||||||
MAKEINFO=makeinfo
|
|
||||||
INSTALL_INFO=install-info
|
|
||||||
PERL=perl
|
|
||||||
PDFLATEX=pdfla$(TEX)
|
|
||||||
PDFTEX=pdf$(TEX)
|
|
||||||
|
|
||||||
MANUALS=auctex preview-latex
|
|
||||||
INFO_FILES:=$(addprefix doc/, $(MANUALS:=.info))
|
|
||||||
|
|
||||||
TEXMFGEN:=$(shell sed -n 's/^%<installer>.*file[{]\([^}.]*\.[sdc][tef][yfg]\)[}].*/\1/p' latex/preview.dtx)
|
|
||||||
LATEX_FILES:=$(patsubst %, latex/%, $(shell echo $$(echo "$(TEXMFGEN)")))
|
|
||||||
|
|
||||||
MAIN_GENERATED_FILES=README \
|
|
||||||
doc/version.texi \
|
|
||||||
doc/preview-dtxdoc.texi \
|
|
||||||
doc/tex-ref.pdf \
|
|
||||||
$(LATEX_FILES)
|
|
||||||
|
|
||||||
ALL_GENERATED_FILES=$(MAIN_GENERATED_FILES) \
|
|
||||||
doc/dir \
|
|
||||||
$(INFO_FILES)
|
|
||||||
|
|
||||||
# Generate & compile everything including the manuals below doc/.
|
|
||||||
all: $(ALL_GENERATED_FILES) compile auctex-autoloads.el
|
|
||||||
|
|
||||||
compile: $(patsubst %.el,%.elc,$(wildcard *.el style/*.el))
|
|
||||||
|
|
||||||
# If we were depending on emacs 29.1, we could simply use
|
|
||||||
# loaddefs-generate...
|
|
||||||
AUTOLOAD=--eval '\
|
|
||||||
(let* ((autoload-file (expand-file-name "$@")) \
|
|
||||||
(autoload-file-dir (file-name-directory autoload-file)) \
|
|
||||||
(addition-code "(add-to-list (quote load-path)\n\
|
|
||||||
(directory-file-name\n\
|
|
||||||
(file-name-directory load-file-name)))")) \
|
|
||||||
(if (fboundp (quote loaddefs-generate)) \
|
|
||||||
(loaddefs-generate autoload-file-dir autoload-file \
|
|
||||||
(list "tex-wizard.el" "auctex.el" "lpath.el") \
|
|
||||||
addition-code) \
|
|
||||||
(setq generated-autoload-file autoload-file) \
|
|
||||||
(update-directory-autoloads autoload-file-dir) \
|
|
||||||
(with-temp-file autoload-file \
|
|
||||||
(insert-file-contents autoload-file) \
|
|
||||||
(cond ((progn (goto-char (point-min)) \
|
|
||||||
(re-search-forward "^;;; Code:" nil t)) \
|
|
||||||
(newline 2)) \
|
|
||||||
((progn (goto-char (point-min)) \
|
|
||||||
(re-search-forward "^$$")) \
|
|
||||||
(open-line 2)) \
|
|
||||||
(t (goto-char (point-max)))) \
|
|
||||||
(insert addition-code))) \
|
|
||||||
(save-buffers-kill-emacs t))'
|
|
||||||
|
|
||||||
auctex-autoloads.el:
|
|
||||||
rm -f $@
|
|
||||||
$(EMACS) $(AUTOLOAD)
|
|
||||||
|
|
||||||
%.elc: %.el
|
|
||||||
$(EMACS) -f batch-byte-compile $<
|
|
||||||
|
|
||||||
# Generate everything but don't compile or build the docs. The docs
|
|
||||||
# will be built on elpa due to :doc ("doc/auctex.texi"
|
|
||||||
# "doc/preview-latex.texi") in the auctex recipe in elpa-packges and
|
|
||||||
# compiling is done locally.
|
|
||||||
elpa: $(MAIN_GENERATED_FILES) ChangeLog
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(ALL_GENERATED_FILES) \
|
|
||||||
$(wildcard *.elc style/*.elc) \
|
|
||||||
$(wildcard latex/*.aux latex/*.drv latex/*.hd latex/*.log) \
|
|
||||||
$(wildcard latex/*.out latex/*.pdf latex/*.tar.gz) \
|
|
||||||
$(wildcard doc/*.cp doc/*.cps doc/*.fn doc/*.fns) \
|
|
||||||
$(wildcard doc/*.ky doc/*.kys doc/*.vr doc/*.vrs) \
|
|
||||||
$(wildcard doc/*.aux doc/*.log doc/*.toc) \
|
|
||||||
$(wildcard doc/*.pdf doc/*.synctex.gz) \
|
|
||||||
latex/preview-mk.ins latex/preview.ins \
|
|
||||||
auctex-autoloads.el \
|
|
||||||
$(DYNVARSFILES)
|
|
||||||
|
|
||||||
# Copied&adapted from doc/Makefile.in. The 'echo ""' part fixes the
|
|
||||||
# spacing above the insertion from preview-readme.texi.
|
|
||||||
MAKEINFO_PLAIN=$(MAKEINFO) -D rawfile --no-headers
|
|
||||||
README: doc/intro.texi doc/preview-readme.texi doc/macros.texi
|
|
||||||
(cd doc; $(MAKEINFO_PLAIN) intro.texi --output -) >$@
|
|
||||||
(cd doc; echo "") >>$@
|
|
||||||
(cd doc; $(MAKEINFO_PLAIN) preview-readme.texi --output -) >>$@
|
|
||||||
|
|
||||||
# Committer date of HEAD.
|
|
||||||
AUCTEXDATE:=$(shell (git log -n1 --pretty=tformat:"%ci" 2>/dev/null \
|
|
||||||
|| date +"%Y-%m-%d %T") \
|
|
||||||
| sed -re 's/ /_/' -e 's/ .*//')
|
|
||||||
# Extract the version number from the diff line "+;; Version: 14.0.4" of
|
|
||||||
# the commit HEAD which is only filled when we did a release in the last
|
|
||||||
# commit.
|
|
||||||
THISVERSION:=$(shell git show HEAD -- auctex.el 2>/dev/null \
|
|
||||||
| sed -nre 's/[+];; Version: ([0-9]+.[0-9]+.[0-9]+)/\1/p')
|
|
||||||
# Extract the last released version number from `auctex.el`.
|
|
||||||
LASTVERSION:=$(shell grep "^;; Version:" auctex.el \
|
|
||||||
| sed -nre 's/;; Version: ([0-9]+.[0-9]+.[0-9]+)/\1/p;q')
|
|
||||||
AUCTEXVERSION:=$(if $(THISVERSION),$(THISVERSION),$(LASTVERSION).$(AUCTEXDATE))
|
|
||||||
|
|
||||||
doc/version.texi:
|
|
||||||
echo @set VERSION $(AUCTEXVERSION) >$@
|
|
||||||
echo @set UPDATED $(AUCTEXDATE) >>$@
|
|
||||||
|
|
||||||
ChangeLog:
|
|
||||||
rm -f $@
|
|
||||||
./build-aux/gitlog-to-auctexlog && cat ChangeLog.1 >> $@
|
|
||||||
|
|
||||||
# Copied&adapted from doc/Makefile.in.
|
|
||||||
doc/preview-dtxdoc.texi: latex/preview.dtx doc/preview-dtxdoc.pl
|
|
||||||
$(PERL) doc/preview-dtxdoc.pl latex/preview.dtx $@
|
|
||||||
|
|
||||||
# Copied&adapted from doc/Makefile.in.
|
|
||||||
doc/tex-ref.pdf: doc/tex-ref.tex
|
|
||||||
cd doc && $(PDFTEX) tex-ref.tex && rm tex-ref.log
|
|
||||||
|
|
||||||
# Copied&adapted from doc/Makefile.in.
|
|
||||||
TEXI_SOURCES:=$(wildcard doc/*.texi) doc/version.texi doc/preview-dtxdoc.texi
|
|
||||||
$(INFO_FILES): doc/%.info: $(TEXI_SOURCES)
|
|
||||||
cd doc; $(MAKEINFO) --no-split $*.texi
|
|
||||||
|
|
||||||
doc/dir: $(INFO_FILES)
|
|
||||||
for f in $(INFO_FILES); do $(INSTALL_INFO) --info-dir=doc $$f; done
|
|
||||||
|
|
||||||
$(LATEX_FILES): latex/preview.dtx latex/bootstrap.ins
|
|
||||||
cd latex; $(TEX) '\nonstopmode \input bootstrap.ins'
|
|
||||||
cd latex; $(TEX) '\nonstopmode \input preview-mk.ins'
|
|
||||||
|
|
||||||
# The next rules are copied&adapted from Makefile.in and
|
|
||||||
# latex/Makefile.in. `preview-ctan' is the rule needed for creating a
|
|
||||||
# tarball for CTAN upload.
|
|
||||||
preview.ins: latex/preview.dtx
|
|
||||||
cd latex && rm -f $@ && \
|
|
||||||
$(TEX) '\nonstopmode\def\jobname{.ins}\input docstrip ' \
|
|
||||||
'\generate{\file{preview.ins}{\from{preview.dtx}{installer}}}' \
|
|
||||||
'\endbatchfile'
|
|
||||||
|
|
||||||
preview.pdf: latex/preview.dtx latex/preview.sty
|
|
||||||
cd latex && \
|
|
||||||
$(PDFLATEX) '\nonstopmode \input{preview.drv}' && \
|
|
||||||
$(PDFLATEX) '\nonstopmode \input{preview.drv}' && \
|
|
||||||
$(PDFLATEX) '\nonstopmode \input{preview.drv}'
|
|
||||||
|
|
||||||
preview-ctan: $(LATEX_FILES) preview.ins preview.pdf
|
|
||||||
cd latex && \
|
|
||||||
mkdir -p preview && \
|
|
||||||
cp README preview.dtx preview.ins preview.pdf preview/ && \
|
|
||||||
tar -cz --owner=root --group=root -f preview.tar.gz preview/ && \
|
|
||||||
rm -rf preview/
|
|
||||||
|
|
||||||
# Cross-file variable checking with lexical binding
|
|
||||||
# https://www.gnu.org/software/emacs/manual/html_node/elisp/Converting-to-Lexical-Binding.html
|
|
||||||
DYNVARSFILES = *.dynvars style/*.dynvars auctex-dynvars
|
|
||||||
dynvars-check:
|
|
||||||
rm -f $(wildcard *.elc) $(wildcard style/*.elc) $(DYNVARSFILES)
|
|
||||||
EMACS_GENERATE_DYNVARS=1 $(EMACS) -f batch-byte-compile \
|
|
||||||
$(wildcard *.el) $(wildcard style/*.el) \
|
|
||||||
> /dev/null 2>&1
|
|
||||||
cat *.dynvars style/*.dynvars > auctex-dynvars
|
|
||||||
rm -f $(wildcard *.elc) $(wildcard style/*.elc)
|
|
||||||
EMACS_DYNVARS_FILE=auctex-dynvars $(EMACS) \
|
|
||||||
-f batch-byte-compile \
|
|
||||||
$(wildcard *.el) $(wildcard style/*.el)
|
|
||||||
|
|
@ -1,411 +0,0 @@
|
||||||
#+TITLE: AUCTeX NEWS -- History of notable and user-visible changes
|
|
||||||
#+AUTHOR: AUCTeX Maintenance Team
|
|
||||||
#+LANGUAGE: en
|
|
||||||
#+OPTIONS: num:nil toc:nil
|
|
||||||
#+LINK: ELPA https://elpa.gnu.org/packages/%s
|
|
||||||
# Copyright (C) 2024-2025 Free Software Foundation, Inc.
|
|
||||||
# License: GNU General Public License 3
|
|
||||||
# The format is based on [[https://keepachangelog.com/en/1.1.0/][Keep a Changelog]]
|
|
||||||
|
|
||||||
* [14.1.2] - 2026-01-14
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Recognize and ignore non-error messages emitted by LuaTeX which are
|
|
||||||
different from what pdfTeX does.
|
|
||||||
|
|
||||||
* [14.1.1] - 2026-01-12
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Add new command ~LaTeX-repeat-recent-math~ which looks backward for a
|
|
||||||
recent top-level display math construct and inserts a copy to the
|
|
||||||
current line.
|
|
||||||
|
|
||||||
- Add new support files =style/floatflt.el=, =style/fontawesome7.el= and
|
|
||||||
=style/ltx-talk.el=.
|
|
||||||
|
|
||||||
- Add new function ~preview-dvisvgm-command~ to generate SVG images in
|
|
||||||
preview.
|
|
||||||
|
|
||||||
** Changed
|
|
||||||
|
|
||||||
- Change the format of the value stored in ~preview-dumped-alist~. Add
|
|
||||||
a new optional argument to the function ~preview-watch-preamble~.
|
|
||||||
|
|
||||||
- Respect the value of ~font-latex-fontify-sectioning~ when fontifying
|
|
||||||
macros as =slide-title=. This affects macros provided by
|
|
||||||
=style/beamer.el= and =style/ltx-talk.el=.
|
|
||||||
|
|
||||||
- Change the name of ~preview-dvipng-command~ to ~preview-dvi*-command~.
|
|
||||||
Also make it accept a function symbol returning the full command.
|
|
||||||
|
|
||||||
- Change the name of ~preview-dvipng-image-type~ to
|
|
||||||
~preview-dvi*-image-type~.
|
|
||||||
|
|
||||||
- Change the setting of ~preview-image-creators~ and
|
|
||||||
~preview-gs-image-type-alist~ to use ~dvi*~ instead of ~dvipng~.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Ignore the (non-error) "ignored error" messages emitted by the
|
|
||||||
typesetting engine and don't abort the re-compilation when necessary.
|
|
||||||
It fixes this [[https://github.com/latex3/latex2e/issues/1907][LaTeX report]].
|
|
||||||
|
|
||||||
* [14.1.0] - 2025-07-11
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Add new commands ~LaTeX-make-inline~ which converts the display math
|
|
||||||
environment at point to inline math and the more general
|
|
||||||
~LaTeX-modify-math~ which converts the mathematical construct at point
|
|
||||||
into one with different kind of delimiter or another environment.
|
|
||||||
- Add new support files =style/embedfile.el=, =style/figureversions.el=,
|
|
||||||
=style/needspace.el=, =style/tablericons.el= and =style/wrapstuff.el=.
|
|
||||||
|
|
||||||
** Changed
|
|
||||||
|
|
||||||
- AUCTeX now requires GNU Emacs 28.1 or higher.
|
|
||||||
- Replace =$..$= with =\[..\]= in LaTeX mode and any derived mode when
|
|
||||||
hitting =$= repeatedly where ~TeX-electric-math~ is non-~nil~.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Fix unwanted expansion of abbrevs during filling when ~abbrev-mode~ is
|
|
||||||
enabled.
|
|
||||||
- Fix the command-line options passed to latexmk when processing files
|
|
||||||
with xetex in order to run the viewer correctly.
|
|
||||||
- Fix removing of stale verbatim entries in auto-parsed file once the
|
|
||||||
corresponding package isn't used in the .tex file anymore. Complete
|
|
||||||
removal may require two invocations of =C-u C-c C-n=.
|
|
||||||
|
|
||||||
* [14.0.9] - 2025-02-25
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Add new support files =style/csthm.el=, =style/elsarticle.el=,
|
|
||||||
=style/enumerate.el=, =style/keytheorems.el= and
|
|
||||||
=style/marginalia.el=.
|
|
||||||
|
|
||||||
* [14.0.8] - 2024-12-11
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Improve support for folding of citations macros. The current folding
|
|
||||||
=[c]= is changed to a more descriptive version, using author names and
|
|
||||||
publication years, like =[Ne21]= or =[ABC99]=. These are extracted
|
|
||||||
from any bib files referenced in the document or specified by the user
|
|
||||||
option ~TeX-fold-bib-file~.
|
|
||||||
|
|
||||||
- Add support for folding of =\begin{env}= and =\end{env}= macros. The
|
|
||||||
replacement specifiers are controlled by the custom option
|
|
||||||
~TeX-fold-begin-end-spec-list~.
|
|
||||||
|
|
||||||
- Add new custom option ~TeX-fold-alert-color~ which determines the
|
|
||||||
color used when folding the ~\alert~ macro, defaults to ~red~.
|
|
||||||
|
|
||||||
- Add new support files =style/glossaries-extra.el=,
|
|
||||||
=style/glossaries.el=, =style/inlinegraphicx.el=, =style/minted2.el=
|
|
||||||
(=style/minted.el= is updated to package v3.1.2) and
|
|
||||||
=style/stocksize.el=.
|
|
||||||
|
|
||||||
- Add preliminary support for parsing =\graphicspath= in
|
|
||||||
=style/graphicx.el=.
|
|
||||||
|
|
||||||
** Changed
|
|
||||||
|
|
||||||
- Change the default value of ~LaTeX-insert-into-comments~ from ~t~ to
|
|
||||||
~nil~.
|
|
||||||
|
|
||||||
* [14.0.7] - 2024-10-05
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Respect the value of ~TeX-output-dir~ when processing files with
|
|
||||||
latexmk. This means that the default value of ~TeX-command-list~ is
|
|
||||||
changed.
|
|
||||||
|
|
||||||
- Add new support files =style/authblk.el=, =style/langscibook.cls=,
|
|
||||||
=style/lstautogobble.el=, =style/lstlinebgrd.el=,
|
|
||||||
=style/ninecolors.el=, =style/supertabular.el=, =style/tabularray.el=
|
|
||||||
and =style/xtab.el=.
|
|
||||||
|
|
||||||
** Changed
|
|
||||||
|
|
||||||
- AUCTeX 13.3 marks the last standalone tarball release. From now on,
|
|
||||||
AUCTeX releases are made available through the
|
|
||||||
[[ELPA:auctex.html][Emacs Lisp Package Archive (ELPA)]]. Distro
|
|
||||||
packagers are encouraged to use the [[ELPA:auctex.html][ELPA]]
|
|
||||||
packages as-is and install them under one of the new Emacs locations
|
|
||||||
for system-wide packages, see ~package-directory-list~.
|
|
||||||
|
|
||||||
At the same time, development is now done on the =main= branch and the
|
|
||||||
=master= branch has been deleted. Its last state has been pushed as
|
|
||||||
=auctex-13= branch for archiving purposes but it won't get any updates
|
|
||||||
anymore.
|
|
||||||
|
|
||||||
For users who tracked the master branch: Do =git switch main= to
|
|
||||||
switch to the main branch where development takes place nowadays.
|
|
||||||
|
|
||||||
- Move additions to the variable ~LaTeX-indent-environment-list~ for
|
|
||||||
various tabular environments to =latex.el= from the respective style
|
|
||||||
files.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Fold argument of verbatim macros more accurately.
|
|
||||||
|
|
||||||
** Removed
|
|
||||||
|
|
||||||
- Remove the possibility to disable the side-wide installation with:
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(unload-feature 'tex-site)
|
|
||||||
#+end_src
|
|
||||||
Using this form when installed from [[ELPA:auctex.html][ELPA]] will
|
|
||||||
throw an error.
|
|
||||||
|
|
||||||
* [14.0.6] - 2024-06-30
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Complete support for in-buffer completion of color support macros.
|
|
||||||
- Add new support files =style/contract.el=, =style/diagbox.el= and
|
|
||||||
=style/standalone.el=.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Add appropriate ~delete-selection~ properties for
|
|
||||||
~LaTeX-insert-left-brace~, ~TeX-insert-dollar~ and
|
|
||||||
~TeX-insert-backslash~ that differentiate between the "electric" and
|
|
||||||
"just-insert-the-symbol" behavior. That should simplify cooperation
|
|
||||||
with other electric modes.
|
|
||||||
|
|
||||||
As a result of this adjustment, the behavior of ~TeX-insert-dollar~
|
|
||||||
is affected in some ways:
|
|
||||||
- With raw prefix argument =C-u=, =$= (~TeX-insert-dollar~) now
|
|
||||||
inserts four dollars as opposed to one. This behavior is in-line
|
|
||||||
with other symbols, in particular ="= (~TeX-insert-quote~) and =\=
|
|
||||||
(~TeX-insert-backslash~). If you need one literal =$=, you can type
|
|
||||||
=C-1 $= or =C-q $=.
|
|
||||||
- We no longer have explicit support of the special behavior that if
|
|
||||||
~TeX-electric-math~ is non-~nil~ and point is inside math mode right
|
|
||||||
between a couple of single dollars, pressing =$= will insert another
|
|
||||||
pair of dollar signs and leave the point between them.
|
|
||||||
|
|
||||||
It still works as before if ~TeX-electric-math~ is pair of dollars
|
|
||||||
while it inserts =\(= and =\)= when ~TeX-electric-math~ is
|
|
||||||
=("\(" . "\)")=.
|
|
||||||
- When ~TeX-electric-math~ is a pair of dollars and the point is in
|
|
||||||
inline math (without active region), =$= inserts two dollars, not
|
|
||||||
one dollar which just closes the math mode.
|
|
||||||
- Recognize =.ltx= extension as regular LaTeX file.
|
|
||||||
|
|
||||||
** Removed
|
|
||||||
|
|
||||||
- Delete function ~LaTeX-env-contents~.
|
|
||||||
- Delete obsolete variables ~TeX-symbol-marker~,
|
|
||||||
~TeX-symbol-marker-pos~, ~TeX-dollar-sign~, ~TeX-dollar-string~ and
|
|
||||||
~TeX-dollar-regexp~.
|
|
||||||
- Delete obsolete minor-mode ~TeX-Omega-mode~.
|
|
||||||
|
|
||||||
* [14.0.5] - 2024-05-19
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Add support for indirect buffers cloned from buffers visiting a file.
|
|
||||||
In indirect buffer, preview-latex works correctly when the command
|
|
||||||
~preview-region~ is invoked. The command ~preview-document~ puts
|
|
||||||
preview images in the base buffer, not in the indirect buffer itself.
|
|
||||||
- Add preliminary support for processing files with latexmk. Support
|
|
||||||
for =dvipdfmx= and the choice for viewer after compilation are not
|
|
||||||
optimal, yet. Overall, the support comes close to what the
|
|
||||||
=auctex-latexmk= library provides.
|
|
||||||
- Add new command ~TeX-fold-section~ (bound to =C-c C-o C-s=) which
|
|
||||||
hides all configured macros in the section containing point when
|
|
||||||
~TeX-fold-mode~ is active. The unfold counterpart
|
|
||||||
~TeX-fold-clearout-section~ is bound to =C-c C-o s=.
|
|
||||||
- Add new custom option ~TeX-fold-region-functions~ which is a list of
|
|
||||||
additional functions to call when folding a region.
|
|
||||||
- Add new custom option ~TeX-fold-auto-reveal~ which controls how the
|
|
||||||
original source text is revealed when user clicks the folded portion
|
|
||||||
by mouse.
|
|
||||||
- Add new custom options ~TeX-fold-auto-reveal-commands~ and
|
|
||||||
~preview-auto-reveal-commands~ which are lists of commands revealing
|
|
||||||
folded or previewed buffer text.
|
|
||||||
- Add new custom option ~preview-protect-point~ which determines whether
|
|
||||||
previews generated on top of the current point should be temporarily
|
|
||||||
opened (~nil~ by default).
|
|
||||||
- Add new custom option ~preview-leave-open-previews-visible~ which
|
|
||||||
determines if the preview code stays visible once opened.
|
|
||||||
- Change the default value of ~TeX-one-master~ in order to recognize the
|
|
||||||
suffix =.ltx= as regular TeX files.
|
|
||||||
- Add new custom option ~ConTeXt-paragraph-commands~ containing a list
|
|
||||||
of macros which should begin their own line.
|
|
||||||
- Support query and insert of ~mcite~ compatibility macro
|
|
||||||
(=style/biblatex.el=).
|
|
||||||
- Support the =\verbatiminput*= macro (=style/verbatim.el=).
|
|
||||||
- Add new support file =style/amsrefs.el=.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Adjust options when processing files with ConTeXt: Remove obsolete
|
|
||||||
=--texutil=, use =--synctex=repeat= and omit =--nonstop= when
|
|
||||||
~TeX-source-correlate-mode~ is enabled.
|
|
||||||
|
|
||||||
* [14.0.4] - 2024-03-31
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- Support completion for many commands described in =clsguide.tex=,
|
|
||||||
=fntguide.tex= and =usrguide.tex=.
|
|
||||||
- Provide new custom option ~LaTeX-flymake-chktex-options~ to enable or
|
|
||||||
disable specific warnings of =chktex= backend used by Flymake.
|
|
||||||
- Provide new custom option ~TeX-kill-process-without-query~ which
|
|
||||||
controls if user is asked before aborting a running process for a TeX
|
|
||||||
document.
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Improve guessing names for headers used in Imenu.
|
|
||||||
|
|
||||||
** Removed
|
|
||||||
|
|
||||||
- Revert usage of ~:local~ tag inside ~defcustom~. This tag isn't
|
|
||||||
handled correctly in Emacs 27.1 and breaks AUCTeX.
|
|
||||||
|
|
||||||
* [14.0.3] - 2024-02-20
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Cater for former mode name in customized ~TeX-command-list~.
|
|
||||||
- Fix and enhance pseudo-parent mode facility.
|
|
||||||
|
|
||||||
* [14.0.2] - 2024-02-09
|
|
||||||
|
|
||||||
** Fixed
|
|
||||||
|
|
||||||
- Fix [[ELPA:auctex.html][ELPA]] releases.
|
|
||||||
|
|
||||||
* [14.0.1] - 2024-02-08
|
|
||||||
|
|
||||||
** Added
|
|
||||||
|
|
||||||
- AUCTeX changes major mode names. Its primary purpose is to avoid
|
|
||||||
conflicts with Emacs built-in TeX major modes. It also improves
|
|
||||||
consistency of the source code.
|
|
||||||
- The overview of the former names and new names are:
|
|
||||||
| Former name | New name |
|
|
||||||
|---------------------------+---------------------------|
|
|
||||||
| ~plain-tex-mode~ | ~plain-TeX-mode~ |
|
|
||||||
| ~latex-mode~ | ~LaTeX-mode~ |
|
|
||||||
| ~doctex-mode~ | ~docTeX-mode~ |
|
|
||||||
| ~texinfo-mode~ | ~Texinfo-mode~ |
|
|
||||||
| ~ams-tex-mode~ | ~AmSTeX-mode~ |
|
|
||||||
| ~japanese-plain-tex-mode~ | ~japanese-plain-TeX-mode~ |
|
|
||||||
| ~japanese-latex-mode~ | ~japanese-LaTeX-mode~ |
|
|
||||||
|
|
||||||
The undocumented modes ~context-en-mode~ and ~context-nl-mode~ were
|
|
||||||
deleted.
|
|
||||||
- We paid much attention to the compatibility and expect that almost
|
|
||||||
no particular treatment on the user side is needed. For example,
|
|
||||||
the names of the keymaps and mode hooks remain unchanged, and the
|
|
||||||
=mode:= tag in the file local variables in the existing files works
|
|
||||||
with old mode names. See below for more details
|
|
||||||
- If your Emacs is 29 or newer and you use =desktop.el= to save and
|
|
||||||
restore Emacs sessions, be careful before you update AUCTeX; You
|
|
||||||
should attempt to update only after
|
|
||||||
1. you kill all buffer under former AUCTeX modes which have
|
|
||||||
overlapped name with Emacs built-in TeX modes, and
|
|
||||||
2. you terminate the current Emacs session.
|
|
||||||
The modes with such overlapped name are ~plain-tex-mode~,
|
|
||||||
~latex-mode~, ~doctex-mode~ and ~texinfo-mode~. (The above
|
|
||||||
prescription ensures no buffer of such modes is recorded in the
|
|
||||||
desktop file. Otherwise those buffers would be restored in the
|
|
||||||
built-in modes, not AUCTeX modes, after the update of AUCTeX.)
|
|
||||||
- New mode names are chosen to match the existing variables, so most
|
|
||||||
user customizations as well as the third party libraries would
|
|
||||||
continue to work without modification. For example, names of
|
|
||||||
keymaps and hooks don't change as stated above.
|
|
||||||
(~AmS-TeX-mode-hook~ is renamed to ~AmSTeX-mode-hook~, but
|
|
||||||
compatibility alias is provided.)
|
|
||||||
- Now ~TeX-add-local-master~ adds entry of new mode names such as
|
|
||||||
#+begin_example
|
|
||||||
%%% Local Variables:
|
|
||||||
%%% mode: LaTeX <-- not `latex'
|
|
||||||
%%% End:
|
|
||||||
#+end_example
|
|
||||||
- The compatibility with the former mode names with respect to
|
|
||||||
invoking the major mode are retained.
|
|
||||||
1. Former modes which overlap with built-in modes, namely
|
|
||||||
~plain-tex-mode~, ~latex-mode~, ~doctex-mode~, ~texinfo-mode~ and
|
|
||||||
~tex-mode~ are handled by redirections; the same override advices
|
|
||||||
as before are continued to used for Emacs<29 while
|
|
||||||
~major-mode-remap-alist~ is used for Emacs 29 and later.
|
|
||||||
(Therefore, if there are user codes which call ~latex-mode~
|
|
||||||
directly, built-in ~latex-mode~ runs instead of AUCTeX
|
|
||||||
~LaTeX-mode~ in Emacs 29 and later.)
|
|
||||||
|
|
||||||
These redirections still honor your customization to ~TeX-modes~
|
|
||||||
option. Thus you are served by built-in ~plain-tex-mode~ and
|
|
||||||
AUCTeX ~LaTeX-mode~ if you exclude ~plain-tex-mode~ from
|
|
||||||
~TeX-modes~.
|
|
||||||
2. Other former names, e.g. ~context-mode~ and
|
|
||||||
~japanese-latex-mode~, are handled by aliases such as
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defalias 'context-mode #'ConTeXt-mode)
|
|
||||||
#+end_src
|
|
||||||
- New modes recognize directory local variables prepaired for the
|
|
||||||
former mode name. For example, directory local variables for
|
|
||||||
~latex-mode~ are valid in ~LaTeX-mode~ as well. So you don't have
|
|
||||||
to rewrite every former mode name to the new one in
|
|
||||||
=.dir-locals.el=.
|
|
||||||
- Your abbrevs are preserved. For example, ~latex-mode-abbrev-table~,
|
|
||||||
if exists, is automatically included as a parent of
|
|
||||||
~LaTeX-mode-abbrev-table~.
|
|
||||||
- Now all major modes are defined by ~define-derived-mode~, so
|
|
||||||
standard inheritance of keymaps, syntax tables etc. takes place.
|
|
||||||
The inheritance relations are:
|
|
||||||
#+begin_example
|
|
||||||
text-mode --+-- TeX-mode
|
|
||||||
+-- Texinfo-mode
|
|
||||||
|
|
||||||
TeX-mode --+-- plain-TeX-mode
|
|
||||||
+-- LaTeX-mode
|
|
||||||
+-- ConTeXt-mode
|
|
||||||
|
|
||||||
plain-TeX-mode --+-- AmSTeX-mode
|
|
||||||
+-- japanese-plain-TeX-mode
|
|
||||||
|
|
||||||
LaTeX-mode --+-- docTeX-mode
|
|
||||||
+-- japanese-LaTeX-mode
|
|
||||||
#+end_example
|
|
||||||
|
|
||||||
These inheritance relations are taken into account for directory
|
|
||||||
local variables in the standard way. For example, directory local
|
|
||||||
variables for ~LaTeX-mode~ are applied to ~docTeX-mode~ now.
|
|
||||||
|
|
||||||
Note that ~TeX-mode~ isn't meant for use for end users. It is only
|
|
||||||
meant for the base mode for other major modes. Its role is to
|
|
||||||
provide base keymap, hook and syntax table under the same name with
|
|
||||||
the former AUCTeX and run the common initialization code.
|
|
||||||
|
|
||||||
Now that all modes have ~text-mode~ as their ancestor, they inherit
|
|
||||||
its keymap and syntax table. In addition, dir local vars for
|
|
||||||
~text-mode~ are applied to all AUCTeX major mode.
|
|
||||||
|
|
||||||
However, ~Texinfo-mode~ is exceptional in the following two aspects:
|
|
||||||
1. It doesn't inherit ~text-mode-syntax-table~ because it simply
|
|
||||||
uses built-in mode's ~texinfo-mode-syntax-table~, which is
|
|
||||||
independent of ~text-mode-syntax-table~. This situation is the
|
|
||||||
same with the former AUCTeX Texinfo mode.
|
|
||||||
2. ~Texinfo-mode-map~ has ~TeX-mode-map~ as its direct parent. This
|
|
||||||
is the same with the former AUCTeX Texinfo mode. Now it inherits
|
|
||||||
~text-mode-map~ indirectly through ~TeX-mode-map~.
|
|
||||||
|
|
||||||
- There are new keymaps, hooks and abbrev tables:
|
|
||||||
~Texinfo-mode-abbrev-table~, ~japanese-plain-TeX-mode-map~,
|
|
||||||
~japanese-LaTeX-mode-map~, ~japanese-plain-TeX-mode-hook~,
|
|
||||||
~japanese-LaTeX-mode-hook~, ~japanese-plain-TeX-mode-abbrev-table~,
|
|
||||||
~japanese-LaTeX-mode-abbrev-table~.
|
|
||||||
|
|
||||||
- AUCTeX now requires GNU Emacs 27.1 or higher.
|
|
||||||
|
|
@ -1,226 +0,0 @@
|
||||||
This is the README file for the AUCTeX distribution.
|
|
||||||
|
|
||||||
Copyright (C) 2008, 2017, 2018, 2024 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.
|
|
||||||
|
|
||||||
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 <RET>’.
|
|
||||||
|
|
||||||
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'.
|
|
||||||
|
|
||||||
AUCTeX is a package distributed at ELPA, Emacs Lisp Package Archive.
|
|
||||||
You can manage it in Emacs package manager.
|
|
||||||
|
|
||||||
WWW users may want to check out the AUCTeX page at
|
|
||||||
<https://www.gnu.org/software/auctex/> and
|
|
||||||
<https://elpa.gnu.org/packages/auctex.html>.
|
|
||||||
|
|
||||||
If you are considering upgrading AUCTeX, the recent changes are
|
|
||||||
described on the latter of the above WWW sites.
|
|
||||||
|
|
||||||
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 <auctex-request@gnu.org> in
|
|
||||||
order to join the general discussion list for AUCTeX. Articles should
|
|
||||||
be sent to <auctex@gnu.org>. In a similar way, you can subscribe to the
|
|
||||||
<info-auctex@gnu.org> list for just getting important announcements
|
|
||||||
about AUCTeX. The list <bug-auctex@gnu.org> is for bug reports which
|
|
||||||
you should usually file with the ‘M-x TeX-submit-bug-report <RET>’
|
|
||||||
command. If you want to address the developers of AUCTeX themselves
|
|
||||||
with technical issues, they can be found on the discussion list
|
|
||||||
<auctex-devel@gnu.org>.
|
|
||||||
|
|
||||||
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’, ‘dvisvgm’, 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
|
|
||||||
**************************
|
|
||||||
|
|
||||||
Successful installation automatically activates the package at Emacs
|
|
||||||
startup.
|
|
||||||
|
|
||||||
If you 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 ‘M-x
|
|
||||||
list-load-path-shadows <RET>’.
|
|
||||||
|
|
||||||
3 Getting started
|
|
||||||
*****************
|
|
||||||
|
|
||||||
Once activated, preview-latex and its documentation will be accessible
|
|
||||||
via its menus. 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.
|
|
||||||
|
|
||||||
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-option <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. ‘dvipng’ is included in
|
|
||||||
standard TeX Live distribution.
|
|
||||||
|
|
||||||
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 <RET>’ in Emacs. Once
|
|
||||||
preview-latex is activated, you can instead use ‘C-c C-p <TAB>’ (or the
|
|
||||||
menu entry ‘Preview/Read documentation’).
|
|
||||||
|
|
||||||
Depending on your installation, a printable manual may also be available
|
|
||||||
in the form of ‘preview-latex.pdf’.
|
|
||||||
|
|
||||||
Detailed documentation for the LaTeX style used for extracting the
|
|
||||||
preview images is placed in ‘preview.pdf’ in a suitable directory during
|
|
||||||
installation; on typical TeX Live-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 (https://savannah.gnu.org/projects/auctex).
|
|
||||||
|
|
||||||
Anonymous Git is available at <git://git.savannah.gnu.org/auctex.git> or
|
|
||||||
<https://git.savannah.gnu.org/git/auctex.git>. You can also browse the
|
|
||||||
repository (https://git.savannah.gnu.org/cgit/auctex.git) via web
|
|
||||||
interface.
|
|
||||||
|
|
||||||
7 Contacts
|
|
||||||
**********
|
|
||||||
|
|
||||||
Bug reports should be sent by using ‘M-x preview-report-bug <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
|
|
||||||
<bug-auctex@gnu.org>.
|
|
||||||
|
|
||||||
There is a general discussion list for AUCTeX which also covers
|
|
||||||
preview-latex, look at <https://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 <auctex-request@gnu.org>. For the
|
|
||||||
developers, there is the <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 <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 <dak@gnu.org>, and of course you can arrange for
|
|
||||||
service contracts or for added functionality.
|
|
||||||
|
|
||||||
|
|
@ -1,333 +0,0 @@
|
||||||
;;; auctex-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*-
|
|
||||||
;; Generated by the `loaddefs-generate' function.
|
|
||||||
|
|
||||||
;; This file is part of GNU Emacs.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from auctex.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "auctex" '("AUCTeX-version"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from bib-cite.el
|
|
||||||
|
|
||||||
(autoload 'bib-cite-minor-mode "bib-cite" "\
|
|
||||||
Toggle bib-cite mode.
|
|
||||||
When bib-cite mode is enabled, citations, labels and refs are highlighted
|
|
||||||
when the mouse is over them. Clicking on these highlights with [mouse-2]
|
|
||||||
runs `bib-find', and [mouse-3] runs `bib-display'.
|
|
||||||
|
|
||||||
(fn ARG)" t)
|
|
||||||
(autoload 'turn-on-bib-cite "bib-cite" "\
|
|
||||||
Unconditionally turn on Bib Cite mode.")
|
|
||||||
(register-definition-prefixes "bib-cite" '("LaTeX-find-label-hist-alist" "bib-" "create-alist-from-list" "member-cis" "psg-" "search-directory-tree"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from context.el
|
|
||||||
|
|
||||||
(defalias 'context-mode #'ConTeXt-mode)
|
|
||||||
(autoload 'ConTeXt-mode "context" "\
|
|
||||||
Major mode in AUCTeX for editing ConTeXt files.
|
|
||||||
|
|
||||||
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'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(register-definition-prefixes "context" '("ConTeXt-" "TeX-ConTeXt-sentinel" "context-guess-current-interface"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from context-en.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "context-en" '("ConTeXt-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from context-nl.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "context-nl" '("ConTeXt-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from font-latex.el
|
|
||||||
|
|
||||||
(autoload 'font-latex-setup "font-latex" "\
|
|
||||||
Setup this buffer for LaTeX font-lock. Usually called from a hook.")
|
|
||||||
(register-definition-prefixes "font-latex" '("font-latex-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from latex.el
|
|
||||||
|
|
||||||
(autoload 'BibTeX-auto-store "latex" "\
|
|
||||||
This function should be called from `bibtex-mode-hook'.
|
|
||||||
It will setup BibTeX to store keys in an auto file.")
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.drv\\'" . LaTeX-mode) t)
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.hva\\'" . LaTeX-mode))
|
|
||||||
(if (eq (symbol-function 'LaTeX-mode) 'latex-mode)
|
|
||||||
(defalias 'LaTeX-mode nil))
|
|
||||||
(autoload 'LaTeX-mode "latex" "\
|
|
||||||
Major mode in AUCTeX for editing LaTeX files.
|
|
||||||
See info under AUCTeX for full documentation.
|
|
||||||
|
|
||||||
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'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(put 'LaTeX-mode 'auctex-function-definition (symbol-function 'LaTeX-mode))
|
|
||||||
(autoload 'docTeX-mode "latex" "\
|
|
||||||
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'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(register-definition-prefixes "latex" '("Bib" "LaTeX-" "TeX-" "docTeX-" "latex-math-mode"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from latex-flymake.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "latex-flymake" '("LaTeX-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from multi-prompt.el
|
|
||||||
|
|
||||||
(autoload 'multi-prompt "multi-prompt" "\
|
|
||||||
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.
|
|
||||||
|
|
||||||
(fn SEPARATOR UNIQUE PROMPT TABLE &optional MP-PREDICATE REQUIRE-MATCH INITIAL HISTORY)")
|
|
||||||
(autoload 'multi-prompt-key-value "multi-prompt" "\
|
|
||||||
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 where each entry is a list. The first element
|
|
||||||
of each list is a string representing a key and the optional
|
|
||||||
second element is a list with strings to be used as values for
|
|
||||||
the key. The second element can also be a variable returning a
|
|
||||||
list of strings.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)")
|
|
||||||
(register-definition-prefixes "multi-prompt" '("multi-prompt-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from plain-tex.el
|
|
||||||
|
|
||||||
(if (eq (symbol-function 'plain-TeX-mode) 'plain-tex-mode)
|
|
||||||
(defalias 'plain-TeX-mode nil))
|
|
||||||
(autoload 'plain-TeX-mode "plain-tex" "\
|
|
||||||
Major mode in AUCTeX for editing plain TeX files.
|
|
||||||
See info under AUCTeX for documentation.
|
|
||||||
|
|
||||||
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'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(put 'plain-TeX-mode 'auctex-function-definition (symbol-function 'plain-TeX-mode))
|
|
||||||
(autoload 'AmSTeX-mode "plain-tex" "\
|
|
||||||
Major mode in AUCTeX for editing AmSTeX files.
|
|
||||||
See info under AUCTeX for documentation.
|
|
||||||
|
|
||||||
Entering `AmSTeX-mode' calls the value of `text-mode-hook', then
|
|
||||||
the value of `TeX-mode-hook', `plain-TeX-mode-hook' and then the
|
|
||||||
value of `AmSTeX-mode-hook'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(defalias 'ams-tex-mode #'AmSTeX-mode)
|
|
||||||
(register-definition-prefixes "plain-tex" '("AmSTeX-" "plain-TeX-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from preview.el
|
|
||||||
|
|
||||||
(put 'preview-scale-function 'safe-local-variable (lambda (x) (and (numberp x) (<= 0.1 x 10))))
|
|
||||||
(autoload 'desktop-buffer-preview "preview" "\
|
|
||||||
Hook function for restoring persistent previews into a buffer.
|
|
||||||
|
|
||||||
(fn FILE-NAME BUFFER-NAME MISC)")
|
|
||||||
(add-to-list 'desktop-buffer-mode-handlers '(LaTeX-mode . desktop-buffer-preview))
|
|
||||||
(autoload 'preview-install-styles "preview" "\
|
|
||||||
Install the TeX style files into a permanent location DIR.
|
|
||||||
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.
|
|
||||||
|
|
||||||
(fn DIR &optional FORCE-OVERWRITE FORCE-SAVE)" t)
|
|
||||||
(autoload 'LaTeX-preview-setup "preview" "\
|
|
||||||
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.")
|
|
||||||
(autoload 'preview-report-bug "preview" "\
|
|
||||||
Report a bug in the preview-latex package." t)
|
|
||||||
(register-definition-prefixes "preview" '("TeX-" "desktop-buffer-preview-misc-data" "preview-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex.el
|
|
||||||
|
|
||||||
(autoload 'TeX-tex-mode "tex" "\
|
|
||||||
Call suitable AUCTeX major mode 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 non-commented out content matches with regular expression in
|
|
||||||
`TeX-format-list', use the associated major mode. For example,
|
|
||||||
if \\documentclass or \\begin{, \\section{, \\part{ or \\chapter{ is
|
|
||||||
found, `LaTeX-mode' is selected.
|
|
||||||
3) Otherwise, use `TeX-default-mode'.
|
|
||||||
|
|
||||||
By default, `TeX-format-list' has a fallback entry for
|
|
||||||
`plain-TeX-mode', thus non-empty file which didn't match any
|
|
||||||
other entries will enter `plain-TeX-mode'." t)
|
|
||||||
(if (eq (symbol-function 'TeX-mode) 'tex-mode)
|
|
||||||
(defalias 'TeX-mode nil))
|
|
||||||
(put 'TeX-mode 'auctex-function-definition (symbol-function 'TeX-mode))
|
|
||||||
(autoload 'TeX-auto-generate "tex" "\
|
|
||||||
Generate style file for TEX and store it in AUTO.
|
|
||||||
If TEX is a directory, generate style files for all files in the directory.
|
|
||||||
|
|
||||||
(fn TEX AUTO)" t)
|
|
||||||
(autoload 'TeX-auto-generate-global "tex" "\
|
|
||||||
Create global auto directory for global TeX macro definitions." t)
|
|
||||||
(autoload 'TeX-submit-bug-report "tex" "\
|
|
||||||
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 Emacs, please copy the
|
|
||||||
output buffer into your mail program, as it gives us important
|
|
||||||
information about your AUCTeX version and AUCTeX configuration." t)
|
|
||||||
(register-definition-prefixes "tex" '("Bib" "ConTeXt-" "LaTeX-" "TeX-" "docTeX-default-extension" "plain-TeX-auto-regexp-list" "tex-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-bar.el
|
|
||||||
|
|
||||||
(autoload 'TeX-install-toolbar "tex-bar" "\
|
|
||||||
Install toolbar buttons for TeX mode." t)
|
|
||||||
(autoload 'LaTeX-install-toolbar "tex-bar" "\
|
|
||||||
Install toolbar buttons for LaTeX mode." t)
|
|
||||||
(register-definition-prefixes "tex-bar" '("TeX-bar-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-fold.el
|
|
||||||
|
|
||||||
(autoload 'TeX-fold-mode "tex-fold" "\
|
|
||||||
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.
|
|
||||||
|
|
||||||
(fn &optional ARG)" t)
|
|
||||||
(defalias 'tex-fold-mode #'TeX-fold-mode)
|
|
||||||
(register-definition-prefixes "tex-fold" '("TeX-fold-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-font.el
|
|
||||||
|
|
||||||
(autoload 'tex-font-setup "tex-font" "\
|
|
||||||
Setup font lock support for TeX.")
|
|
||||||
(register-definition-prefixes "tex-font" '("tex-font-lock-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-info.el
|
|
||||||
|
|
||||||
(autoload 'Texinfo-mode "tex-info" "\
|
|
||||||
Major mode in AUCTeX for editing Texinfo files.
|
|
||||||
|
|
||||||
Entering Texinfo mode calls the value of `text-mode-hook' and then the
|
|
||||||
value of `Texinfo-mode-hook'.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(register-definition-prefixes "tex-info" '("Texinfo-" "texinfo-environment-regexp"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-ispell.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "tex-ispell" '("TeX-ispell-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-jp.el
|
|
||||||
|
|
||||||
(autoload 'japanese-plain-TeX-mode "tex-jp" "\
|
|
||||||
Major mode in AUCTeX for editing Japanese plain TeX files.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(defalias 'japanese-plain-tex-mode #'japanese-plain-TeX-mode)
|
|
||||||
(autoload 'japanese-LaTeX-mode "tex-jp" "\
|
|
||||||
Major mode in AUCTeX for editing Japanese LaTeX files.
|
|
||||||
|
|
||||||
(fn)" t)
|
|
||||||
(defalias 'japanese-latex-mode #'japanese-LaTeX-mode)
|
|
||||||
(register-definition-prefixes "tex-jp" '("TeX-japanese-process-" "japanese-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-site.el
|
|
||||||
|
|
||||||
(require 'tex-site)
|
|
||||||
(register-definition-prefixes "tex-site" '("TeX-" "preview-TeX-style-dir" "tex-site-unload-function"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-style.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "tex-style" '("LaTeX-" "TeX-TikZ-point-name-regexp"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from tex-wizard.el
|
|
||||||
|
|
||||||
(register-definition-prefixes "tex-wizard" '("TeX-wizard"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from texmathp.el
|
|
||||||
|
|
||||||
(autoload 'texmathp "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." t)
|
|
||||||
(autoload 'texmathp-match-switch "texmathp" "\
|
|
||||||
Search backward for any of the math switches.
|
|
||||||
Limit searched to BOUND.
|
|
||||||
|
|
||||||
(fn BOUND)")
|
|
||||||
(register-definition-prefixes "texmathp" '("texmathp-"))
|
|
||||||
|
|
||||||
|
|
||||||
;;; Generated autoloads from toolbar-x.el
|
|
||||||
|
|
||||||
(autoload 'toolbarx-install-toolbar "toolbar-x")
|
|
||||||
(register-definition-prefixes "toolbar-x" '("toolbarx-"))
|
|
||||||
|
|
||||||
;;; End of scraped data
|
|
||||||
|
|
||||||
(provide 'auctex-autoloads)
|
|
||||||
|
|
||||||
;; Local Variables:
|
|
||||||
;; version-control: never
|
|
||||||
;; no-byte-compile: t
|
|
||||||
;; no-update-autoloads: t
|
|
||||||
;; no-native-compile: t
|
|
||||||
;; coding: utf-8-emacs-unix
|
|
||||||
;; End:
|
|
||||||
|
|
||||||
;;; auctex-autoloads.el ends here
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
;; Generated package description from auctex.el -*- mode: lisp-data; no-byte-compile: t -*-
|
|
||||||
(define-package "auctex" "14.1.2" "Integrated environment for *TeX*" '((emacs "28.1")) :commit "5850499d0182b4ca53c078e74711a13995651337" :maintainer '(nil . "auctex-devel@gnu.org") :keywords '("tex" "latex" "texinfo" "context" "doctex" "preview-latex") :url "https://www.gnu.org/software/auctex/")
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
;;; auctex.el --- Integrated environment for *TeX* -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2014-2026 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Version: 14.1.2
|
|
||||||
;; URL: https://www.gnu.org/software/auctex/
|
|
||||||
;; Maintainer: auctex-devel@gnu.org
|
|
||||||
;; Notifications-To: auctex-diffs@gnu.org
|
|
||||||
;; Package-Requires: ((emacs "28.1"))
|
|
||||||
;; Keywords: TeX LaTeX Texinfo ConTeXt docTeX preview-latex
|
|
||||||
|
|
||||||
;; 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 of the License, 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; AUCTeX is an integrated environment for writing input files for TeX,
|
|
||||||
;; LaTeX, ConTeXt, Texinfo, and docTeX. The component preview-latex
|
|
||||||
;; provides true "WYSIWYG" experience in the sourcebuffer.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
;; This can be used for starting up AUCTeX, e.g., when not installed
|
|
||||||
;; from ELPA.
|
|
||||||
|
|
||||||
;; The silly `(when t' test stops performing the `require' during
|
|
||||||
;; compilation where `load-file-name' is nil and things would go wrong.
|
|
||||||
(when t
|
|
||||||
(require 'tex-site
|
|
||||||
(expand-file-name "tex-site.el"
|
|
||||||
(file-name-directory load-file-name))))
|
|
||||||
|
|
||||||
(defconst AUCTeX-version (package-get-version)
|
|
||||||
"AUCTeX version.")
|
|
||||||
|
|
||||||
(provide 'auctex)
|
|
||||||
|
|
||||||
;;; auctex.el ends here
|
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,479 +0,0 @@
|
||||||
\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 für Linien, Kreise und Hyperbeln. Die hier
|
|
||||||
hergeleiteten Gleichungen sind auch unter dem Namen {\tt DDA}s bekannt.
|
|
||||||
\end{abstract}
|
|
||||||
|
|
||||||
\section{Einführung}
|
|
||||||
Bei den hier vorgestellten Algorithmen werden zunächst nur
|
|
||||||
Kurvenstücke 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 heißt, entweder
|
|
||||||
durchgehend steigend oder durchgehend fallend.
|
|
||||||
\item Wenn $x$ sich um $1$ ändert, so ändert sich $y$ betragsmäßig
|
|
||||||
höchstens um $1$
|
|
||||||
($\left|\frac{\partial y}{\partial x}\right| \leq 1$).
|
|
||||||
\end{enumerate}
|
|
||||||
|
|
||||||
\section{Die gerade Linie}
|
|
||||||
Wir betrachten hier zunächst 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 genügt es also, $x$ durchlaufen zu lassen und für $y$ die
|
|
||||||
dazugehörigen 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, für den gilt: $-0.5 \leq f < 0.5$. Somit
|
|
||||||
stellt dann $e$ den gewünschten, auf die nächste 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$. Für
|
|
||||||
positive gerade Werte von $\Delta x$ ist offensichtlich $d < 0$ eine
|
|
||||||
zu~$f < 0.5$ equivalente Bedingung.
|
|
||||||
|
|
||||||
Für 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 läßt, so muß man
|
|
||||||
korrigieren, indem man $f$ um~1 erniedrigt und $e$ um~$1$ erhöht.
|
|
||||||
%
|
|
||||||
% 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
|
|
||||||
angepaßt werden.
|
|
||||||
|
|
||||||
Mit den angegebenen Formeln ergibt sich jetzt bei Berücksichtigung der
|
|
||||||
Einflüsse von $x$ und $e$ auf $d$ der in Tabelle~\ref{linalg}
|
|
||||||
angegebene Algorithmus. Eine optimierte C-function, die die
|
|
||||||
Oktantenaufteilung berücksichtigt, 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$ läßt 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 gewählt worden, damit $e$ einen auf ganze Zahlen gerundeten Wert
|
|
||||||
für $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 für $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$? Für $x=0$ ist es sicher $0$. Solange $e$
|
|
||||||
konstant bleibt, schrumpft $f$ stetig. Fällt $f$ unter $-0.5$, so
|
|
||||||
fällt $m$ (unter Vernachlässigung von $f^2$) unter $-e$. Dies wird
|
|
||||||
jetzt als Kriterium für einen Unterlauf von $f$ verwendet. Tritt
|
|
||||||
dieser auf, so muß $f$ um $1$ erhöht 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$ genügen, 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]
|
|
||||||
Für $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$ erhöht und $e$ um~$1$
|
|
||||||
vermindert werden.
|
|
||||||
|
|
||||||
\pagebreak
|
|
||||||
Für $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 für 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}
|
|
||||||
|
|
@ -1,216 +0,0 @@
|
||||||
;;; context-en.el --- Support for the ConTeXt english interface. -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Author: Berend de Boer <berend@pobox.com>
|
|
||||||
;; 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; 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 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 ConTeXt section block names 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-numbered-section-list-en
|
|
||||||
'(("part" 0)
|
|
||||||
("chapter" 1)
|
|
||||||
("section" 2)
|
|
||||||
("subsection" 3)
|
|
||||||
("subsubsection" 4))
|
|
||||||
"List of the names of ConTeXt numbered sections for its en interface.")
|
|
||||||
|
|
||||||
(defvar ConTeXt-unnumbered-section-list-en
|
|
||||||
'(("title" 1)
|
|
||||||
("subject" 2)
|
|
||||||
("subsubject" 3)
|
|
||||||
("subsubsubject" 4))
|
|
||||||
"List of the names of ConTeXt unnumbered sections for its en interface.")
|
|
||||||
|
|
||||||
(defvar ConTeXt-section-list-en
|
|
||||||
(append ConTeXt-numbered-section-list-en ConTeXt-unnumbered-section-list-en)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
(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 " "))))
|
|
||||||
|
|
||||||
(defun ConTeXt--mode-en ()
|
|
||||||
"Set up ConTeXt mode for editing files under english interface.
|
|
||||||
Helper function of `ConTeXt-mode'. Don't use."
|
|
||||||
|
|
||||||
;; set the ConTeXt interface
|
|
||||||
(setq ConTeXt-current-interface "en")
|
|
||||||
|
|
||||||
;; initialization
|
|
||||||
(ConTeXt-mode-common-initialization)
|
|
||||||
(ConTeXt-en-mode-initialization)
|
|
||||||
|
|
||||||
(setq mode-name "ConTeXt-en"))
|
|
||||||
|
|
||||||
(provide 'context-en)
|
|
||||||
|
|
||||||
;;; context-en.el ends here
|
|
||||||
Binary file not shown.
|
|
@ -1,194 +0,0 @@
|
||||||
;;; context-nl.el --- Support for the ConTeXt dutch interface. -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2003, 2004, 2006, 2010,
|
|
||||||
;; 2015, 2020-2023 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
;; Maintainer: Berend de Boer <berend@pobox.com>
|
|
||||||
;; 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; 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 nl 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 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 ConTeXt section block names 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-numbered-section-list-nl
|
|
||||||
'(("deel" 0)
|
|
||||||
("hoofdstuk" 1)
|
|
||||||
("paragraaf" 2)
|
|
||||||
("subparagraaf" 3)
|
|
||||||
("subsubparagraaf" 4))
|
|
||||||
"List of the names of ConTeXt numbered sections for its nl interface.")
|
|
||||||
|
|
||||||
(defvar ConTeXt-unnumbered-section-list-nl
|
|
||||||
'(("titel" 1)
|
|
||||||
("onderwerp" 2)
|
|
||||||
("subonderwerp" 3)
|
|
||||||
("subsubsubsubject" 4))
|
|
||||||
"List of the names of ConTeXt unnumbered sections for its nl interface.")
|
|
||||||
|
|
||||||
(defvar ConTeXt-section-list-nl
|
|
||||||
(append ConTeXt-numbered-section-list-nl ConTeXt-unnumbered-section-list-nl))
|
|
||||||
|
|
||||||
(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 " "))))
|
|
||||||
|
|
||||||
(defun ConTeXt--mode-nl ()
|
|
||||||
"Set up ConTeXt mode for editing files under dutch interface.
|
|
||||||
Helper function of `ConTeXt-mode'. Don't use."
|
|
||||||
|
|
||||||
;; set the ConTeXt interface
|
|
||||||
(setq ConTeXt-current-interface "nl")
|
|
||||||
|
|
||||||
;; initialization
|
|
||||||
(ConTeXt-mode-common-initialization)
|
|
||||||
(ConTeXt-nl-mode-initialization)
|
|
||||||
|
|
||||||
(setq mode-name "ConTeXt-nl"))
|
|
||||||
|
|
||||||
(provide 'context-nl)
|
|
||||||
|
|
||||||
;;; context-nl.el ends here
|
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,25 +0,0 @@
|
||||||
This is the file .../info/dir, which contains the
|
|
||||||
topmost node of the Info hierarchy, called (dir)Top.
|
|
||||||
The first time you invoke Info you start off looking at this node.
|
|
||||||
|
|
||||||
File: dir, Node: Top This is the top of the INFO tree
|
|
||||||
|
|
||||||
This (the Directory node) gives a menu of major topics.
|
|
||||||
Typing "q" exits, "H" lists all Info commands, "d" returns here,
|
|
||||||
"h" gives a primer for first-timers,
|
|
||||||
"mEmacs<Return>" visits the Emacs manual, etc.
|
|
||||||
|
|
||||||
In Emacs, you can click mouse button 2 on a menu item or cross reference
|
|
||||||
to select it.
|
|
||||||
|
|
||||||
* Menu:
|
|
||||||
|
|
||||||
Emacs
|
|
||||||
* AUCTeX: (auctex). A sophisticated TeX environment for Emacs.
|
|
||||||
* preview-latex: (preview-latex).
|
|
||||||
Preview LaTeX fragments in Emacs
|
|
||||||
|
|
||||||
TeX
|
|
||||||
* AUCTeX: (auctex). A sophisticated TeX environment for Emacs.
|
|
||||||
* preview-latex: (preview-latex).
|
|
||||||
Preview LaTeX fragments in Emacs
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,183 +0,0 @@
|
||||||
@c This is part of the AUCTeX Manual.
|
|
||||||
@c Copyright (C) 2004-2025 Free Software Foundation, Inc.
|
|
||||||
@c See the file auctex.texi for copying conditions.
|
|
||||||
|
|
||||||
@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?
|
|
||||||
|
|
||||||
If you are having trouble with upgrading @acronym{ELPA} package, first
|
|
||||||
have a look at the dedicated entry below. If that doesn't resolve your
|
|
||||||
issue, then come back here and proceed.
|
|
||||||
|
|
||||||
Well, you might have guessed it, the first place to look is in the
|
|
||||||
available documentation packaged with @AUCTeX{}. This could be the
|
|
||||||
@file{README} file or @file{NEWS.org} file in case you are experiencing
|
|
||||||
problems after an upgrade, 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 @key{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. 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 following
|
|
||||||
command line:
|
|
||||||
@example
|
|
||||||
emacs -q -no-site-file --eval "(progn (setq package-load-list '((auctex
|
|
||||||
t))) (package-initialize))"
|
|
||||||
@end example
|
|
||||||
Use @samp{runemacs} instead of @samp{emacs} on @w{MS Windows}.
|
|
||||||
|
|
||||||
The @option{--eval} option activates only @AUCTeX{} among all installed
|
|
||||||
@acronym{ELPA} packages.
|
|
||||||
|
|
||||||
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
|
|
||||||
@acronym{ELPA} upgrade fails. What should I do?
|
|
||||||
|
|
||||||
In general, @acronym{ELPA} upgrade can fail in a Emacs session you are
|
|
||||||
running, especially when @AUCTeX{} major version increases. This entry
|
|
||||||
covers the following cases in such casual upgrade.
|
|
||||||
@itemize
|
|
||||||
@item
|
|
||||||
Upgrade stops with error and doesn't complete.
|
|
||||||
@item
|
|
||||||
Upgrade falls in infinite loop and doesn't terminate. You have
|
|
||||||
to interrupt it with @kbd{C-g} and upgrade doesn't complete.
|
|
||||||
@item
|
|
||||||
It looks like upgrade finishes successfully but afterwards @AUCTeX{}
|
|
||||||
breaks with mysterious error like:
|
|
||||||
@example
|
|
||||||
TeX-command-expand: Wrong type argument: stringp, nil
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
These issues involve byte compilation failure. In the third case, the
|
|
||||||
generated @file{.elc} files are actually corrupted. Thus the point is to
|
|
||||||
have sane byte compilation.
|
|
||||||
|
|
||||||
The first thing which is worth trying is:
|
|
||||||
@enumerate
|
|
||||||
@item
|
|
||||||
Terminate the current running Emacs session and restart Emacs.
|
|
||||||
@item
|
|
||||||
Type @kbd{M-x package-recompile @key{RET} auctex @key{RET}}.
|
|
||||||
@item
|
|
||||||
Restart your Emacs again.
|
|
||||||
@end enumerate
|
|
||||||
|
|
||||||
If you are lucky enough, this will basically resolve the issue. There is
|
|
||||||
still old @samp{auctex-X.Y.Z} directory left behind under
|
|
||||||
@file{~/.emacs.d/elpa/}, so delete it manually to avoid future trouble.
|
|
||||||
|
|
||||||
If the above prescription doesn't work, then try:
|
|
||||||
@enumerate
|
|
||||||
@item
|
|
||||||
Uninstall @AUCTeX{} once.
|
|
||||||
@item
|
|
||||||
Restart your Emacs and (before doing anything else) reinstall @AUCTeX{}.
|
|
||||||
@end enumerate
|
|
||||||
|
|
||||||
In theory, this recipe will circumvent all caveats in @acronym{ELPA}
|
|
||||||
upgrade of @AUCTeX{}. Find and delete old @samp{auctex-X.Y.Z} directory
|
|
||||||
remaining under @file{~/.emacs.d/elpa/}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
What versions of Emacs are supported?
|
|
||||||
|
|
||||||
@AUCTeX{} was tested with @w{GNU Emacs 28.1}. Older versions may work but
|
|
||||||
are unsupported.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Why doesn't the completion, style file, or multifile 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.
|
|
||||||
@xref{Parsing Files} and @ref{Multifile}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Why doesn't @code{TeX-save-document} work?
|
|
||||||
|
|
||||||
@code{TeX-check-path} has to contain "@file{./}" 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?
|
|
||||||
|
|
||||||
If @code{TeX-file-line-error} is set to @code{nil} (not the default),
|
|
||||||
these sort of failures might be related to the the fact that when writing
|
|
||||||
the log file, @TeX{} puts information related to a file, including error
|
|
||||||
messages, between a pair of parentheses. In this scenario @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.
|
|
||||||
|
|
||||||
Activating so-called @samp{file:line:error} messages for the log file usually
|
|
||||||
solves this issue, as these kind of messages are are easier to parse;
|
|
||||||
however, they may lack some details. Activation can be done either in
|
|
||||||
the configuration of your @TeX{} system (consult its manual to see where
|
|
||||||
this is) or by simply keeping the variable @code{TeX-file-line-error} to
|
|
||||||
the default value of non-@code{nil}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
What does @samp{AUC} stand for?
|
|
||||||
|
|
||||||
@AUCTeX{} came into being at Aalborg University in Denmark. Back then
|
|
||||||
the Danish name of the university was Aalborg Universitetscenter; @samp{AUC}
|
|
||||||
for short.
|
|
||||||
|
|
||||||
@end enumerate
|
|
||||||
|
|
@ -1,506 +0,0 @@
|
||||||
@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{https://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{https://www.gnu.org/licenses/}.
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,281 +0,0 @@
|
||||||
@c This is part of the AUCTeX Manual.
|
|
||||||
@c Copyright (C) 1994, 1996, 2003-2007, 2012-2013,
|
|
||||||
@c 2015-2025 Free Software Foundation, Inc.
|
|
||||||
@c See the file auctex.texi for copying conditions.
|
|
||||||
@node Installation
|
|
||||||
@chapter Installing @AUCTeX{}
|
|
||||||
|
|
||||||
@AUCTeX{} is a package distributed at @acronym{ELPA}, Emacs Lisp Package
|
|
||||||
Archive. To install @AUCTeX{}, simply do @kbd{M-x list-packages
|
|
||||||
@key{RET}}, mark the auctex package for installation with @kbd{i}, and
|
|
||||||
hit @kbd{x} to execute the installation procedure. That's all.
|
|
||||||
|
|
||||||
Caution. If you have installed former @AUCTeX{} as regular tarball
|
|
||||||
release, uninstall it and delete the initialization codes
|
|
||||||
@lisp
|
|
||||||
(load "auctex.el" nil t t)
|
|
||||||
(load "preview-latex.el" nil t t)
|
|
||||||
@end lisp
|
|
||||||
@noindent
|
|
||||||
in your init file. Otherwise you'll get into troubles.
|
|
||||||
|
|
||||||
@code{use-package} users can use this simple recipe in their
|
|
||||||
@code{user-init-file} which essentially does the same as the manual
|
|
||||||
installation explained above.
|
|
||||||
|
|
||||||
@lisp
|
|
||||||
(use-package auctex
|
|
||||||
:ensure t)
|
|
||||||
@end lisp
|
|
||||||
|
|
||||||
For past @acronym{ELPA} releases, see
|
|
||||||
@url{https://elpa.gnu.org/packages/auctex.html}.
|
|
||||||
Once the installation is completed, you can skip the rest of this
|
|
||||||
section and proceed to @ref{Quick Start}.
|
|
||||||
|
|
||||||
@menu
|
|
||||||
* Prerequisites::
|
|
||||||
* Activating the package::
|
|
||||||
* Advice for package providers::
|
|
||||||
* Using @AUCTeX{} from @acronym{ELPA}-devel::
|
|
||||||
* Using @AUCTeX{} from local Git repo::
|
|
||||||
* Customizing::
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Prerequisites
|
|
||||||
@section Prerequisites
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item GNU Emacs 28.1 or higher
|
|
||||||
|
|
||||||
Using @previewlatex{} requires a version of Emacs compiled with image
|
|
||||||
support.
|
|
||||||
|
|
||||||
@table @b
|
|
||||||
@item Windows
|
|
||||||
Precompiled versions are available from
|
|
||||||
@uref{https://ftp.gnu.org/gnu/emacs/windows/}.
|
|
||||||
@item macOS
|
|
||||||
For an overview of precompiled versions of Emacs for macOS see for
|
|
||||||
example @uref{https://www.emacswiki.org/emacs/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/git/?group=emacs}.
|
|
||||||
@end table
|
|
||||||
|
|
||||||
@item A working @TeX{} installation
|
|
||||||
|
|
||||||
Well, @AUCTeX{} would be pointless without that.
|
|
||||||
@previewlatex{} requires Dvips or @command{dvipng} for its operation in @acronym{DVI} mode.
|
|
||||||
The default configuration of @AUCTeX{} is tailored for @w{@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. Ghostscript version 7.07 or newer is required.
|
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
For some known issues with various software, see
|
|
||||||
@ref{Known problems,,,preview-latex,the @previewlatex{} manual}.
|
|
||||||
|
|
||||||
@node Activating the package
|
|
||||||
@section Activating the package
|
|
||||||
|
|
||||||
You can detect the successful activation of @AUCTeX{} and
|
|
||||||
@previewlatex{} in the menus after loading a @LaTeX{} file like
|
|
||||||
@file{circ.tex}: @AUCTeX{} then gives you a @samp{Command} menu,
|
|
||||||
and @previewlatex{} gives you a @samp{Preview} menu.
|
|
||||||
|
|
||||||
For site-wide activation in GNU Emacs, see
|
|
||||||
@xref{Advice for package providers}.
|
|
||||||
|
|
||||||
Once activated, the modes provided by @AUCTeX{} are used per default for
|
|
||||||
all supported file types, namely @code{plain-tex-mode}, @code{latex-mode},
|
|
||||||
@code{doctex-mode} and @code{texinfo-mode}. This might not match your
|
|
||||||
preference. You can have control over which @AUCTeX{} mode is activated
|
|
||||||
per file types by @code{TeX-modes} option. For example, you can use Emacs
|
|
||||||
built-in @code{plain-tex-mode} for plain @TeX{} files while you can use
|
|
||||||
@AUCTeX{} @code{LaTeX-mode} for @LaTeX{} files.
|
|
||||||
|
|
||||||
@defopt TeX-modes
|
|
||||||
List of Emacs built-in @TeX{} modes redirected to @AUCTeX{} modes. If you
|
|
||||||
prefer a particular built-in mode over @AUCTeX{} mode, remove it from this
|
|
||||||
list. Type
|
|
||||||
@example
|
|
||||||
@kbd{M-x customize-option @key{RET} TeX-modes @key{RET}}
|
|
||||||
@end example
|
|
||||||
@noindent
|
|
||||||
to manipulate the contents of @code{TeX-modes}.
|
|
||||||
@end defopt
|
|
||||||
|
|
||||||
Don't remove @code{tex-mode} from @code{TeX-modes} unless you set
|
|
||||||
@code{TeX-modes} empty to disable @AUCTeX{} completely, otherwise it
|
|
||||||
results in inconsistent behavior.
|
|
||||||
|
|
||||||
On Emacs 29 and later, @AUCTeX{} uses either
|
|
||||||
@code{major-mode-remap-defaults} or @code{major-mode-remap-alist} for
|
|
||||||
redirection. But we recommend not to customize them directly because the
|
|
||||||
customization code for @code{TeX-modes} takes care of some other
|
|
||||||
compatibility issues.
|
|
||||||
|
|
||||||
When there is a site-wide installation of @AUCTeX{} and you don't want to
|
|
||||||
use it, you can disable it by
|
|
||||||
@lisp
|
|
||||||
(push '(auctex nil) package-load-list)
|
|
||||||
@end lisp
|
|
||||||
@noindent
|
|
||||||
in your early init file (@pxref{Early Init File,,,emacs}). (We
|
|
||||||
recommend this treatment over setting @code{TeX-modes} to @code{nil},
|
|
||||||
because it doesn't leave unused autoloads persisted.)
|
|
||||||
|
|
||||||
It is no longer possible to disable the site-wide installation by
|
|
||||||
@lisp
|
|
||||||
(unload-feature 'tex-site)
|
|
||||||
@end lisp
|
|
||||||
@noindent
|
|
||||||
, so don't use it. This was the instruction described in former versions
|
|
||||||
of this document, but now it causes error.
|
|
||||||
|
|
||||||
@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
|
|
||||||
the @ref{Activating the package, previous node}.
|
|
||||||
|
|
||||||
So if you have users that don't want to use the preinstalled @AUCTeX{},
|
|
||||||
they can easily get rid of it. Installing @AUCTeX{} as site-wide
|
|
||||||
default is therefore a good choice.
|
|
||||||
|
|
||||||
You can install @acronym{ELPA} @AUCTeX{} package under a
|
|
||||||
directory listed in @code{package-directory-list} to have site-wide
|
|
||||||
default.
|
|
||||||
|
|
||||||
@node Using @AUCTeX{} from @acronym{ELPA}-devel
|
|
||||||
@section Using @AUCTeX{} from @acronym{ELPA}-devel
|
|
||||||
|
|
||||||
It is possible to use the latest development version of @AUCTeX{}
|
|
||||||
conveniently as a package installed from @acronym{GNU}-devel
|
|
||||||
@acronym{ELPA}. This package tracks the latest change in @AUCTeX{} Git
|
|
||||||
repository and is intended for brave users who want to test the
|
|
||||||
distribution and report possible issues. The following addition to
|
|
||||||
@code{user-init-file} instructs Emacs to change the archive @AUCTeX{} is
|
|
||||||
installed from:
|
|
||||||
@lisp
|
|
||||||
(add-to-list 'package-archives
|
|
||||||
'("elpa-devel" . "https://elpa.gnu.org/devel/") t)
|
|
||||||
(setq package-archive-priority
|
|
||||||
'(("elpa" . 10)
|
|
||||||
("elpa-devel" . 5)))
|
|
||||||
(setq package-pinned-packages
|
|
||||||
'((auctex . "elpa-devel")))
|
|
||||||
@end lisp
|
|
||||||
|
|
||||||
@noindent
|
|
||||||
In a nutshell, the code adds the new archive to the list of know archives
|
|
||||||
under the name @samp{elpa-devel}, gives it a lower priority than the
|
|
||||||
regular archive, and instructs Emacs to fetch only @AUCTeX{} from the new
|
|
||||||
archive and don't bother with other packages installed.
|
|
||||||
|
|
||||||
@node Using @AUCTeX{} from local Git repo
|
|
||||||
@section Using @AUCTeX{} from local Git repo
|
|
||||||
|
|
||||||
It is also possible to use @AUCTeX{}
|
|
||||||
directly from a local Git repository. Let's assume you have your Git
|
|
||||||
repositories under @samp{~/development/}.
|
|
||||||
|
|
||||||
First, you have to fetch a copy of the @AUCTeX{} Git repository. In a
|
|
||||||
shell, change directory to @samp{~/development/} and do:
|
|
||||||
@example
|
|
||||||
git clone https://git.savannah.gnu.org/git/auctex.git
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Now change directory to @samp{~/development/auctex} and run
|
|
||||||
@example
|
|
||||||
make
|
|
||||||
@end example
|
|
||||||
@noindent
|
|
||||||
|
|
||||||
Now you have to tell Emacs about the plan. Put the following code
|
|
||||||
in your init file:
|
|
||||||
@lisp
|
|
||||||
(load "~/development/auctex/auctex-autoloads.el" nil t t)
|
|
||||||
(with-eval-after-load 'info
|
|
||||||
(add-to-list 'Info-additional-directory-list
|
|
||||||
"~/development/auctex/doc"))
|
|
||||||
@end lisp
|
|
||||||
@noindent
|
|
||||||
and you're finished.
|
|
||||||
|
|
||||||
Note for @samp{use-package} users: you can wrap the above recipe with
|
|
||||||
@code{use-package} like this:
|
|
||||||
@lisp
|
|
||||||
(use-package auctex
|
|
||||||
:init
|
|
||||||
(load "~/development/auctex/auctex-autoloads.el" nil t t)
|
|
||||||
(with-eval-after-load 'info
|
|
||||||
(add-to-list 'Info-additional-directory-list
|
|
||||||
"~/development/auctex/doc")))
|
|
||||||
@end lisp
|
|
||||||
|
|
||||||
@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 installation of @AUCTeX{}. Any further customization can be
|
|
||||||
done with customization buffers directly in Emacs. Just type @kbd{M-x
|
|
||||||
customize-group @key{RET} AUCTeX @key{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 options with a special significance. They are
|
|
||||||
accessible directly by typing @kbd{M-x customize-option @key{RET} @var{option}
|
|
||||||
@key{RET}}.
|
|
||||||
|
|
||||||
@defopt 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 @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 @command{kpsewhich}.
|
|
||||||
In this case you normally don't have to alter anything.
|
|
||||||
|
|
||||||
Note that @code{TeX-auto-generate-global} is not so smart and it can
|
|
||||||
introduce unexpected side effects as discussed in
|
|
||||||
@uref{https://lists.gnu.org/r/auctex/2021-01/msg00037.html}.
|
|
||||||
@end defopt
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "auctex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
@include macros.texi
|
|
||||||
@ifset rawfile
|
|
||||||
@paragraphindent none
|
|
||||||
This is the README file for the AUCTeX distribution.
|
|
||||||
|
|
||||||
@quotation
|
|
||||||
Copyright (C) 2008, 2017, 2018, 2024 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.
|
|
||||||
|
|
||||||
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}}.
|
|
||||||
@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'.
|
|
||||||
|
|
||||||
@AUCTeX{} is a package distributed at @acronym{ELPA}, Emacs Lisp Package
|
|
||||||
Archive. You can manage it in Emacs package manager.
|
|
||||||
@ifclear rawfile
|
|
||||||
(@pxref{Packages,,,emacs})
|
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
@acronym{WWW} users may want to check out the @AUCTeX{} page at
|
|
||||||
@url{https://www.gnu.org/software/auctex/} and
|
|
||||||
@url{https://elpa.gnu.org/packages/auctex.html}.
|
|
||||||
|
|
||||||
If you are considering upgrading @AUCTeX{}, the recent changes are
|
|
||||||
described on the latter of the above @acronym{WWW} sites.
|
|
||||||
@ifclear rawfile
|
|
||||||
You can see the same change logs in @file{NEWS.org} file available at your
|
|
||||||
@acronym{ELPA} @AUCTeX{} contents directory, typically
|
|
||||||
@file{~/.emacs.d/elpa/auctex-x.y.z/} where @samp{x.y.z} is the version
|
|
||||||
number of the installed @AUCTeX{}.
|
|
||||||
@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}.
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
@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#{\savedTeX}
|
|
||||||
\gdef\LaTeX#{%
|
|
||||||
L\kern-.36em\raise.3ex\hbox{\sc{a}}\kern-.15em\TeX}
|
|
||||||
\gdef\previewlatex#{%
|
|
||||||
{\textsf preview-latex}}
|
|
||||||
\gdef\fontlatex#{%
|
|
||||||
{\textsf font-latex}}
|
|
||||||
\gdef\AUCTeX#{AUC\TeX}
|
|
||||||
\gdef\ConTeXt#{%
|
|
||||||
Con\TeX{}t}
|
|
||||||
\toks0\expandafter{\indexnofonts
|
|
||||||
\def\TeX#{TeX}%
|
|
||||||
\def\LaTeX#{LaTeX}\def\previewlatex#{preview-latex}}
|
|
||||||
\xdef\indexnofonts{\the\toks0}
|
|
||||||
\ifx\commondummies\undefined \else
|
|
||||||
\toks0\expandafter{\commondummies
|
|
||||||
\def\TeX#{TeX}%
|
|
||||||
\def\LaTeX#1{LaTeX}\def\previewlatex#1{preview-latex}}
|
|
||||||
\xdef\commondummies{\the\toks0}
|
|
||||||
\fi
|
|
||||||
\ifx\definedummies\undefined \else
|
|
||||||
\toks0\expandafter{\definedummies
|
|
||||||
\def\TeX#{TeX}%
|
|
||||||
\def\LaTeX#{LaTeX}\def\previewlatex#{preview-latex}}
|
|
||||||
\xdef\definedummies{\the\toks0}
|
|
||||||
\fi
|
|
||||||
\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
|
|
||||||
|
|
@ -1,156 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
# -*- coding: iso-latin-1; -*-
|
|
||||||
|
|
||||||
# Autoconverter from preview.dtx to preview-dtxdoc.texi
|
|
||||||
|
|
||||||
# Author: Jan-Åke Larsson <jalar@mai.liu.se>
|
|
||||||
# Maintainer: auctex-devel@gnu.org
|
|
||||||
|
|
||||||
# Copyright (C) 2002, 2005, 2020, 2021 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 (<STDIN>) {
|
|
||||||
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 (<STDIN>) {
|
|
||||||
s/^%//;
|
|
||||||
s/\\%/%/g;
|
|
||||||
|
|
||||||
# Comment
|
|
||||||
s/\^\^A.*\n//;
|
|
||||||
|
|
||||||
# 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 $_;
|
|
||||||
}
|
|
||||||
|
|
@ -1,486 +0,0 @@
|
||||||
The 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
|
|
||||||
pst-pdf 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{[}
|
|
||||||
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*[@{[]@}][#1@{@}]@{\footnote@}
|
|
||||||
@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
|
|
||||||
|
|
@ -1,321 +0,0 @@
|
||||||
@c This is part of the preview-latex manual.
|
|
||||||
@c Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009
|
|
||||||
@c 2017, 2021-2025 Free Software Foundation, Inc.
|
|
||||||
@c See file preview-latex.texi for copying conditions.
|
|
||||||
@menu
|
|
||||||
* Introduction to FAQ::
|
|
||||||
* Requirements::
|
|
||||||
* Installation Trouble::
|
|
||||||
* Customization::
|
|
||||||
* Troubleshooting::
|
|
||||||
* Other formats::
|
|
||||||
@end menu
|
|
||||||
|
|
||||||
@node Introduction to FAQ, Requirements, Frequently Asked Questions, Frequently Asked Questions
|
|
||||||
@section Introduction
|
|
||||||
|
|
||||||
@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 Emacs is needed?
|
|
||||||
|
|
||||||
@previewlatex{} nominally requires @w{GNU Emacs} with a version of at
|
|
||||||
least 28.1.
|
|
||||||
|
|
||||||
@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{dvi*} (if you have @command{dvipng} or @command{dvisvgm} installed)
|
|
||||||
or @code{png}. This is the default and can be set via the
|
|
||||||
@samp{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 versions of Emacs around for macOS, and @previewlatex{}
|
|
||||||
is working with them, too.
|
|
||||||
|
|
||||||
With Windows, both native Emacs and Cygwin Emacs should work. However, it
|
|
||||||
is known that @url{https://miktex.org/,MiK@TeX{}} sometimes doesn't work
|
|
||||||
with @previewlatex{}. In that case, use
|
|
||||||
@url{https://tug.org/texlive/,@TeX{} Live} instead.
|
|
||||||
|
|
||||||
@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 @w{@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
|
|
||||||
|
|
||||||
@node Customization, Troubleshooting, Installation Trouble, Frequently Asked Questions
|
|
||||||
@section Customization
|
|
||||||
|
|
||||||
@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
|
|
||||||
@noindent
|
|
||||||
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
|
|
||||||
@noindent
|
|
||||||
does not accept a comma separated
|
|
||||||
list! Also note that by putting more and more
|
|
||||||
|
|
||||||
@example
|
|
||||||
\PreviewEnvironment@{...@}
|
|
||||||
@end example
|
|
||||||
@noindent
|
|
||||||
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
|
|
||||||
@noindent
|
|
||||||
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.
|
|
||||||
|
|
||||||
@subsection Does @previewlatex{} work with the TikZ package?
|
|
||||||
|
|
||||||
@previewlatex{} doesn't have support for the @code{tikzpicture}
|
|
||||||
environment built-in. It can be included manually by adding the lines:
|
|
||||||
@example
|
|
||||||
\usepackage[displaymath,sections,graphics,floats,textmath]@{preview@}
|
|
||||||
\PreviewEnvironment[@{[]@}]@{tikzpicture@}
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@noindent
|
|
||||||
to the document preamble.
|
|
||||||
|
|
||||||
Things get more complicated when the code inside the @code{tikzpicture}
|
|
||||||
environment contains @code{$ $} for inserting inline math and
|
|
||||||
@previewlatex{} is instructed to insert previews for it into the buffer.
|
|
||||||
In this case, you can disable previews for inline math by changing the
|
|
||||||
lines above to:
|
|
||||||
@example
|
|
||||||
\usepackage[displaymath,sections,graphics,floats
|
|
||||||
% textmath %% Don't preview inline math
|
|
||||||
]@{preview@}
|
|
||||||
\PreviewEnvironment[@{[]@}]@{tikzpicture@}
|
|
||||||
@end example
|
|
||||||
|
|
||||||
Another solution is to source out the TikZ pictures into an external file
|
|
||||||
which uses the @code{standalone} class, process them and insert them back
|
|
||||||
into the main file as figures with the @code{\includegraphics} macro. In
|
|
||||||
this case, previewing of inline math will work as usual.
|
|
||||||
|
|
||||||
@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
|
|
||||||
@noindent
|
|
||||||
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
|
|
||||||
@noindent
|
|
||||||
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
|
|
||||||
@pxref{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
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "preview-latex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,868 +0,0 @@
|
||||||
\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, 2017-2019, 2021 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
|
|
||||||
|
|
||||||
@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 referred 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{} (@xref{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}), it is run
|
|
||||||
through @code{preview-region}.
|
|
||||||
@kindex @kbd{C-c C-p C-p}
|
|
||||||
@findex preview-at-point
|
|
||||||
|
|
||||||
@item @kbd{@key{mouse-2}}
|
|
||||||
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{@key{mouse-3}}
|
|
||||||
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{C-c C-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.
|
|
||||||
|
|
||||||
Note that support for preamble cache is limited for @LaTeX{} variants.
|
|
||||||
c.f.@: @url{https://github.com/davidcarlisle/dpctex/issues/15}
|
|
||||||
@itemize @bullet
|
|
||||||
@item
|
|
||||||
Xe@LaTeX{} cannot use preamble cache at all. The reason is intrinsic in
|
|
||||||
Xe@LaTeX{}, so @previewlatex{} can't help.
|
|
||||||
@item
|
|
||||||
Lua@LaTeX{} works with preamble cache only when the preamble is simple
|
|
||||||
enough, i.e., when it doesn't load opentype fonts and it doesn't use lua
|
|
||||||
codes in preamble.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@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 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 @samp{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.
|
|
||||||
|
|
||||||
@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 @samp{Preview Latex} group.
|
|
||||||
@vindex preview-default-option-list
|
|
||||||
|
|
||||||
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}. Note that
|
|
||||||
the default behavior of @code{preview-auto-reveal} derives from the list
|
|
||||||
@code{preview-auto-reveal-commands} which can be customized as well.
|
|
||||||
|
|
||||||
@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
|
|
||||||
|
|
||||||
@vindex preview-default-option-list
|
|
||||||
@vindex preview-default-preamble
|
|
||||||
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-option-list} in the @samp{Preview Latex} group.
|
|
||||||
|
|
||||||
If it is not available there, you can add it to
|
|
||||||
@code{preview-default-preamble} also in the @samp{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
|
|
||||||
@vindex preview-default-option-list
|
|
||||||
|
|
||||||
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
|
|
||||||
@samp{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 ../latex/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
|
|
||||||
@code{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 @command{dvipng} or @command{dvisvgm} 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 @samp{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
|
|
||||||
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 (@xref{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-protect-point
|
|
||||||
This boolean variable determines whether previews generated on top of the
|
|
||||||
current point should be temporarily opened. Default value is @code{nil}.
|
|
||||||
|
|
||||||
@item preview-leave-open-previews-visible
|
|
||||||
This boolean variable determines whether to leave preview images visible
|
|
||||||
when they are opened.
|
|
||||||
|
|
||||||
There is a side effect in enabling this option. The preview image doesn't
|
|
||||||
turn into construction sign temporarily when you edit the underlying
|
|
||||||
@LaTeX{} code and regenerate the preview; it is just replaced by updated
|
|
||||||
image when ready. This behavior suppresses flicker in the appearance.
|
|
||||||
|
|
||||||
@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{preview-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 @samp{Preview Gs} for this.
|
|
||||||
|
|
||||||
Another noteworthy setting of @code{preview-image-type} is @samp{dvi*}: in
|
|
||||||
this case, a @acronym{DVI} conversion process will be run (for example
|
|
||||||
@command{dvipng}
|
|
||||||
@pindex dvipng
|
|
||||||
or @command{dvisvgm}) on the @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-dvi*-command
|
|
||||||
will determine the command to run for the conversion, and it is expected that
|
|
||||||
|
|
||||||
@item preview-dvi*-image-type
|
|
||||||
images get produced (@samp{dvipng} might be configured for PNG or other
|
|
||||||
image and @samp{dvisvgm} produces SVG images that you can use if your
|
|
||||||
Emacs supports them). You will notice that
|
|
||||||
@code{preview-gs-image-type-alist} contains an entry for @code{dvi*}: this
|
|
||||||
actually has nothing to do with the @acronym{DVI} conversion itself but
|
|
||||||
specifies the image type and Ghostscript device option to use when such
|
|
||||||
conversion can't be done. 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 the @acronym{DVI}
|
|
||||||
conversion process finishes.
|
|
||||||
|
|
||||||
Note for p@LaTeX{} and up@LaTeX{} users: It is known that @command{dvipng}
|
|
||||||
and @command{dvisvgm} are not compatible with p@LaTeX{} and up@LaTeX{}.
|
|
||||||
If @code{preview-image-type} is set to @samp{dvi*} and (u)p@LaTeX{} is
|
|
||||||
used, the @acronym{DVI} conversion process just fails and @previewlatex{}
|
|
||||||
falls back on Dvips and Ghostscript.
|
|
||||||
|
|
||||||
@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{\AtBeginDocument@{\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 @samp{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
|
|
||||||
|
|
@ -1,187 +0,0 @@
|
||||||
@include macros.texi
|
|
||||||
@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
|
|
||||||
* Font problems with Dvips::
|
|
||||||
* Too small bounding boxes::
|
|
||||||
* x-symbol interoperation::
|
|
||||||
* Middle-clicks paste instead of toggling::
|
|
||||||
* No images are displayed with gs 9.27 and earlier::
|
|
||||||
* Black texts are too hard to read on dark background::
|
|
||||||
@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.
|
|
||||||
|
|
||||||
@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-option @key{RET} preview-fast-dvips-command @key{RET}}
|
|
||||||
@end display
|
|
||||||
@noindent
|
|
||||||
and
|
|
||||||
@display
|
|
||||||
@kbd{M-x customize-option @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 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'
|
|
||||||
(@pxref{The Emacs interface}).
|
|
||||||
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
|
|
||||||
(@pxref{The LaTeX style file}),
|
|
||||||
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.
|
|
||||||
|
|
||||||
@c FIXME: It seems that x-symbol is much outdated.
|
|
||||||
@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 @samp{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 @samp{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{isearch.el}
|
|
||||||
is known to be affected 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.
|
|
||||||
|
|
||||||
@node No images are displayed with gs 9.27 and earlier
|
|
||||||
@section No images are displayed with gs 9.27 and earlier
|
|
||||||
|
|
||||||
@previewlatex{} tries to adjust the foreground and background colors of
|
|
||||||
generated images to those of Emacs. Unfortunately, incompatible changes
|
|
||||||
introduced in Ghostscript 9.27 breaks the traditional method partially,
|
|
||||||
and @previewlatex{} can display no images under certain circumstances.
|
|
||||||
|
|
||||||
A new method implemented alternatively works only with Ghostscript >
|
|
||||||
9.27. If you are using Ghostscript 9.27 or earlier, customize the
|
|
||||||
option @code{preview-pdf-adjust-color-method}.
|
|
||||||
|
|
||||||
@defopt preview-pdf-adjust-color-method
|
|
||||||
Method to adjust colors of images generated from @acronym{PDF}. It is
|
|
||||||
not consulted when the @LaTeX{} command produces @acronym{DVI} files.
|
|
||||||
|
|
||||||
When the option is @code{t} (default), @previewlatex{} adjusts the FG
|
|
||||||
and BG colors of the generated images by the new method. This method
|
|
||||||
requires that Ghostscript has working @code{DELAYBIND} feature, thus is
|
|
||||||
invalid with gs 9.27 (and possibly < 9.27).
|
|
||||||
|
|
||||||
When it is @code{compatible}, @previewlatex{} uses traditional method.
|
|
||||||
This option is provided for backward compatibility with older gs. See
|
|
||||||
the below explanation for detail.
|
|
||||||
|
|
||||||
When @code{nil}, no adjustment is done and ``black on white'' image is
|
|
||||||
generated regardless of Emacs color. This is provided for fallback for
|
|
||||||
gs 9.27 users with customized foreground color. See the below
|
|
||||||
explanation for detail.
|
|
||||||
|
|
||||||
When the @LaTeX{} command produces @acronym{PDF} rather than
|
|
||||||
@acronym{DVI} and Emacs has non-trivial foreground color, the
|
|
||||||
traditional method (@code{compatible}) makes gs >= 9.27 to stop with
|
|
||||||
error. Here, ``non-trivial foreground color'' includes customized
|
|
||||||
themes.
|
|
||||||
|
|
||||||
If you use such non-trivial foreground color and the version of
|
|
||||||
Ghostscript equals to 9.27, you have two options:
|
|
||||||
@enumerate
|
|
||||||
@item
|
|
||||||
Choose the value @code{compatible} and customize
|
|
||||||
@code{preview-reference-face} to have default (black) foreground color.
|
|
||||||
This makes the generated image almost non-readable on dark background,
|
|
||||||
so the next option would be your only choice in that case.
|
|
||||||
@item
|
|
||||||
Choose the value @code{nil}, which forces plain ``black on white''
|
|
||||||
appearance for the generated image. You can at least read what are
|
|
||||||
written in the image although they may not match with your Emacs color
|
|
||||||
well.
|
|
||||||
@end enumerate
|
|
||||||
|
|
||||||
The default value used to be @code{compatible} for short period before
|
|
||||||
Ghostscript 9.50 was released but now is @code{t}.
|
|
||||||
@end defopt
|
|
||||||
|
|
||||||
@node Black texts are too hard to read on dark background
|
|
||||||
@section Black texts are too hard to read on dark background
|
|
||||||
Unfortunately, foreground color adjustment discussed in the previous node
|
|
||||||
doesn't work for Xe@LaTeX{} for technical reason. The texts are always
|
|
||||||
rendered as black in the preview images, so it's almost impossible to read
|
|
||||||
them on dark background. Hence Xe@LaTeX{} users who like dark background
|
|
||||||
in Emacs frame should customize @code{preview-pdf-adjust-color-method} to
|
|
||||||
@code{nil}.
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "preview-latex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,222 +0,0 @@
|
||||||
@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}, @samp{dvisvgm}, 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
|
|
||||||
Successful installation automatically activates the package at Emacs
|
|
||||||
startup.
|
|
||||||
|
|
||||||
If you 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{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. 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.
|
|
||||||
|
|
||||||
@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-option @key{RET} preview-image-type @key{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. @samp{dvipng} is
|
|
||||||
included in standard @w{TeX Live} distribution.
|
|
||||||
|
|
||||||
@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.pdf}.
|
|
||||||
|
|
||||||
Detailed documentation for the @LaTeX{} style used for extracting the
|
|
||||||
preview images is placed in @file{preview.pdf} in a suitable directory
|
|
||||||
during installation; on typical @w{@TeX{} Live}-based systems,
|
|
||||||
|
|
||||||
@example
|
|
||||||
texdoc preview
|
|
||||||
@end example
|
|
||||||
|
|
||||||
@noindent
|
|
||||||
will display it.
|
|
||||||
|
|
||||||
@node Availability, Contacts, More documentation, Introduction
|
|
||||||
@section Availability
|
|
||||||
@cindex Download
|
|
||||||
@cindex @sc{git} access
|
|
||||||
|
|
||||||
The @previewlatex{} project is now part of @AUCTeX{} and accessible as
|
|
||||||
part of the @uref{https://savannah.gnu.org/projects/auctex,@AUCTeX{}
|
|
||||||
project page}.
|
|
||||||
|
|
||||||
Anonymous Git is available at @uref{git://git.savannah.gnu.org/auctex.git}
|
|
||||||
or @uref{https://git.savannah.gnu.org/git/auctex.git}. You can also
|
|
||||||
@uref{https://git.savannah.gnu.org/cgit/auctex.git,browse the repository}
|
|
||||||
via web interface.
|
|
||||||
|
|
||||||
@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{https://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.
|
|
||||||
@ifclear rawfile
|
|
||||||
Take a look at the @ref{ToDo} list for suggestions in that area.
|
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "preview-latex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,123 +0,0 @@
|
||||||
@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 @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 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 @previewlatex{} 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
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "preview-latex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,305 +0,0 @@
|
||||||
@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 installation
|
|
||||||
instructions in this manual (@pxref{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.
|
|
||||||
|
|
||||||
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
|
|
||||||
@noindent
|
|
||||||
into your init file. Finally, if you often use @code{\include} or
|
|
||||||
@code{\input}, you should make @AUCTeX{} aware of the multifile
|
|
||||||
document structure. You can do this by inserting
|
|
||||||
|
|
||||||
@lisp
|
|
||||||
(setq-default TeX-master nil)
|
|
||||||
@end lisp
|
|
||||||
@noindent
|
|
||||||
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. This is enabled by default.
|
|
||||||
You can disable it locally by typing @kbd{M-x font-lock-mode @key{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 @key{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 @key{up} and
|
|
||||||
@key{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 @key{RET}} will give you a prompt that asks
|
|
||||||
you for a @LaTeX{} macro. You can use @key{TAB} for completion, or the
|
|
||||||
@key{up}/@key{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-@key{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 @emph{emphasized} @samp{\emph@{@point{}@}} text.
|
|
||||||
|
|
||||||
@item C-c C-f C-s
|
|
||||||
@kindex C-c C-f C-s
|
|
||||||
@cindex @code{\textsl}
|
|
||||||
Insert @slanted{slanted} @samp{\textsl@{@point{}@}} text.
|
|
||||||
|
|
||||||
@item C-c C-f C-r
|
|
||||||
@kindex C-c C-f C-r
|
|
||||||
@cindex @code{\textrm}
|
|
||||||
Insert @r{roman} @samp{\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 an
|
|
||||||
active 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.
|
|
||||||
|
|
||||||
Actually, there is another command which comes in handy to compile
|
|
||||||
documents: type @kbd{C-c C-a} (@code{TeX-command-run-all}) and @AUCTeX{}
|
|
||||||
will compile the document for you until it is ready and then run the
|
|
||||||
viewer. This is the same as issuing repeatedly @kbd{C-c C-c} and
|
|
||||||
letting @AUCTeX{} guess the next command to run.
|
|
||||||
|
|
||||||
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 @option{--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 C-c C-t C-p
|
|
||||||
@kindex C-c C-t C-p
|
|
||||||
This command toggles between @acronym{DVI} and @acronym{PDF} output
|
|
||||||
|
|
||||||
@item C-c C-t C-i
|
|
||||||
@kindex C-c C-t C-i
|
|
||||||
toggles interactive mode
|
|
||||||
|
|
||||||
@item C-c C-t C-s
|
|
||||||
@kindex C-c C-t C-s
|
|
||||||
toggles Sync@TeX{} (or source specials) support
|
|
||||||
|
|
||||||
@item C-c C-t C-o
|
|
||||||
@kindex C-c C-t C-o
|
|
||||||
toggles usage of Omega/lambda.
|
|
||||||
|
|
||||||
@end table
|
|
||||||
|
|
||||||
There is also another possibility: compile the document with
|
|
||||||
@command{tex} (or @command{latex}) and then convert the resulting
|
|
||||||
@acronym{DVI} file to @acronym{PDF} using
|
|
||||||
@command{dvips}--@command{ps2pdf} sequence or @command{dvipdfmx} command.
|
|
||||||
If you want to go by this route, customize @code{TeX-PDF-from-DVI} option.
|
|
||||||
Then @AUCTeX{} will suggest you to run the appropriate command when
|
|
||||||
you type @kbd{C-C C-c}. For details, see @ref{Processor Options}.
|
|
||||||
|
|
||||||
@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
|
|
||||||
occurred 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 occurred. 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-bad-boxes}) you can toggle whether
|
|
||||||
@AUCTeX{} should notify you of overfull and underfull boxes in addition
|
|
||||||
to regular errors.
|
|
||||||
|
|
||||||
Issue @kbd{M-x TeX-error-overview @key{RET}} to see a nicely formatted list of
|
|
||||||
all errors and warnings reported by the compiler.
|
|
||||||
|
|
||||||
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 Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "auctex"
|
|
||||||
@c End:
|
|
||||||
Binary file not shown.
|
|
@ -1,683 +0,0 @@
|
||||||
% Reference Card for AUCTeX version 13.3
|
|
||||||
%**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{13.3}
|
|
||||||
\def\year{2024}
|
|
||||||
\def\version{January \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-1994, 2004-2006, 2008, 2010,}
|
|
||||||
\centerline{2012, 2014-2017, 2019-2024 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\var#1{{\tt #1}}
|
|
||||||
\def\file#1{{\tt #1}}
|
|
||||||
|
|
||||||
\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{Previous error in \TeX/\LaTeX\ session}{M-g p}
|
|
||||||
\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}
|
|
||||||
\key{Compile all and view output file}{C-c C-a}
|
|
||||||
|
|
||||||
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}{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{Find documentation}{C-c ?}
|
|
||||||
\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 \<key>}
|
|
||||||
|
|
||||||
\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
|
|
||||||
\var{LaTeX-math-abbrev-prefix}, default is ``\kbd{`}''.
|
|
||||||
|
|
||||||
You can define your own math mode commands by setting the variable
|
|
||||||
\var{LaTeX-math-list} before enabling \var{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{J}
|
|
||||||
\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\hat x{^}
|
|
||||||
\keycs\nabla{N}
|
|
||||||
\keycs\infty{I}
|
|
||||||
\keycs\forall{A}
|
|
||||||
\keycs\exists{E}
|
|
||||||
\keycs\not \ {/}
|
|
||||||
\keycs\in{i}
|
|
||||||
\keycs\times{*}
|
|
||||||
\keycs\cdot{.}
|
|
||||||
\keycs\colon{:}
|
|
||||||
\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\vee{|}
|
|
||||||
\keycs\wedge{\&}
|
|
||||||
|
|
||||||
\section{Miscellaneous}
|
|
||||||
|
|
||||||
\key{cal letters}{c \<letter>}
|
|
||||||
|
|
||||||
\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
|
|
||||||
init file (usually \file{\string~/.emacs.d/init.el}):
|
|
||||||
\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
|
|
||||||
ring in a form fit for sending in Emacs' {\tt 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\var{#}\tabskip0pt\cr
|
|
||||||
\noalign{\medskip If you have dvipng available:}
|
|
||||||
Set to \kbd{dvi*}&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 \file{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
|
|
||||||
\file{preview.sty} explicitly) or in \file{prauctex.cfg} (which should
|
|
||||||
load the system \file{prauctex.cfg} first). Commands:
|
|
||||||
|
|
||||||
\halign to \hsize{\tabskip=1ptplus1fil\relax#\hfil&\hfil\kbd{#}\tabskip0pt\cr
|
|
||||||
Preview macro&\string\PreviewMacro[\{\<args>\}]\{\<macro>\}\cr
|
|
||||||
Preview env&\string\PreviewEnvironment[\{\<args>\}]\{\<env>\}\cr
|
|
||||||
Skip macro&\string\PreviewMacro*[\{\<args>\}]\{\<macro>\}\cr
|
|
||||||
Skip env&\string\PreviewEnvironment*[\{\<args>\}]\{\<env>\}\cr
|
|
||||||
\noalign{\smallskip Diverting material from float environments}
|
|
||||||
Snarf stuff&\string\PreviewSnarfEnvironment[\{\<args>\}]\{\<env>\}\cr
|
|
||||||
}
|
|
||||||
|
|
||||||
Values to be used within \<args>:
|
|
||||||
\halign to
|
|
||||||
\hsize{\tabskip=1ptplus1fil\relax#\hfil&\hfil\kbd{#}\tabskip0pt\cr
|
|
||||||
Optional argument&[]\cr
|
|
||||||
Mandatory argument&\{\}\cr
|
|
||||||
Optional star&*\cr
|
|
||||||
Conditionals&?\<token>\{\<if found>\}\{\<if not found>\}\cr
|
|
||||||
Skip next token&-\cr
|
|
||||||
Transformation&\#\{\<macro args>\}\{\<replacement>\}\cr
|
|
||||||
}
|
|
||||||
|
|
||||||
More options and explanations can be found in \file{preview.pdf} 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 \var{outline-minor-mode-prefix}, default
|
|
||||||
is \kbd{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 Emacs. To activate and make it interact with
|
|
||||||
AUCTeX, insert the following lines in \file{init.el}.
|
|
||||||
\vskip-3mm
|
|
||||||
\beginexample
|
|
||||||
(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 \kbd{
|
|
||||||
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-levels
|
|
||||||
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 init.el}
|
|
||||||
|
|
||||||
\vskip-4mm
|
|
||||||
\beginexample
|
|
||||||
(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:
|
|
||||||
|
|
@ -1,331 +0,0 @@
|
||||||
@c This is part of the AUCTeX Manual.
|
|
||||||
@c Copyright (C) 2004-2006, 2008, 2009, 2013-2015,
|
|
||||||
@c 2020-2024 Free Software Foundation, Inc.
|
|
||||||
@c See the file auctex.texi for copying conditions.
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
@node Mid-term Goals
|
|
||||||
@section Mid-term Goals
|
|
||||||
|
|
||||||
@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 Error help catalogs
|
|
||||||
|
|
||||||
Currently, the help for errors is more or less hardwired into
|
|
||||||
@file{latex.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 Ref@TeX{}
|
|
||||||
|
|
||||||
Macro cross references should also be usable for document navigation
|
|
||||||
using Ref@TeX{}.
|
|
||||||
|
|
||||||
@item Fix remove-style feature
|
|
||||||
|
|
||||||
Currently @code{TeX-remove-style} implementation isn't good. It is common
|
|
||||||
practice that major mode functions directly add macros and environments
|
|
||||||
via @code{TeX-add-symbols} and @code{LaTeX-add-environments}, but those
|
|
||||||
macros and environments are lost once @code{TeX-remove-style} runs. It is
|
|
||||||
necessary to run major mode function, by e.g.@: @code{normal-mode}, again
|
|
||||||
to recover them, but that makes no point in running
|
|
||||||
@code{TeX-remove-style} itself because major mode function kills all
|
|
||||||
buffer-local variables.
|
|
||||||
|
|
||||||
As of @AUCTeX{} 12.3, @code{TeX-remove-style} is no longer used by any
|
|
||||||
other codes.
|
|
||||||
|
|
||||||
@item Factor out syntax propertization from @file{font-latex.el}
|
|
||||||
|
|
||||||
Syntax propertization is implemented in @file{font-latex.el}. This means
|
|
||||||
that features which depend on syntax parse don't work well for
|
|
||||||
@file{tex-font.el} users and those who disable font lock.
|
|
||||||
|
|
||||||
Hence syntax propertization should be factored out from
|
|
||||||
@file{font-latex.el} and implemented as a major mode facility.
|
|
||||||
|
|
||||||
(Texinfo mode is an exception because it already has its own syntax
|
|
||||||
propertize function, which just copies the one available in Emacs built-in
|
|
||||||
texinfo mode.)
|
|
||||||
|
|
||||||
@item Add documentation
|
|
||||||
|
|
||||||
Following entries should be included in the document:
|
|
||||||
@itemize @minus
|
|
||||||
@item
|
|
||||||
Variable @code{TeX-translate-location-hook}
|
|
||||||
|
|
||||||
@item
|
|
||||||
How to use @code{TeX-auto-add-type}, as well as functions and variables
|
|
||||||
generated by that macro.
|
|
||||||
They should be covered in the node @ref{Hacking the Parser}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Usage of @ConTeXt{} mode
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@node Wishlist
|
|
||||||
@section Wishlist
|
|
||||||
|
|
||||||
@itemize @bullet
|
|
||||||
@item Enable syntactic font lock for verbatim constructs in @samp{docTeX}
|
|
||||||
mode
|
|
||||||
|
|
||||||
In @samp{docTeX} mode buffer, @samp{%} sign at the line beginning hinders
|
|
||||||
syntactic font lock of verbatim constructs. This should be improved.
|
|
||||||
|
|
||||||
@item Simplify tool bar implementation
|
|
||||||
|
|
||||||
The library @file{toolbar-x.el} was
|
|
||||||
developed as an abstraction layer to absorb difference between XEmacs
|
|
||||||
and @acronym{GNU} Emacs. Now that XEmacs is no longer supported, the
|
|
||||||
library, together with @file{tex-bar.el} as a whole, can be much
|
|
||||||
simplified (or even unified).
|
|
||||||
|
|
||||||
@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 Improvements to error reporting
|
|
||||||
|
|
||||||
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 @samp{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 @acronym{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
|
|
||||||
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
|
|
||||||
@email{tinnefeld@@irb.informatik.uni-dortmund.de}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Command to insert a macrodefinition in the preamble, without moving
|
|
||||||
point from the current location. Suggested by
|
|
||||||
"Jeffrey C. Ely" @email{ely@@nwu.edu}.
|
|
||||||
|
|
||||||
@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 @email{Remo.Badii@@psi.ch}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Create template for (first) line of tabular environment.
|
|
||||||
|
|
||||||
@item
|
|
||||||
@c FIXME: Already fixed?
|
|
||||||
I think prompting for the master is the intended behavior. It
|
|
||||||
corresponds to a `shared' value for @code{TeX-master}.
|
|
||||||
|
|
||||||
There should probably be a `none' value which wouldn't query for the
|
|
||||||
master, but instead disable all features that relies on @code{TeX-master}.
|
|
||||||
|
|
||||||
This default value for @code{TeX-master} could then be controlled with mapping
|
|
||||||
based on the extension.
|
|
||||||
|
|
||||||
@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 @email{peta@@cim.mcgill.ca}.
|
|
||||||
|
|
||||||
@item
|
|
||||||
Make @AUCTeX{} work with @samp{crypt++}. Suggested by Chris Moore
|
|
||||||
@email{Chris.Moore@@src.bae.co.uk}.
|
|
||||||
|
|
||||||
@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
|
|
||||||
@c FIXME: Already achieved?
|
|
||||||
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 @email{rbhumbla@@ucsd.edu}.
|
|
||||||
|
|
||||||
@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
|
|
||||||
@email{interran@@uluru.Stanford.EDU}.
|
|
||||||
|
|
||||||
@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
|
|
||||||
Outline should be (better) supported in @TeX{} mode.
|
|
||||||
|
|
||||||
At least, support headers, trailers, as well as @code{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
|
|
||||||
Use markers in @code{TeX-error-list} to remember buffer positions in
|
|
||||||
order to be more robust with regard to line numbers and changed files.
|
|
||||||
|
|
||||||
@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 style hooks automatically generated by parsing files for
|
|
||||||
@file{example.dtx}, @file{example.sty}, @file{example.drv} and
|
|
||||||
@file{example.bib} all clash. Bad. Clash with hand-written style hooks
|
|
||||||
should be removed by dialect discrimination --- to be checked.
|
|
||||||
|
|
||||||
@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]+\\|.\\)"} ---
|
|
||||||
@email{thiemann@@informatik.uni-tuebingen.de} 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
|
|
||||||
@c FIXME: Is support for table environment really necessary?
|
|
||||||
Correct indentation for tabbing, table, and math environments.
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@c Local Variables:
|
|
||||||
@c mode: Texinfo
|
|
||||||
@c TeX-master: "auctex"
|
|
||||||
@c End:
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
@set VERSION 14.1.2
|
|
||||||
@set UPDATED 2026-01-14_16:20:49
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
% Copyright (C) Free Software Foundation, Inc.
|
|
||||||
% License: GNU GPLv3 or later
|
|
||||||
|
|
||||||
\documentclass{article}
|
|
||||||
\usepackage{crimson,listings,tikz,geometry}
|
|
||||||
\geometry{paperwidth=7.5mm,paperheight=7.5mm}
|
|
||||||
\definecolor{bg}{HTML}{8596B0}\pagecolor{bg}
|
|
||||||
\definecolor{fg}{HTML}{F0F0EA}\color{fg}
|
|
||||||
\lstset{basicstyle=\color{fg!65!bg}\ttfamily,
|
|
||||||
commentstyle=\itshape,language={[LaTeX]TeX}}
|
|
||||||
\begin{document}
|
|
||||||
\begin{tikzpicture}[overlay]
|
|
||||||
\coordinate (a) at (-7.26pt,1.89098pt) {};
|
|
||||||
\node[inner sep=0pt] at (-0.265,0.07)
|
|
||||||
{\resizebox{6.4mm}{!}
|
|
||||||
{\lstinputlisting{\jobname}}};
|
|
||||||
\node[inner sep=0pt,align=center] at (a)
|
|
||||||
{A\kern-0.05emU\kern-0.03emC\\[-0.7ex]%
|
|
||||||
T\kern-.15em\lower.46ex%
|
|
||||||
\hbox{\color[HTML]{CAE674}E}\kern-.06emX};
|
|
||||||
\end{tikzpicture}
|
|
||||||
\end{document}
|
|
||||||
|
|
||||||
%%% Local Variables:
|
|
||||||
%%% mode: latex
|
|
||||||
%%% TeX-master: t
|
|
||||||
%%% End:
|
|
||||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -1,207 +0,0 @@
|
||||||
/* 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. "};
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
/* 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 ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * dropdown_xpm[] = {
|
|
||||||
"10 24 3 1",
|
|
||||||
" c None s backgroundToolBarColor",
|
|
||||||
". c #292C29",
|
|
||||||
"+ c #B3B3B3",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" . . ",
|
|
||||||
" ... ... ",
|
|
||||||
" ...... ",
|
|
||||||
" .... ",
|
|
||||||
" .. ",
|
|
||||||
" ++ ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
/* 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 "};
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
||||||
/* 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 "};
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" .++. ",
|
|
||||||
" +@@@@+ ",
|
|
||||||
" #.@@@@.# ",
|
|
||||||
" +@@@@@@+ ",
|
|
||||||
" #.@@@@@@.# ",
|
|
||||||
" +@@@++@@@+ ",
|
|
||||||
" #.@@@++@@@.# ",
|
|
||||||
" +@@@@++@@@@+ ",
|
|
||||||
" #.@@@@++@@@@.# ",
|
|
||||||
" +@@@@@++@@@@@+ ",
|
|
||||||
" #.@@@@@++@@@@@.# ",
|
|
||||||
" +@@@@@@$$@@@@@@+ ",
|
|
||||||
" #.@@@@@@%%@@@@@@.# ",
|
|
||||||
" +@@@@@@@@@@@@@@@@+ ",
|
|
||||||
" .#@@@@@@@++@@@@@@@#. ",
|
|
||||||
" &@@@@@@@@++@@@@@@@@& ",
|
|
||||||
" &@@@@@@@@@@@@@@@@@@& ",
|
|
||||||
" +@@@@@@@@@@@@@@@@+ ",
|
|
||||||
" .++++++++++++++. ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
/* 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%*%% ",
|
|
||||||
" %%% ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
||||||
/* 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 "};
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ",
|
|
||||||
" ...+ . . . ",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . @ @ . ",
|
|
||||||
" # . . $%%$ . ",
|
|
||||||
" #& . . @@ . ",
|
|
||||||
" #& ...+ ** . ",
|
|
||||||
" = ",
|
|
||||||
" - ",
|
|
||||||
" # ",
|
|
||||||
" - ; ",
|
|
||||||
" ;- ",
|
|
||||||
" ;-- ",
|
|
||||||
" >> ",
|
|
||||||
" ,',)),', ",
|
|
||||||
" !!!~ ~!!~ '))){{{] ",
|
|
||||||
" ! ! ! ! ,))^{/(, ",
|
|
||||||
" ! ! ! >))^,,_''>",
|
|
||||||
" !!!~ ~!!~ >){{,:_']>",
|
|
||||||
" ! ! ,{/__{], ",
|
|
||||||
" ! ! ! '{('']]] ",
|
|
||||||
" ! ~!!~ ,],'],], ",
|
|
||||||
" >> "};
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" .++. ",
|
|
||||||
" @##@. ",
|
|
||||||
" +$###+ ",
|
|
||||||
" ..#++#.. ",
|
|
||||||
" +$#++#$+ ",
|
|
||||||
" ..##++##.. ",
|
|
||||||
" +$##%%##$+ ",
|
|
||||||
" ..###&&###.. ",
|
|
||||||
" +####**###$+ ",
|
|
||||||
" +##########+ ",
|
|
||||||
" =--------= ",
|
|
||||||
" ",
|
|
||||||
" ;; ",
|
|
||||||
" >,>''>,> ",
|
|
||||||
" ,''')))! ",
|
|
||||||
" >''~){]> ",
|
|
||||||
" ;''~>>^,,;",
|
|
||||||
" ;'))>/^,!;",
|
|
||||||
" >){^^)!> ",
|
|
||||||
" ,)],,!!! ",
|
|
||||||
" >!>,!>!> ",
|
|
||||||
" ;; "};
|
|
||||||
|
|
@ -1,205 +0,0 @@
|
||||||
/* 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. "};
|
|
||||||
|
|
@ -1,203 +0,0 @@
|
||||||
/* 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. "};
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ...+ . . . ",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . @ @ . ",
|
|
||||||
" . . #$$# . ",
|
|
||||||
" . . @@ . ",
|
|
||||||
" %% ...+ && . ",
|
|
||||||
" % % ",
|
|
||||||
" % % ",
|
|
||||||
" % % %% ",
|
|
||||||
" %% % % ",
|
|
||||||
"%* % % % ",
|
|
||||||
"%** % %% % % ",
|
|
||||||
"%** %%%* %% ",
|
|
||||||
" % % %** % == ",
|
|
||||||
" %% %** % %-%;;%-% ",
|
|
||||||
" % % -;;;>>>, ",
|
|
||||||
" %% %;;'>)!% ",
|
|
||||||
" =;;'%%~--=",
|
|
||||||
" =;>>%{~-,=",
|
|
||||||
" %>)~~>,% ",
|
|
||||||
" ->!--,,, ",
|
|
||||||
" %,%-,%,% ",
|
|
||||||
" == "};
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ...+ ...+ ...+",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . . . . ",
|
|
||||||
" ...+ . . ..+ ",
|
|
||||||
" . . . . ",
|
|
||||||
" . . . . ",
|
|
||||||
" @@ . ...+ . ",
|
|
||||||
" @ @ ",
|
|
||||||
" @ @ ",
|
|
||||||
" @ @ @@ ",
|
|
||||||
" @@ @ @ ",
|
|
||||||
"@# @ @ @ ",
|
|
||||||
"@## @ @@ @ @ ",
|
|
||||||
"@## @@@# @@ ",
|
|
||||||
" @ @ @## @ $$ ",
|
|
||||||
" @@ @## @ @%@&&@%@ ",
|
|
||||||
" @ @ %&&&***= ",
|
|
||||||
" @@ @&&-*;>@ ",
|
|
||||||
" $&&-@@,%%$",
|
|
||||||
" $&**@',%=$",
|
|
||||||
" @*;,,*=@ ",
|
|
||||||
" %*>%%=== ",
|
|
||||||
" @=@%=@=@ ",
|
|
||||||
" $$ "};
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ...+ +..+ ",
|
|
||||||
" . . . . ",
|
|
||||||
" . . . ",
|
|
||||||
" ...+ +..+ ",
|
|
||||||
" . . ",
|
|
||||||
" . . . ",
|
|
||||||
" @@ . +..+ ",
|
|
||||||
" @ @ ",
|
|
||||||
" @ @ ",
|
|
||||||
" @ @ @@ ",
|
|
||||||
" @@ @ @ ",
|
|
||||||
"@# @ @ @ ",
|
|
||||||
"@## @ @@ @ @ ",
|
|
||||||
"@## @@@# @@ ",
|
|
||||||
" @ @ @## @ $$ ",
|
|
||||||
" @@ @## @ @%@&&@%@ ",
|
|
||||||
" @ @ %&&&***= ",
|
|
||||||
" @@ @&&-*;>@ ",
|
|
||||||
" $&&-@@,%%$",
|
|
||||||
" $&**@',%=$",
|
|
||||||
" @*;,,*=@ ",
|
|
||||||
" %*>%%=== ",
|
|
||||||
" @=@%=@=@ ",
|
|
||||||
" $$ "};
|
|
||||||
|
|
@ -1,158 +0,0 @@
|
||||||
/* 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 @ % % % % ",
|
|
||||||
" @ @ @ @ ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
||||||
/* 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 ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
".+@########++@$ ",
|
|
||||||
" %@& .*@= ",
|
|
||||||
" $--$ ;% ",
|
|
||||||
" .@% >$ ",
|
|
||||||
" ,+= ",
|
|
||||||
" %@. ",
|
|
||||||
" $--$ ' ' ",
|
|
||||||
" &+* )!' '!)",
|
|
||||||
" *@$ ~!~ ",
|
|
||||||
" $#; ~!~ ",
|
|
||||||
" %, )!' '!)",
|
|
||||||
" >% ' ' ",
|
|
||||||
" ;#$ &$ ",
|
|
||||||
" .-. ${ ",
|
|
||||||
" ]; .], ",
|
|
||||||
" *]>>>>>>>>]++. ",
|
|
||||||
"${{{{{{{{{{{{* ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
/* 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",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
".+@########++@$ ",
|
|
||||||
" %@& .*@= ",
|
|
||||||
" $--$ ;% ",
|
|
||||||
" .@% >$ ",
|
|
||||||
" ,+= '",
|
|
||||||
" %@. ) ",
|
|
||||||
" $--$ )) ",
|
|
||||||
" &+* ')! )) ",
|
|
||||||
" *@$ )))) ",
|
|
||||||
" $#; !)) ",
|
|
||||||
" %, ')' ",
|
|
||||||
" >% ",
|
|
||||||
" ;#$ &$ ",
|
|
||||||
" .-. $~ ",
|
|
||||||
" {; .{, ",
|
|
||||||
" *{>>>>>>>>{++. ",
|
|
||||||
"$~~~~~~~~~~~~* ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "};
|
|
||||||
|
|
@ -1,206 +0,0 @@
|
||||||
/* 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. "};
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
/* 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 $$$$$"
|
|
||||||
};
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/* 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+@$$$$$$"
|
|
||||||
};
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
#define wutz_width 24
|
|
||||||
#define wutz_height 24
|
|
||||||
static unsigned char wutz_bits[] = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03, 0xf0, 0xff, 0x0f,
|
|
||||||
0xf8, 0xff, 0x1f, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f,
|
|
||||||
0xfe, 0xff, 0x7f, 0x02, 0x00, 0x40, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80,
|
|
||||||
0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x40, 0xfe, 0xff, 0x7f,
|
|
||||||
0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0xf8, 0xff, 0x1f, 0xf8, 0xff, 0x1f,
|
|
||||||
0xf0, 0xff, 0x0f, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 };
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
/* 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+$$$$$$$$"
|
|
||||||
};
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
/* 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",
|
|
||||||
".................................",
|
|
||||||
".....!!!!!!!!!!!!!!!!!!!!!!......",
|
|
||||||
".....!@@@@@@@@@@@@@@@@@@@@!......",
|
|
||||||
".....!@@@@@@@@@#$@@@@@@@@@!......",
|
|
||||||
".....!@@@@@@@@%!&@@@@@@@@@!......",
|
|
||||||
".....!@@@@@@@@#$@@@@@@@@@@!......",
|
|
||||||
".....!@@@@@@@%*#%@%%@@@@&@!......",
|
|
||||||
".....!#!!!!=$*#-!$#!&@@#*@!......",
|
|
||||||
".....!@@&&@@#$@@%@@%=@%!$@!......",
|
|
||||||
".....!@@&&@@&-=$@@@@$$-=@@!......",
|
|
||||||
".....!@@&&@@$##&@@@@@=!&@@!......",
|
|
||||||
".....!@@&#%@#$@@&&@@@*-@@@!......",
|
|
||||||
".....!@@@*!@&!#-*@@@$!$@@@!......",
|
|
||||||
".....!@@@%%@@%#$@@@@!#-@@@!......",
|
|
||||||
".....!@%==@@@@@@@@@#*@-%@@!......",
|
|
||||||
"......!=#=@@@@@@@@%!&@%=#@!......",
|
|
||||||
"......%$$=@@@@@@@@$=@@@&=@!......",
|
|
||||||
".....#.&$#=&@@@@@@@@@@@@@@!......",
|
|
||||||
".....#...#-*$@@@@@@@@@@@@@!......",
|
|
||||||
"......#..###===*%%@@@@@@@@!......",
|
|
||||||
"......#...#...#.!!!!!!!!!!!......",
|
|
||||||
".......#..#...#..#.#..#..#.......",
|
|
||||||
".......#..#...#.##.#..#..#.......",
|
|
||||||
"........#..##..#.#..###...#......",
|
|
||||||
"........#.................#......",
|
|
||||||
"..+++............................",
|
|
||||||
"..+..+.+.+.+..+..+.+..+..+.+.+...",
|
|
||||||
"..+..+.++.+.+.+..+...+.+.+.+.+...",
|
|
||||||
"..+++..+..+++.+..+.+.+++.+.+.+...",
|
|
||||||
"..+....+..+...+.+..+.+....+.+....",
|
|
||||||
"..+....+...++..+...+..++..+.+....",
|
|
||||||
".................................",
|
|
||||||
"................................."};
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
/* 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 };
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
/* 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",
|
|
||||||
"............",
|
|
||||||
".>>>>$*>>>>.",
|
|
||||||
".>>>>&>>>>>.",
|
|
||||||
".'.,@+##&$%.",
|
|
||||||
".>)>'#>>&!>.",
|
|
||||||
".>=%#%%>@&>.",
|
|
||||||
"..,@>*>-@&>=",
|
|
||||||
" # #,>>#-%%.",
|
|
||||||
" . @,%>>>>.",
|
|
||||||
" . !;#>>>.",
|
|
||||||
" . . ,;.",
|
|
||||||
" . .. .."};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
/* 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 };
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
/* 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",
|
|
||||||
"................",
|
|
||||||
".''''''>@''''''.",
|
|
||||||
".''''''%>''''''.",
|
|
||||||
".'!..#*;,=#*'#=.",
|
|
||||||
".''.''!*>''&=@'.",
|
|
||||||
".''.''#@>''>)='.",
|
|
||||||
".'',,'#!@>'&@''.",
|
|
||||||
" .;@;''*>'')%''.",
|
|
||||||
" -$$;'''''%!>@=.",
|
|
||||||
". &$@;&'''*''>'.",
|
|
||||||
". @,+$'''''''.",
|
|
||||||
" . ...;;;+''''.",
|
|
||||||
" . . . .....",
|
|
||||||
" . . . . . ",
|
|
||||||
" . . . .. . ",
|
|
||||||
" . .. . . ."};
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
/* XPM */
|
|
||||||
static char * preview20_xpm[] = {
|
|
||||||
"20 20 17 1",
|
|
||||||
" c None",
|
|
||||||
". c #000200",
|
|
||||||
"+ c #151614",
|
|
||||||
"@ c #20211F",
|
|
||||||
"# c #31312A",
|
|
||||||
"$ c #3D3C35",
|
|
||||||
"% c #474439",
|
|
||||||
"& c #504F48",
|
|
||||||
"* c #626054",
|
|
||||||
"= c #727063",
|
|
||||||
"- c #7E7E6F",
|
|
||||||
"; c #888A7A",
|
|
||||||
"> c #969987",
|
|
||||||
", c #A9A992",
|
|
||||||
"' c #B8B8A1",
|
|
||||||
") c #C6C5AA",
|
|
||||||
"! c #CFCDB1",
|
|
||||||
" .@@@@@@@@@@@@@@@@. ",
|
|
||||||
" %!!!!!!!''!!!!!!!% ",
|
|
||||||
" %!!!!!!)&>!!!!!!!% ",
|
|
||||||
" %!!!!!!>*'!!!!!!!% ",
|
|
||||||
" %!!!!!)&*')')!!''% ",
|
|
||||||
" @&@+#*&*=#;&*)'%-% ",
|
|
||||||
" %!,>!,=;,)!)=,-$'% ",
|
|
||||||
" %!,>!'=&-!!!'*#;!% ",
|
|
||||||
" %!,-),=>','!!$&)!% ",
|
|
||||||
" %!)$$'&&=%)!,+;!!% ",
|
|
||||||
" %!','!);;!!)%**!!% ",
|
|
||||||
" $;*$!!!!!!!;%'->)% ",
|
|
||||||
" *=$!!!!!!)*-!'*;% ",
|
|
||||||
" @>;*='!!!!),)!!''% ",
|
|
||||||
" . *&&,!!!!!!!!!!% ",
|
|
||||||
" ..+##@>,,,,,,,$ ",
|
|
||||||
" . . . ......... ",
|
|
||||||
" . . . ... . . ",
|
|
||||||
" . . . . ... . ",
|
|
||||||
" . . "};
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
/* 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 };
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue