Re: [O] Target and link text normalised to `orgtargetn'

2015-04-27 Thread Nicolas Goaziou
Rasmus  writes:

> Pushed with your recommendations.  Thanks.

Thank you.

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-27 Thread Rasmus
Nicolas Goaziou  writes:

>> Here's an updated patch.
>
> Thank you. Some comments follow.

Pushed with your recommendations.  Thanks.

-- 
May the Force be with you



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-24 Thread Nicolas Goaziou
Rasmus  writes:

> Here's an updated patch.

Thank you. Some comments follow.

> +(defconst org-latex-math-environments-re
> +  (concat (regexp-opt
> +'("equation" "eqnarray" "math" "displaymath"
> +  "align"  "gather" "multline" "flalign"  "alignat"
> +  "xalignat" "xxalignat"
> +  "subequations"
> +  ;; breqn
> +  "dmath" "dseries" "dgroup" "darray"
> +  ;; empheq
> +  "empheq")) "*?")

ITYM "\\*?", not "*?".

Moreover, I think it is better to check only first line, i.e.,

  (format "\\` *\\begin{%s}" (concat (regexp-opt ...) "\\*?"))

> + (save-match-data
> +   (let ((string (org-element-property :value 
> datum)))
> + (string-match
> +  (nth 1 (assoc "begin" org-latex-regexps))
> +  string)
> + (and (org-string-match-p
> +   org-latex-math-environments-re
> +   (match-string 2 string))
> +  "eq:"

This is not needed. Choose an appropriate regexp for
`org-latex-math-environments-re' and forget about `org-latex-regexps'.


Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-24 Thread Rasmus
Nicolas Goaziou  writes:

>> Yeah, I though of that, but that require us to maintain a list of latex
>> math environments, which may or may not be annoying.
>
> Well, if an environment is not recognized as a math one, it still gets
> a label. So, that's not a big deal to miss some of them.
>
>> If we add such a variable where should it live? org.el or ox-latex.el?
>
> ox-latex.el. This is a hack. There's no need to leak it elsewhere.

Here's an updated patch.

—Rasmus

-- 
Need more coffee. . .
>From 5442c61a0ab793d0a0cb3507d4355a5d1fb2f623 Mon Sep 17 00:00:00 2001
From: Rasmus 
Date: Mon, 20 Apr 2015 15:06:55 +0200
Subject: [PATCH] ox-latex: Use standard LaTeX label prefixes

* ox-latex.el (org-latex--label): Use standard LaTeX prefixes.
  (org-latex-math-environments-re): New defconst.
---
 lisp/ox-latex.el | 29 -
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 2727f1c..2d7ffe5 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -209,6 +209,17 @@
 	  ("kbordermatrix" . ""))
   "Alist between matrix macros and their row ending.")
 
+(defconst org-latex-math-environments-re
+  (concat (regexp-opt
+	   '("equation" "eqnarray" "math" "displaymath"
+	 "align"  "gather" "multline" "flalign"  "alignat"
+	 "xalignat" "xxalignat"
+	 "subequations"
+	 ;; breqn
+	 "dmath" "dseries" "dgroup" "darray"
+	 ;; empheq
+	 "empheq")) "*?")
+  "Regexp of LaTeX math environments.")
 
 
 ;;; User Configurable Variables
