나는 수년에 걸쳐 여러 날짜에 발행된 동일한 이름의 신문/정기간행물을 여러 번 참조하는 논문을 작성하고 있습니다. 나는 동일한 정기간행물에 대한 참고문헌 항목이 서로 가깝고 다른 정기간행물의 다른 항목과 분리되도록 이러한 참고문헌을 정기간행물 이름으로 그룹화하려고 합니다.
나는 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}
@periodical
여기에는 The Sun 3개, The Guardian 3개, The Almanac 3개 등 9개의 항목이 포함되어 있습니다 . 정렬 템플릿을 사용하여 정기 간행물 제목별로 항목을 정렬하고 \bibitemsep
및 를 \bibnamesep
각각 1pt와 30pt로 설정합니다.이건 내가 출근할 수 없는 부분이야:
위 이미지에서 볼 수 있듯이 참조 항목 사이에는 모두 30pt가 있는 반면, "The Almanac" 비비트 항목에는 1pt가 있지만 "The Almanac"과 "The Guardian"을 30pt로 구분하고 싶습니다.
답변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}