PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zweites Verzeichnis anpassen



korgman2000
24-04-2013, 22:47
Ich habe mit "\DeclareCaptionType{figureA}[Abb2.][Verzeichnis 2]" ein zweites Verzeichnis für Abbildungen angelegt, das ich dann mit "\listoffigureAs" aufrufe. Allerdings ist dieses Verzeichnis anders formatiert als mein "listoffigures", das ich mit folgenden Befehlen angepasst habe:

\setlength{\cftfigindent}{0cm}
\renewcommand{\cftfigpresnum}{Abb. }
\setlength{\cftfignumwidth}{1.75cm}


Kann mir jemand die äquivalenten Befehle für das zweite Verzeichnis nennen bzw. mir sagen, wie ich "figureA" formatieren kann?

Vielen Dank schon im Voraus!

sommerfee
26-04-2013, 06:40
Um das ausprobieren und modifizieren zu können, brauchen wir ein Minimalbeispiel [1]. Daher wäre es nett, wenn du eines für uns bereitstellen könntest, alleine schon um zu vermeiden, daß unsere Lösung bei dir gar nicht funktioniert, weil du eine andere Dokumentenklasse als angenommen verwendest, ein Paket verwendest, welches eine andere Lösung erforderlich macht etc.

Siehe auch: http://www.mrunix.de/forums/showthread.php?t=38129

[1] http://www.minimalbeispiel.de/

korgman2000
26-04-2013, 09:38
Hier ist mal ein Minimalbeispiel:



\documentclass[12pt,oneside]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[applemac]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tocloft}
\usepackage[pdftex]{graphicx}
\usepackage[font=footnotesize,justification=centering]{caption}
\setcapindent{0pt}
\DeclareCaptionType{figureA}[Fig.][Verzeichnis 2]

\usepackage{chngcntr}
\counterwithout{figure}{chapter}
\counterwithout{figure}{section}

\setlength{\cftfigindent}{0cm}
\renewcommand{\cftfigpresnum}{Abb. }
\setlength{\cftfignumwidth}{1.75cm}
\renewcommand{\cftdotsep}{\cftnodots}


\begin{document}
\renewcommand{\figurename}{Abb.}

\begin{figure}[!ht]
\centering{\includegraphics{bild1}\caption{Bild für Verzeichnis 1}}
\end{figure}

\begin{figureA}[!ht]
\centering{\includegraphics{bild1}\caption{Bild für Verzeichnis 2}}
\end{figureA}

\newpage\renewcommand{\listfigurename}{Verzeichnis 1}
\listoffigures

\newpage
\listoffigureAs

\end{document}



Wie kann ich beispielsweise jetzt das Kürzel "Fig." anstelle von "Abb." im zweiten Verzeichnis erzwingen?

sommerfee
27-04-2013, 08:29
\setcapindent{0pt}

Ich würde KOMA-Befehle zur Einstellung der Beschriftungen und caption-Paketoptionen zur Einstellung der Beschriftung nicht mischen, auch wenn es zu funktionieren scheint (und in der Regel auch tut). Also hier besser "format=plain" verwenden.


\usepackage{chngcntr}
\counterwithout{figure}{chapter}
\counterwithout{figure}{section}

Da du sowieso das caption-Paket lädst, kannst du auch die Option "figurewithin=none" verwenden.


\renewcommand{\figurename}{Abb.}

=> figurename={Abb.}



\centering{\includegraphics{bild1}\caption{Bild für Verzeichnis 1}}

\centering ist ein Befehl ohne Argumente, die geschweiften Klammern stören zwar nicht, sind aber überflüssig.


\renewcommand{\listfigurename}{Verzeichnis 1}
=> listfigurename={Verzeichnis 1}


Wie kann ich beispielsweise jetzt das Kürzel "Fig." anstelle von "Abb." im zweiten Verzeichnis erzwingen?

\DeclareCaptionType ist leider (noch) nicht an das tocloft-Paket angepasst, man hat also beim neuen Verzeichnis immer die gleiche Formatierung wie bei \listoffigures, was für fast alle tocloft-Parameter auch ganz praktisch ist, aber eben nicht für \cftfigpresnum.

Ich werde mir überlegen, was ich da schönes in den nächsten Tagen/Wochen einbauen kann. Bis dahin hilft folgender Hack, vorausgesetzt, dein caption-Paket ist halbwegs aktuell:

(Update: Hack entfernt, da nun eine Lösung existiert, siehe folgende Beiträge von mir)

Nicht schön, aber damit solltest du erstmal weiterkommen, bis es eine brauchbare Lösung für das Problem gibt.

P.S.: https://sourceforge.net/p/latex-caption/tickets/11/

sommerfee
27-04-2013, 08:57
BTW: Warum verwendest du als KOMA-Script-Anwender überhaupt tocloft und nicht tocstyle (von KOMA-Script)? Mit letzterem hättest du deine Probleme überhaupt nicht...

sommerfee
27-04-2013, 16:44
Ich habe gebastelt, herausgekommen ist das Kommando \PrepareListOf, mit dem man solche Dinge dem caption- bzw. newfloat-Paket unterjubeln kann:


\documentclass[12pt,oneside]{book}
\usepackage[ngerman]{babel}
\usepackage[demo]{graphicx}
\usepackage{tocloft}

\usepackage[figurewithin=none,figurename={Abb.},listfigurename ={Verzeichnis 1}]{caption}

