Datenumber in section (Kollision mit calc?)

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Tael
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Do 8. Jul 2010, 10:47

Datenumber in section (Kollision mit calc?)

Beitrag von Tael »

Guten Tag zusammen,

Ich würde gerne eine Überschrift generieren die automatisch Tage und Wochen hochzählt.

Beispiel:
Woche 1: x.x.x bis y.y.y
Dazu verwende ich das Paket datenumber. Zusätzlich würde ich gerne das Paket calc verwenden, da ich an manchen Stellen dessen Rechenfähigkeiten benötige.

In meinem Minimalbeispiel (siehe unten) habe ich das ein wenig vereinfacht dargestellt.
Dabei tritt kein Fehler auf wenn entweder:
- calc nicht geladen wird und section nummeriert wird (also ohne *)
- calc aktiviert wird und section nicht nummeriert wird

Leider kein ich mit der Fehlermeldung (siehe unten) rein garnichts anfangen und bitte euch deshalb um Hilfe.

Latexdistribution: MikTex 2.9 (portable)
Editor: TexMaker (portable)

Grüße
Tael




Minimalbeispiel:
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{datenumber}
%\usepackage{calc}



\setstartyear{2012}
\setdate{2012}{1}{16}%



\begin{document}


\section%
{%
\thedateday .\thedatemonth . bis %1. Tag
%
\addtocounter{datenumber}{4}%4 Tage weiter zählen
\setdatebynumber{\thedatenumber}
%
\thedateday .\thedatemonth . %5. Tag
}%

\end{document}
Fehlermeldung:
! Undefined control sequence.
\@calc@post@scan ...st@scan \else \def \calc@next
{\calc@error #1}\fi \fi \f...
l.25 }

Edit: Inzwischen konnte ich das Problem weiter eingrenzen. Es tritt genau dann auf, wenn das paket calc geladen wird und irgendwie meint es müsste aktiv werden bei einer Überschrift:

So (also ohne calc) funktioniert es.
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%\usepackage{calc}


\newcounter{Zaehler}


\begin{document}

\section{\addtocounter{Zaehler}{1}\theZaehler}

\end{document}

Und so nicht:
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{calc}


\newcounter{Zaehler}


\begin{document}

\section{\addtocounter{Zaehler}{1}\theZaehler}

\end{document}

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: Datenumber in section (Kollision mit calc?)

Beitrag von rais »

Moin moin,
Tael hat geschrieben: Edit: Inzwischen konnte ich das Problem weiter eingrenzen. Es tritt genau dann auf, wenn das paket calc geladen wird und irgendwie meint es müsste aktiv werden bei einer Überschrift:

[...]
Und so nicht:
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{calc}


\newcounter{Zaehler}


\begin{document}

\section{\addtocounter{Zaehler}{1}\theZaehler}

\end{document}
\addtocounter ist ein zerbrechlicher -- bzw.mit Verwendung des calc-Pakets ein noch zerbrechlicherer -- Befehl.
Wenn Du diesen wirklich innerhalb eines beweglichen Arguments wie hier beim \section-Befehl nutzen willst, stelle einfach ein \protect voran.
Überlege Dir dabei aber auch gleich, was dann bei etwaiger Verwendung von \tableofcontents geschehen könnte, denn dann rufst Du diesen \addtocounter zweimal auf.;)
Und mit etwaigen Kopfzeilen, die die Abschnittsüberschrift tragen, bekommst Du wohlmöglich ein ähnlich gelagertes Problem nochmal...
Dann ist es vermutlich besser, die Zuweisung einmalig vor der Abschnittsüberschrift zu machen, etwa
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[ngerman]{datenumber}
\usepackage{calc}

\setstartyear{2012}
\setdate{2012}{1}{16}%

\newcommand*\vondatum{}
\newcommand*\bisdatum{}
\newcommand*\setzedaten[1]{%
  \edef\vondatum{\thedateday.\thedatemonth.}%
  \addtocounter{datenumber}{#1}%
  \setdatebynumber{\thedatenumber}%
  \edef\bisdatum{\thedateday.\thedatemonth.}%
}
\begin{document}
\tableofcontents

\setzedaten{4}%
\section{\vondatum{} bis \bisdatum}

\end{document}
Wenn weder TOC noch Kopfzeilen eine Rolle spielen, ginge vermutlich auch einfach
\section[Überschrift ohne]{Überschrift mit \addtocounter}
MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Antworten