使用 \pgfputat 有条件地将徽标放置在投影仪幻灯片上时,标题会发生虚假移动

使用 \pgfputat 有条件地将徽标放置在投影仪幻灯片上时,标题会发生虚假移动

我有一个宏取自这个问题在所有后续帧上放置徽标\placelogotrue,而不在后续帧上放置徽标\placelogofalse。它基本上按预期工作,但它会导致帧的标题和内容徽标稍微向左移动,留下一些虚假的空白(比较下图中上方图片的脚注和下方图片的标题):

带徽标的框架 无标志框架

以下是要重现的代码:

% !TeX program = lualatex
\documentclass{beamer}

\usetheme{Malmoe}
% graphics
\DeclareGraphicsExtensions{.jpg,.jpeg,.png,.pdf}

% TikZ/PGF
\usepackage{pgf}

% customization of beamer style
\setbeamertemplate{bibliography item}{}
\setbeamertemplate{navigation symbols}{}

% define logo
\newif\ifplacelogo
\placelogotrue
\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\pgfbox[right,base]{%
            \includegraphics[height=7mm]{example-image-a}
    }}\fi}%

% define custom headline
\setbeamertemplate{headline}
{%
    \leavevmode%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{section in head/foot}%
        \hbox to .5\paperwidth{\hfil\insertsectionhead\hfil}
    \end{beamercolorbox}%
    \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{subsection in head/foot}%
        \hbox to .5\paperwidth{\hfil\insertsubsectionhead\hfil}
    \end{beamercolorbox}%
}

\begin{document}

\begin{frame}
\end{frame}

\placelogofalse
\begin{frame}
\end{frame}


\end{document}

这是为什么?我本来期望\pgfputat根本不会改变框架上的间距……

我正在 Arch Linux 上使用 LuaLaTeX 版本 1.12.0(TeX Live 2020)进行编译。

答案1

让我们通过反复试验来探索它(不幸的是,我找不到问题所在)。首先,如果我们\pgfbox[right,base]{\includegraphics[height=7mm]{example-image-a}}用空格替换,则会出现相同的问题,但如果没有该空格,则没问题:

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{ }\fi}%

在此处输入图片描述

下面代码( )的输出\pgfputat{ }也与上图类似:

\logo{\ifplacelogo\pgfputat{ }{}\fi}%

如果我们直接插入logo\includegraphic那么情况会变得更糟:

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\includegraphics[height=7mm]{example-image-a}}\fi}%

在此处输入图片描述

也可以通过在或\hspace{-0.5mm}之前插入来修复此空白:\pgfbox\pgfxy

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\hspace{-0.5mm}\pgfbox[right,base]{%
            \includegraphics[height=7mm]{example-image-a}
    }}\fi}%

或使用\makebox[0pt][r]{}代替\pgfbox

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\makebox[0pt][r]
{\includegraphics[height=7mm]{example-image-a}}}\fi}%

也可以看看这个帖子对于\llap\rlap这篇(不完全相关的)帖子。

答案2

\logo用以下命令替换

\logo{\ifplacelogo\pgfputat{\pgfxy(-0.1,7.72)}{\llap{\includegraphics[height=7mm]{example-image-a}}}\fi}

我没有检查问题的根源,可能与有关\pgfbox

在此处输入图片描述

相关内容