-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2009年10月14日

viで自動的にHTMLを作成するTOhtml

参考:http://nanasi.jp/articles/vim/2html_vim.html#id2

 以下は、実際に生成したソースコードをhead部分を除いて貼り付けてものです。ただ、「defun」などと関数名になっている部分だけは、 薄い黄色に色付けされていたので、置換を掛けて色の16進数コードを変えました。
 JavaScriptのシンタックスハイライトでEmacs-Lispに対応したものがないか、探していたものの見つからず、たまたま見つけたのがVimでHTMLファイルを生成するというサイトでした。
 サイトを参考に~/.vimrcに次の設定を加えました。
let html_number_lines = 0
"let html_use_css = 1
let html_no_pre = 1
 cssの部分はコメントアウトで無効にしてあります。普通にHTMLファイルを使うのであればheadにcssの設定をした方が良いのですが、bodyタグ内に貼り付ける場合、不都合だと考えたからです。
 さくらのブログでは、JavaScriptファイルの読み込みやcssによるHTML全体レイアウトの編集が可能なのですが、head内の設定がブログの記事全般に適用されるようです。もしcssのclassの定義名が、他から読み込むcssファイルとかち合ってしまう可能性もあると考え、cssの定義を使わないようにしました。


(defun h-org2pdf-processing ()
  "org-modeのLaTeXエクスポートの結果を処理する。"
  (interactive)
  (let* ((bname (buffer-name))
         (directory default-directory)
       (sname
        (progn
          (string-match "\\(.+\\)\\..+" bname)
          (replace-match "\\1.tex" nil nil bname))))
    (save-excursion
      (call-interactively 'org-export-as-latex-to-buffer))
    (switch-to-buffer "*Org LaTeX Export*")
    (save-excursion
      (beginning-of-buffer)
      (h-gtlt2escape)
      (h-tex-preamble))
    (write-file sname)
    ;処理結果表示用のフレームを作成
    (message "Create File: %s" sname)

    (let* ((tex-file
            (expand-file-name sname directory))
           (target-file
            (progn
              (string-match "\\(.+\\)\\..+$" tex-file)
              (replace-match "\\1" nil nil tex-file)))
           (repeat 3) (flag t))
      (while (< 0 repeat)
        (setq flag (call-process "platex" nil  "compile TeX" nil tex-file))
        (if (= 0 flag)
            (progn (sleep-for 1) (setq repeat (- repeat 1)))
          (error "Tex compile Error!")))

      (setq flag (call-process "dvipdfmx" nil "compile Tex" nil
                               (format "%s.dvi" target-file)))
      (if (= 0 flag)
          ()
        (error "dvipdfmx Error!"))

    (setq nfrm (make-frame))
    (select-frame nfrm)
    (setq cw (frame-selected-window))
    (select-window cw)
    (get-buffer-create "compile Tex")
    (set-window-buffer cw "compile Tex")

      (call-process "evince" nil nil nil (format "%s.pdf" target-file)))))

(defun h-copy-word (arg)
  (interactive "p")
  (copy-region-as-kill-nomark (point)
                              (progn (forward-word arg) (point))))

;2008-12-18
(defun h-search-paragraph (word)
  (interactive "sWord: ")
  (save-excursion
    (let ((string "\n\n\n")
          (file "~/tmptmp/1234.txt")
          (fp 0) (sp 0))
      (goto-char (point-min))
      (while (search-forward word nil t)
        (unless (= fp (point))
          (progn (write-region
            (progn (point) (setq sp (point))(backward-sentence))
            (forward-sentence)
            file t)
           < (defun h-org2pdf-processing ()
  "org-modeのLaTeXエクスポートの結果を処理する。"
  (interactive)
  (let* ((bname (buffer-name))
         (directory default-directory)
       (sname
        (progn
          (string-match "\\(.+\\)\\..+" bname)
          (replace-match "\\1.tex" nil nil bname))))
    (save-excursion
      (call-interactively 'org-export-as-latex-to-buffer))
    (switch-to-buffer "*Org LaTeX Export*")
    (save-excursion
      (beginning-of-buffer)
      (h-gtlt2escape)
      (h-tex-preamble))
    (write-file sname)
    ;処理結果表示用のフレームを作成
    (message "Create File: %s" sname)

    (let* ((tex-file
            (expand-file-name sname directory))
           (target-file
            (progn
              (string-match "\\(.+\\)\\..+$" tex-file)
              (replace-match "\\1" nil nil tex-file)))
           (repeat 3) (flag t))
      (while (< 0 repeat)
        (setq flag (call-process "platex" nil  "compile TeX" nil tex-file))
        (if (= 0 flag)
            (progn (sleep-for 1) (setq repeat (- repeat 1)))
          (error "Tex compile Error!")))

      (setq flag (call-process "dvipdfmx" nil "compile Tex" nil
                               (format "%s.dvi" target-file)))
      (if (= 0 flag)
          ()
        (error "dvipdfmx Error!"))

    (setq nfrm (make-frame))
    (select-frame nfrm)
    (setq cw (frame-selected-window))
    (select-window cw)
    (get-buffer-create "compile Tex")
    (set-window-buffer cw "compile Tex")

      (call-process "evince" nil nil nil (format "%s.pdf" target-file)))))

(defun h-copy-word (arg)
  (interactive "p")
  (copy-region-as-kill-nomark (point)
                              (progn (forward-word arg) (point))))

;2008-12-18
(defun h-search-paragraph (word)
  (interactive "sWord: ")
  (save-excursion
    (let ((string "\n\n\n")
          (file "~/tmptmp/1234.txt")
          (fp 0) (sp 0))
      (goto-char (point-min))
      (while (search-forward word nil t)
        (unless (= fp (point))
          (progn (write-region
            (progn (point) (setq sp (point))(backward-sentence))
            (forward-sentence)
            file t)
           (write-region string nil file t)
           (setq fp sp)))))))
font color="#ff40ff">(
write-region string nil file t)
           (setq fp sp)))))))

 ソースコードの一部です。なお、シンタックスハイライトで、空白(スペース)になる次のコードが表示されていないみたいです。
nbsp;

(defun h-org2pdf-processing ()
  "org-modeのLaTeXエクスポートの結果を処理する。"
  (interactive)
  (let* ((bname (buffer-name))
         (directory default-directory)
       (sname


Powered by ScribeFire.

posted by hirono at 02:03| Comment(0) | TrackBack(0) | Vim
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/32900636

この記事へのトラックバック