Anzeige:
Ergebnis 1 bis 5 von 5

Thema: renewcommand von section*???

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.01.2008
    Beiträge
    49

    renewcommand von section*???

    Hallo, wie kann ich erreichen das bei sections die nicht im Inhaltsverzeichnis aufgeführt werden eine ausgefüllte Box vorangestellt wird?

    Ich dachte mir das müsste so gehen, geht aber nicht:

    \renewcommand{\section*}[1]
    {
    \Box
    \section*{#1}
    }

  2. #2
    Registrierter Benutzer Avatar von Stefan_K
    Registriert seit
    05.04.2007
    Ort
    Hamburg
    Beiträge
    3.534

    \section starred

    Hallo,

    ganz so einfach ist es nicht. Du kannst nicht das redefinierte Makro innerhalb seiner eigenen Definition aufrufen.
    Schau Dir einmal die \section-Definition im Quellcode Deiner Dokumentklasse (welche ist das?) an, das unterscheidet sich nämlich in verschiedenen Klassen. Der * sollte darin nicht behandelt werden, sondern im aufgerufenen \@startsection. Hierin steht standardmäßig die Abfrage nach dem * mit \@ifstar. Da könnte man sich einklinken. Die Definition von \@startsection findest Du ebenfalls in Deiner Dokumentklasse und wenn nicht dort, dann in latex.ltx.

    Viele Grüße,

    Stefan

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.01.2008
    Beiträge
    49

    \section Redefinieren

    Hallo Stefan,

    ich benutze die scrreprt Klasse als Vorgabe.

    Jetzt hab ich mir die scrreprt.cls mal genauer angesehen. Das einzige was ich zu deiner oben genannten Aussage finden kann ist das hier:

    \newcommand*{\@saddsec}[1]{\section*{#1}\@mkboth{}{}}
    \newcommand\section{\@startsection{section}{1}{\z@ }%
    {-3.5ex \@plus -1ex \@minus -.2ex}%
    {2.3ex \@plus.2ex}%
    {\raggedsection\normalfont\sectfont\nobreak\size@s ection\nobreak}%
    }

    @ifstar kommt da leider nicht vor. Muss ich mir den Quellcode jetzt genauer ansehen und dann in meinem Dokument so redefinieren, dass ich bei ifstar unter der Section einsetze das da ne Box vor dem Text steht???

    Ich hab auch noch gleich in der latex.ltx nachgeschaut und das hier gefunden:
    \def\@startsection#1#2#3#4#5#6{%
    \if@noskipsec \leavevmode \fi
    \par
    \@tempskipa #4\relax
    \@afterindenttrue
    \ifdim \@tempskipa <\z@
    \@tempskipa -\@tempskipa \@afterindentfalse
    \fi
    \if@nobreak
    \everypar{}%
    \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
    \fi
    \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}%
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}

    Aber was muss ich jetzt tun um das ganze zu realisieren. Die Änderungen sollen ja nur lokal in meinem einen Dokument erfolgen???

    Wo könnte sich das ganze noch verstecken???

    Grüße

    Wolfgang
    Geändert von procrash (27-03-2008 um 17:54 Uhr)

  4. #4
    Registrierter Benutzer Avatar von Stefan_K
    Registriert seit
    05.04.2007
    Ort
    Hamburg
    Beiträge
    3.534

    \@startsection

    Hallo Wolfgang,

    in latex.ltx ist \@startsection so definiert:
    Code:
    \def\@startsection#1#2#3#4#5#6{%
      \if@noskipsec \leavevmode \fi
      \par
      \@tempskipa #4\relax
      \@afterindenttrue
      \ifdim \@tempskipa <\z@
        \@tempskipa -\@tempskipa \@afterindentfalse
      \fi
      \if@nobreak
        \everypar{}%
      \else
        \addpenalty\@secpenalty\addvspace\@tempskipa
      \fi
      \@ifstar
        {\@ssect{#3}{#4}{#5}{#6}}%
        {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
    Hier findet sich das \@ifstar, und an der Stelle könnte man ändern. Ganz pauschal für alle Gliederungsebenen geht es ohne weitere Abfrage mit dieser Redefinition in der Präambel:
    Code:
    \makeatletter
    \renewcommand\@startsection[6]{%
      \if@noskipsec \leavevmode \fi
      \par
      \@tempskipa #4\relax
      \@afterindenttrue
      \ifdim \@tempskipa <\z@
        \@tempskipa -\@tempskipa \@afterindentfalse
      \fi
      \if@nobreak
        \everypar{}%
      \else
        \addpenalty\@secpenalty\addvspace\@tempskipa
      \fi
      \@ifstar
        {\Bar\@ssect{#3}{#4}{#5}{#6}}%
        {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
    \makeatother
    Stefan

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.01.2008
    Beiträge
    49

    Danke

    Hallo Stefan,

    vielen dank für deine Mühe. Hat einwandfrei funktioniert. \Box musste ich zwar noch in ein \rule abändern aber ansonsten hats einwandfrei geklappt.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •