PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit \let und \section



jhoffmann
12-08-2008, 08:56
Hallo erstmal

kann mir jemand 'nen Hinweis geben, warum folgende Zeilen (Minimalbeispiel, sollte eigentlich nichts machen, soweit ich das verstanden habe)



\let\tmppsection\section
\renewcommand{\section}[1]{\tmppsection{#1}}

in der Preambel meines LaTeX-Dokumentes scheinbar den \tableofcontents zeschießt ?

Im endeffekt will ich auf Seiten mit \section Befehlen den \pagestyle ändern.

Ich bekomme dann eine Fehlermeldung über ein evtl. fehlendes \item in der .toc Datei.

Code:

\documentclass{article}

\let\tmppsection\section
\renewcommand{\section}[1]{\tmppsection{#1}}

\author{jhoffmann}
\title{test}

\begin{document}
\maketitle
\tableofcontents
\section{bla}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec pede. Maecenas sed erat a velit fermentum consectetuer. Sed velit lectus, auctor in, semper sit amet, laoreet quis, nibh. Mauris eros orci, vehicula a, adipiscing ut, consectetuer sed, tortor. Donec ipsum. Nam id libero sed turpis tempor tempus. Sed et felis quis dolor luctus adipiscing. Aliquam eros felis, lacinia non, ultrices id, commodo quis, ante. Vivamus semper lobortis nunc. Integer est augue, gravida non, luctus in, convallis at, quam. Donec interdum justo vitae tortor.
\clearpage
\section{bla2}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam enim lectus, iaculis ac, scelerisque sed, ullamcorper a, dolor. Vivamus euismod condimentum nibh. Integer sed magna sed pede faucibus ultricies. Nunc congue, leo consequat ultrices posuere, dui lacus bibendum erat, id aliquet tellus orci a dolor. In hac habitasse platea dictumst. Pellentesque fermentum, orci id fermentum vulputate, purus velit varius ante, in malesuada orci lectus dictum libero. Etiam sit amet eros vel orci posuere laoreet. Pellentesque ultrices. Aliquam eu tellus. Vivamus condimentum. Quisque quis tellus. In hac habitasse platea dictumst. Ut imperdiet. Duis hendrerit feugiat nibh. Aenean hendrerit sem a dui.
\end{document}

.toc-Datei:

\contentsline {section}{\numberline {1}*}{1}
\contentsline {section}{\numberline {2}bla}{1}
\contentsline {section}{\numberline {3}bla2}{2}

Fehlermeldung:

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.1 \contentsline {section}{\numberline {1}*}{1}

Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.

Achja, ich benutze MikTeX 2.7 und wie man oben sieht die article Klasse

Danke sehr im Vorraus

P.S.: ein schönes und informatives Forum habt ihr hier !

voss
12-08-2008, 09:53
Hallo erstmal

kann mir jemand 'nen Hinweis geben, warum folgende Zeilen (Minimalbeispiel, sollte eigentlich nichts machen, soweit ich das verstanden habe)



\let\tmppsection\section
\renewcommand{\section}[1]{\tmppsection{#1}}

in der Preambel meines LaTeX-Dokumentes scheinbar den \tableofcontents zeschießt ?


so einfach geht das nicht, denn es gibt

\section{}
\section[]{}
\section*{}

die musst du theoretisch alle erfassen, wenn du sie neu definierst. \tabelofcontents verwendet \section*{Inhaltsverzeichnis}, was nun nach deiner
Neudefinition nicht mehr geht.

http://texnik.dante.de/cgi-bin/mainFAQ.cgi?file=misc/renew

Herbert

jhoffmann
12-08-2008, 10:24
Ok, danke für die schnelle Antwort, ich dachte die Stern Version sei ein eigener Befehl. Ansonsten habe ich es jetzt für mein spezielles Problem anders gelöst (zu speziell, um es hier als Lösung anzugeben).

Die Seite landet auf jedenfall in meiner Lesezeichenliste !

echt super Service hier :D

Danke

zod
30-11-2009, 09:04
Altes Thema, ähnliches Problem.
Hatte erst:

\let\chapterold=\chapter{}
\renewcommand{\chapter}[1]{
\chapterolda{#1}
\setcounter{def_counter}{0}
}

und habe nun hinzugefügt:

\let\chapterold=\chapter{}
\renewcommand{\chapter}[1]{
\chapterold{#1}
\setcounter{def_counter}{0}
}
\renewcommand*{\chapter}[2]{
\chapterold[#1]{#2}
\setcounter{def_counter}{0}
}

Nun zeigt er leider im Inhaltsverzeichnis einen * als ersten Eintrag. Woher kommt das?

u_fischer
30-11-2009, 13:33
Weil dann bei \chapter* der Stern * das erste Argument ist.

Wenn du möchtest, dass ein Zähler bei chapter zurückgesetzt wird, nimm
\newcounter{zaehlername}[chapter].

Und vermeide Unterstriche im Zählernamen, weil du damit \thezaehlername nicht mehr direkt benutzen kannst.