Abbildungsteil

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Abbildungsteil

Beitrag von finswimmer »

Hallo,
ich brauch für eine Arbeit als Anhang einen Abbildungsteil. D.h. sämtliche Bilder sollen in einem separaten Teil mit Nr. und Beschriftung stehen. Dazu soll es noch eine Liste mit den Quellen der Bilder geben.

Gibt es da irgendwas vorgefertigtes was mir unter die Arme greifen kann? Kann mir vielleicht sogar Biblatex dabei behilflich sein?

Vielen Dank

fin swimmer

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

Du kannst BibTex verwenden. Dann erstellst du zwei bib Dateien (z.B. Literatur.bib und Quellen.bib), eine für deine Literaturangaben im Text und eine für deine Quellenangaben für die Bilder im Anhang.

Mit
\bibliography{Literatur}
und
\bibliography{Quellen}
fügst du an deiner gewünschten Stellen deine Verzeichnisse dann ein.

finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Beitrag von finswimmer »

Ich habe jetzt angefangen meinen eigenen Entrytype für biblatex zu erstellen.

Wie ich die biblatex.bst zu bearbeiten hab, hab ich so halbwegs raus. Auch die Erstellung eines BibliographyDriver ist mir schon gelungen.

Was ich jetzt noch bräuchte ist einen eigenen cite-style für diesen Entrytype. Am besten gleich mit einem zusätzlichen Befehl.

Ich habe also ein Bild, zu dem soll quasi als Bildunterschrift - entsprechend formatiert - die Daten aus der Biblatex-Datei geschrieben werden. Nennen wir diesen Befehl doch einfachmal \artcite. Das sonst übliche verhalten von \cite bzw. \autocite im authoryear-style soll aber nicht beeinflusst werden.

Wo muss ich dran schrauben?

Tschau

fin swimmer

finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Beitrag von finswimmer »

So,
wie bei mir so üblich schreib ich einen Beitrag, um dann kurze Zeit später die Lösung zu finden.

Ich brauche nicht unbedingt einen eigenen \cite-Befehl. Ich kann auch den normalen nehmen und "einfach" den entry-type abfangen und an ein neues Makro weiterleiten:
\ifthenelse{\equal{\thefield{entrytype}}{art}}
Damit es perfekt wird, bräuchte ich jetzt noch eine laufende Nummer für die Bilder beim ausführen von cite, die ich dann auch im "Literaturverzeichnis" nutzen kann. Am besten wär's natürlich wenn man das irgendwie mit caption koppeln könnte.

Any hints?

fin swimmer

PS: Achso, gibt es die Möglichkeit im Literaturverzeichnis, wenn man nach types gruppiert hat, für jede Gruppierung einen eigenen Style zu verwenden. Derzeit lasse ich mittels numeric die Quellen durchnummerieren. Für die Abbildungen würde ich das lieber gerne abschalten.

finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Beitrag von finswimmer »

finswimmer hat geschrieben: Damit es perfekt wird, bräuchte ich jetzt noch eine laufende Nummer für die Bilder beim ausführen von cite, die ich dann auch im "Literaturverzeichnis" nutzen kann. Am besten wär's natürlich wenn man das irgendwie mit caption koppeln könnte.
Das hätte ich jetzt auch gelöst.

