xref und backref

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: xref und backref

von Miou » Sa 21. Sep 2019, 20:06

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

Viele Grüße aus Köln

Thread kann geschlossen werden!

Off-Topic-Bemerkung zur Worttrennung

von Bartman » Sa 21. Sep 2019, 18:18

@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.

von MoeWe » Sa 21. Sep 2019, 15:19

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.
\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}

xref und backref

von Miou » Fr 20. Sep 2019, 19:54

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
%
\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}
 

Nach oben