Page 1 sur 1

Impossible ?

MessagePosté: Mardi 09 Janvier 2007, 19:44
par fadila
Bonjour
Je voudrais faire une commande qui aurait pour argument un mot ou une phrase et qui remplacerait chaque lettre de ce mot ou de cette phrase par un caractère particulier (un tiret par exemple). Ceci est-il réalisable ? quelqu'un a-t-il une idée sur la façon d'écrire cette commande ?
Merci

MessagePosté: Mercredi 10 Janvier 2007, 09:28
par la main gauche
Est-ce que ça fait ce que tu veux ?

Code: Tout sélectionner
\makeatletter

\def\replace@A#1{\futurelet\replace@S\relax}
\futurelet\replace@T\replace@A * \relax

\def\replace#1\by#2{%
  \begingroup
  \toks0={#2}%   Texte de remplacement
  \toks1={}%   Texte traité
  \toks2={ }%   Une espace
  \def\@{The STOP tab}%
  \replace@A#1\@
  \the\toks1\relax
  \endgroup
}


\def\replace@A{\futurelet\replace@T\replace@B}

\def\replace@B{%
  \let\next\replace@C
  \ifx\replace@T\replace@S
    \let\next\replace@D
  \fi
  \ifx\replace@T\@
    \let\next\replace@E
  \fi
  \next
}

\def\replace@D#1{%
  \edef\next{\toks1={\the\toks1\relax\the\toks2\relax}}%
  \next
  \replace@A#1%
}

\def\replace@C#1{%
  \edef\next{\toks1={\the\toks1\relax\the\toks0\relax}}%
  \next
  \replace@A
}

\def\replace@E#1{%
  \relax 
}

\makeatother


\replace{Quelle joie de vivre dans un monde sans prophète!}\by X

\replace{Quelle joie de vivre dans un monde sans prophète!}\by{{-}}

MessagePosté: Mercredi 10 Janvier 2007, 15:12
par fadila
merci la main gauche; c'est une chose que je n'aurai jamais pu trouver seul; un petit bonus si tu veux bien; est-ce qu'on peut remplacer chaque caractere par 2 tirets par exemple ? J'ai essayé en mettant {--} au lieu de {-] dans la ligne:
\replace{Quelle joie de vivre dans un monde sans prophète!}\by{{-}}
Mais ca ne me donne pas du tout le resultat ecompté. Aurais-tu une idée ?
Merci

MessagePosté: Mercredi 10 Janvier 2007, 15:55
par la main gauche
C'est parceque deux tirets consécutifs sont remplacés par un caractère avec un tiret plus long que le tiret ordinaire, pour éviter ce comportement on peut écrire
Code: Tout sélectionner
\replace{Quelle joie de vivre dans un monde sans prophète!}\by{{-}{-}}

MessagePosté: Mercredi 10 Janvier 2007, 16:26
par fadila
bonjour
La main gauche merci beaucoup; en plus je trouve que tu as très bien choisi la phrase à remplacer.
A bientot

MessagePosté: Mercredi 10 Janvier 2007, 22:26
par jeans
:worthy: :worthy: :worthy:
De plus en plus impressionant La main gauche.
Ton CAP latex tu l'as eu du premier coup au moins?
On en a encore pour 6 mois à essayer de comprendre ce code.
Au boulot tout le monde.

MessagePosté: Mercredi 10 Janvier 2007, 23:18
par rebouxo
Non très cher jeans, la main gauche tente de devenir gourou de TeX. Il doit être en train de bidouiller l'algo de sorti des paragraphes de TeX.
Moi, j'ai le CAP LaTeX, j'essaye désépément de passer le BEP, mais jai beaucoup de mal :D :D :D :D

Olivier

MessagePosté: Jeudi 11 Janvier 2007, 09:28
par la main gauche
fadila a écrit:La main gauche merci beaucoup; en plus je trouve que tu as très bien choisi la phrase à remplacer.
A bientot


Avec plaisir ;)

MessagePosté: Vendredi 19 Janvier 2007, 10:24
par jeans
Et si on ne voulait pas remplacer toute la phrase mais une lettre à chaque fois qu'elle apparaît, c'est possible?
Et si on ne voulait pas remplacer toute la phrase mais un mot à chaque fois qu'il apparaît, c'est possible?
Ce n'est pas que j'ai besoin de ça mais je découvre, et je trouve de plus en plus impressionnant ce qu'on peut faire avec Tex.
Et pour certains ici il me semble que tout est possible.

MessagePosté: Lundi 22 Janvier 2007, 13:52
par la main gauche
En TeX tout est possible, mais pas forcément facile à réaliser. J'ai ouï dire que des gens ont écrit un assembleur en TeX, un programme qui traduit un fichier écrit en langage machine en fichier binaire qui peut être chargé en mémoire et éxécuté par un processeur. Je n'ai pas vérifié, mais cela est du domaine du possible.

Si quelqu'un a beaucoup de temps à perdre, il peut écrire un interprèteur LISP ou SCHEME en TeX, pouquoi pas.

Pour ce que tu veux faire, oui c'est possible de le faire en TeX, mais passé une certaine complexité il est plus facile de passer par un préoprocesseur. Imagine que tu as écrit un programme `pptex' qui lit un fichier PPTEX et écrit un fichier TEX en recopiant le fichier sans modification, sauf pour les lignes figurant entre des commentaires
Code: Tout sélectionner
% BEGIN PPTEX change('i','-')
Religions, superstitions: je suis athée !
% END PPTEX


où les 'i' seraient transformés en tirets. Comme les fichiers TEX sont des fichiers de texte ordinaire, il est très facile d'écrire un programme `pptex' faisant ce travail, par exemple pour PERL pour AWK, en C ou que sais-je ! (très facile si on sait programmer bien-sûr).

C'est possible de le faire en TeX, mais ce n'est pas forcéement la solution la plus efficace.

MessagePosté: Lundi 22 Janvier 2007, 15:23
par jeans
Message reçu, merci.