Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Leerzeilen im Abbildungsverzeichnis

287 views
Skip to first unread message

Theo Harlauch

unread,
Mar 28, 2004, 8:10:09 AM3/28/04
to
Hallo,

da ich für meine Abbildungen eine einfache Nummerierung im ganzen
Dokument bevorzuge, nutze ich folgende Anweisungen, um das gewünschte
Ergebnis zu erhalten.

%...
\renewcommand{\thefigure}{\arabic{figure}}
\makeatletter
\@removefromreset{figure}{chapter}
\makeatother
%...

Alle Abbildungen erhalten nun eine durchgehende Nummerierung, genauso
wie ich es mir vorstelle. Allerdings werden nun im Abbildungsverzeichnis
Leerzeilen zwischen Abbildungen erzeugt, die in aufeinanderfolgenden
Kapiteln stehen. Das Verhalten möchte ich gerne dahingehend ändern, dass
keine Leerzeile mehr im Abbildungsverzeichnis auftaucht.
Weiß hier wer Rat?

Grüße,
Theo

Frank Mittelbach

unread,
Mar 28, 2004, 9:02:00 AM3/28/04
to
Theo Harlauch wrote:

> Alle Abbildungen erhalten nun eine durchgehende Nummerierung, genauso
> wie ich es mir vorstelle. Allerdings werden nun im Abbildungsverzeichnis
> Leerzeilen zwischen Abbildungen erzeugt, die in aufeinanderfolgenden
> Kapiteln stehen. Das Verhalten möchte ich gerne dahingehend ändern, dass
> keine Leerzeile mehr im Abbildungsverzeichnis auftaucht.
> Weiß hier wer Rat?

das ist ziemlich hart verdratet in report.cls/book.cls (falls du das als
klasse benutzt)

die einfachste loesung ist das entsprechende macro in die praembel zu
kopieren und da zu aendern. oder halt eine eigene klasse schreiben die a)
book oder report laed \LoadClass... und dann b) halt alle aenderungen macht
die du gerne haettest

hier ist der code aus report.cls:

\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
%%% die zwei zeilen generieren den space in lof und lot:
%%% \addtocontents{lof}{\protect\addvspace{10\p@}}%
%%% \addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}

docu classes.dtx lesen kann ganz hilfreich sein

auch zu empfehlen: clsguide.tex

frank

Theo Harlauch

unread,
Mar 28, 2004, 11:01:56 AM3/28/04
to
Frank Mittelbach wrote:

> die einfachste loesung ist das entsprechende macro in die praembel zu
> kopieren und da zu aendern. oder halt eine eigene klasse schreiben die a)
> book oder report laed \LoadClass... und dann b) halt alle aenderungen macht
> die du gerne haettest

> [code snippet entfernt]

Vielen Dank für die schnelle Antwort. Das Ergebnis ist jetzt so, wie ich
es mir wünsche. Ich benutze die Klasse scrreprt und leider hat das
Kopieren und anschließende Ändern des betroffenen \def's in der Präambel
des Dokuments keine Auswirkungen.
Da ich etwas unter Zeitdruck bin, habe ich kurzer Hand direkt im
scrreprt.cls rumgelötet (Asche über mein Haupt).

> docu classes.dtx lesen kann ganz hilfreich sein
> auch zu empfehlen: clsguide.tex

Die Dokumentation werde ich mir demnächst mal reinziehen.

Viele Grüße,
Theo

Frank Mittelbach

unread,
Mar 28, 2004, 12:40:10 PM3/28/04
to
Theo Harlauch wrote:


> Da ich etwas unter Zeitdruck bin, habe ich kurzer Hand direkt im
> scrreprt.cls rumgelötet (Asche über mein Haupt).

in der tat, minimum sollte in so einem fall sein scrreprt.cls ->
myscrreprt.cls oder so umzubenennen

mittelfirstig hilft das allen (auch dir) wenn du dich an lizenzbestimmungen
haelst

gruss
frank

Markus Kohm

unread,
Mar 29, 2004, 2:44:01 AM3/29/04
to
Theo Harlauch wrote:

> Alle Abbildungen erhalten nun eine durchgehende Nummerierung, genauso
> wie ich es mir vorstelle. Allerdings werden nun im Abbildungsverzeichnis
> Leerzeilen zwischen Abbildungen erzeugt, die in aufeinanderfolgenden
> Kapiteln stehen.

