Como posso garantir que o tikzexternalize não externalize o conteúdo do meu tema beamer?

Como posso garantir que o tikzexternalize não externalize o conteúdo do meu tema beamer?

Graças a Ulrike e Cfr, agora existe uma solução funcional!

Ainda estou um pouco curioso para saber se isso pode ser feito de outra maneira. Existe outra maneira além de envolver os gráficos incluídos \tikzexternaldisablee \tikzexternalenablegarantir que os gráficos do tema do beamer não sejam externalizados?


Tenho um tema personalizado no qual incluo um logotipo no rodapé.

Quando uso o tikzexternalize com o tema, o que às vezes faço, mas nem sempre, o logotipo é externalizado, a menos que eu desabilite a externalização ( \tikzexternaldisable). No entanto, isso falhará se eu não tiver carregado a biblioteca externa (já que \tikzexternaldisableé um comando desconhecido).

Como posso garantir que o conteúdo do tema não seja externalizado?

Este MWE externaliza o logotipo da linha de rodapé:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{external}
\makeatletter
\defbeamertemplate*{footline}{SomeName}[1][]%
{%
\begin{beamercolorbox}[wd=\paperwidth,ht=.1\paperheight,#1]{logo in foot}%
\tikzexternaldisable %fails if external isn't loaded
%^replacing with \csname tikzexternaldisable \endcsname has same effect as commenting the line out
\tikz\draw[fill=blue] (0,0) rectangle (.9286484375\paperwidth,.05\paperheight);
\tikzexternalenable %fails if external isn't loaded
%^replacing with \csname tikzexternalenable \endcsname has same effect as commenting the line out
\end{beamercolorbox}%
}
\makeatother
\tikzexternalize %Externalizes all images unless I disable and enable it in the beamertemplate
%Best would be if I could tell the externalize library to only externalize images in some of the layers of a beamer frame
\author{John Smith}
\begin{document}
\maketitle
\begin{frame}
\tikz\draw (0,0) circle (10cm);
\end{frame}
\end{document}

Espero que haja algum comando/configuração elegante do beamer ou tikz que não exija linhas extras ao inserir gráficos no tema. Deixe-me saber se algo não estiver claro!

Responder1

Um método muito simples é adicionar

\AtBeginDocument{\providecommand\tikzexternaldisable{\relax}} 

em seu preâmbulo. Se você carregar a biblioteca, isso não fará nada. Caso contrário, isso garantirá que o comando seja definido para não fazer nada com êxito.

Outras opções seriam, por exemplo, dizer ao TikZ para externalizar apenas as imagens que você nomeia explicitamente e então nomear as imagens que deseja externalizar.

Ou você pode modificar os comandos de configuração/definição do modelo do Beamer, mas como o Beamer usa vários deles de diversas maneiras, você precisará rastrear o impacto que isso pode ter.

Não sei bem por que você não deseja que os gráficos do tema sejam externalizados, já que você não diz. (Eu teria pensado que esses seriam os principais candidatos.)

informação relacionada