hf-tikz 包:beamer 类中的自定义颜色和覆盖错误

hf-tikz 包:beamer 类中的自定义颜色和覆盖错误

考虑以下 MWE这里

解决方案hf-tikz包裹

\documentclass{beamer}
\usepackage{lmodern,amsmath,amssymb}
\usepackage[beamer]{hf-tikz}

\usetheme{Copenhagen}

\begin{document}

\section{Mysection}
\subsection{A subsection}
\begin{frame}{The equations}
\begin{block}{}
 \begin{align}
   \tikzmarkin<1>{a}a_i\tikzmarkend{a} + b_j = 10 & \forall i\in I, j\in J \\
   \tikzmarkin<2>{c}c_j + d_j + \tikzmarkin<1>{b}a_i\tikzmarkend{b} >= 30 & \forall i\in I, j\in J\tikzmarkend{c}
 \end{align}
\end{block}
\end{frame}

\end{document}

如果我尝试按照文档自定义突出显示框的颜色,则会出错。例如,如果我插入以下行

\hfsetfillcolor{blue!10}
\hfsetbordercolor{blue}

就在tikzmarkin<1>我收到错误之前! Undefined control sequence

此外,如果我删除覆盖规范,也会收到错误,<1>! Missing number treated as zero。当我完全删除标记tikzmarkin<2>{c}并使用tikzmarkin<1>{a}无覆盖时,就会发生这种情况tikzmarkin{a}时,就会发生这种情况。根据我对文档的理解,叠加规范只是可选的,而不是强制性的。我正在使用技术中心MiKTeX 2.9

感谢您的帮助。

答案1

这里的问题有两个方面。

首先,你似乎错过了这个customcolors选项。其次,如果你想要全局自定义,你必须在序言中定义它。否则,

\hfsetfillcolor{blue!10}
\hfsetbordercolor{blue}

\tikzmarkin仅定制之前给出命令,而不是后续命令。

尝试:

\documentclass{beamer}
\usepackage{lmodern,amsmath,amssymb}
\usepackage[customcolors,beamer]{hf-tikz}

\usetheme{Copenhagen}

\hfsetfillcolor{blue!10}
\hfsetbordercolor{blue}

\begin{document}

    \section{Mysection}
    \subsection{A subsection}
    \begin{frame}{The equations}
        \begin{block}{}
            \begin{align}
                \tikzmarkin<1>{a}a_i\tikzmarkend{a} + b_j = 10 & \forall i\in I, j\in J \\
                \tikzmarkin<2>{c}c_j + d_j + \tikzmarkin<1>{b}a_i\tikzmarkend{b} >= 30 & \forall i\in I, j\in J\tikzmarkend{c}
            \end{align}
        \end{block}
    \end{frame}

\end{document}

结果:

在此处输入图片描述

仅对于启用了该选项的 Beamer 类,覆盖规范才是强制性的beamer。事实上,宏声明如下:

\NewDocumentCommand{\tikzmarkin}{r<> o m D(){\belowrightoff} D(){\aboveleftoff}}{%

并且r类型 fromxparse允许使用自定义分隔符声明所需参数。

基本上,如果您不指定beamer选项并且不插入覆盖,您的代码就可以起作用。

相关内容