Hi guys, Looks like I just reported the exact same bug few minutes back. @Rasmus: Are you still working on committing the fix for this? Thanks. Kaushal On Mon, May 23, 2016 at 5:42 PM Nicolas Goaziou wrote: > Hello, > > Rasmus writes: > > > With the attached patch ox-latex seems to behave in this way. > > Thank you. Some comments follow. > > > Though perhaps there’s a more efficient way to get the first > > footnote-reference to a given definition than trawling through with > > org-export--footnote-reference-map. > > Couldn't you refer to the definition instead of the first reference ? > There is a function grabbing it and it is unique for a given label. > Also, not that `org-export-get-footnote-definition' doesn't return the > definition itself, only its contents. Therefore the reference are > different and there is no possible ambiguity. > > > Nicolas, where is the info plist documented or defined/populated? > > It is documented at > . However, caches > used for memoization are not referenced. > > > + ;; Use \footnotemark if the footnote has already been defined. > > The comment no longer seems accurate. > > > + ((not (org-export-footnote-first-reference-p footnote-reference > info)) > > + (format "\\textsuperscript{\\ref{%s}}" > > + (org-latex--label > > + (catch 'exit > > + (org-export--footnote-reference-map > > + (lambda (f) > > + (let ((l (org-element-property :label f))) > > + (when (and l label (string= label l)) > > + (throw 'exit f)))) > > + (plist-get info :parse-tree) info)) > > + info t))) > > See above. > > > + ;; Use \footnotemark if reference is within another footnote > > + ;; reference, footnote definition or table cell. > > + ((org-element-lineage footnote-reference > > + '(footnote-reference footnote-definition > table-cell)) > > + "\\footnotemark") > > + ;; Otherwise, define it with \footnote command. > > + (t > > + (let ((def (org-export-get-footnote-definition > footnote-reference info))) > > + (concat > > + (format "\\footnote{%s%s}" (org-trim (org-export-data def info)) > > + (if (catch 'exit > > + (org-export--footnote-reference-map > > + (lambda (f) > > + (let ((l (org-element-property :label f))) > > + (when (and l label > > + (not (eq f footnote-reference)) > > + (string= label l)) > > + (throw 'exit t)))) > > + (plist-get info :parse-tree) info)) > > + (org-latex--label footnote-reference info t t) > > + "")) > > I'm not sure to understand the logic here. You seem to add a label to > all references sharing a given label but the first one. Intuitively, > I think it should be the opposite. > > Besides, in this branch of the `cond', all footnote references are the > first for their their label. > > Wouldn't it be sufficient to use > > (format "\\footnote{%s%s}" > (org-trim (org-export-data def info)) > (org-latex--label def info t t)) > > ? > > Regards, > > -- > Nicolas Goaziou > > -- Kaushal Modi