From 82b8ca280905ea284730f228ae082c42c348e818 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 17 Mar 2011 11:36:56 +0100 Subject: Big emacs cleanup, must be lighter --- emacs.d/elisp/muse/muse-latex2png.el | 277 ----------------------------------- 1 file changed, 277 deletions(-) delete mode 100644 emacs.d/elisp/muse/muse-latex2png.el (limited to 'emacs.d/elisp/muse/muse-latex2png.el') diff --git a/emacs.d/elisp/muse/muse-latex2png.el b/emacs.d/elisp/muse/muse-latex2png.el deleted file mode 100644 index 2b4373d..0000000 --- a/emacs.d/elisp/muse/muse-latex2png.el +++ /dev/null @@ -1,277 +0,0 @@ -;; muse-latex2png.el --- generate PNG images from inline LaTeX code - -;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 -;; Free Software Foundation, Inc. - -;; Author: Michael Olson -;; Created: 12-Oct-2005 - -;; This file is part of Emacs Muse. It is not part of GNU Emacs. - -;; Emacs Muse 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. - -;; Emacs Muse 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 Emacs Muse; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;; This was taken from latex2png.el, by Ganesh Swami , which was made for emacs-wiki. It has since -;; been extensively rewritten for Muse. - -;;; To do - -;; Remove stale image files. This could be done by making a function -;; for `muse-before-publish-hook' that deletes according to -;; (muse-page-name). - -;;; Code - -(require 'muse-publish) - -(defgroup muse-latex2png nil - "Publishing LaTeX formulas as PNG files." - :group 'muse-publish) - -(defcustom muse-latex2png-img-dest "./latex" - "The folder where the generated images will be placed. -This is relative to the current publishing directory." - :type 'string - :group 'muse-latex2png) - -(defcustom muse-latex2png-scale-factor 2.5 - "The scale factor to be used for sizing the resulting LaTeX output." - :type 'number - :group 'muse-latex2png) - -(defcustom muse-latex2png-fg "Black" - "The foreground color." - :type 'string - :group 'muse-latex2png) - -(defcustom muse-latex2png-bg "Transparent" - "The background color." - :type 'string - :group 'muse-latex2png) - -(defcustom muse-latex2png-template - "\\documentclass{article} -\\usepackage{fullpage} -\\usepackage{amssymb} -\\usepackage[usenames]{color} -\\usepackage{amsmath} -\\usepackage{latexsym} -\\usepackage[mathscr]{eucal} -%preamble% -\\pagestyle{empty} -\\begin{document} -{%code%} -\\end{document}\n" - "The LaTeX template to use." - :type 'string - :group 'muse-latex2png) - -(defun muse-latex2png-move2pubdir (file prefix pubdir) - "Move FILE to the PUBDIR folder. - -This is done so that the resulting images do not clutter your -main publishing directory. - -Old files with PREFIX in the name are deleted." - (when file - (if (file-exists-p file) - (progn - (unless (file-directory-p pubdir) - (message "Creating latex directory %s" pubdir) - (make-directory pubdir)) - (copy-file file (expand-file-name (file-name-nondirectory file) - pubdir) - t) - (delete-file file) - (concat muse-latex2png-img-dest "/" (file-name-nondirectory file))) - (message "Cannot find %s!" file)))) - -(defun muse-latex2png (code prefix preamble) - "Convert the LaTeX CODE into a png file beginning with PREFIX. -PREAMBLE indicates extra packages and definitions to include." - (unless preamble - (setq preamble "")) - (unless prefix - (setq prefix "muse-latex2png")) - (let* ((tmpdir (cond ((boundp 'temporary-file-directory) - temporary-file-directory) - ((fboundp 'temp-directory) - (temp-directory)) - (t "/tmp"))) - (texfile (expand-file-name - (concat prefix "__" (format "%d" (abs (sxhash code)))) - tmpdir)) - (defalt-directory default-directory)) - (with-temp-file (concat texfile ".tex") - (insert muse-latex2png-template) - (goto-char (point-min)) - (while (search-forward "%preamble%" nil t) - (replace-match preamble nil t)) - (goto-char (point-min)) - (while (search-forward "%code%" nil t) - (replace-match code nil t))) - (setq default-directory tmpdir) - (call-process "latex" nil nil nil texfile) - (if (file-exists-p (concat texfile ".dvi")) - (progn - (call-process - "dvipng" nil nil nil - "-E" - "-fg" muse-latex2png-fg - "-bg" muse-latex2png-bg - "-T" "tight" - "-x" (format "%s" (* muse-latex2png-scale-factor 1000)) - "-y" (format "%s" (* muse-latex2png-scale-factor 1000)) - "-o" (concat texfile ".png") - (concat texfile ".dvi")) - (if (file-exists-p (concat texfile ".png")) - (progn - (delete-file (concat texfile ".dvi")) - (delete-file (concat texfile ".tex")) - (delete-file (concat texfile ".aux")) - (delete-file (concat texfile ".log")) - (concat texfile ".png")) - (message "Failed to create png file") - nil)) - (message (concat "Failed to create dvi file " texfile)) - nil))) - -(defun muse-latex2png-region (beg end attrs) - "Generate an image for the Latex code between BEG and END. -If a Muse page is currently being published, replace the given -region with the appropriate markup that displays the image. -Otherwise, just return the path of the generated image. - -Valid keys for the ATTRS alist are as follows. - -prefix: The prefix given to the image file. -preamble: Extra text to add to the Latex preamble. -inline: Display image as inline, instead of a block." - (let ((end-marker (set-marker (make-marker) (1+ end))) - (pubdir (expand-file-name - muse-latex2png-img-dest - (file-name-directory muse-publishing-current-output-path)))) - (save-restriction - (narrow-to-region beg end) - (let* ((text (buffer-substring-no-properties beg end)) - ;; the prefix given to the image file. - (prefix (cdr (assoc "prefix" attrs))) - ;; preamble (for extra options) - (preamble (cdr (assoc "preamble" attrs))) - ;; display inline or as a block - (display (car (assoc "inline" attrs)))) - (when muse-publishing-p - (delete-region beg end) - (goto-char (point-min))) - (unless (file-directory-p pubdir) - (make-directory pubdir)) - (let ((path (muse-latex2png-move2pubdir - (muse-latex2png text prefix preamble) - prefix pubdir))) - (when path - (when muse-publishing-p - (muse-insert-markup - (if (muse-style-derived-p "html") - (concat "\"latex2png" - ">") - (muse-insert-markup "")) - (let ((ext (or (file-name-extension path) "")) - (path (muse-path-sans-extension path))) - (muse-markup-text 'image path ext)))) - (goto-char (point-max))) - path)))))) - -(defun muse-publish-latex-tag (beg end attrs) - "If the current style is not Latex-based, generate an image for the -given Latex code. Otherwise, don't do anything to the region. -See `muse-latex2png-region' for valid keys for ATTRS." - (unless (assoc "prefix" attrs) - (setq attrs (cons (cons "prefix" - (concat "latex2png-" (muse-page-name))) - attrs))) - (if (or (muse-style-derived-p "latex") (muse-style-derived-p "context")) - (muse-publish-mark-read-only beg end) - (muse-latex2png-region beg end attrs))) - -(put 'muse-publish-latex-tag 'muse-dangerous-tag t) - -(defun muse-publish-math-tag (beg end) - "Surround the given region with \"$\" characters. Then, if the -current style is not Latex-based, generate an image for the given -Latex math code. - -If 6 or more spaces come before the tag, and the end of the tag -is at the end of a line, then surround the region with the -equivalent of \"$$\" instead. This causes the region to be -centered in the published output, among other things." - (let* ((centered (and (re-search-backward - (concat "^[" muse-regexp-blank "]\\{6,\\}\\=") - nil t) - (save-excursion - (save-match-data - (goto-char end) - (looking-at (concat "[" muse-regexp-blank "]*$")))) - (prog1 t - (replace-match "") - (when (and (or (muse-style-derived-p "latex") - (muse-style-derived-p "context")) - (not (bobp))) - (backward-char 1) - (if (bolp) - (delete-char 1) - (forward-char 1))) - (setq beg (point))))) - (tag-beg (if centered - (if (muse-style-derived-p "context") - "\\startformula " "\\[ ") - "$")) - (tag-end (if centered - (if (muse-style-derived-p "context") - " \\stopformula" " \\]") - "$")) - (attrs (nconc (list (cons "prefix" - (concat "latex2png-" (muse-page-name)))) - (if centered nil - '(("inline" . t)))))) - (goto-char beg) - (muse-insert-markup tag-beg) - (goto-char end) - (muse-insert-markup tag-end) - (if (or (muse-style-derived-p "latex") (muse-style-derived-p "context")) - (muse-publish-mark-read-only beg (point)) - (muse-latex2png-region beg (point) attrs)))) - -(put 'muse-publish-math-tag 'muse-dangerous-tag t) - -;;; Insinuate with muse-publish - -(add-to-list 'muse-publish-markup-tags - '("latex" t t nil muse-publish-latex-tag) - t) - -(add-to-list 'muse-publish-markup-tags - '("math" t nil nil muse-publish-math-tag) - t) - -(provide 'muse-latex2png) -;;; muse-latex2png.el ends here -- cgit v1.2.3-54-g00ecf