如何修改 Beamer 中的参考书目内容

如何修改 Beamer 中的参考书目内容

我有以下问题这个问题-- 我想将参考书目放在 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}

请注意,如果一组作者在同一年出版多部作品,这些短标签可能会产生歧义。为了消除歧义,请使用biblatexlabelyear=truelabeldate=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}

相关内容