Biblatex 自定义引用命令与 \citefield

Biblatex 自定义引用命令与 \citefield

我需要为我的博士论文制定自定义引用命令。

我到目前为止做的是:

\newcommand{\sfootcite}[1]{\footnote{\emph{\citename[2]{#1}{shortauthor}}, \citefield{#1}{shorttitle}}}

如果我的引用如下所示,则效果很好:

\sfootcite{iustinus1997}

问题是我在条目名称前有两个可选参数。我的引用如下所示:

\sfootcite[参见][第 8 页]{iustinus1997}

我如何获取新命令以使引用看起来如下所示:

参见作者、标题、第 8 页

基本上我的问题是:如何将 {iustinus1997} 之前的 [][] 中的内容包含在新的 cite 命令中?

这是我的 MWE:

\documentclass[a4paper,11pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage{blindtext}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib} 
@book{iustinus1997,
    Address = {Berlin/New York},
    Author = {{Iustinus Martyr}},
    Call-Number = {EgI180},
    Date-Added = {2010-10-13 09:19:34 +0200},
    Date-Modified = {2010-10-13 09:21:42 +0200},
    Editor = {Miroslav Marcovich},
    Publisher = {Walter de Gruyter},
    Series = {Patristischen Texte und Studien},
    Shortauthor = {Iust.},
    Shorttitle = {De Tryph.},
    Title = {Iustini Martyris dialogus cum Tryphone},
    Volume = {47},
    Year = {1997}}
\end{filecontents} 
\newcommand{\sfootcite}[1]{\footnote{\emph{\citename[2]{#1}{shortauthor}}, \citefield{#1}{shorttitle}}}
\usepackage[ngerman]{babel}
\usepackage[style=authoryear, hyperref=true]{biblatex} 
\bibliography{\jobname} 
\begin{document}
\blindtext \sfootcite{iustinus1997}
\blindtext
\printbibliography

\end{document}

答案1

我必须同意 pst 的评论,看起来你似乎试图使用两种不一致的引用方案;但我认为你想对某些作品(例如主要文本)使用作者/标题方案,对其他作品使用作者/年份方案。如果不是这样,而你想要的是作者/标题方案,那么最好从一开始就使用这个方案。

无论如何,如果您确实需要这个特定命令,我大致会这样做。

首先,我们定义一个特定的书目驱动程序。这里有一些陷阱,因为如果(例如)你没有短作者或短标题会发生什么?它被定义,以便(在这种情况下)它会回到作品的“标准”驱动程序。这可能不是你想要的,但你需要决定你在这种情况下,我们想要什么。编写自定义样式就是预测不可预测的事情。

\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}%
    }

基本上,这会查看您是否有shortauthorshorttitle字段。如果没有,它会返回到标准驱动程序。如果有,它会打印两者,中间有一个逗号,并将您在短标题末尾使用的句号“转换”为“缩写点”,这样就可以在后记中在其后放置逗号。

完成后,我们定义一个将使用该驱动程序的“正确”引用命令。它有四个强制参数和一个可选参数:强制参数指定 (a) 引用前使用的代码(即前注)、(b) 每次引用调用的“循环代码”;(c) 每次引用之间调用的分隔代码,以及 (d) 引用末尾使用的代码(即处理后注)。可选参数用于“包装”整个引用(如果需要)(例如将其放在括号中,或者像本例中一样放在脚注中)。

\DeclareCiteCommand{\mycite}[\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usedriver{}{myshort}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

现在\mycite将像普通的引用命令一样运行,调用myshort驱动程序,并将所有内容包装在脚注中。所以

\mycite[See][11]{iustinus1997}

产生如下图所示的脚注。

该图显示脚注引用

如果我要实际使用它,我会花更多的时间来确保我的引用命令不需要做其他“内务管理”,这意味着要努力authoryear.cbx确保它或多或少与它兼容。

相关内容