我有以下问题这个问题-- 我想将参考书目放在 Beamer 的块之外。基于上述解决方案,我有一个几乎可行的方法,只是我想修改参考书目内容,但似乎找不到办法做到这一点。现在我有:
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{csquotes}
\usepackage[style=numeric-comp, backend=biber, citetracker=true, sorting=none]{biblatex}
\makeatletter
\renewcommand\@makefnmark{\hbox{\@textsuperscript{\normalfont[\@thefnmark]}}}
\renewcommand\@makefntext[1]{{\normalfont[\@thefnmark]}\enspace #1}
\makeatother
\DeclareCiteCommand{\footfullcitetext}[\mkbibfootnotetext]
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\addbibresource{mwe}
\begin{document}
\begin{frame}{Beamer frame}
\begin{beamerboxesrounded}[]{Beamer rounded box}
\begin{itemize}
\item Bullet 1 \footnotemark
\item Bullet 2
\end{itemize}
\end{beamerboxesrounded}
\footfullcitetext{LaTeX}
Outside
\end{frame}
\end{document}
在脚注中,显示“[1] Leslie Lamport。LaTeX – 一种文档准备系统。Addison-Wesley,1985 年。”我怎样才能将其改为“[1] Lamport (1985)”之类的内容?
或者,有没有更简单的方法来做参考书目,比如我在幻灯片的内容(块内)中写上“这是基于以前的工作[1]。”而在脚注中只写作者和年份?
答案1
脚注中的“完整”引用由代码生成
\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}
在 中\footfullcitetext
。对于较短的引用,可以将其替换为:
\printnames{labelname}\setunit{\addnbspace}\printfield[parens]{year}
请注意,如果一组作者在同一年出版多部作品,这些短标签可能会产生歧义。为了消除歧义,请使用biblatex
(labelyear=true
或labeldate=true
使用 2.6 以上版本)加载并使用
\printtext[parens]{\printfield{labelyear}\printfield{extrayear}}
您采用了链接解决方案中提供的第二种替代方案,其中:
- 必须手动添加块外的脚注引用,
- 必须手动跟踪重复引用,
- 不允许使用常规脚注。
因此,为了解决您的第二个问题,请采用提供的第一个替代方案。以下是一个例子。
\documentclass{beamer}
\usepackage[style=numeric-comp,citetracker=true,sorting=none]{biblatex}
\usepackage{hyperref}
\usetheme{Berlin}
\setbeamertemplate{bibliography item}[text]
\renewcommand{\bibfootnotewrapper}[1]{#1}
\makeatletter
\let\cbx@citehook=\empty
\newtoggle{cbx@blockcite}
\renewcommand{\@makefntext}[1]{%
\noindent\normalfont\ifundef{\thefootnote}{}{\@thefnmark~}#1}
\DeclareCiteCommand{\sfcite}[\cbx@superscript]%
{\usebibmacro{cite:init}%
\let\multicitedelim=\supercitedelim
\iffieldundef{prenote}
{}
{\BibliographyWarning{Ignoring prenote argument}}%
\iffieldundef{postnote}
{}
{\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
\ifciteseen
{\ifnumequal{\value{page}}{\csuse{cbx@page@\thefield{entrykey}}}
{}
{\ifnumequal{\value{framenumber}}{\csuse{cbx@frame@\thefield{entrykey}}}
{\usebibmacro{sfcite}}
{}}}
{\usebibmacro{sfcite}}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}}
\newbibmacro*{sfcite}{%
\csnumgdef{cbx@page@\thefield{entrykey}}{\value{page}}%
\csnumgdef{cbx@frame@\thefield{entrykey}}{\value{framenumber}}%
\xappto\cbx@citehook{\noexpand\cbx@footnotetext{\thefield{entrykey}}}}
\DeclareCiteCommand{\cbx@footnotetext}[\let\thefootnote\relax\mkbibfootnotetext]
{}
{\printfield[brackets]{labelnumber}%
\setunit{\addnbspace}%
\printnames{labelname}%
\setunit{\addnbspace}%
\printfield[parens]{year}}
{\multicitedelim}
{}
\newrobustcmd*{\cbx@superscript}[1]{%
\mkbibsuperscript{\mkbibbrackets{#1}}%
\iftoggle{cbx@blockcite}
{}
{\cbx@citehook%
\global\let\cbx@citehook=\empty}}
\def\cbx@beg@hook{\global\toggletrue{cbx@blockcite}}
\def\cbx@end@hook{%
\cbx@metabox{%
\global\togglefalse{cbx@blockcite}%
\cbx@citehook%
\global\let\cbx@citehook=\empty}}
\def\cbx@metabox#1{\edef\theprevdepth{\the\prevdepth}\nointerlineskip
\vbox to0pt{#1\vss}\prevdepth=\theprevdepth}
\BeforeBeginEnvironment{block}{\cbx@beg@hook}
\AfterEndEnvironment{block}{\cbx@end@hook}
\BeforeBeginEnvironment{beamerboxesrounded}{\cbx@beg@hook}
\AfterEndEnvironment{beamerboxesrounded}{\cbx@end@hook}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\begin{frame}{First Frame}
\begin{itemize}[<+->]
\item First citation.\sfcite{reese} Recurrent citation.\sfcite{reese}
\item Second citation.\sfcite{springer} Recurrent citation.\sfcite{springer}
\end{itemize}
\end{frame}
\begin{frame}{Second Frame}
\begin{beamerboxesrounded}[]{Beamer rounded box}
Recurrent citation.\sfcite{reese} New citation.\sfcite{companion}
\end{beamerboxesrounded}
New citation.\sfcite{bertram} Recurrent citation.\sfcite{bertram,companion}
Vanilla footnote.\footnote{Footnote text}
\end{frame}
\begin{frame}
\printbibliography
\end{frame}
\end{document}
鉴于您要使脚注引用“简短”,请考虑使用作者年份样式:
\usepackage[style=authoryear-comp,maxcitenames=1,uniquename=false]{biblatex}