我还有关于使用自定义脚注引用的另一个问题biblatex
。
对于某些文章中常见的事实或观察引用,我想在脚注中添加前缀。这是为了区分非字面引用。只有在真正逐字引用某人的罕见情况下,才不需要添加前缀。我的 95% 的引用都使用“参见:”前缀。
(我指的“前缀”不是通常的名称前缀,如“von”、“de”、“van”等。)
因此,
韦恩(2012),第 123 页。
我想实现
请参阅:Wayne(2012),第 123 页。
这已经适用于 prenote 语法(参见 MWE),但我也可以自定义renewbibmacro
以包含前缀吗?否则,我 a) 必须浏览整个文档以手动更改每个引用,并且 b) 如果我想更改它,就必须再次执行此操作。
对于逐字引用,我猜我可以\citelit
用引入一个新命令?\let\citelit\cite
最小工作示例:
\begin{filecontents}{_references.bib}
@article{wayne12a,
Author={Wayne, B.}, Title={A survey about the social inequalities in Gotham City},
Journal={International Journal of Comic Science}, Year={2012},
Volume={7}, Number={4}, Pages={35--45}}
@article{joker10b,
Author={Joker, T.}, Title={Why so serious?},
Journal={Journal of Vulgarity}, Year={2010},
Volume={38},Number={5}, Pages={103--116}}
\end{filecontents}
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[bibstyle=authoryear, citestyle=authoryear, autocite=footnote,%
dashed=false, firstinits=true]{biblatex}
\addbibresource{_references.bib}% add bibtex-file
\let\cite\autocite% \cite -> \autocite
\renewbibmacro*{cite:labelyear+extrayear}{% Round parentheses around the year
\iffieldundef{labelyear} % Source: tex.stackexchange.com/a/30822/10434
{}
{\printtext[bibhyperref]{%
\printtext[parens]{%
\printfield{labelyear}%
\printfield{extrayear}}}}}
\begin{document}
The CEO of Wayne Enterprises praised Batman's achievements for improving the living
conditions in Gotham City.~\cite[See:][31]{wayne12a}
In a recent publication, however, The Joker described Batman as ``a little boy in a
playsuit, crying for mummy and daddy.''~\cite[109]{joker10b}
\end{document}
答案1
供将来参考,这里是另一种解决方案,允许您使用自动“参见:”预注覆盖引用的默认设置。
正如与 lockstep 讨论的那样,此功能对于 OP 的问题的回答并不是绝对必要的,但由于\citelit
和\cite
在这种情况下具有语义含义(即直接和间接引用),因此可能需要有反映它的命令。此外,此解决方案比更具可定制性\newcommand
,并且可以被其他想要实现类似结果的人使用。
您可以在序言中写以下内容:
% Create a cite command that uses the default autocite=footnote behaviour
\DeclareCiteCommand{\seecite}[\iffootnote\mkbibparens\mkbibfootnote]
{% Replace \usebibmacro{prenote} by its demfinition and modify it
\iffieldundef{prenote}
{\bibstring{see}\addcolon%
\setunit{\prenotedelim}}%
{\printfield{prenote}%
\setunit{\prenotedelim}}%
}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}
正如原始问题所建议的,我们使用\citelit
和\cite
:
\let\citelit\autocite
\let\cite\seecite
现在,我们可以在文档中写入以下内容:
\cite[92]{wayne12a}
\cite[Contra\addcolon][73]{joker10b}
\citelit[127]{joker10b}
答案2
我将简单地定义一个\precite
基于\autocite
但始终使用其第二个可选参数的宏。iennisei 的\bibstring
提示也很好 - 但请注意,添加\addspace
到新宏的定义会导致前缀后出现双空格。
\documentclass{article}
\usepackage[style=authoryear,autocite=footnote]{biblatex}
\NewBibliographyString{see}
\DefineBibliographyStrings{english}{%
see = {See},
}
\newcommand*{\precite}[2][]{\autocite[\bibstring{see}\addcolon][#1]{#2}}
\textheight=100pt% just for the example
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{wayne12a,
Author={Wayne, B.}, Title={A survey about the social inequalities in Gotham City},
Journal={International Journal of Comic Science}, Year={2012},
Volume={7}, Number={4}, Pages={35--45}}
@article{joker10b,
Author={Joker, T.}, Title={Why so serious?},
Journal={Journal of Vulgarity}, Year={2010},
Volume={38},Number={5}, Pages={103--116}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
The CEO of Wayne Enterprises praised Batman's achievements for improving the living
conditions in Gotham City \precite[31]{wayne12a}.
In a recent publication, however, The Joker described Batman as ``a little boy in a
playsuit, crying for mummy and daddy'' \autocite[109]{joker10b}.
\end{document}