goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 101733
Top-Poster: Johannes_B (5072)

Wir begrüßen unseren neuesten Benutzer DoDo1896.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Quellen-Nr. in Abbildungsunterschrift niedriger als im Text

 

Micha
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2020, 14:21     Titel: Quellen-Nr. in Abbildungsunterschrift niedriger als im Text
  Antworten mit Zitat      
Hallo,

ich verwende Biblatex mit Citavi für meine Quellen.
Zu folgendem Problem konnte ich bisher keine Lösung finden:

Nach Abstatz 1 füge ich eine Abbildung ein. In der caption dieser Abbildung verweise ich auf Quelle A. Im nächsten Abschnitt zitiere ich Quelle B. So sieht der Code aus:

Abschnitt 1
Abbildung \cite{A}
Abschnitt 2 \cite{B}

Als float landet die Abbildung dann (korrekt) auf der nächsten Seite, nach Abschnitt 2. Dadurch ergibt sich jedoch im PDF eine falsche Reihenfolge der Quellennummern, nämlich:

Abschnitt 1
Abschnitt 2 [2]
Abbildung [1]

Natürliche könnte ich nun manuell Absatz 2 vor die Abbildung im Code schieben, aber gerade solche manuellen Eingriffe möchte ich ja mit Latex vermeiden.

Gibt es eine Möglichkeit, dass Latex automatisch erkennt, dass die Reihenfolge im PDF anders ist, als im Code? Bzw. eine Möglichkeit, dass die Zuordnung anhand der Reihenfolge im kompilierten File erfolgt?

Schon mal herzlichen Dank!
Micha

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2020, 14:28     Titel:
  Antworten mit Zitat      
Wie wäre es mit einem InfoMinimalbeispiel?

Micha^
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2020, 17:15     Titel:
  Antworten mit Zitat      
Ich habe mein bestes gegeben, um ein halbwegs vernünftiges Minimalbeispiel zu generieren. Hier ist die Quellenreihenfolge bei [1] und [2] korrekt, allerdings kommt [4] vor [3].

Code

\documentclass[fontsize=12pt,DIV=12,BCOR=2cm,a4paper,bibtotoc]{scrreprt}
\usepackage[style=ieee]{biblatex}
\addbibresource{literatur_biblatex.bib}
\usepackage{graphicx}

\begin{document}
\chapter{Minimalbeispiel}
\section{korrekte Reihenfolge}
Absatz 1 \par
\begin{figure}[h!bt]
   \centering
   \includegraphics[width=\textwidth, height=10cm]{1.PNG}
   \caption{Bildunterschrift \cite{AuthorA.2007}}
\end{figure}
Absatz 2 \cite{AuthorB.2007} \par

\section{falsche Reihenfolge}
%wenn Bild  zu groß, um auf gleicher Seite angezeigt zu werden:
Absatz 1 \par
\begin{figure}[h!bt]
   \centering
   \includegraphics[width=\textwidth, height=10cm]{1.PNG}
   \caption{Bildunterschrift \cite{AuthorA2.2007}}
\end{figure}
Absatz 2 \cite{AuthorB2.2007} \par

\printbibliography

\end{document}
 


Beispiel-.bib-Datei:
Code

@article{AuthorA.2007,
 author = {AuthorA, A.
},
 year = {2007},
 title = {Article Title}
}

@article{AuthorB.2007,
 author = {AuthorB, B.
},
 year = {2007},
 title = {Article Title}
}

@article{AuthorA2.2007,
 author = {AuthorA2, A.
},
 year = {2007},
 title = {Article Title}
}

@article{AuthorB2.2007,
 author = {AuthorB2, B.
},
 year = {2007},
 title = {Article Title}
}
 

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2020, 18:46     Titel:
  Antworten mit Zitat      
Ich würde generell die Literaturverweise im Abbildungsverzeichnis weglassen, also beispielsweise
Code
\caption[Bildunterschrift]{Bildunterschrift \cite{AuthorA.2007}}
verwenden. Jedenfalls sind Literaturverweise, Fußnoten etc. in Verzeichnissen wie dem Abbildungsverzeichnis eher unüblich.

