我想\newcommand
在样式选项中插入一个tikzpictures
以提高效率。但是,它会产生错误,尽管字符串本身是正确的,并且直接插入样式选项时可以正常工作。要怎么做才能让它工作?非常感谢!
梅威瑟:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\newcommand{\ors}{overlay,remember picture,shift={(current page.west)}}
\ors
\begin{tikzpicture}[\ors]
\node[rectangle,fill=red,anchor=north west] at (4,0){TEST};
\end{tikzpicture}
\end{frame}
\end{document}
答案1
您必须\ors
在将其传递给 TikZ 之前进行扩展,例如使用\expanded{\noexpand\begin{tikzpicture}[\ors]}
。但使用 TikZ 的正确方法是使用样式:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\tikzset{ors/.style = {overlay,remember picture,shift={(current page.west)}}}
\begin{tikzpicture}[ors]
\node[rectangle,fill=red,anchor=north west] at (4,0){TEST};
\end{tikzpicture}
\end{frame}
\end{document}
答案2
更清洁的方法是使用LaTeXer 的答案。但是,有些情况下你确实需要使用宏。那么你可以使用
style/.expanded=\macro
完整代码:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\newcommand{\ors}{overlay,remember picture,shift={(current page.west)}}
\ors
\begin{tikzpicture}[style/.expanded=\ors]
\node[rectangle,fill=red,anchor=north west] at (4,0){TEST};
\end{tikzpicture}
\end{frame}
\end{document}