Chapter und Section durchnummerieren

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: Chapter und Section durchnummerieren

von iTob » Do 3. Nov 2011, 23:40

Alles klar, dann wäre das ja geklärt ist aber dem OP vermutlich eh egal gewesen … A pro pos @OP: Ist dein Problem gelöst?

von Stefan Kottwitz » Do 3. Nov 2011, 23:32

Genau wie Rainer sagt - \show\thechapter zeigt auch an:
 > \thechapter=\long macro:
->\csname Roman\endcsname {chapter}.
\@@maybeautodot testet jedoch direkt auf \Roman, u.a:
\ifx #1\Roman \@autodottrue\fi
Nun kann man notfalls auch diesen Test redefinieren und damit etwas verallgemeinern, er findet sich im Quellcode der Klasse.

Stefan

von rais » Do 3. Nov 2011, 23:23

iTob hat geschrieben:aber der Mechanismus, der im Hintergrund von \autodot feststellt ob dot oder nicht wird in meinem Beispiel offensichtlich ausgehebelt.
afaics wird per \@maybeautodot getestet, ob eine Zählerrepräsentation (z. B. \thechapter) \Alph, \Roman oder einer ihrer Artgenossen entspricht.
`\csname Roman \endcsname' wird von diesem Test nicht erfasst.
\newcommand{\secnumbering}[1]{%
  \setcounter{chapter}{0}%
  \setcounter{section}{0}%
  \expandafter\renewcommand\expandafter\thechapter\expandafter{\csname #1\endcsname{chapter}}%
  \renewcommand{\thesection}{\thechapter\csname #1\endcsname{section}}%
}
so (o.ä.) sollte zumindest bei \thechapter z. B. `\csname Roman\endcsname' erst zu `\Roman' expandiert werden, bevor es im Befehl landet -- und damit sollte der \autodot-Mechanismus auch wieder greifen.

MfG
Rainer

von iTob » Do 3. Nov 2011, 22:34

Soweit so klar, auch \autodot habe ich gefunden aber der Mechanismus, der im Hintergrund von \autodot feststellt ob dot oder nicht wird in meinem Beispiel offensichtlich ausgehebelt.

von Stefan Kottwitz » Do 3. Nov 2011, 21:32

Kann man sicher anpassen. Ich hatte auch eher auf Jens' Beispiel Bezug genommen, wo etwas Weglassen etwas half.

Ansonsten kann man ja mal in den Klassen-Code schauen, \autodot\enskip wird nicht direkt in \thechapter verwendet, sondern in \chapterformat und \chaptermarkformat zusätzlich zu \thechapter, während z.B. \thesection explizit den Punkt hinter \thechapter setzt. Das bedeutet, der Punkt gehört per Design nicht in \thechapter hinein.

Stefan

von iTob » Do 3. Nov 2011, 21:20

Ja gut. Aber die Idee von meinem Code war ja, dass die Art der Ziffern sich analog zu \pagenumbering in einem Schritt anpassen lässt. Ich vermute mal dass man mit meinem Weg die Stelle, an der KOMA-Script prüft, ob es einen Punkt setzten muss oder nicht, übergeht und deswegen der Automatismus nicht funktioniert.

von Stefan Kottwitz » Do 3. Nov 2011, 19:22

iTob hat geschrieben:Hm … also wenn ich diesen Code
...
beliebig oft durchlaufen lasse erhalte ich einfach keinen Punkt. Geht es bei dir mit genau diesem Beispiel?
Ja, bei mir ist das genauso. Jedoch hast Du auch diese Zeile weggelassen, die Jens im Code hat:
\renewcommand\thechapter{\Roman{chapter}}%
Wenn Du diese wieder hineinmachst, schwenkt die Klasse auf Nummerierung mit Punkt, bei mir.

Stefan

von rais » Do 3. Nov 2011, 19:03

Moin moin,
fuchsmeister hat geschrieben:
\sectionnumbering{Roman}


\begin{document}

\tableofcontents

\newpage
\pagenumbering{arabic}
\sectionnumbering{arabic}
ich habe noch nicht verstanden, wozu Du Dir überhaupt die Mühe machst, \thesection umzudefinieren, zumal hier zwischen \sectionnumbering{Roman} und \sectionnumbering{arabic} gar kein Abschnitt gesetzt wird.
Tut es nicht bereits
\documentclass[11pt,  headincluded, listof=totoc, listof=numbered, bibliography=totoc, listof=totocnumbered]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\setuptoc{toc}{numbered}
\renewcommand*\thechapter{\Roman{chapter}}
\pagenumbering{roman}
\begin{document}
\tableofcontents
\listoffigures
\clearpage
\pagenumbering{arabic}%
\renewcommand*\thechapter{\arabic{chapter}}\setcounter{chapter}{0}%
\chapter{Kapitel 1}
\label{chp:kapitel1}
\begin{figure}
\centering
\resizebox{0.5\linewidth}{0.2\textheight}{Testbild}
\caption{in Bild}
\end{figure}
\chapter{Kapitel 2}
\label{chp:kapitel2}
\section{Abschnitt 1}
\label{sec:abschnitt1}
\subsection{Abschnitt 2}
\label{sec:abschnitt2}

Wie man in Unterabschnitt \ref{sec:abschnitt2} sieht ...
\end{document}
?

MfG
Rainer

von iTob » Do 3. Nov 2011, 18:48

Hm … also wenn ich diesen Code
\documentclass{scrreprt} 
\usepackage[ngerman]{babel} 

\setuptoc{toc}{numbered}
\newcommand{\secnumbering}[1]{% 
  \setcounter{chapter}{0}% 
  \setcounter{section}{0}% 
  \renewcommand{\thechapter}{\csname #1\endcsname{chapter}}% nach Duden gehört 
                                  % der Punkt hier hin bei gemischten Zählungen 
  \renewcommand{\thesection}{\thechapter\csname #1\endcsname{section}}% 
} 

\pagenumbering{roman} 
\secnumbering{Roman} 
\begin{document} 

\tableofcontents 
\chapter{Test}

\pagenumbering{arabic} 
\secnumbering{arabic} 

\chapter{Kapitel 1} 
\label{chp:kapitel1} 
\chapter{Kapitel 2} 
\label{chp:kapitel2} 
\section{Abschnitt 1} 
\label{sec:abschnitt1} 
\subsection{Abschnitt 2} 
\label{sec:abschnitt2} 

Wie man in Kapitel \ref{sec:abschnitt2} sieht ... 
\end{document} 
beliebig oft durchlaufen lasse erhalte ich einfach keinen Punkt. Geht es bei dir mit genau diesem Beispiel?

von Stefan Kottwitz » Do 3. Nov 2011, 18:31

Hi Tobi,

ich hatte das getestet, denn Jens hatte ja ein komplettes Minimalbeispiel angegeben. Beim Testlauf ist der Punkt nach dem ersten Übersetzen verschwunden, nach dem zweiten Übersetzen war er dann da.

Man kann auch nur den Punkt in der genannten Zeile entfernen und die Klassenoption numbers=endperiod setzen.

Stefan

Nach oben