tikz 图片选项中的 \newcommand

tikz 图片选项中的 \newcommand

我想\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}

相关内容