Page 1 sur 1

[Résolu] Afficher des valeurs au début du fichier...

MessagePosté: Jeudi 27 Août 2015, 17:08
par Tatanka
Bonjour,

Mon problème est assez difficile à expliquer en une ligne, donc mon titre est assez vague pour le coup.

Je cherche à faire afficher au début de mon fichier des valeurs de commandes qui ne seront déterminées qu'à la fin de la compilation. Donc cela pose un problème.
Sauf que ce genre de souci est résolu comme par exemple dans les gestions de références : par exemple \Lastpage n'est pas connu de Latex à la première compilation mais on peut l'afficher aux compilations suivantes au début du document.

Et bien sur le principe, je veux faire la même chose.
J'ai une base de données DTLtool et des compteurs que j'aimerai utiliser dès le début de mon préambule mais qui ne pourront être complètement déterminées qu'à la fin de mon fichier.

Code: Tout sélectionner
\documentclass[12pt]{article}
\usepackage{datatool}

\newcounter{moncompteur}
\setcounter{moncompteur}{1}
\DTLnewdb{mabase}
\DTLcleardb{mabase}


%commande quelconque
\newcommand{\macmd}[2]{%
    \ifthenelse{#1>#2}{%
         \stepcounter{moncompteur}
         \DTLnewrow{mabase}
         \DTLnewdbentry{mabase}{arg}{#1}
         \themoncompteur
      }{%
         \stepcounter{moncompteur}
         \DTLnewrow{mabase}
         \DTLnewdbentry{mabase}{arg}{#2}
         \themoncompteur
      }%
}%


\begin{document}

%<==========
% je voudrai afficher et utiliser ma base de données mabase et mes compteurs ICI

\macmd{1}{2}
\macmd{3}{1}
\macmd{5}{4}

\end{document}



Voilà j'ai créé un WME qui n'est pas exactement mon fichier mais qui illustre bien ce que je souhaite.
Dans cet exemple, si je veux utiliser la base de données juste après le \begin{document}, les valeurs ne sont pas correctes car il faut attendre la fin de la compilation pour les avoir toutes.
J'ai bien essayer en sauvegardant la base dans un fichier que je reprends après, mais c'est le chien qui se mord la queue...


J'espère que vous pourrez m'aider.
Merci d'avance

Re: Afficher des valeurs au début du fichier...

MessagePosté: Jeudi 27 Août 2015, 20:15
par un bon petit
Pour sauvegarder des choses entre les compilations, le plus courant est d'utiliser le fichier aux.
Dans l'ECM ci-dessous, la valeur du compteur à la fin de chaque compil est sauvegardée dans le fichier aux. Vous aurez un affichage de 1 à la première compli, 4 à la seconde, 7 à la 3e, etc.

Pour sauvegarder une base de données, lire la doc du package datatool qui prévoit cette fonctionnalité.

Code: Tout sélectionner
\documentclass[12pt]{article}
\usepackage{datatool}

\newcounter{moncompteur}
\setcounter{moncompteur}{1}
\DTLnewdb{mabase}
\DTLcleardb{mabase}

\newcommand\macmd[2]{%
   \stepcounter{moncompteur}
   \DTLnewrow{mabase}
   \begingroup
   \edef\temp{\endgroup\noexpand\DTLnewdbentry{mabase}{arg}{\ifnum#1>#2 #1\else#2\fi}}%
   \temp
   \themoncompteur
}%
\makeatletter
\AtEndDocument{\immediate\write\@auxout{\global\string\setcounter{moncompteur}{\arabic{moncompteur}}}}
\makeatother
\begin{document}
Mon compteur vaut : \arabic{moncompteur}

\macmd{1}{2}
\macmd{3}{1}
\macmd{5}{4}
\end{document}

Re: Afficher des valeurs au début du fichier...

MessagePosté: Vendredi 28 Août 2015, 08:36
par Tatanka
Merci beaucoup bon petit...
c'est génial.
Je n'arrivai pas à chercher et trouver la solution...

Je vais essayer cela dans mon fichier et je vous tiens au courant...