目前我可以用\mylines
下面显示的宏来生成这种图片。
但我希望获得第二个箭头阴影为第一个箭头一定百分比的结果:
以下是产生两个相等蓝色箭头的当前代码:
\documentclass[tikz, border=0.3 cm]{standalone}
\newcommand{\mylines}[1]{
%First line full colour
\draw #1 (0,0) -- (2,1);
%This second line should have a shaded percentage of the parameter
\draw #1 (1,0) -- (3,1);
}
\begin{document}
\begin{tikzpicture}
\path [fill=yellow!20,rounded corners] (-0.5,-0.5) rectangle (3.5,1.5);
\mylines{[color=blue, thick, ->]}
\end{tikzpicture}
\end{document}
最终代码 — 对于不同阴影箭头 — 应如下所示:
\documentclass[tikz, border=0.3 cm]{standalone}
\newcommand{\mylines}[1]{
%First line full colour
\draw #1 (0,0) -- (2,1);
%This second line should have a shaded percentage of the parameter
%SOME COOL CODE HERE TO DRAW THE SECOND LINE SHADED
}
\begin{document}
\begin{tikzpicture}
\path [fill=yellow!20,rounded corners] (-0.5,-0.5) rectangle (3.5,1.5);
\mylines{[color=blue, thick, ->]}
\end{tikzpicture}
\end{document}
还有一个细节:请注意第二个箭头不是透明的,否则蓝色会与黄色混合并产生绿色。
谢谢!欢迎提出任何建议。
答案1
深入研究代码tikz.code.tex
,我发现 TikZ 实现的color
关键在内部使用\pgfsetcolor{.}
“ ” 是哪种颜色.
?可能是“当前颜色”吗?:-)))
咱们试试吧:
\documentclass[tikz, border=0.3 cm]{standalone}
\newcommand{\mylines}[1]{
%First line full colour
\draw#1 (0,0) -- (2,1);
%This second line should have a shaded percentage of the parameter
\draw #1 [color=.!20] (1,0) -- (3,1);
}
\begin{document}
\begin{tikzpicture}
\path [fill=yellow!50,rounded corners] (-0.5,-0.5) rectangle (3.5,1.5);
\mylines{[color=blue, thick, ->]}
\end{tikzpicture}
\end{document}
耶!
答案2
尝试这个:
\documentclass[tikz, border=0.3 cm]{standalone}
\def\getpassedcolor#1,#2{#1!20,#2}
\newcommand{\mylines}[1]{
%First line full colour
\draw #1 (0,0) -- (2,1);
%This second line should have a shaded percentage of the parameter
\draw \getpassedcolor#1 (1,0) -- (3,1);
}
\begin{document}
\begin{tikzpicture}
\path [fill=yellow!20,rounded corners] (-0.5,-0.5) rectangle (3.5,1.5);
\mylines{[color=blue, thick, ->]}
\end{tikzpicture}
\end{document}
该\getpassedcolor
宏接受以逗号分隔的参数,然后将其添加!20
到第一个参数并返回重新组装的选项。它不是很强大(即color=blue
必须是使其起作用的第一个选项),但可能就足够了。