Ich bastel mir einen eigenen counter:
\newcounter{myarts}
\setcounter{myarts}{0}
Dieser wird beim makro-aufruf hearufgesetzt:
\refstepcounter{myarts}
Außerdem verpass ich dem ganzen noch nen label, das dem bibtextkey entspricht:
\label{\thefield{entrykey}}
Somit kann ich in meinem Abbildungsverzeichnis auf die entsprechende Nummer zugreifen:
\ref{\thefield{entrykey}
So, bleibt eigentlich nur noch, dass ich für meinen Entrytype im Verzeichnis die Nummerierung loswerde.

Was mir grad noch eingefallen ist: Muss ich eigentlich unbedingt die biblatex.bst bearbeiten um einen neuen Entrytype zu definieren, oder gibt's da auch sone art ReDeclare? Ich mag es nicht unbedingt so sehr, an den Systemeinstellungen direkt rumzufummeln.

fin swimmer

finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Beitrag von finswimmer »

finswimmer hat geschrieben: So, bleibt eigentlich nur noch, dass ich für meinen Entrytype im Verzeichnis die Nummerierung loswerde.
Ich versuche grad \defbibenvironment{bibliography} dafür umzubauen. Dazu will ich den Titel abfragen der bei \printbibliography als Option mitgegeben wird um dann entsprechend die Ausgabe anzupassen.

Dieses title meine ich:
\printbibliography[type=art,heading=bibliography,title={Abbildungen}]

Und möchte ihn dementsprechend hier einsetzen:
\ifthenelse{\equal{\title}{Abbildungen}
Ich suche jetzt schon eine ganze Weile, aber ich find nicht wie ich an den Titel komme. Weiß jemand mehr?

fin swimmer

finswimmer
Forum-Anfänger
Forum-Anfänger
Beiträge: 36
Registriert: Mi 21. Apr 2010, 17:01

Beitrag von finswimmer »

So,
im großen und ganzen hab ich jetzt meinen Wunsch aus dem Ausgangsposting fertig umgesetzt.

Das einzige was mir noch nicht so gefällt, dass man für die einzelnen (Sub-)Bibliographien in Biblatex keinen eigenen Style zuweisen kann. Oder hab ich was übersehen? Gibt's dafür einen Grunde? Ist das Feature-Request.

Falls der ein oder andere mal ähnliches brauch würd ich hier mal mein Ergebnis vorstellen. Über Hinweise zu meinem Code würde ich mich auch sehr freuen. Ich bin sicher, dass da noch einige handwerkliche Fehler drin sind.
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Biblatex zur Verwaltung von Abbildungen nutzen
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 
% Ziel:	- Erfassen von Bildinformationen mittels BibLatex
% 		- Beschriften von Bilder mit den Informationen aus BibLatex
% 		- gleichzeitig nutzen der BibLatex-Informationen im normalen Zitierstil
%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Entrytype und Felder definieren
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 
% Zum erfassen von Bildinformationen muss zunächst ein neuer Entrytype, sowie einige neue Felder angelegt werden. Ein fertiger BibText-Quellcode soll so aus sehen:
% 
% @ART{artexample,
%   abb = {1},
%   title = {Example},
%   xref = {exampleref}
%   page = {23},
% }
% 
% Feldbeschreibungen:
%   abb: 	optionale Nr. des Bildes
%   title:	Titel des Bildes
%   xref:	Verweis auf Quelle des Bildes
%   page:	Seite auf der sich das Bild in Quelle befindet
% 
% Der neue entrytype, sowie die neuen Felder abb und page werden in die biblatex.bst eingetragen:
% 
% Suche nach "ENTRY {" und füge in die Liste "art" hinzu.
% 
% Suche nach "FUNCTION {output:fields.1} {" und füge der Liste hinzu (inkl. Anführungszeichen):
%   "abb"	abb				output:write:field
%   "page"	page			output:write:field
% 
% Damit kennt BibLatex den neuen Entrytype, sowie die neuen Felder.
% 
% Alle weiteren Änderungen erfolgen im Präambel des Hauptdokumentes.

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  BibliographyDriver erstellen
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\newbool{ownnr}		%Es soll die Möglichkeit geben zu entscheiden ob man die in abb gesetze Nummerierung verwenden will,
\booltrue{ownnr}	%oder die Bilder automatisch nummeriert werden soll. true = eigene, false = automatisch

\DeclareBibliographyDriver{art}{%	Der BibliograpgyDriver bestimmt die Ausgabe im Literaturverzeichnis
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \ifbool{ownnr}%
	{\printtext{\textbf{\printfield{abb}}}}%				Wenn eigene Nummern verwendet werden sollen, diese ausgeben,
	{\printtext{\textbf{Abb. \ref{\thefield{entrykey}}}}}%	ansonsten hole die Nummer die im Dokument verwendet wurde
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%	Titel
  \iffieldundef{xref}%überprüfen ob xref wirklich gesetzt wurde.
  {}	%wenn nicht, dann tue nicht
  {\entrydata{\thefield{xref}}{%wenn doch, hole die Informationen zum Eintrag
	\newunit\newblock
	\usebibmacro{in:}		%in:
	\printnames{labelname}	%Autornachname
    \setunit{\nameyeardelim}
	\usebibmacro{cite:labelyear+extrayear}	%Erscheinungsjahr
	\setunit{\bibpagespunct}}%,
	\printfield{page}	%Seitennummer
  }%
  \usebibmacro{finentry}	%Punkt
}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  CiteCommands erstellen/umdefinieren
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% Da wir neben dem normalem Ausgabeformat auch ein speziellen brauchen, muss zuächst der cite-Befehl neu geschrieben werden. Der folgende wurde außerdem um eine firstcitefull-Funktion erweitert. Als Vorlage diente der authoryear-ibid Style.

\renewbibmacro*{cite}{%
\ifthenelse{\equal{\thefield{entrytype}}{art}}	%Ist der Entrytype "art"?
  {\usebibmacro{cite:artnormal}}				%Ja -> eigenes Makro verwenden
  {\ifciteseen									%Nein, normal weiter
  {\iffieldundef{shorthand}
   {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
    {\usebibmacro{cite:ibid}}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
      {\usebibmacro{cite:label}%
       \setunit{\addspace}}
      {\printnames{labelname}%
       \setunit{\nameyeardelim}}%
      \usebibmacro{cite:labelyear+extrayear}}}
    {\usebibmacro{cite:shorthand}}}
    {\usebibmacro{cite:full}}}}

\newbibmacro*{cite:full}{%
  \printtext[bibhypertarget]{%
    \usedriver
      {\DeclareNameAlias{sortname}{default}}
      {\thefield{entrytype}}}%
  \usebibmacro{shorthandintro}}

\DeclareCiteCommand{\artcite}	%Das spezielle Ausgabeformat soll über \artcite{key} erreichbar sein.
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
	\usebibmacro{cite:art}}
  {\multicitedelim}
  {\usebibmacro{postnote}} 

