Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Questions emacs avec reftex-label-alist

17 réponses
Avatar
Marc Boyer
Bonjour,

je n'arrive pas à faire fonctionner reftex-label-alist...

J'ai repris ce que dit la doc, et j'ai fait l'ECM suivant

\documentclass{article}
\usepackage{amsmath}
\newtheorem{axiom}{Axiom}
\newtheorem{theorem}{Theorem}
\begin{document}

\begin{theorem}
\label{thm:first}
\end{theorem}

Like in thm.

\begin{axiom}
\label{ax:first}
\end{axiom}

\end{document}

%%% Local Variables:
%%% reftex-label-alist: (("axiom" ?A "ax:" "~\\ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~\\ref{%s}" t ("theorem" "thm.") -3))
%%% End:

Quand j'édite mon texte ensuite, "C-c )" me propose bien
d'insérer un label et le propose bien mes nouveaux types
A et T pour axiom et theorem. Mais que je choisisse l'un
ou l'autre, il m'affiche ensuite une liste vide de
reference. Alors que si je sélectionne tous (par espace),
les deux label apparaissent bien.

Quelqu'un utilise cette chose ? Qu'est-ce que je manque ?

Marc
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet

7 réponses

1 2
Avatar
Marc Boyer
Le 27-09-2013, Vincent Belaïche a écrit :
Est-ce que tu as essayé de voir si tu as le même problème en démarrant
sans fichier d'init (option -q en ligne de commande), ou plutôt avec un
fichier d'init réduit au minimum pour avoir le mode latex.



Puisque cette discussion s'allonge, une précision quand vous dites que
"ça marche" chez vous.

Lorsque je tape C-) dans le texte puis que je sélectionne A ou T, j'ai
un buffer qui s'ouvre avec:
* Theorem:
* Axiom:
ce qui ne permet pas de sélectionner quoi que ce soit, alors que
je m'attendais à avoir:
* Theorem:
thr:first


.
* Axiom:


ou bien

* Theorem:
* Axiom:
ax:first


.

Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
vincent.belaiche
Marc Boyer writes:

Le 27-09-2013, Vincent Belaïche a écrit :
Est-ce que tu as essayé de voir si tu as le même problème en démarrant
sans fichier d'init (option -q en ligne de commande), ou plutôt avec un
fichier d'init réduit au minimum pour avoir le mode latex.



Puisque cette discussion s'allonge, une précision quand vous dites que
"ça marche" chez vous.

Lorsque je tape C-) dans le texte puis que je sélectionne A ou T, j'ai
un buffer qui s'ouvre avec:
* Theorem:
* Axiom:
ce qui ne permet pas de sélectionner quoi que ce soit, alors que
je m'attendais à avoir:
* Theorem:
thr:first


.
* Axiom:


ou bien

* Theorem:
* Axiom:
ax:first


.

Marc Boyer



En ce qui me concerne quand je fais C-) alors que le curseur est après
thm. dans le texte j'ai dans un premier temps un tampon *RefTeX Select*
comme ça:

-----------------------------------------------------------------------
SELECT A REFERENCE FROMAT

[^M] ref
[p] pagereg
-----------------------------------------------------------------------

Je tape RET

et puis le tampon *RefTeX Select* est comme ça:

-----------------------------------------------------------------------
* Theorem:
thm:first


.
* Axiom:
-----------------------------------------------------------------------

Je n'ai qu'à taper RET de nouveau pour insérer ~ref{thm:first}.

J'ai une version
GNU Emacs 24.3.50.1 (i386-mingw-nt5.1.2600) of 2013-04-08 on MA_MACHINE

c'est une construction que j'ai fait à partir du dépôt Bazaar, et en
plus j'ai fait l'essai avec mon fichier d'init.

Je viens d'essayer avec une une 24.3

GNU Emacs 24.3.1 (i386-mingw-nt5.1.2600) of 2013-03-17 on MARVIN

et avec l'option -q, et ça ne marche pas non plus

j'ai toujours

-----------------------------------------------------------------------
SELECT A REFERENCE FROMAT

[^M] ref
[p] pagereg
-----------------------------------------------------------------------

mais ensuite j'ai un message

-----------------------------------------------------------------------
Label type: [ efilnNst] (?=Help)
-----------------------------------------------------------------------

C'est à dire sans le A ni le T...

Dans mon fichier d'init j'ai

