Formater les numéros de téléphones à la française: par paire

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
josephtux
Utilisateur confirmé
Utilisateur confirmé
Messages : 40
Inscription : mardi 25 octobre 2011, 12:06
Localisation : Picardie

Formater les numéros de téléphones à la française: par paire

Message non lu par josephtux »

Je crois avoir trouvé quelque part la réponse à cette question, mais ne trouvant plus où, je suis contraint d'appliquer l'écriture besogneuse suivante:

03\,45\,67\,89\,00
Debian GNU/Linux 8.5 (jessie)
pdfTeX 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian)

1 % d'inspiration, 99% de transpiration (A.Einstein)
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 949
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Formater les numéros de téléphones à la française: par p

Message non lu par un bon petit »

Code : Tout sélectionner

\documentclass{article}
\def\tel#1{\teli#1\teli}
\def\teli#1#2#3#4#5#6#7#8{#1#2\,#3#4\,#5#6\,#7#8\,\telii}
\def\telii#1#2\teli{#1#2}
\begin{document}
\tel{01 02 03 04 05}.

\tel{0102030405}.
\end{document}
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

C'est très brillant, mais je n'utiliserais pas TeX pour faire ça, j'en suis incapable et je ne pourrais adapter et maintenir le code si le besoin s'en faisait sentir.
Comme pour la plupart des problèmes un peu complexes, je préfère traiter le code avant de l'envoyer au compilateur pdftex.
Dans ce cas précis, une simple recherche et remplacement permet de formater les numéros de téléphone
La plupart des éditeurs de texte orientés LaTeX permettent de le faire avec des expressions régulières, c'est un apprentissage, mais l'usage des expressions régulières est très puissant et peut faire gagner beaucoup de temps. Donc ici remplacer

Code : Tout sélectionner

\([0-9][0-9]\)[ -]*\([0-9][0-9]\)[ -]*\([0-9][0-9]\)[ -]*\([0-9][0-9]\)[ -]*\([0-9][0-9]\) 
par

Code : Tout sélectionner

 \1\\,\2\\,\3\\,\4\\,\5 
fait le truc.
J'ai employé la syntaxe des regexp Emacs ou il faut doubler le caractère \ car \, est l'annonce que ce qui suit est du code elisp.
J'ai mis l'espace et le tiret comme séparateur possible, il est bien évident qu'on peut adapter.
il faut voir avec son éditeur.
Avec Emacs, il est bien facile de créer une commande pour insérer du texte dans le format que l'on désire, et créer un raccourci pour l'exécuter.

J'ai testé ma proposition avec TeXStudio et TeXMaker. ça ne m'a pas paru possible avec TeXMaker, la recherche-remplacement avec des regexps est trop sommaire.
Aec TeXStudio, ça va bien, modulo une syntaxe particulière pour les regexps.
recherche regexp texstudio
recherche regexp texstudio
JJR.
LaTeXien migrateur.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Formater les numéros de téléphones à la française: par p

Message non lu par MB »

Bonjour, même si TeX n'est pas très pratique et/ou intuitif pour réaliser certaines opérations, il est quand même plus agréable d'avoir un fichier qui se compile sans dépendre de l'éditeur utilisé ou d'un programme externe. Dans ce cas, l'utilisation de Luatex est une bonne option, car il permet de faire appel à Lua (langage de script assez puissant) en interne.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

L'objection ne me paraît pas recevable, la compilation ne dépend pas de la façon dont le code est édité. On n'est pas non plus obligé d'utiliser un éditeur pour produire un document LaTeX. Il suffit de rentrer son code ligne par ligne après avoir tapé la commande latex

Une objection recevable est que l'apprentissage de l'usage des expressions régulières demande un effort, et que la composition d'une expression régulière un peu complexe n'est pas toujours facile.
Ce n'est pas le cas pour le problème qui nous intéresse.
Ceux qui ne les utilisent pas n'ont sans doute pas idée des avantages que l'on peut en attendre. Un outil puissant, c'est rare que ça ne demande pas un apprentissage.
JJR.
LaTeXien migrateur.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Formater les numéros de téléphones à la française: par p

