PIC маленький рисунок
Categories:
Синтаксис PIC
\path … pic ⟨foreach statements⟩ [⟨options⟩] (⟨prefix⟩) at(⟨coordinate⟩) :⟨animation attribute⟩={⟨options⟩} {⟨pic type⟩} …;
- PIC можно объявить в
\tikzset
в преамбуле - можно написать прямо в path в опции code
\tikzset{
seagull/.pic={
% Code for a "seagull". Do you see it?...
\draw (-3mm,0) to [bend left] (0,0) to [bend left] (3mm,0);
}
}
Вообще PIC это упрощенная запись вставки кода в path.
во втором случае напишем через pic type =
:
\tikz {
\path (0,0) pic [pic type = seagull]
(1,0) pic {seagull};
}
- Или в третьем случае через
pics/code={}
:
\tikz \pic [pics/code={\draw (-3mm,0) to[bend left] (0,0)
to[bend left] (3mm,0);}]
{}; % no pic type specified
но в последнем варианте, pic не будет, а будет чистый code, который и делает сам pic
pic action
позволяет в опцияхк команде pic передать дополнительные параметры.
\tikzset{
my pic/.pic = {
\path [pic actions] (0,0) circle[radius=3mm];
\draw (-3mm,-3mm) rectangle (3mm,3mm);
}
}
\tikz \pic {my pic}; \space
\tikz \pic [red] {my pic}; \space
\tikz \pic [draw] {my pic}; \space
\tikz \pic [draw=red] {my pic}; \space
\tikz \pic [draw, shading=ball] {my pic}; \space
\tikz \pic [fill=red!50] {my pic};
behind path и in front of path
также как и node позволяет рисовать за основным рисунком или перед ним
foreground code=⟨code⟩ и background code=⟨code⟩
можно указать индекс слоя
foreach
принимает параметры от foreach
\tikz \pic foreach \x in {1,2,3} at (\x,0) {seagull};
every pic
настраиваем стили для pic
\begin{tikzpicture}[every pic/.style={scale=2,transform shape}]
\pic foreach \x in {1,2,3} at (\x,0) {seagull};
\end{tikzpicture}
prefix name
я не уверен,что буду этим пользоваться, но можно добавлять префиксы к именам точек pic
pic text
будет работать как label в nodes
или его аналог в библиотеке quotes
pic [draw, "$\alpha$"] {angle};
every pic quotes
— для настройки кавычек
глобальный стиль для pic
\tikzset{
pics/my circle/.style = {
background code = { \fill circle [radius=#1]; }
}
}
\tikz [fill=blue!30]
\draw (0,0) pic {my circle=2mm} -- (1,1) pic {my circle=5mm};