
感謝 Ulrike 和 Cfr,現在有了一個可行的解決方案!
我仍然有點好奇是否可以透過其他方式完成。除了用 和 包圍包含的圖形之外,還有其他方法可以\tikzexternaldisable
確保\tikzexternalenable
投影機主題圖形不會外化嗎?
我有一個自訂主題,其中我在腳線中包含一個徽標。
當我將 tikzexternalize 與主題一起使用時(有時但並非總是如此),徽標會被外部化,除非我禁用外部化 ( \tikzexternaldisable
)。但是,如果我沒有載入外部庫(因為這\tikzexternaldisable
是一個未知的命令),則會失敗。
如何確保主題內容不會外化?
此 MWE 外部化了腳線標誌:
\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}
我希望有一些優雅的投影機或 tikz 命令/設置,在將圖形插入主題時不需要額外的行。如果有不清楚的地方請告訴我!
答案1
一個非常簡單的方法是添加
\AtBeginDocument{\providecommand\tikzexternaldisable{\relax}}
在你的序言中。如果載入該庫,這將不會執行任何操作。如果不這樣做,它將確保該命令被定義為不成功執行任何操作。
例如,其他選項是告訴 TikZ 僅外部化您明確命名的圖片,然後命名您想要外部化的圖片。
或者您可以修改 Beamer 的範本設定/定義命令,但由於 Beamer 以多種方式使用這些命令,因此您需要追蹤這可能產生的影響。
我不完全確定為什麼你不希望主題圖形外化,因為你沒有說。 (我以為這些會是主要候選人。)