Message non lu par MB »

Je me suis mal exprimé, ce que je voulais dire c'est que la méthode proposée nécessite l'usage d'un éditeur un peu évolué (puisque déjà ça ne fonctionne pas avec Texmaker). Le fait d'avoir une commande \tel qui s'occupe automatiquement de la mise en forme (que ce soit via tex ou lua) reste de mon point de vue plus pratique que d'avoir à gérer cette mise en forme directement dans le fichier source.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 949
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Formater les numéros de téléphones à la française: par p

Message non lu par un bon petit »

gigiair a écrit :L'objection ne me paraît pas recevable
L'objection est recevable pour plusieurs raisons.

La première est que, sans trop de doute, le PO demandait une macro pour formater ses expressions et non pas une aide sur un éditeur pour exécuter cette tâche. Mais vous, vous comprenez toujours les questions avant tout sous l'angle de emacs !

Ensuite, un remplacement par expression régulière le fait aveuglément ce qui n'est pas le cas d'une macro que l'on écrit que lorsque c'est nécessaire. Par exemple, si le texte contient "$\pi=3{,}1415926536", alors votre méthode va mettre un bazar monstre.

Puis, l'avantage d'une macro est que l'on peut très aisément la modifier pour agir sur toutes ses exécutions ensuite. Avec votre méthode, si on a déjà remplacé "01234567" par "01\,23\,45\,67" et que l'on souhaite une espace insécable au lieu des "\", il faut reconstruire une expression régulière pas évidente. Avec ma macro, remplacez simplement les "\," par des "~" et le tour est joué.

Enfin, apprendre les arguments délimités de TeX est beaucoup plus utile pour un LaTeXien que d'apprendre à se servir d'expressions régulières ou pire de emacs. Regardez la macro que j'ai donnée, elle est triviale lorsqu'on a compris comment fonctionnent les arguments délimités de TeX. Si, si : triviale. Regardez la bien !

Bref, il n'y a rien de bien nouveau, dès qu'une question a la moindre chance d'avoir un rapport avec emacs et ses possibilités, vous sortez de l'ombre et comme toujours, vous tentez de promouvoir la puissance (incontestée je le reconnais) d'emacs au détriment d'outils construits avec des packages, avec LaTeX ou TeX, quitte à détourner le sujet et son auteur de son objectif initial. Au fait, c'est quand que vous apprenez TeX ?
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

Ce sont deux points de vue différents. Le mien est que, quand c'est possible, il vaut mieux traiter les problèmes d'édition ou de formatage du texte au niveau de l'éditeur qu'au niveau du compilateur.
On peut alors exécuter de petits ajustements avant la compilation, c'est plus souple que de reprendre le code TeX ou autre.
Un exemple (purement formel) de problème serait le remplacement de tous les \textbf{...} par des \textit{...} d'un document. On pourrait modifier le code des macros \textbf pour qu'il produise des \textit, mais l'on ne souhaite le remplacement que dans certains cas, ça peut devenir assez sportif. La bonne solution est évidemment d'effectuer une recherche/remplacement avec expression régulière, mais ce n'est pas toujours aussi évident que ça.
Je n'ai rien contre la solution proposée par UBP que je trouve brillante, j'aime le code concis et efficace. Je propose une autre solution car c'est souvent plus facile de faire ainsi et plus à la portée des non-programmeurs.
Il est regrettable que TeXMaker soit aussi limité. Je suis persuadé que beaucoup d'éditeurs de code proposent un usage décent des expressions régulières. Là je sens qu'il va y avoir des réactions...
En me relisant, j'ai un doute. Après tout je ne suis pas un utilisateur averti de TeXMaker, peut-être qu'il est possible de faire avec. Les spécialistes de cet éditeur me diront.
JJR.
LaTeXien migrateur.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Formater les numéros de téléphones à la française: par p

