1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
% !TeX root = tcolorbox.tex
% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
\clearpage
\section{\tikzname\ Auxiliary Macros}\label{sec:tikzimagefilling}%
\tcbset{external/prefix=external/filling_}%
The \mylib{skins} library adds some auxiliary options to the vast option set of
\tikzname\ \cite{tantau:tikz_and_pgf}. These options can be used in any |tikzpicture|.
For the following options, the \mylib{skins} library has to be loaded
by a package option or inside the preamble by:
\begin{dispListing}
\tcbuselibrary{skins}
\end{dispListing}
See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
\begin{marker}
Up to version 5.1.1 (2022/06/24) of |tcolorbox|, \tikzname\ image and picture fill extensions
were documented here. These extensions are now separate \tikzname\ libraries
and part of the |tikzfill| package where they are documented now.
\end{marker}
\subsection{Straightening of the Arcs}
\begin{marker}
This patch is considered as an experimental feature.
It changes some of the original \tikzname\ code. This change may break
with future updates of \tikzname.
\end{marker}
\begin{docCommand}[doc new=2014-05-05]{tcbpatcharcangular}{}
The \tikzname\ package provides a nice |rounded corners| option to replace
all corners by little arcs. |\tcbpatcharcangular| is a patch which
straightens the arcs. To say it more prosaic, the little arcs are replaced
by little straight lines.
\begin{dispExample*}{sbs,lefthand ratio=0.66,right=2mm,sidebyside gap=5mm,center lower}
\begin{tikzpicture}
\draw[thick,rounded corners=8pt]
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0)
-- (0,2) -- (2,2) -- (0,0) -- (2,0);
\tcbpatcharcangular
\draw[thick,rounded corners=8pt,xshift=2.5cm]
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0)
-- (0,2) -- (2,2) -- (0,0) -- (2,0);
\end{tikzpicture}
\end{dispExample*}
\end{docCommand}
\begin{docCommand}[doc new=2014-05-05]{tcbpatcharcround}{}
This macro reverts \refCom{tcbpatcharcangular}, i.e., the patch from
\refCom{tcbpatcharcangular} is replaced by the original code.
\end{docCommand}
\clearpage
\subsection{Extracting Node Dimensions}
The following auxiliary macros are defined by the \mylib{skins} library.
They allow to determine the width and height of an arbitrary \tikzname\ node.
To be more specific, they determine the east-to-west and the north-to-south dimensions
which may be not the maximal dimensions for a non-rectangular node.
Note that the following dimensions are measured exactly including the line width
of the border line. If a new rectangle or node with the same dimensions
and a border is to be drawn, this border width has to be substracted.
\begin{docCommand}[doc new=2014-09-19]{tcbsettowidthofnode}{\marg{register}\marg{node}}
Sets the east-to-west dimension of the given \meta{node}
to the \TeX\ \meta{register}.
\end{docCommand}
\begin{docCommand}[doc new=2014-09-19]{tcbsetmacrotowidthofnode}{\marg{macro}\marg{node}}
Defines \meta{macro} as the east-to-west dimension of the given \meta{node}.
\end{docCommand}
\begin{docCommand}[doc new=2014-09-19]{tcbsettoheightofnode}{\marg{register}\marg{node}}
Sets the north-to-south dimension of the given \meta{node}
to the \TeX\ \meta{register}.
\end{docCommand}
\begin{docCommand}[doc new=2014-09-19]{tcbsetmacrotoheightofnode}{\marg{macro}\marg{node}}
Defines \meta{macro} as the north-to-south dimension of the given \meta{node}.
\end{docCommand}
\begin{dispExample}
\begin{tikzpicture}
\node[align=center,draw=red,fill=yellow] (A) {This is my\\example node};
\tcbsetmacrotowidthofnode\mywidth{A}
\tcbsetmacrotoheightofnode\myheight{A}
\path[fill=blue!25!white] % rectangle widthout border
([xshift=2mm]A.south east)
rectangle node{Copy} +(\mywidth,\myheight);
\node[draw=blue,fill=blue!25!white, % standard border width 0.4pt
minimum width=\mywidth-0.4pt, % minus width of border
minimum height=\myheight-0.4pt % minus height of border
]
at ([xshift=5cm]A) {Copy 2};
\end{tikzpicture}
\end{dispExample}
\subsection{Hyper Nodes}
The following auxiliary macro is defined by the \mylib{skins} library.
\enlargethispage*{1cm}
\begin{docCommand}[doc new=2016-02-03]{tcbhypernode}{\marg{macro}\marg{node}}
% Sets the east-to-west dimension of the given \meta{node}
% to the \TeX\ \meta{register}.
Applies a hyperlink creating \meta{macro} from the package |hyperref| \cite{rahtz:hyperref}
to an existing |tikz| \meta{node}. \refCom{tcbhypernode} can only
be used inside a |tikzpicture| environment.
The last argument of the \meta{macro} is to be omitted and should stand
for an object (text) which is to be made a hyperlink.
For example, use |\hyperref[name]| instead of |\hyperref[name]{text}|.
\begin{dispExample}
% \usepackage{hyperref}
\begin{tikzpicture}
\node[align=center,draw=red,fill=red!5] (mybutton)
{Click me to jump to Section~\ref*{sec:tikzimagefilling}};
\tcbhypernode{\hyperref[sec:tikzimagefilling]}{mybutton}
\end{tikzpicture}
\end{dispExample}
\end{docCommand}
|