(defun dot () (point)) (defvar latex-italics-toggle nil "*latex-mode italics toggle") (defvar latex-quotes-toggle nil "*latex-mode quotes toggle") (defvar latex-bold-toggle nil "*latex-mode bold toggle") (defvar latex-ref-toggle nil "*latex-mode ref toggle") (defvar latex-subscript-toggle nil "*latex-mode subscript toggle") (defvar latex-alltt-toggle nil "*latex-mode alltt toggle") (defvar in-latex-list-toggle nil "*latex-mode in-list-mode toggle") (defvar in-latex-enum-toggle nil "*latex-mode in-enum-mode toggle") (defvar enuming nil "*latex-mode: Are we enuming or listing?") (defun insert-latex-header () (interactive) (insert-file "~/tex/lib/in-art11") (next-line 2) (open-line 1) ) (defun begin/end-latex-italics () (interactive) (if (toggle-var 'latex-italics-toggle) (insert-string (concat "{\\it ")) (insert-string (concat "}")) ) ) (defun begin/end-latex-quotes () (interactive) (if (toggle-var 'latex-quotes-toggle) (insert-string "``") (insert-string "''") ) ) (defun begin/end-latex-bold () (interactive) (if (toggle-var 'latex-bold-toggle) (insert-string "{\\bf ") (insert-string "}") ) ) (defun begin/end-latex-ref () (interactive) (if (toggle-var 'latex-ref-toggle) (insert-string "{\\cite ") (insert-string "}") ) ) ;(defun ; (begin/end-latex-subscript ; (if (toggle-var "latex-subscript-toggle") ; (insert-string (concat double-backslash "*<")) ; (insert-string (concat double-backslash "*>")) ; ) ; ) ;) (defun insert-bullet-item () (interactive) (insert-string (concat (int-to-string enum-item-spacing) "\\item\n\n" ) ) (previous-line 1) ) ;(defun ; (check-match-of-latex-font-changes ; (while 1 ; (if (error-occured ; (re-search-forward "\\fB\\|\\fI")) ; (progn ; (beginning-of-file) ; (error-message "Font changes match OK") ; ) ; ) ; (search-forward "\\f") ; (if (!= (following-char) 'P') ; (error-message "Font change mismatch") ; ) ; ) ; ) ;) (defvar list-item-spacing 3 "*") (defvar enum-item-spacing 3 "*") (defvar list-item (concat "\\item\n") "*") (defvar enum-item (concat "\\item\n") "*") (defun set-list-item-spacing (a1) (interactive "slist item spacing: ") (setq list-item-spacing a1) (setq enum-item-spacing list-item-spacing) ;(setq list-item (concat ".sp ." (int-to-string list-item-spacing) "v\nlist\n")) ;(setq enum-item (concat ".sp ." (int-to-string enum-item-spacing) "v\nenum\n")) ) (defun insert-list-item (sp) (interactive "P") (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (if enuming enum-item list-item ) ) ) (defun Es (sp) (interactive "P") (setq enuming t) (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (concat "\\BeginEnum{" (int-to-string enum-item-spacing) "}" enum-item ) ) ) (defun Ee () (interactive) (insert-string "\\EndEnum\n") (local-unset-key "\^l") ) (defun Ls (sp) (interactive "P") (setq enuming nil) ;i.e., we're listing now (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (concat ".(l F\n.(L 1\n" list-item ) ) ) (defun Le () (interactive) (insert-string ".)L 1\n.)l F\n") ) (defun begin/end-latex-list () (interactive) (if (toggle-var 'in-latex-list-toggle) (Ls) (Le) ) ) (defun begin/end-latex-enum () (interactive) (if (toggle-var "in-latex-enum-toggle") (Es) (Ee) ) ) (defun insert-latex-list-template (sp) (interactive "P") (setq enuming nil) ;i.e., we`re listing now (if (null sp) (insert-latex-list-template-1 "1") (progn (set-list-item-spacing sp) (call-interactively 'insert-latex-list-template-1) ) ) ) (defun insert-latex-list-template-1 (af) (interactive "sType of list (I, A, 1, a, i): ") (if (string= af "") (setq af 1)) (insert-string "\\BeginList" af "{0." list-item-spacing "}\n" list-item "\n" "\\EndList\n" ) (previous-line 2) ) ;The following doesnt work currently due to some misunderstanding of and/or ;bug in gosmacs lisp parm passing. ;(defun ; (insert-indented-latex-list-template-bogus af ; (insert-string ".(l F\n") ; (if prefix-argument-provided ; (provide-prefix-argument prefix-argument ; (insert-latex-list-template af)) ; (insert-latex-list-template af) ; ) ; (next-line) (next-line) ; (insert-string ".)l F\n") ; (previous-line) (previous-line) (previous-line) ; ) ;) ;(defun ; (insert-indented-latex-list-template af ; (setq enuming 0) ;i.e., we`re listing now ; (if prefix-argument-provided ; (progn ; (setq af (arg 1 "Type of list (I, A, 1, a, i): ")) ; (if (!= prefix-argument 0) ; (set-list-item-spacing prefix-argument) ; ) ; ) ; (setq af "1") ; ) ; (insert-string) ; (insert-string ".(l F\n") ; (insert-string ; ".(L " af "\n" ; list-item ; "\n" ; ".)L " af "\n" ; ) ; (insert-string ".)l F\n") ; (previous-line) (previous-line) (previous-line) ; (local-bind-to-key "insert-list-item" "\^l") ; ) ;) (defun insert-latex-enum-template () (interactive) (setq enuming t) (insert-string "\\BeginEnum" "{0." enum-item-spacing "}\n" enum-item "\n" "\\EndEnum\n" ) (previous-line 2) ) ;(defun ; (insert-indented-latex-enum-template af ; (insert-string ".(l F\n") ; (insert-latex-enum-template) ; (next-line) (next-line) ; (insert-string ".)l F\n") ; (previous-line) (previous-line) (previous-line) ; ) ;) (defun insert-latex-alltt-template () (interactive) (insert-string "\\begin{alltt}\n" "\n" "\\end{alltt}\n" ) (previous-line 2) ) (defun insert-latex-section (s) (interactive "NSection depth: ") (if (= s 1) (insert-string "\\section{}") (if (= s 2) (insert-string "\\subsection{}") (if (= s 3) (insert-string "\\subsubsection{}") (if (= s 4) (insert-string "\\paragraph{}\\medskip") (error "Section depth must be between 1 and 5") ) ) ) ) (insert-string "\\indent") (backward-char 8) ) (defun insert-latex-center-template () (interactive) (insert-string "\\begin{center}\n" "\n" "\\end{center}\n" ) (previous-line 2) ) (defun insert-latex-verbatim-template () (interactive) (insert-string "\\begin{verbatim}\n" "\n" "\\end{verbatim}\n" ) (previous-line 2) ) (defun insert-latex-figure-template () (interactive) (insert-string "\\begin{figure}\n" "\\label{Fig:}\n" "\\ \n" "\\centering\n" "\\scaledpicture HHHin by WWWin (FigXXX scaled SSS)\n" "\caption{}\n" "\\end{figure}\n" ) (previous-line 6) (beginning-of-line) (end-of-line) (backward-char 1) ) (defun find-latex-sections (buf) "Put all latex section in current paper into BUF." (interactive "BPut latex sections in buffer: ") (save-excursion (beginning-of-buffer) (while (condition-case nil (re-search-forward "^\\\\.*section") (error nil)) (beginning-of-line) (setq p (point)) (next-line 1) (append-to-buffer buf p (dot)) ) ) ) (defun my-latex-mode () "Much like standard gnu latex mode, but with some new bindings for template insertion. See the code in my-LaTeX-mode.el for further details." (interactive) (read-abbrev-file "~/emacs/lib/text-mode-abbrev-table") (latex-mode) (abbrev-mode 1) (local-set-key "H" 'insert-latex-header) (local-set-key "'" 'begin/end-latex-italics) (local-set-key "\"" 'begin/end-latex-quotes) (local-set-key "_" 'begin/end-latex-bold) (local-set-key "[" 'begin/end-latex-ref) (local-set-key "i" 'insert-list-item) (local-set-key " " 'set-list-item-spacing) ;(local-set-key "begin/end-latex-list" "\^xL") ;(local-set-key "begin/end-latex-enum" "\^xE") (local-set-key "L" 'insert-latex-list-template) (local-set-key "E" 'insert-latex-enum-template) ; (local-set-key "insert-indented-latex-enum-template" "\^xI") ; (local-set-key "insert-indented-latex-list-template" "\^xK") (local-set-key "A" 'insert-latex-alltt-template) (local-set-key "S" 'insert-latex-section) (local-set-key "C" 'insert-latex-center-template) (local-set-key "V" 'insert-latex-verbatim-template) (local-set-key "F" 'insert-latex-figure-template) ; (Remove-local-binding "\e/") (setq fill-prefix nil) (setq fill-column 79) (auto-fill-mode 1) (setq case-fold-search nil) (setq truncate-lines nil) (setq mode-name "my-LaTeX") )