Unerwünschte Verschiebung der Überschrift beim bedingten Platzieren des Logos auf der Beamer-Folie mit \pgfputat

Unerwünschte Verschiebung der Überschrift beim bedingten Platzieren des Logos auf der Beamer-Folie mit \pgfputat

Ich habe ein Makro vondiese Fragedas ein Logo auf alle folgenden Frames \placelogotrueund auf keinen folgenden Frame platziert \placelogofalse. Es funktioniert weitgehend wie beabsichtigt, aber es verursacht Überschrift und Fußzeile der FramesmitDas Logo soll leicht nach links verschoben werden, sodass ein paar unerwünschte Leerräume entstehen (vergleichen Sie die Fußzeile des oberen Bilds mit der Überschrift des unteren Bilds in den folgenden Bildern):

Rahmen mit Logo Rahmen ohne Logo

Hier ist der Code zum Reproduzieren:

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

Warum ist das so? Ich hätte erwartet, \pgfputatdass der Abstand am Rahmen überhaupt nicht geändert wird ...

Ich kompiliere mit LuaLaTeX Version 1.12.0 (TeX Live 2020) auf Arch Linux.

Antwort1

Lassen Sie es uns durch Ausprobieren untersuchen (leider konnte ich das Problem nicht finden). Wenn wir zuerst das \pgfbox[right,base]{\includegraphics[height=7mm]{example-image-a}}durch ein Leerzeichen ersetzen , tritt dasselbe Problem auf, aber ohne dieses Leerzeichen ist es in Ordnung:

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

Bildbeschreibung hier eingeben

Auch die Ausgabe des folgenden Codes ( \pgfputat{ }) ähnelt der obigen Abbildung:

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

Wenn wir das Logo direkt einfügen, \includegraphicwird die Situation schlimmer:

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

Bildbeschreibung hier eingeben

Man kann dieses Leerzeichen auch beheben, indem man \hspace{-0.5mm}vor \pgfboxoder einfügt \pgfxy:

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

oder \makebox[0pt][r]{}statt\pgfbox

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

Siehe auchdieser Beitragfür \llapund \rlapunddieser (nicht ganz verwandte) Beitrag.

Antwort2

Ersetzen Sie den \logoBefehl durch

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

Ich habe die Ursache des Problems nicht überprüft. Sie hängt wahrscheinlich damit zusammen \pgfbox.

Bildbeschreibung hier eingeben

verwandte Informationen