diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/spath3/tikzlibrarycalligraphy.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/spath3/tikzlibrarycalligraphy.code.tex | 749 |
1 files changed, 749 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/spath3/tikzlibrarycalligraphy.code.tex b/Master/texmf-dist/tex/latex/spath3/tikzlibrarycalligraphy.code.tex new file mode 100644 index 00000000000..9e4c80c6672 --- /dev/null +++ b/Master/texmf-dist/tex/latex/spath3/tikzlibrarycalligraphy.code.tex @@ -0,0 +1,749 @@ +%% +%% This is file `tikzlibrarycalligraphy.code.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% spath3.dtx (with options: `calligraphy') +%% ---------------------------------------------------------------- +%% spath3 --- Functions for manipulating PGF soft paths +%% E-mail: stacey@math.ntnu.no +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ---------------------------------------------------------------- +%% +\RequirePackage{spath3} +\ExplSyntaxOn + +\tl_new:N \l__cal_tmpa_tl +\tl_new:N \l__cal_tmpb_tl +\int_new:N \l__cal_tmpa_int +\int_new:N \l__cal_tmpb_int +\int_new:N \l__cal_path_component_int +\dim_new:N \l__cal_tmpa_dim +\dim_new:N \l__cal_tmpb_dim +\dim_new:N \l__cal_tmpc_dim +\dim_new:N \l__cal_tmpd_dim +\dim_new:N \l__cal_tmpe_dim +\dim_new:N \l__cal_tmpf_dim +\dim_new:N \l__cal_tmpg_dim +\dim_new:N \l__cal_tmph_dim +\bool_new:N \l__cal_taper_start_bool +\bool_new:N \l__cal_taper_end_bool +\bool_new:N \l__cal_taperable_bool +\dim_new:N \l__cal_taper_width_dim +\dim_new:N \l__cal_line_width_dim + +\bool_set_true:N \l__cal_taper_start_bool +\bool_set_true:N \l__cal_taper_end_bool +\tikzset{ + define~pen/.code={ + \tikzset{pen~name=#1} + \pgf@relevantforpicturesizefalse + \tikz@addmode{ + \pgfsyssoftpath@getcurrentpath\l__cal_tmpa_tl + \MakeSPathList{calligraphy pen \pgfkeysvalueof{/tikz/pen~name}}{\l__cal_tmpa_tl} + \SPathListPrepare{calligraphy pen \pgfkeysvalueof{/tikz/pen~name}} + \pgfusepath{discard}% + } + }, + define~pen/.default={default}, + use~pen/.code={ + \tikzset{pen~name=#1} + \int_gzero:N \l__cal_path_component_int + \cs_set_eq:NN \pgfpathmoveto \cal_moveto:n + \tikz@addmode{ + \pgfsyssoftpath@getcurrentpath\l__cal_tmpa_tl + \MakeSPathList{calligraphy path}{\l__cal_tmpa_tl} + \SPathListPrepare{calligraphy path} + \CalligraphyPathCreate{calligraphy path}{\pgfkeysvalueof{/tikz/pen~name}} + } + }, + use~pen/.default={default}, + pen~name/.initial={default}, + copperplate/.style={pen~name=copperplate}, + pen~colour/.initial={black}, + weight/.is~choice, + weight/heavy/.style={ + line~width=\pgfkeysvalueof{/tikz/heavy~line~width}, + taper~width=\pgfkeysvalueof{/tikz/light~line~width}, + }, + weight/light/.style={ + line~width=\pgfkeysvalueof{/tikz/light~line~width}, + taper~width=0pt, + }, + heavy/.style={ + weight=heavy + }, + light/.style={ + weight=light + }, + heavy~line~width/.initial=2pt, + light~line~width/.initial=1pt, + taper/.is~choice, + taper/.default=both, + taper/none/.style={ + taper~start=false, + taper~end=false, + }, + taper/both/.style={ + taper~start=true, + taper~end=true, + }, + taper/start/.style={ + taper~start=true, + taper~end=false, + }, + taper/end/.style={ + taper~start=false, + taper~end=true, + }, + taper~start/.code={ + \tl_if_eq:nnTF {#1} {true} + { + \bool_set_true:N \l__cal_taper_start_bool + } + { + \bool_set_false:N \l__cal_taper_start_bool + } + }, + taper~start/.default={true}, + taper~end/.code={ + \tl_if_eq:nnTF {#1} {true} + { + \bool_set_true:N \l__cal_taper_end_bool + } + { + \bool_set_false:N \l__cal_taper_end_bool + } + }, + taper~end/.default={true}, + taper~width/.code={\dim_set:Nn \l__cal_taper_width_dim {#1}}, + nib~style/.code~2~args={ + \tl_clear_new:c {l__cal_nib_style_#1} + \tl_set:cn {l__cal_nib_style_#1} {#2} + }, + stroke~style/.code~2~args={ + \tl_clear_new:c {l__cal_stroke_style_#1} + \tl_set:cn {l__cal_stroke_style_#1} {#2} + }, + this~stroke~style/.code={ + \tl_clear_new:c {l__cal_stroke_inline_style_ \int_use:N \l__cal_path_component_int} + \tl_set:cn {l__cal_stroke_inline_style_ \int_use:N \l__cal_path_component_int} {#1} + }, +} +\NewDocumentCommand \pen { O{} } +{ + \path[define~ pen,#1] +} + +\NewDocumentCommand \definepen { O{} } +{ + \tikz \path[define~ pen,#1] +} + +\NewDocumentCommand \calligraphy { O{} } +{ + \path[use~ pen,#1] +} +\NewDocumentCommand \CalligraphyPathCreate { m m } +{ + \int_zero:N \l__cal_tmpa_int + \tl_map_inline:cn {l__spath_list_#1} + { + \int_incr:N \l__cal_tmpa_int + \int_zero:N \l__cal_tmpb_int + \tl_map_inline:cn {l__spath_list_calligraphy pen #2} + { + \int_incr:N \l__cal_tmpb_int + \group_begin: + \cal_apply_style:c {l__cal_stroke_style_ \int_use:N \l__cal_tmpa_int} + \cal_apply_style:c {l__cal_stroke_inline_style_ \int_use:N \l__cal_tmpa_int} + \cal_apply_style:c {l__cal_nib_style_ \int_use:N \l__cal_tmpb_int} + + \spath_clone:nn {##1} {calligraphy temp path} + + \__spath_get:nnN {####1} {initial point} \l__spath_tmpa_tl + \spath_translate:nV {calligraphy temp path} \l__spath_tmpa_tl + + \__spath_get:nnN {####1} {length} \l__spath_tmpa_tl + + \int_compare:nTF {\l__spath_tmpa_tl = 1} + { + \cal_at_least_three:n {calligraphy temp path} + + \spath_protocol_path:n {calligraphy temp path} + + \__spath_get:nnN {calligraphy temp path} {path} \l__spath_tmpa_tl + + \tikz@options + \dim_set:Nn \l__cal_line_width_dim {\pgflinewidth} + \cal_maybe_taper:N \l__spath_tmpa_tl + } + { + + \spath_weld:nn {calligraphy temp path} {####1} + \spath_reverse:n {##1} + \spath_reverse:n {####1} + \spath_weld:nn {calligraphy temp path} {##1} + \spath_weld:nn {calligraphy temp path} {####1} + \spath_reverse:n {##1} + \spath_reverse:n {####1} + + \spath_set_current_path:n {calligraphy temp path} + + \tikz@options + \pgfsetfillcolor{\pgfkeysvalueof{/tikz/pen~colour}} + \pgfusepath{fill} + } + \group_end: + } + } +} +\cs_new_eq:NN \cal_orig_moveto:n \pgfpathmoveto +\cs_new_nopar:Npn \cal_moveto:n #1 +{ + \int_gincr:N \l__cal_path_component_int + \cal_orig_moveto:n {#1} +} +\cs_new_nopar:Npn \cal_apply_style:N #1 +{ + \tl_if_exist:NT #1 { + \exp_args:NV \tikzset #1 + } +} +\cs_generate_variant:Nn \cal_apply_style:N {c} +\cs_new_nopar:Npn \cal_at_least_three:n #1 +{ + \spath_get:nnN {#1} {real length} \l__cal_tmpa_tl + \tl_clear:N \l__cal_tmpb_tl + \int_compare:nTF {\l__cal_tmpa_tl = 1} + { + \spath_get:nnN {#1} {path} \l__cal_tmpa_tl + \spath_map_segment_inline:Nn \l__cal_tmpa_tl + { + \tl_case:Nnn ##1 { + \g__spath_lineto_tl { + \cal_split_line_in_three:NN \l__cal_tmpb_tl ##2 + } + \g__spath_curvetoa_tl { + \cal_split_curve_in_three:NN \l__cal_tmpb_tl ##2 + } + } + { + \tl_put_right:NV \l__cal_tmpb_tl ##2 + } + } + \spath_put:nnV {#1} {path} \l__cal_tmpb_tl + } + { + \int_compare:nT {\l__cal_tmpa_tl = 2} + { + \spath_get:nnN {#1} {path} \l__cal_tmpa_tl + \spath_map_segment_inline:Nn \l__cal_tmpa_tl + { + \tl_case:Nnn ##1 { + \g__spath_lineto_tl { + \cal_split_line_in_two:NN \l__cal_tmpb_tl ##2 + } + \g__spath_curvetoa_tl { + \cal_split_curve_in_two:NN \l__cal_tmpb_tl ##2 + } + } + { + \tl_put_right:NV \l__cal_tmpb_tl ##2 + } + } + \spath_put:nnV {#1} {path} \l__cal_tmpb_tl + } + } +} +\cs_new_nopar:Npn \cal_split_line_in_two:NN #1#2 +{ + \tl_set_eq:NN \l__cal_tmpc_tl #2 + + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpa_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpb_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpc_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + \dim_set:Nn \l__cal_tmpd_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \tl_put_right:NV #1 \g__spath_lineto_tl + + \tl_put_right:Nx #1 { + {\dim_eval:n {(\l__cal_tmpa_dim + \l__cal_tmpc_dim)/2}} + {\dim_eval:n {(\l__cal_tmpb_dim + \l__cal_tmpd_dim)/2}} + } + + \tl_put_right:NV #1 \g__spath_lineto_tl + \tl_put_right:Nx #1 { + {\dim_use:N \l__cal_tmpc_dim} + {\dim_use:N \l__cal_tmpd_dim} + } +} +\cs_new_nopar:Npn \cal_split_line_in_three:NN #1#2 +{ + \tl_set_eq:NN \l__cal_tmpc_tl #2 + + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpa_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpb_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \dim_set:Nn \l__cal_tmpc_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + \dim_set:Nn \l__cal_tmpd_dim {\tl_head:N \l__cal_tmpc_tl} + \tl_set:Nx \l__cal_tmpc_tl {\tl_tail:N \l__cal_tmpc_tl} + + \tl_put_right:NV #1 \g__spath_lineto_tl + + \tl_put_right:Nx #1 { + {\dim_eval:n {(2\l__cal_tmpa_dim + \l__cal_tmpc_dim)/3}} + {\dim_eval:n {(2\l__cal_tmpb_dim + \l__cal_tmpd_dim)/3}} + } + + \tl_put_right:NV #1 \g__spath_lineto_tl + + \tl_put_right:Nx #1 { + {\dim_eval:n {(\l__cal_tmpa_dim + 2\l__cal_tmpc_dim)/3}} + {\dim_eval:n {(\l__cal_tmpb_dim + 2\l__cal_tmpd_dim)/3}} + } + + \tl_put_right:NV #1 \g__spath_lineto_tl + \tl_put_right:Nx #1 { + {\dim_use:N \l__cal_tmpc_dim} + {\dim_use:N \l__cal_tmpd_dim} + } +} +\cs_new_nopar:Npn \cal_split_curve_in_two:NN #1#2 +{ + \spath_split_curve:nVNN {.5} #2 \l_tmpa_tl \l_tmpb_tl + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_put_right:NV #1 \l_tmpa_tl + \tl_put_right:NV #1 \l_tmpb_tl +} +\cs_new_nopar:Npn \cal_split_curve_in_three:NN #1#2 +{ + \spath_split_curve:nVNN {1/3} #2 \l_tmpa_tl \l_tmpb_tl + + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_put_right:NV #1 \l_tmpa_tl + + \spath_split_curve:nVNN {.5} \l_tmpb_tl \l_tmpa_tl \l_tmpb_tl + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpa_tl {\tl_tail:N \l_tmpa_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_set:Nx \l_tmpb_tl {\tl_tail:N \l_tmpb_tl} + \tl_put_right:NV #1 \l_tmpa_tl + \tl_put_right:NV #1 \l_tmpb_tl +} +\cs_new_nopar:Npn \cal_maybe_taper:N #1 +{ + \tl_set_eq:NN \l__cal_tmpa_tl #1 + + \bool_if:NT \l__cal_taper_start_bool + { + + \dim_set:Nn \l__cal_tmpa_dim {\tl_item:Nn \l__cal_tmpa_tl {2}} + \dim_set:Nn \l__cal_tmpb_dim {\tl_item:Nn \l__cal_tmpa_tl {3}} + \tl_set:Nx \l__cal_tmpb_tl {\tl_item:Nn \l__cal_tmpa_tl {4}} + + \tl_case:Nnn \l__cal_tmpb_tl + { + \g__spath_lineto_tl + { + + \bool_set_true:N \l__cal_taperable_bool + \dim_set:Nn \l__cal_tmpg_dim {\tl_item:Nn \l__cal_tmpa_tl {5}} + \dim_set:Nn \l__cal_tmph_dim {\tl_item:Nn \l__cal_tmpa_tl {6}} + \dim_set:Nn \l__cal_tmpc_dim {(2\l__cal_tmpa_dim + \l__cal_tmpg_dim)/3} + \dim_set:Nn \l__cal_tmpd_dim {(2\l__cal_tmpb_dim + \l__cal_tmph_dim)/3} + \dim_set:Nn \l__cal_tmpe_dim {(\l__cal_tmpa_dim + 2\l__cal_tmpg_dim)/3} + \dim_set:Nn \l__cal_tmpf_dim {(\l__cal_tmpb_dim + 2\l__cal_tmph_dim)/3} + \prg_replicate:nn {4} + { + \tl_set:Nx \l__cal_tmpa_tl {\tl_tail:N \l__cal_tmpa_tl} + } + \tl_put_left:NV \l__cal_tmpa_tl \g__spath_moveto_tl + } + \g__spath_curvetoa_tl + { + \bool_set_true:N \l__cal_taperable_bool + \dim_set:Nn \l__cal_tmpc_dim {\tl_item:Nn \l__cal_tmpa_tl {5}} + \dim_set:Nn \l__cal_tmpd_dim {\tl_item:Nn \l__cal_tmpa_tl {6}} + \dim_set:Nn \l__cal_tmpe_dim {\tl_item:Nn \l__cal_tmpa_tl {8}} + \dim_set:Nn \l__cal_tmpf_dim {\tl_item:Nn \l__cal_tmpa_tl {9}} + \dim_set:Nn \l__cal_tmpg_dim {\tl_item:Nn \l__cal_tmpa_tl {11}} + \dim_set:Nn \l__cal_tmph_dim {\tl_item:Nn \l__cal_tmpa_tl {12}} + \prg_replicate:nn {10} + { + \tl_set:Nx \l__cal_tmpa_tl {\tl_tail:N \l__cal_tmpa_tl} + } + \tl_put_left:NV \l__cal_tmpa_tl \g__spath_moveto_tl + } + } + { + \bool_set_false:N \l__cal_taperable_bool + } + + \bool_if:NT \l__cal_taperable_bool + { + \__cal_taper_aux: + } + + } + + \bool_if:NT \l__cal_taper_end_bool + { + + \dim_set:Nn \l__cal_tmpa_dim {\tl_item:Nn \l__cal_tmpa_tl {-2}} + \dim_set:Nn \l__cal_tmpb_dim {\tl_item:Nn \l__cal_tmpa_tl {-1}} + \tl_set:Nx \l__cal_tmpb_tl {\tl_item:Nn \l__cal_tmpa_tl {-3}} + + \tl_case:Nnn \l__cal_tmpb_tl + { + \g__spath_lineto_tl + { + + \bool_set_true:N \l__cal_taperable_bool + \dim_set:Nn \l__cal_tmpg_dim {\tl_item:Nn \l__cal_tmpa_tl {-5}} + \dim_set:Nn \l__cal_tmph_dim {\tl_item:Nn \l__cal_tmpa_tl {-4}} + \dim_set:Nn \l__cal_tmpc_dim {(2\l__cal_tmpa_dim + \l__cal_tmpg_dim)/3} + \dim_set:Nn \l__cal_tmpd_dim {(2\l__cal_tmpb_dim + \l__cal_tmph_dim)/3} + \dim_set:Nn \l__cal_tmpe_dim {(\l__cal_tmpa_dim + 2\l__cal_tmpg_dim)/3} + \dim_set:Nn \l__cal_tmpf_dim {(\l__cal_tmpb_dim + 2\l__cal_tmph_dim)/3} + \tl_reverse:N \l__cal_tmpa_tl + \prg_replicate:nn {3} + { + \tl_set:Nx \l__cal_tmpa_tl {\tl_tail:N \l__cal_tmpa_tl} + } + \tl_reverse:N \l__cal_tmpa_tl + } + \g__spath_curveto_tl + { + \bool_set_true:N \l__cal_taperable_bool + \dim_set:Nn \l__cal_tmpc_dim {\tl_item:Nn \l__cal_tmpa_tl {-5}} + \dim_set:Nn \l__cal_tmpd_dim {\tl_item:Nn \l__cal_tmpa_tl {-4}} + \dim_set:Nn \l__cal_tmpe_dim {\tl_item:Nn \l__cal_tmpa_tl {-8}} + \dim_set:Nn \l__cal_tmpf_dim {\tl_item:Nn \l__cal_tmpa_tl {-7}} + \dim_set:Nn \l__cal_tmpg_dim {\tl_item:Nn \l__cal_tmpa_tl {-11}} + \dim_set:Nn \l__cal_tmph_dim {\tl_item:Nn \l__cal_tmpa_tl {-10}} + \tl_reverse:N \l__cal_tmpa_tl + \prg_replicate:nn {9} + { + \tl_set:Nx \l__cal_tmpa_tl {\tl_tail:N \l__cal_tmpa_tl} + } + \tl_reverse:N \l__cal_tmpa_tl + } + } + { + \bool_set_false:N \l__cal_taperable_bool + } + + \bool_if:NT \l__cal_taperable_bool + { + \__cal_taper_aux: + } + + } + + \pgfsyssoftpath@setcurrentpath\l__cal_tmpa_tl + \pgfsetstrokecolor{\pgfkeysvalueof{/tikz/pen~colour}} + \pgfusepath{stroke} + +} +\cs_new_nopar:Npn \__cal_taper_aux: +{ + \tl_clear:N \l__cal_tmpb_tl + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_moveto_tl + + \fp_set:Nn \l__cal_tmpa_fp + { + \l__cal_tmpd_dim - \l__cal_tmpb_dim + } + \fp_set:Nn \l__cal_tmpb_fp + { + \l__cal_tmpa_dim - \l__cal_tmpc_dim + } + \fp_set:Nn \l__cal_tmpe_fp + { + (\l__cal_tmpa_fp^2 + \l__cal_tmpb_fp^2)^.5 + } + + \fp_set:Nn \l__cal_tmpa_fp {.5*\l__cal_taper_width_dim * \l__cal_tmpa_fp / \l__cal_tmpe_fp} + \fp_set:Nn \l__cal_tmpb_fp {.5*\l__cal_taper_width_dim * \l__cal_tmpb_fp / \l__cal_tmpe_fp} + + \fp_set:Nn \l__cal_tmpc_fp + { + \l__cal_tmph_dim - \l__cal_tmpf_dim + } + \fp_set:Nn \l__cal_tmpd_fp + { + \l__cal_tmpe_dim - \l__cal_tmpg_dim + } + \fp_set:Nn \l__cal_tmpe_fp + { + (\l__cal_tmpc_fp^2 + \l__cal_tmpd_fp^2)^.5 + } + + \fp_set:Nn \l__cal_tmpc_fp {.5*\l__cal_line_width_dim * \l__cal_tmpc_fp / \l__cal_tmpe_fp} + \fp_set:Nn \l__cal_tmpd_fp {.5*\l__cal_line_width_dim * \l__cal_tmpd_fp / \l__cal_tmpe_fp} + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpa_dim}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpb_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetoa_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpc_dim}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpd_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetob_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpe_dim}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmpf_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curveto_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpg_dim}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmph_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetoa_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpg_dim - \fp_to_dim:n{ 1.32 * \l__cal_tmpd_fp}}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmph_dim + \fp_to_dim:n {1.32* \l__cal_tmpc_fp}}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetob_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpg_dim - \fp_to_dim:n {1.32 * \l__cal_tmpd_fp}}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmph_dim + \fp_to_dim:n {1.32 * \l__cal_tmpc_fp}}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curveto_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpg_dim}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmph_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetoa_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpc_fp + \l__cal_tmpe_dim}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpd_fp + \l__cal_tmpf_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetob_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpc_dim}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpd_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curveto_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpa_dim}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpb_dim}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetoa_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpa_dim + \fp_to_dim:n{ 1.32 * \l__cal_tmpb_fp}}} + {\dim_eval:n { -\fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpb_dim - \fp_to_dim:n {1.32* \l__cal_tmpa_fp}}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curvetob_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpa_dim + \fp_to_dim:n {1.32 * \l__cal_tmpb_fp}}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpb_dim - \fp_to_dim:n {1.32 * \l__cal_tmpa_fp}}} + } + + \tl_put_right:NV \l__cal_tmpb_tl \g__spath_curveto_tl + + \tl_put_right:Nx \l__cal_tmpb_tl + { + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpa_fp + \l__cal_tmpa_dim}} + {\dim_eval:n { \fp_to_dim:N \l__cal_tmpb_fp + \l__cal_tmpb_dim}} + } + + \pgfsyssoftpath@setcurrentpath\l__cal_tmpb_tl + \pgfsetfillcolor{\pgfkeysvalueof{/tikz/pen~colour}} + \pgfusepath{fill} +} +\tl_set:Nn \l__cal_tmpa_tl {\pgfsyssoftpath@movetotoken{0pt}{0pt}} +\MakeSPathList{calligraphy pen copperplate}{\l__cal_tmpa_tl} +\SPathListPrepare{calligraphy pen copperplate} +\ExplSyntaxOff +\expandafter\ifx\csname pgfdeclaredecoration\endcsname\relax +\else +\pgfdeclaredecoration{calligraphic brace}{brace} +{ + \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final] + { + \pgfsyssoftpath@setcurrentpath{\pgfutil@empty} + \pgfpathmoveto{\pgfpointorigin} + \pgfpathcurveto + {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}} + {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + { + \pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance} + \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}} + {\pgfqpoint{0\pgfdecorationsegmentamplitude}{1\pgfdecorationsegmentamplitude}} + \pgfpathmoveto{\pgfqpoint{0\pgfdecorationsegmentamplitude}{1\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}} + {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + } + { + \pgftransformxshift{+\pgfdecoratedremainingdistance} + \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}} + {\pgfqpoint{0pt}{0pt}} + } + \tikzset{ + taper width=.5\pgflinewidth, + taper + }% + \pgfsyssoftpath@getcurrentpath\cal@tmp@path + \MakeSPathList{calligraphy path}{\cal@tmp@path}% + \SPathListPrepare{calligraphy path}% + \CalligraphyPathCreate{calligraphy path}{copperplate}% + } + \state{final}{} +} +\pgfdeclaredecoration{calligraphic straight parenthesis}{brace} +{ + \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final] + { + \pgfsyssoftpath@setcurrentpath{\pgfutil@empty} + \pgfpathmoveto{\pgfpointorigin} + \pgfpathcurveto + {\pgfqpoint{.76604\pgfdecorationsegmentamplitude}{.64279\pgfdecorationsegmentamplitude}} + {\pgfqpoint{2.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}} + {\pgfqpoint{3.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}} + { + \pgftransformxshift{+\pgfdecoratedremainingdistance} + \pgfpathlineto{\pgfqpoint{-3.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{-2.3333\pgfdecorationsegmentamplitude}{\pgfdecorationsegmentamplitude}} + {\pgfqpoint{-.76604\pgfdecorationsegmentamplitude}{.64279\pgfdecorationsegmentamplitude}} + {\pgfqpoint{0pt}{0pt}} + } + \tikzset{ + taper width=.5\pgflinewidth, + taper + }% + \pgfsyssoftpath@getcurrentpath\cal@tmp@path + \MakeSPathList{calligraphy path}{\cal@tmp@path}% + \SPathListPrepare{calligraphy path}% + \CalligraphyPathCreate{calligraphy path}{copperplate}% + } + \state{final}{}% +} +\pgfdeclaredecoration{calligraphic curved parenthesis}{brace} +{ + \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final] + { + \pgfsyssoftpath@setcurrentpath{\pgfutil@empty} + \pgfpathmoveto{\pgfpointorigin} + \pgf@xa=\pgfdecoratedremainingdistance\relax + \advance\pgf@xa by -1.5890\pgfdecorationsegmentamplitude\relax + \edef\cgrphy@xa{\the\pgf@xa} + \pgfpathcurveto + {\pgfqpoint{1.5890\pgfdecorationsegmentamplitude}{1.3333\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\cgrphy@xa}{1.3333\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\pgfdecoratedremainingdistance}{0pt}} + \tikzset{ + taper width=.5\pgflinewidth, + taper + }% + \pgfsyssoftpath@getcurrentpath\cal@tmp@path + \MakeSPathList{calligraphy path}{\cal@tmp@path}% + \SPathListPrepare{calligraphy path}% + \CalligraphyPathCreate{calligraphy path}{copperplate}% + } + \state{final}{}% +} +\fi +%% +%% Copyright (C) 2011 by Andrew Stacey <stacey@math.ntnu.no> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Andrew Stacey. +%% +%% This work consists of the files spath3.dtx +%% calligraphy_doc.tex +%% knot_doc.tex +%% and the derived files spath3.ins, +%% spath3.pdf, +%% spath3.sty, +%% tikzlibrarycalligraphy.code.tex +%% tikzlibraryknots.code.tex +%% calligraphy_doc.pdf +%% knots_doc.pdf +%% README.txt +%% +%% +%% End of file `tikzlibrarycalligraphy.code.tex'. |