|
珞珈山水BBS →
电脑网络 →
Linux & Unix →
单文区文章阅读
|
| 单文区文章阅读 [返回] |
|---|
|
发信人: bigben (早起的鸟儿debug), 信区: Linux_Unix 标 题: emacs-wiki-latex.el 发信站: 珞珈山水BBS站 (Sat Oct 22 14:20:16 2005), 站内 * emacs-wiki-latex.el emacs-wiki-latex.el是一个给emacs-wiki加入pp的latex公式图片的工具。 不管是在EmacsWikiMode还是PlannerMode中,都可以很方便地输入latex公式, 在wiki页面发布时会直接转换为png格式的图像。 ** 安装 首先保证你的系统中有latex和ImageMagick(需要里面的convert命令)。 把emacs-wiki-latex.el放到emacs的load-path中,然后在~/.emacs中添加 如下语句: (require 'emacs-wiki-latex) ;; setup inline-markup (add-to-list 'emacs-wiki-publishing-markup '["\\(\\$\\$\\)\\([^$]+?\\)\\(\\$\\$\\)" 2 emacs-wiki-latex-inline-markup]) ;; setup <latex> tag (add-to-list 'emacs-wiki-markup-tags '("latex" t nil t emacs-wiki-latex-tags)) ** 使用 latex公式主要有两个标记方式:一种是inline模式,用两个$将公式直接插入到行中, 另一种是使用<latex></latex>将公式单独作为一行显示。 例如: 一元二次方程$$ax^2+bx+c=0$$的根是 <latex>$$x_{1,2}=\frac{-b\pm\sqrt{b^2+4ac}}{2a}$$</latex> 注意<latex>标签中默认是没有把内容直接放到math环境中的,因为这样还可以用来 产生一些其他的图像,比如表格等等。<latex>环境中的内容就相当与latex的正文, 参考emacs-wiki-latex-template。 代码: (require 'emacs-wiki) (defcustom emacs-wiki-latex-template "\\documentclass[12pt]{article} \\pagestyle{empty} \\usepackage{latexsym} \\begin{document} %s \\end{document}" "LaTeX file template") (defcustom emacs-wiki-latex-image-url "latex" "relative url to latex images directory in the web") (defcustom emacs-wiki-latex-directory (concat emacs-wiki-publishing-directory "/" emacs-wiki-latex-image-url) "local latex images directory") (defcustom emacs-wiki-latex-temp-dir "~/wiki/temp" "latex work dir. Temporary files are generated in this dir") (defcustom emacs-wiki-latex-command "latex" "latex command location") (defcustom emacs-wiki-convert-command "convert" "convert command location") (defcustom emacs-wiki-convert-density "150x150" "png image size") ;; setup inline-markup (add-to-list 'emacs-wiki-publishing-markup '["\\(\\$\\$\\)\\([^$]+?\\)\\(\\$\\$\\)" 2 emacs-wiki-latex-inline-markup]) ;; setup <latex> tag (add-to-list 'emacs-wiki-markup-tags '("latex" t nil t emacs-wiki-latex-tags)) (defmacro with-temp-dir (DIR &rest body) "Do something in DIR and return to current dir finally." (let ((pwd (make-symbol "pwd"))) `(let ((,pwd default-directory)) (cd ,DIR) (progn ,@body) (cd ,pwd) nil))) (defun emacs-wiki-latex-tags (beg end highlight-p) (if highlight-p (progn (remove-text-properties beg end '(face nil font-lock-multiline nil invisible nil intangible nil display nil mouse-face nil keymap nil help-echo nil)) (goto-char end)) (let* ((text (buffer-substring beg end)) (image (emacs-wiki-latex-to-png text))) (delete-region beg end) (insert (format "<img src=\"%s\" class=\"latex-display\" alt=\"%s\" />" image text)) (add-text-properties beg (point) '(rear-nonsticky (read-only) read-only t))))) (defun emacs-wiki-latex-inline-markup () (let* ((beg (match-beginning 2)) (end (match-end 2)) (text (buffer-substring-no-properties beg end))) (delete-region (- beg 2) (+ end 2)) (insert (format "<img src=\"%s\" class=\"latex-inline\" alt=\"$%s$\" />" (emacs-wiki-latex-to-png (concat "$" text "$")) text)))) (defun emacs-wiki-latex-to-png (text) "Convert text to png image use `latex' and `convert'. Returns the png file name." (let ((file (md5 text)) (content (format emacs-wiki-latex-template text))) (unless (file-exists-p emacs-wiki-latex-directory) (make-directory emacs-wiki-latex-directory)) (unless (file-exists-p emacs-wiki-latex-temp-dir) (make-directory emacs-wiki-latex-temp-dir)) (unless (file-exists-p (format "%s/%s.png" emacs-wiki-latex-directory file)) (with-temp-dir emacs-wiki-latex-temp-dir (with-temp-file (concat file ".tex") (insert content)) (message (shell-command-to-string (format "%s %s.tex" emacs-wiki-latex-command file))) (shell-command-to-string (format "%s -trim -density %s %s.dvi %s.png" emacs-wiki-convert-command emacs-wiki-convert-density file file)) (copy-file (concat file ".png") emacs-wiki-latex-directory t t))) (format "%s/%s.png" emacs-wiki-latex-image-url file))) (provide 'emacs-wiki-latex) -- 天空不留下鸟的痕迹,但我已经飞过. ※ 修改:·bigben 于 Oct 22 18:21:28 修改本文·[FROM: 202.114.79.*] ※ 来源:·珞珈山水BBS站 bbs.whu.edu.cn·[FROM: 202.114.79.*] |
| [返回单文区目录] |
|
|