PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Counter ausgabe



rileksn
05-06-2006, 12:15
Hallo,

ich muss in meiner thesis die Gesamtanzahl an Seiten, Tabellen und Grafiken angeben. Wie kann ich die Ausgabe der jeweiligen Counter realisieren, nach dem motto: xx pages, yy figures and zz tables??

Besten dank!!

Steffen

edico
05-06-2006, 14:18
%
\documentclass[a5paper,12pt,smallheadings]{scrbook}
\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage{lastpage}

%---| counter figure |---
\newcounter{figcount}
\let\savefigure\figure
\let\saveendfigure\endfigure
\renewenvironment{figure}{\savefigure}{\stepcounte r{figcount}\saveendfigure}

%---| counter table |---
\newcounter{tabcount}
\let\savetable\table
\let\saveendtable\endtable
\renewenvironment{table}{\savetable}{\stepcounter{ tabcount}\saveendtable}

\begin{document}

\chapter{result\_at\_beginning\_of\_doc}
\ldots das Ergebnis am Anfang:\par
\begin{tabular}{l@{:}l}
figures &\makeatletter\@input{\jobname.fc}\makeatother\\
tables &\makeatletter\@input{\jobname.tc}\makeatother\\
pages &\pageref{LastPage}
\end{tabular}

\chapter{}
\begin{figure}[htb]
\centering\huge{Test}
\caption{Ein Bild}
\end{figure}

\begin{table}[htb]
\centering
\begin{tabular}{lll}
a&b&c
\end{tabular}
\caption{Eine Tabelle}
\end{table}

\newwrite\figcountfile
\immediate\openout\figcountfile=\jobname.fc\relax
\immediate\write\figcountfile{\arabic{figcount}}
\immediate\closeout\figcountfile

\newwrite\tabcountfile
\immediate\openout\tabcountfile=\jobname.tc\relax
\immediate\write\tabcountfile{\arabic{tabcount}}
\immediate\closeout\tabcountfile

\begin{verbatim}
Neue Zähler für Abbildungen etc. hinzufügen; denn
Klassen setzen Standardzähler gelegentlich zurück.
Die figure Umbegung so umdefinieren, dass der eigene
Zähler jeweils erhöht wird, dann kann man den Zähler
am Dokumentende einfach auslesen.
Will man den counter schon am Dokumentanfang auslesen,
dann in einen File schreiben (hier test.tc, test.fc).
\end{verbatim}

\chapter{result\_at\_end\_of\_doc}
\ldots oder das Ergebnis am Ende:\par
\begin{tabular}{l@{:}l}
figures &\makeatletter\@input{\jobname.fc}\makeatother\\
tables &\makeatletter\@input{\jobname.tc}\makeatother\\
pages &\pageref{LastPage}
\end{tabular}

\end{document}
%
edico

rileksn
05-06-2006, 15:44
Hallo edico,

danke für den Tipp.
Die Gesamtanzahl an Seiten funzt einwandfrei. DIe Zahl der Grafiken stimmt bei mir allerdings nich. habe den folgenden Code fürs speichern des counters ans ende des letzten dokuments geladen:


\newwrite\figcountfile
\immediate\openout\figcountfile=\jobname.fc\relax
\immediate\write\figcountfile{\arabic{figcount}}
\immediate\closeout\figcountfile


Im lof stehen bei mir 43 grafiken, wohingegen mir dein Code nur 41 ausspuckt.
Eine Idee was der Grund sein könnte?
Hinsichtlich der Tabellen merk ich gerade, ich habe eine longtable (wird von deinem Counter nich erfasst, was gut is da abkürzungsverzeichnis!), allerdings fängt meine reguläre Tabelle1 dann als Tabelle2 an. Wie kann ich das zurücksetzen?

Danke für die Hilfe und beste Grüße,
Steffen

rais
05-06-2006, 18:01
Moin moin,

