Archiv verlassen und diese Seite im Standarddesign anzeigen : Seltsames Section-Verhalten nach Anpassung der article.cls
Stoppl11
27-08-2007, 13:54
Hallo zusammen,
Ich bin erst vor kurzem in die Latex-Welt eingestiegen und habe jetzt ein Problem das ich nicht lösen kann:
Ich habe Latex-Templates entworfen (von article abgeleitet). Nun musste ich doch Überschrifthierarchien bis Level 8 unterstützen und habe deshalb die article.cls angepasst: Habe einfach die counter und commands für subsection bzw. subsubsection kopiert und meine neuen Levels eingefügt.
Das funktioniert auch so weit. Die Sektionen werden auf korrektem Level angezeigt und nummeriert. PROBLEM: die Sektionsüberschrift wird im Body des Ebschnitts nocheinmal widerholt! Warum ist das so und wie kann man das ändern?
Muster:
\subsubsubsection{Überschrift}
restlicher Body-Text
erzeugt:
1.1.1.1 Überschrift
Überschrift :confused:
restlicher Body-Text
Kann mir hier wer helfen?
Wäre wirklich dankbar.
Grüße,
Stefan
Details - anpassungen in article.cls:
\newcounter {subsubsubsection}[subsubsection]
\renewcommand \thesubsubsubsection{\thesubsubsection .\@arabic\c@subsubsubsection}
\newcommand\subsubsubsection{\@startsection{subsub subsection}{4}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\newcommand*\l@subsubsubsection{\@dottedtocline{4} {3.8em}{3.2em}}
Stoppl11
28-08-2007, 09:26
Hallo nochmal,
Ich habe jetzt etwas herumprobiert und der Fehler liegt definitiv nur am geschriebenen Code und nicht an der article.cls.
Anstatt die article.cls zu verändern habe ich jetzt ein eigenes file erzeugt (myheadings.sty) und das eingebunden - mit dem gleichen Ergebnis.
Code in myheadings.sty:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{myheadings}[2007/08/28]
\newcounter {subsubsubsection}[subsubsection]
\newcounter {subXsection}[subsubsubsection]
\newcounter {subXsubsection}[subXsection]
\newcounter {subXsubsubsection}[subXsubsection]
\renewcommand \thesubsubsubsection{\thesubsubsection .\@arabic\c@subsubsubsection}
\renewcommand \thesubXsection{\thesubsubsubsection .\@arabic\c@subXsection}
\renewcommand \thesubXsubsection{\thesubXsection .\@arabic\c@subXsubsection}
\renewcommand \thesubXsubsubsection{\thesubXsubsection .\@arabic\c@subXsubsubsection}
\newcommand\subsubsubsection{\@startsection{subsub subsection}{4}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\newcommand\subXsection{\@startsection{subXsection }{5}{\z@}%
{-2.25ex\@plus -1ex \@minus -.2ex}%
{1.0ex \@plus .2ex}%
{\normalfont\large\bfseries}}
\newcommand\subXsubsection{\@startsection{subXsubs ection}{6}{\z@}%
{-2.25ex\@plus -1ex \@minus -.2ex}%
{1.0ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\newcommand\subXsubsubsection{\@startsection{subXs ubsubsection}{7}{\z@}%
{-2.25ex\@plus -1ex \@minus -.2ex}%
{1.0ex \@plus .2ex}%
{\normalfont\normalsize}}
Dieser Code erzeugt immer:
1.1.1.1 Überschrift
Überschrift
Body
1.1.1.1.1 Überschrift
Überschrift
Body
...u.s.w.
Wieso erzeugt der obige code dieses Verhalten? Wie kann man das Wiederholen der Überschrift abstellen?
Danke für jegliche Hilfe!
Stefan
sommerfee
28-08-2007, 11:23
Hallo Stefan,
Du hast vergessen, die passenden "mark"-Befehle zu definieren. Sind sie nicht vorhanden, so werden sie intern in \@startsection als \relax interpretiert, was zur Folge hat, daß das Argument ausgegeben anstatt ausgewertet wird - was deine doppelte Ausgabe erklärt.
Hast du dir schon'mal ftp://ftp.dante.de/tex-archive/macros/latex/base/classes.dtx angeschaut? In diesem Dokument sind die Zusammenhänge dargelegt. Auch ftp://ftp.dante.de/tex-archive/macros/latex/doc/clsguide.pdf dürfte für dich interessant sein.
Auch kannst du dich wegen \subsubsubsection etc. an \paragraph und \subparagraph orientieren, die ja im Prinzip das gleiche in grün sind, also immerhin 2 weitere Gliederungsebenen bereitstellen.
Liebe Grüße,
Axel
Stoppl11
28-08-2007, 13:55
Erst Mal danke für Antwort!
Habe mir jetzt die classes.dtx Mal angesehen. Ins Auge gestochen sind dabei vor allem 2 Stellen:
Die Definitionen von sectionmark und subsectionmark (\def\subsectionmark##1 etc.)
Der Verweis auf die latex.dtx für die \subsubsection{Mark commands} (in einem macro: \newcommand*\subsectionmark[1]{} etc.)
Außerdem gibt es @gobble commands und in article.cls kommen auch marks für section und subsection vor.
Ich bin mir leider nicht im Klaren wo ich ansetzen soll. Wo soll die markdefinition hin, wie sieht sie aus und wie wird sie mit den neu definierten Kapiteln verbunden?
sorry falls ich zu sehr auf der Leitung stehe...
P.S. paragraph und subparagraph mit Kapitelnummern zu versehen habe ich auch schon versucht, allerdings brauche ich dann doch noch mehr Unterebenen...
sommerfee
28-08-2007, 14:23
Hallo Stefan,
Ich bin mir leider nicht im Klaren wo ich ansetzen soll. Wo soll die markdefinition hin, wie sieht sie aus und wie wird sie mit den neu definierten Kapiteln verbunden?
Definiere einfach \subsubsubsectionmark analog zu \subsubsectionmark aus classes.dtx/article.cls etc. Diese Makros werden automatisch von \@startsection verwendet, so führt z.B.
\@startsection{subsubsubsection}...
dazu, daß intern \subsubsubsectionmark verwendet wird. Wenn es nicht definiert ist, kommt es zu dem von dir beobachteten Fehlverhalten, also brauchst du einfach für jedes \@startsection{xxx} auch einen \xxxmark-Befehl.
Eine Art "Verbindung" brauchst du also nicht herzustellen, die ist schon in \@startsection eingebaut.
Was mir in dem Zusammenhang gerade einfällt: Vielleicht ist auch der Zähler "secnumdepth" für dich von Interesse, der gibt AFAIK vor, bis zu welcher Ebene durchnummeriert wird.
Liebe Grüße,
Axel
Stoppl11
29-08-2007, 10:28
Danke danke danke für die Antworten! Das waren die entscheidenden Hinweise (auf mark wäre ich nie gekommen)...
Hab das jetzt hinbekommen. Aus einem anderen Thema heraus habe ich übrigens auch im Internet eine Musterlösung für Gliederungsebenen unter subparagraph gefunden :o:
\usepackage{alnumsec}
\makeatletter \let\size@abschnitt\normalsize
\newcounter{abschnitt}[subparagraph]
\newcommand\abschnitt{\@startsection{abschnitt}{6} {\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\setlength{\parfillskip}{\z@ \@plus 1fil}%
\raggedsection\normalfont\sectfont\nobreak\size@ab schnitt\nobreak}}
\newcommand*{\scr@fnt@abschnitt}{\size@abschnitt}
\newcommand*\l@abschnitt{\@dottedtocline{5}{10em}{ 5em}}
\let\abschnittmark\@gobble
\makeatother
\alnumsectionlevels{1}{section,subsection,subsubse ction,paragraph,subparagraph,abschnitt}
\alnumsecstyle{Rnldng
sommerfee
29-08-2007, 11:31
Hallo Stefan,
Schön, daß es jetzt klappt! :)
Hierzu eine Frage:
\newcommand*{\scr@fnt@abschnitt}{\size@abschnitt}
Weißt du, wozu das gut sein soll? "scr@" hört sich verdächtig nach KOMA-Script an, ich würde daher naiv denken, dies sei dafür da, daß man auch \setkomafont{abschnitt} bzw. \addtokomafont{abschnitt} benutzen kann (habe das jetzt aber nicht nachgeschaut :rolleyes: ), aber was nützt das, wenn innerhalb von abschnitt dann \size@abschnitt und nicht \scr@fnt@abschnitt zur Anwendung kommt? :confused:
Gruß,
Axel
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.