LaurentClaessens / mazhe

(almost) Everything I know in math.
http://laurent.claessens-donadello.eu/
GNU General Public License v3.0
121 stars 33 forks source link

Tri de l’index tenant compte des accents #162

Closed jperon closed 1 year ago

jperon commented 2 years ago

En réponse à la demande exprimée sur linuxfr, voici un script permettant de trier mazhe.ind en tenant compte des accents (programmé en moonscript, avec la version lua disponible) : https://gist.github.com/jperon/5ed64195ebfd998b6db139ab4e4fb403

LaurentClaessens commented 2 years ago

Mwouais... J'avais dit python, bash perl ou rust parce que ce sont des langages que soit tout le monde a, soit qu'il ne me ferait pas de mal d'apprendre.

Il me faudrait une liste de commandes pour obtenir l'exécutable de moonscript dans le répertoire /path/to/là/où/je/veux. De telle sorte que je puisse faire, en python,

subprocess.call(["/path/to/là/où/je/veux/moonscript sort_ind.moon", fichier_orig, fichier_dest])
jperon commented 2 years ago

Il y a moyen d’éviter la dépendance à moonscript, en utilisant sort_ind.lua (produite à partir de sort_ind.moon, et disponible sur le lien ci-dessus). C’est même préférable, puisque cela évite l’étape de transpilation qu’effectuerait de toute manière moonscript. Sur une distribution de LaTeX incluant les binaires de LuaTeX, il y a un interpréteur lua intégré : texlua. Dès lors, en python, cela donnerait : (Edit : désolé pour cette version non testée et fausse, cf. ma réponse plus bas).

subprocess.call(("/chemin/vers/texlua sort_ind.lua", fichier_orig, fichier_dest))
LaurentClaessens commented 1 year ago

Désolé pour le retard; j'étais sur d'autres trucs. J'ai testé avec ceci dans test.ind:

\begin{theindex}

  \item \( q\)-orthogonal, \hyperpage{121}

  \indexspace

  \item matrice
    \subitem orthogonale, \hyperpage{90}
  \item matrices semblables, \hyperpage{139}
  \item matrices équivalentes, \hyperpage{139}
  \item multiindice, \hyperpage{38}

  \indexspace

  \item noyau
    \subitem d'une forme bilinéaire, \hyperpage{120}

\end{theindex}

Ensuite je lance

texlua sort_ind.lua test.ind out.ind

Et ça mouline sans fin. Du coup ben heu... je sais pas. Des idées ?

jperon commented 1 year ago

Le script lit sur l’entrée standard et écrit sur la sortie standard. Il faut donc faire :

texlua sort_ind.lua <test.ind >out.ind

Ou encore intégrer le script au sein d’un "pipe" :

cat test.ind | texlua sort_ind.lua | tee out.ind
jperon commented 1 year ago

D’ailleurs, autant pour moi, cela donne en Python :

#!/usr/bin/env python

import subprocess

myinput = open('test.ind')
myoutput = open('out.ind', 'w')
p = subprocess.Popen(("texlua", "sort_ind.lua"), stdin=myinput, stdout=myoutput)
p.wait()
myoutput.flush()
LaurentClaessens commented 1 year ago

fait et publié Et ça fonctionne correctement.

merci.

jperon commented 1 year ago

Avec plaisir !