[luatex] Des exemples ?

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

Re: [luatex] Des exemples ?

Message non lu 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. (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.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [luatex] Des exemples ?

Message non lu 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. (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.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [luatex] Des exemples ?

Message non lu 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. (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.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [luatex] Des exemples ?

Message non lu 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. (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.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [luatex] Des exemples ?

Message non lu 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]
Pièces jointes
mplib_1.png
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.
Tonn83
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 886
Inscription : mercredi 05 novembre 2008, 01:19
Localisation : Paris, France

Re: [luatex] Des exemples ?

Message non lu 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 : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: [luatex] Des exemples ?

Message non lu 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. (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.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message