GNU bug report logs - #32089
RefTeX: Regexp for parsing labels in optional arguments

Previous Next

Package: auctex;

Reported by: Arash Esbati <arash.esbati <at> gmail.com>

Date: Sat, 7 Jul 2018 21:25:02 UTC

Severity: normal

Done: Arash Esbati <arash <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Arash Esbati <arash.esbati <at> gmail.com>
Subject: bug#32089: closed (Re: bug#32089: RefTeX: Regexp for parsing
 labels in optional arguments)
Date: Tue, 30 Apr 2019 22:03:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#32089: RefTeX: Regexp for parsing labels in optional arguments

which was filed against the auctex package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 32089 <at> debbugs.gnu.org.

-- 
32089: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32089
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Arash Esbati <arash <at> gnu.org>
To: 32089-close <at> debbugs.gnu.org
Subject: Re: bug#32089: RefTeX: Regexp for parsing labels in optional arguments
Date: Wed, 01 May 2019 00:01:18 +0200
> It is due to the regex defined in `reftex-label-regexps' in
> `reftex-vars.el' which expects one of ],} directly after the label.
> With the following patch, it parses the labels correctly:
>
> --8<---------------cut here---------------start------------->8---
> diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
> index 11dbb8d..66d800d 100644
> --- a/lisp/textmodes/reftex-vars.el
> +++ b/lisp/textmodes/reftex-vars.el
> @@ -895,7 +895,7 @@ DOWNCASE    t:   Downcase words before using them."
>        "\\\\label{\\(?1:[^}]*\\)}"
>        ;; keyvals [..., label = {foo}, ...] forms used by ctable,
>        ;; listings, minted, ...
> -      "\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
> +      "\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^], \t\n\r%}]+\\)}?")
>      "List of regexps matching \\label definitions.
>  The default value matches usual \\label{...} definitions and
>  keyval style [..., label = {...}, ...] label definitions.  It is
>  --8<---------------cut here---------------end--------------->8---
>
> Any suggestion if I'm missing a character?  My next step would be to add
> the same regexp to `LaTeX-auto-label-regexp-list' in order to make
> AUCTeX also capable of this feature.  Any comments welcome.

Following up myself, I'm closing this one as it is fixed in Emacs:

http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=b18cecf89bbb9d2d057f86e8fa1a1f1417d887b6
http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=eed512814c45cd5859a1814bf07ad18ea3fa3b1a

Best, Arash

[Message part 3 (message/rfc822, inline)]
From: Arash Esbati <arash.esbati <at> gmail.com>
To: auctex-bugs <bug-auctex <at> gnu.org>
Subject: RefTeX: Regexp for parsing labels in optional arguments
Date: Sat, 07 Jul 2018 23:11:26 +0200
Hi all,

please consider the following example:

--8<---------------cut here---------------start------------->8---
\documentclass{article}
\usepackage{listings}
\begin{document}

\begin{lstlisting}[
caption={Some caption},
label=lst:1]
Some code
\end{lstlisting}

\begin{lstlisting}[
caption={Some caption},
label=lst:2
]
Some code
\end{lstlisting}

\begin{lstlisting}[
caption = {Some caption},
label   = lst:3                   ]
Some code
\end{lstlisting}

\ref{lst:1}, \ref{lst:2
}, \ref{lst:3                   }

\ref{lst:1}, \ref{lst:2}, \ref{lst:3}

\end{document}
--8<---------------cut here---------------end--------------->8---

With RefTeX active, it fails to parse the labels defined in optional
arguments correctly (see the first set of \ref commands).  It is due to
the regex defined in `reftex-label-regexps' in `reftex-vars.el' which
expects one of ],} directly after the label.  With the following patch,
it parses the labels correctly:

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 11dbb8d..66d800d 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -895,7 +895,7 @@ DOWNCASE    t:   Downcase words before using them."
       "\\\\label{\\(?1:[^}]*\\)}"
       ;; keyvals [..., label = {foo}, ...] forms used by ctable,
       ;; listings, minted, ...
-      "\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
+      "\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^], \t\n\r%}]+\\)}?")
     "List of regexps matching \\label definitions.
 The default value matches usual \\label{...} definitions and
 keyval style [..., label = {...}, ...] label definitions.  It is
 --8<---------------cut here---------------end--------------->8---

Any suggestion if I'm missing a character?  My next step would be to add
the same regexp to `LaTeX-auto-label-regexp-list' in order to make
AUCTeX also capable of this feature.  Any comments welcome.

Best, Arash



This bug report was last modified 6 years and 51 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.