emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: #+LABEL: in HTML export


From: Carsten Dominik
Subject: Re: [Orgmode] Re: #+LABEL: in HTML export
Date: Sat, 3 Apr 2010 08:33:27 +0200

Hi Baoqiu,

I did apply the patch - by hand because the Emai program did wrap one or two lines.

Please check if everything went well.

Thanks!

- Carsten

On Apr 3, 2010, at 12:51 AM, Baoqiu Cui wrote:

Hi Carsten,

I've made corresponding changes in org-docbook.el to support this
feature in the DocBook exporter.  Please check the attached patch, in
which I also fixed a minor bug that was introduced in your recent change
of "new and better support for entities".

diff --git a/lisp/org-docbook.el b/lisp/org-docbook.el
index 7c43211..700f1db 100644
--- a/lisp/org-docbook.el
+++ b/lisp/org-docbook.el
@@ -1259,13 +1259,13 @@ string, don't modify these."
  (if org-export-with-sub-superscripts
      (setq s (org-export-docbook-convert-sub-super s)))
  (if org-export-with-TeX-macros
-      (let ((start 0) wd rep ass)
+      (let ((start 0) wd rep)
        (while (setq start (string-match "\\\\\\([a-zA-Z]+\\)\\({}\\)?"
                                         s start))
          (if (get-text-property (match-beginning 0) 'org-protected s)
              (setq start (match-end 0))
            (setq wd (match-string 1 s))
-           (if (setq ass (org-entity-get-representation wd 'html))
+           (if (setq rep (org-entity-get-representation wd 'html))
                (setq s (replace-match rep t t s))
              (setq start (+ start (length wd))))))))
  s)
@@ -1349,18 +1349,33 @@ string, don't modify these."
        (replace-match ""))))

(defun org-export-docbook-finalize-table (table)
-  "Change TABLE to informaltable if caption does not exist.
+  "Clean up TABLE and turn it into DocBook format.
+This function adds a label to the table if it is available, and
+also changes TABLE to informaltable if caption does not exist.
TABLE is a string containing the HTML code generated by
`org-format-table-html' for a table in Org-mode buffer."
-  (if (string-match
- "^<table \\(\\(.\\|\n\\)+\\)<caption></caption>\n\\(\\(.\\|\n \\)+\\)</table>"
-       table)
-      (replace-match (concat "<informaltable "
-                            (match-string 1 table)
-                            (match-string 3 table)
+  (let ((table-with-label label))
+ ;; Get the label if it exists, and move it into the <table> element.
+    (setq table-with-label
+         (if (string-match
+ "^<table \\(\\(.\\|\n\\)+\\)<a name=\"\\(.+\\)\" id=\".+ \"></a>\n\\(\\(.\\|\n\\)+\\)</table>"
+              table)
+ (replace-match (concat "<table xml:id=\"" (match-string 3 table) "\" "
+                                    (match-string 1 table)
+                                    (match-string 4 table)
+                                    "</table>")
+                            nil nil table)
+           table))
+    ;; Change <table> into <informaltable> if caption does not exist.
+    (if (string-match
+ "^<table \\(\\(.\\|\n\\)+\\)<caption></caption>\n\\(\\(.\\|\n\\)+\ \)</table>"
+        table-with-label)
+       (replace-match (concat "<informaltable "
+                            (match-string 1 table-with-label)
+                            (match-string 3 table-with-label)
                             "</informaltable>")
-                    nil nil table)
-    table))
+                      nil nil table-with-label)
+      table-with-label)))

;; Note: This function is very similar to
;; org-export-html-convert-sub-super. They can be merged in the future.

Carsten Dominik <address@hidden> writes:

Hi Thomas,

Are you talking about figures or about tables?

For figures, the label is attached to the figure as the id of
the div surrounding figure plus caption.  However, this only
works if you also specify a caption.  But I think that only
figures with caption should be targets for links.

For tables, I have just made a change so that the label
is inserted as an anchor just as you propose:

  <table border="2" cellspacing="0" cellpadding="6" rules="groups"
frame="hsides">
  <a name="tab:yyy" id="tab:yyy"></a>
  <caption>This is a table</caption>

Finally, I am now converting \ref{xxx} macros into links
for the HTML backend.  One problem is that, so the same
\ref macro will lead to the figure in both backends.

Hope this helps.

Thanks,

--
Baoqiu
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten







reply via email to

[Prev in Thread] Current Thread [Next in Thread]