Ложное смещение заголовка при условном размещении логотипа на слайде проектора с помощью \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вообще не стал менять расстояние на раме...

Я компилирую с помощью LuaLaTeX версии 1.12.0 (TeX Live 2020) на Arch Linux.

решение1

Давайте исследуем это методом проб и ошибок (К сожалению, я не смог найти проблему). Во-первых, если мы заменим на \pgfbox[right,base]{\includegraphics[height=7mm]{example-image-a}}пробел , то возникнет та же проблема, но без этого пробела все в порядке:

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

введите описание изображения здесь

Вывод следующего кода ( \pgfputat{ }) также аналогичен изображению выше:

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

Если мы сразу вставим логотип, \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.

введите описание изображения здесь

Связанный контент