有时我需要像 这样的 Latex 宏\huge
,\color{red}
而不是 提供的节点可选参数,tikz
才能通过 为图片的“节点文本”赋予样式tikz
。这是可以的,如下面的 MWE 所示。
/.expanded
然而,当我构造必须用于传递参数的宏 \test 时,我发现如果使用宏(例如 \huge)则无法编译(请参阅下面的代码)。
b/.code 中的 Args 在我的代码中必须是一个值(而不是宏)。那么在这种情况下,如何实现我在 tikz 中使用常见 Latex 宏装饰节点文本的目标?
梅威瑟:
\documentclass{article}
\usepackage{tikz,picture,eso-pic,xcolor}
\begin{document}
\pgfkeys{%
a/.store in=\aaa,a/.default={},
b/.code={%
\AddToShipoutPictureBG{
\AtTextUpperLeft{
\tikz\draw(0,0) --node{#1}(5cm,0);}}},
c/.code={%
\AddToShipoutPictureBG{
\AtTextCenter{
\tikz\draw(0,0) --node{#1}(5cm,0);}}},
}
\newcommand\test[2][]{%
\pgfkeys{a,#1,#2/.expanded={\aaa}}
}
%
\test[a=aaa]{b}
\test[a=777]{c}
\test[a={\huge\color{red} ttt}]{c}% Wrong!! a={\noexpand\huge ttt} can pass the compile, but it's boring to write \noexpand each time. #2/.expanded={\noexpand\aaa} causes overwrite of the node text. So is there a better way to deal with this problem?
first page\clearpage second page
\end{document}