PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \listoffigures automatisch ausblenden, wenn keine figures



Cubo
10-09-2007, 22:22
Hallo liebes Forum,

Verzeichnisse automatisch ausblenden, wenn keine diesbez. Objekte vorhanden:
Ich möchte Verzeichnisse automatisch ausblenden lassen, wenn für das betroffene Verzeichnis keine Objekte im Dokument vorhanden sind. Beispielsweise soll das Abbildungsverzeichnis nicht dargestellt (und auch nicht ins TOC eingetragen) werden, wenn keine Abbildungen vorhanden sind. Dies möchte ich mit folgenden Verzeichnissen umsetzten:


\listoffigures
\listoftables
\listof{code}{Codeverzeichnis}
\printindex
\bibliography{...}


Dieses Vorhaben konnte ich bereits für das Index- und Literaturverzeichnis mit dem \ifdefined-Befehl umsetzen:


\ifdefinded<\Kriterium>
...betroffene Befehle...
\fi

Auf das Index- und Literaturverzeichnis angewandt sieht das dann so aus:


%----------------------------------------------------%----------------------
\ifdefined\bibliography % Literaturverzeichnis
\renewcommand{\refname}{Literaturverzeichnis} %----------------------
\bibliography{bib/Literatur}
\addcontentsline{toc}{section}{Literaturverzeichni s}
\label{sec:Literaturverzeichnis}
\fi
%----------------------------------------------------%----------------------
\ifdefined\printindex % Indexverzeichnis
\renewcommand{\indexname}{Indexverzeichnis} %----------------------
\printindex
\addcontentsline{toc}{section}{Indexverzeichnis}
\label{sec:Indexverzeichnis}
\fi
%---------------------------------------------------------------------------


Frage:

Wie kann ich die übrigen Verzeichnisse (folgend dargestellt) automatisch ausblenden lassen, wenn keine diesbezügliche Objekte vorhanden sind?



%---------------------------------------------------------------------------
\listoffigures % Abbildungsverzeichnis
\addcontentsline{toc}{section}{Abbildungsverzeichn is}%----------------------
\mtcaddsection
\label{sec:Abbildungsverzeichnis}
%----------------------------------------------------%----------------------
\listoftables % Tabellenverzeichnis
\addcontentsline{toc}{section}{Tabellenverzeichnis } %----------------------
\mtcaddsection
\label{sec:Tabellenverzeichnis}
%----------------------------------------------------%----------------------
\listof{code}{Codeverzeichnis} % Codeverzeichnis
\addcontentsline{toc}{section}{Codeverzeichnis} %----------------------
\label{sec:Codeverzeichnis}
%----------------------------------------------------%----------------------

Ist das irgendwie mit \ifdefinded...\fi realisierbar? Oder hat jemand einen anderen Lösungsansatz parat?

Anmerkungen:

Beim Codeverzeichnis handelt es sich um eine eigens mit dem Package "float" erzeugte Float-Umgebung, wobei "code" analog zu "fig" oder "tab" steht.
Ich verwende die Article-Klasse


Besten Dank schon mal für eure Antworten.

Lg
-cubo

Cubo
16-09-2007, 14:38
Hi @ all,

Hiermit möchte ich nochmals kurz nachfragen, ob die oben gestellte Frage nicht zu beantworten ist? Wäre aber schön, wenn das mit der automatischen Verzeichnis-Ausblendung irgendwie funktionieren würde.

Falls jemand weiss, dass das Vorhaben NICHT funktioniert, wäre das doch auch schon eine möglich Antwort?...

Lg
-cubo

rais
16-09-2007, 16:31
Moin moin,


Frage:

Wie kann ich die übrigen Verzeichnisse (folgend dargestellt) automatisch ausblenden lassen, wenn keine diesbezügliche Objekte vorhanden sind?



%---------------------------------------------------------------------------
\listoffigures % Abbildungsverzeichnis
\addcontentsline{toc}{section}{Abbildungsverzeichn is}%----------------------
\mtcaddsection
\label{sec:Abbildungsverzeichnis}
%----------------------------------------------------%----------------------
\listoftables % Tabellenverzeichnis
\addcontentsline{toc}{section}{Tabellenverzeichnis } %----------------------
\mtcaddsection
\label{sec:Tabellenverzeichnis}
%----------------------------------------------------%----------------------
\listof{code}{Codeverzeichnis} % Codeverzeichnis
\addcontentsline{toc}{section}{Codeverzeichnis} %----------------------
\label{sec:Codeverzeichnis}
%----------------------------------------------------%----------------------

Ist das irgendwie mit \ifdefinded...\fi realisierbar? Oder hat jemand einen anderen Lösungsansatz parat?

zumindest was LOF/LOT angeht, hätte ich da eine Idee:


\documentclass{article}
\usepackage{ifthen}
\makeatletter
\AtEndDocument{%adaptiert aus lastpage.sty
\message{Info: Setting LastFigure, LastTable}%
\immediate\write\@auxout{\string\newlabel{LastFigu re}{{\thefigure}{}}}%
\immediate\write\@auxout{\string\newlabel{LastTabl e}{{\thetable}{}}}%
}%
\makeatother
\let\listoffiguresorg\listoffigures
\let\listoftablesorg\listoftables
\renewcommand\listoffigures{%
\ifthenelse{\equal{\ref{LastFigure}}{0}}{}{%
\listoffiguresorg
\addcontentsline{toc}{section}{\listfigurename}
}}
\renewcommand\listoftables{%
\ifthenelse{\equal{\ref{LastTable}}{0}}{}{%
\listoftablesorg
\addcontentsline{toc}{section}{\listtablename}
}}

\begin{document}
\tableofcontents
\listoffigures
\listoftables
\clearpage
\section{Test}
\begin{table}[hbp]
\centering
\fbox{\Large Eine Tabelle}
\caption{Testtabelle}
\label{fig:testtab}
\end{table}
\end{document}

So, wie es hier steht, sollte eine LOT mit angelegt werden, aber keine LOF.
Das funzt natürlich nur, solange Du die figure- und table-Zähler in Ruhe lässt, das gilt u. A. auch dann, wenn Du z. B. per \numberwithin{figure}{section} aus dem amsmath-Paket bzw. \counterwithin{figure}{section} aus dem chngcntr-Paket den Abbildungszähler an den Abschnittszähler gebunden haben solltest -- da funzt dieser Code nicht mit zusamen.
Den \mtcaddsection kannst Du an den entsprechenden Stellen noch ergänzen, aber die \label würde ich hier weglassen, schließlich können diese ja nun auch weggelassen werden und ein etwaiger \ref darauf wird dann entsprechend mit ``Unknown label´´ o. ä. quittiert.

OTOH kannst Du das Teil vielleicht an Deinen Code-Zähler adaptieren...?
Meiner Einer nutzt für die Code-Darstellung das listings-Paket, da gibt es extra ein \lstlistoflistings;-)

MfG,