考虑以下 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
选项并且不插入覆盖,您的代码就可以起作用。