Biblatex、Titlesec 和 citereset 的简单修复?

Biblatex、Titlesec 和 citereset 的简单修复?

我已经读完了这个问题另一个问题,以及其他一些(以及biblatex手册中的第 1.5.5 节)。我知道titlesec重新定义了biblatex用于 的东西citereset。有没有简单的解决方法?

biblatex以下是详细风格的MWE :

\documentclass[letterpaper,12pt]{book}
\usepackage[explicit,largestsep]{titlesec}
\usepackage{polyglossia}
\setmainlanguage[variant=us]{english}
\usepackage[english=american]{csquotes}

\usepackage[style=verbose,citepages=omit,citereset=chapter]{biblatex}

\begin{filecontents}[overwrite]{temp.bib}
@book{Book1,
   author    = {John Smith},
   title     = {A Good Book},
   publisher = {Good Publishing House},
   address   = {NY},
   year      = {2020}
}

\end{filecontents}

\addbibresource{temp.bib}

\usepackage{xparse}

\begin{document}

%%% TEMP
\titleformat{\chapter}[display]
     {\normalsize\rmfamily\center}
     {\MakeUppercase{\chaptername~\thechapter}}
     {0pt}
     {\MakeUppercase{#1}}
%%%   
\null\vfill
I like good books.\footcite[6]{Book1} But now a short ref.\footcite[10]{Book1}

\chapter{New Chapter}
\null\vfill
This should be a full citation.\footcite[15]{Book1}

\clearpage
\printbibliography
\end{document}

对于第一次引用:

在此处输入图片描述

对于新章节中的引用,如下所示:

错误引用

有趣的是,只有citereset当我使用该titleformat命令时才会出现问题。仅包含命令titlesec不会导致问题。

biblatex-chicago同样有趣的是,有些解决这个问题。以下是 的 MWE biblatex-chicago

\documentclass[letterpaper,12pt]{report}
\usepackage[explicit,largestsep]{titlesec}
\usepackage{polyglossia}
\setmainlanguage[variant=us]{english}
\usepackage[english=american]{csquotes} 

\begin{filecontents}[overwrite]{customstyles.dbx}
  \DeclareDatamodelEntrytypes{tdict}
\end{filecontents}

\usepackage[noibid,backend=biber,notes,isbn=false,shorthandfull,shorthandfirst,inheritshorthand=true,citereset=chapter]{biblatex-chicago}

\begin{filecontents}[overwrite]{temp.bib}
@book{Book1,
   author    = {John Smith},
   title     = {A Good Book},
   publisher = {Good Publishing House},
   address   = {NY},
   year      = {2020}
}

\end{filecontents}

\addbibresource{temp.bib}

\usepackage{xparse}

\begin{document}

%%% TEMP
\titleformat{\chapter}[display]
     {\normalsize\rmfamily\center}
     {\MakeUppercase{\chaptername~\thechapter}}
     {0pt}
     {\MakeUppercase{#1}}
%%%

\null\vfill
I like good books.\footcite[6]{Book1} But now a short ref.\footcite[10]{Book1}

\chapter{New Chapter}
\null\vfill
This should be a full citation.\footcite[15]{Book1}

\clearpage
\printbibliography
\end{document}

首次引用:

bib-chic1

新章节后的引用:

bib-chic2

在第一个后续引用中,它是作者。然后在新章节中,它是作者标题。所以biblatex-chicago可以区分。

我知道我所要做的就是citereset在每个\chapter命令之后发出命令。所以这是我的安全措施。但是,我想要一个不需要手动操作的解决方案(我正试图将其放入包中)。

谢谢!

编辑 经过进一步测试,的行为biblatex-chicago与在新页面上引用 author-title 的行为完全相同。因此,\chapter并没有做任何不同的事情。所以biblatex-chicago上面的例子没有帮助。我已经删除了biblatex-chicago标签。

答案1

文档 §1.5.5 不兼容的软件包中提到了这个问题。解决方案是将此选项键替换为命令中的相应命令\titleformat

\documentclass[letterpaper,12pt]{book}
\usepackage[explicit,largestsep]{titlesec}
\usepackage{polyglossia}
\setmainlanguage[variant=us]{english}
\usepackage[english=american]{csquotes}

\usepackage[style=verbose, citepages=omit]{biblatex}

\begin{filecontents}[overwrite]{temp.bib}
@book{Book1,
   author = {John Smith},
   title = {A Good Book},
   publisher = {Good Publishing House},
   address = {NY},
   year = {2020}
}

\end{filecontents}

\addbibresource{temp.bib}

\usepackage{xparse}

\begin{document}

%%% TEMP
\titleformat{\chapter}[display]
     {\normalsize\rmfamily\center}
     {\MakeUppercase{\chaptername~\thechapter}}
     {0pt}
     {\citereset\MakeUppercase{#1}}
%%%
\null\vfill
I like good books.\footcite[6]{Book1} But now a short ref.\footcite[10]{Book1}

\chapter{New Chapter}
\null\vfill
This should be a full citation.\footcite[15]{Book1}

\clearpage
\printbibliography

\end{document} 

在此处输入图片描述

相关内容