Triangle de Pascal construit avec Python et LaTeX. Nous allons voir dans cet article comment construire le triangle de Pascal en \(\LaTeX\) à l’aide de Python.
Avant de commencer, il est bon de savoir ce qu’est le triangle de Pascal. Pour cela, vous pouvez consulter par exemple la page wikipedia.
Triangle de Pascal construit avec Python et LaTeX: le code Python
def trianglePascal(n): T = [[0] * (n+1) for p in range(n+1)] for n in range(n+1): if n == 0: T[n][0] = 1 else: for k in range(n+1): if k == 0: T[n][0] = 1 else: T[n][k] = T[n-1][k-1] + T[n-1][k] return T T = trianglePascal(9)
Ce premier code est intéressant pour voir comment construire une matrice (dont les coefficients sont ceux du triangle de Pascal).
On commence par initialiser notre matrice T en la remplissant de “0”. Puis on la remplit selon la propriété bien connue : \(\binom{n}{k}=\binom{n-1}{k-1}+\binom{n-1}{k}\).
Le code \(\LaTeX\)
On va utiliser PythonTeX :
% sous windows % pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex|python C:\Users\trash\AppData\Local\Programs\MiKTeX\scripts\pythontex\pythontex.py %.tex|pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex % Sous Linux, remplacer "--shell-espace" par "-write18" \documentclass[10pt,a0paper,landscape]{article} \usepackage[utf8]{inputenc} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{diagbox} \usepackage{pythontex} \usepackage{nopageno} \usepackage{colortbl} \usepackage{tikz} \usepackage[margin=5mm]{geometry} \setlength{\parindent}{0pt} \newcommand{\dashed}{\tikz[baseline=1mm]\draw[gray!50,dashed](0,0)--(0,0.5);} \begin{document} \begin{pycode} n = 50 def trianglePascal(n): T = [[0] * (n+1) for p in range(n+1)] for n in range(n+1): if n == 0: T[n][0] = 1 else: for k in range(n+1): if k == 0: T[n][0] = 1 else: T[n][k] = T[n-1][k-1] + T[n-1][k] return T T = trianglePascal(n) print('\\begin{tabular}{|>{\\columncolor{orange!10}}c|*{',n,'}{c!{\\dashed}}c|}\\rowcolor{orange!10}\\hline\\diagbox[height=8mm]{$n$}{$k$}') for k in range(n+1): print('&',k) for j in range(n+1): print('\\\\\\hline ',j) for k in range(n+1): if k == 0: print('&1') else: if T[j][k] != 0: print('&',T[j][k]) else: print('&') print('\\\\\\hline\\end{tabular}') \end{pycode} \end{document}
Une précision ici : j’ai souhaité séparer chaque colonne par des pointillés. Pour cela, j’ai utilisé une macro TiKZ (pour si peu, ça fait un peu mal quand-même…) car le package arydshln (qui permet de le faire simplement) rentre en conflit avec diagbox… Il fallait donc en sacrifier un! (en fait, ils ne rentrent pas vraiment en conflit mais si on utilise des pointillés dans le tableau, une boîte noire apparaît à la place de l’étiquette “n”). On obtient le document suivant :
Pour les curieux, voici un aperçu des premières lignes et colonnes: