Mais si, bien sûr que c’est possible, en LuaLaTeX.
Cela dit, je suis encore trop inexpérimenté en lua, et je n’ai pas su
utiliser le compteur lastpage de la classe memoir pour indiquer la
limite supérieure du tirage au sort. J’ai donc saisi à la main le numéro
de la dernière page dans la fonction lua. Si quelqu’un peut améliorer
ça…
Voir pièce jointe.
Cordialement
Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
Le dimanche 26 mai 2024, 10:20:46 CEST Gerard_F a écrit :
Bonjour,
J’ai vu sur « stackexchange » que ce n’était pas possible.
Je passe à autre chose !
Cordialement
G.
Le 25/05/2024 à 17:13, Gerard_F a écrit :
Bonjour,
Dans un pied de page, est-il possible d’avoir « Page au hasard » ?
avec
renvoi vers une page au hasard
Pour un document class « memoir »
Je n’ai trouvé de piste dans la FAQ.
Merci pour une idée, ou mieux une solution facile.
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
–
local function getlastpage()
local counter = tex.getcount(“c@lastpage”)
if counter < 2 then return 2 else return counter end
end
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, getlastpage())
return folio
end
–
\end{luacode}
En revanche, j’obtiens toujours la même séquence de pages à chaque compilation, bizarre.
Bonne après-midi,
Bastien
Le Sunday 26 May 2024 à 02:27:02PM, Thomas Savary a écrit :
Bonjour, Gérard,
Mais si, bien sûr que c’est possible, en LuaLaTeX.
Cela dit, je suis encore trop inexpérimenté en lua, et je n’ai pas su
utiliser le compteur lastpage de la classe memoir pour indiquer la
limite supérieure du tirage au sort. J’ai donc saisi à la main le numéro
de la dernière page dans la fonction lua. Si quelqu’un peut améliorer
ça…
Le dimanche 26 mai 2024, 10:20:46 CEST Gerard_F a écrit :
Bonjour,
J’ai vu sur “stackexchange” que ce n’était pas possible.
Je passe à autre chose !
Cordialement
G.
Le 25/05/2024 à 17:13, Gerard_F a écrit :
Bonjour,
Dans un pied de page, est-il possible d’avoir “Page au hasard” ?
avec
renvoi vers une page au hasard
Pour un document class “memoir”
Je n’ai trouvé de piste dans la FAQ.
Merci pour une idée, ou mieux une solution facile.
Cordialement
Gérard
\documentclass[a5paper, latin]{memoir}
\usepackage{babel, lipsum, luacode, hyperref}
% Configuration des en-têtes et pied de page de memoir (style de page headings)
\makepagestyle{headings}
\makeevenhead{headings}{\thepage}{}{} % en-tête (fausse page): {gauche}{centre}{droite}
\makeoddhead{headings}{}{}{\thepage} % en-tête (belle page): {gauche}{centre}{droite}
\makeevenfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (fausse page): {gauche}{centre}{droite}
\makeoddfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (belle page): {gauche}{centre}{droite}
% Compteur de la classe memoir : hélas, je débute en lua et je n’ai pas su le passer en lua
% (d’où la saisie manuelle du numéro de la dernière page dans la fonction folioAleatoire())
\newcommand{\dernierepage}{\arabic{lastpage}}
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, 8)
return folio
end
–
\end{luacode}
Apparemment ça marche mieux si on donne deux arguments à math.randomseed.
Voici donc une version améliorée où, en outre, on évite qu’un page renvoie à elle-même.
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time(), math.random(1,10000))
–
local function getlastpage()
local counter = tex.getcount(“c@lastpage”)
if counter < 2 then return 2 else return counter end
end
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, getlastpage())
if folio == tex.getcount(“c@page”) then
return folioAleatoire()
else
return folio
end
end
–
\end{luacode}
Le Sunday 26 May 2024 à 01:28:10PM, Bastien DUMONT a écrit :
Bonjour,
On peut modifier le bloc Lua comme suit :
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
–
local function getlastpage()
local counter = tex.getcount(“c@lastpage”)
if counter < 2 then return 2 else return counter end
end
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, getlastpage())
return folio
end
–
\end{luacode}
En revanche, j’obtiens toujours la même séquence de pages à chaque compilation, bizarre.
Bonne après-midi,
Bastien
Le Sunday 26 May 2024 à 02:27:02PM, Thomas Savary a écrit :
Bonjour, Gérard,
Mais si, bien sûr que c’est possible, en LuaLaTeX.
Cela dit, je suis encore trop inexpérimenté en lua, et je n’ai pas su
utiliser le compteur lastpage de la classe memoir pour indiquer la
limite supérieure du tirage au sort. J’ai donc saisi à la main le numéro
de la dernière page dans la fonction lua. Si quelqu’un peut améliorer
ça…
Le dimanche 26 mai 2024, 10:20:46 CEST Gerard_F a écrit :
Bonjour,
J’ai vu sur “stackexchange” que ce n’était pas possible.
Je passe à autre chose !
Cordialement
G.
Le 25/05/2024 à 17:13, Gerard_F a écrit :
Bonjour,
Dans un pied de page, est-il possible d’avoir “Page au hasard” ?
avec
renvoi vers une page au hasard
Pour un document class “memoir”
Je n’ai trouvé de piste dans la FAQ.
Merci pour une idée, ou mieux une solution facile.
Cordialement
Gérard
\documentclass[a5paper, latin]{memoir}
\usepackage{babel, lipsum, luacode, hyperref}
% Configuration des en-têtes et pied de page de memoir (style de page headings)
\makepagestyle{headings}
\makeevenhead{headings}{\thepage}{}{} % en-tête (fausse page): {gauche}{centre}{droite}
\makeoddhead{headings}{}{}{\thepage} % en-tête (belle page): {gauche}{centre}{droite}
\makeevenfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (fausse page): {gauche}{centre}{droite}
\makeoddfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (belle page): {gauche}{centre}{droite}
% Compteur de la classe memoir : hélas, je débute en lua et je n’ai pas su le passer en lua
% (d’où la saisie manuelle du numéro de la dernière page dans la fonction folioAleatoire())
\newcommand{\dernierepage}{\arabic{lastpage}}
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, 8)
return folio
end
–
\end{luacode}
Là on tombe sur un problème mathématique plus théorique, comment générer des nombres aléatoires avec un programme déterministe ? La solution se trouve au niveau du « germe » du générateur. Le mieux c’est encore d’aller chercher les décimales de Pi…
Ivan
Le 26 mai 2024 à 15:28, Bastien DUMONT xyz@xyz.tld a écrit :
Bonjour,
On peut modifier le bloc Lua comme suit :
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
local function getlastpage()
local counter = tex.getcount(“c@lastpage”)
if counter < 2 then return 2 else return counter end
end
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, getlastpage())
return folio
end
\end{luacode}
En revanche, j’obtiens toujours la même séquence de pages à chaque compilation, bizarre.
Bonne après-midi,
Bastien
Le Sunday 26 May 2024 à 02:27:02PM, Thomas Savary a écrit :
Bonjour, Gérard,
Mais si, bien sûr que c’est possible, en LuaLaTeX.
Cela dit, je suis encore trop inexpérimenté en lua, et je n’ai pas su
utiliser le compteur lastpage de la classe memoir pour indiquer la
limite supérieure du tirage au sort. J’ai donc saisi à la main le numéro
de la dernière page dans la fonction lua. Si quelqu’un peut améliorer
ça…
Le dimanche 26 mai 2024, 10:20:46 CEST Gerard_F a écrit :
Bonjour,
J’ai vu sur “stackexchange” que ce n’était pas possible.
Je passe à autre chose !
Cordialement
G.
Le 25/05/2024 à 17:13, Gerard_F a écrit :
Bonjour,
Dans un pied de page, est-il possible d’avoir “Page au hasard” ?
avec
renvoi vers une page au hasard
Pour un document class “memoir”
Je n’ai trouvé de piste dans la FAQ.
Merci pour une idée, ou mieux une solution facile.
Cordialement
Gérard
\documentclass[a5paper, latin]{memoir}
\usepackage{babel, lipsum, luacode, hyperref}
% Configuration des en-têtes et pied de page de memoir (style de page headings)
\makepagestyle{headings}
\makeevenhead{headings}{\thepage}{}{} % en-tête (fausse page): {gauche}{centre}{droite}
\makeoddhead{headings}{}{}{\thepage} % en-tête (belle page): {gauche}{centre}{droite}
\makeevenfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (fausse page): {gauche}{centre}{droite}
\makeoddfoot{headings}{}{\hyperlink{page.\directlua{tex.print(folioAleatoire())}}{Vers une page au hasard}}{} % pied de page (belle page): {gauche}{centre}{droite}
% Compteur de la classe memoir : hélas, je débute en lua et je n’ai pas su le passer en lua
% (d’où la saisie manuelle du numéro de la dernière page dans la fonction folioAleatoire())
\newcommand{\dernierepage}{\arabic{lastpage}}
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8 (dernier folio du présent document)
local folio = math.random(1, 8)
return folio
end
Je vois que luarandom a été publié voilà seulement quelques mois, et
j’ai l’impression que les extensions pour lualatex se multiplient ces
derniers temps. Je m’en réjouis.
Cordialement,
Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
Le lundi 27 mai 2024, 09:38:32 CEST Denis Bitouzé a écrit :
Le 26/05/24 à 14h27, Thomas Savary a écrit :
Mais si, bien sûr que c’est possible, en LuaLaTeX.
Parfait ! Bien d’avoir pensé à éviter qu’une page renvoie à elle-même
(surtout pour un document court). Et je découvre « tex.getcount ».
Merci beaucoup, Bastien.
Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
Le dimanche 26 mai 2024, 15:50:15 CEST Bastien DUMONT a écrit :
Apparemment ça marche mieux si on donne deux arguments à
math.randomseed. Voici donc une version améliorée où, en outre, on
évite qu’un page renvoie à elle-même.
\begin{luacode}
– Initialiser le générateur de nombres aléatoires
math.randomseed(os.time(), math.random(1,10000))
–
local function getlastpage()
local counter = tex.getcount(« c@lastpage »)
if counter < 2 then return 2 else return counter end
end
–
function folioAleatoire()
– Générer un nombre entier aléatoire compris entre 1 et 8
(dernier folio du présent document) local folio = math.random(1,
getlastpage())
if folio == tex.getcount(« c@page ») then
return folioAleatoire()
else
return folio
end
end
–
\end{luacode}
Le Sunday 26 May 2024 à 01:28:10PM, Bastien DUMONT a écrit :
Bonjour,
On peut modifier le bloc Lua comme suit :
\begin{luacode}
-- Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
--
local function getlastpage()
local counter = tex.getcount("c@lastpage")
if counter < 2 then return 2 else return counter end
end
--
function folioAleatoire()
-- Générer un nombre entier aléatoire compris entre 1 et 8
(dernier folio du présent document) local folio =
math.random(1, getlastpage())
return folio
end
--
\end{luacode}
En revanche, j’obtiens toujours la même séquence de pages à chaque
compilation, bizarre.
Bonne après-midi,
Bastien
Le Sunday 26 May 2024 à 02:27:02PM, Thomas Savary a écrit :
Bonjour, Gérard,
Mais si, bien sûr que c’est possible, en LuaLaTeX.
Cela dit, je suis encore trop inexpérimenté en lua, et je n’ai pas
su
utiliser le compteur lastpage de la classe memoir pour indiquer la
limite supérieure du tirage au sort. J’ai donc saisi à la main le
numéro de la dernière page dans la fonction lua. Si quelqu’un
peut améliorer ça…
Le dimanche 26 mai 2024, 10:20:46 CEST Gerard_F a écrit :
Bonjour,
J’ai vu sur « stackexchange » que ce n’était pas possible.
Je passe à autre chose !
Cordialement
G.
Le 25/05/2024 à 17:13, Gerard_F a écrit :
Bonjour,
Dans un pied de page, est-il possible d’avoir « Page au hasard »
?
avec
renvoi vers une page au hasard
Pour un document class « memoir »
Je n’ai trouvé de piste dans la FAQ.
Merci pour une idée, ou mieux une solution facile.
Cordialement
Gérard
\documentclass[a5paper, latin]{memoir}
\usepackage{babel, lipsum, luacode, hyperref}
% Configuration des en-têtes et pied de page de memoir (style de
page headings) \makepagestyle{headings}
\makeevenhead{headings}{\thepage}{}{} % en-tête (fausse page):
{gauche}{centre}{droite} \makeoddhead{headings}{}{}{\thepage} %
en-tête (belle page): {gauche}{centre}{droite}
\makeevenfoot{headings}{}{\hyperlink{page.\directlua{tex.print(fo
lioAleatoire())}}{Vers une page au hasard}}{} % pied de page
(fausse page): {gauche}{centre}{droite}
\makeoddfoot{headings}{}{\hyperlink{page.\directlua{tex.print(fol
ioAleatoire())}}{Vers une page au hasard}}{} % pied de page (belle
page): {gauche}{centre}{droite}
% Compteur de la classe memoir : hélas, je débute en lua et je
n’ai pas su le passer en lua % (d’où la saisie manuelle du numéro
de la dernière page dans la fonction folioAleatoire())
\newcommand{\dernierepage}{\arabic{lastpage}}
\begin{luacode}
-- Initialiser le générateur de nombres aléatoires
math.randomseed(os.time())
--
function folioAleatoire()
-- Générer un nombre entier aléatoire compris entre 1 et 8
(dernier folio du présent document) local folio =
math.random(1, 8)
return folio
end
--
J’ai utilisé le code de Thomas avec l’amélioration de Benoît.
Cela me permet, dans un document avec des airs traditionnels, de
potasser ces airs au hasard. Et dans un autre pdf d’aphorismes de le
feuilleter aussi au hasard. Peut-être un gadget mais puisque c’est
possible !
Le Monday 27 May 2024 à 11:44:52AM, Gerard_F a écrit :
Merci, c’est nickel !
J’ai utilisé le code de Thomas avec l’amélioration de Benoît.
Cela me permet, dans un document avec des airs traditionnels, de potasser
ces airs au hasard. Et dans un autre pdf d’aphorismes de le feuilleter aussi
au hasard. Peut-être un gadget mais puisque c’est possible !
Mais de rien — pour une fois que je peux aider (lua)texniquement !
Et merci pour l’explication sur la nature du document, car j’avoue que
je trouvais votre demande bien mystérieuse. Si ce n’est pas indiscret,
et si c’est bien un document personnel, acceptez-vous de le diffuser,
surtout s’il y a les partitions ? Il faut que j’entretienne ma voix, et
plutôt que de me remettre à massacrer Bach, je pourrais reprendre le
chant avec un répertoire plus à ma portée : « Rossignolet du bois
joli », « Je mène les loups », « Aux marches du palais », « le Roi
Renaud », « Celles qui vont au bois »…
Par le mystère des associations d’idées, votre demande m’a fait penser
aux livres dont vous êtes le héros de mon enfance publiés par Folio
junior — bien que les renvois n’y eussent rien d’aléatoire (« Si vous
prenez à gauche, aller au 382. Si vous préférez continuer tout droit,
aller au 221 »), on trouvait déjà cette idée de déplacement non linéaire
dans le livre : une idée à ajouter à la liste de mes gabarits LaTeX, en
tout cas.
Cordialement,
Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. Tél. masqué
Le lundi 27 mai 2024, 11:44:52 CEST Gerard_F a écrit :
Merci, c’est nickel !
J’ai utilisé le code de Thomas avec l’amélioration de Benoît.
Cela me permet, dans un document avec des airs traditionnels, de
potasser ces airs au hasard. Et dans un autre pdf d’aphorismes de le
feuilleter aussi au hasard. Peut-être un gadget mais puisque c’est
possible !