;;------------------------------------------------------------ ;; ;; Quelques fonctions pour survivre en Latex. ;; A few simple stuffs to really improve latex editing under emacs ;; ;; Lire la liste des liaisons clés-fonctions pour comprendre. ;; Read the key-bindings below (function realtexHook) to understand ;; ;; Christophe Dony - 1993 ;; ;;------------------------------------------------------------ ;; ;; Lastly tested with emacs-21.2.1 (11/2002) ;; ;; Put this file into an emacs lib directory, ;; and add the followings to your .emacs ;; ;; (autoload 'real-tex-hook "addTexMode" "addTexMode") ;; (add-hook 'tex-mode-hook ;; (function ;; (lambda () ;; (real-tex-hook tex-mode-map tex-mode-syntax-table)))) ;; ;;------------------------------------------------------------ (defun cdtex-entete () (interactive) (insert-string "\\documentclass[11pt]{article}\n") (insert-string "\\evensidemargin=0cm\n") (insert-string "\\oddsidemargin=0cm\n") (insert-string "\\topmargin=-1cm\n") (insert-string "\\textwidth=17cm\n") (insert-string "\\columnwidth=\\textwidth\n") (insert-string "\\textheight=25cm\n") (insert-string "\\parindent=0cm\n") (insert-string "\\parskip=.1mm\n") (insert-string "%\\usepackage{epsf}\n") (insert-string "%\\slidesmag{3}\n") (insert-string "\\usepackage{xspace}\n") (insert-string "\\usepackage{isolatin1}\n") (insert-string "%\\usepackage{french}\n") (insert-string "%\\usepackage{fancybox}\n") (insert-string "\\usepackage{moreverb}\n") (insert-string "%\\usepackage[dvips]{graphics}\n") (insert-string "%\\graphicspath{{.}}\n") (insert-string "%\\resizebox{.95\linewidth}{!}{\includegraphics{foo.eps}}}\n") (insert-string "\\begin{document}\n") (insert-string "\\end{document}") (previous-line 1) ) (defun cdtex-begin (arg1 &optional arg2) (let ((arg2 (or arg2 ""))) (insert-string (concat "\\begin{" arg1 "}" arg2 "\n\n\\end{" arg1 "}\n")) (previous-line 2))) (defun add-2items () (insert-string "\\item\n\n\\item\n") (previous-line 2)) (defun cdtex-document () (interactive) (let ((point (point))) (insert-string "\\begin{document}") (end-of-buffer) (newline) (insert-string "\\end{document}") (goto-char point))) (defun cdtex-center () (interactive) (cdtex-begin "center")) (defun cdtex-slide-simple () (interactive) (cdtex-begin "slide") (save-excursion (previous-line 1) (end-of-line) (insert "{}")) ) (defun cdtex-slide () (interactive) (cdtex-begin "slide") (save-excursion (previous-line 1) (end-of-line) (insert "{}")) (insert-string "{\\heading{}}") (backward-char 2)) (defun cdtex-verbatim () (interactive) (cdtex-begin "verbatim")) (defun cdtex-minipage () (interactive) (cdtex-begin "minipage" "[t]{\\linewidth}")) (defun cdtex-multicols () (interactive) (cdtex-begin "multicols" "{2}[]")) (defun cdtex-tabular () (interactive) (cdtex-begin "tabular")) (defun cdtex-figure () (interactive) (cdtex-begin "figure") (insert-string " \\centerline{\\epsfbox {}}\n") (insert-string " \\caption{\\label{}}") (previous-line 1) (backward-char 2) ) (defun cdtex-biblio () (interactive) (cdtex-begin "thebibliography") (save-excursion (previous-line 1) (end-of-line) (insert "{99}"))) (defun cdtex-quote () (interactive) (cdtex-begin "quote")) (defun cdtex-itemise () (interactive) (cdtex-begin "itemize") (add-2items)) (defun cdtex-enumerate () (interactive) (cdtex-begin "enumerate") (add-2items)) (defun cdtex-description () (interactive) (cdtex-begin "description")) (defun cdtex-insert-word (string) (insert-string string) (backward-char 2)) (defun cdtex-footnote () (interactive) (cdtex-insert-word "\\footnote{ }")) (defun cdtex-cite () (interactive) (cdtex-insert-word "\\cite{ }")) (defun cdtex-bibitem () (interactive) (cdtex-insert-word "\\bibitem [] { }")) (defun cdtex-sectionning (arg) (insert-string (concat "\\" arg "{}")) (backward-char 1)) (defun cdtex-section () (interactive) (cdtex-sectionning "section")) (defun cdtex-subsection () (interactive) (cdtex-sectionning "subsection")) (defun cdtex-subsubsection () (interactive) (cdtex-sectionning "subsubsection")) (defun cdtex-paragraph () (interactive) (cdtex-sectionning "paragraph")) (defun cdtex-paragraph () (interactive) (cdtex-sectionning "paragraph") ) (defun cdtex-emphasize (string1 string2) ;; pour mettre une region ou le mot courant si pas de regino en ;; italique ou en gras apres l'avoir ecrit. (if mark-active ;;ya une region (save-excursion (insert string2) (exchange-dot-and-mark) (insert string1)) ;;ya pas de region (let ((char (following-char))) (if (or (= char ?\ ) (= char ?\t) (= char ?\n) (= char 0) (and (= char ?\\) (not (= (preceding-char) ?\ ))) (not (= (char-syntax char) 119))) ;; on est pas au milieu d'un mot (progn (insert string1) (insert string2) (backward-char 1)) ;; on est au milieu d'un mot (save-excursion (forward-word 1) (insert string2) (backward-word 1) (insert string1) (forward-word 1)))))) (defun cdtex-note () (interactive) (cdtex-begin "note")) (defun cdtex-bold () (interactive) (cdtex-emphasize "\{\\bf " "}") (message "BOLD")) (defun cdtex-Large () (interactive) (cdtex-emphasize "\\Large\{" "}") (message "Large")) (defun cdtex-large () (interactive) (cdtex-emphasize "\\large\{" "}") (message "large")) (defun cdtex-under () (interactive) (cdtex-emphasize "\\underline\{" "}") (message "UNDER")) (defun cdtex-ital () (interactive) (cdtex-emphasize "\{\\em " "}") (message "ITAL")) (defun cdtex-small-cap () (interactive) (cdtex-emphasize "\{\\sc " "}") (message "SMALL-CAP")) (defun cdtex-tt () (interactive) (cdtex-emphasize "\{\\tt " "}") (message "TT")) (defun cdtex-quotes () (interactive) (cdtex-emphasize "``" "''") (message "Quotes")) (defun cdtex-math () (interactive) (cdtex-emphasize "\$" "\$") (message "Math")) (defun cdtex-local-verbatim () (interactive) (cdtex-emphasize "\\verb+" "+") (message "VERBATIM")) (defun cdtex-ref () (interactive) (cdtex-emphasize "~\\ref{" "}") (message "Reference")) (defun next-section () (interactive) (search-forward-regexp "[sub]*section{") (next-line 1)) (defun previous-section () (interactive) (search-backward-regexp "[sub]*section{")) (defun cdtex-run-mytex () (interactive) (cdtex-mytex "")) (defun cdtex-run-mytex-postcript () (interactive) (cdtex-mytex "-f")) (defun cdtex-run-mytex-print () (interactive) (cdtex-mytex "-p lc")) (defun cdtex-mytex (arg) (save-buffer) (message (concat "mytex " arg " " (buffer-name) " &")) (shell-command (concat "mytex " arg " " (buffer-name) " &")) (message "done")) (defun real-tex-hook (modeMap syntax-table) (enter-abbrev-mode) ;; pour outline-mode (setq TeX-parse-self nil) ; Disable parse on load. (setq TeX-auto-save nil) ; Disable parse on save. (setq tex-dvi-view-command "xdvi") ;;(setq-default TeX-auto-regexp-list 'LaTeX-auto-minimal-regexp-list) ;; modification de status de caractères (modify-syntax-entry ?- "w " syntax-table) (modify-syntax-entry ?_ "w " syntax-table) (modify-syntax-entry ?< "w " syntax-table) (modify-syntax-entry ?> "w " syntax-table) (modify-syntax-entry ?= "w " syntax-table) (modify-syntax-entry ?$ "w " syntax-table) ;;liaison des cle's aux fonctions (define-key modeMap "\C-cb" 'cdtex-document) ;;b comme begin (define-key modeMap "\C-cB" 'cdtex-biblio) ;;B comme biblio (define-key modeMap "\C-cc" 'cdtex-center) ;;c comme center (define-key modeMap "\C-cC" 'cdtex-cite) ;;C comme Cite (define-key modeMap "\C-cd" 'cdtex-description) ;;d comme description (define-key modeMap "\C-ce" 'cdtex-enumerate) ;;e comme enumerate (define-key modeMap "\C-cE" 'cdtex-entete) ;;E comme entete (define-key modeMap "\C-cf" 'cdtex-footnote) ;;f comme footnote (define-key modeMap "\C-cF" 'cdtex-figure) ;;F comme Figure (define-key modeMap "\C-ch" 'hide-subtree) ;;h comme hide (define-key modeMap "\C-ci" 'cdtex-itemise) ;;i comme itemize (define-key modeMap "\C-cI" 'cdtex-bibitem) ;;I comme bIbitem (define-key modeMap "\C-cl" 'cdtex-large) ;;l comme large (define-key modeMap "\C-cL" 'cdtex-Large) ;;L comme Large (define-key modeMap "\C-cM" 'cdtex-minipage) ;;M comme Minipage (define-key modeMap "\C-cm" 'cdtex-multicols) ;;m comme multicols (define-key modeMap "\C-cn" 'cdtex-note) ;;n comme note (define-key modeMap "\C-cp" 'cdtex-paragraph) ;;p comme paragraph (define-key modeMap "\C-cq" 'cdtex-quote) ;;q comme quote (define-key modeMap "\C-cr" 'cdtex-ref) ;; r comme reference (define-key modeMap "\C-cR" 'cdtex-run-mytex) ;; R comme run (define-key modeMap "\C-cs" 'cdtex-slide-simple) ;;s comme slide (define-key modeMap "\C-cS" 'cdtex-slide) ;;slide avec titre (define-key modeMap "\C-ct" 'cdtex-tabular) ;;t comme tabular (define-key modeMap "\C-cu" 'cdtex-under) ;; u comme underline (define-key modeMap "\C-cv" 'cdtex-verbatim) ;;v comme verbatim (define-key modeMap "\C-c1" 'cdtex-section) ;;1 comme section (define-key modeMap "\C-c2" 'cdtex-subsection) ;;2 comme subsection (define-key modeMap "\C-c3" 'cdtex-subsubsection) ;;3 comme ... (define-key modeMap "\eg" 'cdtex-bold) ;;g comme gras (define-key modeMap "\ei" 'cdtex-ital) ;;i comme ital (define-key modeMap "\es" 'cdtex-small-cap) ;;s comme small (define-key modeMap "\e\"" 'cdtex-quotes) ;; (define-key modeMap "\eU" 'cdtex-under) ;;U comme underline (define-key modeMap "\em" 'cdtex-math) ;;m comme math (define-key modeMap "\et" 'cdtex-tt) ;;t comme tt (define-key modeMap "\eV" 'cdtex-local-verbatim) ;;V comme verbatim (define-key modeMap "\e(" 'LaTeX-find-matching-begin) ;;comme en lisp (define-key modeMap "\e)" 'LaTeX-find-matching-end) ;;comme en lisp (define-key modeMap [f6] 'cdtex-run-mytex) (define-key modeMap [f7] 'cdtex-run-mytex-postcript) (define-key modeMap [f8] 'hide-subtree) ;; si auctex (define-key modeMap [f9] 'show-subtree) ;; si auctex (define-key modeMap [end] 'next-section) (define-key modeMap [home] 'previous-section) ; (define-key modeMap "S-C-n" 'outline-next-visible-heading) ; (define-key modeMap "S-C-p" 'outline-next-visible-heading) ;; divers (setq tab-width 4) (message "Supplements tex charges") )