\DeclareFloatingEnvironment[fileext=loa]{figureA}[Fig.][Verzeichnis 2]

\setlength{\cftfigindent}{0cm}
\renewcommand{\cftfigpresnum}{Abb.~}
\setlength{\cftfignumwidth}{1.75cm}
\renewcommand{\cftdotsep}{\cftnodots}

\PrepareListOf{figureA}{\renewcommand{\cftfigpresn um}{Fig.~}}

\begin{document}

\begin{figure}[!ht]
\centering\includegraphics{bild1}\caption{Bild f"ur Verzeichnis 1}
\end{figure}

\begin{figureA}[!ht]
\centering\includegraphics{bild1}\caption{Bild f"ur Verzeichnis 2}
\end{figureA}

\newpage
\listoffigures

\newpage
\listoffigureAs

\end{document}

Dies ist dem Umstand geschuldet, daß es für die Listenformatierungen keine standardisierten Mechanismen gibt und deswegen das newfloat-Paket intern einfach \listoffigures verwendet.

Hübscher ist es jedoch, die Möglichkeiten des tocloft-Paketes zu verwenden:


\documentclass[12pt,oneside]{book}
\usepackage[ngerman]{babel}
\usepackage[demo]{graphicx}
\usepackage{tocloft}

\usepackage[figurewithin=none,figurename={Abb.},listfigurename ={Verzeichnis 1}]{caption}

\newlistof{figureA}{loa}{Verzeichnis 2}
\DeclareFloatingEnvironment[fileext=loa]{figureA}[Fig.]
% Aufgrund eines Fehlers im tocloft-Paket muß die Dateiendung
% bei \DeclareFloatingEnvironment wiederholt werden.

\setlength{\cftfigindent}{0cm}
\renewcommand{\cftfigpresnum}{Abb. }
\setlength{\cftfignumwidth}{1.75cm}

\setlength{\cftfigureAindent}{0cm}
\renewcommand{\cftfigureApresnum}{Fig. }
\setlength{\cftfigureAnumwidth}{1.75cm}

\renewcommand{\cftdotsep}{\cftnodots}

\begin{document}

\begin{figure}[!ht]
\centering\includegraphics{bild1}\caption{Bild f"ur Verzeichnis 1}
\end{figure}

\begin{figureA}[!ht]
\centering\includegraphics{bild1}\caption{Bild f"ur Verzeichnis 2}
\end{figureA}

\newpage
\listoffigures

\newpage
\listoffigureA

\end{document}


Der Kram wandert die nächsten Tage nach CTAN, bis dahin kann auf https://sourceforge.net/p/latex-caption/code/HEAD/tree/trunk/tex/ zurückgegriffen werden, die aktualisierte newfloat-Dokumentation findet sich hier: https://sourceforge.net/p/latex-caption/code/HEAD/tree/trunk/doc

sommerfee
30-04-2013, 21:07
korgman2000, eine kurze Rückmeldung wäre nett, bevor ich den Kram nach CTAN packe.

korgman2000
02-05-2013, 16:20
Entschuldige, ich war einige Tage außer Haus.
Auf jedem Fall vielen Dank für deine Antworten; es klappt so sehr gut!

klops
03-05-2013, 08:49
So geht übrigens ganz ohne tocloft und caption:
\documentclass[12pt,oneside,listof=flat,listof=entryprefix]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[demo]{graphicx}
\setkomafont{caption}{\centering\footnotesize}
\setcapindent{0pt}
\DeclareNewTOC[%
float,
type=figureA,
listname={Verzeichnis 2},
name={Fig.},
]{lofigureA}
\providecommand*{\listoflofigureAentryname}{\figur eAname}% Das sollte lauf
% Doku eigentlich automatisch passieren. Muss
% ich mal einen Bug-Report schreiben, um zu
% erfahren, ob ich da etwas falsch verstanden
% habe.

\usepackage{chngcntr}
\counterwithout{figure}{chapter}

\AtBeginDocument{%
\renewcaptionname{ngerman}\figurename{Abb.}%
}

\begin{document}

\begin{figure}[!ht]
\centering\includegraphics{bild1}\caption{Bild für Verzeichnis 1 mit einer
langen Überschrift, um zu sehen, was dabei passiert, wenn es über eine Zeile
hinaus geht}
\end{figure}

\begin{figureA}[!ht]
\centering{\includegraphics{bild1}\caption{Bild für Verzeichnis 2}}
\end{figureA}

\newpage\renewcommand{\listfigurename}{Verzeichnis 1}
\listoffigures

\newpage
\listoffigureAs

\end{document}

Nach dem zweiten Lauf sehen die Verzeichnisse noch etwas seltsam aus, aber nach dem dritten passt es dann.

PS: Als Rache dafür, dass Du bei graphicx die überflüssige Option pdftex gesetzt und die für ein vollständiges Minimalbeispiel (http://www.mrunix.de/forums/showthread.php?t=66921) notwendige Option demo weggelassen hast, habe ich bei inputenc ansinew durch utf8 ersetzt. Das musst Du natürlich ggf. wieder zurück ändern …

PS2: Antwort von Markus Kohm auf meinen im Code angekündigten Bug-Report:
Siehe http://www.komascript.de/release3.11b. Das Problem wurde also umgehend beseitigt.

korgman2000
07-05-2013, 19:46
Vielen Dank für eure Hilfe! Jetzt passt alles wunderbar!