@@ -1067,7 +1078,23 @@ Eventually, if FULL is non-nil, wrap label within \"\\label{}\"."
 	  (and (or user-label force)
 	   (if (and user-label (plist-get info :latex-prefer-user-labels))
 		   user-label
-		 (org-export-get-reference datum info)
+		 (concat (case type
+			   (headline "sec:")
+			   (table "tab:")
+			   (latex-environment
+			(save-match-data
+			  (let ((string (org-element-property :value datum)))
+(string-match
+ (nth 1 (assoc "begin" org-latex-regexps))
+ string)
+(and (org-string-match-p
+  org-latex-math-environments-re
+  (match-string 2 string))
+ "eq:"
+			   (paragraph
+			(and (org-element-property :caption datum)
+ "fig:")))
+			 (org-export-get-reference datum info))
 (cond ((not full) label)
 	  (label (format "\\label{%s}%s"
 			 label
-- 
2.3.6



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Nicolas Goaziou
Rasmus  writes:

> Yeah, I though of that, but that require us to maintain a list of latex
> math environments, which may or may not be annoying.

Well, if an environment is not recognized as a math one, it still gets
a label. So, that's not a big deal to miss some of them.

> If we add such a variable where should it live? org.el or ox-latex.el?

ox-latex.el. This is a hack. There's no need to leak it elsewhere.

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Rasmus
Nicolas Goaziou  writes:

> Rasmus  writes:
>
>> Can we have conditional dependence on texmathp?
>
> I guess it doesn't hurt. You need to declare it as an external function
> in order to silence byte-compiler, tho.

You are right.  Thanks.

>> If so, maybe something like the attached, though the latex-environment
>> part is ugly.
>
> Another option is to simply extract environment from :value and decide
> if it is a math environment or not. This is what `texmathp' does (i.e.,
> `texmathp-tex-commands-default') although the list is configurable
> (through `texmathp-tex-commands').
>
> Nesting is not a problem here since you're only interested if the
> top-most environment.

Yeah, I though of that, but that require us to maintain a list of latex
math environments, which may or may not be annoying.  If we add such a
variable where should it live?  org.el or ox-latex.el?

—Rasmus

-- 
This message is brought to you by the department of redundant departments



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Nicolas Goaziou
Rasmus  writes:

> Can we have conditional dependence on texmathp?

I guess it doesn't hurt. You need to declare it as an external function
in order to silence byte-compiler, tho.

> If so, maybe something like the attached, though the latex-environment
> part is ugly.

Another option is to simply extract environment from :value and decide
if it is a math environment or not. This is what `texmathp' does (i.e.,
`texmathp-tex-commands-default') although the list is configurable
(through `texmathp-tex-commands').

Nesting is not a problem here since you're only interested if the
top-most environment.

WDYT?

> Results areq pretty ugly.  E.g. for headline, table, figure, latex-math
> env, latex-env:
>
> \ref{sec:orgheadline1}, \ref{tab:orgtable1}, \ref{fig:orgparagraph1},
> \ref{eq:orglatexenvironment1}, \ref{orglatexenvironment2}

OK.

> +(paragraph
> + (when (org-element-property :caption datum)
> +   "fig:")))

Nitpick: 

  (and (org-element-property ...) "fig:")
  

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Rasmus
Nicolas Goaziou  writes:

> Rasmus  writes:
>
>> Nicolas Goaziou  writes:
>>
>>> However, "tab:orgtable1" or "sec:orgheadline1" are fine, IMO, since
>>> "org" part can keep the label out of userland.
>>
>> That's fine with me as well.
>
> Fair enough. Do you want to take care of extending `org-latex--label'
> appropriately?

Can we have conditional dependence on texmathp?  If so, maybe something
like the attached, though the latex-environment part is ugly.

Results areq pretty ugly.  E.g. for headline, table, figure, latex-math
env, latex-env:

\ref{sec:orgheadline1}, \ref{tab:orgtable1}, \ref{fig:orgparagraph1},
\ref{eq:orglatexenvironment1}, \ref{orglatexenvironment2}

—Rasmus

-- 
Vote for proprietary math!
>From cc2c027ab611c3abcdc5c7cac46b6f45d682657f Mon Sep 17 00:00:00 2001
From: Rasmus 
Date: Mon, 20 Apr 2015 15:06:55 +0200
Subject: [PATCH] ox-latex: Use standard LaTeX label prefixes.

* ox-latex.el (org-latex--label): Use standard LaTeX prefixes.
---
 lisp/ox-latex.el | 17 -
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 2727f1c..075f4e4 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1067,7 +1067,22 @@ Eventually, if FULL is non-nil, wrap label within \"\\label{}\"."
 	  (and (or user-label force)
 	   (if (and user-label (plist-get info :latex-prefer-user-labels))
 		   user-label
-		 (org-export-get-reference datum info)
+		 (concat (case type
+			   (headline "sec:")
+			   (table "tab:")
+			   (latex-environment
+			(and (featurep 'texmathp)
+ (with-temp-buffer
+   (insert (org-element-property :value datum))
+   (goto-char (point-min))
+   (search-forward "}" nil t)
+   (latex-mode)
+   (texmathp))
+ "eq:"))
+			   (paragraph
+			(when (org-element-property :caption datum)
+			  "fig:")))
+			 (org-export-get-reference datum info))
 (cond ((not full) label)
 	  (label (format "\\label{%s}%s"
 			 label
-- 
2.3.5



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Nicolas Goaziou
Rasmus  writes:

> Nicolas Goaziou  writes:
>
>> However, "tab:orgtable1" or "sec:orgheadline1" are fine, IMO, since
>> "org" part can keep the label out of userland.
>
> That's fine with me as well.

Fair enough. Do you want to take care of extending `org-latex--label'
appropriately?

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Rasmus
Nicolas Goaziou  writes:

> However, "tab:orgtable1" or "sec:orgheadline1" are fine, IMO, since
> "org" part can keep the label out of userland.

That's fine with me as well.

—Rasmus


-- 
Evidence suggests Snowden used a powerful tool called monospaced fonts



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Nicolas Goaziou
Rasmus  writes:

> No, like orgheadline1 → sec:headline1 and orgtable1 → tab:table1.  It
> seems a bit repetitive.

I think this is no good.

"tab:table1" is something a user can use for its own LaTeX code, e.g. in
a latex block or environment. In this case, it might interfere with
Org's "tab:table1", which could label a different element.

However, "tab:orgtable1" or "sec:orgheadline1" are fine, IMO, since
"org" part can keep the label out of userland.


Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Rasmus
Nicolas Goaziou  writes:

> Rasmus  writes:
>
>> So we could replace ^org with a mapping, e.g. "headline" → "sec:" and
>> "table" → "tab:".  Then there's the added safety of TYPE-NUMBER and the
>> expected prefix.
>
> Do you mean "orgheadline1" becomes "orgsec:1" and "orgtable1" becomes
> "orgtab:1"? In this case, I don't mind, as long as it is limited to
> "ox-latex" and derived back-ends.

No, like orgheadline1 → sec:headline1 and orgtable1 → tab:table1.  It
seems a bit repetitive.

—Rasmus

-- 
Bang bang



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Nicolas Goaziou
Rasmus  writes:

> So we could replace ^org with a mapping, e.g. "headline" → "sec:" and
> "table" → "tab:".  Then there's the added safety of TYPE-NUMBER and the
> expected prefix.

Do you mean "orgheadline1" becomes "orgsec:1" and "orgtable1" becomes
"orgtab:1"? In this case, I don't mind, as long as it is limited to
"ox-latex" and derived back-ends.

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-20 Thread Rasmus
Nicolas Goaziou  writes:

> Rasmus  writes:
>
>> That's what I meant.  Or rather a wrapper like org-latex--label.  A
>> mapping like the one that was reverted for ox-latex only.  Or are there
>> pitfalls in that approach?
>
> It will not give you predictability either since you cannot guess "4" in
> "sec:4".

That's fine.

> Also, it is dangerous since a user could use \label{sec:4} for something
> different.

So we could replace ^org with a mapping, e.g. "headline" → "sec:" and
"table" → "tab:".  Then there's the added safety of TYPE-NUMBER and the
expected prefix.

> What is the real benefit of "sec:4" over "orgheadline4"? Aesthetics?

Mostly aesthetics.  "sec:4" is expected, though I have no numbers to back
this claim.

I would expect breakage following the change to be pretty rare, but one
example of breakage is fancyref:

\documentclass{article}
\usepackage{fancyref}
\begin{document}
\section{h1}
\label{sec:h1}
\section{h2}
\label{orgheading2}
See \fref{sec:h1} and \fref{orgheading2}
\end{document}

>> It does not IMO. I would rather not label sections manually.
>
> I don't understand that part. Would you mind elaborating a bit?

Given my taste for "standard" prefixes, I would rather not have to label
every section with some custom id to get a standard prefix in the output.

—Rasmus

-- 
I almost cut my hair, it happened just the other day



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Rasmus  writes:

> That's what I meant.  Or rather a wrapper like org-latex--label.  A
> mapping like the one that was reverted for ox-latex only.  Or are there
> pitfalls in that approach?

It will not give you predictability either since you cannot guess "4" in
"sec:4". Also, it is dangerous since a user could use \label{sec:4} for
something different. Hence the `gensym'-like approach: we're pretty safe
with "orgheadline4".

What is the real benefit of "sec:4" over "orgheadline4"? Aesthetics?

> It does not IMO. I would rather not label sections manually.

I don't understand that part. Would you mind elaborating a bit?


Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Rasmus
Nicolas Goaziou  writes:


>> I realize.  /I/ think we should do better.
>
> The only way to do better I can think of is to let "ox-latex.el"
> implements its own labelling scheme, without relying on
> `org-export-get-reference', which is not mandatory anyway.

That's what I meant.  Or rather a wrapper like org-latex--label.  A
mapping like the one that was reverted for ox-latex only.  Or are there
pitfalls in that approach?

> Anyway, I'm not sure we need to bother since
> `org-latex-prefer-user-labels' fills the gap.

It does not IMO.  I would rather not label sections manually.

—Rasmus

-- 
Enough with the bla bla!




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Rasmus  writes:

> I think it's very important that ox-latex outputs are also consumable.  I
> don't want to create another LyX.  Of course we are very far from this
> point.

[...]

> I realize.  /I/ think we should do better.

The only way to do better I can think of is to let "ox-latex.el"
implements its own labelling scheme, without relying on
`org-export-get-reference', which is not mandatory anyway.

Anyway, I'm not sure we need to bother since
`org-latex-prefer-user-labels' fills the gap.


Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Rasmus
Hi,

Nicolas Goaziou  writes:

>> I hope you had a nice time "offline".
>
> Yes I had, thank you.

Cool!

>> I think the label naming is worse now, and I think it's important to
>> produce good quality labels akin to what you would expect from e.g.
>> AUCTeX.
>
> The goal is completely different. AUCTeX generates good quality labels
> because they are meant for user consumption.

I think it's very important that ox-latex outputs are also consumable.  I
don't want to create another LyX.  Of course we are very far from this
point.

> OTOH, `org-export-get-reference' creates impossible to guess labels, for
> internal use only, e.g., much like what `gensym' does.

I realize.  /I/ think we should do better.

Cheers,
Rasmus

-- 
Lasciate ogni speranza o voi che entrate: siete nella mani di'machellaio




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Rasmus  writes:

> I hope you had a nice time "offline".

Yes I had, thank you.

> I think the label naming is worse now, and I think it's important to
> produce good quality labels akin to what you would expect from e.g.
> AUCTeX.

The goal is completely different. AUCTeX generates good quality labels
because they are meant for user consumption.

OTOH, `org-export-get-reference' creates impossible to guess labels, for
internal use only, e.g., much like what `gensym' does.

> However, I have reverted cf7d64fgit per your request.

Thank you.

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Suvayu Ali
On Sun, Apr 19, 2015 at 03:56:22PM +0200, Nicolas Goaziou wrote:
> Suvayu Ali  writes:
> 
> > Ah, that was my report, that option did not work for me completely.
> > See: http://thread.gmane.org/gmane.emacs.orgmode/96887/focus=96888.
> >
> > To summarise quickly, with the above option set to t all
> > references/links behave as I expect, except the ones where the target is
> > a `bare target'.
> >
> > Does that mean there was indeed a bug?
> 
> Yes, Rasmus fixed it in f1548e11fe2972819bc48b88c6094b11150e5c8a. I just
> fixed Rasmus' fix wrt radio targets.

Ah, okk.  Up to speed now.

Cheers,

-- 
Suvayu

Open source is the future. It sets us free.



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Rasmus
Hi Nicolas,

I hope you had a nice time "offline".

Nicolas Goaziou  writes:

> This is why I suggest to rever commit cf7d64f. It also introduces
> a non-alphanumeric character ":", even though `org-export-get-reference'
> uses only alphanumeric ones by portability concern (it is even specified
> in its docstring).

I think the label naming is worse now, and I think it's important to
produce good quality labels akin to what you would expect from
e.g. AUCTeX.  However, I have reverted cf7d64fgit per your request.

Perhaps a solution for high-quality labels in ox-latex can be introduced
later a la org-latex--label.

> Commit f1548e1 is different. I actually mostly agree with it (though
> I was confused at first with the docstring change, which needs to be
> fixed),

I guess the fix is 88108f652f0d4ddb4250cb89c2453df1fc9ee671.  Yes?

> but it breaks radio targets.

I agree, and I actually though I had left out that part when pushing.
Thanks for fixing.

—Rasmus

-- 
However beautiful the theory, you should occasionally look at the evidence




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Suvayu Ali  writes:

> Ah, that was my report, that option did not work for me completely.
> See: http://thread.gmane.org/gmane.emacs.orgmode/96887/focus=96888.
>
> To summarise quickly, with the above option set to t all
> references/links behave as I expect, except the ones where the target is
> a `bare target'.
>
> Does that mean there was indeed a bug?

Yes, Rasmus fixed it in f1548e11fe2972819bc48b88c6094b11150e5c8a. I just
fixed Rasmus' fix wrt radio targets.

Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Suvayu Ali
Hi Nicolas,

On Sun, Apr 19, 2015 at 03:40:07PM +0200, Nicolas Goaziou wrote:
> Suvayu Ali  writes:
> 
> > Okay I see it now, in your last email I got a bit confused, but now I
> > follow.  With your solution I use both label and reference using LaTeX,
> > bypassing Org.  Of course this leaves me with links not working inside
> > Org.  I was eventually going to use filters to transform the ref
> > commands to the alternate ones from refstyle and varioref to get both
> > LaTeX and Org side working as I wanted.  Something like this:
> >
> >   <>
> >
> >   [[sec:interesting]]
> >
> > Then transform \ref{sec:interesting} → \secref{sec:interesting} with a
> > filter; that way I would have my cake and eat it too!  I see your point
> > though.
> 
> You can do that with a non-nil `org-latex-prefer-user-labels'.
> Otherwise, <> becomes \label{whatever}, defeating your
> filter.

Ah, that was my report, that option did not work for me completely.
See: http://thread.gmane.org/gmane.emacs.orgmode/96887/focus=96888.

To summarise quickly, with the above option set to t all
references/links behave as I expect, except the ones where the target is
a `bare target'.

Does that mean there was indeed a bug?

Cheers,

-- 
Suvayu

Open source is the future. It sets us free.



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Suvayu Ali  writes:

> Okay I see it now, in your last email I got a bit confused, but now I
> follow.  With your solution I use both label and reference using LaTeX,
> bypassing Org.  Of course this leaves me with links not working inside
> Org.  I was eventually going to use filters to transform the ref
> commands to the alternate ones from refstyle and varioref to get both
> LaTeX and Org side working as I wanted.  Something like this:
>
>   <>
>
>   [[sec:interesting]]
>
> Then transform \ref{sec:interesting} → \secref{sec:interesting} with a
> filter; that way I would have my cake and eat it too!  I see your point
> though.

You can do that with a non-nil `org-latex-prefer-user-labels'.
Otherwise, <> becomes \label{whatever}, defeating your
filter.


Regards,



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Suvayu Ali
Hi Nicolas,

On Sun, Apr 19, 2015 at 02:57:09PM +0200, Nicolas Goaziou wrote:
> Suvayu Ali  writes:
> 
> > Sorry, I don't think I quite understand.  AFAIU, targets like
> > <> have to be unique even inside the Org buffer for links
> > like this to work: [[interesting][very cool]], regardless of export.  So
> > then why rename them during export?
> 
> There's no guarantee that, e.g., \label{interesting} is a valid syntax.
> Think about <<100%>> for LaTeX. Actually such links were broken for
> non-ASCII characters before the patch.
> 
> Note that this is transparent for the user: if <> becomes
> \label{foo}, [[interesting][very cool]] automatically becomes
> \hyperref[foo]{very cool}.
> 
> Your problem is different AFAIU. You are relying on the internal pattern
> of generated labels, i.e., you are eating Org's dog food. I advise
> against it.

Yes indeed.  I wanted to use the location information provided by
refstyle, and varioref.  By using \secref or \vpageref I would get
references like: section §3, on page 5, etc.

> If you need explicitly "\label{interesting}", ask Org to write it with,
> e.g., "@@latex:\label{foo}@@" or even better
> 
> #+MACRO: lbl @@latex:\label{$1}@@
> 
>   {{{lbl(foo)}}}
>

Okay I see it now, in your last email I got a bit confused, but now I
follow.  With your solution I use both label and reference using LaTeX,
bypassing Org.  Of course this leaves me with links not working inside
Org.  I was eventually going to use filters to transform the ref
commands to the alternate ones from refstyle and varioref to get both
LaTeX and Org side working as I wanted.  Something like this:

  <>

  [[sec:interesting]]

Then transform \ref{sec:interesting} → \secref{sec:interesting} with a
filter; that way I would have my cake and eat it too!  I see your point
though.

Thanks a lot for the comments.  :)

Cheers,

-- 
Suvayu

Open source is the future. It sets us free.



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Nicolas Goaziou
Hello,

Suvayu Ali  writes:

> Sorry, I don't think I quite understand.  AFAIU, targets like
> <> have to be unique even inside the Org buffer for links
> like this to work: [[interesting][very cool]], regardless of export.  So
> then why rename them during export?

There's no guarantee that, e.g., \label{interesting} is a valid syntax.
Think about <<100%>> for LaTeX. Actually such links were broken for
non-ASCII characters before the patch.

Note that this is transparent for the user: if <> becomes
\label{foo}, [[interesting][very cool]] automatically becomes
\hyperref[foo]{very cool}.

Your problem is different AFAIU. You are relying on the internal pattern
of generated labels, i.e., you are eating Org's dog food. I advise
against it.

If you need explicitly "\label{interesting}", ask Org to write it with,
e.g., "@@latex:\label{foo}@@" or even better

#+MACRO: lbl @@latex:\label{$1}@@

  {{{lbl(foo)}}}

> How does the above solve the issue?  I was not having problems with
> getting to export \label{foo}, my problem was what do I put as `foo'
> since in the exported TeX file foo was different.
>
> Hopefully I made myself clear, or I'm not misunderstanding something.

Again <> are for [[target]], \label{...} are for
\whateverref{..}. IOW, you are mixing two different concepts. Since you
write "\secref{fig:1}" in your documents, you can also write
"\label{fig:1}" there.

Org can only ensures you that [[target]] always point to <>. No
more, no less.

There is another data point to consider: internal label scheme must not
follow a simple pattern, as a user might use the same and introduce
a label collision. E.g., if <> becomes par:foo, the following
line is problematic:

  <> \label{par:foo} \ref{par:foo} [[foo]]

This is why I suggest to rever commit cf7d64f. It also introduces
a non-alphanumeric character ":", even though `org-export-get-reference'
uses only alphanumeric ones by portability concern (it is even specified
in its docstring).

Commit f1548e1 is different. I actually mostly agree with it (though
I was confused at first with the docstring change, which needs to be
fixed), but it breaks radio targets. It doesn't need to be reverted.


Regards,

-- 
Nicolas Goaziou



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-19 Thread Suvayu Ali
Hi Nicolas,

On Sat, Apr 18, 2015 at 11:53:01PM +0200, Nicolas Goaziou wrote:
> Hello,
> 
> Rasmus  writes:
> 
> > Suvayu Ali  writes:
> >
> >> Hi Rasmus,
> >>
> >> On Thu, Apr 16, 2015 at 12:57:46AM +0200, Rasmus wrote:
> >>> 
> >>> Could you try the attached patches and see if they solve your issues?
> >>
> >> Seems to work nicely.  I'll keep using them rest of the week.
> >
> > Pushed.
> >
> > I removed support for radio targets as I don't really see the point in
> > those supporting custom labeling.  They are transcoded as
> >
> > <<>
> > →
> > \hyperref{label}{target}
> >
> > It makes little sense to label be the same as target, though it probably
> > would not create problems.
> 
> I don't see the point of this change. The naming scheme is internal
> anyway. Users are not supposed to use it directly.

Sorry, I don't think I quite understand.  AFAIU, targets like
<> have to be unique even inside the Org buffer for links
like this to work: [[interesting][very cool]], regardless of export.  So
then why rename them during export?

> If you want \label{foo} in the output, you can write
> @@latex:\label{foo}@@.
> 
> Targets are for Org links and are expected to work across all back-ends,
> so the problem they solve is slightly different.

How does the above solve the issue?  I was not having problems with
getting to export \label{foo}, my problem was what do I put as `foo'
since in the exported TeX file foo was different.

Hopefully I made myself clear, or I'm not misunderstanding something.

Cheers,

-- 
Suvayu

Open source is the future. It sets us free.



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-18 Thread Nicolas Goaziou
Hello,

Rasmus  writes:

> Suvayu Ali  writes:
>
>> Hi Rasmus,
>>
>> On Thu, Apr 16, 2015 at 12:57:46AM +0200, Rasmus wrote:
>>> 
>>> Could you try the attached patches and see if they solve your issues?
>>
>> Seems to work nicely.  I'll keep using them rest of the week.
>
> Pushed.
>
> I removed support for radio targets as I don't really see the point in
> those supporting custom labeling.  They are transcoded as
>
> <<>
> →
> \hyperref{label}{target}
>
> It makes little sense to label be the same as target, though it probably
> would not create problems.

I don't see the point of this change. The naming scheme is internal
anyway. Users are not supposed to use it directly.

If you want \label{foo} in the output, you can write
@@latex:\label{foo}@@.

Targets are for Org links and are expected to work across all back-ends,
so the problem they solve is slightly different.

Please revert f1548e1 and cf7d64f, they are not a correct solution.

Thank you.


Regards,

-- 
Nicolas Goaziou



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-16 Thread Rasmus
Suvayu Ali  writes:

> Hi Rasmus,
>
> On Thu, Apr 16, 2015 at 12:57:46AM +0200, Rasmus wrote:
>> 
>> Could you try the attached patches and see if they solve your issues?
>
> Seems to work nicely.  I'll keep using them rest of the week.

Pushed.

I removed support for radio targets as I don't really see the point in
those supporting custom labeling.  They are transcoded as

<<>
→
\hyperref{label}{target}

It makes little sense to label be the same as target, though it probably
would not create problems.

—Rasmus

-- 
A clever person solves a problem. A wise person avoids it




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-15 Thread Suvayu Ali
Hi Rasmus,

On Thu, Apr 16, 2015 at 12:57:46AM +0200, Rasmus wrote:
> 
> Could you try the attached patches and see if they solve your issues?

Seems to work nicely.  I'll keep using them rest of the week.

Thanks,  :)

-- 
Suvayu

Open source is the future. It sets us free.



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-15 Thread Rasmus
Hi,

Could you try the attached patches and see if they solve your issues?

Thanks,
Rasmus

-- 
C is for Cookie
>From 8951c689a7812d6557ba65888e549013814e5f8a Mon Sep 17 00:00:00 2001
From: Rasmus 
Date: Wed, 15 Apr 2015 21:50:53 +0200
Subject: [PATCH 2/2] ox: Change label naming scheme

* ox.el (org-export-get-reference): Change labeling scheme.

160820bc94 and later changed the label naming scheme to follow types.
This commit maps to types to more standard names, e.g. 'headline' to
'sec'.
---
 lisp/ox.el | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lisp/ox.el b/lisp/ox.el
index d6dcc82..f7d0ef5 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -4149,9 +4149,18 @@ alphanumeric characters only."
 		 h
 (or (gethash datum cache)
 	(puthash datum
-		 (format "org%s%d"
+		 (format "%s:%d"
 			 (if type
-			 (replace-regexp-in-string "-" "" (symbol-name type))
+			 (case type
+			   (headline "sec")
+			   (paragraph
+(if (org-element-property :caption datum)
+"fig" "paragraph"))
+			   (latex-environment "eq")
+			   (table "tbl")
+			   (otherwise
+(replace-regexp-in-string "-" ""
+			  (symbol-name type
 			   "secondarystring")
 			 (incf (gethash type cache 0)))
 		 cache
-- 
2.3.5

>From a01e6759a6a016fd4c684eaaa56544d8507c897f Mon Sep 17 00:00:00 2001
From: Rasmus 
Date: Wed, 15 Apr 2015 21:46:57 +0200
Subject: [PATCH 1/2] ox-latex: Wider user-label support

* ox-latex.el (org-latex--label): Add user-labels for targets and
  radio-target.
(org-latex--wrap-label, org-latex-link, org-latex-target)
(org-latex-radio-target): Use org-latex--label.
---
 lisp/ox-latex.el | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 61d16b1..b22b0a7 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1056,9 +1056,10 @@ return a unique label.
 Eventually, if FULL is non-nil, wrap label within \"\\label{}\"."
   (let* ((user-label
 	  (org-element-property
-	   (if (memq (org-element-type element) '(headline inlinetask))
-	   :CUSTOM_ID
-	 :name)
+	   (case (org-element-type element)
+	 ((headline inlinetask) :CUSTOM_ID)
+	 ((target radio-target) :value)
+	 (otherwise :name))
 	   element))
 	 (label
 	  (and (or user-label force)
@@ -1176,7 +1177,7 @@ should not be used for floats.  See
   (if (not (and (org-string-nw-p output) (org-element-property :name element)))
   output
 (concat (format "\\phantomsection\n\\label{%s}\n"
-		(org-export-get-reference element info))
+		(org-latex--label element info))
 	output)))
 
 (defun org-latex--text-markup (text markup info)
@@ -2088,7 +2089,7 @@ INFO is a plist holding contextual information.  See
   (let ((destination (org-export-resolve-radio-link link info)))
 	(if (not destination) desc
 	  (format "\\hyperref[%s]{%s}"
-		  (org-export-get-reference destination info)
+		  (org-latex--label destination info)
 		  desc
  ;; Links pointing to a headline: Find destination and build
  ;; appropriate referencing command.
@@ -2416,7 +2417,7 @@ holding contextual information."
   "Transcode a RADIO-TARGET object from Org to LaTeX.
 TEXT is the text of the target.  INFO is a plist holding
 contextual information."
-  (format "\\label{%s}%s" (org-export-get-reference radio-target info) text))
+  (format "\\label{%s}%s" (org-latex--label radio-target info) text))
 
 
  Section
@@ -3029,7 +3030,7 @@ a communication channel."
   "Transcode a TARGET object from Org to LaTeX.
 CONTENTS is nil.  INFO is a plist holding contextual
 information."
-  (format "\\label{%s}" (org-export-get-reference target info)))
+  (format "\\label{%s}" (org-latex--label target info)))
 
 
  Timestamp
-- 
2.3.5



Re: [O] Target and link text normalised to `orgtargetn'

2015-04-14 Thread Andreas Leha
Rasmus  writes:
> Hi,
>
> Suvayu Ali  writes:
>
>>> references, so \secref{sec:foo}, \figref{fig:bar}, \tabref{sec:baz} (it
>>> even takes care of language, or punctuation as needed!).  Now if the
>>> target text changes from sec:foo to orgtarget1, of course the link
>>> breaks.
>>
>> The commit 4bbc054 introduces a variable org-latex-prefer-user-labels.
>> which is reponsible for this behaviour.  Setting this variable to t
>> doesn't entirely solve my problem though.  Normal targets like
>> <> are still altered.
>
> The change in behavior is approximately
> 160820bc9498e9364103e72b55a27cf92576dbb8 to
> 4bbc054bd252b975f483a29515495a9af9329c71.
>
> IMO the issue is that org-export-get-reference does not map back to
> default-type references (sec:·, fig:·).  I think this should be fixed.
>
>> I think the docstring hints at that already.
>>
>>   For headlines that do not define the CUSTOM_ID property or elements
>>   without a NAME, Org will continue to use its default labeling scheme
>>   to generate labels and resolve links into proper references.
>>
>> I guess a bare target is an element without a NAME.  I find this a bit
>> strange, since the user already adds the target manually.  So I think it
>> is already the user's responsibility to ensure it is consistent.
>> Shouldn't then Org leave this unchanged?
>
> That seems like a bug.
>

Seems both, self-fixing and Rasmus-fixing.

(Sorry, could not resist.)

Andreas




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-14 Thread Rasmus
Hi,

Suvayu Ali  writes:

>> references, so \secref{sec:foo}, \figref{fig:bar}, \tabref{sec:baz} (it
>> even takes care of language, or punctuation as needed!).  Now if the
>> target text changes from sec:foo to orgtarget1, of course the link
>> breaks.
>
> The commit 4bbc054 introduces a variable org-latex-prefer-user-labels.
> which is reponsible for this behaviour.  Setting this variable to t
> doesn't entirely solve my problem though.  Normal targets like
> <> are still altered.

The change in behavior is approximately
160820bc9498e9364103e72b55a27cf92576dbb8 to
4bbc054bd252b975f483a29515495a9af9329c71.

IMO the issue is that org-export-get-reference does not map back to
default-type references (sec:·, fig:·).  I think this should be fixed.

> I think the docstring hints at that already.
>
>   For headlines that do not define the CUSTOM_ID property or elements
>   without a NAME, Org will continue to use its default labeling scheme
>   to generate labels and resolve links into proper references.
>
> I guess a bare target is an element without a NAME.  I find this a bit
> strange, since the user already adds the target manually.  So I think it
> is already the user's responsibility to ensure it is consistent.
> Shouldn't then Org leave this unchanged?

That seems like a bug.

—Rasmus

-- 
To err is human. To screw up 10⁶ times per second, you need a computer




Re: [O] Target and link text normalised to `orgtargetn'

2015-04-14 Thread Suvayu Ali
Hi,

I found a partial answer.

On Tue, Apr 14, 2015 at 11:25:30AM +0200, Suvayu Ali wrote:
> 
> I am exporting Org files to LaTeX.  I noticed something strange
> happening.  The text of all my target text gets changed to `orgtargetn'
> where n is some number.  This breaks a lot of my LaTeX specific links.
> 
> For example, I use the varioref package to get entity specific

Typo here, the package name is actually refstyle.

> references, so \secref{sec:foo}, \figref{fig:bar}, \tabref{sec:baz} (it
> even takes care of language, or punctuation as needed!).  Now if the
> target text changes from sec:foo to orgtarget1, of course the link
> breaks.

The commit 4bbc054 introduces a variable org-latex-prefer-user-labels.
which is reponsible for this behaviour.  Setting this variable to t
doesn't entirely solve my problem though.  Normal targets like
<> are still altered.

I think the docstring hints at that already.

  For headlines that do not define the CUSTOM_ID property or elements
  without a NAME, Org will continue to use its default labeling scheme
  to generate labels and resolve links into proper references.

I guess a bare target is an element without a NAME.  I find this a bit
strange, since the user already adds the target manually.  So I think it
is already the user's responsibility to ensure it is consistent.
Shouldn't then Org leave this unchanged?

Thanks,

-- 
Suvayu

Open source is the future. It sets us free.