我正在写博士论文,我的导师希望我在脚注中使用特定的简短引用形式,并在论文末尾的参考书目中使用长引用形式。所以基本上我需要三个短字段,而不是传统的两个(shorttitle
和shortauthor
)。
我需要找到一种方法来添加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”字段,但这可能有点过度。