私はこのカスタムelisp関数を使用して、選択した領域またはバッファー全体を、フォントを構文化したHTMLに変換します。
(defvar modi/htmlize-output-directory
(let ((dir (concat temporary-file-directory
(getenv "USER") "/.htmlize/"))) ; must end with /
(make-directory dir :parents)
dir)
"Output directory for files exported by `modi/htmlize-region-to-file'.")
(defvar modi/htmlize-css-file (concat user-emacs-directory
"misc/css/leuven_theme.css")
"CSS file to be embedded in the html file created using the
`modi/htmlize-region-to-file' function.")
(defun modi/htmlize-region-to-file (option)
"Export the selected region to an html file. If a region is not
selected, export the whole buffer.
The output file is saved to `modi/htmlize-output-directory' and its fontification
is done using `modi/htmlize-css-file'.
If OPTION is non-nil (for example, using `\\[universal-argument]' prefix), copy
the output file name to kill ring.
If OPTION is \\='(16) (using `\\[universal-argument] \\[universal-argument]' prefix),
do the above and also open the html file in the default browser."
(interactive "P")
(let ((org-html-htmlize-output-type 'css)
(org-html-htmlize-font-prefix "org-")
(fname (concat modi/htmlize-output-directory
(if (buffer-file-name)
(file-name-nondirectory (buffer-file-name))
"temp")
".html"))
start end html-string)
(if (use-region-p)
(progn
(setq start (region-beginning))
(setq end (region-end)))
(progn
(setq start (point-min))
(setq end (point-max))))
(setq html-string (org-html-htmlize-region-for-paste start end))
(with-temp-buffer
;; Insert the `modi/htmlize-css-file' contents in the temp buffer
(insert-file-contents modi/htmlize-css-file nil nil nil :replace)
;; Go to the beginning of the buffer and insert comments and
;; opening tags for `html', `head' and `style'. These are
;; inserted *above* the earlier inserted css code.
(goto-char (point-min))
(insert (concat "<!-- This file is generated using the "
"`modi/htmlize-region-to-file' function\n"
"from https://github.com/kaushalmodi/.emacs.d/"
"blob/master/setup-files/setup-org.el -->\n"))
(insert "<html>\n<head>\n<style media=\"screen\" type=\"text/css\">\n")
;; Go to the end of the buffer (end of the css code) and
;; insert the closing tags for `style' and `head' and opening
;; tag for `body'.
(goto-char (point-max))
(insert "</style>\n</head>\n<body>\n")
;; Insert the HTML for fontified text in `html-string'.
(insert html-string)
;; Close the `body' and `html' tags.
(insert "</body>\n</html>\n")
(write-file fname)
(when option
(kill-new fname)
(when (= 16 (car option))
(browse-url-of-file fname))))))
modi/htmlize-region-to-file
関数に関するいくつかのポイントを次に示します。
- 地域を選択すると、その地域のみが
modi/htmlize-output-directory
ディレクトリ内のHTMLファイルにエクスポートされます。
- リージョンが選択されていない場合、バッファ全体がエクスポートされます。
- 舞台裏でパッケージを使用する関数を使用し、フォント化のためにCSSをHTMLコードに関連付ける方法をカスタマイズできるようにするため、
ox-html
(org-mode
HTMLエクスポーター)が必要です。org-html-htmlize-region-for-paste
htmlize
modi/htmlize-css-file
変数で指定されたcssファイルに基づいてコードをフォント化できます。この関数をすぐに使用するには、このカスタムルーベンテーマベースのcssファイルをどこかに保存し、この変数をそのファイルパスに設定します。そのcssファイルを使用する場合、エクスポートされたコードには、emacsテーマに関係なく常にLeuvenテーマが含まれます(これは、この関数を書くための唯一の目的でした)。
region-bindings-mode
パッケージのインストールをお勧めします。それがインストールされたら、エクスポートしたいリージョンを選択してヒットしHます。コードはのHTMLファイルに保存されmodi/htmlize-output-directory
ます。
(with-eval-after-load 'region-bindings-mode
(define-key region-bindings-mode-map (kbd "H") #'modi/htmlize-region-to-file))
実行するC-u H
と、コードがエクスポートされ、出力ファイル名がkill-ringにコピーされます。
- その場合は
C-u C-u H
代わりに、それは上記とも使用してデフォルトのブラウザでHTMLファイルを開いて行いますbrowse-url-of-file
機能を。
以下はC-u C-u H
、上記のコードの一部を実行したときにWebブラウザーで取得したものです。
注: HTMLをファイルに保存する必要があります。Outlook / Wordに貼り付けるときに、クリップボードのHTMLコードをレンダリングされたHTMLに直接変換する方法がわからないため、HTML注釈付きコードをクリップボードに保存するだけでは機能しません。