Hi, Thanks for the suggestions. Sorry about the slow reply... I'm lacking time ATM. I simplified the patch to only add the short version of properties and not include the titlegraphics. > I didn't test your patch. However, here are some late comments about > this suggestion. > >> Maybe we can have a titlegraphics like, >> >> #+attr_beamer: :titlegraphics t >> [[file:link.pdf]] > > I think > > #+TITLEGRAPHICS: [[file:link.pdf]] > > would be cleaner. I dropped this. One might need to add attributes to the graphic. The #+titlegraphics approach wouldn’t allow it. I think it’s a problem that can be pushed down the line. >> ;;;; Plain List >> @@ -855,21 +866,65 @@ holding export options." >> (when (integerp sec-num) >> (format "\\setcounter{secnumdepth}{%d}\n" sec-num))) >> ;; Author. >> - (let ((author (and (plist-get info :with-author) >> - (let ((auth (plist-get info :author))) >> - (and auth (org-export-data auth info))))) >> - (email (and (plist-get info :with-email) >> - (org-export-data (plist-get info :email) info)))) >> + (let* ((author (and (plist-get info :with-author) >> + (let ((auth (plist-get info :author))) >> + (and auth (org-export-data auth info))))) >> + (short-author (and author (plist-get info :short-author))) > > Since "short-author" is `parsed', this should be wrapped within > `org-export-data' somehow. You do it below, but it introduces some code > duplication. > >> + (email (and (plist-get info :with-email) >> + (org-export-data (plist-get info :email) info))) >> + ) > > You left a dangling parenthesis. > >> (cond ((and author email (not (string= "" email))) >> - (format "\\author{%s\\thanks{%s}}\n" author email)) >> - ((or author email) (format "\\author{%s}\n" (or author email))))) >> + (format "\\author%s{%s\\thanks{%s}}\n" >> + (if short-author >> + (format "[%s]" (org-export-data short-author info)) "") >> + author email)) >> + ((or author email) (format "\\author%s{%s}\n" >> + (if short-author >> + (format "[%s]" (org-export-data short-author info)) "") >> + (or author email))))) > > See above. Also, I would move the (format ...) below (or author email) > >> ;; Date. >> - (let ((date (and (plist-get info :with-date) (org-export-get-date info)))) >> - (format "\\date{%s}\n" (org-export-data date info))) >> - ;; Title >> - (format "\\title{%s}\n" title) >> + (let* ((date (and (plist-get info :with-date) (org-export-get-date info))) >> + ;; TODO: add optional argument of ‘org-export-get-date’. >> + (short-date (and date (org-export-data >> + (org-export-get-date >> + (plist-put info :date >> + (plist-get info :beamer-short-date))) >> + info)))) >> + (format "\\date%s{%s}\n" (if (org-string-nw-p short-date) >> + (format "[%s]" short-date) "") > > I would put the "" below (format "[%s]" short-date): it doesn't make > clear there is an else branch otherwise. > >> + (org-export-data date info))) >> + ;; Title. >> + (let ((short-title (and title >> + (plist-get info :beamer-short-title)))) >> + (format "\\title%s{%s}\n" >> + (if short-title (format "[%s]" (org-export-data short-title info)) "") >> + title)) > > See above. > >> + ;; Titlegraphics. >> + (let ((titlegraphic-link >> + (org-element-map (plist-get info :parse-tree) 'link >> + (lambda (link) >> + (when (and (org-export-inline-image-p link) >> + (plist-get (org-export-read-attribute >> + :attr_beamer (org-export-get-parent-element link)) >> + :titlegraphic)) >> + link)) >> + info t))) Should all be fixed. Thanks, Rasmus -- Human: An animal that complicates things more than strictly necessary