Aufsummieren von Punkten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Aufsummieren von Punkten

von cgnieder » So 29. Jun 2014, 23:04

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

von Latex_User_2014 » Fr 27. Jun 2014, 07:42

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

von cgnieder » Do 26. Jun 2014, 22:06

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

von Latex_User_2014 » Fr 20. Jun 2014, 11:09

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

von Latex_User_2014 » Fr 20. Jun 2014, 10:51

Hallo Forum und Co.,

habe eine halbfertige Lösung zum präsentieren:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fp}
\usepackage{siunitx}
\usepackage{lastpage}

\FPset\Summe{0}
\newcounter{t1}

\newcommand{\Frage}[2]{
	\stepcounter{t1}
	\textbf{\arabic{t1}. #1
	(Punkt(e)~#2~P)}
	\FPadd\Summe{\Summe}{#2}
	}
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\Summenwert{\FPprint\Summe}}}
\makeatother
\ifx\Summenwert\undefined
  \def\Summenwert{0.0}
\fi
\newcommand*\dieSumme{%
  \num[round-mode=places, round-precision=1]{\Summenwert}%
}
\begin{document}

Jetzt stimmt die maximale Anzahl der Punkte!
Max. Punkte: \dieSumme


\Frage{Hier gibt es die ersten Punkte und zwar:}{1.5}

\Frage{Nun kommen noch Punkte hinzu.}{2.5}

\end{document}
Jetzt muss ich nur noch Kategorien einfügen und abfragen nach folgendem Schema:
\Frage{Beantworten Sie die Frage?}{A}{1.5}
\Frage{Beantworten Sie die Frage?}{A}{2.5}
\Frage{Beantworten Sie die Frage?}{B}{0.5}
\Frage{Beantworten Sie die Frage?}{C}{3}
Die Zeit läuft tick, tick, tick...

Euer Latex_User_2014

von Johannes_B » Fr 20. Jun 2014, 10:30

Workaround:
\newcommand{\Frage}[1]{\bfseries #1\par\normalfont}
Aber versuch nicht das Rad neu zu erfinden. Lies dich mal in exsheets ein. Es gibt massenhaft Optionen, und wenn du ein Feature-Request hast, dann kümmert sich Clemens bestimmt gern darum.

von Latex_User_2014 » Fr 20. Jun 2014, 10:11

Hallo Johannes_B,

danke für die Hilfe. Aber woran lag es nun? Ich werde es mal erneut ausprobieren.

Und ich habe noch ein anderes Problem generiert:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fp}
\usepackage{siunitx}
\usepackage{lastpage}

\FPset\Summe{0}

\newcommand{\Frage}[1]{\textbf{#1}}
\newcommand{\Punkte}[1]{
   (Punkt(e)~#1~P)
   \FPadd\Summe{\Summe}{#1}
   }
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\Summenwert{\FPprint\Summe}}}
\makeatother
\ifx\Summenwert\undefined
  \def\Summenwert{0.0}
\fi
\newcommand*\dieSumme{%
  \num[round-mode=places, round-precision=1]{\Summenwert}%
}
\begin{document}

Hier stimmt die maximale Anzahl der Punkte nicht!
Max. Punkte: \dieSumme

%\section{Alter Abschnitt}

\Frage{Hier gibt es die ersten Punkte und zwar: \Punkte{1.5}}

\Punkte{1.5}

\end{document} 
Habe auch schon ##1 für \Punkte ausprobiert, nach
http://www.tex.ac.uk/cgi-bin/texfaq2html?label=ltxhash!
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fp}
\usepackage{siunitx}
\usepackage{lastpage}

\FPset\Summe{0}

\newcommand{\Frage}[1]{\textbf{#1}
\newcommand{\Punkte}[1]{
   (Punkt(e)~##1~P)
   \FPadd\Summe{\Summe}{##1}
   }}
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\Summenwert{\FPprint\Summe}}}
\makeatother
\ifx\Summenwert\undefined
  \def\Summenwert{0.0}
\fi
\newcommand*\dieSumme{%
  \num[round-mode=places, round-precision=1]{\Summenwert}%
}
\begin{document}

Hier stimmt die maximale Anzahl der Punkte nicht!
Max. Punkte: \dieSumme

%\section{Alter Abschnitt}

\Frage{Hier gibt es die ersten Punkte und zwar: \Punkte{1.5}}

\end{document} 
Wohl gemerkt ohne Erfolg!

Vielen Dank für eure Geduld!

von Johannes_B » Fr 20. Jun 2014, 09:23

Naja, also irgendwie ...
Clemens hat sich bei dem Paket schon was gedacht ;-)
\documentclass{article}
\usepackage{exsheets}
\begin{document}
\begin{tabular}{|l|c|}
	\hline
	Max. Punkte & \totalpoints \\
	\hline
	Punkte & \\
	\hline
\end{tabular}

Insgesamt \totalpoints

\begin{question}{3}
	Welcher Tag ist heute?
\end{question}
\begin{question}{1}
	Wie spät ist es?
\end{question}
\begin{question}{17}
	Wie heißen Sie?
\end{question}
\end{document}

von Latex_User_2014 » Fr 20. Jun 2014, 09:06

Hallo User,

vorläufige Anmerkungen:

Bei exsheets kann ich die Tabelle der Punkte nicht vorab ausgeben lassen.

Habe das Problem, der Einbindung externen *.tex-Dateien lokalisiert!
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fp}
\usepackage{siunitx}
\usepackage{lastpage}

\FPset\Summe{0}
\newcommand{\Punkte}[1]{
   [Punkt(e)~#1~P]  
   \FPadd\Summe{\Summe}{#1}
   }
\makeatletter
\AtEndDocument{%
  \immediate\write\@auxout{\string\gdef\string\Summenwert{\FPprint\Summe}}}
\makeatother
\ifx\Summenwert\undefined
  \def\Summenwert{0.0}
\fi
\newcommand*\dieSumme{%
  \num[round-mode=places, round-precision=1]{\Summenwert}%
}
\begin{document}

Hier soll bereits die maximale Anzahl Punkte stehen!
Max. Punkte: \dieSumme

\begin{tabular}{|l|c|}
		\hline
		Max. Punkte & \dieSumme \\
		\hline
		Punkte & \\
		\hline
		\end{tabular}

\section{Neuer Abschnitt. \Punkte{2.5}}

\Punkte{2.5}

\Punkte{10}

\Punkte{2}

Sie wird aber erst hier ausgegeben. Erscheint logisch unter der Betrachtung, dass die Aufsummierung schrittweise nach Aufruf erfolgt.

Max. Punkte: \Summe

Jedoch kann man sich mit dem package{lastpage} die Seitenzahl \pageref{LastPage} des Dokumentes vorab ausgeben lassen!

P.S. Und die Nullen nerven auch.

\end{document} 
Kann es folglich nicht in /section benutzen, wo ich es aber brauche.

Jemand eine Idee?

Danke für alle Antworten.

Euer Latex_User_2014

von Latex_User_2014 » Fr 20. Jun 2014, 07:44

Hallo Rainer und alle anderen Interessenten,

habe doch noch ein Problem entdeckt.

Wenn ich mit /input weitere *.tex-Dateien einlade und da wiederum die Punkte haben möchte, funktioniert es nicht. Nichstdestotrotz werde ich das Paket exsheets nochmal ausprobieren.

Vielleicht finde ich eine Lösung!?!?!?

Euer Latex_User_2014

Nach oben