(setq reftex-plug-into-AUCTeX t
reftex-insert-label-flags '("s" "sfte"))
(setq-default TeX-master nil) ; Query for master file.

Bon, je n'ai pas encore essayer ma construction Bazaar avec -q pour
voir...

Vincent.
Avatar
vincent.belaiche
(Vincent Belaïche) writes:

Marc Boyer writes:

Le 27-09-2013, Vincent Belaïche a écrit :





[...]

Bon, je n'ai pas encore essayer ma construction Bazaar avec -q pour
voir...

Vincent.



Je crois que j'ai compris, ça ne dépend pas de ma version d'EMACS
(pareil avec la dernière release `GNU Emacs 24.3.1
(i386-mingw-nt5.1.2600) of 2013-03-17 on MARVIN' que tu trouveras sur
savannah, et ma construction bazaar).

En fait, reftex-label-alist n'est pas directement utilisé pour créer la
liste de labels, mais pour initialiser un structure de données cache qui
sera utilisée pour créer les labels. Lorsque tu relances reftex-mode par
un hook *après* la lecture de la variable de fichier reftex-label-alist,
alors cette cache est re-initialisée et tu n'as plus toute la structure.

Essaie avec à la fin du fichier (pour forcer l'ordre):

%%% Local Variables:
%%% eval: (reftex-mode 1)
%%% reftex-label-alist: (("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~ref{%s}" t ("theorem" "thm.") -3))
%%% End:

et avec -q et sans charger reftex-mode avec un hook ou manuellement, et
tu verras...

essaie aussi avec dans cet ordre:

%%% Local Variables:
%%% reftex-label-alist: (("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~ref{%s}" t ("theorem" "thm.") -3))
%%% eval: (reftex-mode 1)
%%% End:

La difference que j'observe c'est que dans les deux cas je peux avoir
les labels théorèmes, mais dans le second cas c'est plus compliqué, en
effet lorsque j'ai le message

Label type: [ efilnNst] (?=Help)

il faut que je tape SPC, et là j'ai tous les labels, y compris théorème,
c'est donc une présentation moins pratique.

Enfin bref, je pense qu'effectivement il y a un petit problème dans la
façon dont reftex s'initialise. C'est sans doute dû au fait que reftex
ne gère pas les tampons indépendemment les uns des autres mais a une
structure de données qui prend en compte tous les tampons --- en effet
il peut y avoir des documents sur plusieurs fichiers. Le fait de lancer
reftex-mode pour la première fois --- quand il n'y a pas d'autre tampon
en reftex-mode --- doit provoquer une re-initialisation plus radicale
causant le fait que reftex-label-alist est ignorée.

À ce propos, je me demande si on peut vraiment blamer reftex: tu
définies reftex-label-alist comme un variable locale à *un* tampon, mais
reftex par essence doit pouvoir gérer de façon cohérente plusieurs
tampons correspondant à un même document... Je pense que le problème
fondamental c'est l'utilisation d'une variable de fichier, plutôt qu'une
customisation générale.

Voir le noeud d'info `(reftex) Theorem and Axiom', on y lit

We can either use Lisp to do this (e.g. in `.emacs') or use the custom
library

Mais peut-être il y a aussi que (dans le même noeud):

Additionally, the following needs to be added to one's .emacs file
before AUCTeX will automatically create labels for the new environments.

(add-hook 'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("axiom" LaTeX-env-label)
'("theorem" LaTeX-env-label))))

Vincent.
Avatar
Marc Boyer
Le 02-10-2013, Vincent Belaïche a écrit :
En fait, reftex-label-alist n'est pas directement utilisé pour créer la
liste de labels, mais pour initialiser un structure de données cache qui
sera utilisée pour créer les labels. Lorsque tu relances reftex-mode par
un hook *après* la lecture de la variable de fichier reftex-label-alist,
alors cette cache est re-initialisée et tu n'as plus toute la structure.

Essaie avec à la fin du fichier (pour forcer l'ordre):

%%% Local Variables:
%%% eval: (reftex-mode 1)
%%% reftex-label-alist: (("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~ref{%s}" t ("theorem" "thm.") -3))
%%% End:



Dans ce cas là, je retrouve le comportement "habituel": il me propose
Label type: [ AefilnNstT] (?=Help)
mais si je le sélectionne A ou T, il n'affiche aucun label associé.

essaie aussi avec dans cet ordre:

%%% Local Variables:
%%% reftex-label-alist: (("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~ref{%s}" t ("theorem" "thm.") -3))
%%% eval: (reftex-mode 1)
%%% End:

La difference que j'observe c'est que dans les deux cas je peux avoir
les labels théorèmes, mais dans le second cas c'est plus compliqué, en
effet lorsque j'ai le message

Label type: [ efilnNst] (?=Help)



Idem: il n'a donc pas pris en compte la variable reftex-label-alist.

il faut que je tape SPC, et là j'ai tous les labels, y compris théorème,
c'est donc une présentation moins pratique.



En effet moins pratique: dans le vrai document, j'ai environ 500 références,
et 50 théorèmes. Le but de la particularisation de reftex-label-alist
était de filter.

À ce propos, je me demande si on peut vraiment blamer reftex: tu
définies reftex-label-alist comme un variable locale à *un* tampon, mais
reftex par essence doit pouvoir gérer de façon cohérente plusieurs
tampons correspondant à un même document... Je pense que le problème
fondamental c'est l'utilisation d'une variable de fichier, plutôt qu'une
customisation générale.



Je comprends la limitation technique. Mais je travaille avec des
co-auteurs différents, et avec des recommandations d'éditeurs différents.
Certains utilise "Theorem", d'autres "theorem", certains "thm:", d'autres
"thr:". Le but c'était d'avoir des configs par fichier. Mais bon,
je peux mettre dans le .emacs si besoin.

J'ai d'ailleurs tenté de faire un fichier de config minimal:
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-label-alist '(("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:" "~ref{%s}" t ("theorem" "thm.") -3)))
et je me retrouve avec mon pb initial de semi-prise en compte de
la variable: les A et T apparaissent mais leur sélection ne
fait pas apparaître les references associées.

Merci pour le coup de main, je crois que je vais faire
ma requette directement sur la mailing list auctex.

--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
vincent.belaiche
Marc Boyer writes:


[...]



Je comprends la limitation technique. Mais je travaille avec des
co-auteurs différents, et avec des recommandations d'éditeurs différents.
Certains utilise "Theorem", d'autres "theorem", certains "thm:", d'autres
"thr:". Le but c'était d'avoir des configs par fichier. Mais bon,
je peux mettre dans le .emacs si besoin.



Ok tu peux faire un hook qui lorsque que tu travaille sur ce fichier te
fait la bonne config.


J'ai d'ailleurs tenté de faire un fichier de config minimal:
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-label-alist '(("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:"
"~ref{%s}" t ("theorem" "thm.") -3)))
et je me retrouve avec mon pb initial de semi-prise en compte de
la variable: les A et T apparaissent mais leur sélection ne
fait pas apparaître les references associées.



est-ce que tu as essayé un M-x reftex-reset-mode, au cas où ... ?


Merci pour le coup de main, je crois que je vais faire
ma requette directement sur la mailing list auctex.



Est-ce que tu as aussi essayé ce que le noeud d'info (reftex) Theorem
and Axiom préconise --- voir mon message précédent.

Je te conseille de télécharger la dernière version de RefTeX --- je
crois que ce qui se trouve sous le dépôt bazaar d'EMACS est à peu de
chose près la dernière --- et d'essayer avec.

Pour l'installer il suffit de recopier les fichiers dans

ton_emacs/lisp/textmodes

de les byte-compiler (`B' end Dired mode), et de les charger (`L' en
Dired mode).

Vincent.
Avatar
Marc Boyer
Le 04-10-2013, Vincent Belaïche a écrit :
J'ai d'ailleurs tenté de faire un fichier de config minimal:
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-label-alist '(("axiom" ?A "ax:" "~ref{%s}" nil ("axiom" "ax.") -2) ("theorem" ?T "thr:"
"~ref{%s}" t ("theorem" "thm.") -3)))
et je me retrouve avec mon pb initial de semi-prise en compte de
la variable: les A et T apparaissent mais leur sélection ne
fait pas apparaître les references associées.



