使用 pgfpages 时有没有 textpos 的替代品?

使用 pgfpages 时有没有 textpos 的替代品?

我有一个完整的 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

相关内容