如何在 xsim 中向 gradingtable default* 模板添加行

如何在 xsim 中向 gradingtable default* 模板添加行

首先,我要感谢所有提出问题和/或提供答案的用户,这些问题和答案对我学习 LaTeX 以及使用它来代替 MS Word 编辑我的高中化学考试很有帮助。

我一直在使用 Clemens Niederberger 的 Exsheets 软件包(以及他的其他化学软件包)来创建类似于荷兰国家/中央考试布局的模板。然而,随着 Expl3 的更新,Exsheets 代码的某些部分变得过时了。根据在网上找到的说明,一些代码已经修复。但由于 Exsheets 不再开发,我开始使用它的后继产品 Xsim。我想使用 Xsim 创建与 Exsheets 相同的布局。我遇到了两个问题,但找不到答案。其中一个问题涉及向评分表的默认*模板添加两行。

我从xsim.定义.代码.tex并将其添加到我的基于 xsim 的文档中,将模板重命名为讲解员*。我不知道下一步该如何添加一行锻炼属性(讣告)以及锻炼属性{级别}。编译未改变但重命名的模板也会导致错误:

lijn 266: Missing number, treated as zero. ...dingtable[template=docent*,type=exercise]   

所以我的问题有两个:
1. 如何继续修改模板 docent* 以包含两个附加行。2
. 为什么调用 default* 模板有效,而文档中复制的重命名版本无效?

MWE 的使用范围相当广泛外页或使用模拟其 PDF 结果的截图如下。

原本的外层表布局:

\documentclass[a4paper,12pt]{article}

%----- taal/font pakketten
\usepackage[dutch]{babel}
\usepackage[tracking]{microtype}

\usepackage[
    typeface=bookman,
    sanstypeface=tgheros,
    mathtypeface=mathdesign:charter,
    monotypeface=tgcursor,
    textcomp=dontload
    ]{typeface}
\usepackage{totcount}

%----- chemische pakketten -----
\usepackage{chemmacros}
\usepackage{chemgreek}

%----- opmaak pakketten -----
\usepackage{exsheets}
\usepackage{titlesec}
\usepackage[inline]{enumitem}
\usepackage{totcount}

%----- layout pakketten -----
\usepackage[text={17.0cm,26cm},top=2.0cm,left=2.5cm]{geometry}
\usepackage{snotez}

%----- font en versie selectie -----
\renewcommand*{\familydefault}{\sfdefault}
\setlength{\parindent}{0mm}
\renewcommand{\baselinestretch}{1.1}
\setlist[1]{leftmargin=*,itemsep=-6pt}

%----- chemistry omgeving -----
\selectchemgreekmapping{mathdesign}
\chemsetup{modules=all}
\chemsetup[reactions]{before-tag = reactie \textbf, tag-open = [ , tag-close = ]}

\DeclareMathAlphabet{\mathsf}{OT1}{qhv}{m}{n}       % qag is de LaTeX naam van TG Adventor
\SetMathAlphabet{\mathsf}{bold}{OT1}{qhv}{bx}{n}    % qhv is de LaTeX naam van TG Heros

%----- nieuwe sectie definiëren voor toetsindeling (examenmodel)-----
\titleformat{\section}{\sffamily\Large\bfseries}{}{0em}{\hspace{-1.7cm}\fcolorbox{black}{black}{\boxframe{0.8cm}{6pt}{0pt}}  \hspace{15pt} Opgave \thesection:~}{}%[\seclabel]
\titlespacing{\section}{0pt}{3ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\renewcommand{\thesection}{\Roman{section}}
\regtotcounter{section}

%----- layout vragen en antwoorden -----
\ExplSyntaxOn
\NewDocumentCommand \SetQuestionPropertiesX {m}
{ \exsheets_set_question_properties:x {#1} }
\ExplSyntaxOff

\newcommand{\secName}{}
\newcommand{\lsection}[1]{\renewcommand*{\secName}{#1}\section{#1}}

\SetupExSheets{
    points/name = pt,
    points/format=\tiny\textit,
    headings = margin-nr,
    headings-format = \normalfont\bfseries,
    section-hook   = \noindent\bfseries Opgave \GetQuestionProperty{section-title}{\CurrentQuestionID}\space ,
    question/pre-body-hook = \SetQuestionPropertiesX{ section-title = \unexpanded\expandafter{\secName} }
}

\DeclareInstance{exsheets-heading}{sec-nr}{default}{
    indent-first = false,
    vscale = 1,
    title-format = \textbf,
    join = {
        main[l,vc]title[l,B](0pt,-30pt) ;
    }
}
\DeclareInstance{exsheets-heading}{margin-nr}{default}{
    runin = true ,
    number-post-code = \space,
    attach = {
        main[l,vc]number[r,vc](0pt,0pt) ;
        main[l,vc]points[r,vc](-0.9cm,0pt)
    } ,
    points-post-code = \hspace{2pt} \small \boxframe{7pt}{7pt}{0pt} ,
}

\RenewQuSolPair
{question}[headings=margin-nr]
{solution}[headings=sec-nr]

\DeclareQuestionProperty{section-title}

\DeclareQuestionProperty{obit}

\DeclareQuestionProperty{niveau}


\begin{document}

%=====================================
%   TOETS
%=====================================

\subsection*{Schoolexamen}

Het schoolexamen bestaat uit {\numberofquestions} vragen verdeeld over \total{section} opgaven. Er zijn {\normalsize \pointssum*} punten te behalen.

%=====================================
%   OPGAVE
%=====================================

\lsection{Introductie: Juist of juist onjuist? \space {\normalfont \textit{\small naar: leerstof}}}
\vspace{-9pt}\hrule\vspace{15pt}

Bij deze opgave moet er een verklaring of uitleg gegeven worden waarom een stelling juist dan wel onjuist is. \textbf{Zonder} die verklaring of uitleg is het antwoord \textit{per definitie} \textbf{fout}! 

\begin{question}{2}
    \SetQuestionProperties{obit=OB}
    \SetQuestionProperties{niveau=HV}
    De covalentie van koolstof is gelijk aan de covalentie van silicium.
\end{question}
\begin{solution}
    \begin{itemize}[label={2 pt}]
        \item Juist, koolstof kan vier bindingen vormen met andere atomen. Silicium staat in dezelfde groep in het Periodiek Systeem en heeft een vergelijkbare atoombouw als koolstof. De covalentie van silicium is gelijk aan die van koolstof.
    \end{itemize}
\end{solution}

\begin{question}{2}
    \SetQuestionProperties{obit=IT}
    \SetQuestionProperties{niveau=HV}
    In de stof salmiak \ch{NH4Cl} komt het ion \ch{NH4\pch[]} voor. Stikstof heeft in dit ion \ch{NH4\pch[]} dezelfde covalentie als koolstof in het molecuul \ch{CH4}.
\end{question}
\begin{solution}
    \begin{itemize}[label={2 pt}]
        \item Juist. Zowel stikstof als koolstof hebben hetzelfde aantal waterstofatomen aan zich gebonden. Beide atomen hebben in deze verbindingen covalentie vier.
    \end{itemize}
\end{solution}

%=====================================
%   OPGAVE
%=====================================

\lsection{Elektronen dansen in esters \space {\normalfont \textit{\small naar: leerstof en Binas}}}
\vspace{-9pt}\hrule\vspace{15pt}

De groepen \ch{-OH} en \ch{-NH2} worden functionele groepen genoemd. Ze bepalen mede hoe de moleculen waarin ze aanwezig zijn, zullen reageren met andere stoffen. Ethanol en ethaanamine lossen goed op in water. Ethaan lost niet in water op.

\begin{question}{2}
    \SetQuestionProperties{obit=OB}
    \SetQuestionProperties{niveau=H}
    Leg op microniveau uit waarom ethaan niet in water zal oplossen en ethanol en ethaanamine wel.
\end{question}
\begin{solution}
    De functionele groepen in ethanol en ethaanamine bevatten polaire atoombindingen en zijn in staat om waterstofbruggen te vormen. Ethaan heeft alleen atoombindingen en kan geen waterstofbruggen met watermoleculen vormen.
    \begin{itemize}[label={1 pt}]
        \item benoemen verschil in polariteit van de atoombindingen in functionele groepen
        \item conclusie over de vorming van waterstofbruggen met water\textbf{moleculen}
    \end{itemize}
\end{solution}

Onderzoekers hebben achterhaald uit welke beginstof - ethanol of ethaanzuur - het zuurstofatoom tussen de beide C-ketens afkomstig is. Dat hebben ze gedaan door elk van de beginstoffen te labelen met het zuurstofisotoop \isotope{18,O}.

\begin{question}{2}
    \SetQuestionProperties{obit=OB}
    \SetQuestionProperties{niveau=H}
    Leg uit wat de verschillen zijn tussen het zuurstofisotoop \isotope{18,O} en een 'gewoon' zuurstofatoom.\\
    Maak hierbij gebruik van BINAS tabel 25A of ScienceData tabel <x>.
\end{question}
\begin{solution}
    Verschil 1: Het zuurstofisotoop \isotope{18,O} verschilt in massagetal van het 'gewone' zuurstofatoom \isotope{O}, omdat het twee neutronen meer in de kern heeft.
    Verschil 2: 'Gewoon' zuurstof \isotope{O} komt meer dan 99\% in de natuur voor tegen \isotope{18,O} ongeveer 0,20\%.
    \begin{itemize}[label={1 pt}]
        \item \isotope{18,O} heeft twee neutronen meer in de kern / \isotope{18,O} heeft dus een groter massagetal
        \item \isotope{O} komt meer dan 99\% voor / \isotope{18,O} komt slechts 0,20\% in de natuur voor
    \end{itemize}
\end{solution}


\vfill
\flushright{\textbf{\large Einde van de toets}}\flushleft

\begin{tiny}
    \begin{center}
        \begin{tabular}{|l|*{\numberofquestions}{c|}c|} \hline
            Vraag & \ForEachQuestion{\QuestionNumber{#1}\iflastquestion{}{&}} & Totaal \\ \hline
            Type & \ForEachQuestion{\GetQuestionProperty{obit}{#1}\iflastquestion{}{&}} & \\ \hline
            Punten & \ForEachQuestion{\GetQuestionProperty{points}{#1}\iflastquestion{}{&}} & \pointssum* \\ \hline
        \end{tabular}
    \end{center}
\end{tiny}

%=====================================
%   CORRECTIE
%=====================================
\setcounter{page}{1}

\subsection*{Correctiemodel}

\printsolutions


\begin{tiny}
    \begin{center}
        \begin{tabular}{|l|*{\numberofquestions}{c|}c|} \hline
            Vraag & \ForEachQuestion{\QuestionNumber{#1}\iflastquestion{}{&}} & Totaal \\ \hline
            Type & \ForEachQuestion{\GetQuestionProperty{obit}{#1}\iflastquestion{}{&}} & \\ \hline
            Niveau & \ForEachQuestion{\GetQuestionProperty{niveau}{#1}\iflastquestion{}{&}} & \\ \hline
            Punten & \ForEachQuestion{\GetQuestionProperty{points}{#1}\iflastquestion{}{&}} & \pointssum* \\ \hline
        \end{tabular}
    \end{center}
\end{tiny}

\end{document}

Exsheet MWE 中两个页面的截图:
在此处输入图片描述

使用版本模拟接下来是双表:

\documentclass[a4paper,12pt]{article}

%----- taal/font pakketten
\usepackage[dutch]{babel}
\usepackage[tracking]{microtype}

\usepackage[
    typeface=bookman,
    sanstypeface=tgheros,
    mathtypeface=mathdesign:charter,
    monotypeface=tgcursor,
    textcomp=dontload
    ]{typeface}

%----- chemische pakketten -----
\usepackage{chemmacros}
\usepackage{chemgreek}

%----- opmaak pakketten -----
\usepackage{xsim}
\usepackage{titlesec}
\usepackage[inline]{enumitem}
\usepackage{totcount}

%----- layout pakketten -----
\usepackage[text={17.0cm,26cm},top=2.0cm,left=2.5cm]{geometry}
\usepackage{snotez}

\usepackage{tcolorbox,needspace}

%----- font en versie selectie -----
\renewcommand*{\familydefault}{\sfdefault}
\setlength{\parindent}{0mm}
\renewcommand{\baselinestretch}{1.1}
\setlist[1]{leftmargin=*,itemsep=-6pt}

%----- chemistry omgeving -----
\selectchemgreekmapping{mathdesign}
\chemsetup{modules=all}
\chemsetup[reactions]{before-tag = reactie \textbf, tag-open = [ , tag-close = ]}

\DeclareMathAlphabet{\mathsf}{OT1}{qhv}{m}{n}       % qag is de LaTeX naam van TG Adventor
\SetMathAlphabet{\mathsf}{bold}{OT1}{qhv}{bx}{n}    % qhv is de LaTeX naam van TG Heros

%----- nieuwe sectie definiëren voor toetsindeling (examenmodel)-----
\titleformat{\section}{\sffamily\Large\bfseries}{}{0em}{\hspace{-1.7cm}\fcolorbox{black}{black}{\boxframe{0.8cm}{6pt}{0pt}}  \hspace{15pt} Opgave \thesection:~}{}%[\seclabel]
\titlespacing{\section}{0pt}{3ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\renewcommand{\thesection}{\Roman{section}}
\regtotcounter{section}

\newcommand{\secName}{}
\newcommand{\lsection}[1]{\renewcommand*{\secName}{#1}\section{#1}}

%----- layout vragen en antwoorden -----
\DeclareExerciseEnvironmentTemplate{se-toets}
{%
    \vspace{0.5\baselineskip}
%   \Needspace*{2\baselineskip}
    \noindent
    \IfExercisePropertySetT{subtitle}
    { \textit{\GetExerciseProperty{subtitle}} \\} %
    \IfInsideSolutionTF{%
        \reversemarginpar \marginnote {%
            \textbf{\GetExerciseProperty{counter}}
        }}%
        {%
        \reversemarginpar \marginnote {%
            \IfExercisePropertySetT{points}
            {\textit{\tiny \GetExerciseProperty{points} pt}} %
            \small \boxframe{7pt}{7pt}{0pt} \hfill
            \textbf{\GetExerciseProperty{counter}}%
        }%
    }%
}
{}


\DeclareExerciseProperty{section-title}

\DeclareExerciseProperty{obit}

\DeclareExerciseProperty{niveau}

\xsimsetup{
    path = auxtexfile,
    exercise/template = se-toets,
    solution/template = se-toets,
    exercise/name = vraag,
    exercise/pre-hook = \SetExerciseProperty{section-title}{\secName},
    solution/pre-hook  = \noindent\bfseries{ Opgave \GetExerciseProperty{section-title}} \normalfont \\,
    }
\renewcommand*\theexercise{\arabic{exercise}.}

% adapted copy of default* template in xsim.definitions.code.tex
\DeclareExerciseTableTemplate{docent*}
{
    \XSIMputright \ExerciseTableCode
    {
        \toprule
        \XSIMifblankTF {\ExerciseType}
        {}
        { \XSIMmixedcase { \GetExerciseParameter {exercise-name} } }
        &
    }
    \ForEachUsedExerciseByType
    {
        \XSIMifeqTF {#1} { \ExerciseTableType {#1} }
        {
            \XSIMifblankTF { \ExerciseType }
            {
                \XSIMputright \ExerciseTableCode
                {
                    \XSIMmixedcase
                    { \ExerciseParameterGet {#1} {exercise-name} ~ }
                }
            }
            {}
            \XSIMputright \ExerciseTableCode { #3 & }
        }
        {}
    }
    \XSIMputright \ExerciseTableCode
    {
        \XSIMtranslate {total} \\
        \midrule \XSIMmixedcase { \XSIMtranslate {points} } &
    }
    \ForEachUsedExerciseByType
    {
        \XSIMifeqTF {#1} { \ExerciseTableType {#1} }
        {
            \XSIMputright \ExerciseTableCode
            { \XSIMifblankTF {#5} {\printgoal{0}} {\printgoal{#5}} & }
        }
        {}
    }
    \XSIMputright \ExerciseTableCode
    {
        \XSIMifblankTF {\ExerciseType}
        { \TotalExerciseGoal {points} {} {} }
        { \TotalExerciseTypeGoal {\ExerciseType} {points} {} {} }
        \\ \midrule
        \XSIMtranslate {reached} &
    }
    \ForEachUsedExerciseByType
    {
        \XSIMifeqTF {#1} { \ExerciseTableType {#1} }
        { \XSIMputright \ExerciseTableCode {&} }
        {}
    }
    \XSIMputright \ExerciseTableCode { \\ \bottomrule }
    \def\numberofcolumns{
        \XSIMifblankTF {\ExerciseType}
        {\numberofusedexercises}
        {\csname numberof \ExerciseType s\endcsname}
    }
    \XSIMifeqF{\numberofcolumns}{0}
    {
        \begin {tabular} {l*{\numberofcolumns}{c}c}
        \ExerciseTableCode
        \end {tabular}
    }
}


\begin{document}

%=====================================
%   TOETS
%=====================================

\subsection*{Schoolexamen}

Het schoolexamen bestaat uit \numberofexercises vragen verdeeld over \total{section} opgaven. Er zijn \printtotalpoints punten te behalen.

%=====================================
%   OPGAVE
%=====================================

\lsection{Introductie: Juist of juist onjuist? \space {\normalfont \textit{\small naar: leerstof}}}
\vspace{-9pt}\hrule\vspace{15pt}

Bij deze opgave moet er een verklaring of uitleg gegeven worden waarom een stelling juist dan wel onjuist is. \textbf{Zonder} die verklaring of uitleg is het antwoord \textit{per definitie} \textbf{fout}! 

\begin{exercise}[points=2,obit=OB,niveau=H]
    De covalentie van koolstof is gelijk aan de covalentie van silicium.
\end{exercise}
\begin{solution}
    \begin{itemize}[label={2 pt}]
    \item Juist, koolstof kan vier bindingen vormen met andere atomen. Silicium staat in dezelfde groep in het Periodiek Systeem en heeft een vergelijkbare atoombouw als koolstof. De covalentie van silicium is gelijk aan die van koolstof.
\end{itemize}

\end{solution}

\begin{exercise}[points=3,obit=IT,niveau=HV]
    In de stof salmiak \ch{NH4Cl} komt het ion \ch{NH4\pch[]} voor. Stikstof heeft in dit ion \ch{NH4\pch[]} dezelfde covalentie als koolstof in het molecuul \ch{CH4}.
\end{exercise}
\begin{solution}
    \begin{itemize}[label={2 pt}]
    \item Juist. Zowel stikstof als koolstof hebben hetzelfde aantal waterstofatomen aan zich gebonden. Beide atomen hebben in deze verbindingen covalentie vier.
\end{itemize}
\end{solution}

%=====================================
%   OPGAVE
%=====================================

\lsection{Elektronen dansen in esters \space {\normalfont \textit{\small naar: leerstof en Binas}}}
\vspace{-9pt}\hrule\vspace{15pt}

De groepen \ch{-OH} en \ch{-NH2} worden functionele groepen genoemd. Ze bepalen mede hoe de moleculen waarin ze aanwezig zijn, zullen reageren met andere stoffen. Ethanol en ethaanamine lossen goed op in water. Ethaan lost niet in water op.

\begin{exercise}[points=2,obit=OB.niveau=H]
    Leg op microniveau uit waarom ethaan niet in water zal oplossen en ethanol en ethaanamine wel.
\end{exercise}
\begin{solution}
    De functionele groepen in ethanol en ethaanamine bevatten polaire atoombindingen en zijn in staat om waterstofbruggen te vormen. Ethaan heeft alleen atoombindingen en kan geen waterstofbruggen met watermoleculen vormen.
    \begin{itemize}[label={1 pt}]
        \item benoemen verschil in polariteit van de atoombindingen in functionele groepen
        \item conclusie over de vorming van waterstofbruggen met water\textbf{moleculen}
    \end{itemize}
\end{solution}

Onderzoekers hebben achterhaald uit welke beginstof - ethanol of ethaanzuur - het zuurstofatoom tussen de beide C-ketens afkomstig is. Dat hebben ze gedaan door elk van de beginstoffen te labelen met het zuurstofisotoop \isotope{18,O}.

\begin{exercise}[points=2,obit=OB,niveau=H]
    Leg uit wat de verschillen zijn tussen het zuurstofisotoop \isotope{18,O} en een 'gewoon' zuurstofatoom.\\
    Maak hierbij gebruik van BINAS tabel 25A of ScienceData tabel <x>.
\end{exercise}
\begin{solution}
    Verschil 1: Het zuurstofisotoop \isotope{18,O} verschilt in massagetal van het 'gewone' zuurstofatoom \isotope{O}, omdat het twee neutronen meer in de kern heeft.
    Verschil 2: 'Gewoon' zuurstof \isotope{O} komt meer dan 99\% in de natuur voor tegen \isotope{18,O} ongeveer 0,20\%.
    \begin{itemize}[label={1 pt}]
        \item \isotope{18,O} heeft twee neutronen meer in de kern / \isotope{18,O} heeft dus een groter massagetal
        \item \isotope{O} komt meer dan 99\% voor / \isotope{18,O} komt slechts 0,20\% in de natuur voor
    \end{itemize}
\end{solution}

\vfill
\flushright{\textbf{\large Einde van de toets}}\flushleft

\begin{tiny}
    \begin{center}
        \gradingtable[template=default*,type=exercise]
    \end{center}
\end{tiny}

\pagebreak

%=====================================
%   CORRECTIE
%=====================================
\setcounter{page}{1}

\subsection*{Correctiemodel}

\printsolutions

\begin{tiny}
    \begin{center}
        \gradingtable[template=default*,type=exercise]
    \end{center}
\end{tiny}

\begin{tiny}
    \begin{center}
        \gradingtable[template=docent*,type=exercise]
    \end{center}
\end{tiny}

\end{document}

生成的 PDF 页面的截图如下:
在此处输入图片描述

我在运行 MS Windows 7 Pro 64bit 的计算机上使用 TexStudio 2.12.14 和 MiKTeX 2.9.7015。所有软件包都已更新至最新版本。

答案1

您需要记住,默认代码 a) 是在忽略空格的 expl3 环境中编写的,并且 b) 需要根据用户输入测试不同的情况。

在您的情况下,您可以构建一个简化版本的评分表模板,该模板可以完全重建示例中显示的表格exsheets

下面的代码就是这么做的。请注意,居中部分和字体大小已添加到模板中:

\newif\ifstudent
\DeclareExerciseTableTemplate{student*}{%
  \studenttrue
  \UseExerciseTemplate{table}{docent*}%
}
\DeclareExerciseTableTemplate{docent*}{%
  \XSIMputright\ExerciseTableCode{\hline Vraag & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{#3&}}%
  \XSIMputright\ExerciseTableCode{ Totaal \\ \hline Type & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\ExercisePropertyGet{#1}{#2}{obit}&}}%
  \ifstudent\else
    \XSIMputright\ExerciseTableCode{ \\ \hline Niveau & }%
    \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\ExercisePropertyGet{#1}{#2}{niveau}&}}%
  \fi
  \XSIMputright\ExerciseTableCode{ \\ \hline Punten & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\XSIMifblankTF{#5}{\printgoal{0}}{\printgoal{#5}}&}}%
  \XSIMputright\ExerciseTableCode{%
    \XSIMifblankTF{\ExerciseType}
      {\TotalExerciseGoal{points}{}{}}
      {\TotalExerciseTypeGoal{\ExerciseType}{points}{}{}}%
    \\ \hline
  }%
  \def\numberofcolumns{%
    \XSIMifblankTF{\ExerciseType}
      {\numberofusedexercises}
      {\csname numberof\ExerciseType s\endcsname}%
  }%
  \XSIMifeqF{\numberofcolumns}{0}{%
    \begin{center}
      \tiny
      \begin{tabular}{|l|*{\numberofcolumns}{c|}c|}
        \ExerciseTableCode
      \end{tabular}
    \end{center}%
  }%
}

完整代码现在\gradingtable[template=student*]在第一页调用

在此处输入图片描述

其次\gradingtable[template=docent*]

在此处输入图片描述


完整代码:

\documentclass[a4paper,12pt]{article}

%----- taal/font pakketten
\usepackage[dutch]{babel}
\usepackage[tracking]{microtype}

\usepackage[
    typeface=bookman,
    sanstypeface=tgheros,
    mathtypeface=mathdesign:charter,
    monotypeface=tgcursor,
    textcomp=dontload
    ]{typeface}

%----- chemische pakketten -----
\usepackage{chemmacros}
\usepackage{chemgreek}

%----- opmaak pakketten -----
\usepackage{xsim}
\usepackage{titlesec}
\usepackage[inline]{enumitem}
\usepackage{totcount}

%----- layout pakketten -----
\usepackage[text={17.0cm,26cm},top=2.0cm,left=2.5cm]{geometry}
\usepackage{snotez}

\usepackage{tcolorbox,needspace}

%----- font en versie selectie -----
\renewcommand*{\familydefault}{\sfdefault}
\setlength{\parindent}{0mm}
\renewcommand{\baselinestretch}{1.1}
\setlist[1]{leftmargin=*,itemsep=-6pt}

%----- chemistry omgeving -----
\selectchemgreekmapping{mathdesign}
\chemsetup[reactions]{before-tag = reactie \textbf, tag-open = [ , tag-close = ]}

\DeclareMathAlphabet{\mathsf}{OT1}{qhv}{m}{n}       % qag is de LaTeX naam van TG Adventor
\SetMathAlphabet{\mathsf}{bold}{OT1}{qhv}{bx}{n}    % qhv is de LaTeX naam van TG Heros

%----- nieuwe sectie definiëren voor toetsindeling (examenmodel)-----
\titleformat{\section}{\sffamily\Large\bfseries}{}{0em}{\hspace{-1.7cm}\fcolorbox{black}{black}{\boxframe{0.8cm}{6pt}{0pt}}  \hspace{15pt} Opgave \thesection:~}{}%[\seclabel]
\titlespacing{\section}{0pt}{3ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\renewcommand{\thesection}{\Roman{section}}
\regtotcounter{section}

\newcommand{\secName}{}
\newcommand{\lsection}[1]{\renewcommand*{\secName}{#1}\section{#1}}

%----- layout vragen en antwoorden -----
\DeclareExerciseEnvironmentTemplate{se-toets}
{%
    \vspace{0.5\baselineskip}
%   \Needspace*{2\baselineskip}
    \noindent
    \IfExercisePropertySetT{subtitle}
    { \textit{\GetExerciseProperty{subtitle}} \\} %
    \IfInsideSolutionTF{%
        \reversemarginpar \marginnote {%
            \textbf{\GetExerciseProperty{counter}}
        }}%
        {%
        \reversemarginpar \marginnote {%
            \IfExercisePropertySetT{points}
            {\textit{\tiny \GetExerciseProperty{points} pt}} %
            \small \boxframe{7pt}{7pt}{0pt} \hfill
            \textbf{\GetExerciseProperty{counter}}%
        }%
    }%
}
{}


\DeclareExerciseProperty{section-title}

\DeclareExerciseProperty{obit}

\DeclareExerciseProperty{niveau}

\xsimsetup{
    path = auxtexfile,
    exercise/template = se-toets,
    solution/template = se-toets,
    exercise/name = vraag,
    exercise/pre-hook = \SetExerciseProperty{section-title}{\secName},
    solution/pre-hook  = \noindent\bfseries{ Opgave \GetExerciseProperty{section-title}} \normalfont \\,
    }
\renewcommand*\theexercise{\arabic{exercise}.}

\newif\ifstudent
\DeclareExerciseTableTemplate{student*}{%
  \studenttrue
  \UseExerciseTemplate{table}{docent*}%
}
\DeclareExerciseTableTemplate{docent*}{%
  \XSIMputright\ExerciseTableCode{\hline Vraag & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{#3&}}%
  \XSIMputright\ExerciseTableCode{ Totaal \\ \hline Type & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\ExercisePropertyGet{#1}{#2}{obit}&}}%
  \ifstudent\else
    \XSIMputright\ExerciseTableCode{ \\ \hline Niveau & }%
    \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\ExercisePropertyGet{#1}{#2}{niveau}&}}%
  \fi
  \XSIMputright\ExerciseTableCode{ \\ \hline Punten & }%
  \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{\XSIMifblankTF{#5}{\printgoal{0}}{\printgoal{#5}}&}}%
  \XSIMputright\ExerciseTableCode{%
    \XSIMifblankTF{\ExerciseType}
      {\TotalExerciseGoal{points}{}{}}
      {\TotalExerciseTypeGoal{\ExerciseType}{points}{}{}}%
    \\ \hline
  }%
  \def\numberofcolumns{%
    \XSIMifblankTF{\ExerciseType}
      {\numberofusedexercises}
      {\csname numberof\ExerciseType s\endcsname}%
  }%
  \XSIMifeqF{\numberofcolumns}{0}{%
    \begin{center}
      \tiny
      \begin{tabular}{|l|*{\numberofcolumns}{c|}c|}
        \ExerciseTableCode
      \end{tabular}
    \end{center}%
  }%
}


\begin{document}

%=====================================
%   TOETS
%=====================================

\subsection*{Schoolexamen}

Het schoolexamen bestaat uit \numberofexercises vragen verdeeld over \total{section} opgaven. Er zijn \printtotalpoints punten te behalen.

%=====================================
%   OPGAVE
%=====================================

\lsection{Introductie: Juist of juist onjuist? \space {\normalfont \textit{\small naar: leerstof}}}
\vspace{-9pt}\hrule\vspace{15pt}

Bij deze opgave moet er een verklaring of uitleg gegeven worden waarom een stelling juist dan wel onjuist is. \textbf{Zonder} die verklaring of uitleg is het antwoord \textit{per definitie} \textbf{fout}! 

\begin{exercise}[points=2,obit=OB,niveau=H]
    De covalentie van koolstof is gelijk aan de covalentie van silicium.
\end{exercise}
\begin{solution}
    \begin{itemize}[label={2 pt}]
    \item Juist, koolstof kan vier bindingen vormen met andere atomen. Silicium staat in dezelfde groep in het Periodiek Systeem en heeft een vergelijkbare atoombouw als koolstof. De covalentie van silicium is gelijk aan die van koolstof.
\end{itemize}

\end{solution}

\begin{exercise}[points=3,obit=IT,niveau=HV]
    In de stof salmiak \ch{NH4Cl} komt het ion \ch{NH4\pch[]} voor. Stikstof heeft in dit ion \ch{NH4\pch[]} dezelfde covalentie als koolstof in het molecuul \ch{CH4}.
\end{exercise}
\begin{solution}
    \begin{itemize}[label={2 pt}]
    \item Juist. Zowel stikstof als koolstof hebben hetzelfde aantal waterstofatomen aan zich gebonden. Beide atomen hebben in deze verbindingen covalentie vier.
\end{itemize}
\end{solution}

%=====================================
%   OPGAVE
%=====================================

\lsection{Elektronen dansen in esters \space {\normalfont \textit{\small naar: leerstof en Binas}}}
\vspace{-9pt}\hrule\vspace{15pt}

De groepen \ch{-OH} en \ch{-NH2} worden functionele groepen genoemd. Ze bepalen mede hoe de moleculen waarin ze aanwezig zijn, zullen reageren met andere stoffen. Ethanol en ethaanamine lossen goed op in water. Ethaan lost niet in water op.

\begin{exercise}[points=2,obit=OB,niveau=H]
    Leg op microniveau uit waarom ethaan niet in water zal oplossen en ethanol en ethaanamine wel.
\end{exercise}
\begin{solution}
    De functionele groepen in ethanol en ethaanamine bevatten polaire atoombindingen en zijn in staat om waterstofbruggen te vormen. Ethaan heeft alleen atoombindingen en kan geen waterstofbruggen met watermoleculen vormen.
    \begin{itemize}[label={1 pt}]
        \item benoemen verschil in polariteit van de atoombindingen in functionele groepen
        \item conclusie over de vorming van waterstofbruggen met water\textbf{moleculen}
    \end{itemize}
\end{solution}

Onderzoekers hebben achterhaald uit welke beginstof - ethanol of ethaanzuur - het zuurstofatoom tussen de beide C-ketens afkomstig is. Dat hebben ze gedaan door elk van de beginstoffen te labelen met het zuurstofisotoop \isotope{18,O}.

\begin{exercise}[points=2,obit=OB,niveau=H]
    Leg uit wat de verschillen zijn tussen het zuurstofisotoop \isotope{18,O} en een 'gewoon' zuurstofatoom.\\
    Maak hierbij gebruik van BINAS tabel 25A of ScienceData tabel <x>.
\end{exercise}
\begin{solution}
    Verschil 1: Het zuurstofisotoop \isotope{18,O} verschilt in massagetal van het 'gewone' zuurstofatoom \isotope{O}, omdat het twee neutronen meer in de kern heeft.
    Verschil 2: 'Gewoon' zuurstof \isotope{O} komt meer dan 99\% in de natuur voor tegen \isotope{18,O} ongeveer 0,20\%.
    \begin{itemize}[label={1 pt}]
        \item \isotope{18,O} heeft twee neutronen meer in de kern / \isotope{18,O} heeft dus een groter massagetal
        \item \isotope{O} komt meer dan 99\% voor / \isotope{18,O} komt slechts 0,20\% in de natuur voor
    \end{itemize}
\end{solution}

\vfill
\flushright{\textbf{\large Einde van de toets}}\flushleft

\gradingtable[template=student*]

\pagebreak

%=====================================
%   CORRECTIE
%=====================================
\setcounter{page}{1}

\subsection*{Correctiemodel}

\printsolutions

\gradingtable[template=docent*]

\end{document}

相关内容