Im lof stehen bei mir 43 grafiken, wohingegen mir dein Code nur 41 ausspuckt.
Eine Idee was der Grund sein könnte?
Du scheinst 2 Grafiken nicht über die figure-Umgebung einzubinden (also vielleicht wrapfigure? picins? Oder gar ganz ohne Umgebung eingebunden und dann dank captions-Paket \captionof{figure}{bla blubb} dann doch in die LOF?
Du könntest sonst mal diese Zeile
\renewenvironment{figure}{\savefigure}{\stepcounte r{figcount}\saveendfigure} etwa so abwandeln:

\renewenvironment{figure}{\savefigure}{\stepcounte r{figcount}\saveendfigure\typeout{+++Abbildung \thefigure berücksichtigt.}}
Dann suchst Du nach'm Kompilieren in Deiner foo.log nach "+++" : theoretisch müsste bei einer "anders" eingebundenen Grafik hier ein Sprung zu sehen sein (also meinetwegen von 1.4 auf 1.6, dann weißt Du, daß Abbildung 1.5 nicht über eine figure-Umgebung drin ist).
Hinterher kannst Du diesen \typeout{..} ja wieder rausnehmen.


Hinsichtlich der Tabellen merk ich gerade, ich habe eine longtable (wird von deinem Counter nich erfasst, was gut is da abkürzungsverzeichnis!), allerdings fängt meine reguläre Tabelle1 dann als Tabelle2 an. Wie kann ich das zurücksetzen?

Guggst Du hier (http://www.mrunix.de/forums/showthread.php?t=35224) ;)
MfG,

RedCloud
05-06-2006, 19:00
Hallo,

ich muss in meiner thesis die Gesamtanzahl an Seiten, Tabellen und Grafiken angeben. Wie kann ich die Ausgabe der jeweiligen Counter realisieren, nach dem motto: xx pages, yy figures and zz tables?


\absTab und \absFig liefern die Zahl

rc



\documentclass{scrbook}
\usepackage{lastpage}

\newcommand*{\OrigChapter}{}
\let\OrigChapter\chapter
\newcounter{abstables}
\newcounter{absfigures}
\renewcommand*{\chapter}{%
\addtocounter{abstables}{\value{table}}%
\addtocounter{absfigures}{\value{figure}}%
\OrigChapter}
\makeatletter
\AtBeginDocument{%
\AtEndDocument{%
\immediate\write\@mainaux{%
\string\gdef\string\AbsTab{\number\value{abstables }}%
\string\gdef\string\AbsFig{\number\value{absfigure s}}%
}}}
\makeatother
\begin{document}

\chapter{Eins}
foo
\begin{table}\tabular{lll}a&b&c\endtabular\caption{Tabelle 1}\end{table}
\begin{figure} Test1 \caption{Ein Bild} \end{figure}
\begin{figure} Test2 \caption{Ein Bild} \end{figure}

\chapter{bar}
\begin{figure} Test3 \caption{Ein Bild} \end{figure}
\begin{figure} Test4 \caption{Ein Bild} \end{figure}

\begin{table}\tabular{lll}a&b&c\endtabular\caption{Tabelle 2}\end{table}
\begin{table}\tabular{lll}a&b&c\endtabular\caption{Tabelle 3}\end{table}

\chapter{baz}
\begin{tabular}{@{}ll}
Anzahl Abbildungen: & \AbsFig \\
Anzahl Tabellen: & \AbsTab \\
Anzahl Seiten: &\pageref{LastPage}
\end{tabular}

\end{document}

rileksn
06-06-2006, 05:00
Moin,

danke für die Hilfe!
Also die tabellen funzen jetzt einwandfrei. Problem sind immer noch die figures.
Laut tof habe ich nun 45 figures, ausgabe ist nach wie vor geringer und zwar 43. Komischerweise liefert mir RedClouds code 116 figures und 17 tables (anstatt 45 und 6).
Alle figures sind in {figure}-umgebungen, keine wrapfigures, overpics sind in einer figure umgebung. Das log file liefert zwei verschiedene Varianten (nach edicos code) ...



[15]
File: graphics/3sphingomyelin.eps Graphic file (type eps)
<graphics/3sphingomyelin.eps>
+++Abbildung 4berücksichtigt.
Overfull \vbox (4.97491pt too high) has occurred while \output is active []


oder



[13]
+++Abbildung 2berücksichtigt.

Overfull \vbox (4.97491pt too high) has occurred while \output is active []

Die 2. ausgabe find ich persönlich komisch, da der Dateiname nicht mit ausgegeben wird. Ich habe diese Grpahiken einfach mal herausgenommen aus dem dokument, um zu checken ob es einen Einfluss auf die Ausgabe hat. Hat es, also ist das nicht das Problem.
Was ist denn der eigentliche Befehl der den counter um eins erhöht, "\begin{figure}"???
Es ist zwar nicht schön und eigentlich völliger Unsinn, aber könnte man den counter manuell erhöhen?
Hat noch jemand nen Idee was es sein könnte?? Ich würde euch gern ein MB bereitstellen, hab nur absolut null schimmer auf was ich das eingrenzen soll, sorry.

Beste Grüße,
Steffen

rais
06-06-2006, 11:27
Moin moin,
das hört sich so an, als hättest Du eine article-Klasse - oder zumindest den figure-Zähler von chapter unabhängig gemacht.
Was sagt denn \thefigure am Dokumentende?
MfG,

rileksn
06-06-2006, 12:21
Aloha,

ich depp...problem erkannt. hab zwei sideway figures im Anhang übersehen. Die erkennt der counter nich. Die in eine extra figure umgebung zu packen hat bei mir leider nich geklappt ("not in outer par mode").
Wie kann ich die trotzdem in den counter mit reinnehmen??

Riesendank,
Steffen

bischi
06-06-2006, 12:22
ev ein \addtocounter könnte weiterhelfen.

MfG Bischi

PS: http://www.weinelt.de/latex/addtocounter.html

rileksn
06-06-2006, 12:36
hmmm...also \addtocounter{figcount}{2} funzt leider nich.

bischi
06-06-2006, 12:41
Bei jeder dieser Grafiken ein

\addtocounter{figure}{1}

sollte es tun.

MfG Bischi

rileksn
06-06-2006, 13:05
also wenn ich das in die sideways umgebung packe hilft das nich weiter. Ich vermute dem figcount counter is ziemlich wurscht was in der sidewaysfigure umgebung steht, da er die gar nich erkennt. Kann man den counter so umpolen, dass er das auch mitzählt?
Wenn ich den manuellen addtocounter in andere graphiken reinkopiere, erhöht das zwar die eigetnlich Figurnummer, nur ändert sich doch trotzdem nix an der anzahl an grafiken. Sind ja zwei verschieden Zähler, da nützt es nix den einen zu erhöhen.
Leider hat \addtocounter{figcount}{2} keine effekt.

Irgendwelche anderen Ideen?

Steffen

rileksn
07-06-2006, 10:09
Hab es doch zum laufen gebracht, wenn auch mit ein wenig schummeln. Der \addtocounter{figcount}{2} befehl klappt irgendwie doch, keine Ahnung was ich da letztens falsch gemacht habe.
Insofern jemand trotzdessen eine Idee hat, wie man sidewayfigures automatisch mit in den zähler aufnehmen kann, hab ich stets ein offenes Ohr... ;-)

Danke nochmals an alle und beste Grüße,
Steffen

rais
07-06-2006, 22:41
:confused:
wat is denn nu?


:
Abbildungen: \thefigure
\end{document}

was steht denn nu in der letzten Zeile?
Nach Deinen bisherigen Angaben zu schließen zählt der figure-Zähler doch sowieso durch... sollte also einen passenden Wert noch innehaben - oder was versteh' ich nicht?
MfG,

rileksn
08-06-2006, 03:27
Hi Rainer,

\thefigure bringt mir in meinem falle 43, im lof stehen 43 (und es sind tatsaechlich 43). Der Zaehler figcount kommt stets auf 2 weniger. Wie gesagt, Ursache sind die 2 sidewayfigures. Sobald ich die rausnehme funzt alles wunderbar (thefigure und figcount sind 41).
Hab das nun so hingemogelt, das ich den figcount zaehler um 2 erhoeht habe, da der counter die sidewayfigures ignoriert. Die Frage war,
a) ob ich den COunter so umpolen kann, dass er diese auch erkennt
b) ich die sidewayfigure umgebung modifiziere (wie auch immer??)
c) oder ob ich mit dem manuellen erhoehen leben muss.

