Aufsummieren von Punkten

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Latex_User_2014
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 17. Jun 2014, 15:58

Beitrag von Latex_User_2014 »

Hallo Forum,

mittlerweile habe ich dieses Problem auf eine sehr unschöne Art gelöst.
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fp}
\usepackage{siunitx}
\usepackage{lastpage}

\FPset\SummeA{0}
\FPset\SummeB{0}
\newcounter{tA}
\newcounter{tB}

\newcommand{\FrageA}[2]{
	\stepcounter{tA}
	\textbf{\arabic{tA}. #1
	(Punkt(e)~#2~P)}
	\FPadd\SummeA{\SummeA}{#2}
	}
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\SummenwertA{\FPprint\SummeA}}}
\makeatother
\ifx\SummenwertA\undefined
  \def\SummenwertA{0.0}
\fi
\newcommand*\dieSummeA{%
  \num[round-mode=places, round-precision=1]{\SummenwertA}%
}

\newcommand{\FrageB}[2]{
	\stepcounter{tB}
	\textbf{\arabic{tB}. #1
	(Punkt(e)~#2~P)}
	\FPadd\SummeB{\SummeB}{#2}
	}
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\SummenwertB{\FPprint\SummeB}}}
\makeatother
\ifx\SummenwertB\undefined
  \def\SummenwertB{0.0}
\fi
\newcommand*\dieSummeB{%
  \num[round-mode=places, round-precision=1]{\SummenwertB}%
}

\begin{document}

Jetzt stimmt die maximale Anzahl der Punkte!

\begin{tabular}{|l|c|c|}
		\hline
		Aufgabe & ~A~ & ~B~\\
		\hline
		Max. Punkte & \dieSummeA & \dieSummeB\\
		\hline
		\end{tabular}
\section{Fragen A}
\FrageA{Hier gibt es die ersten Punkte A}{1.5}\\
\FrageA{Hier gibt es die zweiten Punkte A}{1.5}
\section{Fragen B}
\FrageB{Nun kommen Punkte zu B}{2.5}

\end{document}
ABER es funktioniert. Würde mich jedoch sehr freuen wenn mir jemand das ganze mit exsheets oder über eine if-Abfrage der Kategorien, wie ursprünglich geplant, erklären kann. Habe die if-Abfrage erst mal gescheut weil ich letztendlich noch die Summe der Kategorien bilden muss.

Ihr seht gemeinsam sind wir stark ;-)

Freue mich schon auf die Verbesserungsvorschläge.

Euer Latex_User_2014

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Ich muss gestehen, dass mir nicht so völlig klar ist, worauf Du letztendlich am Schluss hinausmöchtest... jedenfalls hab ich den Code von Deinem letzten Post mal mit exsheets nachgebastelt (mit anderem Layout zwar, aber das lässt sich ja einstellen):
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{exsheets}
\SetupExSheets{
  question/name  = Fragen ,
  counter-format = qu[A]
}
\settasks{
  counter-format = tsk. ,
  before-skip = \baselineskip
}

\usepackage{marginnote}
% write points to the margin and save them:
\newcommand*\setpoints[1]{\marginnote{\addpoints{#1}}}

% a few tricks needed to save the current question number in the aux file --
% should probably be added to exsheets:
\DeclareQuestionProperty{number}
\ExplSyntaxOn
\AtEndEnvironment{question}
  {
    \eSaveCounterPatternFrom[exsheets]
      \l__exsheets_tmpa_tl
      \l__exsheets_tmpb_tl
      \l__exsheets_qu_counter_pattern_tl
    \exp_args:Nx \SetQuestionProperties
      { number = \l__exsheets_tmpb_tl }
  }
\ExplSyntaxOff

\begin{document}

\begin{center}
  \begin{tabular}{|l|c|c|}
    \hline
      Aufgabe
        & \GetQuestionProperty{number}{erste}
        & \GetQuestionProperty{number}{zweite} \\
    \hline
      Max. Punkte
        & \GetQuestionProperty{points}{erste}
        & \GetQuestionProperty{points}{zweite} \\
    \hline
  \end{tabular}
\end{center}
  
\begin{question}[ID=erste]
  \begin{tasks}
    \task\setpoints{1.5} Hier gibt es die ersten Punkte
      \QuestionNumber{erste}.
    \task\setpoints{1.5} Hier gibt es die zweiten Punkte
    \QuestionNumber{erste}.
  \end{tasks}
\end{question}

\begin{question}[ID=zweite]
  \begin{tasks}
    \task\setpoints{2.5} Nun kommen Punkte zu \QuestionNumber{zweite}.
  \end{tasks}
\end{question}

\end{document}
Grüße
Clemens
Paketauthor

Latex_User_2014
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 17. Jun 2014, 15:58

Beitrag von Latex_User_2014 »

Hallo Clemens,

vielen Dank für die Mühe. Ich freue mich, dass meine Probleme so schnell und kompetent gelöst wurden.

MfG

Latex_User_2014

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Mit Version 0.14, die gerade veröffentlicht wurde, ist es einfacher:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{exsheets}[2014/06/28]
\SetupExSheets{
  question/name  = Fragen ,
  counter-format = qu[A]
}
\settasks{
  counter-format = tsk. ,
  before-skip = \baselineskip
}

\usepackage{marginnote}
% write points to the margin and save them:
\newcommand*\setpoints[1]{\marginnote{\addpoints{#1}}}

\begin{document}

\begin{center}
  \begin{tabular}{|l|*{\numberofquestions}{c|}c|}
    \hline
      Aufgabe &
      \ForEachQuestion{\GetQuestionProperty{counter}{#1}\iflastquestion{}{&}} &
      Insgesamt \\
    \hline
      Max. Punkte &
      \ForEachQuestion{\GetQuestionProperty{points}{#1}\iflastquestion{}{&}} &
      \pointssum* \\
    \hline
  \end{tabular}
\end{center}
  
\begin{question}[ID=erste]
  \begin{tasks}
    \task\setpoints{1.5} Hier gibt es die ersten Punkte
      \QuestionNumber{erste}.
    \task\setpoints{1.5} Hier gibt es die zweiten Punkte
    \QuestionNumber{erste}.
  \end{tasks}
\end{question}

\begin{question}[ID=zweite]
  \begin{tasks}
    \task\setpoints{2.5} Nun kommen Punkte zu \QuestionNumber{zweite}.
  \end{tasks}
\end{question}

\begin{question}[ID=dritte]
  \begin{tasks}
    \task\setpoints{3.75} Nun kommen Punkte zu \QuestionNumber{dritte}.
    \task\setpoints{1} Mehr Punkte zu \QuestionNumber{dritte}.
  \end{tasks}
\end{question}

\begin{question}[ID=vierte]
  \begin{tasks}
    \task\setpoints{1} Nun kommen Punkte zu \QuestionNumber{vierte}.
  \end{tasks}
\end{question}

\end{document}
Grüße
Clemens
Paketauthor

Antworten