Hi version 3 patch, add document about :caption attribute. On Sun, Jun 30, 2013 at 7:46 PM, Nicolas Goaziou wrote: > Hello, > > feng shu writes: > > > This is the updated patch of "Add :caption attribute to #+ATTR_LATEX > > property" > > If possible, please include it to master > > Thanks for your patch. > > I agree that #+CAPTION isn't ready for complex caption commands (nor > that it should), so a :caption attribute may be useful. Though, it must > be documented in the manual (see "12.7.4 LaTeX specific attributes"). In > particular, documentation should insist on the fact that: > > 1. :caption attribute has precedence over #+caption keyword > 2. :caption attribute is only meaningful special caption commands, > i.e., this isn't the standard way to set a caption in Org. > 3. This is a raw command, nothing in it will be interpreted by Org. > > Here are some comments about the code: > > + (caption-from-attr-latex (plist-get (org-export-read-attribute > :attr_latex element) :caption))) > > You can use the following slightly shorter sexp: > > (caption-from-attr-latex (org-export-read-attribute :attr_latex element > :caption)) > > > + (if (and caption-from-attr-latex (not (equal > caption-from-attr-latex ""))) > > + (concat caption-from-attr-latex "\n") > > + (cond > > + ((and (not main) (equal label-str ""))) > > + ((not main) (concat label-str "\n")) > > + ;; Option caption format with short name. > > + (short (format "\\caption[%s]{%s%s}\n" > > + (org-export-data short info) > > + label-str > > + (org-export-data main info))) > > + ;; Standard caption format. > > + (t (format "\\caption{%s%s}\n" label-str (org-export-data main > info))))))) > > Here you can include the "then" part in the `cond', and use > `org-string-nw-p': > > (cond ((org-string-nw-p caption-from-attr-latex) > (concat caption-from-attr-latex "\n")) > ((and (not main) (equal label-str "")) "") > ...) > > > (defun org-latex-guess-inputenc (header) > > "Set the coding system in inputenc to what the buffer is. > > @@ -1655,7 +1658,7 @@ used as a communication channel." > > (cond ((and (not float) (plist-member attr :float)) nil) > > ((string= float "wrap") 'wrap) > > ((string= float "multicolumn") 'multicolumn) > > - ((or float (org-element-property :caption parent)) > > + ((or float (org-element-property :caption parent) > (plist-get attr :caption)) > > Be careful here: (plist-get attr :caption) will be non-nil if :caption > is set to the empty string. It may be bulkier to use: > > (org-string-nw-p (plist-get attr :caption)) > > > 'figure)))) > > (placement > > (let ((place (plist-get attr :placement))) > > @@ -2333,7 +2336,7 @@ This function assumes TABLE has `org' as its > `:type' property and > > ((and (not float) (plist-member attr :float)) nil) > > ((string= float "sidewaystable") "sidewaystable") > > ((string= float "multicolumn") "table*") > > - ((or float (org-element-property :caption table)) > > + ((or float (org-element-property :caption table) > (plist-get attr :caption)) > > Ditto. > > > Regards, > > -- > Nicolas Goaziou >