LaTeX évolue vers LuaLaTeX

Au commencement, kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp fournissait un fichier dans un format peu commun <fichier> .dvi. Des programmes successifs comme PostScript ont permis de convertir ces fichiers en .ps puis en .pdf devenu rapidement un standard multiplateforme. Depuis ses origines, le succès de LaTeX est largement du à la facilité avec laquelle il est possible d'écrire des formules mathématiques, bien avant les extensions fournies par les traitements de texte les plus connus.Cependant, la palette des polices restait limitée, l'insertion de fichiers image nécessitait souvent de les convertir en .ps, et si kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp permettait d'écrire les mathématiques, il ne savait cependant pas bien calculer, juste quelques opérations arithmétiques pouvaient être introduites dans le code du document.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Le format .pdf s'imposant, le moteur kitxmlcodeinlinelatexdvp\rm pdf\LaTeXfinkitxmlcodeinlinelatexdvp est créé fournissant directement après compilation un document <fichier>.pdf. De nombreux packages viennent augmenter les possibilités du programme, la plupart étant compatibles autant avec le moteur kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp d'origine qu'avec kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp Cependant quelques difficultés demeurent : kitxmlcodeinlinelatexdvp\rm pdf\LaTeXfinkitxmlcodeinlinelatexdvp n'accepte pas les images avec l'extension .ps par exemple, il n'accepte pas non plus le remarquable package de dessin — et donc de construction de graphe de fonction mathématique — PSTricks. Un autre package de dessin est créé :TikZ fonctionnant avec kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp

Le début du XXIème siècle marque un tournant pour : kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp le développement de moteurs — à ce jour non encore stabilisés — qui permettent d'augmenter et de faciliter les possibilités de ce formateur de texte :

D'abord avec kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeXfinkitxmlcodeinlinelatexdvp qui permet d'utiliser toutes les polices installées sur le système d'exploitation, la plupart des formats image, les packages TikZ et PSTricks pour les dessins. Les polices spécifiques pour les mathématiques sont actuellement en train de se développer grâce au package unicode-math.

Enfin avec kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp très récent qui intègre notamment la possibilité de calculer grâce au langage Lua intégré. kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp n'est pas stabilisé, en plein développement et le programme va encore évoluer : un source créé aujourd'hui peut ne plus fonctionner demain car des commandes auront été modifiées.

Attention : Pour le moment kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp ne fonctionne pas avec PSTricks contrairement à kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeX ,finkitxmlcodeinlinelatexdvp Les développeurs du programme kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp devraient à terme trouver une solution à son intégration. Finalement, la solution kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeXfinkitxmlcodeinlinelatexdvp apparaît comme la plus complète et relativement facile à ce jour.

La qualité typographique de kitxmlcodeinlinelatexdvp\rm \LaTeXfinkitxmlcodeinlinelatexdvp depuis ses origines a une contrainte : kitxmlcodeinlinelatexdvp\rm \LaTeXfinkitxmlcodeinlinelatexdvp n'est pas WYSIWYG(1) comme par exemple Word, ce qui en rebute plus d'un ! Heureusement, l'utilisation de plus en plus ergonomique des éditeurs de texte pallie en partie à ce qui peut être considéré par certains comme un inconvénient mais par d'autres comme un avantage.

Il faut noter l'existence d'au moins deux éditeurs de texte quasi-WYSIWYG : Texmacs et Lyx. L'auteur n'est pas bien convaincu que ceux-ci apportent une simplification dans l'élaboration d'un document. Ils peuvent cependant être utiles pour l'apprentissage de kitxmlcodeinlinelatexdvp\rm Lua\LaTeX .finkitxmlcodeinlinelatexdvp Mais rien ne vaut un stage pour bien démarrer, prendre les bonnes habitudes pour devenir ensuite autonome.

À ce jour, 24 mars 2013, seul TeXworks, éditeur de texte fourni avec TeX Live et avec MikTeX au moment de leur installation, a intégré dans sa barre d'icônes une compilation pour kitxmlcodeinlinelatexdvp\rm Lua\LaTeX .finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp semble être appelé à remplacer kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp Il serait l'avenir de kitxmlcodeinlinelatexdvp\rm pdf\LaTeX !finkitxmlcodeinlinelatexdvp

Pour résumer :

moteur

kitxmlcodelatexdvp\rm pdf\LaTeXfinkitxmlcodelatexdvp kitxmlcodelatexdvp\rm X\bbold{ꓱ}\LaTeXfinkitxmlcodelatexdvp kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

Fonctionnement avec les polices LaTeX

OUI

OUI

OUI

Fonctionnement avec l les polices du système d'exploitation