\DeclareCiteCommand{\refart}	%Außerdem soll es möglich sein, sich die Bildnummer ausgeben zu lassen, ähnlich \ref{key}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\usebibmacro{cite:abb}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Makros definieren
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\newcounter{myarts}		%Sollten die Bilder durchnummeriert werden, wird dazu ein counter benötigt,
\setcounter{myarts}{0}	%und zunächst auf 0 gesetzt

\newbibmacro*{cite:art}{% Makro zum citecommand \artcite
  \ifbool{ownnr}% Es wird überprüft ob eigene Bildnummern verwendet werden sollen, oder automatisch
	{\usebibmacro{cite:artown}}%	eigene
	{\usebibmacro{cite:artcount}}%	automatisch
}

\newbibmacro*{cite:artown}{% Eigene Nummern verwenden
  \printtext{\textbf{\printfield{abb}}}	%Bildnummer fett ausgeben
  \linebreak							%Zeilenumbruch
  \usebibmacro{title}					%Titel
  \ifciteseen							%Zusätzlich wird beim ersten Vorkommen
	{}									%des Bildes
	{\label{\thefield{entrykey}}}		%ein Label vergeben, welches über den Entrykey referenziert ist
}

\newbibmacro*{cite:artcount}{% Automatische Nummerierung
  \ifciteseen{% Wenn Bild schon mal beschriftet
	\printtext{\textbf{Abb.~\ref{\thefield{entrykey}}}}% Abb. Nr. fett ausgeben
	\linebreak	%Zeilenumbruch
	\usebibmacro{title}	%Titel
  }
  {	\refstepcounter{myarts}	%Wenn Bild neu, zunächst counter erhöhen,
	\printtext{\textbf{Abb.~\themyarts}}	%Dann Abb. Nr. fett ausgeben
	\linebreak	%Zeilenumbruch
	\usebibmacro{title}	%Titel
	\label{\thefield{entrykey}}	%Label mit key vergeben
  }
}