BTW: Du solltest einmal einen Blick in die log-Datei werfen. Dort wird vor einer veralteten Option gewarnt und auch gleich erklärt, wie man es besser macht. Das ist insofern relevant, als der KOMA-Script-Autor angekündigt hat, dass er obsoletes aus KOMA-Script entfernen will.

MoeWe
Forum-Century
Forum-Century

Beiträge: 159
Anmeldedatum: 30.08.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2020, 11:10     Titel:
  Antworten mit Zitat      
Soweit es biblatex betrifft, kannst Du davon ausgehen, dass Dein Code linear (monoton?) von oben nach unten gelesen und ausgeführt wird. Das bedeutet, dass die Reihenfolge der Quellen im Code relevant ist und nicht die in der Ausgabe. Das ist sehr tief in biblatex verankert und auch bei BibTeX-basierten Lösungen und natbib so.

Es gibt eine sehr hacky Möglichkeit, die ich absolut nicht empfehlen kann. Sie basiert darauf, dass die Zitate durch ein externes Programm (Biber oder BibTeX) bereitgestellt werden. Daher schreibt biblatex die gewünschten Zitate in eine Hilfsdatei. Dies geschieht normalerweise sofort mit \immediate\write. Aber wir können versuchen, stattdessen \write zu nutzen, das den Schreibvorgang verzögert, bis die Umgebung des \write-Befehls tatsächlich auf einer Seite auftaucht (shipout). Das bedeutet aber, dass wir sehr genau aufpassen müssen, dass alle involvierten Makros noch die richtige Definition haben (da das \write potenziell an einer anderen Stelle ausgeführt wird, als der Rest des Codes). Das habe ich für einen Zähler nicht hinbekommen, daher habe ich ihn weggelassen. Das macht hier tatsächlich nichts aus, ist aber keine gute Idee. Du solltest daher den folgenden Code eher als Machbarkeitsstudie verstehen und nicht einfach so in Dein echtes Dokument übernehmen.

Machbarkeitsstudie: Nutzung auf eigene Gefahr
Code
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{lipsum}

\usepackage[style=numeric, sorting=none, backend=biber]{biblatex}

\makeatletter
\protected\def\blx@auxwrite@nonimmediate#1#2#3{%
  \if@filesw
    \begingroup
    \blx@safe@actives
    \let\protect\string
    #2%
    \edef\blx@tempa{\write#1{#3}}%
    \blx@tempa
    \endgroup
  \fi}

