阴影线,其格式由宏的参数给出

阴影线,其格式由宏的参数给出

目前我可以用\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 必须是使其起作用的第一个选项),但可能就足够了。

在此处输入图片描述

相关内容