est-ce que tu as essayé un M-x reftex-reset-mode, au cas où ... ?



Pas mieux.

Merci pour le coup de main, je crois que je vais faire
ma requette directement sur la mailing list auctex.



Est-ce que tu as aussi essayé ce que le noeud d'info (reftex) Theorem
and Axiom préconise --- voir mon message précédent.



Mon code est un copier/coller de celui du noeud d'info.
Et j'ai lu, sans voir ce que j'avais raté.

Je te conseille de télécharger la dernière version de RefTeX --- je
crois que ce qui se trouve sous le dépôt bazaar d'EMACS est à peu de
chose près la dernière --- et d'essayer avec.

Pour l'installer il suffit de recopier les fichiers dans

ton_emacs/lisp/textmodes

de les byte-compiler (`B' end Dired mode), et de les charger (`L' en
Dired mode).



Et voilà, ça marche...

J'avoue ne pas avoir tenté cette voie dès le début tant je pensais plus
probable un pb de config de ma machine qu'un bug dans un truc aussi
utilisé qu'emacs/auctex, d'autant que j'avais une version 23.3 de 2011,
donc pas tout à fait "up to date" mais quand même relativement récente.

Merci,
Marc Boyer
--
À mesure que les inégalités regressent, les attentes se renforcent.
François Dubet
Avatar
vincent.belaiche
Marc Boyer writes:


[...]


Et voilà, ça marche...




pouêt-pouêt !

J'avoue ne pas avoir tenté cette voie dès le début tant je pensais plus
probable un pb de config de ma machine qu'un bug dans un truc aussi
utilisé qu'emacs/auctex,



tu es vraiment trop humble, encore une victime de la culture
judéo-chrétienne...

d'autant que j'avais une version 23.3 de 2011,
donc pas tout à fait "up to date" mais quand même relativement récente.

Merci,
Marc Boyer



De nada...

Vincent.

PS: un peu de réclame, pour info le dernier RefTeX a aussi un autre
avantage, il affiche la table des matière (C-c =) même en mode Texinfo
--- hé hé hé, c'est une contrib. que j'ai faite...
1 2