\newbibmacro*{cite:artnormal}{%Wird bei normalen \cite-Aufruf verwenden
  \ifbool{ownnr}%Prüfung ob eigene oder automische Nummerierung
	{\usebibmacro{cite:artnormalown}}%eigene
	{\usebibmacro{cite:artnormalcount}}%automatisch  
}

\newbibmacro*{cite:artnormalown}{%eigene Nummerierung
  \printtext{\textbf{\printfield{abb}}} %Bildnummer ausgeben
  \setunit{\labelnamepunct}\newblock	%Trenner
  \usebibmacro{title}%					%Titel
}

\newbibmacro*{cite:artnormalcount}{%automatische Nummerierung
  \ifciteseen{%wurd bereits zitiert
	\printtext{\textbf{Abb.~\ref{\thefield{entrykey}}}}%Abb. Nr. fett
	\setunit{\labelnamepunct}\newblock	%Trennzeichen
	\usebibmacro{title}%	Titel	
  }
  {	\refstepcounter{myarts}%wurde noch nicht zitiert --> counter raufsetzen
	\printtext{\textbf{Abb.~\themyarts}}%Abb. Nr fett
	\setunit{\labelnamepunct}\newblock%Trennzeichen
	\usebibmacro{title}%%Titel
  }
}

\newbibmacro*{cite:abb}{%\ref-Funktion für Bildnummer
  \ifbool{ownnr}%bei eigner Nummerierung
	{\printfield{abb}}%Nummer ausgeben
	{\printtext{\textbf{Abb. \ref{\thefield{entrykey}}}}}}%ansonsten über label ermittel
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Optische Anpassung
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\DeclareFieldFormat{abb}{\textbf{Abb.~#1}}
\DeclareFieldFormat{page}{S.~#1}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Abbildungsteil füllen
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

\newcommand{\art}[2]{%Die Ausgabe des Bildes inkkl. Beschriftung
  \begin{minipage}[t]{.3\textwidth}	%Minipage mit 1/3 Seitenbreite
	\centering	%Bild zentrieren
	\includegraphics[width=.8\textwidth]{#2} %Bild einfügen und auf 80% der Minipagebreite skalieren
	 \begin{flushleft}	%Bildbeschriftung soll linksbündig
	  \leftskip.1\textwidth %und bündig mit dem Bild sein
	  \artcite{#1}	%Bild Beschriften
	\end{flushleft}
  \end{minipage}
}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Hinweise
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 
% Der Aufruf eines beschrifteten Bildes erfolgt wie folgt:
	\art{bibtexkey}{bildurl}

% Im weiterem Verlauf auf die Bildnummer referenziert werden. Wobei die Ausgabe als Abb. Nr. erfolgt.
	\refart{bibtexkey}

% Für ein automatische Nummerierung muss citetracker=true gesetzt sein. In float-Umgebungen wird dieser automatisch deaktiviert. Reaktivierung durch \citetrackertrue zu Beginn nötig.
% 
% Damit xref auch bei nur einem Verweis funktioniert muss mincrossrefs=1 gesetzt sein.

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 	  Ausblick
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% Der Code sollte ohne größe Probleme um weitere felder wie z.B. Material, Künstlerinformationen, etc. erweiterbar sein.
% 
% Insgesamt könnte der Code in einen eigenen Style umgewandelt werden. Hier bleibt die Frage zu klären, ob Änderungen an der biblatex.bst direkt erfolgen müssen oder ob es eine nicht so invasive Methode gibt.
fin swimmer

Antworten