如何设置 BibLaTeX 以用于“自由格式”引用

如何设置 BibLaTeX 以用于“自由格式”引用

我正在编写一份家谱文件,需要“自由格式”的引文才能满足行业标准。为了在文档中获得我想要的引文,到目前为止,我使用了一种相当“黑客”的方法,但在我进一步构建文件之前,我想看看是否有更好的方法可以做到这一点.bib

我目前的解决方案是将自由格式的引文写在字段内shorthand,然后将书目条目写在字段内note。使用后,style=verbose脚注和书目条目看起来会很漂亮,但我遇到了重复引文的问题。我甚至不确定我是否正确使用了shorthandnote字段(或者 BibLaTeX 也是如此!)。

或者,我研究过使用titleshorttitle字段,然后应用\DeclareFieldFormat删除斜体,但事实证明,在脚注和参考书目中正确显示我想要的引用很麻烦,也很麻烦。

本质上,我想要一个.bib文件,其中每个条目都是一个@misc数据类型,具有 (1) 完整参考注释、(2) 用于后续引用的简短参考注释和 (3) 仅打印在参考书目中的书目注释。引用应出现在我的.tex文件中的脚注中,后续引用使用缩写参考注释。或者,我只需要完整的参考注释和书目注释,并能够通过编号引用先前的脚注,而不是使用简短参考注释。

我曾考虑过编写自己的 CSL、编辑样式文件等,但我的编程知识还未达到那个水平。如果这是一个可行的选择,我想我可以充分遵循分步说明,但到目前为止,似乎我必须使用更“黑客”的解决方案。另外,我对 LaTeX 总体来说还比较陌生,所以请原谅我的无知或用词不当!

编辑:

三种模式的“自由形式”引用示例:

(1)完整(第一个)参考说明:英国国教教堂(英格兰德比郡德比),《教区登记册》,第 4 卷,第 3 页,约翰·史密斯和简·布洛格斯结婚(1815 年 1 月 20 日);数字图像,Ancestry.comhttp://ancestry.com.au:2018 年 7 月 1 日访问),引用自马特洛克的德比郡档案局。

(2)简短(后续)参考说明:英国国教教会(德比,德布斯),《教区登记册》,第 4 卷,第 3 页,史密斯-布洛格斯(1815 年 1 月 20 日)。

(3)参考书目条目:英国国教教堂(英格兰德比郡德比)。教区登记册。数字图像。Ancestry.comhttp://ancestry.com.au:2018 年。

答案1

biblatex实际上并不进行“自由格式”引用。biblatex(和 BibTeX)的全部要点是,您分别向其提供所有语义上有意义的信息位,以便可以根据所选参考书目和引用样式定义的方案重新组合这些信息位。

如果你能找到引用子类的通用结构,那么你也许可以想出一个方案来对它们进行分类,并将各种数据分解成方便处理的方便的小块biblatex。然后,你可以按照中所述编写自己的条目类型如何使用 BibLaTeX/Biber 创建全新的数据类型?

这是一个残酷的黑客攻击,它稍微进一步采用了您一直使用的策略并为您提供了想要的输出。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=verbose, backend=biber]{biblatex}


