Hintergrund-Info: die Überschriften von `exsheets` werden aus mehreren Boxen gebastelt: `main`, `number`, `title`, `subtitle` und `points`. Auch wenn sie in `expl3` »coffins« genannt werden, sind sie letztlich nichts anderes als vertikale oder horizontale Boxen. Abgesehen von der `main`-Box haben alle Boxen nur die Breite ihres Inhalts.
`subtitle-post-code` ist aus zwei Gründen keine gute Idee für die Platzierung der Zusatzinfo:
1. die `subtitle`-Box wird nur ausgegeben, wenn es auch einen Untertitel gibt. Gleiches gilt für den »Post-Code«.
2. die Breite der `subtitle`-Box hängt vom Inhalt der `subtitle`-Box ab. Das macht eine Positionierung, die unabhängig von dieser Breite geschehen soll, natürlich unnötig kompliziert.
## Lösung für Versionen >=0.20 ##
Ab [v0.20 (2015/11/18)][1] ist es möglich, einen eigenen statischen Container für Inhalte zu definieren, die einer Überschrift hinzugefügt werden sollen:
\DeclareQuestionClass{AFB}{AFBs}
\DeclareExSheetsHeadingContainer{AFB}
{\PrintQuestionClassT{AFB}{Schwierigkeit: #1}}
Dieser kann dann beim Definieren einer neuen `headings`-Instanz verwendet werden:
\DeclareInstance{exsheets-heading}{mystyle}{default}{
join = {
title[r,B]number[l,B](.333em,0pt) ;
title[r,B]subtitle[l,B](1em,0pt)
} ,
attach = {
main[l,vc]title[l,vc](0pt,0pt) ;
main[r,vc]points[l,vc](\marginparsep,0pt) ;
main[r,vc]AFB[r,vc](0pt,0pt)
}
}
Komplette Lösung:
\documentclass[paper=a4]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{exsheets}[2015/11/18]% v0.20
\DeclareQuestionClass{AFB}{AFBs}
\DeclareExSheetsHeadingContainer{AFB}
{\PrintQuestionClassT{AFB}{Schwierigkeit: #1}}
\DeclareInstance{exsheets-heading}{mystyle}{default}{
join = {
title[r,B]number[l,B](.333em,0pt) ;
title[r,B]subtitle[l,B](1em,0pt)
} ,
attach = {
main[l,vc]title[l,vc](0pt,0pt) ;
main[r,vc]points[l,vc](\marginparsep,0pt) ;
main[r,vc]AFB[r,vc](0pt,0pt)
}
}
\SetupExSheets{
headings = mystyle ,
question/type = exam
}
\begin{document}
\begin{question}[subtitle=Eine Frage, AFB=1]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[AFB=2]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[AFB=3]
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[subtitle=Eine andere Frage, AFB=4]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[subtitle=Eine Frage, AFB=2]
Das ist eine sehr tolle Frage.
\end{question}
\end{document}
## Lösung für Versionen <0.20 ##
Da die Ausgabe relativ zu den Punkten erfolgen soll, wäre eigentlich die erste Idee, den `points-pre-code` zu verwenden. Allerdings hätte auch das das Problem, nicht ausgegeben zu werden, wenn keine Punkte angegeben werden. Am besten also hängt man die Ausgabe an etwas, was auf jeden Fall ausgegeben wird. Ich würde den `title-pre-code` verwenden. Dort kann man mit `\rlap{...}` den Inhalt einfach rechts überlappen lassen, in einer Box, deren Breite der Zeilenbreite entspricht und rechts ausgerichtet ist `\makebox[\linewidth][r]{...}`.
![alt text][1]
text][2]
\documentclass[paper=a4]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{exsheets}
\DeclareInstance{exsheets-heading}{mystyle}{default}{
join = {
title[r,B]number[l,B](.333em,0pt) ;
title[r,B]subtitle[l,B](1em,0pt) ;
} ,
attach = {
main[l,vc]title[l,vc](0pt,0pt) ;
main[r,vc]points[l,vc](\marginparsep,0pt) ;
} ,
title-pre-code = {%
\PrintQuestionClassT{AFB}{\rlap{\makebox[\linewidth][r]{Schwierigkeit: #1}}}%
}
}
\SetupExSheets{
headings = mystyle ,
question/type = exam
}
\DeclareQuestionClass{AFB}{}
\begin{document}
\begin{question}[subtitle=Eine Frage, AFB=2]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[AFB=2]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[AFB=2]
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[subtitle=Eine andere Frage, AFB=2]{3}
Das ist eine sehr tolle Frage.
\end{question}
\begin{question}[subtitle=Eine Frage, AFB=2]
Das ist eine sehr tolle Frage.
\end{question}
\end{document}
[1]: https://bitbucket.org/cgnieder/exsheets/commits/tag/v0.20
[2]: http://texwelt.de/wissen/upfiles/exsheets_6.png