使用 BibLaTeX (+ Biber) 书目,我希望一些特别重要的条目也作为脚注显示在引用它们的页面上。实际上,这是关于 Beamer 演示文稿的,但我的问题主要与书目条目有关,所以让我们保持简单。脚注应该看起来像常规书目条目,并且该方法应该适用于任何引用样式,而不仅仅是数字样式。\footcite
不符合这些要求,也不符合这个老问题。
原则上,下面的代码实现了这一点。(只是\vspace
为了使下图更紧凑。)
\documentclass{article}
\usepackage[style=alphabetic]{biblatex}
\bibliography{biblatex-examples}
\newcommand*\citeWithEntry[1]{%
\begingroup%
\renewcommand\thefootnote{}%
\cite{#1}\footnote{\cite{#1}~\fullcite{#1}}%
\addtocounter{footnote}{-1}%
\endgroup%
}%
\begin{document}
\vspace*{\fill}
Some text with an important reference~\citeWithEntry{hammond}.
And then, we have the same citation again~\citeWithEntry{hammond}.
\end{document}
我的问题:
- 这里使用两次有什么副作用吗
\cite
?或者还有其他方法可以打印引用标签吗? - 当一个引用出现多次时,如何避免多次打印相同的条目?
- 有没有更“惯用”的解决方案
biblatex
? - 补充:我可以不使用专用命令来实现此效果吗?例如,BibLaTeX 支持类别和关键字。我可以为任何
\cite
引用具有特定关键字或类别的条目自动生成此脚注参考书目条目吗?
答案1
结合两种变体这个答案,我之前的搜索没有找到,除了奖励问题之外,我可以解决所有问题:
\documentclass{article}
\usepackage[style=alphabetic,citetracker=strict]{biblatex}
\bibliography{biblatex-examples}
\makeatletter
\newrobustcmd{\mkbibblfootnote}[1]{%
\iftoggle{blx@footnote}{%
\blx@warning{Nested notes}%
\addspace\mkbibparens{#1}%
}
{%
\unspace
\ifnum\blx@notetype=\tw@
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\csuse{blx@theendnote}{\protecting{\blxmkbibnote{end}{#1}}}}
{\csuse{blfootnote}{\protecting{\blxmkbibnote{foot}{#1}}}}
}%
}
\makeatother
\newcommand\blfootnote[1]{\begingroup\let\thefootnote\relax\footnotetext{#1}\endgroup}
\DeclareCiteCommand{\citeWithEntry}
{\usebibmacro{prenote}}
{%
\mkbibbrackets{\usebibmacro{cite}}%
\ifciteseen{}{%
\mkbibblfootnote{%
\mkbibbrackets{\usebibmacro{cite}}%
\setunit{\addspace}%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}%
}%
}%
}
{\multicitedelim}
{\usebibmacro{postnote}}
\newbibmacro*{morecite}{%
\printnames{labelname}%
\setunit{\addspace}%
\printfield[parens]{year}%
\setunit{\nametitledelim}%
\printfield[citetitle]{labeltitle}}
\begin{document}
\vspace*{\fill}
Some text with an important reference~\citeWithEntry{hammond}.
And then, we have the same citation again~\citeWithEntry{hammond}.
\end{document}