Browse Source

Introduce org-odt-begin-table-cell and org-odt-end-table-cell

* contrib/lisp/org-odt.el
(org-odt-entity-control-callbacks-alist): Added an entry for
TABLE-CELL.
(org-odt-begin-paragraph, org-odt-format-stylized-paragraph):
Honour `org-lparse-current-paragraph-style'.
(org-odt-begin-table-cell, org-odt-end-table-cell): Factored
out from the earlier `org-odt-format-table-cell'. Note that
these functions set and reset
`org-lparse-current-paragraph-style'.
(org-odt-format-table-cell): Use the above functions.
* contrib/lisp/org-lparse.el
(org-lparse-current-paragraph-style): New variable.
(org-do-lparse): Init the above variable at the beginning of
export.
Jambunathan K 13 years ago
parent
commit
e887881e13
2 changed files with 32 additions and 9 deletions
  1. 8 1
      contrib/lisp/org-lparse.el
  2. 24 8
      contrib/lisp/org-odt.el

+ 8 - 1
contrib/lisp/org-lparse.el

@@ -693,6 +693,12 @@ and then converted to \"doc\" then org-lparse-backend is set to
 (defvar org-lparse-to-buffer nil
   "Bind this to TO-BUFFER arg of `org-lparse'.")
 
+(defvar org-lparse-current-paragraph-style nil
+  "Default paragraph style to use.
+Exporter sets or resets this as it enters and leaves special
+contexts.  Currently this is used for formatting of paragraphs
+that are part of table-cells created from list-tables.")
+
 (defun org-do-lparse (arg &optional hidden ext-plist
 			  to-buffer body-only pub-dir)
   "Export the outline to various formats.
@@ -722,6 +728,7 @@ version."
 					; collecting styles
 	 org-lparse-encode-pending
 	 org-lparse-par-open
+	 org-lparse-current-paragraph-style
 	 org-lparse-list-table-p
 	 (org-lparse-list-level 0)	; list level starts at 1. A
 					; value of 0 implies we are
@@ -1267,7 +1274,7 @@ version."
       ;; kill collection buffer
       (when org-lparse-collect-buffer
 	(kill-buffer org-lparse-collect-buffer))
-      
+
       (goto-char (point-min))
       (or (org-export-push-to-kill-ring
 	   (upcase (symbol-name org-lparse-backend)))

+ 24 - 8
contrib/lisp/org-odt.el

@@ -383,6 +383,8 @@ PUB-DIR is set, use this as the publishing directory."
      . (org-odt-begin-table org-odt-end-table))
     (TABLE-ROWGROUP
      . (org-odt-begin-table-rowgroup org-odt-end-table-rowgroup))
+    (TABLE-CELL
+     . (org-odt-begin-table-cell org-odt-end-table-cell))
     (LIST
      . (org-odt-begin-list org-odt-end-list))
     (LIST-ITEM
@@ -522,7 +524,10 @@ PUB-DIR is set, use this as the publishing directory."
 (defun org-odt-end-outline-text ()
   (ignore))
 
+(defvar org-lparse-current-paragraph-style) ; bound during
+					    ; `org-do-lparse'
 (defun org-odt-begin-paragraph (&optional style)
+  (setq style (or style org-lparse-current-paragraph-style))
   (org-lparse-insert-tag
    "<text:p%s>" (org-odt-get-extra-attrs-for-paragraph-style style)))
 
@@ -543,7 +548,8 @@ PUB-DIR is set, use this as the publishing directory."
 (defun org-odt-format-stylized-paragraph (style text)
   (org-odt-format-tags
    '("<text:p%s>" . "</text:p>") text
-   (org-odt-get-extra-attrs-for-paragraph-style style)))
+   (org-odt-get-extra-attrs-for-paragraph-style
+    (or style org-lparse-current-paragraph-style))))
 
 (defun org-odt-begin-environment (style)
   (case style
@@ -722,16 +728,26 @@ PUB-DIR is set, use this as the publishing directory."
   (when org-lparse-table-is-styled
     (format "@@table-cell:style-name@@%03d@@%03d@@" r c)))
 
-(defun org-odt-format-table-cell (data r c)
-  (let* ((paragraph-style-cookie
-	  (org-odt-get-paragraph-style-cookie-for-table-cell r c))
-	 (style-name-cookie
+(defun org-odt-begin-table-cell (r c)
+  (setq org-lparse-current-paragraph-style
+	(org-odt-get-paragraph-style-cookie-for-table-cell r c))
+  (let* ((style-name-cookie
 	  (org-odt-get-style-name-cookie-for-table-cell r c))
 	 (extra (if style-name-cookie
 		    (format " table:style-name=\"%s\""  style-name-cookie) "")))
-    (org-odt-format-tags
-     '("<table:table-cell%s>" . "</table:table-cell>")
-     (org-odt-format-stylized-paragraph paragraph-style-cookie data) extra)))
+    (org-lparse-insert-tag "<table:table-cell%s>" extra)))
+
+(defun org-odt-end-table-cell ()
+  (org-lparse-insert-tag "</table:table-cell>")
+  (setq org-lparse-current-paragraph-style nil))
+
+(defun org-odt-format-table-cell (data r c)
+  (with-temp-buffer
+    (org-odt-begin-table-cell r c)
+    (insert (org-odt-format-stylized-paragraph
+	     org-lparse-current-paragraph-style data))
+    (org-odt-end-table-cell)
+    (buffer-string)))
 
 (defun org-odt-begin-footnote-definition (n)
   (org-lparse-begin-paragraph 'footnote))