emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Orgmode fails to export specific web-links as latex/pdf
@ 2013-07-09  2:16 Mark Edgington
  2013-07-09 11:14 ` Bastien
  0 siblings, 1 reply; 11+ messages in thread
From: Mark Edgington @ 2013-07-09  2:16 UTC (permalink / raw)
  To: emacs-orgmode

Hello all-

When trying to export via latex -> pdf, the following org-mode snippet
fails to compile.  Presumably there's something that should be changed
in the export filters?

Here's the org-mode snippet:
---------------------
*** [[http://www.example.com:90/search~S2?/Xsearchterm&searchscope%3D2&SORT%3DD/Xsearchterm&searchscope%3D2&SORT%3DD&SUBKEY%3Dsearchterm/1%252C742%252C742%252CB/frameset&FF%3DXsearchterm&searchscope%3D2&SORT%3DD&16%252C16%252C][Title
(mediatype) / Publisher]]
---------------------

Relevant generated tex code:
---------------------
\subsubsection{\href{http://www.example.com:90/search~S2?/Xsearchterm&searchscope=2&SORT=D/Xsearchterm&searchscope=2&SORT=D&SUBKEY=searchterm/1%2C742%2C742%2CB/frameset&FF=Xsearchterm&searchscope=2&SORT=D&16%2C16%2C}{Title
(mediatype) / Publisher}}
\label{sec-1-6-1}
(Does this work?)
---------------------

Relevant snippet from the latex log:
---------------------
Runaway argument?
{\href {http://www.example.com:90/search~S2?/Xsearchterm&searchscope=\ETC.
! File ended while scanning use of \@xdblarg.
<inserted text>
                \par
<*> /tmp/test.tex

! Emergency stop.
<*> /tmp/test.tex

!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on .//test.log.
---------------------

I'm using org-mode release_8.0.5-316-g878d6c.  Let me know if you have
any ideas on what is going on, and how to make this work correctly.

Regards,

Mark

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-09  2:16 Orgmode fails to export specific web-links as latex/pdf Mark Edgington
@ 2013-07-09 11:14 ` Bastien
  2013-07-09 13:48   ` Nicolas Goaziou
  0 siblings, 1 reply; 11+ messages in thread
From: Bastien @ 2013-07-09 11:14 UTC (permalink / raw)
  To: Mark Edgington; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 241 bytes --]

Hi Mark,

I confirm this bug: "%" in links breaks the export.

The attached patch is a quick fix, but it needs to be double-checked
and surely amended.  Also, I didn't check other link-related functions.

Thanks for reporting this bad bug,


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: fix-latex-percent-char-in-links.patch --]
[-- Type: text/x-patch, Size: 626 bytes --]

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index aa30cf1..650b7cc 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1748,7 +1748,9 @@ DESC is the description part of the link, or the empty string.
 INFO is a plist holding contextual information.  See
 `org-export-data'."
   (let* ((type (org-element-property :type link))
-	 (raw-path (org-element-property :path link))
+	 (raw-path (org-latex-plain-text
+		    (org-link-escape (org-element-property :path link))
+		    info))
 	 ;; Ensure DESC really exists, or set it to nil.
 	 (desc (and (not (string= desc "")) desc))
 	 (imagep (org-export-inline-image-p

[-- Attachment #3: Type: text/plain, Size: 14 bytes --]


-- 
 Bastien

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-09 11:14 ` Bastien
@ 2013-07-09 13:48   ` Nicolas Goaziou
  2013-07-09 14:55     ` Bastien
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Goaziou @ 2013-07-09 13:48 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Mark Edgington

Hello,

Bastien <bzg@gnu.org> writes:

> I confirm this bug: "%" in links breaks the export.
>
> The attached patch is a quick fix, but it needs to be double-checked
> and surely amended.  Also, I didn't check other link-related functions.
>
> Thanks for reporting this bad bug,
>
>
> diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
> index aa30cf1..650b7cc 100644
> --- a/lisp/ox-latex.el
> +++ b/lisp/ox-latex.el
> @@ -1748,7 +1748,9 @@ DESC is the description part of the link, or the empty string.
>  INFO is a plist holding contextual information.  See
>  `org-export-data'."
>    (let* ((type (org-element-property :type link))
> -	 (raw-path (org-element-property :path link))
> +	 (raw-path (org-latex-plain-text
> +		    (org-link-escape (org-element-property :path link))
> +		    info))
>  	 ;; Ensure DESC really exists, or set it to nil.
>  	 (desc (and (not (string= desc "")) desc))
>  	 (imagep (org-export-inline-image-p

Actually, some characters need to be escaped when used in a URL within
a \href command, but not all of them. `org-latex-plain-text' escapes too
many of them and `org-link-escape' doesn't escape enough (and we don't
need to rely on it).

According to hyperref documentation # and ~ need not be escaped. Though,
%, { and } do. I'm not sure about \, ^ and _.

Also, I don't think \url command has the same problem, so escaping can
happen later in the function, not at the `raw-path' level.


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-09 13:48   ` Nicolas Goaziou
@ 2013-07-09 14:55     ` Bastien
  2013-07-10 12:35       ` Nicolas Goaziou
  0 siblings, 1 reply; 11+ messages in thread
From: Bastien @ 2013-07-09 14:55 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: emacs-orgmode, Mark Edgington

Hi Nicolas,

Nicolas Goaziou <n.goaziou@gmail.com> writes:

> Actually, some characters need to be escaped when used in a URL within
> a \href command, but not all of them. `org-latex-plain-text' escapes too
> many of them and `org-link-escape' doesn't escape enough (and we don't
> need to rely on it).

Thanks for the details.

> According to hyperref documentation # and ~ need not be escaped. Though,
> %, { and } do. I'm not sure about \, ^ and _.
>
> Also, I don't think \url command has the same problem, so escaping can
> happen later in the function, not at the `raw-path' level.

Please feel free to go ahead with whatever fix is better, I was just
trying to quickly reproduce the bug.

Thanks,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-09 14:55     ` Bastien
@ 2013-07-10 12:35       ` Nicolas Goaziou
  2013-07-10 12:36         ` Bastien
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Goaziou @ 2013-07-10 12:35 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Mark Edgington

Hello,

Bastien <bzg@gnu.org> writes:

> Nicolas Goaziou <n.goaziou@gmail.com> writes:
>> According to hyperref documentation # and ~ need not be escaped. Though,
>> %, { and } do. I'm not sure about \, ^ and _.
>>
>> Also, I don't think \url command has the same problem, so escaping can
>> happen later in the function, not at the `raw-path' level.
>
> Please feel free to go ahead with whatever fix is better, I was just
> trying to quickly reproduce the bug.

I will have a look at it, but this is not clear to me either. I still
have to understand what should be escaped, and when.


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-10 12:35       ` Nicolas Goaziou
@ 2013-07-10 12:36         ` Bastien
  2013-07-16 18:37           ` Yury Bulka
  2013-07-24 18:18           ` Nicolas Goaziou
  0 siblings, 2 replies; 11+ messages in thread
From: Bastien @ 2013-07-10 12:36 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: emacs-orgmode, Mark Edgington

Nicolas Goaziou <n.goaziou@gmail.com> writes:

> I will have a look at it, but this is not clear to me either. I still
> have to understand what should be escaped, and when.

All right, no hurry!  And thanks a lot in advance,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-10 12:36         ` Bastien
@ 2013-07-16 18:37           ` Yury Bulka
  2013-07-16 18:44             ` Yury Bulka
  2013-07-16 19:25             ` Nicolas Goaziou
  2013-07-24 18:18           ` Nicolas Goaziou
  1 sibling, 2 replies; 11+ messages in thread
From: Yury Bulka @ 2013-07-16 18:37 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Nicolas Goaziou, Mark Edgington

A quick related observation. Consider this Org-mode link:
[[https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(%C2%AB%D0%9F%D1%96%D1%81%D0%BD%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BA%D0%BE%D0%BB%D0%B8%D1%81%D1%86%D1%96%C2%BB).ogg][https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg]]

The LaTeX code it generates:
\href{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg}{\url{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby}$_{\text{(«Пісня}_{\text{при}}_{\text{колисці»}}\text{)}}$.ogg}

Or if I add a "#+OPTIONS: ^:nil" line, then LaTeX code will be the following:
\href{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg}{\url{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby}\_(«Пісня\_при\_колисці»).ogg}

I.e. it wraps only part of the description of the link with \url due
to the parentheses in it.

2013/7/10, Bastien <bzg@gnu.org>:
> Nicolas Goaziou <n.goaziou@gmail.com> writes:
>
>> I will have a look at it, but this is not clear to me either. I still
>> have to understand what should be escaped, and when.
>
> All right, no hurry!  And thanks a lot in advance,
>
> --
>  Bastien
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-16 18:37           ` Yury Bulka
@ 2013-07-16 18:44             ` Yury Bulka
  2013-07-16 20:15               ` Nicolas Goaziou
  2013-07-16 19:25             ` Nicolas Goaziou
  1 sibling, 1 reply; 11+ messages in thread
From: Yury Bulka @ 2013-07-16 18:44 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Nicolas Goaziou, Mark Edgington

One more thing, related to unicode inside the href of the link:

[[https://commons.wikimedia.org/wiki/File:%D0%91%D1%83%D0%B7%D0%BE%D0%BA.ogg][https://commons.wikimedia.org/wiki/File:Бузок.ogg]]

Turns into:
\href{https://commons.wikimedia.org/wiki/File:Бузок.ogg}{\url{https://commons.wikimedia.org/wiki/File:Бузок.ogg}}

I.e. for some reason the href gets url-decoded. Such links don't work in evince.

2013/7/16, Yury Bulka <yurkobb@gmail.com>:
> A quick related observation. Consider this Org-mode link:
> [[https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(%C2%AB%D0%9F%D1%96%D1%81%D0%BD%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BA%D0%BE%D0%BB%D0%B8%D1%81%D1%86%D1%96%C2%BB).ogg][https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg]]
>
> The LaTeX code it generates:
> \href{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg}{\url{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby}$_{\text{(«Пісня}_{\text{при}}_{\text{колисці»}}\text{)}}$.ogg}
>
> Or if I add a "#+OPTIONS: ^:nil" line, then LaTeX code will be the
> following:
> \href{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg}{\url{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby}\_(«Пісня\_при\_колисці»).ogg}
>
> I.e. it wraps only part of the description of the link with \url due
> to the parentheses in it.
>
> 2013/7/10, Bastien <bzg@gnu.org>:
>> Nicolas Goaziou <n.goaziou@gmail.com> writes:
>>
>>> I will have a look at it, but this is not clear to me either. I still
>>> have to understand what should be escaped, and when.
>>
>> All right, no hurry!  And thanks a lot in advance,
>>
>> --
>>  Bastien
>>
>>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-16 18:37           ` Yury Bulka
  2013-07-16 18:44             ` Yury Bulka
@ 2013-07-16 19:25             ` Nicolas Goaziou
  1 sibling, 0 replies; 11+ messages in thread
From: Nicolas Goaziou @ 2013-07-16 19:25 UTC (permalink / raw)
  To: Yury Bulka; +Cc: Bastien, emacs-orgmode, Mark Edgington

Hello,

Yury Bulka <yurkobb@gmail.com> writes:

> A quick related observation. Consider this Org-mode link:
> [[https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(%C2%AB%D0%9F%D1%96%D1%81%D0%BD%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BA%D0%BE%D0%BB%D0%B8%D1%81%D1%86%D1%96%C2%BB).ogg][https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg]]
>
> The LaTeX code it generates:
> \href{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby_(«Пісня_при_колисці»).ogg}{\url{https://commons.wikimedia.org/wiki/File:Lysenko-Lullaby}$_{\text{(«Пісня}_{\text{при}}_{\text{колисці»}}\text{)}}$.ogg}

This is to be expected. Only the beginning of your description part
matches `org-plain-link-re' and gets converted to a link.


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-16 18:44             ` Yury Bulka
@ 2013-07-16 20:15               ` Nicolas Goaziou
  0 siblings, 0 replies; 11+ messages in thread
From: Nicolas Goaziou @ 2013-07-16 20:15 UTC (permalink / raw)
  To: Yury Bulka; +Cc: Bastien, emacs-orgmode, Mark Edgington

Yury Bulka <yurkobb@gmail.com> writes:

> One more thing, related to unicode inside the href of the link:
>
> [[https://commons.wikimedia.org/wiki/File:%D0%91%D1%83%D0%B7%D0%BE%D0%BA.ogg][https://commons.wikimedia.org/wiki/File:Бузок.ogg]]
>
> Turns into:
> \href{https://commons.wikimedia.org/wiki/File:Бузок.ogg}{\url{https://commons.wikimedia.org/wiki/File:Бузок.ogg}}
>
> I.e. for some reason the href gets url-decoded. Such links don't work
> in evince.

Indeed, links are url-decoded when parsed (see line 3139 in
org-element.el). I think the reasoning behind it is that url should then
be encoded again to make sure every url is correctly encoded.

One possibility is to use (org-link-escape (org-link-unescape
raw-link)), that is every parsed link will be url-encoded. Another one
is to leave links as-is, but back-end developers will have to deal with
that. I lean towards the former.

Funnily, this only applied to bracket links (i.e., [[link][desc]]),
plain links are not url-decoded (or encoded) at all. This isn't
consistent and also needs to be fixed.

Any opinion?


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Orgmode fails to export specific web-links as latex/pdf
  2013-07-10 12:36         ` Bastien
  2013-07-16 18:37           ` Yury Bulka
@ 2013-07-24 18:18           ` Nicolas Goaziou
  1 sibling, 0 replies; 11+ messages in thread
From: Nicolas Goaziou @ 2013-07-24 18:18 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Mark Edgington

Hello,

Bastien <bzg@gnu.org> writes:

> Nicolas Goaziou <n.goaziou@gmail.com> writes:
>
>> I will have a look at it, but this is not clear to me either. I still
>> have to understand what should be escaped, and when.
>
> All right, no hurry!  And thanks a lot in advance,

I cannot reproduce the bug anymore. Can you?


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2013-07-24 18:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-09  2:16 Orgmode fails to export specific web-links as latex/pdf Mark Edgington
2013-07-09 11:14 ` Bastien
2013-07-09 13:48   ` Nicolas Goaziou
2013-07-09 14:55     ` Bastien
2013-07-10 12:35       ` Nicolas Goaziou
2013-07-10 12:36         ` Bastien
2013-07-16 18:37           ` Yury Bulka
2013-07-16 18:44             ` Yury Bulka
2013-07-16 20:15               ` Nicolas Goaziou
2013-07-16 19:25             ` Nicolas Goaziou
2013-07-24 18:18           ` Nicolas Goaziou

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).