xref und backref

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.
Miou

xref und backref

Beitrag von Miou »

Hi ihr Latex-Verrückten,

vielleicht finde ich hier jemanden, der eine Idee hat. Es geht um die backref-Funktion in Biblatex beim Style footnote-dw. Ich benutze xref und die Verweise auf die zitierten Seiten erscheinen bei Sammelwerken hinter den parent-Einträgen, die selbst aber nicht zitiert werden. Außerdem verweisen sie auf den child-Eintrag im Literaturverzeichnis an sich.

Ich hätte gerne, dass nur die child-Einträge die backref Funktion nutzen, solange der Sammelband nicht selbst zitiert wird und, dass nicht auf das Lit-Verzeichnis selbst verwiesen wird.

Mit crossref geht das prima automatisch, nur bekomme ich da die shorttitle-Funktion nicht eingestellt. Bin für jede Hilfe sehr dankbar.

Beste Grüße und vieln Dank im Voraus
Marcus

Code: Alles auswählen

%
\begin{filecontents*}{TestBibliographie.bib}

@incollection{Edelmann.2001,
 xref = {Boch.2001},
 author = {Edelmann, Heidrun},
 title = {{Der Umgang mit dem Rückstand. Deutschlands Automobilindustrie in der Zwischenkriegszeit}},
 pages = {41--48},
 bookpagination = {page},
 publisher = {Steiner},
 isbn = {3-515-07866-5},
 editor = {Boch, Rudolf},
 booktitle = {{Geschichte und Zukunft der deutschen Automobilindustrie}},
 date = {2001},
 address = {Stuttgart}
}

@book{Erhard.1962,
 author = {Erhard, Ludwig},
 date = {1962},
 title = {{Deutsche Wirtschaftspolitik: Der Weg der Sozialen Marktwirtschaft}},
 address = {Düsseldorf and Wien and Frankfurt a.\,Main},
 publisher = {Econ and Knapp},
 shorttitle = {Wirtschaftspolitik}
}


@incollection{Erhard.1962b,
 xref = {Erhard.1962},
 author = {Erhard, Ludwig},
 title = {{Der Weg in die Zukunft: Rede vor der 14.\,Vollversamm\-lung des Wirtschaftsrates des Vereinigten Wirtschaftsgebietes am 21.\,April 1948 in Frankfurt a.\,M.}},
 pages = {37--61},
 bookpagination = {page},
 publisher = {Econ and Knapp},
 booktitle = {{Deutsche Wirtschaftspolitik}},
 date = {1962},
 address = {Düsseldorf and Wien and Frankfurt a.\,Main},
 bookauthor = {Erhard, Ludwig}
}

@incollection{Stieniczka.2001,
 xref = {Boch.2001},
 author = {Stieniczka, Norbert},
 title = {{Vom fahrbaren Untersatz zur Chromkarosse mit innerer Sicherheit - der Wandel der Nutzeranforderungen an das Automobil in den 50er und 60er Jahren}},
 pages = {177--200},
 bookpagination = {page},
 publisher = {Steiner},
 isbn = {3-515-07866-5},
 editor = {Boch, Rudolf},
 booktitle = {{Geschichte und Zukunft der deutschen Automobilindustrie}},
 date = {2001},
 address = {Stuttgart}
}
@collection{Boch.2001,
 date = {2001},
 title = {{Geschichte und Zukunft der deutschen Automobilindustrie: Tagung im Rahmen der Chemnitzer Begegnungen 2000}},
 address = {Stuttgart},
 publisher = {Steiner},
 isbn = {3-515-07866-5},
 editor = {Boch, Rudolf},
 shorttitle = {Automobilindustrie}
}
\end{filecontents*}

\documentclass{book}
\usepackage[style=footnote-dw,xref=true,backref=true,minxrefs=1]{biblatex}
\addbibresource{TestBibliographie.bib}
\begin{document}
test test\footcite{Stieniczka.2001} test test\footcite{Edelmann.2001} test test\footcite{Erhard.1962b}
\printbibliography
\end{document}
 

MoeWe
Forum-Century
Forum-Century
Beiträge: 248
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Beitrag von MoeWe »

Dieses Verhalten ist recht tief in biblatex-dw verankert und hat primär zwei Ursachen.

Zunächst nutzt biblatex-dw an einigen Stellen einen internen Zitierbefehl, der von biblatex als ein solcher erkannt wird und daher auch den pageref/backref-Tracker auslöst. Das führt dazu, dass die Elterneinträge so aufgeführt werden, als sein sie an den Stellen zitiert worden, an denen die Kindeintträge zitiert wurden. Da dieser interne Zitierbefehl auch im Literaturverzeichnis genutzt wird, wird die Seitenzahl auch immer aufgeführt. Die Lösung hier ist es, biblatex explizit zu sagen, dass dieser interne Befehl nicht getrackt werden soll.

