私は、長年にわたり複数の日付で発行された同じ名前の新聞/定期刊行物に何度も言及する論文を書いています。これらの言及を定期刊行物名でグループ化し、同じ定期刊行物の参考文献のエントリが近くに表示され、他の定期刊行物のエントリとは分離されるようにしたいと考えています。
私は biblatex のドキュメントを徹底的に調べましたが、私が見つけることができた唯一の関連情報は、bibnamesep
およびbibitemsep
長さレジスタでした。これらはまさに私が必要としている機能のようです。つまり、同じタイトルの定期刊行物の bibitem は、そうでない bibitem よりも互いに近くなければなりません。ここでの唯一の課題は、bibnamesep が名前部分と一意性テンプレートを使用して、作品を著者名 (タイトルではなく) でグループ化しているように見えることです。
これは私の 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}
エントリは 9 つあり@periodical
、The Sun が 3 つ、The Guardian が 3 つ、The Almanac が 3 つあります。ソート テンプレートを使用してエントリを定期刊行物のタイトルでソートし、 と を\bibitemsep
それぞれ\bibnamesep
1pt と 30pt に設定します。これは私がうまく機能しない部分です:
上の画像でわかるように、すべての参照の間隔は 30 ポイントですが、「The Almanac」のビビットムの間隔は 1 ポイントですが、「The Almanac」と「The Guardian」の間隔は 30 ポイントにしたいと思います。
答え1
\bibnamesep
は、 でエンコードされた異なる名前を持つエントリ間にのみ適用されますfullhash
。 これを に変更する場合はtitle
、区切り文字を設定する関連する内部マクロを(ローカルに)再定義してみてください。
\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}