Das Problem wurde hier schon mehrfach behandelt (--> Google Groups). Eine
einfache Lösung, die mit fast allen Klassen funktioniert ist:

\newcommand*{\StartToc}{}
\let\StartToc\@starttoc
\renewcommand*{\@starttoc}[#1]{%
\begingroup
\edef\@tempa{#1}\edef\@tempb{toc}%
\ifx\@tempa\@tempb\else\let\addvspace\@gobble\fi
\StartToc{#1}%
\endgroup
}

Dies betrifft dann alle Verzeichnisse außer dem Inhaltsverzeichnis
gleichermaßen. Will man das nur für einzelne Verzeichnisse erreichen, dann
so:

\newcommand*{\ListOfFigures}{}
\let\ListOfFigurs\listoffigures
\renewcommand*{listoffigures}{%
\begingroup
\let\addvspace\@gobble
\ListOfFigures
\endgroup
}

oder einfacher:

\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
\AtBeginDocument{%
\addtocontents{lof}{\deactivateaddvspace}%
\addtocontents{lot}{\deactivateaddvspace}%
% Hier ggf. weitere einfügen.
}

Gruß
Markus
--
Fragen zu LaTeX? --> http://www.dante.de/faq/de-tex-faq/
Fragen zu KOMA-Script? --> Anleitung z. B. auf CTAN (--> FAQ)
Die Verwendung einer falschen From-Angabe wäre ein Verstoß gegen rfc1036.

Theo Harlauch

unread,
Mar 29, 2004, 4:55:33 AM3/29/04
to
Markus Kohm wrote:

> Das Problem wurde hier schon mehrfach behandelt (--> Google Groups). Eine
> einfache Lösung, die mit fast allen Klassen funktioniert ist:

Hmmm, da habe ich irgendwie nichts gefunden...

> [latex code, um Leerzeilen in allen Verzeichnissen zu entfernen]


>
> Dies betrifft dann alle Verzeichnisse außer dem Inhaltsverzeichnis
> gleichermaßen. Will man das nur für einzelne Verzeichnisse erreichen, dann
> so:
>

> [latex code, um Leerzeilen im Abbildungsverzeichnis zu entfernen]
>
> oder einfacher:

Da mir die einfachere Lösung doch eher zuspricht, habe ich mir diese
vorgenommen.

> \DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
> \AtBeginDocument{%
> \addtocontents{lof}{\deactivateaddvspace}%
> \addtocontents{lot}{\deactivateaddvspace}%
> % Hier ggf. weitere einfügen.
> }

Leider meldet bei mir pdflatex ein Fehler, wenn ich obigen Code in die
Präambel setze.

--snip--
This is pdfTeX, Version 3.14159-1.00a-pretest-20011114-ojmw (Web2C 7.3.7)
(./ausarbeitung.tex{/var/lib/texmf/pdftex/config/pdftex.cfg}
LaTeX2e <2001/06/01>
Babel <v3.7h> and hyphenation patterns for american, french, german,
ngerman, n
ohyphenation, loaded.
(/usr/local/share/texmf/tex/latex/koma-script/scrreprt.cls
Document Class: scrreprt 2004/01/07 v2.9p LaTeX2e KOMA document class
(/usr/local/share/texmf/tex/latex/koma-script/scrlfile.sty
Package scrlfile, 2004/01/07 v2.9p LaTeX2e KOMA package
Copyright (C) Markus Kohm
[...]
! Missing number, treated as zero.
<to be read again>
}
l.2 \addvspace {10\p@ }
--snap--

Ich vermute mal, dass ich eventuell eine zu alte tetex-Distribution
einsetze. Ich nutze SuSE 8.1 mit folgenden SuSE-Standardpaketen.

tetex-beta.20020207-231
te_latex-beta.20020207-231
te_etex-beta.20020207-231
te_pscm-beta.20020207-231
te_pdf-beta.20020207-231
latex-ucs-20020510-39
tex4ht-20020613-53

Sollte ich eventuell in Erwägung ziehen, mir die neueste tetex-beta
selbst zu übersetzen? Oder liegt das Problem eventuell woanders begründet?

Viele Grüße,
Theo

Malte Rosenau

unread,
Mar 29, 2004, 5:09:17 AM3/29/04
to
Markus Kohm schrieb:

> Das Problem wurde hier schon mehrfach behandelt (--> Google Groups). Eine
> einfache Lösung, die mit fast allen Klassen funktioniert ist:
>
> \newcommand*{\StartToc}{}
> \let\StartToc\@starttoc
> \renewcommand*{\@starttoc}[#1]{%

^^^^^^^

> \begingroup
> \edef\@tempa{#1}\edef\@tempb{toc}%
> \ifx\@tempa\@tempb\else\let\addvspace\@gobble\fi
> \StartToc{#1}%
> \endgroup
> }


Ist das so richtig?

Malte

Frank Küster

unread,
Mar 29, 2004, 5:56:56 AM3/29/04
to
Theo Harlauch <t.har...@web.de> schrieb:

> Leider meldet bei mir pdflatex ein Fehler, wenn ich obigen Code in die
> Präambel setze.

Baue bitte mal ein Minimalbeispiel (-->Google), denn

> Ich vermute mal, dass ich eventuell eine zu alte tetex-Distribution
> einsetze. Ich nutze SuSE 8.1 mit folgenden SuSE-Standardpaketen.

Ich vermute, dass es eher daran liegt, dass irgenein Paket noch
unerwartetes mit \addvspace macht.

> Sollte ich eventuell in Erwägung ziehen, mir die neueste tetex-beta
> selbst zu übersetzen? Oder liegt das Problem eventuell woanders
> begründet?

Das ist wirklich eine beta-Version, Fehler sind also zu
erwarten. Allerdings weniger was die Dateien in $TEXMF angeht, sondern
was die Programme angeht. Leider kann man, soweit ich weiß, nicht
einfach den alten TEXMF-Baum durch den neuen ersetzen (kommt aber darauf
an, was die Distribution, also bei dir SuSE, daraus gemacht hat).

Gruß, Frank
--
Kleiner Ansporn: Längeres Arbeiten mit dem Emacs zahlt sich spätestens
dann aus, wenn man vor der Herausforderung steht einen BH zu öffnen.
[Ralf Angeli in dctt]

David Kastrup

unread,
Mar 29, 2004, 6:29:35 AM3/29/04
to
fr...@kuesterei.ch (Frank Küster) writes:

[...]

Kleiner Ansporn: Längeres Arbeiten mit dem Emacs zahlt sich spätestens
dann aus, wenn man vor der Herausforderung steht einen BH zu öffnen.
[Ralf Angeli in dctt]

Und als er auf die Frage, was er da eigentlich täte, antwortete, er
suche den Super-Modifier, flog er achtkantig raus.

--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
de.comp.text.tex FAQ: <URL:http://www.dante.de/faq/de-tex-faq>

Rolf Niepraschk

unread,
Mar 29, 2004, 6:36:52 AM3/29/04
to
Frank Mittelbach wrote:
...

>
> docu classes.dtx lesen kann ganz hilfreich sein
>
> auch zu empfehlen: clsguide.tex
>
> frank
>

Ergänzung: DE-TeX-FAQ

==> http://www.dante.de/faq/de-tex-faq/
Dort:
5.1.5 Wie gehe ich am besten vor, wenn ich eine bestehende LaTeX-Klasse
ändern bzw. an meine eigenen Vorgaben anpassen will?

...Rolf
--
|| Rolf Niepraschk c/o Physikalisch-Technische Bundesanstalt ||
|| Abbestr. 2-12; D-10587 Berlin, Germany ||
|| Tel/Fax: ++49-30-3481-316/490, email: Rolf.Ni...@ptb.de ||

Ralf Angeli

unread,
Mar 29, 2004, 6:46:44 AM3/29/04
to
* David Kastrup (2004-03-29) writes:

> fr...@kuesterei.ch (Frank Küster) writes:
>
> [...]
>
> Kleiner Ansporn: Längeres Arbeiten mit dem Emacs zahlt sich spätestens
> dann aus, wenn man vor der Herausforderung steht einen BH zu öffnen.
> [Ralf Angeli in dctt]
>
> Und als er auf die Frage, was er da eigentlich täte, antwortete, er
> suche den Super-Modifier, flog er achtkantig raus.

Dann nimmt man halt lieber gleich Escape.

--
Ralf

David Kastrup

unread,
Mar 29, 2004, 7:00:32 AM3/29/04
to
Ralf Angeli <dev....@iwi.uni-sb.de> writes:

Das ist aber Meta, nicht Super. Für Super und Hyper gibt es keine
Umschreibungen, die hat man oder hat sie nicht.

Ralf Angeli

unread,
Mar 29, 2004, 7:19:53 AM3/29/04
to
* David Kastrup (2004-03-29) writes:

> Ralf Angeli <dev....@iwi.uni-sb.de> writes:
>
>> * David Kastrup (2004-03-29) writes:
>>
>> > fr...@kuesterei.ch (Frank Küster) writes:
>> >
>> > [...]
>> >
>> > Kleiner Ansporn: Längeres Arbeiten mit dem Emacs zahlt sich spätestens
>> > dann aus, wenn man vor der Herausforderung steht einen BH zu öffnen.
>> > [Ralf Angeli in dctt]
>> >
>> > Und als er auf die Frage, was er da eigentlich täte, antwortete, er
>> > suche den Super-Modifier, flog er achtkantig raus.
>>
>> Dann nimmt man halt lieber gleich Escape.
>
> Das ist aber Meta, nicht Super. Für Super und Hyper gibt es keine
> Umschreibungen, die hat man oder hat sie nicht.

Klar, aber wenn man nach einem Escape ein Return macht ...

,----[ C-h k ESC RET ]
| ESC RET [...] runs the command LaTeX-insert-item
`----

Followup-To: de.talk.liebesakt

--
Ralf

Theo Harlauch

unread,
Mar 29, 2004, 9:49:35 AM3/29/04
to
Frank Küster wrote:

> Baue bitte mal ein Minimalbeispiel (-->Google), denn

--snip--
\documentclass[pointlessnumbers,bibtotoc,liststotoc]{scrreprt}
\usepackage{ngerman}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage{europs}

% Helvetica-Schrift
\renewcommand{\familydefault}{\sfdefault}
\usepackage{helvet}

% Leerzeilen im Abbildungsverzeichnis entfernen


\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
\AtBeginDocument{%
\addtocontents{lof}{\deactivateaddvspace}%

% Hier ggf. weitere einfügen.
}

\begin{document}

\tableofcontents

% Abbildungsverzeichnis
\listoffigures


\appendix

\chapter{Fragebogen}
\dots

\end{document}
--snap--

> Ich vermute, dass es eher daran liegt, dass irgenein Paket noch
> unerwartetes mit \addvspace macht.

Hmmm, also irgendwie kommen da nicht mehr so viele Pakete in Frage. Das
oben beschriebene Minimalbeispiel kommt mit \listfiles zur folgenden
Ausgabe.

--snip--
This is pdfTeX, Version 3.14159-1.00a-pretest-20011114-ojmw (Web2C 7.3.7)

(./beispiel.tex{/var/lib/texmf/pdftex/config/pdftex.cfg}


LaTeX2e <2001/06/01>
Babel <v3.7h> and hyphenation patterns for american, french, german,
ngerman, n
ohyphenation, loaded.
(/usr/local/share/texmf/tex/latex/koma-script/scrreprt.cls
Document Class: scrreprt 2004/01/07 v2.9p LaTeX2e KOMA document class
(/usr/local/share/texmf/tex/latex/koma-script/scrlfile.sty
Package scrlfile, 2004/01/07 v2.9p LaTeX2e KOMA package
Copyright (C) Markus Kohm

) (/usr/share/texmf/tex/latex/base/size11.clo)
(/usr/local/share/texmf/tex/latex/koma-script/typearea.sty
Package typearea, 2004/01/07 v2.9p LaTeX2e KOMA package
Copyright (C) Frank Neukam, 1992-1994
Copyright (C) Markus Kohm, 1994-2002

)) (/usr/share/texmf/tex/generic/german/ngerman.sty v2.5e 1998-07-08)
(/usr/share/texmf/tex/latex/base/fontenc.sty
(/usr/share/texmf/tex/latex/base/t1enc.def))
(/usr/share/texmf/tex/latex/base/inputenc.sty
(/usr/share/texmf/tex/latex/base/latin1.def))
(/usr/share/texmf/tex/latex/graphics/graphicx.sty
(/usr/share/texmf/tex/latex/graphics/keyval.sty)
(/usr/share/texmf/tex/latex/graphics/graphics.sty
(/usr/share/texmf/tex/latex/graphics/trig.sty)
(/usr/share/texmf/tex/latex/config/graphics.cfg)
(/usr/share/texmf/tex/latex/graphics/pdftex.def)))
(/usr/share/texmf/tex/latex/europs.sty
(/usr/share/texmf/tex/latex/base/ifthen.sty))
(/usr/share/texmf/tex/latex/psnfss/helvet.sty) (./beispiel.aux)
(/usr/share/texmf/tex/latex/psnfss/t1phv.fd) (./beispiel.toc)
[1{/var/lib/texmf
/dvips/config/pdftex.map}] (./beispiel.lof


! Missing number, treated as zero.
<to be read again>
}
l.2 \addvspace {10\p@ }

?
--snap--

> Das ist wirklich eine beta-Version, Fehler sind also zu
> erwarten. Allerdings weniger was die Dateien in $TEXMF angeht, sondern
> was die Programme angeht. Leider kann man, soweit ich weiß, nicht
> einfach den alten TEXMF-Baum durch den neuen ersetzen (kommt aber darauf
> an, was die Distribution, also bei dir SuSE, daraus gemacht hat).

Also sollte ich, wenn überhaupt, die momentan aktuelle, stabile Version
2.0.2 vom 28.02.2003 nehmen? Ich frage mich nur, warum SuSE aus dem
beta-src rpms gemacht hat.
Welche Version verwendest du denn? Oder nutzt du gar nicht die
teTeX-Distribution?

Viele Grüße,
Theo

Frank Küster

unread,
Mar 29, 2004, 10:01:04 AM3/29/04
to
Theo Harlauch <t.har...@web.de> schrieb:

> Frank Küster wrote:
>
>> Baue bitte mal ein Minimalbeispiel (-->Google), denn
>
> --snip--
> \documentclass[pointlessnumbers,bibtotoc,liststotoc]{scrreprt}
> \usepackage{ngerman}
> \usepackage[T1]{fontenc}
> \usepackage[latin1]{inputenc}
> \usepackage{graphicx}
> \usepackage{europs}
>
> % Helvetica-Schrift
> \renewcommand{\familydefault}{\sfdefault}
> \usepackage{helvet}

Ich bezweifle, dass das ein Minimalbeispiel ist. Wenn du das ohne
europs.sty, helvet.sty und die Umdefinition von \familydefault laufen
lässt, tritt der Fehler nicht mehr auf? Ich habe jedenfalls keine Lust,
bloß deswegen europs.sty zu installieren.

>> Das ist wirklich eine beta-Version, Fehler sind also zu
>> erwarten. Allerdings weniger was die Dateien in $TEXMF angeht, sondern
>> was die Programme angeht. Leider kann man, soweit ich weiß, nicht
>> einfach den alten TEXMF-Baum durch den neuen ersetzen (kommt aber darauf
>> an, was die Distribution, also bei dir SuSE, daraus gemacht hat).
>
> Also sollte ich, wenn überhaupt, die momentan aktuelle, stabile
> Version 2.0.2 vom 28.02.2003 nehmen? Ich frage mich nur, warum SuSE
> aus dem beta-src rpms gemacht hat.

Vielleicht war _diese_ beta ja stabiler. Aber derzeit wird z.B. an xdvi
dauernd rumgepatcht. Nicht dass es nicht funktionieren würde, aber die
teTeX-beta ist z.Z. ein moving target.

> Welche Version verwendest du denn? Oder nutzt du gar nicht die
> teTeX-Distribution?

Ich verwendet 2.0.2 mit einigen neueren Paketen direkt von
CTAN. Nebenbei bastele ich an Debian-Paketen für tetex-3.0, aber
verwendet habe ich sie bisher noch nicht.

Theo Harlauch

unread,
Mar 29, 2004, 10:58:26 AM3/29/04
to
Frank Küster wrote:

> Ich bezweifle, dass das ein Minimalbeispiel ist. Wenn du das ohne
> europs.sty, helvet.sty und die Umdefinition von \familydefault laufen
> lässt, tritt der Fehler nicht mehr auf? Ich habe jedenfalls keine Lust,
> bloß deswegen europs.sty zu installieren.

Sorry, das war nicht meine Absicht. Anbei nun ein vernünftiges
Minimal-Beispiel und eine vollständige Dateiliste.

--snip--
*File List*
scrreprt.cls 2004/01/07 v2.9p LaTeX2e KOMA document class
scrlfile.sty 2004/01/07 v2.9p LaTeX2e KOMA package
size11.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
typearea.sty 2004/01/07 v2.9p LaTeX2e KOMA package
ngerman.sty 1998/07/08 v2.5e Support for writing german texts (br)
fontenc.sty
t1enc.def 2001/06/05 v1.94 Standard LaTeX file
inputenc.sty 2001/07/10 v0.99a Input encoding file
latin1.def 2001/07/10 v0.99a Input encoding file
t1cmss.fd 1999/05/25 v2.5h Standard LaTeX font definitions
***********
--snap--

--snip--
\documentclass[pointlessnumbers,liststotoc]{scrreprt}
\listfiles


\usepackage{ngerman}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

% Leerzeilen im Abbildungsverzeichnis entfernen


\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
\AtBeginDocument{%
\addtocontents{lof}{\deactivateaddvspace}%
% Hier ggf. weitere einfügen.
}

\begin{document}

\tableofcontents

% Abbildungsverzeichnis
\listoffigures

\appendix
\chapter{Fragebogen}
\dots

\end{document}
--snap--

> Ich verwendet 2.0.2 mit einigen neueren Paketen direkt von


> CTAN. Nebenbei bastele ich an Debian-Paketen für tetex-3.0, aber
> verwendet habe ich sie bisher noch nicht.

Da es wohl nicht schaden kann, werde ich mir auch mal die 2.0.2
installieren.

Viele Grüße,
Theo

Frank Mittelbach

unread,
Mar 29, 2004, 11:56:26 AM3/29/04
to
Theo Harlauch wrote:

>> oder einfacher:
>
> Da mir die einfachere Lösung doch eher zuspricht, habe ich mir diese
> vorgenommen.
>
>> \DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
>> \AtBeginDocument{%
>> \addtocontents{lof}{\deactivateaddvspace}%
>> \addtocontents{lot}{\deactivateaddvspace}%
>> % Hier ggf. weitere einfügen.
>> }
>
> Leider meldet bei mir pdflatex ein Fehler, wenn ich obigen Code in die
> Präambel setze.

wen wundert's? wenn man global ein internes kommando wie \addvspace
umdefiniert was an allen moeglichen stellen benutzt wird, dann ist die
wahrscheinlichkeit, dass es irgendwo kracht nit wirklich klein. und genau
das macht obiger code.

dein konkretes problem ist allerdings wohl simpler: du hast \makeatletter
bei der definition vergessen so wie mir scheint

trotzdem ist dies kein gangbarer weg

frank

Theo Harlauch

unread,
Mar 29, 2004, 12:03:43 PM3/29/04
to
Frank Mittelbach wrote:

>>>\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}
>>>\AtBeginDocument{%
>>> \addtocontents{lof}{\deactivateaddvspace}%
>>> \addtocontents{lot}{\deactivateaddvspace}%
>>> % Hier ggf. weitere einfügen.
>>>}
>>
>>Leider meldet bei mir pdflatex ein Fehler, wenn ich obigen Code in die
>>Präambel setze.
> wen wundert's? wenn man global ein internes kommando wie \addvspace
> umdefiniert was an allen moeglichen stellen benutzt wird, dann ist die
> wahrscheinlichkeit, dass es irgendwo kracht nit wirklich klein. und genau
> das macht obiger code.

Das war mir nicht bewusst, da ich nicht selber auf die Idee gekommen bin
und die Innereien von LaTeX mir nicht wirklich geläufig sind.

> dein konkretes problem ist allerdings wohl simpler: du hast \makeatletter
> bei der definition vergessen so wie mir scheint

Mit dieser Anweisung vor den besagten, bösen Zeilen funktioniert es
wunderprächtig.

> trotzdem ist dies kein gangbarer weg

Also tendierst Du auch dazu, eine eigene Klasse zu schreiben, da die
verwendete Klasse zu laden und alles, was man ändern möchte, dort anpassen?

Viele Grüße,
Theo

Frank Mittelbach

unread,
Mar 29, 2004, 12:15:23 PM3/29/04
to
Theo Harlauch wrote:

> Also tendierst Du auch dazu, eine eigene Klasse zu schreiben, da die
> verwendete Klasse zu laden und alles, was man ändern möchte, dort
> anpassen?

so in etwa. eine erweiterte klasse sind drei oder vier zeilen mit \LoadClass
und \PassOptionToClass

in TLC2 haben wir ein beispiel dafuer, oder schau wie ltxdoc.cls es etwa
macht, d.h. (cut paste snip snip ...

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltxdoc}
[1999/08/08 v2.0u Standard LaTeX documentation class]
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
\DeclareOption*{%
\PassOptionsToClass {\CurrentOption}{article}}
\InputIfFileExists{ltxdoc.cfg}
{\typeout{*************************************^^J%
* Local config file ltxdoc.cfg used^^J%
*************************************}}
{}
\ProcessOptions
\LoadClass{article}

und da kannst du dann was auch immer an macros umdefinieren

hattest du nicht geschrieben, dass macros umdefinieren in der praeambel
nicht funktioniert haette? wahrscheinlich fehlte da auch nur \makeatletter
... \makeatother (nicht vergessen in einem .cls file haben die dann nichts
zu suchen)

frank


Frank Küster

unread,
Mar 29, 2004, 11:29:29 AM3/29/04
to
Theo Harlauch <t.har...@web.de> schrieb:

> \documentclass[pointlessnumbers,liststotoc]{scrreprt}
> \listfiles
> \usepackage{ngerman}
> \usepackage[T1]{fontenc}
> \usepackage[latin1]{inputenc}
>
> % Leerzeilen im Abbildungsverzeichnis entfernen

\makeatletter

> \DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}

\makeatother

Dann klappt's auch. So wurde nicht "\let \addvspace \@gobble"
ausgeführt, sondern "\let \addvspace \@"

Markus Kohm

unread,
Mar 30, 2004, 3:48:00 AM3/30/04
to
<veröffentlicht & per Mail versendet>

Frank Mittelbach wrote:

> wen wundert's? wenn man global ein internes kommando wie \addvspace
> umdefiniert was an allen moeglichen stellen benutzt wird, dann ist die
> wahrscheinlichkeit, dass es irgendwo kracht nit wirklich klein. und genau
> das macht obiger code.

Macht es das? Nein, macht es nicht. Die Anweisung zur Umdefinierung wird in
die lof- bzw. die lot-Datei geschrieben. Diese Dateien werden mit
\@starttoc gelesen. \@starttoc liest die Dateien normalerweise innerhalb
einer Gruppe:

\def\@starttoc#1{%
\begingroup
\makeatletter
\@input{\jobname.#1}%
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
\@nobreakfalse
\endgroup}

Damit wird also keineswegs global umdefiniert. Folgendes Minimalbeispiel
funktioniert auch einwandfrei:

\documentclass{scrreprt}

\makeatletter


\DeclareRobustCommand*{\deactivateaddvspace}{\let\addvspace\@gobble}

\makeatother


\AtBeginDocument{%
\addtocontents{lof}{\deactivateaddvspace}%
\addtocontents{lot}{\deactivateaddvspace}%
% Hier ggf. weitere einfügen.
}

\begin{document}
\tableofcontents
\listoffigures
\listoftables
\chapter{Test}
\begin{figure}
\caption{figure}
\end{figure}
\begin{table}
\caption{table}
\end{table}
\chapter{Test}
\begin{figure}
\caption{figure}
\end{figure}
\begin{table}
\caption{table}
\end{table}
\end{document}

Ich vermute eher, dass der Anwender nicht beachtet hat, dass er, falls er
den Code in die Präambel schreibt \makeatletter und \makeatother braucht.

Markus Kohm

unread,
Mar 30, 2004, 3:38:48 AM3/30/04
to
Malte Rosenau wrote:

> Ist das so richtig?

Nö, das muss heißen: \renewcommand*{\@starttoc}[1]{%

Sorry. Soetwas passiert leicht, wenn aus einem \def ein \renewcommand*
gemacht wird (und ich nicht aufpasse).

Markus Kohm

unread,
Mar 30, 2004, 3:59:39 AM3/30/04
to
Theo Harlauch wrote:

> Hmmm, da habe ich irgendwie nichts gefunden...

Dann such mal mit den Stichworten "Abbildungsverzeichnis Abstand
group:de.comp.text.tex". Das bringt eine ganze Menge Treffer.

Frank Mittelbach

unread,
Mar 30, 2004, 7:09:31 AM3/30/04
to
Markus Kohm wrote:

>> wen wundert's? wenn man global ein internes kommando wie \addvspace
>> umdefiniert was an allen moeglichen stellen benutzt wird, dann ist die
>> wahrscheinlichkeit, dass es irgendwo kracht nit wirklich klein. und genau
>> das macht obiger code.
>
> Macht es das? Nein, macht es nicht. Die Anweisung zur Umdefinierung wird
> in die lof- bzw. die lot-Datei geschrieben. Diese Dateien werden mit
> \@starttoc gelesen. \@starttoc liest die Dateien normalerweise innerhalb
> einer Gruppe:

stimmt, ist mir spaeter auch gedaemmert, dass \@starttoc wohl eine gruppe
wegen \makeatletter besitzt.

> Ich vermute eher, dass der Anwender nicht beachtet hat, dass er, falls er
> den Code in die Präambel schreibt \makeatletter und \makeatother braucht.

ja das ist und war der eigentliche fehler (siehe weiter unten in meinem
post)

trotzdem bleibe ich dabei, dass ich es fuer keine sehr gute idee halte
designaenderungen ueber globale redefinitionen von core commands zu machen
(auch wenn global hier nur die endliche seitenzahl eines lof oder lot's
bedeutet)

gruss
frank

Markus Kohm

unread,
Mar 30, 2004, 8:16:04 AM3/30/04
to
<veröffentlicht & per Mail versendet>

Frank Mittelbach wrote:

> trotzdem bleibe ich dabei, dass ich es fuer keine sehr gute idee halte
> designaenderungen ueber globale redefinitionen von core commands zu machen
> (auch wenn global hier nur die endliche seitenzahl eines lof oder lot's
> bedeutet)

Im Allgemeinen gebe ich dir ja recht. Im konkreten Fall halte ich die
Umdefinierung von \addvspace - das tatsächlich bei den genannten
Verzeichnissen nur für die vertikalen Abstände zwischen gruppierten
Einträgen verwendet wird - für das geringere Übel gegenüber der
Umdefinierung der Kapitel-Anweisung der Klasse. Bei letzterer sollte man
sich keinesfalls darauf zu verlassen, dass die ewig unverändert bleibt.
Wenn schon, müsste man das zumindest mit \CheckCommand absichern. Zumal man
sich wirklich in Abhängigkeit von einer konkreten Version genau einer
Klasse begibt. Die Umdefinierung von \addvspace innerhalb eines
Verzeichnisses ist demgegenüber unspektakulär - insbesondere wenn sie, wie
gezeigt, indirekt erfolgt und durch eine einfache Änderung einer Anweisung:
nämlich \DeclareRobustCommand*{\deactivateaddvspace}{} wieder aufgehoben
werden kann. Sollte man das Verzeichnis also tatsächlich noch zu einem
anderen Zweck vor \listoffigures (danach ist das Verzeichnis ohnehin
ersteinmal leer) lesen wollen, dann kann man das problemlos.

Frank Mittelbach

unread,
Mar 30, 2004, 11:26:43 AM3/30/04
to
Markus Kohm wrote:

> Frank Mittelbach wrote:
>
>> trotzdem bleibe ich dabei, dass ich es fuer keine sehr gute idee halte
>> designaenderungen ueber globale redefinitionen von core commands zu
>> machen (auch wenn global hier nur die endliche seitenzahl eines lof oder
>> lot's bedeutet)
>
> Im Allgemeinen gebe ich dir ja recht. Im konkreten Fall halte ich die
> Umdefinierung von \addvspace - das tatsächlich bei den genannten
> Verzeichnissen nur für die vertikalen Abstände zwischen gruppierten
> Einträgen verwendet wird - für das geringere Übel gegenüber der

und im speziellen geb ich dir auch (bedingt) recht. problem ist aber (meines
erachtens) dass du schon recht genau verstehen musst wie die zusammenhaenge
sind und das war ja offensichtlich fuer den OP nicht so klar -> ergo finde
ich solche empfehlungen als gefaehrlich

aber es ist zugegeben ein streit um des kaisers bart

frank

Markus Kohm

unread,
Mar 31, 2004, 2:13:07 AM3/31/04
to
<veröffentlicht & per Mail versendet>

Frank Mittelbach wrote:

> ergo finde ich solche empfehlungen als gefaehrlich

Stimmt. Ich hätte auf Risiken und Nebenwirkungen hinweisen sollen.

0 new messages