\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{marriage,
  shorthand = {Church of England (Derby, Derbs.), Parish Registers, vol.\ 4, p.\ 3, Smith-Bloggs (20 January 1815).},
  note      = {\ifcitation
    {Church of England (Derby, Derbyshire, England), Parish Registers, vol.\ 4, p.\ 3, marriage of John Smith and Jane Bloggs (20 January 1815); digital images, Ancestry.com (\url{http://ancestry.com.au}: accessed 1 July 2018), citing Derbyshire Record Office, Matlock.}
    {Church of England (Derby, Derbyshire, England). Parish Registers. Digital images. Ancestry.com. \url{http://ancestry.com.au}: 2018.}},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\renewbibmacro*{shorthandintro}{}

\begin{document}
Lorem\footcite{marriage} ipsum\footcite{marriage}
\printbibliography
\end{document}

但如果我们这样做,我们不妨停下来,滥用字段并声明我们自己的“自由格式”引用。这是样式@freeform条目类型的首次尝试verbose

支持bibliography在参考书目中显示字段、firstcite首次较长引文字段和cite后续引文字段。该字段sortkey可用于给出参考书目中的排序位置。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage{filecontents}
\begin{filecontents}{freeform.dbx}
\DeclareDatamodelEntrytypes{freeform}
\DeclareDatamodelFields[type=field,datatype=literal]{
  bibliography,
  cite,
  firstcite,
}
\DeclareDatamodelEntryfields[freeform]{
  bibliography,
  cite,
  firstcite,
  sortkey,
}
\end{filecontents}

\usepackage[style=verbose, backend=biber, datamodel=freeform, mincrossrefs=1]{biblatex}

\DeclareBibliographyDriver{freeform}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{bibliography}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


\renewbibmacro*{cite:full}{%
  \ifentrytype{freeform}
    {\iffieldundef{firstcite}
       {\usebibmacro{cite:short}}
       {\printfield{firstcite}}}
    {\usebibmacro{cite:full:citepages}%
     \printtext[bibhypertarget]{%
       \usedriver
         {\DeclareNameAlias{sortname}{default}}
         {\thefield{entrytype}}}%
     \usebibmacro{shorthandintro}}}

\renewbibmacro*{cite:short}{%
  \ifentrytype{freeform}
    {\printfield{cite}}
    {\printnames{labelname}%
     \setunit*{\printdelim{nametitledelim}}%
     \printtext[bibhyperlink]{%
       \printfield[citetitle]{labeltitle}}}}

\DeclareSourcemap{
  \maps[datatype=bibtex,overwrite=false]{
    \map{
      \pertype{freeform}
      \step[fieldsource=bibliography]
      \step[fieldset=sortkey, origfieldval]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@freeform{marriage,
  cite         = {Church of England (Derby, Derbs.), Parish Registers, vol.\ 4, p.\ 3, Smith-Bloggs (20 January 1815).},
  firstcite    = {Church of England (Derby, Derbyshire, England), Parish Registers, vol.\ 4, p.\ 3, marriage of John Smith and Jane Bloggs (20 January 1815); digital images, Ancestry.com (\url{http://ancestry.com.au}: accessed 1 July 2018), citing Derbyshire Record Office, Matlock.},
  bibliography = {Church of England (Derby, Derbyshire, England). Parish Registers. Digital images. Ancestry.com. \url{http://ancestry.com.au}: 2018.},
  sortkey      = {Church of England, Derby, Derbyshire, England},
}
\end{filecontents}

\addbibresource{\jobname.bib}


\begin{document}
Lorem\footcite{marriage} ipsum\footcite{marriage}
\printbibliography
\end{document}

在此处输入图片描述

如果有两个条目具有相同的内容,那么bibliography您当然会在引用中得到两次输出,这可能看起来很奇怪。如果您不想这样,您可以bibliography通过在文件中使用更复杂的结构来确保相同的内容只显示一次.bib

@freeform{marriage:smithbloggs,
  cite         = {Church of England (Derby, Derbs.), Parish Registers, vol.\ 4, p.\ 3, Smith-Bloggs (20 January 1815).},
  firstcite    = {Church of England (Derby, Derbyshire, England), Parish Registers, vol.\ 4, p.\ 3, marriage of John Smith and Jane Bloggs (20 January 1815); digital images, Ancestry.com (\url{http://ancestry.com.au}: accessed 1 July 2018), citing Derbyshire Record Office, Matlock.},
  options      = {skipbib},
  crossref     = {coe:derb},
}
@freeform{marriage:smothbliggs,
  cite         = {Church of England (Derby, Derbs.), Parish Registers, vol.\ 5, p.\ 1, Smoth-Bliggs (30 April 1815).},
  firstcite    = {Church of England (Derby, Derbyshire, England), Parish Registers, vol.\ 5, p.\ 1, marriage of Jane Smoth and John Bliggs (30 April 1815); digital images, Ancestry.com (\url{http://ancestry.com.au}: accessed 1 July 2018), citing Derbyshire Record Office, Matlock.},
  options      = {skipbib},
  crossref     = {coe:derb},
}
@freeform{coe:derb,
  sortkey      = {Church of England, Derby, Derbyshire, England},
  bibliography = {Church of England (Derby, Derbyshire, England). Parish Registers. Digital images. Ancestry.com. \url{http://ancestry.com.au}: 2018.},
}

如果两个条目共享相同的内容bibliography,则可以将bibliographysortkey字段外包到新条目中,并从带有的引文条目中引用它,以crossref = {...},确保引文条目不会出现在参考书目中options = {skipbib},

但这里biblatex除了对首次引用和后续引用进行排序和跟踪外,实际上并没有做太多事情。这可以通过不同的方式实现。

相关内容