Comment crire avec \write dans une \newcommand?

Bonjour tous,
Je voudrais faire une sortie des rsultats de petits exercices au fur
et mesure avec \newwrite, mais la bte n’est pas facile manipuler.
Le \immediate n’aide pas vraiment. Vous trouverez un ECM ci-dessous
si quelqu’un a une ide ?
Merci par avance et bonne journe,
Lionel

%-------- DEBUT ECM
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}

\newwrite\FichierResultats %\immediate ou pas ?
\openout\FichierResultats=Results %\immediate
\write\FichierResultats{Les Resultats…}

\newcommand{\EcritRes}[1]{\par
\fbox{
\begin{minipage}{8.5cm}
{\arabic{section}-\arabic{subsection}} \dotfill
%\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
\immediate\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
\end{minipage}
}\ \par
}

\begin{document}
\section{Une section}
\subsection{Un exercice}
Calculons $2+1$ %on commence pas trop dur
\EcritRes{3}

\subsection{Un autre}
Calculons $2+2$
\EcritRes{4}

subsection{Encore un}
Calculons $2+3$
\EcritRes{5}

\end{document}
%--------- FIN ECM

Bonjour,

Pour une raison que j’ignore, il faut placer la commande \write apr�s la \fbox, pas dedans. Pas besoin de \immediate ici. Par contre, le texte ajout� au fichier n’est sans doute pas celui que vous souhaitez…

Bien � vous,

Bastien Dumont

Le Thursday 08 December 2022 à 09:45:47AM, xyz@xyz.tld a écrit :

Bonjour à tous,
Je voudrais faire une sortie des résultats de petits exercices au fur et à
mesure avec \newwrite, mais la bête n’est pas facile à manipuler.
Le \immediate n’aide pas vraiment. Vous trouverez un ECM ci-dessous si
quelqu’un a une idée ?
Merci par avance et bonne journée,
Lionel

%-------- DEBUT ECM
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}

\newwrite\FichierResultats %\immediate ou pas ?
\openout\FichierResultats=Results %\immediate
\write\FichierResultats{Les Resultats…}

