Anzeige:
Ergebnis 1 bis 3 von 3

Thema: \listoffigures automatisch ausblenden, wenn keine figures

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.08.2007
    Ort
    Krattigen / Schweiz
    Beiträge
    41

    Question \listoffigures automatisch ausblenden, wenn keine figures

    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:
    Code:
    \ifdefinded<\Kriterium>
    ...betroffene Befehle...
    \fi
    Auf das Index- und Literaturverzeichnis angewandt sieht das dann so aus:
    Code:
    %----------------------------------------------------%----------------------
    \ifdefined\bibliography                              % Literaturverzeichnis
    \renewcommand{\refname}{Literaturverzeichnis}        %----------------------
    \bibliography{bib/Literatur}
    \addcontentsline{toc}{section}{Literaturverzeichnis}
    \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?

    Code:
    %---------------------------------------------------------------------------
    \listoffigures                                       % Abbildungsverzeichnis
    \addcontentsline{toc}{section}{Abbildungsverzeichnis}%----------------------
    \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

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.08.2007
    Ort
    Krattigen / Schweiz
    Beiträge
    41

    Smile reaktivierung...

    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

  3. #3
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von Cubo Beitrag anzeigen
    Frage:

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

    Code:
    %---------------------------------------------------------------------------
    \listoffigures                                       % Abbildungsverzeichnis
    \addcontentsline{toc}{section}{Abbildungsverzeichnis}%----------------------
    \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:
    Code:
    \documentclass{article}
    \usepackage{ifthen}
    \makeatletter
    \AtEndDocument{%adaptiert aus lastpage.sty
       \message{Info: Setting LastFigure, LastTable}%
       \immediate\write\@auxout{\string\newlabel{LastFigure}{{\thefigure}{}}}%
       \immediate\write\@auxout{\string\newlabel{LastTable}{{\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,
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

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