emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: Rasmus <rasmus@gmx.us>
Cc: emacs-orgmode@gnu.org
Subject: Re: Bug: When exporting to PDF an Org file where multiple footnotes share the same definition, only the first footnote is clickable [8.3.4 (8.3.4-39-ge0acd8-elpaplus @ /home/jorge/.emacs.d/elpa/org-plus-contrib-20160418/)]
Date: Mon, 23 May 2016 23:41:13 +0200	[thread overview]
Message-ID: <87bn3w8nba.fsf@saiph.selenimh> (raw)
In-Reply-To: <87r3ctalx7.fsf@gmx.us> (rasmus@gmx.us's message of "Sun, 22 May 2016 22:16:04 +0200")

Hello,

Rasmus <rasmus@gmx.us> 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
<http://orgmode.org/worg/dev/org-export-reference.html>. 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

  reply	other threads:[~2016-05-23 21:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-23 20:54 Bug: When exporting to PDF an Org file where multiple footnotes share the same definition, only the first footnote is clickable [8.3.4 (8.3.4-39-ge0acd8-elpaplus @ /home/jorge/.emacs.d/elpa/org-plus-contrib-20160418/)] Jorge Peixoto de Morais Neto
2016-04-25  8:38 ` Rasmus
2016-04-25  8:58   ` Nicolas Goaziou
2016-04-25 10:53     ` Rasmus
2016-04-25 11:41       ` Nicolas Goaziou
2016-04-25 13:36         ` Rasmus
2016-04-25 13:57           ` Nicolas Goaziou
2016-04-25 14:04             ` Rasmus
2016-04-25 14:07               ` Rasmus
2016-05-22 20:16             ` Rasmus
2016-05-23 21:41               ` Nicolas Goaziou [this message]
2016-05-24 20:59                 ` [patch] more robust footnotes (was: Bug: When exporting to PDF an Org file where multiple footnotes share the same definition, only the first footnote is clickable [8.3.4 (8.3.4-39-ge0acd8-elpaplus @ /home/jorge/.emacs.d/elpa/org-plus-contrib-20160418/)]) Rasmus
2016-05-24 21:31                   ` [patch] more robust footnotes Nicolas Goaziou
2016-05-24 21:38                     ` Rasmus
2016-05-24 21:54                       ` Nicolas Goaziou
2016-05-25  7:16                         ` Rasmus
2016-05-25 16:50                           ` Nicolas Goaziou
2016-05-25 17:51                             ` Rasmus
2016-08-10 21:09                 ` Bug: When exporting to PDF an Org file where multiple footnotes share the same definition, only the first footnote is clickable [8.3.4 (8.3.4-39-ge0acd8-elpaplus @ /home/jorge/.emacs.d/elpa/org-plus-contrib-20160418/)] Kaushal Modi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bn3w8nba.fsf@saiph.selenimh \
    --to=mail@nicolasgoaziou.fr \
    --cc=emacs-orgmode@gnu.org \
    --cc=rasmus@gmx.us \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).