% das ist KEINE gute Idee
\protected\def\blx@bibreq#1{%
  \begingroup
  \blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
  \let\blx@tempb\@empty
  % Only output as \nocited if a key wasn't also directly \cite'd
  % Since citekey output is sequential as cites are read, the .bcf might contain
  % duplicate keys with differring nocite attributes if \nocite{X} and \cite{X} both occur
  % but biber deals with this and priorities \cites
  \ifboolexpr{test {\ifinlist{#1}\blx@nocites}
              and
              not test {\ifinlist{#1}\blx@directcites}}
    {\def\blx@tempb{ nocite="1"}}
    {}%
  % citeall is always order "0" - this makes no real difference as biber
  % ignores all other citekeys in the section if citeall is present
  \ifstrequal{*}{#1}
    {\blx@auxwrite@nonimmediate\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\blx@tempb}{0}}}
    {\blx@auxwrite@nonimmediate\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\blx@tempb}{1}}}%
  % statt "1" müssten wir hier eigentlich
  % \expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname
  % haben, aber der Zähler hat dann den falschen Wert, da seine
  % Berechnung nicht verzögert wird...
  \endgroup}
\makeatother

\addbibresource{biblatex-examples.bib}


\begin{document}
\lipsum[1-2]
\begin{figure}[b]
\centering
\includegraphics[width=0.5\textwidth]{example-image}
\caption[Dolor]{Dolor \autocite{sigfridsson}}
\end{figure}

\lipsum[3] \autocite{worman}
\end{document}


Da ich nicht glaube, dass es generell möglich ist, biblatex auf verzögertes Schreiben umzustellen, bleibt mir nur, Dir die zugegebenermaßen unattraktive manuelle Umsortierung Deines Quellcodes vorzuschlagen. Oder Du nimmst einen Zitierstil, bei dem die Zitierreihenfolge egal ist.

Wenn jemand eine Idee hat, wie man biblatex mit verzögertem Schreiben nutzen kann, dann bin ich ganz Ohr.

Die gleiche Idee geht übrigens auch bei natbib.
Machbarkeitsstudie: Eltern haften für ihre Kinder
Code
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{lipsum}

\usepackage[numbers]{natbib}

\makeatletter
\renewcommand\nocite[1]{\@bsphack
  \@for\@citeb:=#1\do{%
    \@safe@activestrue
    \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
    \@safe@activesfalse
    \if@filesw
      \expandafter\write\expandafter\@auxout
        \expandafter{\expandafter\string\expandafter\citation\expandafter{\@citeb}}%
    \fi
    \if*\@citeb\else
    \@ifundefined{b@\@citeb\@extra@b@citeb}{%
       \NAT@citeundefined \PackageWarning{natbib}%
       {Citation `\@citeb' undefined}}{}\fi}%
  \@esphack}

\renewcommand\NAT@sort@cites[1]{%
  \let\NAT@cite@list\@empty
  \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
  \if@filesw
    \expandafter\write\expandafter\@auxout
      \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
  \fi
  \@ifnum{\NAT@sort>\z@}{%
    \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
  }{}%
}%
\makeatother


\begin{document}
\lipsum[1-2]
\begin{figure}[b]
\centering
\includegraphics[width=0.5\textwidth]{example-image}
\caption[Dolor]{Dolor \cite{sigfridsson}}
\end{figure}

\lipsum[3] \cite{worman}

\bibliographystyle{unsrtnat}
\bibliography{biblatex-examples}
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

Micha
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2020, 09:38     Titel:
  Antworten mit Zitat      
Danke, MoeWe, für deine Machbarkeitsstudie. Fortgeschrittene dürfen das gerne mal ausprobieren. Wink
Ich als Anfänger traue mich das noch nicht und werde deshalb die Reihenfolge in der finalen Version manuell überprüfen und ggf. anpassen müssen.

u_fischer
Forum-Meister
Forum-Meister


Beiträge: 4000
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2020, 10:38     Titel:
  Antworten mit Zitat      
Grundsätzlich sind Gleitumgebungen unabhängige Objekte. Du weißt nicht, wann der Leser sie sich anschaut und wo sie platziert werden. Das bedeutet, dass es nie wirklich möglich ist, fortlaufende Zähler "richtig" mit dem Haupttext zu synchronisieren. Es gibt oft einen Konflikt zwischen der visuellen Reihenfolge und der (wahrscheinlichen) Lesereihenfolge:

Wenn du die Gleitumgebung dort hast, wo sie referenziert wird, dann wird das wahrscheinlich so gelesen

wie in Abbildung 1 gezeigt -> gehe zu Abbildung 1, cite [1] -> zurück zum Text cite [2].

D.h. die Reihenfolge der cite-Nummer ist erstmal völlig in Ordnung.

Wenn aber so gelesen wird:

wie in Abbildung 1 gezeigt (schaue ich später erstmal weiterlesen) zurück zum Text cite [2].

Dann ist man vielleicht irritiert, wo cite [1] ist (falls man überhaupt darauf achtet).

M.E. gibt es dafür keine vernünftige, logische Lösung. Entweder verzichte auf citeorder, oder lebe mit den gelegentlichen Sprüngen.

@moewe: "Wenn jemand eine Idee hat, wie man biblatex mit verzögertem Schreiben nutzen kann, dann bin ich ganz Ohr."

Nun, ich würde nicht wirklich versuchen, alles zu verzögern. Es reicht doch ein \(z)label.
_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2020 goLaTeX.de