如何在 xsim 中隐藏学生用书的解决方案并显示教师用书的所有解决方案

如何在 xsim 中隐藏学生用书的解决方案并显示教师用书的所有解决方案

我的书里有两种类型的练习。第一种有公开的解决方案,这些解决方案应该出现在学生用书和教师用书中。第二种有解决方案,这些解决方案只应该出现在教师用书中,而不出现在学生用书中。

我的第一个方法是定义一个布尔值“教师用书”来标记教师用书中的练习。

我可能还需要在序言中添加一个全局变量来指示我的书现在应该以学生形式还是教师形式打印。

你是如何做到的?

\documentclass{scrbook}
\usepackage[utf8]{inputenc}

\usepackage{hyperref}

%Rahmenumgebung
\usepackage{tcolorbox}
\usepackage[english]{babel}
\usepackage{blindtext}
\tcbuselibrary{skins,breakable,xparse}

\usepackage[blank]{xsim}
\xsimsetup{
    print-solutions/headings=false,%no headings before solutions
}
\DeclareExerciseProperty{level}
\DeclareExerciseProperty{symbole}
\DeclareExerciseProperty{notenstufe}
\DeclareExerciseProperty{title}
\DeclareExerciseProperty*{teacherbook}%*=boolean, wenn teacherbook ohne Zuweisung oder wenn teacherbook=true ist, dann soll diese Lösung nur im Teacherbook erscheinen.
\DeclareExerciseEnvironmentTemplate{aufgabe-template}{%
    \IfExistSolutionT{%
        \IfInsideSolutionTF
            {%True
                \label{sol:\ExerciseID}
            }
            {%False
                \label{ex:\ExerciseID}
            }
    }%
    \tcolorbox[
        parbox=false,%wenn dieser Befehl deaktiviert ist, dann sollte unten setlength{\parskip}{0.5\baselineskip plus2pt minus2pt} aktiviert sein.
        enhanced jigsaw,
        breakable,%auskommentieren, wenn die Aufgaben in einer einzigen Box zusammenhängen sollen
        left=1mm,%Abstand links zum Rahmen
        right=1mm,%Abstand rechts zum Rahmen
        %colframe=blue!30!white,%Rahmenfarbe
        colframe=black,%Rahmenfarbe
        coltext=black,%Schriftfarbe
        colback=white,%Hintergrundfarbe
        colbacktitle=white,%Hintergrundfarbe im Titel
        coltitle=black,%Schriftfarbe im Titel
        %underlay={%Hintergrund
            %\begin{tcbclipinterior}
            %\shade[inner color=green!80!yellow,outer color=white]
            %(interior.north west) circle (2cm);
            %\draw[help lines,step=5mm,white!80!black,shift={(interior.north west)}]
            %(interior.south west) grid (interior.north east);
            %\end{tcbclipinterior}
        %},
        %drop shadow,%mit Schatten
        beforeafter skip = .5\baselineskip,
        title ={
            \textbf{\GetExerciseName~\GetExerciseProperty{counter}}%Aufgabe mit Nummer ausgeben
            \GetExercisePropertyT{level}{ \SymAnforderungen{\PropertyValue}}%evtl. Level mit Knödeln anzeigen
            \GetExercisePropertyT{symbole}{ \PropertyValue}%evtl. Symbole anzeigen
            \GetExercisePropertyT{notenstufe}{ (N:~\PropertyValue)}%evtl. Notenstufe anzeigen
            \GetExercisePropertyT{points}{ % notice the space, evtl. Punkte anzeigen
                \mbox{(%
                \printgoal{\PropertyValue}
                \IfExerciseGoalSingularTF{points}
                    {\XSIMtranslate{point}}
                    {\XSIMtranslate{points}}%
                )}%
            }%
            \IfExistSolutionTF%
                {%True bedeutet: Lösung existiert
                    \IfInsideSolutionTF%
                        {%True bedeutet wir sind in der Lösung
                            {\hfill A:~\pageref{ex:\ExerciseID}}%Querverweis zur Aufgabe (A)
                        }
                        {%False
                            {\hfill L:~\pageref{sol:\ExerciseID}}%Querverweis zur Lösung (L)
                        }%
                }%
                {}%False bedeutet Lösung existiert nicht
            \GetExercisePropertyT{title}{\\\PropertyValue}%evtl title in neuer Zeile (\\) ausgeben
        },%
        pad at break*=0mm,%sollte immer letzte Option sein, weil diverse Anpassungen dadurch ausgelöst werden.
    ]
    %nachfolgender Befehl wird nicht gebraucht, wenn mit parbox=false oben gearbeitet wird.
    %\setlength{\parskip}{0.5\baselineskip plus5pt minus5pt}%
    \IfInsideSolutionT{
        \IfExerciseBooleanPropertyT{teacherbook}{\textcolor{red}{This solution only appears in the student book.}}
    }
}
{%end-Bereich für aufgabe-template
    \endtcolorbox
}
\DeclareExerciseType{Aufgabe}{
    exercise-env = exercise,
    solution-env = solution,
    exercise-name = Aufgabe,
    exercises-name = Aufgaben,
    solution-name = Lösung von Aufgabe,
    solutions-name = Lösungen,
    exercise-template = aufgabe-template,
    solution-template = aufgabe-template,
    within=section,
    %the-counter = \thesection.\arabic{counter-aufgabe}
}

\begin{document}

\setcounter{chapter}{2}

\chapter{Chapter Title 3}
\section{Section 3.1}
\begin{exercise}[%
    points=1,%
    teacherbook=true%
]
This solution should only visible in the teacher book.
\blindtext[1]
\end{exercise}
\begin{solution}
\blindtext[1]
\end{solution}

\begin{exercise}[%
    points=2%
]
\blindtext[1]
\end{exercise}
\begin{solution}
\blindtext[1]
\end{solution}


\section{Section limited solutions for students}
\printsolutions[chapter=true]


\chapter{Chapter Title 4}
\section{Section 4.1}
\begin{exercise}[%
    points=1%
]
\blindtext[1]
\end{exercise}
\begin{solution}
\blindtext[1]
\end{solution}

\begin{exercise}[%
    points=1,%
    teacherbook=true%
]
This solution should only visible in the teacher book.
\blindtext[1]
\end{exercise}
\begin{solution}
\blindtext[1]
\end{solution}


\section{Section all solutions for teachers}
\printsolutions[chapter=true]

\end{document}

相关内容