\newcommand{\EcritRes}[1]{\par
\fbox{
\begin{minipage}{8.5cm}
{\arabic{section}-\arabic{subsection}} \dotfill
%\write\FichierResultats{\arabic{section}-\arabic{subsection} \backslash
ensuremath{#1}}
\immediate\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
\end{minipage}
}\ \par
}

\begin{document}
\section{Une section}
\subsection{Un exercice}
Calculons $2+1$ %on commence pas trop dur
\EcritRes{3}

\subsection{Un autre}
Calculons $2+2$
\EcritRes{4}

subsection{Encore un}
Calculons $2+3$
\EcritRes{5}

\end{document}
%--------- FIN ECM

Bonjour,

je ne pense pas que ce soit la bonne faon de faire mais je ne suis pas sr de comprendre ce que vous souhaitez faire.

dj, pour crire du code latex dans un fichier externe, il peut tre prfrable d’utiliser des extensions qui le font, genre fancyverb.

et votre formatage ne sert rien puisqu’il reste dans le fichier source. Si vous voulez que l’autre fichier latex formate, il vaut mieux expdier les donnes sous la forme la plus simple et utiliser des macros tex dans le fichier cible pour les reprsenter. En fait, si toutes vos rponses sont aussi simples, vous pourriez vous inspirer des tables des matires et \addcontentsline (pour rester dans la logique write).

(j’ai peut-tre rien compris)

Th. B.

Bonjour Bastien,
Merci pour la suggestion, j’ai essay mais sans succs malheureusement.
Bon aprs-midi,
Lionel

@ 10:27 08/12/2022, >>>Bastien DUMONT<<< Wrote ------------------------:wq!

Content-Transfer-Encoding: 8bit
Content-Disposition: inline

Bonjour,

Pour une raison que j’ignore, il faut placer la commande \write
apr�s la \fbox, pas dedans. Pas besoin de \immediate ici. Par
contre, le texte ajout� au fichier n’est sans doute pas celui que
vous souhaitez…

Bien vous,

Bastien Dumont

Le Thursday 08 December 2022 09:45:47AM,
xyz@xyz.tld a crit :

Bonjour tous,
Je voudrais faire une sortie des rsultats de petits exercices au fur et
mesure avec \newwrite, mais la bte n’est pas facile manipuler.
Le \immediate n’aide pas vraiment. Vous trouverez un ECM ci-dessous si
quelqu’un a une ide ?
Merci par avance et bonne journe,
Lionel

%-------- DEBUT ECM
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}

\newwrite\FichierResultats %\immediate ou pas ?
\openout\FichierResultats=Results %\immediate
\write\FichierResultats{Les Resultats…}

\newcommand{\EcritRes}[1]{\par
\fbox{
\begin{minipage}{8.5cm}
{\arabic{section}-\arabic{subsection}} \dotfill
%\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash
ensuremath{#1}}
\immediate\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
\end{minipage}
}\ \par
}

\begin{document}
\section{Une section}
\subsection{Un exercice}
Calculons $2+1$ %on commence pas trop dur
\EcritRes{3}

\subsection{Un autre}
Calculons $2+2$
\EcritRes{4}

subsection{Encore un}
Calculons $2+3$
\EcritRes{5}

\end{document}
%--------- FIN ECM

Avec la définition suivante :

\newcommand{\EcritRes}[1]{\par
\fbox{
\begin{minipage}{8.5cm}
{\arabic{section}-\arabic{subsection}} \dotfill
\end{minipage}
}
\par
\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
}

J’obtiens le fichier suivant Results.tex :

Les Resultats…
1-3 \backslash ensuremath{3}
1-3 \backslash ensuremath{4}
1-3 \backslash ensuremath{5}

Le Thursday 08 December 2022 à 02:16:06PM, xyz@xyz.tld a écrit :

Bonjour Bastien,
Merci pour la suggestion, j’ai essayé mais sans succès malheureusement.
Bon après-midi,
Lionel

@ 10:27 08/12/2022, >>>Bastien DUMONT<<< Wrote ------------------------:wq!

Content-Transfer-Encoding: 8bit
Content-Disposition: inline

Bonjour,

Pour une raison que j’ignore, il faut placer la commande \write apr�s
la \fbox, pas dedans. Pas besoin de \immediate ici. Par contre, le texte
ajout� au fichier n’est sans doute pas celui que vous souhaitez…

Bien à vous,

Bastien Dumont

Le Thursday 08 December 2022 à 09:45:47AM, xyz@xyz.tld a
écrit :

Bonjour à tous,
Je voudrais faire une sortie des résultats de petits exercices au fur et à
mesure avec \newwrite, mais la bête n’est pas facile à manipuler.
Le \immediate n’aide pas vraiment. Vous trouverez un ECM ci-dessous si
quelqu’un a une idée ?
Merci par avance et bonne journée,
Lionel

%-------- DEBUT ECM
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}

\newwrite\FichierResultats %\immediate ou pas ?
\openout\FichierResultats=Results %\immediate
\write\FichierResultats{Les Resultats…}

\newcommand{\EcritRes}[1]{\par
\fbox{
\begin{minipage}{8.5cm}
{\arabic{section}-\arabic{subsection}} \dotfill
%\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash
ensuremath{#1}}
\immediate\write\FichierResultats{\arabic{section}-\arabic{subsection}
\backslash ensuremath{#1}}
\end{minipage}
}\ \par
}

\begin{document}
\section{Une section}
\subsection{Un exercice}
Calculons $2+1$ %on commence pas trop dur
\EcritRes{3}

\subsection{Un autre}
Calculons $2+2$
\EcritRes{4}

subsection{Encore un}
Calculons $2+3$
\EcritRes{5}

\end{document}
%--------- FIN ECM

Le 08/12/2022 à 09:45, xyz@xyz.tld a écrit :

Bonjour à tous,
Je voudrais faire une sortie des résultats de petits exercices au fur et
à mesure avec \newwrite, mais la bête n’est pas facile à manipuler.
Le \immediate n’aide pas vraiment. Vous trouverez un ECM ci-dessous si
quelqu’un a une idée ?

L’écriture de code (La)TeX dans des fichiers externes n’est jamais simple.
La bonne idée, ici, est de ne pas réinventer la roue car il existe un
package qui permet de faire exactement ce que vous voulez. C’est le
package ‘answers’:

<https://texdoc.org/serve/answers/0>

Cordialement,

 Paul Gaborit

Le 08/12/22 à 23h00, Paul Gaborit a écrit :

L’écriture de code (La)TeX dans des fichiers externes n’est jamais simple. La bonne idée, ici, est de ne pas réinventer la roue car il existe un package qui permet de faire exactement ce que vous voulez. C’est le package “answers”:

https://texdoc.org/serve/answers/0

Oui ou, plus généralement, des packages permettant de créer et gérer des exercices :

┌──── │ CTAN: Exercise └────

Et je rappelle que c’est une question qui va être abordée dimanche prochain par deux des orateurs de la Journée GUTenberg :

┌──── │ Journée GUTenberg 2022 - Groupe francophone des Utilisateurs de TEX, LATEX et logiciels compagnons └────

Denis