MfG
Steffen

rais
08-06-2006, 14:39
Hi Rainer,

\thefigure bringt mir in meinem falle 43, im lof stehen 43 (und es sind tatsaechlich 43). Der Zaehler figcount kommt stets auf 2 weniger.
Ich versteh' Dich nicht...
Die eigentliche Frage war doch, wie Du an die Gesamtzahl der Abbildungen kommst und \thefigure liefert Dir offensichtlich schon das korrekte Ergebnis - wozu willst Du dann figcount noch anpassen?
Sowohl edico's als auch RedCloud's Ansätze gehen doch davon aus, daß der figure-Zähler an den chapter-Zähler gebunden ist, wie es bei den book und report-Klassen ja durchaus Standard ist - das scheint bei Dir aber nicht der Fall zu sein: entweder hast Du eine kapitellose Klasse wie article/scrartcl, oder Du hast diese Zählerbindung selbst aufgelöst...
...aber weder das eine noch das andere hast Du verlauten lassen, sodaß man sich wieder tiefstgründig mit seiner Glaskugel beschaffen muß ;)

rileksn
08-06-2006, 15:20
arrrr...oki, entschuldigung bei allen. Ich war so auf den figcount zähler gepolt, und hab den wald vor lauter bäumen (thefig) nich gesehen.
Sorry, und danke für die ausdauernde hilfe.

MfG
Steffen