如何删除调整后的参考书目中的重复条目?

如何删除调整后的参考书目中的重复条目?

我正在尝试让书目驱动程序正常工作。我使用了上一篇文章中的代码,并做了一些小改动:需要帮助配置 biblatex-dw 的条目类型驱动程序。不同的条目类型有不同的引用样式 sa

我的版本在下面的 MWE 中。

我想要完成的任务是抑制其中一个 bib 条目(例如,我box在 MWE 中调用的那个条目),而上一个问题没有涉及这个任务。抑制工作正常,但结果是我在参考书目中得到了两个或更多相似的行。有没有办法获取唯一条目的列表,同时仍然抑制该box字段?

梅威瑟:

\documentclass{article}
\usepackage[
    style=authortitle-dw,
    firstfull=true,
    datamodel=archives,
]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@archive{test1,
  subcategory = {Foo},
  category     = {StateArchive},
  box         = {130},
}

@archive{test2,
  subcategory = {Foo},
  category     = {StateArchive},
  box         = {131},
}

\end{filecontents*}
\begin{filecontents*}{archives.dbx}
\ProvidesFile{archives.dbx}[2014/04/02 supplement archive]
\RequireBiber[3]

\DeclareDatamodelEntrytypes{archive}
\DeclareDatamodelEntryfields[archive]{category,subcategory,archive,box}
\DeclareDatamodelConstraints[archive]{
  \constraint[type=mandatory]{
    \constraintfield{archive}
    \constraintfield{category}
    \constraintfield{box}
  }
}

\DeclareDatamodelFields[type=field,datatype=literal]{category}
\DeclareDatamodelEntryfields[archive]{category}
\DeclareDatamodelFields[type=field,datatype=literal]{subcategory}
\DeclareDatamodelEntryfields[archive]{subcategory}
\DeclareDatamodelFields[type=field,datatype=literal]{archive}
\DeclareDatamodelEntryfields[archive]{archive}
\DeclareDatamodelFields[type=field,datatype=literal]{box}
\DeclareDatamodelEntryfields[archive]{box}
\endinput
\end{filecontents*}

\DeclareBibliographyDriver{archive}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{archive}%
  \setunit{\addspace}%
  \printfield{category}%
  \setunit{\addspace}%
  \printfield{subcategory}%
  \setunit{\addspace}%
  \printfield{box}%
  \newunit\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\renewbibmacro*{cite:normal}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
       {\usebibmacro{cite:ibid}}
       {\ifentrytype{archive}
         {\usedriver
          {\DeclareNameAlias{sortname}{default}}
          {\thefield{entrytype}}}
       {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}%
                                 \AND\NOT\iffirstonpage}
           {\usebibmacro{cite:idem}%
            \usebibmacro{cite:title}%
            \usebibmacro{cite:save}}
           {\ifnameundef{labelname}
             {}
             {\usebibmacro{cite:name}}%
              \usebibmacro{cite:title}}%
            \ifbool{cbx:omiteditor}
              {}
              {\ifnameundef{labelname}
                {\newunit
                 \usebibmacro{cite:byeditor}}
                {}}%
           \usebibmacro{cite:save}}}}%
    {\ifbool{cbx:shorthandibid}%
       {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}%
         {\usebibmacro{cite:ibid}}
         {\usebibmacro{cite:shorthand}}}%
       {\usebibmacro{cite:shorthand}}}}

\DeclareBibliographyCategory{archive1}
\DeclareBibliographyCategory{archnew}
\AtDataInput[archive]{
  \iffieldequalstr{archive}{Archive 1}
    {\addtocategory{archive1}{\thefield{entrykey}}}
    {}
  \iffieldequalstr{archive}{ArchNew}
    {\addtocategory{archnew}{\thefield{entrykey}}}
    {}
}


\DeclareSortingScheme{archive}{
  \sort{
    \field{archive}
  }
  \sort{
    \field{category}
  }
  \sort{
    \field{subcategory}
  }
  \sort{
    \field{box}
  }
}

\addbibresource{\jobname.bib}


\begin{document}
  more\footcite{test1}
  more\footcite{test2}

  \clearpage
\DeclareFieldFormat[archive]{box}{}

  \printbibliography
\end{document}

当前输出(仅限参考书目,因为这是我遇到的问题):

参考书目

所以,我只想要一行,而不是两条相似的行。

编辑:明确地说,我需要在脚注中显示框字段。

答案1

这只是一个答案,因为我还没有足够的声誉来发表评论。

我怀疑是否有一种简单的方法可以自动实现您想要实现的目标,因为您引用的那些不同条目在 biblatex 中只是被视为:碰巧具有相同内容的不同条目。

您可以做的是手动隐藏所有引用同一档案中的来源的条目,但使用该skipbib选项,例如:

@archive{test1,
  subcategory  = {Foo},
  category     = {StateArchive},
  box          = {130}
}

@archive{test2,
  subcategory  = {Foo},
  category     = {StateArchive},
  box          = {131},
  options      = {skipbib=true}
}

@archive{test3,
  subcategory  = {Foo},
  category     = {StateArchive},
  box          = {132},
  options      = {skipbib=true}
}

如果您引用的档案源数量有限,这种方法效果会很好,但如果没有,可能会非常痛苦。

相关内容