Retour

xintf-io1.tex

Télécharger le fichier
%% =====================================================================
%% Écriture/ Lecture de fichiers *.xint 
%% =====================================================================
 
\begingroup
\catcode`_ 11
\makeatletter
\catcode13\active%
\gdef\ReadXintValues#1#2{%
 % #1 = préfixe pour nommer les variables
 % #2 = nom du fichier
% LE FICHIER #2 DOIT CONTENIR UNE VARIABLE PAR LIGNE
% Il vaut mieux que cette variable soit au format interne "raw" de
% xintfrac, à savoir A[N] ou A/B[N]. C'est automatiquement
% le cas si le fichier a été créé par \WriteXintValues
% cf outarray.tex
% 
% NE RIEN CHANGER AUX LIGNES CI-DESSOUS N'AJOUTER NI ESPACE NI %
% NI QUOI QUE CE SOIT
 \begingroup\xintglobaldefstrue%
 \endlinechar13\relax%
 \catcode13\active%
 \everyeof{\noexpand}%
 \def\@tempa{0}%
 \def\ReadXint@one##1
 {\edef\@tempa{\the\numexpr\@tempa+1}%
% INTERNAL XINT MACRO DO NOT USE AT HOME WITHOUT GUIDANCE
  \XINT_expr_defvar_one{#1\@tempa}{{##1}}
 }%
 \def
 {\futurelet\@temptoken\ReadXint@chk}%
 \def\ReadXint@chk{\ifx\@temptoken\noexpand\else%
               \expandafter\ReadXint@one\fi}%
 \expandafter
 \@@input#2\relax%
 \endgroup}%
\endgroup%
 
% Pour xint < 1.4e, décommenter les lignes suivantes....................
% \begingroup
% \catcode`_ 11
% \gdef\xintthebarefloateval
% {%
%     \romannumeral0\expandafter\xint_stop_atfirstofone
%     \romannumeral0\xintbarefloateval
% }%
% \endgroup
 
\newwrite\out
 
\def\WriteXintValues#1#2{%
  % #1 = une expression séparée par des virgules
  % #2 = fichier externe 
  \immediate\openout\out=#2\relax
  %\pdfresettimer
  \newlinechar=`\^^J
  \immediate\write\out{%
    \xintListWithSep{^^J}
    {%
        \xintthebarefloateval
        #1%
        \relax
    }%
  }%
  %\message{\the\dimexpr\pdfelapsedtime sp\relax}
  \immediate\closeout\out
}%