;;; prosper.el --- Prosper style file for AUCTeX
;; Copyright (C) 2001, 2002 by Philip Lord, Nevin Kapur
;; Authors: Phillip Lord
;; Nevin Kapur
;; Keywords: tex, wp, prosper
;; Version: 0.6
;; URL: http://www.mts.jhu.edu/~kapur/emacs/prosper.el
;; This is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;;; Commentary:
;; This is a propser (http://prosper.sourceforge.net/) style file for
;; AUCTeX.
;;; Installation:
;;
;; For this file to work you need to have a working installation of
;; AucTeX. After that installtion is simple. Put this file into one of
;; the directories specified in `TeX-style-path', with the name
;; "style" rather than "auto" as it might get over written in the
;; latter.
;;
;; Then stick the current for into your .emacs
;; (eval-after-load "latex"
;; '(add-to-list 'LaTeX-style-list '("prosper")))
;;
;;
;; And that should be it. You check whether it's worked or not by
;; opening a prosper document, and trying `LaTeX-environment'. "slide"
;; should be available by tab completion and it should ask you about
;; overlays.
;;
;; The environment "prosper" should be inserted immediately after the
;; document environment. It will prompt you for options available
;; under prosper and create a skeleton document.
;;; Bugs:
;;
;; Currently the documentclass expansion doesn't work, unless you
;; enter a documentclass line to let auctex know which style files to
;; load. Then delete this and do it again. Not good. I know no way
;; around this.
;;; Code:
;; Constants:
;;;; This is partly working now, and it a little neater than it
;;;; was. The main problem is that the redefinition of "documentclass"
;;;; does not happen until its all too late, so that stuff never
;;;; happens correctly. This is easy enough to fix by fiddling with
;;;; auctex. I shall have to download the latest version, and see if
;;;; its already been fixed.
(defconst LaTeX-prosper-version
"$Id: prosper.el,v 1.2 2002/11/25 14:35:23 abraham Exp $"
"prosper.el version.")
(defconst LaTeX-prosper-transition-styles '("Split"
"Blinds"
"Box"
"Wipe"
"Dissolve"
"Glitter"
"Replace")
"List of transition styles provided by prosper.")
(defconst LaTeX-prosper-slide-styles
'("alienglow" "autumn" "azure"
"contemporain" "darkblue" "default" "frames"
"lignesbleues" "nuancegris" "troispoints"
"alcatel" "gyom" "pascal" "rico"
))
(defun LaTeX-prosper-insert-title (optional)
(newline)
(mapcar
(lambda(f)
(TeX-insert-macro f)
(newline))
'("title" "subtitle" "author" "email" "institution" "slideCaption"
"Logo" "DefaultTransition"))
(LaTeX-insert-environment "document")
(TeX-insert-macro "maketitle"))
;; Utility functions
(defun LaTeX-prosper-arg-pdftransition (environment)
(let ((default
(if (boundp 'LaTeX-prosper-transition-history)
(car LaTeX-prosper-transition-history)
"Replace")))
(TeX-argument-insert
(completing-read
(TeX-argument-prompt nil
(format "Transition (Default %s) " default)
t)
(mapcar 'list LaTeX-prosper-transition-styles)
nil
t
nil
'LaTeX-prosper-transition-history
default)
nil)))
(defun LaTeX-prosper-slide-style-prompt()
(completing-read
"Slide Style?"
(mapcar 'list LaTeX-prosper-slide-styles)
nil nil nil nil "default" ))
(defun LaTeX-prosper-insert-options(environment)
(insert "[" )
(insert (LaTeX-prosper-slide-style-prompt) " ")
(mapcar
(lambda(f)
(if (y-or-n-p (car f))
(insert (car (cdr f)) " ")))
'(("Draft?" "draft")
("Color Slides?" "slideColor")
("Disable running total on each slide?" "nototal")
("Is the final version going to be PDF?" "pdf")
("Are you going to use Adobe Distiller" "distiller")))
(delete-char -1)
(insert "]"))
(defun LaTeX-prosper-insert-slide (environment)
(if (y-or-n-p "Surround with overlay ?")
(progn (TeX-insert-macro "overlays")
(if (search-backward "{" 0 t)
(progn
(goto-char (+ 1 (point)))
(insert "%")))))
(let ((title (read-input "Title: ")))
(LaTeX-insert-environment "slide" (concat TeX-grop title TeX-grcl))))
;; AUCTeX configuration
(TeX-add-style-hook "prosper"
(function
(lambda ()
(LaTeX-add-environments
'("slide" LaTeX-prosper-insert-slide)
'("itemstep" LaTeX-env-item)
'("Itemize" LaTeX-env-item))
(TeX-add-symbols
'("documentclass"
LaTeX-prosper-insert-options
LaTeX-prosper-insert-title)
'("title" "Title of the presentation")
'("subtitle" "Subtitle of the presentation")
'("author" "Author name")
'("email" "Author email")
'("institution" "Author institution")
'("slideCaption" "Caption for slide")
'("Logo" "Logo")
'("displayVersion" TeX-arg-free)
'("DefaultTransition"
LaTeX-prosper-arg-pdftransition)
'("NoFrenchBabelItemize" TeX-arg-free)
'("part" LaTeX-prosper-arg-part)
'("overlays" "Number of overlays" t)
'("FontTitle" "Color slides" "Black & White Slides")
'("FontText" "Color slides" "Black & White Slides")
'("fontTitle" "Text")
'("fontText" "Text")
'("ColorFoot" "Color")
'("PDFtransition" LaTeX-prosper-arg-pdftransition)
'("myitem" "Level" "Definition")
'("fromSlide" "Number" t)
'("fromSlide*" "Number" t)
'("onlySlide" "Number" t)
'("onlySlide*" "Number" t)
'("OnlySlide" "Number")
'("UntilSlide" "Number")
'("untilSlide*" "Number")
'("PDForPS" TeX-arg-conditional)
'("onlyInPS" t)
'("onlyInPDF" t)
'("FromSlide" "Number")))))
;;; prosper.el ends here