Message non lu par MB »

gigiair a écrit :Ce sont deux points de vue différents. Le mien est que, quand c'est possible, il vaut mieux traiter les problèmes d'édition ou de formatage du texte au niveau de l'éditeur qu'au niveau du compilateur.
On peut alors exécuter de petits ajustements avant la compilation, c'est plus souple que de reprendre le code TeX ou autre.
Il me semble qu'il convient de distinguer deux cas. Si il s'agit d'une "erreur" lors de la rédaction du fichier source (par exemple le cas où on a utilisé des \textbf au lieu des \textit), dans ce cas il est logique de se débrouiller pour éditer le fichier source plutôt que de chercher à modifier le fonctionnement de latex. Sinon, il me semble préférable (et dans l'esprit général de TeX) de s'occuper le moins possible de la mise en forme dans le fichier source et de faire en sorte que TeX s'en charge.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

MB a écrit : Sinon, il me semble préférable (et dans l'esprit général de TeX) de s'occuper le moins possible de la mise en forme dans le fichier source et de faire en sorte que TeX s'en charge.
Je ne vois pas ce qui justifie cette idée, tu peux développer ?

Le fichier source est d'abord lu par la personne qui le compose et doit être en accord avec sa pensée. Ce n'est pas toujours facile et la présence de macros n'aide pas à sa compréhension.
C'est particulièrement important de comprendre rapidement le sens du document quand on veut en effectuer une révision quelques années après l'avoir composé. C'est pour ça que je préfère avoir toujours le moins de macros possibles. C'est mon point de vue et je le partage comme aurait dit M. Prudhomme :)
JJR.
LaTeXien migrateur.
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4065
Inscription : mercredi 02 janvier 2008, 23:18

Re: Formater les numéros de téléphones à la française: par p

Message non lu par balf »

un bon petit a écrit :si on a déjà remplacé "01234567" par "01\,23\,45\,67" et que l'on souhaite une espace insécable au lieu des "\", il faut reconstruire une expression régulière pas évidente
Mais il me semble bien que \, produit une espace fine, certes, mais aussi insécable ?

B. A.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Formater les numéros de téléphones à la française: par p

Message non lu par MB »

Disons que la mise en page du fichier source n'est pas censée représenter celle du fichier final (ie on n'est pas dans le cadre d'un logiciel WYSIWYG). Par exemple, on peut sauter des lignes, ajouter des espaces ou des tabulations dans le fichier source sans que ça n'impacte la mise en page finale. Donc effectivement, il est difficile de se rendre compte du rendu final en observant le contenu d'un fichier tex, mais de mon point de vue ça ne pose pas de problème et c'est même avantage puisque ça apporte pas mal de souplesse dans la rédaction (et au pire on peut utiliser des logiciels de type LyX).
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

balf a écrit :
un bon petit a écrit :si on a déjà remplacé "01234567" par "01\,23\,45\,67" et que l'on souhaite une espace insécable au lieu des "\", il faut reconstruire une expression régulière pas évidente
Mais il me semble bien que \, produit une espace fine, certes, mais aussi insécable ?
De toute façon, il n'y a pas de difficultés pour insérer des \ dans une expression régulière, c'est prévu mais ça dépend de la syntaxe des ER. Il y en a plusieurs on ne peut pas poser ce problème abstraitement.
Ce qui est pratique pour mettre au point les expressions régulières ce sont les programmes qui visualisent en temps réel leur effet sur un document donné. Quand on veut aller à la chasse aux éléphants, il faut s'équiper correctement. Le tire-boulettes n'est pas obligatoire.
Construire une ER abstraitement ça peut parfois être aussi difficile que d'imaginer l'expansion d'une macro TeX pour résoudre un problème donné.
JJR.
LaTeXien migrateur.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 949
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Formater les numéros de téléphones à la française: par p

Message non lu par un bon petit »

