Page 1 sur 1

[Résolu] Anciennes versions de cellspace et siunitx

MessagePosté: Vendredi 08 Février 2019, 18:47
par evariste_G
Bonjour.

Suite à une mise à jour de ma distribution, les packages cellspace et siunitx rentrent en conflit. Je ne peux pas envisage de patch remédiant à la situation car pour mon boulot, j'utilise une classe professionnelle non modifiable.
Donc je suis à la recherche des versions antérieures de ces extensions. Où les trouver ?

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Vendredi 08 Février 2019, 19:10
par touhami

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Vendredi 08 Février 2019, 19:56
par balf
Mais ils rentrent en conflit de quelle façon ?

B. A.

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 09:11
par evariste_G
balf a écrit:Mais ils rentrent en conflit de quelle façon ?

B. A.


C'est a priori un problème bien connu depuis longtemps : cellspace utilise la lettre "S" pour une chose (signifier une hauteur de cellule plus grande que la normale), et siunitx l'utilise pour autre chose (je ne sais trop quoi car je n'ai jamais utilisé ce package).



Merci. Je ne savais même pas qu'il y avait ce genre de service pour "remonter dans le temps"... Bien pratique !

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 09:34
par touhami
evariste_G a écrit:C'est a priori un problème bien connu depuis longtemps : cellspace utilise la lettre "S" pour ...

Une solution est aussi bien connu :wink: Remplacer S par C.

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 09:40
par evariste_G
touhami a écrit:
evariste_G a écrit:C'est a priori un problème bien connu depuis longtemps : cellspace utilise la lettre "S" pour ...

Une solution est aussi bien connu :wink: Remplacer S par C.


Oui, le soucis est que la classe pro. que j'utilise utilise "C" pour autre chose.
De mon côté, j'ai utilisé la lettre "I". Maintenant, comme j'ai beaucoup de tableaux qui utilisent "Sc", ou "Sl" ou "Sr", j'aimerais que toutes ces utilisations soient automatiquement remplacées par "Ic", "Il" ou "Ir"... Et là, je cherche un moyen de ne mas tout changer manuellement... Mais je n'ai pas d'idée! :)

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 10:29
par touhami
Bon jour @evariste_G
À mon avis, plutôt que d’utiliser des anciennes versions c'est préférable de régler ce problème.

Si vous posez une question indépendante, vous aurez plus de chance d'avoir une réponse. Je pense que c'est faisable avec Emacs ou avec un script python ou batch.

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 14:28
par gigiair
evariste_G a écrit:Oui, le soucis est que la classe pro. que j'utilise utilise "C" pour autre chose.
De mon côté, j'ai utilisé la lettre "I". Maintenant, comme j'ai beaucoup de tableaux qui utilisent "Sc", ou "Sl" ou "Sr", j'aimerais que toutes ces utilisations soient automatiquement remplacées par "Ic", "Il" ou "Ir"... Et là, je cherche un moyen de ne mas tout changer manuellement... Mais je n'ai pas d'idée! :)

Il faut utiliser les expressions régulières. C'est pas trop convivial mais terriblement puissant et particulièrement utile. Dans ce cas, il s'agit d'un problème très simple idéal pour débuter.
Tous les éditeurs de texte dignes de ce nom proposent la recherche et remplacement par regexp.
En Emacs on peut (par exemple) copier au début du document (replace-regexp "S\\([clr]\\)" "I\\1" ) puis évaluer cette forme (C-x C-e après la parenthèse fermante).
On peut aussi le faire en mode interactif si on veut vérifier tous les remplacements en appelant la commande query-replace-regexp ( C-M-%) avec les mêmes regrexps mais sans doubler les \ : ( S\([clr]\) -> I\1 )
Voir (info "(emacs)Regexps").

Re: Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 15:29
par evariste_G
Ce n'état pas une question, mais une simple réflexion :D Les expressions régulières, c'est sympa, mais le temps que je comprenne, j'aurais plus vite fait de remplacer à la main ce qui me pose problème (une simple recherche de "tabular" ou "array" suffit.

Merci quand-même.

Re: [Résolu] Anciennes versions de cellspace et siunitx

MessagePosté: Samedi 09 Février 2019, 19:04
par gigiair
Ce cas est un exemple bien facile à comprendre. [clr] s'unifie à c, l ou r. C'est un ensemble dans la terminologie des regexps. les parenthèses (échappées pour marquer qu'elles ne font pas partie du motif de reconnaissance) servent à garder en mémoire le motif inclus qui a été reconnu. Donc le motif S\\([clr]\) recherche une séquence de deux caractères : un S suivi d'un c d'un l ou d'un r et mémorise le deuxième caractère. Pour le coller, l'expression \1 restitue la première expression capturée par \( \). Donc I\1 restitue Ic, Il ou Ir
Les suivantes seraient désignées par \2 \3 etc.
Je peux t'assurer que les regexps fournissent un moyen très puissant pour modifier un texte et peuvent faire gagner un temps considérable.

Re: [Résolu] Anciennes versions de cellspace et siunitx

MessagePosté: Dimanche 10 Février 2019, 14:41
par evariste_G
gigiair a écrit:Ce cas est un exemple bien facile à comprendre. [clr] s'unifie à c, l ou r. C'est un ensemble dans la terminologie des regexps. les parenthèses (échappées pour marquer qu'elles ne font pas partie du motif de reconnaissance) servent à garder en mémoire le motif inclus qui a été reconnu. Donc le motif S\\([clr]\) recherche une séquence de deux caractères : un S suivi d'un c d'un l ou d'un r et mémorise le deuxième caractère. Pour le coller, l'expression \1 restitue la première expression capturée par \( \). Donc I\1 restitue Ic, Il ou Ir
Les suivantes seraient désignées par \2 \3 etc.
Je peux t'assurer que les regexps fournissent un moyen très puissant pour modifier un texte et peuvent faire gagner un temps considérable.


Je suis persuadé que les regexpr sont utiles (inutile de tenter de me convaincre car je comprends leur puissance), c'est juste qu'il faut que je m'y penche d'avantage.
Je comprends ton exemple. Utilisant Notepad++, la syntaxe n'est pas la même mais ressemble et c'est extrêmement simple en effet (bon, c'est parce que j'ai eu un bon prof :lol:)
En tapant dans le champ "Rechercher" : S([clr]) et dans le champ "remplacer" : S\1, ça fonctionne!

J'utilise les regexpr en PHP, mais à chaque fois, il faut que je regarde un exemple car je n'arrive pas à mémoriser la logique (je l'utilise très rarement aussi...)