[luatex] Des exemples ?

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

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.
MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

projetmbc a écrit :
MB a écrit :En effet, dans le premier cas, les affectations sont réellement simultanées (ce qui semble être une spécificité intéressante du langage lua).
Pour info, cela marche aussi comme cela sous Python.
Ah ok, je n'avais jamais utilisé cette syntaxe en Python.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

Dans l'objectif de migrer vers luatex je me suis un peu repenché sur l'exemple du pgcd.
Voici une autre version du code :

Code : Tout sélectionner

\documentclass{article}
\usepackage{fontspec,luatextra,mathtools}

\begin{luacode}
	function euclide(a,b)
		if a < b then a,b = b,a end
		r = a-math.floor(a/b)*b
		tex.print(string.format("%i & %i & %i \\\\", a, b, r))
		while r > 0 do
			a,b = b,r
			r = a-math.floor(a/b)*b
			if r == 0 then
				tex.print(string.format("%i & \\boldsymbol{%i} & %i \\\\", a, b, r))
			else
				tex.print(string.format("%i & %i & %i \\\\", a, b, r))
			end
		end
	end
\end{luacode}

\newcommand{\euclide}[2]{%
\begin{displaymath}
\begin{array}{|c|c|c|}
\hline
a & b & r \\
\hline
\directlua{euclide(#1,#2)}
\hline
\end{array}
\end{displaymath}}

\begin{document}
\euclide{587}{389}
\end{document}
Si vous avez d'autres petits exemples d'applications de code lua vous pouvez les ajouter ici.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

Une dernière version, récursive.

Code : Tout sélectionner

\documentclass{article}
\usepackage{fontspec,luatextra,mathtools}

\begin{luacode}
    function euclide(a,b)
        if a < b then a,b = b,a end
        r = a-math.floor(a/b)*b
        if r == 0
        then
            tex.print(string.format("%i & \\boldsymbol{%i} & %i \\\\", a, b, r))
        else
            tex.print(string.format("%i & %i & %i \\\\", a, b, r))
            euclide(b,r)
        end
    end
\end{luacode}
\newcommand{\euclide}[2]{%
\begin{displaymath}
\begin{array}{|c|c|c|}
\hline
a & b & r \\
\hline
\directlua{euclide(#1,#2)}
\hline
\end{array}
\end{displaymath}}

\begin{document}
\euclide{587}{389}
\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

J'ajoute ici le code proposé dans ce sujet.

Code : Tout sélectionner

\documentclass{article}
\usepackage{fontspec,luatextra,unicode-math}

\newcommand{\randomint}[3][randomint]{\luaexec{#1=math.random(#2,#3);tex.print(#1)}}
\newcommand{\randomdec}[4][randomdec]{\luaexec{local k=math.pow(10,#4);#1=math.random(#2*k,#3*k)/k;tex.print(#1)}}
\newcommand{\print}[1]{\luaexec{tex.print(#1)}}

\begin{document}

\begin{itemize}
\item \randomint[a]{10}{50} est un entier au hasard entre 10 et 50 stocké dans la variable lua "a".
\item \randomdec[b]{20}{30}{2} est un décimal au hasard entre 20 et 30 avec 2 chiffres dans sa partie décimale stocké dans la variable lua "b".
\item Le produit de \print{a} par \print{b} est \print{a*b}.
\end{itemize}

\end{document}
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

Un exemple de code faisant appel à luamplib.

Code : Tout sélectionner

\documentclass{article}
\usepackage{fontspec,luatextra,unicode-math}
\usepackage{luamplib}

\begin{document}

\begin{center}\leavevmode
\begin{mplibcode}
input boxes;
beginfig(1)
  boxit.a1(btex $2 \times 5 =$ etex);
  boxit.b1();
  boxit.a2(btex $1 \times 5 =$ etex);
  boxit.b2();
  boxit.a3(btex $0 \times 5 =$ etex);
  boxit.b3();
  boxit.a4(btex $-1 \times 5 =$ etex);
  boxit.b4();
  boxit.a5(btex $-2 \times 5 =$ etex);
  boxit.b5();
  for i=1 upto 5:
    a[i].e = b[i].w;
    b[i].e+(6mm,0) = a[i+1].w;
    b[i].n-b[i].s = (0,6mm) ;
    b[i].e-b[i].w = (12mm,0);
  endfor;
  drawunboxed(a1,a2,a3,a4,a5);
  drawboxed(b1,b2,b3,b4,b5);
  for i=1 upto 4:
    path arrow;
    arrow = b[i].n+(1mm,1mm) {dir 40} .. b[i+1].n+(-1mm,1mm) {dir -40};
    drawarrow arrow;
    label.top(btex $-5$ etex, point 0.5 of arrow);
  endfor;
endfig;
\end{mplibcode}
\end{center}

\end{document}
Ce qui donne ...

[attachment=0]mplib_1.png[/attachment]
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.

Tonn83
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 886
Inscription : mercredi 05 novembre 2008, 01:19
Localisation : Paris, France

Re: [luatex] Des exemples ?

Message par Tonn83 »

Aucune idée si le document suivant peut ou non vous intéresser. J'avoue (honteusement) ne pas avoir fait l'effort de le lire.

http://www.luatex.org/svn/trunk/manual/luatexref-t.pdf
----------------------------
Tonn83

MB
Administrateur
Administrateur
Messages : 7138
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [luatex] Des exemples ?

Message par MB »

@Tonn83 : Il s'agit du manuel de référence LuaTeX, il ne contient pas vraiment d'exemple d'utilisation mais c'est tout de même très intéressant et complet.
MB (Pas d'aide en Message Privé)
Merci d'utiliser MathJax (voir ici) et d'éviter le style SMS pour la lisibilité des messages.