使用“在第二个屏幕上显示注释”和绝对“pgf”定位时,标题图片在 Beamer 中错位

使用“在第二个屏幕上显示注释”和绝对“pgf”定位时,标题图片在 Beamer 中错位

当我尝试做以下类似的事情时,一切都运行良好;标题图形(此处由带有红色背景的 LaTeX 徽标表示)显示得很好。

\documentclass{beamer}
\usepackage{pgfpages,tikz}
%\setbeameroption{show notes on second screen=right}
\author{Euclid}
\title{There Is No Largest Prime Number}
\titlegraphic{%
  \begin{tikzpicture}[inner sep=0, remember picture, overlay]
    \node[anchor=south west, inner sep=0, shift={(5mm,5mm)}]
    at (current page.south west)
    [fill=red!20,rounded corners, above right]
    {\Huge\LaTeX};
  \end{tikzpicture}%
}
\begin{document}
\maketitle
\end{document}

工作标题图

但是,如果我尝试通过启用上述代码中的注释行来生成包含单独逻辑页面中的注释的输出,则似乎 pgf 节点current page完全关闭,并且标题图形最终超出了逻辑页面。这种情况可以从注释页面右上角的小预览中看出,其中标题图形位于预览的西南偏远位置。

启用注释页面时放错标题图形

如果我删除了at (current page.south west)节,标题图形会再次出现在框架内,但几乎不可能正确定位它。有人知道发生了什么事以及我该如何解决这个问题吗?

答案1

这是因为show notes on second slide使用pgfpagespgfpages工作方式是将逻辑页面放入框中,然后将其设置在物理页面上的位置。不幸的是,这会弄乱绝对坐标,因为现在有两个坐标系统:内部的一(某物在逻辑页面)和外部的一(某物在身体的页面)。对于绝对定位,PGF 需要知道内部位置,但绝对位置会被记录到辅助文件中。“解决方案”是确保当 PGF 使用坐标时,它使用在内部和外部相同时计算出的坐标。实现此目的的方法是使用两步过程:

  1. 不使用此show notes on second screen选项进行编译。在这种情况下,坐标是相同的,因此正确的坐标会记录在辅助文件中。

  2. 使用show notes on second screen选项进行编译,但也使用\nofiles。这里,辅助文件未更新,因此未记录新坐标。因此使用正确的坐标。

代码如下:

\documentclass{beamer}
%\url{http://tex.stackexchange.com/q/86378/86}
\usepackage{pgfpages,tikz}
%\setbeameroption{show notes on second screen=right}\nofiles

\author{Euclid}
\title{There Is No Largest Prime Number}
\titlegraphic{%
  \begin{tikzpicture}[inner sep=0, remember picture, overlay]
    \node[anchor=south west, inner sep=0, shift={(5mm,5mm)}]
    at (current page.south west)
    [fill=red!20,rounded corners, above right]
    {\Huge\LaTeX};
  \end{tikzpicture}%
}
\begin{document}
\maketitle
\end{document}

\setbeameroption{...}(和在同一行并不重要\nofiles,只是为了更容易将它们一起注释掉。)

双重运行的结果是:

Beamer 和 PGF 绝对定位带注释

答案2

这很棘手。我用过去使用过的方法重写了幻灯片。我相信它可以成为额外工作的良好起点。我选择使用环境picture\put相对于左下角的图片。正如您所看到的,图片最终出现在我认为您想要的位置,但原点由于某种原因垂直移动,可能是由于页脚线。我还使用\titlepage(而不是\maketitle)来制作标题幻灯片,我认为这是首选方式。

\documentclass{beamer}
\usepackage{pgfpages,tikz}
\setbeameroption{show notes on second screen=right}
\setlength{\unitlength}{1mm} % sets unit length for pic env to mm
% note that a beamer slide by default is 128 mm wide and 96 mm high
\author{Euclid}
\title{There Is No Largest Prime Number}

\begin{document}
\begin{frame}

\titlepage

\begin{picture}(25,25)(0,0)% inserts a picture 25 by 25 mm (Should contain the text)
  \put(0,0){%put the image in the ll corner
    \begin{tikzpicture}%[inner sep=0, remember picture, overlay]%
      % the following sets the image 5 mm in and 0 mm up, nudged by me!
      \node [fill=red!20,rounded corners] at (5mm,0mm) {\Huge\LaTeX};
    \end{tikzpicture}
  }
\end{picture}

\end{frame}

\end{document}

相关内容