Hallo TeXWelt-Gemeinde,

ich würde gerne bei einer Klassenarbeit mit exsheets die QuestionClass nach dem subtitle einer Frage rechtsbündig ausgeben.

Das reine Ausgeben ist kein Problem, nur das rechtsbündig bereitet mir noch Probleme.

Open in Online-Editor
\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) ;
    } ,
    subtitle-post-code = {
        \PrintQuestionClassT{AFB}{Schwierigkeit: #1 }
    } ,
}

\SetupExSheets{%
    headings=mystyle
}

\DeclareQuestionClass{AFB}{}

\begin{document}

\begin{question}[type=exam,subtitle=Eine Frage, AFB=2]{3}
Das ist eine sehr tolle Frage.
\end{question}

\end{document}

Die Notiz im Beispiel "Schwierigkeit: 2)" soll nun rechtsbündig mit etwas Abstand vor den Punkten stehen. Leider zeigt \raggedleft keine Wirkung.

Bin für Ideen dankbar.

Grüße!

gefragt 05 Nov '15, 13:40

maphy-psd's gravatar image

maphy-psd
316213
Akzeptiert: 71%


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) ist es möglich, einen eigenen statischen Container für Inhalte zu definieren, die einer Überschrift hinzugefügt werden sollen:

Open in Online-Editor
\DeclareQuestionClass{AFB}{AFBs}
\DeclareExSheetsHeadingContainer{AFB}
  {\PrintQuestionClassT{AFB}{Schwierigkeit: #1}}

Dieser kann dann beim Definieren einer neuen headings-Instanz verwendet werden:

Open in Online-Editor
\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:

Open in Online-Editor
\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

Open in Online-Editor
\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}
Permanenter link

beantwortet 06 Nov '15, 04:33

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 18 Nov '15, 05:54

Danke für Antwort. Habe selbst grad mit points-pre-code herumprobiert. Aber die Antwort ist natürlich robuster.

Wäre es vielleicht möglich, dass DeclareInstance ebenfalls »coffins« erstellt, sodass sie mithilfe von join oder attach verwendet werden können? Wobei das eventuell die wenigsten benötigen.

(06 Nov '15, 04:38) maphy-psd

Das geht nicht ohne weiteres, weil exsheets dafür keine Schnittstelle bereitstellt…

(06 Nov '15, 04:50) Clemens

@maphy-psd in wenigen Tagen wird v0.20 in TeX Live enthalten sein, mit der Du eine neue Möglichkeit hast, siehe überarbeitete Antwort.

(18 Nov '15, 05:55) Clemens

@Clemens danke für die Info. Das macht das layouten einfacher.

(18 Nov '15, 06:56) maphy-psd
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×4
×1

Frage gestellt: 05 Nov '15, 13:40

Frage wurde angeschaut: 1,070 Mal

Zuletzt aktualisiert: 18 Nov '15, 06:56