tikz-tabular.sty est le nouveau package LaTeX que je viens de créé. Mais est-il réellement utile?
Je me pose cette question car après m’être pris la tête pour l’écrire, je trouve qu’il est un peu compliqué à l’utilisation… À vous de me le dire…
tikz-tabular: l’objet du package LaTeX
À l’origine, je regardais le « journal télévisé » de M6 (peut-on réellement parler de journal d’information quand on y traire aussi bien de la guerre en Ukraine que de la dernière recette du marouflon à ma merguez à la carte du restaurant « Le petit carnivore » à Sant-Foins-Les-Granges ?)
Bref, lors d’un reportage, une feuille montrant un joli tableau apparût à l’image et depuis, elle m’obsédais… Chacun ses travers (de porc)! Je n’eus pas d’autre choix que de me pencher sur une manière simple de faire un tel tableau.
La solution évidente pour moi était d’utiliser TiKZ comme solution graphique car je ne maîtrise pas du tout les autres. De plus, le ne compile jamais mes documents via LuaLaTeX (et ça va avoir son importance pour la suite). Il me fallait donc trouver une méthode pour créer de tels tableaux via Pdflatex (par exemple).
Mais avant tout, laissez-mois vous présenter le style de tableaux que je voulais:
tikz-tabular: l’implémentation du package LaTeX
Au commencement…
Là, ce fus très sportif…
J’ai avant tout commencer par essayer d’utiliser les catcodes, mais en vain. En effet, je voulais conserver la syntaxe classique pour créer des tableaux en \(\LaTeX\):
\begin{tikztabular}{3} cellule 1.1 cellule 1.2 & cellule 1.3\\ cellule 2.1 cellule 2.2 & cellule 2.3 \end{tikztabular}
Malheureusement, autant manipuler les catcodes pour l’esperluette ne pose pas trop de problème, autant le double backslash est très problématique. Si bien qu’il ma fallu me résigner: je ne suis pas assez doué!
La résignation…
J’ai donc dû laisser tomber pour repenser ma façon d’imaginer les choses. Je pourrais construire le tableau à l’aide d’un programme en parallèle… Ne maîtrisant pas Lua, j’ai pensé à Python… Et c’est là que ça se complique pour l’utilisateur!
En soit, la logique est simple:
- Créer un environnement tikztabular;
- écrire ce qu’il contient dans un fichier auxiliaire (.aux) à l’aide de \(\LaTeX\);
- exploiter le contenu du fichier .aux en Python
Le problème ici est que si je souhaite créer un package, il sera mis ailleurs que dans le dossier de compilation… et le fichier .aux est obligatoirement créé dans le dossier courant (si on impose un autre chmein, (\LaTeX\) fait bien la gueule…).
Il faut donc que je passe le chemin courant au programme Python et ça, \(\LaTeX\) ne sait pas faire automatiquement: il faut créer une variable qui contient ce chemin. C’est là la première contrainte pour l’utilisateur. Pas super glop!
La deuxième contrainte pour l’utilisateur est d’installer Python et faire en sorte que le chemin vers python.exe soit dans le PATH (pour celles et ceux qui sont sur Windows).
La troisième et dernière contrainte pour l’utilisateur est de modifier une ligne du package manuellement une fois que ce dernier a été installé. C’est le chemin vers le programme Python qui est fourni avec le package.
Ça commence à faire beaucoup non ?
Si cela ne vous rebute pas, alors vous serez peut-être intéressés par ce package, même s’il ne fait pas grand-chose d’extraordinaire…
tikz-tabular: les codes concernant le package LaTeX
Le code du fichier .sty
Le fichier .sty ne contient pas grand-chose. Il contient juste la définition de l’environnement:
% Required packages \RequirePackage{tikz} \RequirePackage{fancyvrb} % Define the length width of cells \newlength{\cellwidth} \newcounter{tikz@tabular} \setcounter{tikz@tabular}{0} \newenvironment*{tikztabular} {% \stepcounter{tikz@tabular}% \VerbatimEnvironment% \begin{VerbatimOut}{tikztabular-\thetikz@tabular.aux}% } {% \end{VerbatimOut}% \immediate\write18{python "c:/texmf/tex/latex/tikz-tabular/tikztabular.py" num-\thetikz@tabular-dir-\globalpath}% \input{tikztabular-\thetikz@tabular.tex}% }
Ici, la variable \globalpath est celle qui contient le chemin vers le fichier de compilation.
Je vous fais grâce du code Python (car il est plutôt long), mais si cela vous intéresse, vous n’aurez qu’à télécharger le package.
Un exemple de code minimal
Le code \(\LaTeX\) qui a permis de créer le tableau précédent est le suivant:
\documentclass{article} \usepackage{tikz-tabular} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} \newcommand{\globalpath}{"c:/Users/dieu/Desktop/"} \begin{document} \begin{tikzpicture} \begin{tikztabular} <columns=5 <cellheight=1cm <firstcolumncolor=red!50 <lastcolumncolor=red!50 <marginh=1mm <marginv=2mm [tabulartitle] \fontfamily{lmss}\selectfont\Large\textbf{Mon tableau} [endtabulartitle] [tabularhead] \textbf{Tête 1} & \textbf{Tête 2} & \textbf{Tête 3} & \textbf{Tête 4} & [endtabularhead] Cellule 1.1 & Cellule 1.2 & Cellule 1.3 & Cellule 1.4 & Cellule 1.5 Cellule 2.1 & Cellule 2.2 & Cellule 2.3 & Cellule 2.4 & Cellule 2.5 [tabularfoot] \textbf{Pied 1} & \textbf{Pied 2} & \textbf{Pied 3} & \textbf{Pied 4} & \end{tikztabular} \end{tikzpicture} \end{document}
L’objectif n’est pas de faire des tableaux sophistiqués, mais des tableaux simples, et ce, simplement, comme celui de la documentation qui présente les différentes options (extrait):
Téléchargement
Je mets le package sur la page: