Seite 1 von 1
\listoffigures nur ausgeben falls Abbildungen vorhanden
Verfasst: Mo 19. Sep 2011, 12:11
von IrenaSekuta
Hallo zusammen,
anbei mein Minimalbeispiel:
\documentclass{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\begin{document}
\listoffigures
\listoftables
\end{document}
Gibt es eine Möglichkeit die Anweisungen \listoffigures oder \listoftables automatisch ausführen zu lassen,in Abhängigkeit ob Abbildungen oder Tabellen vorhanden sind?
Gruss,
Irena
Verfasst: Mo 19. Sep 2011, 13:24
von LuPi_Gast
Markus Kohm hat mir vor einiger Zeit diese Frage beantwortet. Auf dieser
Basis ist dann der von mir ergänzte Code entstanden. Du kannst dies
sicherlich entsprechend modifizieren.
\makeatletter
\newcommand*{\OriginalListOfFigures}{}
\let\OriginalListOfFigures\listoffigures
\newcommand*{\Originall <at> figure}{}
\newcounter{listlofentries}
\renewcommand*{\listoffigures}{%
\let\Originall <at> figure\l <at> figure
\renewcommand*{\l <at> figure}{%
\stepcounter{listlofentries}\Originall <at> figure
}%
\setcounter{listlofentries}{0}%
\OriginalListOfFigures
\ifnum \value{listlofentries}=0
Dokument enth\"alt keine Bilder\par
\fi
}
\newcommand*{\OriginalListOfTables}{}
\let\OriginalListOfTables\listoftables
\newcommand*{\Originall <at> table}{}
\newcounter{listlotentries}
\renewcommand*{\listoftables}{%
\let\Originall <at> table\l <at> table
\renewcommand*{\l <at> table}{%
\stepcounter{listlotentries}\Originall <at> table
}%
\setcounter{listlotentries}{0}%
\OriginalListOfTables
\ifnum \value{listlotentries}=0
Dokument enth\"alt keine Tabellen\par
\fi
}
\makeatother
Verfasst: Mo 19. Sep 2011, 13:28
von LuPi_Gast
Damals habe ich auch noch ein kleines Paket daraus gestrickt ...
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{loflotwoentry}[2010/04/29]
% Datei loflotwoentry.sty
% Paket loflotwoentry
% Quelle Code von Markus Kohm, 29. April 2010
% Erstellt 29. April 2010
% Aktualisiert s. o.
%
% Beschreibung Falls keine Einträge in lof und/oder lot enthalten sind,
% werden entsprechende Kommentare eingetragen.
\newcommand{\lofwoentrycomment}{-- Dieses Dokument enthält keine Abbildungen! --}
\newcommand{\lotwoentrycomment}{-- Dieses Dokument enthält keine Tabellen! --}
\newcommand{\setlofwoentrycomment}[1]{\renewcommand{\lofwoentrycomment}{#1}}
\newcommand{\setlotwoentrycomment}[1]{\renewcommand{\lotwoentrycomment}{#1}}
\newcommand*{\OriginalListOfFigures}{}
\let\OriginalListOfFigures\listoffigures
\newcommand*{\Originall@figure}{}
\newcounter{listlofentries}
\renewcommand*{\listoffigures}{%
\let\Originall@figure\l@figure
\renewcommand*{\l@figure}{%
\stepcounter{listlofentries}\Originall@figure
}%
\setcounter{listlofentries}{0}%
\OriginalListOfFigures
\ifnum \value{listlofentries}=0
\lofwoentrycomment\par
\fi
}
\newcommand*{\OriginalListOfTables}{}
\let\OriginalListOfTables\listoftables
\newcommand*{\Originall@table}{}
\newcounter{listlotentries}
\renewcommand*{\listoftables}{%
\let\Originall@table\l@table
\renewcommand*{\l@table}{%
\stepcounter{listlotentries}\Originall@table
}%
\setcounter{listlotentries}{0}%
\OriginalListOfTables
\ifnum \value{listlotentries}=0
\lotwoentrycomment\par
\fi
}
% EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF EOF
Verfasst: Mo 19. Sep 2011, 16:31
von IrenaSekuta
Herzlichen Dank für die Info. Leider verstehe ich nicht ganz, welches Kommando ich nun nutzen muss.
Wäre es auch möglich, die Ausgabe ganz zu unterbinden, wenn kein Eintrag vorhanden ist? Bin leider nicht so firm in der Programmierung von Latex, sodass ich es mir aus dem hier offerierten Code nicht herleiten kann.
Eventuell wäre es möglich, wenn sich jemand die Mühe machen würde, den Code mit mir durchzugehen, damit ich ihn verstehe:
\newcommand*{\OriginalListOfFigures}{} % Verstehe ich
\let\OriginalListOfFigures\listoffigures
\newcommand*{\Originall@figure}{} % Verstehe ich..bis auf dieses @-Zeichen
\newcounter{listlofentries} % Verstehe ich
% Der Befehl listoffigures wird nun umgeschrieben, aber ich verstehe nicht, was da genau gemacht wird...generell verstehe ich schon nicht, was dieses @-Zeichen immer soll. ich weiss, dass ich für einige hier bestimmt Basiswissen, aber ich weiss leider nicht genau, wo ich mir dieses Basiswissen aneignen kann.
\renewcommand*{\listoffigures}{%
\let\Originall@figure\l@figure
\renewcommand*{\l@figure}{%
\stepcounter{listlofentries}\Originall@figure
}%
\setcounter{listlofentries}{0}%
\OriginalListOfFigures
\ifnum \value{listlofentries}=0
\lofwoentrycomment\par
\fi
}
Zwei Zeilen
Verfasst: Mo 19. Sep 2011, 17:49
von localghost
Das kriegt man doch eigentlich mit zwei Zeilen hin.
\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\newcommand*{\optlof}{\IfFileExists{\jobname.lof}{\listoffigures}{\relax}}
\newcommand*{\optlot}{\IfFileExists{\jobname.lot}{\listoftables}{\relax}}
\begin{document}
\optlof
\optlot
Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.
\end{document}
Oder habe ich da was falsch verstanden?
Thorsten
Verfasst: Mo 19. Sep 2011, 18:22
von Sepp99
Leider wird bei dem Beispiel von localghost weder eine .lof-, noch eine .lot-Datei erstellt. Das heißt, der Code funktioniert nur, wenn solche schon vorhanden sind.
Ich verstehe auch das Problem nicht ganz, denn normalerweise weiß ich doch, ob Bilder und Tabellen im TeX-File sind. Trotzdem - interessantes Thema.
Gruß, Sepp.-
Merci
Verfasst: Mo 19. Sep 2011, 18:49
von IrenaSekuta
Herzlichen Dank für eure Hilfe.
Ich probiere gerade Latex bei uns im Unternehmen einzuführen und möchte es den Kollegen so einfach wie möglich machen. Und ich möchte die Kollegen gerne mit ein paar netten Features von Latex locken, die Word eben nicht hat.
Und da hatte ich die Idee, dass es doch ein nettes Feature wäre, wenn das Abbildungsverzeichnis abhängig von vorhandenen Abbildungen erstellt wird oder eben nicht.
Werde den Code morgen früh direkt ausprobieren, aber ich denke, es es genau das ist was ich gesucht habe:
\newcommand*{\optlof}{\IfFileExists{\jobname.lof}{\listoffigures}{\relax}}
Sepp schreibt:
Leider wird bei diesem Beispiel weder eine .lof-, noch eine .lot-Datei erstellt. Das heißt, der Code funktioniert nur, wenn solche schon vorhanden sind.
Aber die Idee ist doch nicht schlecht. Falls es Abbildungen gibt, wird eine .lof erzeugt und \listoffigures ausgegeben, ansonsten nur \relax.
Gruß,
Irena
Sinnfrage
Verfasst: Mo 19. Sep 2011, 19:09
von localghost
IrenaSekuta hat geschrieben:[…] Und da hatte ich die Idee, dass es doch ein nettes Feature wäre, wenn das Abbildungsverzeichnis abhängig von vorhandenen Abbildungen erstellt wird oder eben nicht. […]
Dieses "Feature" ist aber eigentlich sinnlos. Gibt es keine Abbildungen, lässt man den Befehl für das Verzeichnis einfach weg.
Re: Merci
Verfasst: Mo 19. Sep 2011, 19:20
von Sepp99
IrenaSekuta hat geschrieben:Aber die Idee ist doch nicht schlecht. Falls es Abbildungen gibt, wird eine .lof erzeugt und \listoffigures ausgegeben, ansonsten nur \relax.
Naja - eben nicht, wie ich schrieb:
Leider wird bei diesem Beispiel weder eine .lof-, noch eine .lot-Datei erstellt. Das heißt, der Code funktioniert nur, wenn solche schon vorhanden sind.
Aber teste es selbst.
Gruß, Sepp.-
Re: Sinnfrage
Verfasst: Di 20. Sep 2011, 08:14
von LuPi_Gast
localghost hat geschrieben:Dieses "Feature" ist aber eigentlich sinnlos. Gibt es keine Abbildungen, lässt man den Befehl für das Verzeichnis einfach weg.
Klares Jein! Bei mir ging es um ein Template, das (in meinem beruflichen Umfeld) allgemein Anwendung finden kann, ohne dass ich bei jedem Bericht owai schauen [und reagieren] muss, ob ich in der vorliegenden Version gerade Tabellen oder Bilder habe.
Du hast aber natürlich Recht, wenn es sich um singuläre Dokumente handelt; da sollte ich als Ersteller schon wissen, was ich fabriziere.