Параметрический стиль tikzset с аргументом

Параметрический стиль tikzset с аргументом

Я работаю над тем, как адаптировать @percusse под себяИмитация нарисованных от руки линийсделать его параметрическим.

Моя идея заключается в том, чтобы было что-то вроде:

  \draw[penciline={jag ratio=2},decorate,thick] (-0.4cm,-0.8cm) rectangle (1.2,-2);

или даже лучше (потому что pencilineэто в любом случае украшение):

\draw[penciline={jag ratio=2},thick] (-0.4cm,-0.8cm) rectangle (1.2,-2);

Как мне передать аргументы в стиле PGF в penciline? Похоже, jag rationотсюда это не обрабатывается.

Мой MWE:

\documentclass[border=1cm]{standalone}

\RequirePackage{tikz}
\usetikzlibrary{calc,patterns,decorations,plotmarks}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}


\pgfdeclaredecoration{penciline}{initial}{
  \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance,
    auto corner on length=1mm,
  ]{
    \pgfpathcurveto%
        {% 1st control point
          \pgfpoint
              {\pgfdecoratedinputsegmentremainingdistance*rnd*1pt}
              {\pgfkeysvalueof{/tikz/penciline/jag ratio}*rand*\pgfdecorationsegmentamplitude}
        }
        {%% 2nd control point
          \pgfpoint
          %% Make sure random number is always between origin and target points
              {(.5pt+0.25*rand)*\pgfdecoratedinputsegmentremainingdistance}
              {\pgfkeysvalueof{/tikz/penciline/jag ratio}*rand*\pgfdecorationsegmentamplitude}
        }
        {% 2nd point (1st one is implicit)
          \pgfpointadd
              {\pgfpointdecoratedinputsegmentlast}
              {\pgfpoint{rand*1pt}{rand*1pt}}
        }
  }
  \state{final}{}
}

\tikzset{
  penciline/.code={\pgfqkeys{/tikz/penciline}{#1}},
  penciline={
    jag ratio/.initial=5,
  },
  penciline/.style = {
    decorate,
    decoration={penciline},
  },
}


\def\Grid{
  \draw[penciline,decorate,style=help lines] (-2,-2) grid[step=1cm] (4,4);
}

\begin{tikzpicture}
  \Grid{}
  \draw[penciline,decorate,thick] (-0.4cm,-0.8cm) rectangle (1.2,-2);


\end{tikzpicture}


\end{document}

решение1

Наконец-то я получил это отКлюч, который принимает список других ключей в качестве аргумента и устанавливает их

\tikzset{
  penciline/.code={\pgfqkeys{/tikz/penciline}{#1}},
  penciline={
    jag ratio/.initial=5,
  },
  penciline/.style = {
    decorate,
    decoration={penciline},
    penciline/.cd,
    #1,
    /tikz/.cd
  },
  decorate
}


\def\Grid{
  \draw[penciline={jag ratio=1},style=help lines] (-2,-2) grid[step=1cm] (4,4);
}

Связанный контент