如何在 beamerarticle 中使用 beamer 颜色?

如何在 beamerarticle 中使用 beamer 颜色?

我想将 beamer 定义的颜色用到我的文档的 beamerarticle 版本中。这样我就可以更改 beamer 主题(或颜色主题),颜色也会随之改变。

这里有一个 MWE。一个使用 beamer 颜色 fg 和 bg 的 tikz 图形框架。

\documentclass[ignorenonframetext]{beamer}

%\documentclass{article}
%\usepackage{beamerarticle}

\usepackage{tikz}
\usecolortheme{beaver}

\begin{document}
This is some text outside any frame.

\begin{frame}{Frame}
\begin{alertblock}{Block}
\usebeamercolor[fg]{example text}
\begin{tikzpicture}
\filldraw[color=fg, fill=bg!50!white] (0,0) rectangle (5,3);
\draw[line width=5mm] (1,1)--(2,2);
\end{tikzpicture}
\end{alertblock}
\end{frame}
\end{document}

当我尝试使用 beamerarticle 包的文章时,pdflatex 会抱怨

! Package xcolor Error: Undefined color `fg'.

See the xcolor package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.16 ..., fill=bg!50!white] (0,0) rectangle (5,3);

该示例包含一个 tikz 图形,但我的问题想要更加通用,例如用投影仪颜色声明部分(或任何其他文本)并在文章模式下保留此颜色。

答案1

我只是想在回答另一个问题时这样做,我可以告诉你,这不是打算做的!当article使用 beamer 版本时,许多主题和颜色命令只是设置为“不执行任何操作”。但是,使用一些技巧,我们可以重新加载命令,从而使颜色可用。这应该与极度谨慎因为它可能会破坏一些我还没有测试过的东西(几乎所有东西都是这样)。

这是根据您的示例稍加修改的版本制作的图片:

文章模式下的投影仪颜色

代码如下:

\documentclass{standalone}
%\url{http://tex.stackexchange.com/q/22768/86}
\PassOptionsToPackage{svgnames}{xcolor}
\usepackage{beamerarticle}
\usepackage{tikz}

\makeatletter

\def\beamer@currentmode{beamer}
\def\beamer@colorhook{}
\newskip\beamer@lastskip
\let\beamercolorbox=\relax
\let\endbeamercolorbox=\relax
\let\usetheme=\relax
\let\usecolortheme=\relax
\let\usefonttheme=\relax
\let\useoutertheme=\relax
\let\useinnertheme=\relax

\input{beamerbasethemes.sty}
\input{beamerbasecolor.sty}
\usecolortheme{default}
\usecolortheme{beaver}
\makeatother

\setbeamercolor{example text}{bg=Maroon}

\begin{document}

This is some text outside any frame.

\begin{frame}{Frame}
\begin{alertblock}{Block}
\usebeamercolor{example text}%
\begin{tikzpicture}
\filldraw[color=fg, fill=bg!50!white] (0,0) rectangle (5,3);
\draw[line width=5mm] (1,1)--(2,2);
\end{tikzpicture}
\end{alertblock}
\end{frame}
\end{document}

主要部分是\makeatletter和之间的内容\makeatother。我们需要加载 beamer 颜色管理。不幸的是,包含命令的文件检查mode并跳过article模式中的大多数内容。所以我们需要暂时更改为beamer模式以说服它我们确实想要定义这些内容。但是由于文件已经读入(通过\usepackage{beamerarticle}),我们不能\usepackage再次读取它们而必须读取\input它们(这会在日志中产生几个警告,但请忽略它们)。我们加载集合themescolor集合。有几件事情在中定义,beamer.cls这些依赖于所以我们必须设置它们:\beamer@colorhook\beamer@lastskip。此外,有些东西是由和定义的,\newcommand在第一次读取时被定义为(错误的东西)。所以我们需要将它们全部设置为以\relax避免错误。之后,一切都很顺利!

相关内容