0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-08-23 09:19:38 +00:00

Both latex and html should now export correctly.

* org-html.el (org-export-html-preprocess): Remove unneeded insertion
  of list end marker, as it is now handled by
  `org-export-mark-list-ending'.
* org-html.el (org-export-as-html): Cleaner termination of lists.
* org-exp.el (org-export-mark-list-ending): New function to insert
  specific markers at the end of lists when exporting to a backend not
  using `org-list-parse-list'.
  This function is called early in `org-export-preprocess-string',
  while it is still able to recognize lists.
* org-latex.el (org-export-latex-lists): Better search for lists. It
  now only finds items not enclosed and not protected.
This commit is contained in:
Nicolas Goaziou 2010-07-13 11:46:51 +02:00
parent f677013276
commit 99306969b0
3 changed files with 40 additions and 30 deletions

View file

@ -1076,6 +1076,9 @@ on this string to produce the exported version."
(plist-get parameters :exclude-tags))
(run-hooks 'org-export-preprocess-after-tree-selection-hook)
;; Mark end of lists
(org-export-mark-list-ending backend)
;; Handle source code snippets
(org-export-replace-src-segments-and-examples backend)
@ -1626,6 +1629,19 @@ These special cookies will later be interpreted by the backend."
(delete-region beg end)
(insert (org-add-props content nil 'original-indentation ind))))))
(defun org-export-mark-list-ending (backend)
"Mark list endings with special cookies.
These special cookies will later be interpreted by the backend.
`org-list-end-re' is replaced by a blank line in the process."
;; Backends using `org-list-parse-list' do not need this.
(unless (eq backend 'latex)
(goto-char (point-min))
(while (org-search-forward-unenclosed (org-item-re) nil 'move)
(goto-char (org-list-bottom-point))
(when (looking-at (org-list-end-re))
(replace-match "\n"))
(insert "ORG-LIST-END\n"))))
(defun org-export-attach-captions-and-attributes (backend target-alist)
"Move #+CAPTION, #+ATTR_BACKEND, and #+LABEL text into text properties.
If the next thing following is a table, add the text properties to the first

View file

@ -561,13 +561,7 @@ This may also be a function, building and inserting the postamble.")
(if (string-match "\\`[a-z]\\{1,10\\}:\\(.+\\)" label)
(setq l1 (substring label (match-beginning 1)))
(setq l1 label)))
(replace-match (format "[[#%s][%s]]" label l1) t t))))
(goto-char (point-min))
(while (org-search-forward-unenclosed (org-item-re) nil 'move)
(goto-char (org-list-bottom-point))
(when (looking-at (org-list-end-re))
(replace-match ""))
(insert "ORG-LIST-END\n")))
(replace-match (format "[[#%s][%s]]" label l1) t t)))))
;;;###autoload
(defun org-export-as-html-and-open (arg)
@ -1511,16 +1505,15 @@ lang=\"%s\" xml:lang=\"%s\">
(insert "<pre>")
(setq inquote t)))
((string-match "^ORG-LIST-END" line)
;; Explicit list closure
(let ((ind (org-get-indentation line)))
(while (and local-list-indent
(<= ind (car local-list-indent)))
(org-close-li (car local-list-type))
(insert (format "</%sl>\n" (car local-list-type)))
(pop local-list-type)
(pop local-list-indent))
(or local-list-indent (setq in-local-list nil)))
;; Explicit list closure
((equal "ORG-LIST-END" line)
(while local-list-indent
(org-close-li (car local-list-type))
(insert (format "</%sl>\n" (car local-list-type)))
(pop local-list-type)
(pop local-list-indent))
(setq in-local-list nil)
(org-open-par)
(throw 'nextline nil))
((and org-export-with-tables

View file

@ -2238,19 +2238,20 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
"Convert plain text lists in current buffer into LaTeX lists."
(let (res)
(goto-char (point-min))
(while (org-re-search-forward-unprotected (org-item-re) nil t)
(beginning-of-line)
(setq res (org-list-to-latex (org-list-parse-list t)
org-export-latex-list-parameters))
(while (string-match "^\\(\\\\item[ \t]+\\)\\[@start:\\([0-9]+\\)\\]"
res)
(setq res (replace-match
(concat (format "\\setcounter{enumi}{%d}"
(1- (string-to-number
(match-string 2 res))))
"\n"
(match-string 1 res))
t t res)))
(while (org-search-forward-unenclosed (org-item-re) nil t)
(org-if-unprotected
(beginning-of-line)
(setq res (org-list-to-latex (org-list-parse-list t)
org-export-latex-list-parameters))
(while (string-match "^\\(\\\\item[ \t]+\\)\\[@start:\\([0-9]+\\)\\]"
res)
(setq res (replace-match
(concat (format "\\setcounter{enumi}{%d}"
(1- (string-to-number
(match-string 2 res))))
"\n"
(match-string 1 res))
t t res))))
(insert res "\n"))))
(defconst org-latex-entities