NON

OUI

OUI
avec restriction

Fonctionnement avec image.ps

NON

OUI

NON

Fonctionnement avec image,png

OUI

OUI

OUI

Fonctionnement avec PSTricks

OUI

OUI

OUI

Fonctionnement avec sageTeX

OUI

OUI

OUI

Langage de programmation intégré

NON

NON

OUI

II. Le préambule d'un document LuaLaTeX

Il ressemble beaucoup à celui d'un document kitxmlcodeinlinelatexdvp\rm X\bbold{ꓱ}\LaTeX .finkitxmlcodeinlinelatexdvp Seul le package xltxtra est remplacé par luatextra. Voici un exemple de préambule pour un document ayant un contenu mathématique avec graphique :

 
Sélectionnez
\documentclass[12pt]{article}
\usepackage{luatextra,xcolor}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{unicode-math}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1.5cm]{geometry}
\usepackage[francais]{babel}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmathfont{Asana Math}

III. Le langage Lua et sa correspondance en LuaLaTeX

III-A. Console Lua

Pour vérifier l'installation et le fonctionnement de Lua sur l'ordinateur, il est possible d'écrire un script avec quelques lignes de code Lua et de les enregistrer dans un fichier <fichier>.lua Pour que ce fichier soit lu, on peut utiliser par exemple la console, se placer dans le dossier où se trouve le fichier et écrire lua <fichier>.lua pour lancer le programme qui doit alors s'exécuter.

Une autre solution consiste à utiliser un programme dédié à Lua pour exécuter le code avec une interface plus conviviale. C'est le cas avec ZeroBrane Studio dont l'installation est très simple sous Windows. Ce logiciel fournit aussi différents exemples de scripts qu'on peut essayer et décortiquer pour apprendre la syntaxe de Lua. Il y a deux possibilités de lancement d'un programme écrit en Lua : dans le menu Project, le classique Run mais aussi Run as Scratchpad qui lance le programme en direct permettant de voir immédiatement l'effet de tout changement dans le code. Notamment, par clic maintenu sur un nombre, en déplaçant la souris, la valeur change avec effet immédiat sur la compilation du document.

III-B. Commentaires en Lua

Ce qui est écrit après -- est en commentaire [[ ]] permet des commentaires sur plusieurs lignes.

III-C. Calculs

On utilise la fonction print()

III-C-1. Écriture des nombres

syntaxe Lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(12.34*10^-3)

\directlua{tex.print(12.34*10^-3)}

0.01234

print(12.34e-3)

\directlua{tex.print(12.34e-3)}

0.01234

print(12.34E-3)

\directlua{tex.print(12.34E-3)}

0.01234

print(math.pi)

\directlua{tex.print(math.pi)}

3.1415926535898

III-C-2. Arithmétique

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(3+7)

\directlua{tex.print(3+7)}

10

print(3-7)

\directlua{tex.print(3-7)}

-4

print(3*7)

\directlua{tex.print(3*7)}

21

print(3/7)

\directlua{tex.print(3/7)}

0.42857142857143

print(3^7)

\directlua{tex.print(3^7)}

2187

III-C-3. Fonctions trigonométriques

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(math.sin(-3))

\directlua{tex.print(math.sin(-3))}

-0.14112000805987

print(math.cos(-3))

\directlua{tex.print(math.cos(-3))}

-0.98999249660045

print(math.tan(-3))

\directlua{tex.print(math.tan(-3))}

0.14254654307428

print(math.asin(0.5))

\directlua{tex.print(math.asin(0.5))}

0.5235987755983

print(math.acos(0.5))

\directlua{tex.print(math.acos(0.5))}

1.0471975511966

print(math.acos(-3))

\directlua{tex.print(math.acos(-3))}

nan

print(math.atan2(-3,1))

\directlua{tex.print(math.atan2(-3,1))}

1.2490457723983

Fonctions logarithmiques et exponentielles

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(math.log(2))

\directlua{tex.print(math.log(2))}

0.69314718055995

print(math.log10(100))

\directlua{tex.print(math.log10(100))}

2

print(math.exp(-3))

\directlua{tex.print(math.exp(-3))}

0.049787068367864

print(math.frexp(3))

\directlua{tex.print(math.frexp(3))}

2

print(math.ldexp(0.3,2))

\directlua{tex.print(math.ldexp(0.3,2))}

01/02/14

Nombres aléatoires

Syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(math.random())

\directlua{tex.print(math.random())}

0.94077464981972

print(math.random(100))

\directlua{tex.print(math.random(100))}

44

print(math.random(3,10))

\directlua{tex.print(math.random(3,10))}

