5
1

J'aimerais avec une même source LaTeX pouvoir produire, au choix, une version ou une autre de ce document.

Exemple pratique : je voudrais, avec une même source, produire une fiche d'exercice sans et avec correction. La source aurait donc les corrections écrites dedans, mais on pourrait produire le document avec et sans solutions.

Posée 23 Jui '19, 03:18

idefix's gravatar image

idefix
95594051
Taux d'acceptation : 14%

Modifiée 03 Jul '19, 20:45

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Au dernier stage de Dunkerque, une intervention, intitulée Productivité avec LaTeX : un devoir en 5 minutes 🙂, portait sur cela (et sur plein d'autres choses).

(23 Jui '19, 16:46) Pathe ♦♦ Pathe's gravatar image

Existe-t-il un compte-rendu de cette formation ?

(24 Jui '19, 16:58) idefix idefix's gravatar image

Pas encore. J'ai prévu d'un rédiger un, mais sans entrer dans les détails du code : il s'agit plutôt de rendre compte de la chose en ce qu'elle permet de dégager du temps pour la pédagogie.

(24 Jui '19, 17:35) Pathe ♦♦ Pathe's gravatar image

Peut-être des documents supports qui pourrait être partagés, si c'est autorisé ? En tout cas ce serait des ressources et un travail bien utiles

(26 Jui '19, 03:06) idefix idefix's gravatar image

Le support de présentation de l'an dernier est disponible ici.

Par ailleurs, l'auteur a posté énormément de documents relatifs à sa pratique ici.

(26 Jui '19, 15:26) Pathe ♦♦ Pathe's gravatar image
2

Pour la production de fiches d'exercices avec ou sans leurs corrections, il y a plusieurs packages dédiés, notamment xsim.

(26 Jui '19, 18:00) denis ♦♦ denis's gravatar image

Par le passé, une question analogue a été posée sur le présent site.

(03 Jul '19, 20:51) Pathe ♦♦ Pathe's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus

Une solution avec l'extension exercise :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage[
%noanswer % modifier ici pour choisir correction ou pas correction 
]{exercise}

\begin{document}

    \begin{Exercise}[title={Title},label=ex1]

        question text

    \end{Exercise}

    \begin{Answer}[ref={ex1}]

        solution

    \end{Answer}

\end{document}

Pour créer les deux documents automatiquement, compilez avec :

Ouvrir dans l'éditeur Overleaf
latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode -shell-escape" -jobname=document -pretex="\newcommand{\version}{noanswer}" -usepretex document ; latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode -shell-escape" -jobname=document_solution -pretex="\newcommand{\version}{}" -usepretex document

(en remplaçant « document » par le nom de votre fichier).


Ouvrir dans l'éditeur Overleaf
\ifdefined\version
\else
\def\version{noanswer} % without answers
%\def\version{} % with answers
\fi

\documentclass{article}

\usepackage[\version]{exercise}

\begin{document}

    \begin{Exercise}[title={Title},label=ex1]

        question text

    \end{Exercise}

    \begin{Answer}[ref={ex1}]

        solution

    \end{Answer}

\end{document}

Le même chose avec un « magic comment » pour TeXstudio :

Ouvrir dans l'éditeur Overleaf
% !TeX program = latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode -shell-escape" -jobname=% -pretex="\newcommand{\version}{noanswer}" -usepretex % | latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode -shell-escape" -jobname=%_solution -pretex="\newcommand{\version}{}" -usepretex % | txs:///view-pdf "?am)_solution.pdf"

\documentclass{article}

% setting a default value in case it is compilled differently
\ifdefined\version
\else
\def\version{noanswer}
\fi

\usepackage[\version]{exercise}

\begin{document}

    \begin{Exercise}[title={Title},label=ex1]

        question text

    \end{Exercise}

    \begin{Answer}[ref={ex1}]

        solution

    \end{Answer}

\end{document}
Lien permanent

Publiée 23 Jui '19, 03:43

samcarter's gravatar image

samcarter
8.2k2817
Taux d'acceptation : 57%

Modifiée 18 Jul '19, 21:06

2

@Pathe : merci beaucoup pour votre modifications ! Comme un petit merci, j'ai créé https://texnique.fr/osqa/upfiles/TourDeFrance.gif

(23 Jui '19, 17:10) samcarter samcarter's gravatar image

@samcarter : je ne comprends pas bien la commande de compilation. On passe une chaîne de caractère à pdflatex ? Ce serait comme donner le contenu d'un fichier à compiler via une longue chaîne de caractères, remplie avec le contenu du fichier à l'aide la commande \input précédé d'une nouvelle commande \version?

Pourquoi deux fois la même chose à chaque fois ? Ce serait le contenu d'un makefile ?

cp sert à copier le document.pdf sous un nouveau nom pour qu'il ne soit pas écrasé par la nouvelle compilation avec la nouvelle option ?

(26 Jui '19, 03:26) idefix idefix's gravatar image
1

@idefix : « On passe une chaîne de caractère à pdflatex ? » Oui, c'est vrai. Essayez pdflatex "\documentclass{article}\begin{document}zzz\end{document}". Compiler deux (ou trois) fois est nécessaire pour obtenir \label{xxx}....\ref{xxx} correctement.

« Ce serait le contenu d'un makefile ? » Quelque chose comme ça, mais je ne sais pas bien le syntaxe des makefiles. Je l'utilise simplement dans mon éditeur texstudio avec une « magic command ».

« Que signifie cp ? » Cela crée une copie du fichier pdf avec un autre nom. Au lieu de créer une copie on aussi peut modifier le \jobname.

(26 Jui '19, 03:58) samcarter samcarter's gravatar image

Une « magic command » (PAS un « magic comment » ?) de TeXstudio, c'est une compilation utilisateur dans le menu production dans configurer TeXstudio ?

(26 Jui '19, 04:39) idefix idefix's gravatar image

@idefix : « magic comment » est un commentaire au début du fichier tex. Avec TeXstudio (et quelques autres éditeurs) on peut l'utiliser pour modifier localement le compilateur. Je vais ajouter un exemple dans ma réponse.

(26 Jui '19, 04:50) samcarter samcarter's gravatar image

@samcarter : dans l'exemple du « magic comment », les points-virgules sont remplacés par des « pipes » (|). Les points-virgules sont utilisés dans quel contexte ?

TS dans le « magic comment » signifie-t-il « TeXStudio » ?

(26 Jui '19, 05:00) idefix idefix's gravatar image

@idefix : cette syntaxe | est spécifique pour TeXstudio. ; est la syntaxe normale pour bash, csh...

(26 Jui '19, 05:05) samcarter samcarter's gravatar image

@idefix : et oui, TS pour TeXstudio.

(26 Jui '19, 05:17) samcarter samcarter's gravatar image

@samcarter : vous êtes visiblement sous Linux. Sous Windows 10, le « magic comment » ne fonctionne pas, parce que la commande cp n'est pas une commande Windows. J'ai remplacé par copy ou xcopy mais cela ne fonctionne pas non plus.

(27 Jui '19, 06:39) idefix idefix's gravatar image

@idefix : veuillez réessayer.

(27 Jui '19, 15:07) samcarter samcarter's gravatar image

@samcarter : ce nouveau « magic comment » avec l'option de compilation latex -jobname (qui permet de renommer le fichier pdf produit avec un non différent du fichier source tex) fonctionne bien.

Les quatre compilations se sont bien produites et j'ai bien en une seule exécution les deux fichiers pdf produits (celui avec les solutions et celui sans).

Pourriez-vous remettre la première version du « magic comment » avec la commande cp. J'aimerais essayer de la faire fonctionner aussi sous windows 10.

sous Windows (10) comment rendre possible la copie de fichier dans TeXstudio ?

(27 Jui '19, 20:03) idefix idefix's gravatar image

@idefix : ici la première version avec cp : % !TeX TS-program = pdflatex "\newcommand{\version}{}\input{%}" | pdflatex "\newcommand{\version}{}\input{%}" | cp %.pdf %_sol.pdf | pdflatex "\newcommand{\version}{noanswer}\input{%}" | pdflatex "\newcommand{\version}{noanswer}\input{%}"

(27 Jui '19, 20:22) samcarter samcarter's gravatar image

@idefix : la nouvelle version est mieux parce que les deux documents utilisent des fichiers .aux différents

(27 Jui '19, 20:24) samcarter samcarter's gravatar image

Une remarque en passant, après la première exécution avec le « magic comment » dans le fichier source pour une compilation spécifique à ce source, TeXstudio ajoute au tout début du fichier .tex source un nouveau « magic comment » (si on a répondu par le choix a) Autoriser pour ce document) dans la fenêtre de choix de compilation :

% !TeX document-id = {bd57e74a-b7d9-42a4-8143-a4f8c0d568a3}

Quel est sont rôle ? Identification ? En tout cas pour la seconde compilation la fenêtre de choix de compilation ne s'affiche plus.

A-t-on aussi ce nouveau « magic comment » sous Linux ?

(27 Jui '19, 20:29) idefix idefix's gravatar image

@idefix : c'est un « hash » du « magic comment » ; TeXstudio l'utilise pour savoir si quelque chose a changé. Si quelque chose a changé, il vous demandera une autre fois d'autoriser...

(27 Jui '19, 20:35) samcarter samcarter's gravatar image

@idefix : le nouveau « magic comment » avec jobname devrait fonctionner partout.

(27 Jui '19, 20:51) samcarter samcarter's gravatar image

@samcarter : le « hash » du « magic comment » ne concerne que les changements du « magic comment » lui-même, pas ceux du latex dans le source. Correct ?

Le « magic comment » ne fait pas afficher le (ou les) pdf après leur production. Que faudrait-il faire pour qu'il le fasse ?

Comme l'afficheur du pdf reste avec le dernier fichier pdf qu'il a eu à afficher, ça peut induire en erreur si on n'est pas au courant.

(27 Jui '19, 21:13) idefix idefix's gravatar image

@idefix : le « hash » du « magic comment » concerne seulement les changements du « magic comment » lui-même.

(27 Jui '19, 21:17) samcarter samcarter's gravatar image

@idefix : % !TeX TS-program = pdflatex -jobname=%_sol "\newcommand{\version}{}\input{%}" | pdflatex -jobname=%_sol "\newcommand{\version}{}\input{%}" | pdflatex "\newcommand{\version}{noanswer}\input{%}" | pdflatex "\newcommand{\version}{noanswer}\input{%}" | txs:///view-pdf

(27 Jui '19, 21:18) samcarter samcarter's gravatar image

@samcarter On dirait que txs:///view-pdf affiche le fichier pdf correspondant au nom du fichier source. Comment faire pour afficher le pdf dont le nom a été modifié par -jobname ?

J'ai essayé txs:///view-pdf %_sol ou txs:///view-pdf %_sol.pdf mais ça ne fonctionne pas

(27 Jui '19, 21:47) idefix idefix's gravatar image

@idefix codé en dur : txs:///view-pdf NomDuDocument_sol.pdf

(27 Jui '19, 21:55) samcarter samcarter's gravatar image

@samcarter Le viewer de pdf interne de TeXstudio ne peut afficher qu'un fichier à la fois, on ne peut pas le partager en deux par exemple pour afficher deux fichiers pdf en même temps ? Si c'est possible, comment le faire ?

Toujours dans le « magic comment » est-il possible d'utiliser le lecteur pdf externe afin de pouvoir ouvrir les deux fichiers pdf en même temps ?

(27 Jui '19, 22:12) idefix idefix's gravatar image

@idefix http://texstudio.sourceforge.net/manual/current/usermanual_en.html "1.3.1 Advanced configuration of the build system"

(27 Jui '19, 22:28) samcarter samcarter's gravatar image

Une possibilité est donc de préserver le premier document ouvert quand on ouvre le second. Ca donne les deux documents côte à côte, ce qui prend pas mal de place

|txs:///view-pdf test_sol.pdf | txs:///view-pdf --preserve-existing

(Le fichier compilé est test.tex)

Le problème est que ça préserve tout et à la seconde exécution on se retrouve avec 3 fenêtres, puis 4 à la troisième exécution, etc. Il faut donc penser à fermer les fenêtres au fur et à mesure (La croix de fermeture de fenêtre disparaît et il faut la chercher en développant le menu avec les deux chevrons (>>) à droite

(27 Jui '19, 22:49) idefix idefix's gravatar image

Remarque : si plusieurs fenêtres sont ouvertes quand on fait le « magic comment », le premier view remplie toutes les fenêtres existantes (donc ici avec le fichier test_sol.pdf), et le second view s'ajoute à droite (une seule fenêtre avec le fichier test.pdf à droite)

On le voit par exemple avec le visualiseur par défaut (la loupe), il met le fichier correspondant au nom du fichier tex (ici test.pdf) dans toutes les fenêtres existantes. Si on compile ensuite, le « magic comment » va remplacer partout test.pdf par test_sol.pdf(|txs:///view-pdf test_sol.pdf) avant le second view

(27 Jui '19, 23:15) idefix idefix's gravatar image
2

@idefix AMHA, il s'agit d'une question indépendante :-) Vous pouvez demander @denis de convertir un ensemble des commentaires en une nouvelle question.

(27 Jui '19, 23:27) touhami touhami's gravatar image

@touhami Je vais m'abstenir puisque idefix a lui-même créé une nouvelle question.

(28 Jui '19, 01:16) denis ♦♦ denis's gravatar image

@denis on sollicite votre présence ici

(28 Jui '19, 01:47) touhami touhami's gravatar image

@touhami Désolé, je ne reçois pas toujours de mail me signalant une nouvelle contribution (ce qui, j'en conviens, est un comble pour un administrateur de ce site) et ce, malgré les réglages pour que ça soit le cas.

(28 Jui '19, 02:27) denis ♦♦ denis's gravatar image

@denis À mon avis ça tombe bien, comme ça vous pouvez vous échapper :-)

(28 Jui '19, 03:05) touhami touhami's gravatar image

@samcarter Concrètement, pour la création de deux documents automatiquement sans utiliser le « magic comment » , comment mettez-vous en oeuvre la suite d'instructions :

pdflatex -jobname=document_sol "\newcommand{\version}{}\input{document}" ; pdflatex -jobname=document_sol "\newcommand{\version}{}\input{document}" ; pdflatex "\newcommand{\version}{noanswer}\input{document}" ; pdflatex "\newcommand{\version}{noanswer}\input{document}" ?

Vous les placez dans un fichier de commandes et vous exécutez ce fichier ? Vous définissez une commande utilisateur dans TeXstudio ? Autre chose ?

(28 Jui '19, 16:37) idefix idefix's gravatar image

@idefix C'est une question de goût. Un fichier de commandes marche, une commande utilisateur dans TeXstudio marche, des outils d'automatisation comme arara marchent... il y a beaucoup de façons

(28 Jui '19, 16:50) samcarter samcarter's gravatar image
Affichage de 5 parmi 32 Afficher 27 commentaire(s) en plus
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.