diff options
author | Carsten Dominik <carsten.dominik@gmail.com> | 2010-03-08 19:43:34 +0100 |
---|---|---|
committer | Carsten Dominik <carsten.dominik@gmail.com> | 2010-03-08 19:43:34 +0100 |
commit | 9900348e880c3d06109808cb9028ece319e843f4 (patch) | |
tree | ca7355559dd2913b4e6db577dd2b92ac36890d0e | |
parent | 6518396b4edd0b83470b2136a56caa94fe517f00 (diff) | |
download | org-mode-9900348e880c3d06109808cb9028ece319e843f4.tar.gz |
Docbook exporter: Fix problems with exporting footnotes and empty lines
Patch by Baoqiu Cui
-rwxr-xr-x | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/org-docbook.el | 23 | ||||
-rw-r--r-- | lisp/org-exp.el | 2 |
3 files changed, 26 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c02c7e5..e72bf62 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,14 @@ 2010-03-08 Carsten Dominik <carsten.dominik@gmail.com> + * org-docbook.el (org-export-as-docbook): Remove unnecessary + newline. + (org-export-as-docbook): Remove unnecessary newline. + (org-export-as-docbook): Fix problem with double footnote + reference in one place. + + * org-exp.el (org-export-format-source-code-or-example): Remove + unnecessary newline. + * org.el (org-deadline, org-schedule): Allow rescheduling entries with repeaters. diff --git a/lisp/org-docbook.el b/lisp/org-docbook.el index ab0a086..492a660 100644 --- a/lisp/org-docbook.el +++ b/lisp/org-docbook.el @@ -624,7 +624,7 @@ publishing directory." ;; End of quote section? (when (and inquote (string-match "^\\*+ " line)) - (insert "]]>\n</programlisting>\n") + (insert "]]></programlisting>\n") (org-export-docbook-open-para) (setq inquote nil)) ;; Inside a quote section? @@ -644,7 +644,7 @@ publishing directory." (not (string-match "^[ \t]*\\(:.*\\)" (car lines)))) (setq infixed nil) - (insert "]]>\n</programlisting>\n") + (insert "]]></programlisting>\n") (org-export-docbook-open-para)) (throw 'nextline nil)) @@ -912,7 +912,8 @@ publishing directory." (while (string-match "\\([^* \t].*?\\)\\[\\([0-9]+\\)\\]" line start) (if (get-text-property (match-beginning 2) 'org-protected line) (setq start (match-end 2)) - (let ((num (match-string 2 line))) + (let* ((num (match-string 2 line)) + (footnote-def (assoc num footnote-list))) (if (assoc num footref-seen) (setq line (replace-match (format "%s<footnoteref linkend=\"%s%s\"/>" @@ -924,9 +925,10 @@ publishing directory." (match-string 1 line) org-export-docbook-footnote-id-prefix num - (save-match-data - (org-docbook-expand - (cdr (assoc num footnote-list))))) + (if footnote-def + (save-match-data + (org-docbook-expand (cdr footnote-def))) + (format "FOOTNOTE DEFINITION NOT FOUND: %s" num))) t t line)) (push (cons num 1) footref-seen)))))) @@ -1092,7 +1094,7 @@ publishing directory." ;; Properly close all local lists and other lists (when inquote - (insert "]]>\n</programlisting>\n") + (insert "]]></programlisting>\n") (org-export-docbook-open-para)) (when in-local-list ;; Close any local lists before inserting a new header line @@ -1121,6 +1123,13 @@ publishing directory." "[ \r\n\t]*\\(<para>\\)[ \r\n\t]*</para>[ \r\n\t]*" nil t) (when (not (get-text-property (match-beginning 1) 'org-protected)) (replace-match "\n") + ;; Avoid empty <listitem></listitem> caused by inline tasks. + ;; We should add an empty para to make everything valid. + (when (and (looking-at "</listitem>") + (save-excursion + (backward-char (length "<listitem>\n")) + (looking-at "<listitem>"))) + (insert "<para></para>")) (backward-char 1))) ;; Fill empty sections with <para></para>. This is to make sure ;; that the DocBook document generated is valid and well-formed. diff --git a/lisp/org-exp.el b/lisp/org-exp.el index f20b511..91feb3c 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -2423,7 +2423,7 @@ INDENT was the original indentation of the block." (concat "\n#+BEGIN_DOCBOOK\n" (org-add-props (concat "<programlisting><![CDATA[" rtn - "]]>\n</programlisting>\n") + "]]></programlisting>\n") '(org-protected t)) "#+END_DOCBOOK\n")) ((eq backend 'html) |