Mudança espúria de título ao colocar condicionalmente o logotipo no slide do beamer usando \pgfputat

Mudança espúria de título ao colocar condicionalmente o logotipo no slide do beamer usando \pgfputat

Eu tenho uma macro tirada deessa questãoque coloca um logotipo em todos os quadros seguintes \placelogotruee em nenhum quadro seguinte \placelogofalse. Em grande parte, funciona como pretendido, mas causa manchete e linha alimentar dos quadroscomo logotipo será ligeiramente deslocado para a esquerda, deixando alguns espaços em branco falsos (compare o rodapé da imagem superior com o título da imagem inferior nas imagens abaixo):

moldura com logotipo moldura sem logotipo

Aqui está o código para reproduzir:

% !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}

Por que é que? Eu esperava \pgfputatnão alterar o espaçamento no quadro ...

Estou compilando com LuaLaTeX versão 1.12.0 (TeX Live 2020) no Arch Linux.

Responder1

Vamos explorá-lo por tentativa e erro (infelizmente não consegui encontrar o problema). Primeiro, se substituirmos \pgfbox[right,base]{\includegraphics[height=7mm]{example-image-a}}por um espaço , o mesmo problema aparecerá, mas sem esse espaço está tudo bem:

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

insira a descrição da imagem aqui

A saída do código a seguir ( \pgfputat{ }) também é semelhante à imagem acima:

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

Se inserirmos o logotipo diretamente, \includegraphica situação vai piorar:

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

insira a descrição da imagem aqui

Também é possível corrigir esse espaço em branco inserindo \hspace{-0.5mm}before \pgfboxou \pgfxy:

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

ou usando \makebox[0pt][r]{}em vez de\pgfbox

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

Veja tambémesta postagempara \llape \rlapeesta postagem (não completamente relacionada).

Responder2

Substitua o \logocomando por

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

Não verifiquei a origem do problema, que provavelmente está relacionado ao \pgfbox.

insira a descrição da imagem aqui

informação relacionada