使用 tikzset 和 usebeamercolor 定义全局样式

使用 tikzset 和 usebeamercolor 定义全局样式

我正在定义一个企业设计beamer模板。

实际上,我在文件中定义了一些给定的颜色beamercolorthemeCD.sty。(下一步是通过定义一些字体模板beamerfontthemeCD.sty。也许我会遇到与颜色相同的问题?)

我用它tikzpictures来将不同的 CD 元素放到幻灯片上。为了使其最高效和简单,我通过以下方式定义了一些全局 TikZ 样式\tikzset...

现在我想将 beamer 模板定义与 TikZ 样式结合起来,例如我想在beamercolorthemeCD.sty某些 TikZ 绘制元素上使用\tikzset定义样式中给出的特殊颜色。

此定义不起作用:

%% Define the color, 
\setbeamercolor{dark decoration}{fg=black}

%% Use that color in this TikZ style
\tikzset{%
   dark/.style={%
      line width=\rulerwidth,
      color={\usebeamercolor{dark decoration}},
   }%
}%

LaTeX 出错

缺少插入的 \endcsname。

并且

段落在 \XC@col@rlet 完成之前结束。

我发现了一个这里有类似的问题,说明,您可以使用的颜色实际的投影仪模板。

但在我的例子中,装饰元素用在不同的位置(例如headlinefootline和其他模板),使用不同的前景色和背景色。(装饰元素不应该在不同的模板/环境中改变颜色。)

另外:当时,当定义 TikZ 样式时,并没有实际的模板起作用,所以只是说color=fg,正如解决答案所暗示的那样,在我的情况下不起作用。

有没有办法使用 beamer 颜色模板全局定义 TikZ 样式颜色?

以下是可供试用的 MWE

\documentclass{beamer}
\usepackage{tikz}

\title{Some ordinary title}
\author{I. T. Sme, A. Gain}
\date{Later On}

\setbeamercolor{dark decoration}{fg=black}
\setbeamercolor{light decoration}{fg=grey}

\tikzset{%
  dark/.style={%
    line width=1pt,
    % This doesn't work :(
    color={\usebeamercolor{dark decoration}},
  }%
}%
      
\begin{document}
  \begin{frame}
    \begin{tikzpicture}
      \draw[dark] (0,0) -- (1,1);
    \end{tikzpicture}
  \end{frame}

\end{document}

答案1

您必须至少使用该颜色一次才能使其在xcolor格式中可用。这有效:

\documentclass{beamer}
\usepackage{tikz}

\title{Some ordinary title}
\author{I. T. Sme, A. Gain}
\date{Later On}

\setbeamercolor{dark decoration}{fg=black}
\setbeamercolor{light decoration}{fg=grey}

\tikzset{%
  dark/.style={%
    line width=1pt,
    % This doesn't work :( unless you use the color before!
    color=dark decoration.fg,
  }%
}%
      
\begin{document}
  \begin{frame}
  
  {\usebeamercolor[fg]{dark decoration}}
    \begin{tikzpicture}
      \draw[dark] (0,0) -- (1,1);
    \end{tikzpicture}
  \end{frame}

\end{document}

我现在在用手机,查看到底发生了什么太痛苦了——后面的空行\begin{frame}是必须的。明天我会调整它……

相关内容