使用 \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.

在此輸入影像描述

相關內容