我想要以下设置:两列,一列是环境itemize
,另一列是图像(当然,不一定是列,只是一个并排的列表和图像,但我认为列是实现这一点的一种方式)。我可以实现这一点,而且看起来或多或少还不错。
但是,我想在第一列中为列表中的每个项目添加引文。结果开始变得糟糕:
有没有办法将参考资料放在列的最底部?实际上,参考资料似乎属于第一列,如果有意义的话,我想将它们放在下面。基本上,我希望它看起来像第一张图片,但参考资料位于框架的底部。
当前设置如下:
\documentclass{beamer}
\usepackage{graphicx}
\usepackage[style=verbose-ibid,backend=bibtex]{biblatex}
\bibliography{bibliography}
\begin{document}
\begin{frame}\frametitle{Title}
A complete sentence on top of the frame.
\begin{columns}
\begin{column}{0.47\textwidth}
\begin{itemize}
\item text1 \autocite{ref_a}
\item text2 \autocite{ref_b}
\item text3 \autocite{ref_c}
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\rule{\textwidth}{0.75\textwidth}
\end{column}
\end{columns}
\end{frame}
\end{document}
答案1
经过深入研究后,在@samcarter_is_at_topanswers.xyz 的大力帮助下,实际上可以找到多种解决方案。
但首先,在演示中,请注意最好尽可能避免使用脚注! 手册中的引文beamer
(第 12.12 节):
首先要提醒大家:使用脚注通常不是一个好主意。它们会打乱阅读的流畅性。
因此,首先,如果您确实想要脚注引用,我建议尽可能减少信息,仅保留:
- 作者姓名
- 标题
- 那一年
- 时期
这可以通过 选项获得style=authoryear
。biblatex
附加信息只会占用frame
s 中的空间,而且无论如何也没人会阅读(或记住)它们。
既然已经设置好了,在所有情况下,针对您的基本问题都会出现两个解决方案,关键操作是提供基本frame
选项\footnote
。
- 解决方案 1 是
\cite
从头开始重新定义命令,包括\footnote[frame]
- 解决方案 2 是
biblatex
在调用时进行修补footnote
- 解决方案 3 是修补
beamer
\footnotes
以始终使用该frame
选项
% arara: pdflatex
% arara: bibtex
% arara: bibtex
% arara: pdflatex
\documentclass{beamer}
\usepackage{graphicx}
\usepackage[style=authortitle,backend=bibtex]{biblatex}
\bibliography{bibliography}
% Solution n°1
\newcommand{\customcite}[1]{\leavevmode\unskip\footnote[frame]{\citeauthor{#1}, \citetitle{#1}, \citeyear{#1}.}}
% Other solutions
% From https://tex.stackexchange.com/a/215608/141947
% To add the year to the authortitle style
\usepackage{xpatch}
\xapptobibmacro{cite}{\setunit{\nametitledelim}\printfield{year}}{}{}
% Solution n°2
% If you want to provide only cite-related macros with frame option (may break elsewhere)
\makeatletter
\renewrobustcmd{\blx@mkbibfootnote}[2]{%
\iftoggle{blx@footnote}
{\blx@warning{Nested notes}%
\addspace\mkbibparens{#2}}
{\unspace
\ifnum\blx@notetype=\tw@
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
{\footnote[#1,frame]{\protecting{\blxmkbibnote{foot}{#2}}}}}}
\makeatother
% Solution n°3
% If you want to provide all your footnotes with "frame" option by default
% \makeatletter
% \renewcommand<>{\footnote}[1][frame]{%
% \let\beamer@footnotetext=\@footnotetext%
% \let\beamer@mpfn=\@mpfn%
% \let\beamer@thempfn=\thempfn%
% \let\beamer@kvorig=\KV@errx%
% \let\beamer@xkvorig=\XKV@err
% \def\beamer@footarg{}%
% \def\KV@errx##1{\edef\beamer@footarg{\@tempa}}%
% \def\XKV@err##1{\edef\beamer@footarg{\XKV@tkey}}%
% \setkeys{beamerfootnote}{#1}%
% \let\KV@errx=\beamer@kvorig%
% \let\XKV@errx=\beamer@xkvorig
% \ifx\beamer@footarg\@empty%
% \def\beamer@next{\stepcounter\beamer@mpfn
% \protected@xdef\@thefnmark{\beamer@thempfn}%
% \@footnotemark\beamer@footnotetext#2}%
% \else%
% \def\beamer@next{%
% \begingroup
% \csname c@\beamer@mpfn\endcsname\beamer@footarg\relax
% \unrestored@protected@xdef\@thefnmark{\beamer@thempfn}%
% \endgroup
% \@footnotemark\beamer@footnotetext#2}%
% \fi%
% \beamer@next}
% \makeatother
\begin{document}
\begin{frame}\frametitle{Title}
A complete sentence on top of the frame.
\begin{columns}
\begin{column}{0.47\textwidth}
\begin{itemize}
\item text1 \autocite{ref_a}
\item text2 \autocite{ref_b}
\item text3 \autocite{ref_c}
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\rule{\textwidth}{0.75\textwidth}
\end{column}
\end{columns}
\end{frame}
\begin{frame}\frametitle{Title}
A complete sentence on top of the frame.
\begin{columns}
\begin{column}{0.47\textwidth}
\begin{itemize}
\item text1 \customcite{ref_a}
\item text2 \customcite{ref_b}
\item text3 \customcite{ref_c}
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\rule{\textwidth}{0.75\textwidth}
\end{column}
\end{columns}
\end{frame}
\end{document}
在所有情况下,输出都是相同的