Ich schreibe eine Dissertation, in der ich mehrere Verweise auf Zeitungen/Zeitschriften mit demselben Namen mache, die über viele Jahre hinweg an verschiedenen Tagen erschienen sind. Ich versuche, diese Verweise nach dem Zeitschriftennamen zu gruppieren, sodass Bibliografieeinträge für dieselbe Zeitschrift nahe beieinander und von anderen Einträgen für andere Zeitschriften getrennt sind.
Ich habe die Biblatex-Dokumentation ausführlich durchgesehen und die einzigen relevanten Informationen, die ich finden konnte, sind die Längenregister bibnamesep
und bibitemsep
. Diese scheinen genau das zu tun, was ich brauche – Bibiteme für Zeitschriften mit demselben Titel sollten näher beieinander liegen als Bibiteme, die es nicht sind. Die einzige Herausforderung besteht hier darin, dass Bibnamesep anscheinend Namensteile und eine Eindeutigkeitsvorlage verwendet, um Werke nach dem Namen eines Autors (und nicht nach dem Titel) zu gruppieren.
Das ist mein MWE:
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage[T1]{fontenc} % Specify font encoding
\usepackage[utf8]{inputenc} % Specify encoding (for example, UTF-8)
\usepackage[dashed=false,sorting=nyt,style=verbose,labeldateparts=true,uniquelist=true,uniquename=true,singletitle=true]{biblatex}
% Preamble - Here you can load packages and define settings
\usepackage[english]{babel}
\begin{filecontents*}[overwrite]{mwe.bib}
@periodical{TheSun:20220101,
title = {The Sun},
date = {2022-01-01}
}
@periodical{TheTimes:20220601,
title = {The Sun},
date = {2022-06-01}
}
@periodical{TheTimes:20220901,
title = {The Sun},
date = {2022-09-01}
}
@periodical{TheGuardian:20210217,
title = {The Guardian},
date = {2021-02-17}
}
@periodical{TheGuardian:20210311,
title = {The Guardian},
date = {2021-03-11}
}
@periodical{TheGuardian:20210410,
title = {The Guardian},
date = {2021-04-10}
}
@periodical{TheAlmanac:202302,
title = {The Almanac},
date = {2023-02}
}
@periodical{TheAlmanac:202303,
title = {The Almanac},
date = {2023-03}
}
@periodical{TheAlmanac:202304,
title = {The Almanac},
date = {2023-04}
}
\end{filecontents*}
\addbibresource{mwe.bib}
\DeclareSortingTemplate{TitleYear}{
\sort{
\field{title}
}
\sort{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort{
\field{month}
}
\sort{
\field{day}
}
}
\begin{document}
\bibitemsep=1pt
\bibnamesep=30pt
\nocite{*}
\begin{refcontext}[sorting=TitleYear]
\printbibliography
\end{refcontext}
\end{document}
Es enthält 9 @periodical
Einträge – 3 für The Sun, 3 für The Guardian und 3 für The Almanac. Es sortiert die Einträge anhand der Sortiervorlage nach dem Zeitschriftentitel und setzt die Schriftgrößen „ \bibitemsep
und“ \bibnamesep
auf 1pt bzw. 30pt.Das ist der Teil, den ich nicht zum Laufen bekomme:
Wie Sie im Bild oben sehen können, besteht zwischen den Referenzen jeweils ein Abstand von 30 pt. Ich hingegen hätte gerne, dass die Bibitems von „The Almanac“ 1 pt haben, aber 30 pt zwischen „The Almanac“ und „The Guardian“ liegen.
Antwort1
\bibnamesep
gilt nur zwischen Einträgen mit einem anderen Namen als in codiert fullhash
. Wenn Sie dies in ändern möchten title
, können Sie versuchen, das relevante interne Makro, das das Trennzeichen festlegt, (lokal) neu zu definieren.
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[
style=verbose,
sorting=nyt,
dashed=false,
labeldateparts=true,
uniquelist=true,uniquename=true,
singletitle=true,
]{biblatex}
\makeatletter
\def\blx@namesep@title{%
\ifnum\c@instcount>\@ne
\blx@imc@iffieldequals{title}\blx@prevtitle
{}
{\addvspace{\bibnamesep}}%
\fi
\global\let\blx@prevtitle\abx@field@title}
\newcommand*{\NamesepByTitle}{\let\blx@namesep\blx@namesep@title}
\makeatother
\DeclareSortingTemplate{TitleYear}{
\sort{
\field{title}
}
\sort{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort{
\field{month}
}
\sort{
\field{day}
}
}
\begin{filecontents*}[overwrite]{\jobname.bib}
@periodical{TheSun:20220101,
title = {The Sun},
date = {2022-01-01}
}
@periodical{TheTimes:20220601,
title = {The Sun},
date = {2022-06-01}
}
@periodical{TheTimes:20220901,
title = {The Sun},
date = {2022-09-01}
}
@periodical{TheGuardian:20210217,
title = {The Guardian},
date = {2021-02-17}
}
@periodical{TheGuardian:20210311,
title = {The Guardian},
date = {2021-03-11}
}
@periodical{TheGuardian:20210410,
title = {The Guardian},
date = {2021-04-10}
}
@periodical{TheAlmanac:202302,
title = {The Almanac},
date = {2023-02}
}
@periodical{TheAlmanac:202303,
title = {The Almanac},
date = {2023-03}
}
@periodical{TheAlmanac:202304,
title = {The Almanac},
date = {2023-04}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\bibitemsep=1pt
\bibnamesep=30pt
\nocite{*}
\begin{refcontext}[sorting=TitleYear]
\NamesepByTitle
\printbibliography
\end{refcontext}
\end{document}