Alle Fragen von xsim als listing ausgeben
Ich habe mit xsim eine Aufgabenansammlung angelegt und würde jetzt gerne den Quelltext aller Aufgaben ausgeben lassen. Dafür nütze ich `tcblisting` von tcolorbox.
Aufbauend auf [dieser Frage][1] habe ich den Befehl `\GetBody` erstellt. Dieser ist in der Schleife `\ForEachUsedExerciseByID` platziert. Ohne einer tcblisting Umgebung werden die Fragentexte auch normal eingbunden.
Wenn ich nun
\ForEachUsedExerciseByID{
begin{tcblisting}{listing only}
\GetBody{#1}{#2}{exercise}
\end{tcblisting}
}
nutze, dann erhalte ich den Fehler:
! File ended while scanning use of \next.
<inserted text>
\par
<*> minimal.tex
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.
! Emergency stop.
Ich wollte dann mithilfe die `\tcbinputlisting` die Dateien direkt einbinden, was auch mithilfe von
\tcbinputlisting{listing only,listing file=\jobname-#1-#2-exercise-body.tex}
funktioniert. Jedoch ist dies nicht flexibel genug, wenn man z.B. den Ordner für die Dateien ändert.
Daraufhin habe ich `\GetFullPath` definiert, welcher aber zum folgenden Fehler führt:
! Missing number, treated as zero.
<to be read again>
{
l.40 }
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
enter code here
Das setzen der Option `listing options={escapechar=\%}` brachte auch keinen Erfolg.
Hat jemand eine Idee?
Hier das Minimalbeispiel:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xsim}
\usepackage[most]{tcolorbox}
\ExplSyntaxOn
\NewDocumentCommand \GetBody {m m m}
{ \xsim_input:nnn { #1 } { #2 } { #3 } }
\ExplSyntaxOff
\ExplSyntaxOn
\NewDocumentCommand \GetFullPath {m m m}
{ \__xsim_set_file_signature:nnn {#1} {#2} {#3} \l__xsim_file_path_and_name_tl }
\ExplSyntaxOff
\begin{document}
\begin{exercise}[subtitle={Ein schöner Titel}]
Fragetext
\end{exercise}
\begin{solution}
Antworttext
\end{solution}
\newpage
\section*{Quelltext}
\ForEachUsedExerciseByID{%
\begin{tcblisting}{listing only,listing options={escapechar=\%}}
%\GetBody{#1}{#2}{exercise}%
\end{tcblisting}
% \tcbinputlisting{listing only,listing file=\jobname-#1-#2-exercise-body.tex}
% \tcbinputlisting{listing only,listing file=\GetFullPath{#1}{#2}{exercise}}
}
\end{document}
[1]: https://tex.stackexchange.com/questions/380959/xsim-access-exercises-text