7

print(math.randomseed(12))

\directlua{tex.print(math.randomseed(12))}

 

III-C-4. Autres fonctions mathématiques

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(math.abs(-3))

\directlua{tex.print(math.abs(-3))}

3

print(math.ceil(-3.5))

\directlua{tex.print(math.ceil(-3.5))}

-3

print(math.floor(-3.5))

\directlua{tex.print(math.floor(-3.5))}

-4

print(math.max(-3,1,5.6))

\directlua{tex.print(math.max(-3,1,5.6))}

5.6

print(math.min(-3,1,5.6))

\directlua{tex.print(math.min(-3,1,5.6))}

-3

print(math.mod(8,3))

\directlua{tex.print(math.mod(8,3))}

2

print(math.mod(8,3.2))

\directlua{tex.print(math.mod(8,3.2))}

1.6

print(math.pow(2,0.5))

\directlua{tex.print(math.pow(2,0.5))}

1.4142135623731

print(math.sqrt(3)) \

directlua{tex.print(math.sqrt(3))}

1.7320508075689

III-C-5. Degrés et radians

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print(math.deg(3.14))

\directlua{tex.print(math.deg(3.14))}

179.90874767108

print(math.rad(90))

\directlua{tex.print(math.rad(90))}

1.5707963267949

III-D. Texte et concaténation

syntaxe lua

syntaxe

kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp

résultat

print('bonjour')

\directlua{tex.print('bonjour')}

bonjour

print("bonjour")

\directlua{tex.print("bonjour")}

bonjour

print([[bonjour]])

\directlua{tex.print([[bonjour]])}

bonjour

print('bon'..'jour')

\directlua{tex.print('bon'..'jour')}

bonjour

III-E. Boucles

III-E-1. While do end

 
Sélectionnez
\begin{luacode}
i=3
while i>0 do
tex.print(i)
i=i-1
end
\end{luacode}

Affichera : 3 2 1

III-E-2. Repeat untill

 
Sélectionnez
\begin{luacode}
i=3
repeat
tex.print(i)
i=i-1
until i==0
\end{luacode}

Affichera : 3 2 1

III-E-3. For do end

 
Sélectionnez
\begin{luacode}
for i=3,0,-1 do
tex.print(i)
end
\end{luacode}

Affichera : 3 2 1 0

Les résultats de la compilation sont mis côte à côte. Pour les avoir les uns en dessous des autres, voici la technique :

 
Sélectionnez
\begin{luacode}
for i=3,0,-1 do
tex.print(i..'\\\\')
end
\end{luacode}

Affichera :

3

2

1

0

La règle est la suivante : à l'intérieur d'un tex.print(),

  • une commande kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp \<commande> devient '\\<commande>' ;
  • \\ devient '\\\\' ;
  • entre une variable — par exemple i — et du texte, il faut concaténer avec ..

IV. exemples

Dans cette section, il s'agit de choisir quelques fonctions mathématiques, de réaliser un tableau de valeurs et de tracer les graphiques correspondants.

kitxmlcodelatexdvpy=x^2-3x+1finkitxmlcodelatexdvp

Tableau de valeurs :

 
Sélectionnez
\begin{luacode}
tex.print("\\begin{tabular}{c|c}")
tex.print("x & y \\\\\\hline")
for x=-2,5,0.5 do
tex.print( x .. '&' .. x^2-3*x+1 .. '\\\\ ')
end
tex.print("\\end{tabular}")
\end{luacode}

x

y

-2

11

-1.5

01/07/75

-1

5

-0.5

2,75

0

1

0.5

-0.25

1

-1

1,5

-1,25

2

-1

2,5

-0,25

3

1

3,5

2,75

4

5

4,5

7,75

5

11

Graphe:

 
Sélectionnez
\begin{tikzpicture}[xscale=1.5]
\tkzInit[xmin = -3,xmax =6,ymin = -2,ymax = 12]
\tkzAxeXY
\begin{luacode}
for x=-2,5,0.05 do
tex.print("\\fill(".. x .."," .. x^2-3*x+1 ..")circle (1pt);")
end
\end{luacode}
\end{tikzpicture}
Image non disponible

x

y

-2

0.090909090909091

-1.5

0.12903225806452

-1

0.2

-0.5

0.36363636363636

0

1

0.5

-4

1

-1

1,5

-0.8

2

-1

2,5

-4

3

1

3,5

0.36363636363636

4

0,2

4,5

0.12903225806452

5

0.090909090909091

Image non disponible

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   


What You See Is What You Get, tel écran, tel écrit avec Word ou LibreOfficeWriter

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Jo BONNE. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.