balf a écrit :Mais il me semble bien que \, produit une espace fine, certes, mais aussi insécable ?
Oui puisque la macro robuste \, est définie à la ligne 1575 par

Code : Tout sélectionner

\DeclareRobustCommand{\,}{%
   \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi
}
et que la macro \thinspace est définie à la ligne 1586 par

Code : Tout sélectionner

\def\thinspace{\kern .16667em}
L'emploi de la primitive \kern montre bien que l'espace insérée en mode non mathématique est insécable.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Formater les numéros de téléphones à la française: par p

Message non lu par gigiair »

un bon petit a écrit : L'objection est recevable pour plusieurs raisons.

La première est que, sans trop de doute, le PO demandait une macro pour formater ses expressions et non pas une aide sur un éditeur pour exécuter cette tâche. Mais vous, vous comprenez toujours les questions avant tout sous l'angle de emacs !
J'avais compris que le PO trouvait pénible d'avoir à taper des \, pour marquer des espaces. J'imagine qu'il utilise comme tous les francophones français un clavier AZERTY pour lequel la touche \ est particulièrment mal placée. Peut-être que s'il utilisait un clavier QWERTY américain le problème ne se serait-il pas posé.
Une solution serait aussi de redéfinir la touche "\". Personnellement je l'ai redéfinie par "<F8> _ ".

Je n'interviens sur ce forum sur les questions qui m'intéressent et pour lesquels j'espère apporter une aide. Je ne me sens guère compétent pour intervenir dans les problèmes concernant LaTeX ou encore moins TeX autres que très élémentaires. C'est mal ? Les sujets sur lesquels vous intervenez sont assez ciblés non ? Personne ne vous le reproche.
Une blague sur Emacs : C'est un très bon environnement d'exploitation des ordinateurs, dommage qu'il n'ait pas un bon éditeur.
JJR.
LaTeXien migrateur.
quark67

Re: Formater les numéros de téléphones à la française: par p

Message non lu par quark67 »

Bonjour, je réponds sans doute tardivement, mais le package phonenumbers (https://ctan.org/pkg/phonenumbers) peut sans doute répondre à votre question (voir en particulier la section 1.3 de la documentation ; à noter qu'il est possible d'indiquer le code du pays de façon globale dans les options du package).
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1083
Inscription : jeudi 25 novembre 2010, 22:10

Re: Formater les numéros de téléphones à la française: par p

Message non lu par marco56 »

quark67 a écrit :Bonjour, je réponds sans doute tardivement, mais le package phonenumbers (https://ctan.org/pkg/phonenumbers) peut sans doute répondre à votre question (voir en particulier la section 1.3 de la documentation ; à noter qu'il est possible d'indiquer le code du pays de façon globale dans les options du package).
Cela semble extra, ce truc, pour qui en a l'utilité.
josephtux
Utilisateur confirmé
Utilisateur confirmé
Messages : 40
Inscription : mardi 25 octobre 2011, 12:06
Localisation : Picardie

Re: Formater les numéros de téléphones à la française: par paire

Message non lu par josephtux »

Je reprends cette discussion, puisqu'elle est toujours en ligne et peut encore servir.
Il existe une extension « phonenumbers »:

Code : Tout sélectionner

...
\usepackage[country=FR]{phonenumbers}
...
\begin{document}
...
Mon numéro de téléphone est: \phonumber{0123456789}
Debian GNU/Linux 8.5 (jessie)
pdfTeX 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian)

1 % d'inspiration, 99% de transpiration (A.Einstein)
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1083
Inscription : jeudi 25 novembre 2010, 22:10

Re: Formater les numéros de téléphones à la française: par paire

Message non lu par marco56 »

Quelle perspicacité !
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2035
Inscription : samedi 29 décembre 2007, 00:58

Re: Formater les numéros de téléphones à la française: par paire

Message non lu par projetmbc »

Oui, mais la vivacité a manqué. :lol: