xsim 在自己的练习环境中按章节编号

xsim 在自己的练习环境中按章节编号

我的代码是:

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

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

\usepackage[%
    blank,%With this option enabled xsim will not dene the default environments exercise 
]{xsim}
\DeclareExerciseProperty{level}
\DeclareExerciseProperty{symbole}
\DeclareExerciseProperty{notenstufe}
\DeclareExerciseEnvironmentTemplate{aufgabe-template}{%
    \tcolorbox[
      parbox=false,
      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
      colback=white,%Hintergrundfarbe
      %colbacktitle=white,%Hintergrundfarbe im Titel
      coltitle=white,%Schriftfarbe im Titel
      beforeafter skip = .5\baselineskip,
      title ={
        \textbf{\GetExerciseName~\GetExerciseProperty{section}.\GetExerciseProperty{counter}}%Aufgabe mit Nummer ausgeben
        \GetExercisePropertyT{level}{ Level:\PropertyValue}%evtl. Level mit Knödeln anzeigen
        \GetExercisePropertyT{symbole}{ \PropertyValue}%evtl. Symbole anzeigen
        \GetExercisePropertyT{notenstufe}{ (N:\PropertyValue)}%evtl. Symbole anzeigen
        \IfInsideSolutionF{%Wenn nicht(F=False) in der Lösung
            \GetExercisePropertyT{points}{ % notice the space
                (%
                \printgoal{\PropertyValue}
                \IfExerciseGoalSingularTF{points}
                    {\XSIMtranslate{point}}
                    {\XSIMtranslate{points}}%
                )%
            }%
        }%
        \GetExercisePropertyT{subtitle}{\\\PropertyValue}%evtl Subtitle 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 plus2pt minus2pt}%
}
{\endtcolorbox}
\DeclareExerciseType{Aufgabe}{
    exercise-env = n-Aufgabe,
    solution-env = n-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,
    counter=counter-aufgabe,
    within=section,
    the-counter = \thesection.\arabic{counter-aufgabe}
}




\begin{document}
\chapter{Chapter 1}
\section{Section 1.1}
%====================================================================
\begin{n-Aufgabe}[%
    level=1,%
    %symbole=,%
    subtitle={Subtitle 1},%
    notenstufe=2,%
    points=1,%
]
Exercise Text 1
\end{n-Aufgabe}
\begin{n-Solution}
Solution Text 1
\end{n-Solution}


\begin{n-Aufgabe}[%
    level=1,%
    %symbole=,%
    subtitle={Subtitle 2},%
    notenstufe=2,%
    points=2,%
]
Exercise Text 2
\end{n-Aufgabe}
\begin{n-Solution}
Solution Text 2
\end{n-Solution}



\section{Section 1.2}
%==========================================================================
\begin{n-Aufgabe}[%
    level=3,%
    %symbole=,%
    subtitle={Subtitle 3},%
    notenstufe=4,%
    points=20,%
]
Exercise Text 3
\end{n-Aufgabe}
\begin{n-Solution}
Solution Text 3
\end{n-Solution}


\begin{n-Aufgabe}[%
    level=2,%
    %symbole=,%
    subtitle={Subtitle 4},%
    notenstufe=1,%
    %points=,%
]
Exercise Text 4
\end{n-Aufgabe}
\begin{n-Solution}
Solution Text 4
\end{n-Solution}

\end{document}

目标是练习的计数器(德语:Aufgabe)在每个部分都重新开始:

第一章

1.1 第 1.1 节

版本 1.1.1

版本 1.1.2

1.2 第 1.2 节

版本 1.2.1

升级 1.2.2

做到这一点的最好方法是什么?

使用

counter = counter-aufgabe,
within = section,
the-counter = \ thesection. \ arabic {counter-aufgabe}

对我来说不是很清楚。我缺少一个可行的示例。我发现的大多数分段编号示例都是基于标准 xsim 环境的。我不得不关闭标准环境(选项:xsim 的“空白”,见上文),因为我已经自己定义了一个名为“exercise”的环境,因此该环境的名称不再是自由的。

答案1

我总是对互联网上的东西感到惊奇。我以前从未见过代码,但我认出了那里的一条我自己的评论(% notice the space)可能是从文件中复制粘贴的xsim.style.layouts.code.tex(或者不是,它是% <<< notice the space在那里),或者从我的一个答案中复制粘贴的,直到它找到你。


我原来的回答是错误的,我已将其删除。


您无法将withinthe-counter作为 中的参数\DeclareExerciseType。遗憾的是未定义parameters该命令会忽略 undefined。下一版本将在这些情况下抛出错误。

within和都the-counter仅作为选项存在,可以使用 进行设置\xsimsetup

\documentclass{book}
\usepackage[blank]{xsim}

\DeclareExerciseType{Aufgabe}{
  exercise-env = n-Aufgabe,
  solution-env = n-Solution,
  exercise-name = Aufgabe,
  solution-name = Lösung von Aufgabe,
  exercise-template = default ,
  solution-template = default ,
  counter=counter-aufgabe
}

\xsimsetup{
  n-Aufgabe/within=section ,
  n-Aufgabe/the-counter = \thesection.\arabic{counter-aufgabe}
}

\begin{document}

\chapter{Chapter 1}
\section{Section 1.1}
\begin{n-Aufgabe}
  Exercise Text 1
\end{n-Aufgabe}
\begin{n-Aufgabe}
  Exercise Text 2
\end{n-Aufgabe}

\section{Section 1.2}
\begin{n-Aufgabe}
  Exercise Text 3
\end{n-Aufgabe}
\begin{n-Aufgabe}
  Exercise Text 4
\end{n-Aufgabe}

\end{document}

在此处输入图片描述

相关内容