我的代码是:
\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
在那里),或者从我的一个答案中复制粘贴的,直到它找到你。
我原来的回答是错误的,我已将其删除。
您无法将within
和the-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}