From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../latex/contrib/tcolorbox/tcbvignette.code.tex | 320 +++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 macros/latex/contrib/tcolorbox/tcbvignette.code.tex (limited to 'macros/latex/contrib/tcolorbox/tcbvignette.code.tex') diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex new file mode 100644 index 0000000000..0f494da1dd --- /dev/null +++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex @@ -0,0 +1,320 @@ +%% The LaTeX package tcolorbox - version 4.20 (2019/03/02) +%% tcbvignette.code.tex: Code for ornamental frames +%% +%% ------------------------------------------------------------------------------------------- +%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm +%% ------------------------------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of all files listed in README +%% +\tcb@set@library@version{4.20} + +\tcbuselibrary{skins} + +\usetikzlibrary{fadings} + +\pgfdeclarehorizontalshading{tcb@fade@east}{100bp} +{color(0bp)=(pgftransparent!50); color(25bp)=(pgftransparent!50); + color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)} + +\pgfdeclarehorizontalshading{tcb@fade@west}{100bp} +{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100); + color(75bp)=(pgftransparent!50); color(100bp)=(pgftransparent!50)} + +\pgfdeclareverticalshading{tcb@fade@north}{100bp} +{color(0bp)=(pgftransparent!50); color(25bp)=(pgftransparent!50); + color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)} + +\pgfdeclareverticalshading{tcb@fade@south}{100bp} +{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100); + color(75bp)=(pgftransparent!50); color(100bp)=(pgftransparent!50)} + +\pgfdeclarefading{semi east}{\pgfuseshading{tcb@fade@east}} +\pgfdeclarefading{semi west}{\pgfuseshading{tcb@fade@west}} +\pgfdeclarefading{semi north}{\pgfuseshading{tcb@fade@north}} +\pgfdeclarefading{semi south}{\pgfuseshading{tcb@fade@south}} + +\def\tcb@vig@draw@north#1{\path[#1]\pgfextra{% + \pgfpathmoveto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yB}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yB}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@yb}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@yb}}% + \pgfpathclose};} + +\def\tcb@vig@draw@east#1{\path[#1]\pgfextra{% + \pgfpathmoveto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yB}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yA}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@ya}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@yb}}% + \pgfpathclose};} + +\def\tcb@vig@draw@south#1{\path[#1]\pgfextra{% + \pgfpathmoveto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yA}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yA}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@ya}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@ya}}% + \pgfpathclose};} + +\def\tcb@vig@draw@west#1{\path[#1]\pgfextra{% + \pgfpathmoveto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yA}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yB}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@yb}}% + \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@ya}}% + \pgfpathclose};} + +\def\tcb@vig@draw@direct{% + \ifdim\tcb@vig@yB>\tcb@vig@yb\relax% + \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@north{fill,draw=none,\expandonce\tcb@vig@style@north}}\x% + \fi% + \ifdim\tcb@vig@xB>\tcb@vig@xb\relax% + \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@east{fill,draw=none,\expandonce\tcb@vig@style@east}}\x% + \fi% + \ifdim\tcb@vig@yA<\tcb@vig@ya\relax% + \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@south{fill,draw=none,\expandonce\tcb@vig@style@south}}\x% + \fi% + \ifdim\tcb@vig@xA<\tcb@vig@xa\relax% + \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@west{fill,draw=none,\expandonce\tcb@vig@style@west}}\x% + \fi% +} + +\def\tcb@vig@draw@clipped{% + \ifdim\tcb@vig@yB>\tcb@vig@yb\relax% + \begin{scope} + \tcb@vig@draw@north{clip}% + \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@north]}% + \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA-1mm}{\tcb@vig@yb}}% + {\pgfpoint{\tcb@vig@xB+1mm}{\tcb@vig@yB}}}; + \end{scope} + \fi% + \ifdim\tcb@vig@xB>\tcb@vig@xb\relax% + \begin{scope} + \tcb@vig@draw@east{clip}% + \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@east]}% + \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xb}{\tcb@vig@yA-1mm}}% + {\pgfpoint{\tcb@vig@xB}{\tcb@vig@yB+1mm}}}; + \end{scope} + \fi% + \ifdim\tcb@vig@yA<\tcb@vig@ya\relax% + \begin{scope} + \tcb@vig@draw@south{clip}% + \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@south]}% + \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA-1mm}{\tcb@vig@yA}}% + {\pgfpoint{\tcb@vig@xB+1mm}{\tcb@vig@ya}}}; + \end{scope} + \fi% + \ifdim\tcb@vig@xA<\tcb@vig@xa\relax% + \begin{scope} + \tcb@vig@draw@west{clip}% + \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@west]}% + \x\pgfextra{% + \pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA}{\tcb@vig@yA-1mm}}% + {\pgfpoint{\tcb@vig@xa}{\tcb@vig@yB+1mm}}}; + \end{scope} + \fi% +} + +\newcommand{\tcbvignette}[1]{% + \ifdefined\pgfpictureid% + \begingroup% + \tcbset{vig/.cd,#1}% + \tcbdimto\tcb@vig@xA{\tcb@vig@xmin}% + \tcbdimto\tcb@vig@xB{\tcb@vig@xmax}% + \tcbdimto\tcb@vig@yA{\tcb@vig@ymin}% + \tcbdimto\tcb@vig@yB{\tcb@vig@ymax}% + \tcbdimto\tcb@vig@xa{\tcb@vig@xA+\tcb@vig@size@west}% + \tcbdimto\tcb@vig@xb{\tcb@vig@xB-(\tcb@vig@size@east)}% + \tcbdimto\tcb@vig@ya{\tcb@vig@yA+\tcb@vig@size@south}% + \tcbdimto\tcb@vig@yb{\tcb@vig@yB-(\tcb@vig@size@north)}% + \begin{scope}[tcb@vig@scope]% + \tcb@vig@draw% + \end{scope} + \endgroup% + \else% + \tcb@warning{'tcbvignette' was found outside a 'tikzpicture' environment and is ignored}% + \fi% +} + +\tcbset{% + vig/.cd, + xmin/.store in=\tcb@vig@xmin, + xmax/.store in=\tcb@vig@xmax, + ymin/.store in=\tcb@vig@ymin, + ymax/.store in=\tcb@vig@ymax, + lower left corner/.code={\tcb@gettikzxy{(#1)}{\tcb@vig@xmin}{\tcb@vig@ymin}}, + upper right corner/.code={\tcb@gettikzxy{(#1)}{\tcb@vig@xmax}{\tcb@vig@ymax}}, + % + inside node/.style={lower left corner={#1.south west},upper right corner={#1.north east}}, + outside node/.style={lower left corner={[xshift=-\tcb@vig@size@west,yshift=-\tcb@vig@size@south]#1.south west}, + upper right corner={[xshift=\tcb@vig@size@east,yshift=\tcb@vig@size@north]#1.north east}}, + % + on node/.style={lower left corner={#1.south west},upper right corner={#1.north east}}, + over node offset/.store in=\tcb@vig@onoffset,% + over node/.style={lower left corner={[xshift=-\tcb@vig@onoffset,yshift=-\tcb@vig@onoffset]#1.south west}, + upper right corner={[xshift=\tcb@vig@onoffset,yshift=\tcb@vig@onoffset]#1.north east}}, + north size/.store in=\tcb@vig@size@north, + south size/.store in=\tcb@vig@size@south, + east size/.store in=\tcb@vig@size@east, + west size/.store in=\tcb@vig@size@west, + vertical size/.style={north size=#1,south size=#1}, + horizontal size/.style={east size=#1,west size=#1}, + size/.style={north size=#1,south size=#1,east size=#1,west size=#1}, + north style/.store in=\tcb@vig@style@north, + south style/.store in=\tcb@vig@style@south, + east style/.store in=\tcb@vig@style@east, + west style/.store in=\tcb@vig@style@west, + scope/.code={\tikzset{tcb@vig@scope/.style={#1}}}, + draw method/.is choice, + draw method/direct/.code={\let\tcb@vig@draw\tcb@vig@draw@direct},% + draw method/clipped/.code={\let\tcb@vig@draw\tcb@vig@draw@clipped},% + base color/.colorlet=tcbcol@vig@base, + raised color/.style={% + base color=#1, + north style={tcbcol@vig@base!50!white}, + east style={tcbcol@vig@base!75!black}, + south style={tcbcol@vig@base!50!black}, + west style={tcbcol@vig@base!75!white}, + }, + lowered color/.style={% + base color=#1, + north style={tcbcol@vig@base!50!black}, + east style={tcbcol@vig@base!75!white}, + south style={tcbcol@vig@base!50!white}, + west style={tcbcol@vig@base!75!black}, + }, + color from/.style args={#1 to #2}{% + north style={bottom color=#1,top color=#2}, + east style={left color=#1,right color=#2}, + south style={top color=#1,bottom color=#2}, + west style={right color=#1,left color=#2}, + }, + fade in/.style={% + north style={#1,path fading=south}, + east style={#1,path fading=west}, + south style={#1,path fading=north}, + west style={#1,path fading=east}, + }, + fade in/.default=white, + fade out/.style={% + north style={#1,path fading=north}, + east style={#1,path fading=east}, + south style={#1,path fading=south}, + west style={#1,path fading=west}, + }, + fade out/.default=white, + semi fade in/.style={% + north style={#1,path fading=semi south}, + east style={#1,path fading=semi west}, + south style={#1,path fading=semi north}, + west style={#1,path fading=semi east}, + }, + semi fade in/.default=white, + semi fade out/.style={% + north style={#1,path fading=semi north}, + east style={#1,path fading=semi east}, + south style={#1,path fading=semi south}, + west style={#1,path fading=semi west}, + }, + semi fade out/.default=white, + % + scope=, + draw method=direct, + xmin=0pt, + xmax=1cm, + ymin=0pt, + ymax=1cm, + size=2mm, + over node offset=0.1mm, + raised color=red, +} + +\tcbset{% + finish@vignette/.style 2 args={finish #1={% + \begin{tcbclipframe}\tcbvignette{% + scope={transparency group,opacity=0.25}, + north style=white, + east style=black!75, + south style=black, + west style=black!25,#2,inside node=frame + }\end{tcbclipframe}}}, + finish vignette/.style={% + finish@vignette={unbroken}{#1},% + finish@vignette={first}{#1,south size=0pt},% + finish@vignette={middle}{#1,north size=0pt,south size=0pt},% + finish@vignette={last}{#1,north size=0pt}% + }, +% + finish@raised@vignette/.style 2 args={finish #1={% + \begin{tcbclipframe}\tcbvignette{% + draw method=clipped, + north style={white,path fading=semi south}, + east style={black!75,path fading=semi west}, + south style={black,path fading=semi north}, + west style={black!25,path fading=semi east},#2,inside node=frame + }\end{tcbclipframe}}}, + finish raised fading vignette/.style={% + finish@raised@vignette={unbroken}{#1},% + finish@raised@vignette={first}{#1,south size=0pt},% + finish@raised@vignette={middle}{#1,north size=0pt,south size=0pt},% + finish@raised@vignette={last}{#1,north size=0pt}% + }, +% + finish@fading@vignette/.style 2 args={finish #1={% + \tcbvignette{% + draw method=clipped,fade in=tcbcol@vig@base,#2,over node=frame}}}, + finish fading vignette/.style={% + finish@fading@vignette={unbroken}{base color=white,#1},% + finish@fading@vignette={first}{base color=white,#1,south size=0pt},% + finish@fading@vignette={middle}{base color=white,#1,north size=0pt,south size=0pt},% + finish@fading@vignette={last}{base color=white,#1,north size=0pt}% + }, +% + underlay@vignette/.style 2 args={underlay #1={% + \begin{tcbclipframe}\tcbvignette{% + raised color=tcbcolframe, + north size=\kvtcb@top@rule@stand, + south size=\kvtcb@bottom@rule@stand, + west size=\kvtcb@left@rule, + east size=\kvtcb@right@rule,#2,inside node=frame + }\end{tcbclipframe}}}, + underlay vignette/.style={% + underlay@vignette={unbroken}{#1},% + underlay@vignette={first}{#1,south size=0pt},% + underlay@vignette={middle}{#1,north size=0pt,south size=0pt},% + underlay@vignette={last}{#1,north size=0pt}% + }, +% + underlay@fading@vignette/.style 2 args={underlay #1={% + \begin{tcbclipframe}\tcbvignette{% + draw method=clipped, + north style={white,path fading=semi south}, + east style={black!75,path fading=semi west}, + south style={black,path fading=semi north}, + west style={black!25,path fading=semi east},#2,inside node=frame, + }\end{tcbclipframe}}}, + underlay raised fading vignette/.style={% + underlay@fading@vignette={unbroken}{#1},% + underlay@fading@vignette={first}{#1,south size=0pt},% + underlay@fading@vignette={middle}{#1,north size=0pt,south size=0pt},% + underlay@fading@vignette={last}{#1,north size=0pt}% + }, + % + underlay raised shading vignette/.style={% + underlay vignette={draw method=clipped, + north style={bottom color=tcbcolframe,top color=tcbcolframe!33!white}, + east style={left color=tcbcolframe,right color=tcbcolframe!66!black}, + south style={top color=tcbcolframe,bottom color=tcbcolframe!33!black}, + west style={right color=tcbcolframe,left color=tcbcolframe!66!white},#1}}, + % + underlay shade in vignette/.style={% + underlay vignette={draw method=clipped,color from=tcbcolback to tcbcolframe,#1}}, +} -- cgit v1.2.3