3

初心者なので見落としがあったらすみません…

HTML ページに emacs org-mode を使用したいと考えています。「デフォルト」のセットアップはうまく機能していますが、無料の Web テンプレートの 1 つを使用したいと思います。たとえば、 http: //www.freecsstemplates.org/preview/goodlife/

これらのテンプレートは CSS ファイルを提供しますが、org-mode の HTML エクスポートで CSS を使用するだけでは十分ではないようです。これらのテンプレートを正しく使用するには、そのようなテンプレートに示されている HTML 構造を維持する必要があるようです。

org-mode に好きな HTML 構造 (つまり、フレーム分割) を生成させるにはどうすればよいですか?

「org-export-generic.el」によっていくつかのオプションが提供されているようです。一般的なエクスポートで 1 つの HTML ページを提供するように説得したとしても、HTML エクスポートを完全に解決することはできません....

4

2 に答える 2

2

org-mode マニュアルのこのセクションでは、html へのエクスポートと css の使用に関するガイダンスを提供しますhttp://orgmode.org/manual/CSS-support.html#CSS-support これには、org-mode が使用するデフォルト クラスの説明が含まれています。 CSS を変更できます。

CSS クラスと ID に一致するように組織モードのエクスポートを変更する場合は、組織の見出しで :HTML_CONTAINER_CLASS: プロパティを使用し、ID を作成するために :CUSTOM_ID: プロパティを使用します。

ファイルごとに設定する代わりに、組織モードの公開機能を使用して、多数の組織ファイルを 1 つの Web サイトに出力します。ここでチュートリアルを見つけることができますhttp://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html

私の org-publish-project-alist は次のようになります。

'(org-publish-project-alist (quote (("requirements" :components ("req-static" "req-org"))
   ("req-static" :base-directory "~/org/requirements" :publishing-directory "~/public_html/requirements/" :base-extension "gif\\|css" :publishing-function org-publish-attachment) 
   ("req-org" :base-directory "~/org/requirements/" :publishing-directory "~/public_html/requirements/" :style "<link rel=\"stylesheet\" type=\"text/css\" href=\"./style.css\" />" :section-numbers nil :headline-levels 3 :table-of-contents 2 :auto-sitemap t :sitemap-filename "index.org" :sitemap-title "Requirements for My Software" :link-home "./index.html"))
于 2013-01-14T20:45:19.483 に答える
0

同意します。組織の組み込みエクスポートによって生成された HTML は優れていますが、私が望むものとはまったく異なります。一般的なエクスポートは elisp に基づいているようですが、私は XSLT を好みます。

組織ファイルを XML に変換する次のコードを作成しましたが、公開変換はまだ作成していません。とにかく、特に組織文書の内部表現の構造を示しているので、これは参考になるかもしれません。

(require 'org-element)

(defvar xml-content-encode-map
  '((?& . "&amp;")
    (?< . "&lt;")
    (?> . "&gt;")))

(defvar xml-attribute-encode-map
  (cons '(?\" . "&quot;") xml-content-encode-map))

(defun write-xml (o out parents depth)
  "Writes O as XML to OUT, assuming that lists have a plist as
their second element (for representing attributes).  Skips basic
cycles (elements pointing to ancestor), and compound values for
attributes."
  (if (not (listp o))
      ;; TODO: this expression is repeated below
      (princ o (lambda (charcode)
                 (princ 
                  (or (aget xml-content-encode-map charcode)
                      (char-to-string charcode))
                  out)))

    (unless (member o parents)
      (let ((parents-and-self (cons o parents))
            (attributes (second o)))

        (dotimes (x depth) (princ "\t" out))
        (princ "<" out)
        (princ (car o) out)

        (loop for x on attributes by 'cddr do
              (let ((key (first x))
                    (value (second x)))

                (when (and value (not (listp value)))
                  (princ " " out)
                  (princ (substring (symbol-name key) 1) out)
                  (princ "=\"" out)
                  (princ value  (lambda (charcode)
                                  (princ 
                                   (or (aget xml-attribute-encode-map charcode)
                                       (char-to-string charcode))
                                   out)))
                  (princ "\"" out))))

        (princ ">\n" out)

        (loop for e in (cddr o)  do
              (write-xml e out parents-and-self (+ 1 depth)))

        (dotimes (x depth) (princ "\t" out))
        (princ "</" out)
        (princ (car o) out)
        (princ ">\n" out)))))

(defun org-file-to-xml (orgfile xmlfile)
  "Serialize ORGFILE file as XML to XMLFILE."
  (save-excursion
    (find-file orgfile)
    (let ((org-doc (org-element-parse-buffer)))
      (with-temp-file xmlfile
        (let ((buffer (current-buffer)))
          (princ "<?xml version='1.0'?>\n" buffer)
          (write-xml org-doc buffer () 0)
          (nxml-mode)))))
  (find-file xmlfile)
  (nxml-mode))

(defun org-to-xml ()
  "Export the current org file to XML and open in new buffer.
Does nothing if the current buffer is not in org-mode."
  (interactive)
  (when (eq major-mode 'org-mode)
    (org-file-to-xml
     (buffer-file-name)
     (concat (buffer-file-name) ".xml"))))
于 2013-01-14T18:42:27.697 に答える