Michael Bach <pha...@gmail.com> writes:

>> Ah, and one restriction: You have to write labels like so
>> 
>>   [..., label={tab:foo}, ...]
>> 
>> that is, no spaces around the =, and the {} are mandatory.  That
>> could probably be relaxed a bit, but maybe you'd get false positives
>> then...
>
> This is no big deal because of yasnippet (for new files) and keyboard
> macros (for old files)...

The committed change doesn't have that restriction.  And in the patch
you have there's another problem.  You cannot jump to the label location
from the *toc* buffer, cause the label-finding regex had to be adapted,
too.

Complete patch below.

>> I tried it with the attached tex file and it seems to work for ctable
>> and listings (which I added, but the context isn't that good).
>
> It also works for my ctables in my (org) files.  This has bothered me
> a long time, thanks for the quick patch!

Awesome.

Bye,
Tassilo

=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog	2012-07-27 03:48:40 +0000
+++ lisp/ChangeLog	2012-07-27 07:59:50 +0000
@@ -1,3 +1,11 @@
+2012-07-27  Tassilo Horn  <t...@gnu.org>
+
+	* textmodes/reftex-vars.el (reftex-label-alist-builtin): Add
+	support for the lstlisting and minted environments, and for the
+	ctable macro.
+	* textmodes/reftex.el (reftex-compile-variables): Also recognize
+	labels written in keyvals syntax.
+
 2012-07-27  Jay Belanger  <jay.p.belan...@gmail.com>
 
 	* calc/calccomp.el (math-compose-expr): Use parentheses when

=== modified file 'lisp/textmodes/reftex-vars.el'
--- lisp/textmodes/reftex-vars.el	2012-04-09 13:05:48 +0000
+++ lisp/textmodes/reftex-vars.el	2012-07-27 07:59:50 +0000
@@ -122,7 +122,14 @@
       ;;("\\label{*}" nil nil nil nil)
       ))
 
-    )
+    (ctable	"The ctable package"
+     (("\\ctable[]{}{}{}" ?t "tab:" "\\ref{%s}" 1 ("table" "Tabelle"))))
+
+    (listings	"The listings package"
+      (("lstlisting" ?l "lst:" "~\\ref{%s}" nil (regexp "[Ll]isting"))))
+
+    (minted	"The minted package"
+      (("minted" ?l "lst:" "~\\ref{%s}" nil (regexp "[Ll]isting")))))
   "The default label environment descriptions.
 Lower-case symbols correspond to a style file of the same name in the LaTeX
 distribution.  Mixed-case symbols are convenience aliases.")

=== modified file 'lisp/textmodes/reftex.el'
--- lisp/textmodes/reftex.el	2012-01-19 07:21:25 +0000
+++ lisp/textmodes/reftex.el	2012-07-27 07:59:50 +0000
@@ -1284,7 +1284,15 @@
 ;          (wbol "\\(\\`\\|[\n\r]\\)[ \t]*")
            (wbol "\\(^\\)[ \t]*")  ; Need to keep the empty group because
                                   ;;; because match number are hard coded
-           (label-re "\\\\label{\\([^}]*\\)}")
+           (label-re (concat "\\(?:"
+			     ;; Normal \label{...}
+			     "\\\\label{\\([^}]*\\)}"
+			     "\\|"
+			     ;; keyvals [..., label = {foo}, ...]
+			     ;; forms used by ctable, listings,
+			     ;; minted, ...
+			     "\\[[^]]*label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?[^[]*\\]"
+			     "\\)"))
            (include-re (concat wbol
                                "\\\\\\("
                                (mapconcat 'identity
@@ -1312,6 +1320,8 @@
                     "\\)\\([[{][^]}]*[]}]\\)*[[{]\\(%s\\)[]}]"))
            (find-label-re-format
             (concat "\\("
+		    "\\[[^]]*label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?[^[]*\\]"
+		    "\\|"
                     (mapconcat 'regexp-quote (append '("\\label")
                                                      macros-with-labels) "\\|")
                     "\\)\\([[{][^]}]*[]}]\\)*[[{]\\(%s\\)[]}]"))

_______________________________________________
auctex mailing list
auctex@gnu.org
https://lists.gnu.org/mailman/listinfo/auctex

Reply via email to