PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \renewcommand



Immi
11-06-2006, 17:30
Hallo,

ich möchte die Befehle \subsection + \subsubsection überschreiben, damit ich dann folgende Befehleskette bekommen:



\subsection{das ist ein Test}\label{sec:das ist ein Test}


Probiert habe ich es mit:


\renewcommand{\subsection}[1]{\subsection{#1}\label{sec:#1}}


und raus kommt:


! TeX capacity exceeded, sorry [input stack size=1500].
\subsection #1->\subsection {#1
}\label {sec:#1}
l.4 \subsection{das ist ein Test}


Geht das überhaupt oder macht der da ein rekursiven Aufruf ?

Gruß
Dietmar

rais
11-06-2006, 17:43
Geht das überhaupt oder macht der da ein rekursiven Aufruf ?

Genau ;)
Auch wenn's nicht minder rekursiv aussehen mag, versuch's mal so:


\let\subsectionorg\subsection
\renewcommand{\subsection}[1]{\subsectionorg{#1}\label{sec:#1}}

persönlich halte ich zwar nix von Leerzeichen innerhalb von Marken, aber das soll Dich nicht weiter stören :)

MfG,

Immi
11-06-2006, 18:02
Hallo,

danke für die schnelle Hilfe, hat geklappt. :)

Hast Du noch einen Tipp, wie ich das mit den Optionalen Parameter auch noch hinbekomme ?

Gruß
Dietmar

countbela666
11-06-2006, 18:10
Hallo Dietmar,

\usepackage{ifthen}
\let\subsectionorg\subsection
\renewcommand{\subsection}[2][__empty__]{%
\ifthenelse{\equal{#1}{__empty__}}
{\subsectionorg{#2}\label{sec:#2}}
{\subsectionorg[#1]{#2}\label{sec:#2}}
}Grüße,
Marcel

Immi
11-06-2006, 18:28
DANKE !!!

Dietmar

RedCloud
11-06-2006, 19:05
Hallo Dietmar,

\usepackage{ifthen}
\let\subsectionorg\subsection
\renewcommand{\subsection}[2][__empty__]{%
\ifthenelse{\equal{#1}{__empty__}}
{\subsectionorg{#2}\label{sec:#2}}
{\subsectionorg[#1]{#2}\label{sec:#2}}
}Grüße,
Marcel



\let\subsectionorg\subsection
\renewcommand\subsection[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\empty\subsectionorg{#2}
\else\subsectionorg[#1]{#2}\fi\label{sec:#2}}


als Alternative

rc

Immi
20-06-2006, 20:39
Hallo,

die hat für die Fallstudie, die wir geschrieben haben recht gut geklappt. Nun muß ich noch eine Hausarbeit schreiben und die wollte ich mit der Dokumenten-Klasse "scrartcl" schreiben. Nun bekomme ich aber da einen Fehler und weiß nicht mehr warum ?

Fehlermeldung:
! LaTeX Error: Something's wrong--perhaps a missing \item. l.1 ...on}{\numberline {0.1}Managemant Summery}{2}



\documentclass{scrartcl}

\usepackage{ifthen}
\let\sectionorg\section
\renewcommand{\section}[2][__empty__]{%
\ifthenelse{\equal{#1}{__empty__}}
{\sectionorg{#2}\label{sec:#2}}
{\sectionorg[#1]{#2}\label{sec:#2}}
}

\RequirePackage{showkeys}

\begin{document}
\tableofcontents
\newpage
\section{Managemant Summery}
\section{Einleitung}
\section{Grundlagen eines Clustersystemes}
\subsection{Definition}
\subsection{Technik und Funktionsweise}
\end{document}



Kann mir da mal jemand weiter helfen ?

Gruß
Dietmar

RedCloud
20-06-2006, 21:27
die hat für die Fallstudie, die wir geschrieben haben recht gut geklappt. Nun muß ich noch eine Hausarbeit schreiben und die wollte ich mit der Dokumenten-Klasse "scrartcl" schreiben. Nun bekomme ich aber da einen Fehler und weiß nicht mehr warum ?


nimm meinen Vorschlag.

rc

Immi
20-06-2006, 21:54
Hallo,


nimm meinen Vorschlag.

rc

das geht bei "\section" leider auch nicht... :confused:
Bei \subsection geht es...



\let\sectionorg\section
\renewcommand\section[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\empty\sectionorg{#2}
\else\sectionorg[#1]{#2}\fi\label{sec:#2}}

\let\subsectionorg\subsection
\renewcommand\subsection[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\empty\subsectionorg{#2}
\else\subsectionorg[#1]{#2}\fi\label{sec:#2}}

RedCloud
20-06-2006, 22:04
Hallo,



das geht bei "\section" leider auch nicht... :confused:
Bei \subsection geht es...


Bei mir geht es:



\listfiles
\documentclass{scrartcl}

\let\sectionorg\section
\let\subsectionorg\subsection
\renewcommand\subsection[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\empty\subsectionorg{#2}
\else\subsectionorg[#1]{#2}\fi\label{sec:#2}}

\RequirePackage{showkeys}

\begin{document}
\tableofcontents
\newpage
\section{Managemant Summery}
\section{Einleitung}
\section{Grundlagen eines Clustersystemes}
\subsection{Definition}
\subsection{Technik und Funktionsweise}
\end{document}


*File List*
scrartcl.cls 2004/09/16 v2.9t LaTeX2e KOMA document class
scrlfile.sty 2004/09/16 v2.9t LaTeX2e KOMA package
size11.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
typearea.sty 2004/09/16 v2.9t LaTeX2e KOMA package
showkeys.sty 2006/01/09 v3.13 Show cite and label keys (DPC)


rc

Immi
20-06-2006, 22:21
Kurze Frage nochmal...

1.) mit welchen Befehl bekommst Du die File-List zustande ?

2.) schließt das \let\sectionorg\section die \subsection mit ein ?


\let\sectionorg\section
\let\subsectionorg\subsection


weil sonst sehe ich in Deinen Quell-Code kein \renewcommand mehr...


\renewcommand\subsection[2][]{%


Und wenn ich Deinen Quell-Code nehme, dann sehe ich nur einen Label bei der \subsection und nicht bei der \section

RedCloud
20-06-2006, 22:40
Kurze Frage nochmal...

1.) mit welchen Befehl bekommst Du die File-List zustande ?

2.) schließt das \let\sectionorg\section die \subsection mit ein ?

weil sonst sehe ich in Deinen Quell-Code kein \renewcommand mehr...



hast recht, habe gar nicht den unterschied in meinem Code gesehen. Muss nachdenken ...

rc

RedCloud
20-06-2006, 22:47
hast recht, habe gar nicht den unterschied in meinem Code gesehen. Muss nachdenken ...

rc

hatte \tableofcontens vergessen, welches ja intern \section* aufruft, sodass es Probleme gibt. Folgendes sollte aber jetzt gehen:


\listfiles
\documentclass{article}

\let\sectionorg\section
\let\subsectionorg\subsection
\let\TOC\tableofcontents
\renewcommand\tableofcontents{\bgroup\let\section\ sectionorg\TOC\egroup}
\makeatletter
\renewcommand\section[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\@empty\sectionorg{#2}
\else\sectionorg[#1]{#2}\fi
\label{sec:#2}}
\renewcommand\subsection[2][]{%
\def\tempOPT{#1}%
\ifx\tempOPT\@empty\subsectionorg{#2}
\else\subsectionorg[#1]{#2}\fi
\label{sec:#2}}
\makeatother

\RequirePackage{showkeys}

\begin{document}
\tableofcontents
\newpage
\section{Managemant Summery}
\section{Einleitung}
\section{Grundlagen eines Clustersystemes}
\subsection{Definition}
\subsection{Technik und Funktionsweise}
\end{document}


rc

Immi
20-06-2006, 23:36
Hallo,

danke für die Info. Hat in der *.tex-Dokument geklappt. Nachdem ich das bei mir in die *.cls-Datei übernommen habe geht jetzt nicht mehr. :(

Kannst Du, wenn Du willst Dir das mal anschauen ? Denn ich finden den Fehler:
! LaTeX Error: Missing \begin{document}.
! Extra \endgroup.
\document ->\endgroup
\ifx \@unusedoptionlist \@empty \else \@latex@warning@...
l.243 \let\@doc=\document

rais
21-06-2006, 00:01
Moin moin,
setz mal
\makeatletter vor \let\@doc=\document
und nach
\end{@doc}} dann
\makeatother

Wieso lädtst Du überhaupt german und ngerman? Übergib doch einfach Sprachoptionen an babel ;)

MfG,

Immi
21-06-2006, 01:12
Hallo,

habe ich gemacht...

nur leider sieht das Ergebnis im DVI bescheiden aus.

Und nun :confused:


Übergib doch einfach Sprachoptionen an babel
wie meinst Du das ? So tief bin ich noch nicht in Latex drin, das ich damit was Anfangen kann.

RedCloud
21-06-2006, 06:58
Hallo,

danke für die Info. Hat in der *.tex-Dokument geklappt. Nachdem ich das bei mir in die *.cls-Datei übernommen habe geht jetzt nicht mehr. :(

Kannst Du, wenn Du willst Dir das mal anschauen ? Denn ich finden den Fehler:
! LaTeX Error: Missing \begin{document}.
! Extra \endgroup.
\document ->\endgroup
\ifx \@unusedoptionlist \@empty \else \@latex@warning@...
l.243 \let\@doc=\document


-- was sollen denn beide Möglichkeiten mit ifthen und ohne ifthen??
-- german _und_ ngerman gleichzeitig laden ist sinnlos.
-- ohnehin Sprache über Paket babel
-- Das, was ich dir als TOC gezeigt habe auch für die anderen Listen machen, die ebenfalls mit \section* gesetzt werden.

\makeatletter -- \makeatother brauchst du nicht in der Klassendatei

Und ganz nebenbei: die Lösung mit der automatischen Labelsetzung ist nicht das Gelbe vom Ei, Leerzeichen und Umlaute können hier manchmal nerven ... und Spass macht es auch nicht \ref{sec:Und jetzt kommt die ellenlange Überschrift} schreiben zu müssen. Da sind DInge wie \label{\thesubsection\ schon einfacher.

rc