Dann stellt sich aber heraus, dass bei den Kindeinträgen die Seiten, auf denen sie zitiert wurden, nicht aufgeführt werden, wenn xref im Spiel ist. Das ist tatsächlich so im Driver festgelegt. Ob das nur ein Versehen oder Absicht war, kann ich nicht sagen. Aber mit etwas Aufwand und der großzügigen Hilfe von xpatch können wir die relevanten Makros in den relevanten Stellen hinzufügen.

Code: Alles auswählen

\documentclass[ngerman]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=footnote-dw,xref=true,backref=true,minxrefs=1]{biblatex}

\usepackage{xpatch}

\DeclareCiteCommand{\bbx@xref}
  {\boolfalse{backtracker}}
  {\usebibmacro{cite:xref}}
  {}
  {}

\makeatletter
\newcommand*{\getbackpageref}[1]{%
  \xpatchbibdriver{#1}
    {\usebibmacro{pages}}
    {\usebibmacro{pages}%
     \newunit\newblock
     \usebibmacro{pageref}}
    {}
    {\blx@error
       {Failed to patch driver for @#1}
       {The driver for @#1 does not have the expected format.\MessageBreak
        Are you really using biblatex-dw?}}
}
\makeatother

\forcsvlist{\getbackpageref}{inbook,incollection,inproceedings,inreference}

%\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{Edelmann.2001,
  xref      = {Boch.2001},
  author    = {Edelmann, Heidrun},
  title     = {Der Umgang mit dem Rückstand. Deutschlands Automobilindustrie in der Zwischenkriegszeit},
  pages     = {41--48},
  bookpagination = {page},
  publisher = {Steiner},
  isbn      = {3-515-07866-5},
  editor    = {Boch, Rudolf},
  booktitle = {Geschichte und Zukunft der deutschen Automobilindustrie},
  date      = {2001},
  address   = {Stuttgart}
}
@book{Erhard.1962,
  author     = {Erhard, Ludwig},
  date       = {1962},
  title      = {Deutsche Wirtschaftspolitik: Der Weg der Sozialen Marktwirtschaft},
  address    = {Düsseldorf and Wien and Frankfurt a.\,Main},
  publisher  = {Econ and Knapp},
  shorttitle = {Wirtschaftspolitik}
}
@incollection{Erhard.1962b,
  xref       = {Erhard.1962},
  author     = {Erhard, Ludwig},
  title      = {Der Weg in die Zukunft: Rede vor der 14.\,Vollversamm\-lung des Wirtschaftsrates des Vereinigten Wirtschaftsgebietes am 21.\,April 1948 in Frankfurt a.\,M.},
  pages      = {37--61},
  bookpagination = {page},
  publisher  = {Econ and Knapp},
  booktitle  = {Deutsche Wirtschaftspolitik},
  date       = {1962},
  address    = {Düsseldorf and Wien and Frankfurt a.\,Main},
  bookauthor = {Erhard, Ludwig}
}
@incollection{Stieniczka.2001,
  xref      = {Boch.2001},
  author    = {Stieniczka, Norbert},
  title     = {Vom fahrbaren Untersatz zur Chromkarosse mit innerer Sicherheit~--
               der Wandel der Nutzeranforderungen an das Automobil in den 50er und 60er Jahren},
  pages     = {177--200},
  bookpagination = {page},
  publisher = {Steiner},
  isbn      = {3-515-07866-5},
  editor    = {Boch, Rudolf},
  booktitle = {Geschichte und Zukunft der deutschen Automobilindustrie},
  date      = {2001},
  address   = {Stuttgart}
}
@collection{Boch.2001,
  date       = {2001},
  title      = {Geschichte und Zukunft der deutschen Automobilindustrie:
                Tagung im Rahmen der Chemnitzer Begegnungen 2000},
  address    = {Stuttgart},
  publisher  = {Steiner},
  isbn       = {3-515-07866-5},
  editor     = {Boch, Rudolf},
  shorttitle = {Automobilindustrie}
}
\end{filecontents}

\addbibresource{\jobname.bib}
\begin{document}
test test\footcite{Stieniczka.2001} test test\footcite{Edelmann.2001} test test\footcite{Erhard.1962b}
\printbibliography
\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2138
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Off-Topic-Bemerkung zur Worttrennung

Beitrag von Bartman »

@Miou

Das Festlegen der Trennstelle durch das babel-Shorthand in 14.\,Vollversamm\-lung mag funktionieren, ist aber unflexibel. Wenn Du das Shorthand "- an der ersten Trennstelle einfügst, kann LaTeX ab dieser Stelle wieder ohne weiteres Eingreifen bestimmen, wo umbrochen werden soll: 14.\,Voll"-versammlung.

Miou

Beitrag von Miou »

Wow MoeWe, funktioniert 1a, super und vielen Dank für den Trennungstipp Bartman.

Viele Grüße aus Köln

Thread kann geschlossen werden!

Antworten