summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJambunathan K <kjambunathan@gmail.com>2012-02-28 13:09:10 +0530
committerJambunathan K <kjambunathan@gmail.com>2012-02-28 13:09:10 +0530
commitd37b3681d643d7d30d243779e163b7be384b4abc (patch)
treedd156d9da7b6a64b3ac0f71050e4ade23965e112
parentd25dc1ed183d268a8555d8d6df04e4c50a267302 (diff)
downloadorg-mode-d37b3681d643d7d30d243779e163b7be384b4abc.tar.gz
org-e-odt: Few cleanups
-rw-r--r--EXPERIMENTAL/org-e-html.el62
-rw-r--r--EXPERIMENTAL/org-e-odt.el681
2 files changed, 95 insertions, 648 deletions
diff --git a/EXPERIMENTAL/org-e-html.el b/EXPERIMENTAL/org-e-html.el
index 8f5544f..cb39e12 100644
--- a/EXPERIMENTAL/org-e-html.el
+++ b/EXPERIMENTAL/org-e-html.el
@@ -890,12 +890,12 @@ order to reproduce the default set-up:
;;;; Emphasis
(defcustom org-e-html-emphasis-alist
- '(("*" . "\\textbf{%s}")
- ("/" . "\\emph{%s}")
- ("_" . "\\underline{%s}")
- ("+" . "\\st{%s}")
- ("=" . protectedtexttt)
- ("~" . verb))
+ '(("*" . "<b>%s</b>")
+ ("/" . "<i>%s</i>")
+ ("_" . "<span style=\"text-decoration:underline;\">%s</span>")
+ ("+" . "<del>%s</del>")
+ ("=" . "<code>%s</code>")
+ ("~" . "<code>%s</code>"))
"Alist of HTML expressions to convert emphasis fontifiers.
The key is the character used as a marker for fontification. The
@@ -1317,7 +1317,7 @@ that uses these same face definitions."
headline
;; tags
(and tags (concat
- (org-e-html-format-spaces 3)
+ "&nbsp;&nbsp;&nbsp;"
(org-e-html-format-fontify tags "tag")))))
;; fontify headline based on TODO keyword
(when todo (setq headline (org-e-html-format-fontify headline "todo")))
@@ -1430,18 +1430,6 @@ that uses these same face definitions."
(defun org-e-html-end-outline-text ()
(org-lparse-insert-tag "</div>"))
-(defun org-e-html-format-spaces (n)
- (let (out) (dotimes (i n out) (setq out (concat out "&nbsp;")))))
-
-(defun org-e-html-format-tabs (&optional n)
- (ignore))
-
-(defun org-e-html-format-line-break ()
- "<br/>\n")
-
-(defun org-e-html-format-horizontal-line ()
- "<hr/>\n")
-
;; (defun org-e-html-format-line (line)
;; (case org-lparse-dyn-current-environment
;; ((quote fixedwidth) (concat (org-e-html-encode-plain-text line) "\n"))
@@ -1522,7 +1510,7 @@ Replaces invalid characters with \"_\"."
x (concat org-e-html-tag-class-prefix
(org-e-html-fix-class-name x))))
(org-split-string tags ":")
- (org-e-html-format-spaces 1)) "tag")))
+ "&nbsp;") "tag")))
(defun org-e-html-format-section-number (&optional snumber level)
;; FIXME
@@ -1537,7 +1525,7 @@ Replaces invalid characters with \"_\"."
(org-e-html-format-extra-targets extra-targets)
(concat (org-e-html-format-section-number snumber level) " ")
title
- (and tags (concat (org-e-html-format-spaces 3)
+ (and tags (concat "&nbsp;&nbsp;&nbsp;"
(org-e-html-format-org-tags tags)))))
(defun org-e-html-format-footnote-reference (n def refcnt)
@@ -1989,18 +1977,8 @@ holding contextual information. See
"Transcode EMPHASIS from Org to HTML.
CONTENTS is the contents of the emphasized text. INFO is a plist
holding contextual information.."
- ;; (format (cdr (assoc (org-element-property :marker emphasis)
- ;; org-e-html-emphasis-alist))
- ;; contents)
- (org-e-html-format-fontify
- contents (cadr (assoc
- (org-element-property :marker emphasis)
- '(("*" bold)
- ("/" emphasis)
- ("_" underline)
- ("=" code)
- ("~" verbatim)
- ("+" strike))))))
+ (let* ((marker (org-element-property :marker emphasis)))
+ (format (cdr (assoc marker org-e-html-emphasis-alist)) contents)))
;;;; Entity
@@ -2399,8 +2377,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(let ((attr (mapconcat #'identity
(org-element-property :attr_html horizontal-rule)
" ")))
- (org-e-html--wrap-label horizontal-rule
- (org-e-html-format-horizontal-line))))
+ (org-e-html--wrap-label horizontal-rule "<hr/>\n")))
;;;; Inline Babel Call
@@ -2971,8 +2948,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
"Transcode a SUBSCRIPT object from Org to HTML.
CONTENTS is the contents of the object. INFO is a plist holding
contextual information."
- ;; (format (if (= (length contents) 1) "$_%s$" "$_{\\mathrm{%s}}$") contents)
- (org-e-html-format-fontify contents 'subscript))
+ (format "<sub>%s</sub>" contents))
;;;; Superscript
@@ -2981,8 +2957,7 @@ contextual information."
"Transcode a SUPERSCRIPT object from Org to HTML.
CONTENTS is the contents of the object. INFO is a plist holding
contextual information."
- ;; (format (if (= (length contents) 1) "$^%s$" "$^{\\mathrm{%s}}$") contents)
- (org-e-html-format-fontify contents 'superscript))
+ (format "<sup>%s</sup>" contents))
;;;; Table
@@ -3260,14 +3235,13 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(org-export-secondary-string
(org-element-property :value verse-block)
'e-html info)))))
-
;; Replace each white space at beginning of a line with a
;; non-breaking space.
(while (string-match "^[ \t]+" contents)
- (let ((new-str (org-e-html-format-spaces
- (length (match-string 0 contents)))))
- (setq contents (replace-match new-str nil t contents))))
-
+ (let* ((num-ws (length (match-string 0 contents)))
+ (ws (let (out) (dotimes (i num-ws out)
+ (setq out (concat out "&nbsp;"))))))
+ (setq contents (replace-match ws nil t contents))))
(org-e-html--wrap-label
verse-block (format "<p class=\"verse\">\n%s</p>" contents)))
diff --git a/EXPERIMENTAL/org-e-odt.el b/EXPERIMENTAL/org-e-odt.el
index 81e2a9b..fc76878 100644
--- a/EXPERIMENTAL/org-e-odt.el
+++ b/EXPERIMENTAL/org-e-odt.el
@@ -26,7 +26,6 @@
;;; Code:
(eval-when-compile
(require 'cl))
-(require 'org-lparse)
(defgroup org-export-e-odt nil
"Options specific for ODT export of Org-mode files."
@@ -34,11 +33,12 @@
:group 'org-export
:version "24.1")
-;; (defun org-e-odt-unload-function ()
-;; (org-lparse-unregister-backend 'odt)
-;; (remove-hook 'org-export-preprocess-after-blockquote-hook
-;; 'org-export-e-odt-preprocess-latex-fragments)
-;; nil)
+;; FIXMES
+;; org-export-preprocess-after-blockquote-hook
+;; org-export-e-odt-preprocess-latex-fragments
+;; org-export-as-e-odt-and-open
+;; org-export-as-e-odt-batch
+;; org-export-as-e-odt
(defun org-e-odt-get-style-name-for-entity (category &optional entity)
(let ((entity (or entity 'default)))
@@ -51,50 +51,6 @@
entity category))))
-;;;###autoload
-(defun org-export-as-e-odt-and-open (arg)
- "Export the outline as ODT and immediately open it with a browser.
-If there is an active region, export only the region.
-The prefix ARG specifies how many levels of the outline should become
-headlines. The default is 3. Lower levels will become bulleted lists."
- (interactive "P")
- (org-lparse-and-open
- (or org-export-e-odt-preferred-output-format "odt") "odt" arg))
-
-;;;###autoload
-(defun org-export-as-e-odt-batch ()
- "Call the function `org-lparse-batch'.
-This function can be used in batch processing as:
-emacs --batch
- --load=$HOME/lib/emacs/org.el
- --eval \"(setq org-export-headline-levels 2)\"
- --visit=MyFile --funcall org-export-as-e-odt-batch"
- (org-lparse-batch "odt"))
-
-;;; org-export-as-e-odt
-;;;###autoload
-(defun org-export-as-e-odt (arg &optional hidden ext-plist
- to-buffer body-only pub-dir)
- "Export the outline as a OpenDocumentText file.
-If there is an active region, export only the region. The prefix
-ARG specifies how many levels of the outline should become
-headlines. The default is 3. Lower levels will become bulleted
-lists. HIDDEN is obsolete and does nothing.
-EXT-PLIST is a property list with external parameters overriding
-org-mode's default settings, but still inferior to file-local
-settings. When TO-BUFFER is non-nil, create a buffer with that
-name and export to that buffer. If TO-BUFFER is the symbol
-`string', don't leave any buffer behind but just return the
-resulting XML as a string. When BODY-ONLY is set, don't produce
-the file header and footer, simply return the content of
-<body>...</body>, without even the body tags themselves. When
-PUB-DIR is set, use this as the publishing directory."
- (interactive "P")
- (org-lparse (or org-export-e-odt-preferred-output-format "odt")
- "odt" arg hidden ext-plist to-buffer body-only pub-dir))
-
-
-
;; Following variable is let bound when `org-do-lparse' is in
;; progress. See org-html.el.
@@ -198,49 +154,19 @@ PUB-DIR is set, use this as the publishing directory."
(format "%s:%s" (substring date 0 -2) (substring date -2)))))))
(defun org-e-odt-begin-annotation (&optional author date)
- (org-lparse-insert-tag "<office:annotation>")
- (when (setq author (org-e-odt-format-author author))
- (insert author))
- (insert (org-e-odt-format-tags
- '("<dc:date>" . "</dc:date>")
- (org-e-odt-format-date
- (or date (plist-get org-lparse-opt-plist :date)))))
- (org-lparse-begin-paragraph))
+ (concat
+ "<office:annotation>\n"
+ (and author (org-e-odt-format-author author))
+ (org-e-odt-format-tags
+ '("<dc:date>" . "</dc:date>")
+ (org-e-odt-format-date
+ (or date (plist-get org-lparse-opt-plist :date))))
+ (org-e-odt-begin-paragraph)))
(defun org-e-odt-end-annotation ()
- (org-lparse-insert-tag "</office:annotation>"))
-
-(defun org-e-odt-begin-environment (style env-options-plist)
- (case style
- (annotation
- (org-lparse-stash-save-paragraph-state)
- (org-e-odt-begin-annotation (plist-get env-options-plist 'author)
- (plist-get env-options-plist 'date)))
- ((blockquote verse center quote)
- (org-lparse-begin-paragraph style)
- (list))
- ((fixedwidth native)
- (org-lparse-end-paragraph)
- (list))
- (t (error "Unknown environment %s" style))))
-
-(defun org-e-odt-end-environment (style env-options-plist)
- (case style
- (annotation
- (org-lparse-end-paragraph)
- (org-e-odt-end-annotation)
- (org-lparse-stash-pop-paragraph-state))
- ((blockquote verse center quote)
- (org-lparse-end-paragraph)
- (list))
- ((fixedwidth native)
- (org-lparse-begin-paragraph)
- (list))
- (t (error "Unknown environment %s" style))))
+ "</office:annotation>")
(defun org-e-odt-begin-plain-list (ltype)
- ;; (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype)
- ;; ltype))
(let* ((style-name (org-e-odt-get-style-name-for-entity 'list ltype))
(extra (concat
;; (if (or org-lparse-list-table-p
@@ -261,14 +187,10 @@ PUB-DIR is set, use this as the publishing directory."
(t (error "Unknown list type: %s" ltype)))))
(defun org-e-odt-end-plain-list (ltype)
- ;; (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype)
- ;; ltype))
(if ltype "</text:list>"
(error "Unknown list type: %s" ltype)))
(defun org-e-odt-begin-list-item (ltype &optional arg headline)
- (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype)
- ltype))
(case ltype
(ordered
(assert (not headline) t)
@@ -303,8 +225,6 @@ PUB-DIR is set, use this as the publishing directory."
(t (error "Unknown list type"))))
(defun org-e-odt-end-list-item (ltype)
- ;; (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype)
- ;; ltype))
(case ltype
((ordered unordered)
;; (org-lparse-insert-tag
@@ -337,8 +257,6 @@ PUB-DIR is set, use this as the publishing directory."
do (org-lparse-begin-list list-type)
(org-lparse-begin-list-item list-type)))
-;; Following variables are let bound when table emission is in
-;; progress. See org-lparse.el.
(defun org-e-odt-write-automatic-styles ()
"Write automatic styles to \"content.xml\"."
(with-current-buffer
@@ -380,7 +298,7 @@ new entry in `org-e-odt-automatic-styles'. Return (OBJECT-NAME
(defun org-e-odt-format-table-columns ()
(let* ((num-cols (length (plist-get table-info :alignment)))
- (col-nos (loop for i from 1 below num-cols collect i))
+ (col-nos (loop for i from 0 below num-cols collect i))
(levels )
(col-widths (plist-get table-info :width))
(style (or (nth 1 org-e-odt-table-style-spec) "OrgTable")))
@@ -423,27 +341,9 @@ new entry in `org-e-odt-automatic-styles'. Return (OBJECT-NAME
;; (org-e-html-pp table-info)
- ;; (setq org-lparse-table-begin-marker (point))
)
(defun org-e-odt-end-table ()
- ;; fill style attributes for table cells
- (when org-lparse-table-is-styled
- (while (re-search-forward "@@\\(table-cell:p\\|table-cell:style-name\\)@@\\([0-9]+\\)@@\\([0-9]+\\)@@" nil t)
- (let* (;; (spec (match-string 1))
- ;; (r (string-to-number (match-string 2)))
- ;; (c (string-to-number (match-string 3)))
- (cell-styles (org-e-odt-get-table-cell-styles
- r c org-e-odt-table-style-spec))
- (table-cell-style (car cell-styles))
- (table-cell-paragraph-style (cdr cell-styles)))
- (cond
- ((equal spec "table-cell:p")
- (replace-match table-cell-paragraph-style t t))
- ((equal spec "table-cell:style-name")
- (replace-match table-cell-style t t))))))
- (goto-char (point-max))
-
(concat
"</table:table>"
;; (when org-e-odt-table-indentedp
@@ -594,12 +494,6 @@ styles congruent with the ODF-1.2 specification."
(setq s (concat s "\n<table:covered-table-cell/>"))) s)
"\n"))
-(defun org-e-odt-begin-footnote-definition (n)
- (org-lparse-begin-paragraph 'footnote))
-
-(defun org-e-odt-end-footnote-definition (n)
- (org-lparse-end-paragraph))
-
(defun org-e-odt-begin-toc (lang-specific-heading max-level)
(concat
(format "
@@ -962,23 +856,22 @@ value of `org-export-e-odt-fontify-srcblocks."
(target-dir (format "Formula-%04d/"
(incf org-e-odt-embedded-formulas-count)))
(target-file (concat target-dir "content.xml")))
- (when (not org-lparse-to-buffer)
- (message "Embedding %s as %s ..."
- (substring-no-properties path) target-file)
+ (message "Embedding %s as %s ..."
+ (substring-no-properties path) target-file)
+
+ (make-directory target-dir)
+ (org-e-odt-create-manifest-file-entry
+ "application/vnd.oasis.opendocument.formula" target-dir "1.2")
+
+ (case (org-e-odt-is-formula-link-p src-file)
+ (mathml
+ (copy-file src-file target-file 'overwrite))
+ (odf
+ (org-e-odt-zip-extract-one src-file "content.xml" target-dir))
+ (t
+ (error "%s is not a formula file" src-file)))
- (make-directory target-dir)
- (org-e-odt-create-manifest-file-entry
- "application/vnd.oasis.opendocument.formula" target-dir "1.2")
-
- (case (org-e-odt-is-formula-link-p src-file)
- (mathml
- (copy-file src-file target-file 'overwrite))
- (odf
- (org-e-odt-zip-extract-one src-file "content.xml" target-dir))
- (t
- (error "%s is not a formula file" src-file)))
-
- (org-e-odt-create-manifest-file-entry "text/xml" target-file))
+ (org-e-odt-create-manifest-file-entry "text/xml" target-file)
target-file))
(defun org-e-odt-format-inline-formula (thefile)
@@ -1274,7 +1167,6 @@ ATTR is a string of other attributes of the a element."
label caption (or category (nth 1 entity-style)))))
width height frame-params)))))
-
(defun org-e-odt-copy-image-file (path)
"Returns the internal name of the file"
(let* ((image-type (file-name-extension path))
@@ -1285,16 +1177,15 @@ ATTR is a string of other attributes of the a element."
(target-file
(format "%s%04d.%s" target-dir
(incf org-e-odt-embedded-images-count) image-type)))
- (when (not org-lparse-to-buffer)
- (message "Embedding %s as %s ..."
- (substring-no-properties path) target-file)
+ (message "Embedding %s as %s ..."
+ (substring-no-properties path) target-file)
- (when (= 1 org-e-odt-embedded-images-count)
- (make-directory target-dir)
- (org-e-odt-create-manifest-file-entry "" target-dir))
+ (when (= 1 org-e-odt-embedded-images-count)
+ (make-directory target-dir)
+ (org-e-odt-create-manifest-file-entry "" target-dir))
- (copy-file src-file target-file 'overwrite)
- (org-e-odt-create-manifest-file-entry media-type target-file))
+ (copy-file src-file target-file 'overwrite)
+ (org-e-odt-create-manifest-file-entry media-type target-file)
target-file))
(defun org-e-odt-do-image-size (probe-method file &optional dpi anchor-type)
@@ -1470,6 +1361,11 @@ ATTR is a string of other attributes of the a element."
org-e-odt-object-counters nil
org-e-odt-entity-counts-plist nil)
+ ;; let `htmlfontify' know that we are interested in collecting
+ ;; styles - FIXME
+
+ (setq hfy-user-sheet-assoc nil)
+
;; init conten.xml
(with-current-buffer
(find-file-noselect content-file t)
@@ -1501,7 +1397,7 @@ ATTR is a string of other attributes of the a element."
(let ((xml-files '("mimetype" "META-INF/manifest.xml" "content.xml"
"meta.xml"))
(zipdir default-directory))
- (when (equal org-lparse-backend 'odt)
+ (when (or t (equal org-lparse-backend 'odt)) ; FIXME
(push "styles.xml" xml-files))
(message "Switching to directory %s" (expand-file-name zipdir))
@@ -1632,17 +1528,15 @@ ATTR is a string of other attributes of the a element."
(set (make-local-variable 'backup-inhibited) t)
;; Import local setting of `org-export-with-section-numbers'
- (org-lparse-bind-local-variables opt-plist)
(org-e-odt-configure-outline-numbering
(if org-export-with-section-numbers org-export-headline-levels 0)))
;; Write custom styles for source blocks
- ;; (org-e-odt-insert-custom-styles-for-srcblocks FIXME
- ;; (mapconcat
- ;; (lambda (style)
- ;; (format " %s\n" (cddr style)))
- ;; hfy-user-sheet-assoc ""))
- )
+ (org-e-odt-insert-custom-styles-for-srcblocks
+ (mapconcat
+ (lambda (style)
+ (format " %s\n" (cddr style)))
+ hfy-user-sheet-assoc "")))
(defun org-e-odt-write-mimetype-file (format)
;; create mimetype file
@@ -2145,75 +2039,14 @@ standard Emacs.")
(defvar org-export-e-odt-org-styles-alist org-export-e-odt-default-org-styles-alist)
-(defvar org-e-odt-entity-control-callbacks-alist
- `((EXPORT
- . (org-e-odt-begin-export org-e-odt-end-export))
- (DOCUMENT-CONTENT
- . (org-e-odt-begin-document-content org-e-odt-end-document-content))
- (DOCUMENT-BODY
- . (org-e-odt-begin-document-body org-e-odt-end-document-body))
- (TOC
- . (org-e-odt-begin-toc org-e-odt-end-toc))
- (ENVIRONMENT
- . (org-e-odt-begin-environment org-e-odt-end-environment))
- (FOOTNOTE-DEFINITION
- . (org-e-odt-begin-footnote-definition org-e-odt-end-footnote-definition))
- (TABLE
- . (org-e-odt-begin-table org-e-odt-end-table))
- (TABLE-ROWGROUP
- . (org-e-odt-begin-table-rowgroup org-e-odt-end-table-rowgroup))
- (LIST
- . (org-e-odt-begin-list org-e-odt-end-list))
- (LIST-ITEM
- . (org-e-odt-begin-list-item org-e-odt-end-list-item))
- (OUTLINE
- . (org-e-odt-begin-outline org-e-odt-end-outline))
- (OUTLINE-TEXT
- . (org-e-odt-begin-outline-text org-e-odt-end-outline-text))
- (PARAGRAPH
- . (org-e-odt-begin-paragraph org-e-odt-end-paragraph)))
- "")
-
-(defvar org-e-odt-entity-format-callbacks-alist
- `((EXTRA-TARGETS . org-lparse-format-extra-targets)
- (ORG-TAGS . org-lparse-format-org-tags)
- (SECTION-NUMBER . org-lparse-format-section-number)
- (HEADLINE . org-e-odt-format-headline)
- (TOC-ENTRY . org-e-odt-format-toc-entry)
- (TOC-ITEM . org-e-odt-format-toc-item)
- (TAGS . org-e-odt-format-tags)
- (SPACES . org-e-odt-format-spaces)
- (TABS . org-e-odt-format-tabs)
- (LINE-BREAK . org-e-odt-format-line-break)
- (FONTIFY . org-e-odt-format-fontify)
- (TODO . org-lparse-format-todo)
- (LINK . org-e-odt-format-link)
- (INLINE-IMAGE . org-e-odt-format-inline-image)
- (ORG-LINK . org-e-odt-format-org-link)
- (HEADING . org-e-odt-format-heading)
- (ANCHOR . org-e-odt-format-anchor)
- (TABLE . org-lparse-format-table)
- (TABLE-ROW . org-e-odt-format-table-row)
- (TABLE-CELL . org-e-odt-format-table-cell)
- (FOOTNOTES-SECTION . ignore)
- (FOOTNOTE-REFERENCE . org-e-odt-format-footnote-reference)
- (HORIZONTAL-LINE . org-e-odt-format-horizontal-line)
- (COMMENT . org-e-odt-format-comment)
- (LINE . org-e-odt-format-line)
- (ORG-ENTITY . org-e-odt-format-org-entity))
- "")
-
;;;_. callbacks
;;;_. control callbacks
;;;_ , document body
-(defvar org-lparse-toc)
(defvar org-lparse-body-only) ; let bound during org-do-lparse
-(defvar org-lparse-to-buffer) ; let bound during org-do-lparse
(defvar org-lparse-opt-plist) ; bound during org-do-lparse
(defvar org-lparse-list-stack) ; dynamically bound in org-do-lparse
(defvar org-e-odt-list-stack-stashed)
-(defvar org-lparse-table-begin-marker)
(defvar org-lparse-table-ncols)
(defvar org-e-odt-table-rowgrp-open)
(defvar org-e-odt-table-rownum)
@@ -3261,54 +3094,6 @@ string defines the replacement string for this quote."
(substring style (match-beginning 0)))
style))
-(defun org-export-e-odtize-region-for-paste (beg end)
- "Convert the region to HTML, using htmlize.el.
-This is much like `htmlize-region-for-paste', only that it uses
-the settings define in the org-... variables."
- (let* ((htmlize-output-type org-export-e-odtize-output-type)
- (htmlize-css-name-prefix org-export-e-odtize-css-font-prefix)
- (htmlbuf (htmlize-region beg end)))
- (unwind-protect
- (with-current-buffer htmlbuf
- (buffer-substring (plist-get htmlize-buffer-places 'content-start)
- (plist-get htmlize-buffer-places 'content-end)))
- (kill-buffer htmlbuf))))
-
-;;;###autoload
-(defun org-export-e-odtize-generate-css ()
- "Create the CSS for all font definitions in the current Emacs session.
-Use this to create face definitions in your CSS style file that can then
-be used by code snippets transformed by htmlize.
-This command just produces a buffer that contains class definitions for all
-faces used in the current Emacs session. You can copy and paste the ones you
-need into your CSS file.
-
-If you then set `org-export-e-odtize-output-type' to `css', calls to
-the function `org-export-e-odtize-region-for-paste' will produce code
-that uses these same face definitions."
- (interactive)
- (require 'htmlize)
- (and (get-buffer "*html*") (kill-buffer "*html*"))
- (with-temp-buffer
- (let ((fl (face-list))
- (htmlize-css-name-prefix "org-")
- (htmlize-output-type 'css)
- f i)
- (while (setq f (pop fl)
- i (and f (face-attribute f :inherit)))
- (when (and (symbolp f) (or (not i) (not (listp i))))
- (insert (org-add-props (copy-sequence "1") nil 'face f))))
- (htmlize-region (point-min) (point-max))))
- (org-pop-to-buffer-same-window "*html*")
- (goto-char (point-min))
- (if (re-search-forward "<style" nil t)
- (delete-region (point-min) (match-beginning 0)))
- (if (re-search-forward "</style>" nil t)
- (delete-region (1+ (match-end 0)) (point-max)))
- (beginning-of-line 1)
- (if (looking-at " +") (replace-match ""))
- (goto-char (point-min)))
-
;; (defun org-e-odt-format-toc-entry (snumber todo headline tags href)
;; (setq headline (concat
;; ;; section number
@@ -3375,11 +3160,6 @@ that uses these same face definitions."
(defun org-e-odt-end-outline ()
(org-lparse-insert-tag "</div>"))
-
-;; (defun org-e-odt-format-heading (text level &optional id)
-;; (let* ((extra (concat (when id (format " id=\"%s\"" id)))))
-;; (concat (format "<h%d%s>" level extra) text (format "</h%d>" level))))
-
(defun org-e-odt-suffix-from-snumber (snumber)
(let* ((snu (replace-regexp-in-string "\\." "-" snumber))
(href (cdr (assoc (concat "sec-" snu)
@@ -3394,32 +3174,11 @@ that uses these same face definitions."
level1 target)
contents))
-;; (defun org-e-odt-begin-outline-text (level1 snumber extra-class)
-;; (let* ((class (format "outline-text-%d" level1))
-;; (class (if extra-class (concat class " " extra-class) class))
-;; (id (format "text-%s" (org-lparse-suffix-from-snumber snumber)))
-;; (extra (concat (when id (format " id=\"%s\"" id))
-;; (when class (format " class=\"%s\"" class)))))
-;; (org-lparse-insert-tag "<div%s>" extra)))
-
-;; (defun org-e-odt-end-outline-text ()
-;; (org-lparse-insert-tag "</div>"))
-
-;; (defun org-e-odt-format-spaces (n)
-;; (let (out) (dotimes (i n out) (setq out (concat out "&nbsp;")))))
-
-(defun org-e-odt-format-tabs (&optional n)
- (ignore))
-
;; (defun org-e-odt-format-line (line)
;; (case org-lparse-dyn-current-environment
;; ((quote fixedwidth) (concat (org-e-odt-encode-plain-text line) "\n"))
;; (t (concat line "\n"))))
-(defun org-e-odt-format-comment (fmt &rest args)
- (let ((comment (apply 'format fmt args)))
- (format "\n<!-- %s -->\n" comment)))
-
(defun org-e-odt-fix-class-name (kwd) ; audit callers of this function
"Turn todo keyword into a valid class name.
Replaces invalid characters with \"_\"."
@@ -3428,52 +3187,9 @@ Replaces invalid characters with \"_\"."
(setq kwd (replace-match "_" t t kwd))))
kwd)
-;; (defun org-e-odt-format-fontify (text style &optional id)
-;; (let (class extra how)
-;; (cond
-;; ((eq style 'underline)
-;; (setq extra " style=\"text-decoration:underline;\"" ))
-;; ((setq how (cdr (assoc style
-;; '((bold . ("<b>" . "</b>"))
-;; (emphasis . ("<i>" . "</i>"))
-;; (code . ("<code>" . "</code>"))
-;; (verbatim . ("<code>" . "</code>"))
-;; (strike . ("<del>" . "</del>"))
-;; (subscript . ("<sub>" . "</sub>"))
-;; (superscript . ("<sup>" . "</sup>")))))))
-;; ((listp style)
-;; (setq class (mapconcat 'identity style " ")))
-;; ((stringp style)
-;; (setq class style))
-;; (t (error "Unknown style %S" style)))
-
-;; (setq extra (concat (when class (format " class=\"%s\"" class))
-;; (when id (format " id=\"%s\"" id))
-;; extra))
-
-;; (let ((tags (or how '("<span%s>" . "</span>"))))
-;; (concat (format (car tags) extra) text (cdr tags)))))
-
-;; (defun org-e-odt-format-link (text href &optional extra)
-;; (let ((extra (concat (format " href=\"%s\"" href)
-;; (and extra (concat " " extra)))))
-;; (format "<a%s>%s</a>" extra text)))
-
(defun org-e-odt-format-internal-link (text href &optional extra)
(org-e-odt-format-link text (concat "#" href) extra))
-;; (defun org-e-odt-format-heading (text level &optional id)
-;; (let* ((extra (concat (when id (format " id=\"%s\"" id)))))
-;; (concat (format "<h%d%s>" level extra) text (format "</h%d>\n" level))))
-
-;; (defun org-e-odt-format-anchor (text name &optional class)
-;; (let* ((id name)
-;; (extra (concat
-;; (when name (format " name=\"%s\"" name))
-;; (when id (format " id=\"%s\"" id))
-;; (when class (format " class=\"%s\"" class)))))
-;; (format "<a%s>%s</a>" extra text)))
-
(defun org-e-odt-format-extra-targets (extra-targets)
(if (not extra-targets) ""
(mapconcat (lambda (x)
@@ -3509,26 +3225,6 @@ Replaces invalid characters with \"_\"."
;; (and tags (concat (org-e-odt-format-spaces 3)
;; (org-e-odt-format-org-tags tags)))))
-;; (defun org-e-odt-format-footnote-reference (n def refcnt)
-;; (let ((extra (if (= refcnt 1) "" (format ".%d" refcnt))))
-;; (format org-e-odt-footnote-format
-;; (format
-;; "<a class=\"footref\" name=\"fnr.%s%s\" href=\"#fn.%s\">%s</a>"
-;; n extra n n))))
-
-(defun org-e-odt-format-footnotes-section (section-name definitions)
- (if (not definitions) ""
- (format org-e-odt-footnotes-section section-name definitions)))
-
-;; (defun org-e-odt-format-footnote-definition (fn)
-;; (let ((n (car fn)) (def (cdr fn)))
-;; (format
-;; "<tr>\n<td>%s</td>\n<td>%s</td>\n</tr>\n"
-;; (format
-;; (format org-e-odt-footnote-format
-;; "<a class=\"footnum\" name=\"fn.%s\" href=\"#fnr.%s\">%s</a>")
-;; n n n) def)))
-
(defun org-e-odt-get-coding-system-for-write ()
(or org-e-odt-coding-system
(and (boundp 'buffer-file-coding-system) buffer-file-coding-system)))
@@ -3666,9 +3362,7 @@ original parsed data. INFO is a plist holding export options."
"Transcode a CENTER-BLOCK element from Org to HTML.
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
- (org-e-odt--wrap-label
- center-block
- (format "<div style=\"text-align: center\">\n%s</div>" contents)))
+ (org-e-odt--wrap-label center-block contents))
;;;; Comment
@@ -3742,166 +3436,11 @@ contextual information."
;;;; Example Block
-
-;; (defun org-odt-format-source-code-or-example-colored
-;; (lines lang caption textareap cols rows num cont rpllbl fmt))
-
-;; (defun org-e-odt-format-source-code-or-example-plain
-;; (lines lang caption textareap cols rows num cont rpllbl fmt)
-;; (setq lines
-;; (concat
-;; "<pre class=\"example\">\n"
-;; (cond
-;; (textareap
-;; (concat
-;; (format "<p>\n<textarea cols=\"%d\" rows=\"%d\">"
-;; cols rows)
-;; lines "</textarea>\n</p>\n"))
-;; (t
-;; (with-temp-buffer
-;; (insert lines)
-;; (goto-char (point-min))
-;; (while (re-search-forward "[<>&]" nil t)
-;; (replace-match (cdr (assq (char-before)
-;; '((?&."&amp;")(?<."&lt;")(?>."&gt;"))))
-;; t t))
-;; (buffer-string))))
-;; "</pre>\n"))
-
-;; (unless textareap
-;; (setq lines (org-export-number-lines lines 1 1 num cont rpllbl fmt)))
-
-;; ;; (when (string-match "\\(\\`<[^>]*>\\)\n" lines)
-;; ;; (setq lines (replace-match "\\1" t nil lines)))
-
-;; lines)
-
-;; (defun org-e-odt-format-source-code-or-example-colored
-;; (lines lang caption textareap cols rows num cont rpllbl fmt)
-;; (let* ((lang-m (when lang
-;; (or (cdr (assoc lang org-src-lang-modes))
-;; lang)))
-;; (mode (and lang-m (intern
-;; (concat
-;; (if (symbolp lang-m)
-;; (symbol-name lang-m)
-;; lang-m)
-;; "-mode"))))
-;; (org-inhibit-startup t)
-;; (org-startup-folded nil))
-;; (setq lines
-;; (with-temp-buffer
-;; (insert lines)
-;; (if (functionp mode)
-;; (funcall mode)
-;; (fundamental-mode))
-;; (font-lock-fontify-buffer)
-;; ;; markup each line separately
-;; (org-remove-formatting-on-newlines-in-region
-;; (point-min) (point-max))
-;; (org-src-mode)
-;; (set-buffer-modified-p nil)
-;; (org-export-e-odtize-region-for-paste
-;; (point-min) (point-max))))
-
-;; (when (string-match "<pre\\([^>]*\\)>\n*" lines)
-;; (setq lines (replace-match
-;; (format "<pre class=\"src src-%s\">\n" lang) t t lines)))
-
-;; (when caption
-;; (setq lines
-;; (concat
-;; "<div class=\"org-src-container\">"
-;; (format "<label class=\"org-src-name\">%s</label>" caption)
-;; lines "</div>")))
-
-;; (unless textareap
-;; (setq lines (org-export-number-lines lines 1 1 num cont rpllbl fmt)))
-
-;; ;; (when (string-match "\\(\\`<[^>]*>\\)\n" lines)
-;; ;; (setq lines (replace-match "\\1" t nil lines)))
-;; lines))
-
-;; (defun org-e-odt-format-source-code-or-example
-;; (lang code &optional opts indent caption)
-;; "Format CODE from language LANG and return it formatted for export.
-;; The CODE is marked up in `org-export-current-backend' format.
-
-;; Check if a function by name
-;; \"org-<backend>-format-source-code-or-example\" is bound. If yes,
-;; use it as the custom formatter. Otherwise, use the default
-;; formatter. Default formatters are provided for docbook, html,
-;; latex and ascii backends. For example, use
-;; `org-e-odt-format-source-code-or-example' to provide a custom
-;; formatter for export to \"html\".
-
-;; If LANG is nil, do not add any fontification.
-;; OPTS contains formatting options, like `-n' for triggering numbering lines,
-;; and `+n' for continuing previous numbering.
-;; Code formatting according to language currently only works for HTML.
-;; Numbering lines works for all three major backends (html, latex, and ascii).
-;; INDENT was the original indentation of the block."
-;; (save-match-data
-;; (let* ((backend-formatter 'org-e-odt-format-source-code-or-example-plain)
-;; num cont rtn rpllbl keepp textareap preserve-indentp cols rows fmt)
-;; (setq opts (or opts "")
-;; num (string-match "[-+]n\\>" opts)
-;; cont (string-match "\\+n\\>" opts)
-;; rpllbl (string-match "-r\\>" opts)
-;; keepp (string-match "-k\\>" opts)
-;; textareap (string-match "-t\\>" opts)
-;; preserve-indentp (or org-src-preserve-indentation
-;; (string-match "-i\\>" opts))
-;; cols (if (string-match "-w[ \t]+\\([0-9]+\\)" opts)
-;; (string-to-number (match-string 1 opts))
-;; 80)
-;; rows (if (string-match "-h[ \t]+\\([0-9]+\\)" opts)
-;; (string-to-number (match-string 1 opts))
-;; (org-count-lines code))
-;; fmt (if (string-match "-l[ \t]+\"\\([^\"\n]+\\)\"" opts)
-;; (match-string 1 opts)))
-;; (when (and textareap
-;; ;; (eq org-export-current-backend 'html)
-;; )
-;; ;; we cannot use numbering or highlighting.
-;; (setq num nil cont nil lang nil))
-;; (if keepp (setq rpllbl 'keep))
-;; (setq rtn (if preserve-indentp code (org-remove-indentation code)))
-;; (when (string-match "^," rtn)
-;; (setq rtn (with-temp-buffer
-;; (insert rtn)
-;; ;; Free up the protected lines
-;; (goto-char (point-min))
-;; (while (re-search-forward "^," nil t)
-;; (if (or (equal lang "org")
-;; (save-match-data
-;; (looking-at "\\([*#]\\|[ \t]*#\\+\\)")))
-;; (replace-match ""))
-;; (end-of-line 1))
-;; (buffer-string))))
-;; (when lang
-;; (if (featurep 'xemacs)
-;; (require 'htmlize)
-;; (require 'htmlize nil t)))
-
-;; (setq backend-formatter
-;; (cond
-;; ((fboundp 'htmlize-region-for-paste)
-;; 'org-e-odt-format-source-code-or-example-colored)
-;; (t
-;; (message
-;; "htmlize.el 1.34 or later is needed for source code formatting")
-;; 'org-e-odt-format-source-code-or-example-plain)))
-;; (funcall backend-formatter rtn lang caption textareap cols rows
-;; num cont rpllbl fmt))))
-
(defun org-e-odt-example-block (example-block contents info)
"Transcode a EXAMPLE-BLOCK element from Org to HTML.
CONTENTS is nil. INFO is a plist holding contextual information."
(let* ((options (or (org-element-property :options example-block) ""))
(value (org-export-handle-code example-block info)))
- ;; (org-e-odt--wrap-label
- ;; example-block (format "\\begin{verbatim}\n%s\\end{verbatim}" value))
(org-e-odt--wrap-label
example-block (org-e-odt-format-source-code-or-example value nil))))
@@ -4257,13 +3796,13 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(string-to-number (match-string 0 value)))
(plist-get info :with-toc))))
(when (wholenump depth) (org-e-odt-toc depth info))))
- ((string= "tables" value) "\\listoftables")
- ((string= "figures" value) "\\listoffigures")
+ ((string= "tables" value) "FIXME")
+ ((string= "figures" value) "FIXME")
((string= "listings" value)
(cond
;; At the moment, src blocks with a caption are wrapped
;; into a figure environment.
- (t "\\listoffigures")))))))))
+ (t "FIXME")))))))))
;;;; Latex Environment
@@ -4341,7 +3880,7 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(defun org-e-odt-line-break (line-break contents info)
"Transcode a LINE-BREAK object from Org to HTML.
CONTENTS is nil. INFO is a plist holding contextual information."
- "<br/>")
+ "<text:line-break/>\n")
;;;; Link
@@ -4487,14 +4026,13 @@ the plist used as a communication channel."
(class (cdr (assoc style '((footnote . "footnote")
(verse . nil)))))
(extra (if class (format " class=\"%s\"" class) ""))
- (parent (car (org-export-get-genealogy paragraph info))))
- (cond
- ;; ((and (equal (car parent) 'item)
- ;; (= (org-element-property :begin paragraph)
- ;; (org-element-property :contents-begin parent)))
- ;; ;; leading paragraph in a list item have no tags
- ;; contents)
- (t (org-e-odt-format-stylized-paragraph nil contents)))))
+ (parent (car (org-export-get-genealogy paragraph info)))
+ (parent-type (org-element-type parent))
+ (style (case parent-type
+ (quote-block 'quote)
+ (center-block 'center)
+ (t nil))))
+ (org-e-odt-format-stylized-paragraph style contents)))
;;;; Plain List
@@ -4589,8 +4127,7 @@ information."
"Transcode a QUOTE-BLOCK element from Org to HTML.
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
- (org-e-odt--wrap-label
- quote-block (format "<blockquote>\n%s</blockquote>" contents)))
+ (org-e-odt--wrap-label quote-block contents))
;;;; Quote Section
@@ -4600,7 +4137,7 @@ holding contextual information."
CONTENTS is nil. INFO is a plist holding contextual information."
(let ((value (org-remove-indentation
(org-element-property :value quote-section))))
- (when value (format "<pre>\n%s</pre>" value))))
+ (when value (org-e-odt-format-source-code-or-example value nil))))
;;;; Section
@@ -4684,42 +4221,9 @@ contextual information."
;;;; Table
-;; (defun org-e-odt-begin-table (caption label attributes)
-;; (let* ((html-table-tag (or (plist-get info :html-table-tag) ; FIXME
-;; org-e-odt-table-tag))
-;; (html-table-tag
-;; (org-e-odt-splice-attributes html-table-tag attributes)))
-;; (when label
-;; (setq html-table-tag
-;; (org-e-odt-splice-attributes
-;; html-table-tag
-;; (format "id=\"%s\"" (org-solidify-link-text label)))))
-;; (concat "\n" html-table-tag
-;; (format "\n<caption>%s</caption>" (or caption "")))))
-
-;; (defun org-e-odt-end-table ()
-;; "</table>\n")
-
-;; (defun org-e-odt-format-table-cell (text r c horiz-span)
-;; (let ((cell-style-cookie
-;; (if org-e-odt-table-align-individual-fields
-;; (format (if (and (boundp 'org-e-odt-format-table-no-css)
-;; org-e-odt-format-table-no-css)
-;; " align=\"%s\"" " class=\"%s\"")
-;; (or (aref (plist-get table-info :alignment) c) "left")) ""))) ;; FIXME
-;; (cond
-;; (org-e-odt-table-cur-rowgrp-is-hdr
-;; (concat
-;; (format (car org-export-table-header-tags) "col" cell-style-cookie)
-;; text (cdr org-export-table-header-tags)))
-;; ((and (= c 0) org-e-odt-table-use-header-tags-for-first-column)
-;; (concat
-;; (format (car org-export-table-header-tags) "row" cell-style-cookie)
-;; text (cdr org-export-table-header-tags)))
-;; (t
-;; (concat
-;; (format (car org-export-table-data-tags) cell-style-cookie)
-;; text (cdr org-export-table-data-tags))))))
+(defun org-e-odt-get-colwidth (c)
+ (let ((col-widths (plist-get table-info :width)))
+ (or (and org-lparse-table-is-styled (aref col-widths c)) 0)))
(defun org-e-odt-table-row (fields &optional text-for-empty-fields)
(incf org-e-odt-table-rownum)
@@ -4730,25 +4234,11 @@ contextual information."
(when (and (string= x "") text-for-empty-fields)
(setq x text-for-empty-fields))
(incf i)
- (let (horiz-span)
+ (let ((horiz-span (org-e-odt-get-colwidth i)))
(org-e-odt-format-table-cell
- x org-e-odt-table-rownum i (or horiz-span 0))))
+ x org-e-odt-table-rownum i horiz-span)))
fields "\n"))))
-;; (defun org-e-odt-end-table-rowgroup ()
-;; (when org-e-odt-table-rowgrp-open
-;; (setq org-e-odt-table-rowgrp-open nil)
-;; (if org-e-odt-table-cur-rowgrp-is-hdr "</thead>" "</tbody>")))
-
-;; (defun org-e-odt-begin-table-rowgroup (&optional is-header-row)
-;; (concat
-;; (when org-e-odt-table-rowgrp-open
-;; (org-e-odt-end-table-rowgroup))
-;; (progn
-;; (setq org-e-odt-table-rowgrp-open t)
-;; (setq org-e-odt-table-cur-rowgrp-is-hdr is-header-row)
-;; (if is-header-row "<thead>" "<tbody>"))))
-
(defun org-e-odt-table-preamble ()
(let ((colgroup-vector (plist-get table-info :column-groups)) ;; FIXME
c gr colgropen preamble)
@@ -4878,7 +4368,11 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(columns-number (length (plist-get table-info :alignment)))
(lines (org-split-string
(org-export-clean-table
- raw-table (plist-get table-info :special-column-p)) "\n")))
+ raw-table (plist-get table-info :special-column-p)) "\n"))
+
+ (genealogy (org-export-get-genealogy table info))
+ (parent (car genealogy))
+ (parent-type (org-element-type parent)))
(org-e-odt-list-table lines caption label attr))))))
@@ -4971,24 +4465,8 @@ CONTENTS is nil. INFO is a plist holding contextual information."
;;; Filter Functions
;;;; Filter Settings
-
-(defconst org-e-odt-filters-alist
- '((:filter-final-output . org-e-odt-final-function))
- "Alist between filters keywords and back-end specific filters.
-See `org-export-filters-alist' for more information.")
-
-
;;;; Filters
-(defun org-e-odt-final-function (contents backend info)
- (if (not org-export-e-odt-prettify-xml) contents
- (with-temp-buffer
- (nxml-mode)
- (insert contents)
- (indent-region (point-min) (point-max))
- (buffer-substring-no-properties (point-min) (point-max)))))
-
-
;;; Interactive functions
(defun org-e-odt-export-to-odt
@@ -5105,15 +4583,10 @@ Return output file's name."
(cons (concat "\\." (car desc) "\\'") 'archive-mode)))
org-e-odt-file-extensions)
-;; register the odt exporter with the pre-processor
-(add-to-list 'org-export-backends 'odt)
-
-;; register the odt exporter with org-lparse library
-(org-lparse-register-backend 'odt)
-
-(eval-after-load 'org-exp
- '(add-to-list 'org-export-inbuffer-options-extra
- '("ODT_STYLES_FILE" :odt-styles-file)))
+;; FIXME
+;; (eval-after-load 'org-exp
+;; '(add-to-list 'org-export-inbuffer-options-extra
+;; '("ODT_STYLES_FILE" :odt-styles-file)))
(provide 'org-e-odt)