我有一个完整的 beamer 演示文稿,其中我大量使用了textpos
包进行绝对定位,特别是环境定位textblock*
。现在,我想用 为这个演示文稿添加注释\setbeameroption{show notes on second screen=left}
,但没有成功。我在这里了解到,使用绝对定位时,textpos
包和pgfpages
包会相互干扰,无法正常工作。
有没有一种简单的方法可以获得 的功能textpos
,但符合pgfpages
(例如使用一些 tikz 命令)并且最好不必重新定位我的所有textblock*
环境?作为参考,这些环境包含单个图形以及更复杂的乳胶代码。
答案1
我一直在研究如何解决我的问题。下面的代码是对以下环境的基本替代
\begin{textblock*}{TEXTWIDTH}(XOFFSET,YOFFSET}
...
\end{textblock*}
软件包提供的textpos
。它不提供可选参数,所有列出的参数都必须设置,并且它不尊重原始软件包的任何设置(如背景颜色)。但是,此代码可以作为某些人textpos
在使用时需要更通用/略有不同的功能替代品的基础pgfpage
:
\makeatletter
\def\@textblockstar#1(#2,#3){\begin{tikzpicture}[remember picture,overlay] \draw (current page.north west) ++ (#2,-#3) node [inner sep=0cm,anchor=north west,text width=#1]\bgroup\begin{minipage}{\textwidth}}
\expandafter\let\csname textblock*\endcsname\@textblockstar
\def\@endtextblockstar{\end{minipage}\egroup;\end{tikzpicture}}
\expandafter\let\csname endtextblock*\endcsname\@endtextblockstar
\makeatother
代码的简单解释如下:第 1 行和第 6 行中的命令允许将 @ 用作中间的普通字符。第 2 行定义环境的开始,第 4 行定义环境的结束,而第 3 行和第 5 行负责正确的命名。环境本身是tikz
一个节点放置在 (#2,#3) 定义的位置的环境,原点是左上角。节点本身的宽度为 #1 并提供环境minipage
。
tikz
与使用相比,此基于 的解决方案的一个优点是,源代码中较晚出现的块将打印在先前的块之上。即使对于命令textpos
也是如此。includegraphics