emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] Problem with sectioning function for LaTeX export


From: Carsten Dominik
Subject: Re: [Orgmode] Problem with sectioning function for LaTeX export
Date: Tue, 27 Apr 2010 17:44:07 +0200


On Apr 18, 2010, at 12:05 PM, Sebastian Hofer wrote:

Hi all,
I'm trying to write my own sectioning function for latex export of my CV. What it does is to read out some property of the given headline and pass it to a latex command:

(defun my-org-cv-sectioning (lvl heading)
 (let ((year)
       (formatlist)
       (cleanheading (substring-no-properties heading 1)))
   (with-current-buffer (org-find-base-buffer-visiting "cv.org")
     (let ((headingpoint (find-custom-id cleanheading)))
       (if headingpoint
           (progn
             (goto-char headingpoint)
             (setq year (org-entry-get nil "YEAR"))))))
   (setq formatlist (nth (- 1 lvl) my-org-cv-sectioning-list))
   (list cleanheading
         (format (car formatlist) (if year year "") cleanheading)
(format (car (cdr formatlist)) (if year year "") cleanheading))))

The function find-custom-id returns the point of the heading, my-org- cv-sectioning list contains the customized latex commands. As you may see, I'm an elisp newbie, so excuse the coding style, or even better, make suggestions for improvements! There might be a much nicer way to read out the wanted properties (also cf. point 2 below), so if you have any suggestions on that, I would be glad to hear them!

Anyway, there are currently two problems:

- The function reads out the properties correctly, but the export command throws an error. So I guess I'm not getting the format of the output right, but I can't really make sense of the description in the org-export-latex-classes docstring. Currently the function is returning something like this: ("Heading" ("\section[year]{Heading}" "\section*[year]{Heading}")). Isn't this what it's supposed to look like? The error message is the following:

I think it must be

("Heading" "\section[year]{%s}" "\section*[year]{%s}")

Note the %s for the heading, and also it i just one flat list of 3 items.

And yes, this is not too well documented.


Debugger entered--Lisp error: (wrong-type-argument stringp nil)
 format(nil "Heading" "")
 org-export-latex-subcontent(<snipped>)
 org-export-latex-sub(<snipped>)
 org-export-latex-global(((<snipped>))))
 org-export-as-latex(nil nil nil "*Org LaTeX Export*")
 org-export-as-latex-to-buffer(nil)
 call-interactively(org-export-as-latex-to-buffer)
 org-export(nil)
 call-interactively(org-export nil nil)

- As you can see I am using org-find-base-buffer-visiting find the buffer of the org file, but of course its argument can't stay hardcoded like this. I could also use the org mapping function, but still I would need filename. Can someone give me a hint how to solve this in a nice way?

Use
   (org-find-base-buffer-visiting org-current-export-file)

HTH

- Carsten




reply via email to

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