使用“在第二个屏幕上显示注释”时在投影仪中进行绝对定位:文本出现在错误的页面上

使用“在第二个屏幕上显示注释”时在投影仪中进行绝对定位:文本出现在错误的页面上

如果你编译下面的例子,你会得到一个非常舒适的方式来放置资源在 LaTeX 的幻灯片上beamer

但是,如果用选项取消注释该行show notes on second screen,那么文本就会设置在错误的页面上,即上一页。

这是一个(几乎)最小的工作示例:

\documentclass{beamer}

\usepackage{pgfpages}
% the following line, if not commented, moves the ``source'' to the previous page
%\setbeameroption{show notes on second screen}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% ----------
% from https://tex.stackexchange.com/a/48485/17127
\usepackage[absolute, overlay]{textpos}

\setbeamercolor{framesource}{fg=gray}
\setbeamerfont{framesource}{size=\tiny}

\newcommand{\source}[1]{\begin{textblock*}{8cm}(4.7cm,8.6cm)
    \begin{beamercolorbox}[ht=0.5cm,right]{framesource}
      \usebeamerfont{framesource}\usebeamercolor[fg]{framesource} Source: {#1}
    \end{beamercolorbox}
   \end{textblock*}
}
% ----------

\title{MWE}

\begin{document}

\begin{frame}
  \titlepage
  \note{my note}
\end{frame}

\begin{frame}{title}
  a diagram
  \source{some article or url}
\end{frame}

\end{document}

答案这个问题没有真正帮助我。

更新:

这是另一个问题的答案或许包含答案。

这是正确的吗? 有没有更好的解决方案? 或者 -command 有其他替代方案吗\source

上述\source命令可以扩展以支持多个源吗?

脚注是一种简单的替代方法,但它们比上述\source命令更显眼。这能轻易改变吗?如何改变?

解决方案:

接受的答案提供了所需的\source-command。它使用方便,提供正确且不显眼的位置,并与 配合使用show notes on second screen。它甚至支持多个来源。

答案1

注释textpospgfpages

当处于活动状态时,请注意,通过使用带有选项的包定位的pgfpages任何s都很可能定位不正确,如此处所示。不过,我还没有完全弄清楚定位行为是什么……textblocktextposabsolute

此外,您应该注意textposMWE 中发出的其他警告,即使它们在这种情况下似乎不会影响输出(可以通过确保在环境之前立即有一个段落中断来避免这些警告textblock):

Package textpos Warning: environment textblock* not in vertical mode.
(textpos)                Environment textblock* should not have any text
(textpos)                or printable material appearing before it.
(textpos)                Alignment may work out wrongly.

因此,我提出了一种不依赖于使用 的解决方案textpos,因此具有其他优势。备选方案包括使用textpos但仅使用相对定位;在这种情况下,应确保所有 的textblock原点都在幻灯片中的固定位置(否则它们可能会随着幻灯片内容的变化而移动),而这更难。

避免解决方案textpos

我的想法是改用脚注功能(仍然可以保留原始格式,并且它应该可以与多个 s 和真实脚注很好地交互)。我缩小了使用的\source高度和脚注之间的距离:beamercolorbox\source

\documentclass{beamer}
\usepackage{pgfpages}
\setbeameroption{show notes on second screen}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\setbeamercolor{framesource}{fg=gray}
\setbeamerfont{framesource}{size=\tiny}

\makeatletter
\renewcommand{\footnoterule}{}
\define@key{beamerfootnote}{nonumber}[true]{\edef\beamer@footarg{0}\def\@makefnmark{}}% have to set a number in \beamer@footarg, then it won't be automatically generated one. setting \@makefnmark to be empty means the number isn't printed. but only use this in a group else it affects following footnotes!
% instead of 'nonumber', could just use 0 as an optional argument to \footnote, but OP reports that keyval complains about this in some situations
% http://tex.stackexchange.com/questions/89539
\newcommand{\source}[1]{{\footnote[nonumber]{%
    \begin{beamercolorbox}[right,wd=\dimexpr\hsize-1.8em\relax]{framesource}
      \usebeamerfont{framesource}\usebeamercolor[fg]{framesource} Source: {#1}
    \end{beamercolorbox}}}}
\setlength{\footnotesep}{0cm}%\footnotesep is the space between footnotes (generated with a \rule)
\makeatother

% inspired by [beamer: footnote text collides with navigation symbols](http://tex.stackexchange.com/a/5855)
\addtobeamertemplate{sidebar right}{\setbeamertemplate{navigation symbols}{}}{}
\addtobeamertemplate{footline}{\hfill\usebeamertemplate***{navigation symbols}%
    \hspace*{0.1cm}\par\vskip 2pt}{}

\title{MWE}

\begin{document}

\begin{frame}{title}
  a diagram
  \footnote{a real footnote}%
  \footnote{a real footnote}%
  \source{some article or url}%
  \source{some article or url}%
  \footnote{a real footnote}%
\end{frame}

\end{document}

输出说明

1.8em请注意,需要从的宽度中删除的神奇数字beamercolorbox(以避免过满)在的默认模板\hbox中定义,这是为脚注编号保留的空间:beamerfootnote

\defbeamertemplate*{footnote}{default}
{
  \parindent 1em\noindent%
  \raggedright
  \hbox to 1.8em{\hfil\insertfootnotemark}\insertfootnotetext\par%
}

其他注意事项pgfpages

请注意,使用时(即使是间接使用)也需要考虑其他因素pgfpages,例如页码等。主要建议是在没有pgfpages活动的情况下完全编译文档,然后激活它并再次调用进行编译\nofiles

相关内容