带有 Biblatex 自定义字段的引用命令

带有 Biblatex 自定义字段的引用命令

我正在写博士论文,我的导师希望我在脚注中使用特定的简短引用形式,并在论文末尾的参考书目中使用长引用形式。所以基本上我需要三个短字段,而不是传统的两个(shorttitleshortauthor)。

我需要找到一种方法来添加shortseries我在脚注中会用到的内容。

这是我目前在这两个领域使用的内容:

\DeclareBibliographyDriver{myshort}{%
    \usebibmacro{begentry}%
    \ifboolexpr{ test{\ifnameundef{shortauthor}} 
                or test {\iffieldundef{shorttitle}}}
      {\usedriver{}{\thefield{entrytype}}}
      {\printnames{shortauthor}%
       \setunit{\addcomma\space}%
       \printfield{shorttitle}\isdot}%
       \usebibmacro{finentry}%
    }
\DeclareCiteCommand{\mycite}[\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usedriver{}{myshort}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

结果是这样的:

参见 Iust.,De Triph。第 11 页。

我要么需要找到一种方法来引入另一个将被调用的书目字段shortseries,要么需要找到一种方法来使用集合中的某些可选字段(note我从未使用过这些字段来接管此功能)。

这是我的 MWE:

    \documentclass[a4paper,11pt]{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage{csquotes}
    \usepackage{blindtext}
    \usepackage{filecontents}
    \begin{filecontents}{\jobname.bib} 
     @incollection{iustinus1997,
            Address = {Berlin/New York},
            Author = {{Iustinus Martyr}},
            Title = {Iustini Martyris dialogus cum Tryphone},
            Editor = {Miroslav Marcovich},
            Publisher = {Walter de Gruyter},
            Series = {Patrologiae cursus completus: Series Graeca},
            Shortauthor = {Iust.},
            Shorttitle = {De Tryph.},
            Shortseries = {PG},
            Volume = {47},
            Year = {1997}}
    \end{filecontents} 
    \usepackage[ngerman]{babel}
\usepackage[style=historische-zeitschrift, maxnames=2, hyperref=true, backref=true, backrefstyle=none, backend=bibtex,idemtracker=true]{biblatex}
    \bibliography{\jobname}
    \DeclareBibliographyDriver{myshort}{%
        \usebibmacro{begentry}%
        \ifboolexpr{ test{\ifnameundef{shortauthor}}
                    or test {\iffieldundef{shorttitle}}}
          {\usedriver{}{\thefield{entrytype}}}
          {\printnames{shortauthor}%
           \setunit{\addcomma\space}%
           \printfield{shorttitle}\isdot}%
           \usebibmacro{finentry}%
        }
    \DeclareCiteCommand{\mycite}[\mkbibfootnote]
      {\usebibmacro{prenote}}
      {\usedriver{}{myshort}}
      {\multicitedelim}
      {\usebibmacro{postnote}}
    \begin{document}
    \blindtext \mycite[See][S. 11]{iustinus1997}
    \blindtext
    \printbibliography

    \end{document}

当我使用时:\mycite[See][11]{iustinus1997}这是我需要得到的最终结果:

这就是。, De Tryph., 载于: PG 47,第 11 节。

有人知道我该如何实现这个吗?提前感谢您的回答!

答案1

最简单的方法是使用其中一个user字段。假设是usera

以下基本上是上面发布的代码,但使用usera而不是shortseries

\documentclass[a4paper,11pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage{blindtext}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib} 
 @incollection{iustinus1997,
        Address = {Berlin/New York},
        Author = {{Iustinus Martyr}},
        Title = {Iustini Martyris dialogus cum Tryphone},
        Editor = {Miroslav Marcovich},
        Publisher = {Walter de Gruyter},
        Series = {Patrologiae cursus completus: Series Graeca},
        Shortauthor = {Iust.},
        Shorttitle = {De Tryph.},
        Usera = {PG},
        Volume = {47},
        Year = {1997}}
\end{filecontents} 
\usepackage[ngerman]{babel}
\usepackage[style=authoryear, hyperref=true]{biblatex} 
\bibliography{\jobname}
\DeclareBibliographyDriver{myshort}{%
    \usebibmacro{begentry}%
    \ifboolexpr{ test{\ifnameundef{shortauthor}}
                or test {\iffieldundef{shorttitle}}}
      {\usedriver{}{\thefield{entrytype}}}
      {\printnames{shortauthor}%
       \setunit{\addcomma\space}%
       \printfield{shorttitle}\isdot}%
       \iffieldundef{usera}
         {}
         {\setunit{\addcomma\space}% or \newunit
          \usebibmacro{in:}%
          \printfield{usera}%
          \setunit*{\addspace}%
          \printfield[default]{volume}}% or \printfield{volume}
       \usebibmacro{finentry}%
    }
\DeclareFieldFormat{usera}{#1}
\DeclareCiteCommand{\mycite}[\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usedriver{}{myshort}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
\begin{document}
\blindtext \mycite[See][S. 11]{iustinus1997}
\blindtext
\printbibliography

\end{document}

产生

按要求提供的脚注图片

如果没有“Usera”字段,并且如果没有卷号,那么 (1) 这也应该有效。一种变体是使用“通常”的卷号书写方式(我已将其删除),并在“in:”前添加句号(而不是逗号)。我在上面的注释中展示了此代码。如果我们替换这些行,我们就会得到。

在此处输入图片描述

一定要尝试一下驱动程序,让它符合你的喜好。注意不要引入多余的空格,这是编写驱动程序时最常见的恼人之处。如果有疑问,请在每行末尾添加注释。

如果您想使用源映射,您可以使用“shortseries”字段,但这可能有点过度。

相关内容