From 8674ba11ca5132b2588bcbe52f59bb5077eff2d6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 22 Apr 2012 23:28:40 +0000 Subject: new pgf package pgf-blur (20apr12) git-svn-id: svn://tug.org/texlive/trunk@26092 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/pgf-blur/README | 15 + .../pgf-blur/tikzlibraryshadows.blur.code.tex | 198 +++++ .../texmf-dist/source/latex/pgf-blur/pgf-blur.dtx | 799 +++++++++++++++++++++ .../texmf-dist/source/latex/pgf-blur/pgf-blur.ins | 45 ++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/libexec/ctan2tds | 4 + Master/tlpkg/tlpsrc/collection-pictures.tlpsrc | 1 + Master/tlpkg/tlpsrc/pgf-blur.tlpsrc | 0 8 files changed, 1063 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/pgf-blur/README create mode 100644 Master/texmf-dist/doc/latex/pgf-blur/tikzlibraryshadows.blur.code.tex create mode 100644 Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx create mode 100644 Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins create mode 100644 Master/tlpkg/tlpsrc/pgf-blur.tlpsrc diff --git a/Master/texmf-dist/doc/latex/pgf-blur/README b/Master/texmf-dist/doc/latex/pgf-blur/README new file mode 100644 index 00000000000..d599ee37578 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-blur/README @@ -0,0 +1,15 @@ +Package pgf-blur +---------------- + +Copyright 2012 Martin Giese, martingi@ifi.uio.no + +This file is under the LaTeX Project Public License +See CTAN archives in directory macros/latex/base/lppl.txt. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + +DESCRIPTION: + `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF + +Run (pdf)latex on pgf-blur.dtx to produce a TikZ library file +and the documentation. diff --git a/Master/texmf-dist/doc/latex/pgf-blur/tikzlibraryshadows.blur.code.tex b/Master/texmf-dist/doc/latex/pgf-blur/tikzlibraryshadows.blur.code.tex new file mode 100644 index 00000000000..bf6fc97d92a --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-blur/tikzlibraryshadows.blur.code.tex @@ -0,0 +1,198 @@ +%% +%% This is file `tikzlibraryshadows.blur.code.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pgf-blur.dtx (with options: `texfile') +%% Copyright 2012 Martin Giese, martingi@ifi.uio.no +%% +%% This file is under the LaTeX Project Public License +%% See CTAN archives in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF +%% + + +\def\fileversion{1.0} +\def\filedate{2012/05/06} +\message{ v\fileversion, \filedate} +\usetikzlibrary{shadows} +\usetikzlibrary{calc} +\tikzset{ + /tikz/shadow blur radius/.store in=\pgfbs@radius, + /tikz/shadow blur radius=.4ex, + /tikz/shadow blur extra rounding/.store in=\pgfbs@extra@rounding, + /tikz/shadow blur extra rounding=\pgfutil@empty, + /tikz/shadow blur extra rounding/.default=\pgfbs@radius, + /tikz/shadow blur steps/.store in=\pgfbs@steps, + /tikz/shadow blur steps=3, + /tikz/shadow opacity/.store in=\pgfbs@opacity, + /tikz/shadow opacity=40, + /tikz/blur shadow/.style={ + shadow scale=1, + shadow xshift=.5ex, + shadow yshift=-.5ex, + preaction=render blur shadow, + every shadow, + #1, + }, + /tikz/render blur shadow/.code={ + \pgfbs@savebb + \pgfsyssoftpath@getcurrentpath{\pgfbs@input@path}% + \pgfbs@compute@shadow@bbox + \pgfbs@process@rounding{\pgfbs@input@path}{\pgfbs@fadepath}% + \pgfbs@apply@canvas@transform + \colorlet{pstb@shadow@color}{white!\pgfbs@opacity!black}% + \pgfdeclarefading{shadowfading}{\pgfbs@paint@fading}% + \pgfsetfillcolor{black}% + \pgfsetfading{shadowfading}% + {\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}}% + \pgfbs@usebbox{fill}% + \pgfbs@restorebb + }, +} +\def\pgfbs@savebb{% + \edef\pgfbs@restorebb{% + \global\pgf@picminx=\the\pgf@picminx\relax + \global\pgf@picmaxx=\the\pgf@picmaxx\relax + \global\pgf@picminy=\the\pgf@picminy\relax + \global\pgf@picmaxy=\the\pgf@picmaxy\relax + }% +} +\def\restorebb{}% +\def\pgfbs@process@rounding#1#2{ + \expandafter\ifx\pgfbs@extra@rounding\pgfutil@empty% + \pgfprocessround{#1}{#2}% + \else% + \pgfmathsetmacro\pgfbs@exrd@val{\pgfbs@extra@rounding}% + \pgfbs@roundpath{#1}{\pgfbs@exrd@val pt}% + \pgfsyssoftpath@getcurrentpath{\pgfbs@extraroundedpath}% + \pgfprocessround{\pgfbs@extraroundedpath}{#2}% + \fi% +} +\def\pgfbs@roundpath#1#2{% + {% + \def\pgfbs@rp@skipround{% + \let\pgfbs@rp@possibleround\pgfbs@rp@insertround}% + \def\pgfbs@rp@insertround{\pgfsyssoftpath@specialround{#2}{#2}}% + \let\pgfbs@rp@possibleround\pgfbs@rp@insertround% + % + \def\pgfsyssoftpath@movetotoken##1##2{% + \pgfsyssoftpath@moveto{##1}{##2}}% + \def\pgfsyssoftpath@linetotoken##1##2{% + \pgfbs@rp@possibleround\pgfsyssoftpath@lineto{##1}{##2}}% + \def\pgfsyssoftpath@rectcornertoken##1##2##3##4##5{% + \pgf@xa=##1\relax% + \advance\pgf@xa by##4% + \pgf@ya=##2\relax% + \advance\pgf@ya by##5% + \pgfsyssoftpath@moveto{##1}{##2}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{\the\pgf@xa}{##2}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{\the\pgf@xa}{\the\pgf@ya}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{##1}{\the\pgf@ya}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@closepath}% + \def\pgfsyssoftpath@curvetosupportatoken% + ##1##2##3##4##5##6##7##8{% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@curveto{##1}{##2}{##4}{##5}{##7}{##8}}% + \def\pgfsyssoftpath@closepathtoken##1##2{% + \pgfbs@rp@possibleround\pgfsyssoftpath@closepath}% + \def\pgfsyssoftpath@specialroundtoken##1##2{% + \pgfmathsetmacro\pgfbs@rp@ra{max(##1,#2)}% + \pgfmathsetmacro\pgfbs@rp@rb{max(##2,#2)}% + \pgfsyssoftpath@specialround% + {\pgfbs@rp@ra pt}{\pgfbs@rp@rb pt}% + \let\pgfbs@rp@possibleround\pgfbs@rp@skipround% + } + #1% + } +} +\def\pgfbs@compute@shadow@bbox{% + \edef\pgfbs@minx{\the\pgf@pathminx}% + \edef\pgfbs@miny{\the\pgf@pathminy}% + \edef\pgfbs@maxx{\the\pgf@pathmaxx}% + \edef\pgfbs@maxy{\the\pgf@pathmaxy}% + \pgfmathsetmacro\pgfbs@midx{0.5*(\pgfbs@minx + \pgfbs@maxx)}% + \pgfmathsetmacro\pgfbs@midy{0.5*(\pgfbs@miny + \pgfbs@maxy)}% + \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@wd{\pgfbs@maxx - \pgfbs@minx}% + \pgfmathsetmacro\pgfbs@ht{\pgfbs@maxy - \pgfbs@miny}% + \pgfsyssoftpath@setcurrentpath\pgfutil@empty% + \pgfsyssoftpath@rect{\pgfbs@minx pt}{\pgfbs@miny pt}% + {\pgfbs@wd pt}{\pgfbs@ht pt}% + \pgfsyssoftpath@getcurrentpath{\pgfbs@shadow@bbox}% + \pgfsyssoftpath@setcurrentpath\pgfutil@empty% +} + +\def\pgfbs@set@fading@pic@bbox{ + \global\pgf@picminx=\pgfbs@minx pt\relax + \global\pgf@picminy=\pgfbs@miny pt\relax + \global\pgf@picmaxx=\pgfbs@maxx pt\relax + \global\pgf@picmaxy=\pgfbs@maxy pt\relax +} +\def\pgfbs@usefadepath#1{% + \pgfsyssoftpath@setcurrentpath{\pgfbs@fadepath}% + \pgfsyssoftpath@flushcurrentpath% + \pgfusepath{#1}% +} +\def\pgfbs@usebbox#1{% + \pgfsyssoftpath@setcurrentpath{\pgfbs@shadow@bbox}% + \pgfsyssoftpath@flushcurrentpath% + \pgfusepath{#1}% +} +\def\pgfbs@apply@canvas@transform{ + \pgflowlevel{ + \pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}} + \pgftransformscale{\pgfkeysvalueof{/tikz/shadow scale}} + \pgftransformshift{\pgfpoint% + {\pgfkeysvalueof{/tikz/shadow xshift}-\pgfbs@midx} + {\pgfkeysvalueof{/tikz/shadow yshift}-\pgfbs@midy} + } + } +} +\def\pgfbs@paint@fading{ + \pgfpicture + % fix bounding box. + \pgfbs@set@fading@pic@bbox + % draw the outer part of the fading, + % starting with lightest, outermost line + \pgfsetroundjoin + \pgfmathsetmacro\pgfbs@max@i{\pgfbs@steps - 1} + \foreach \pgfbs@i in {0,...,\pgfbs@max@i} { + \pgfmathsetmacro\pgfbs@wth{% + 2 * \pgfbs@radius * (1 - \pgfbs@i/\pgfbs@steps)}% + \pgfmathsetmacro\pgfbs@op{% + 100 - (25/\pgfbs@steps) * (2*\pgfbs@i + 1)}% + \pgfsetlinewidth{\pgfbs@wth pt} + \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color} + \pgfbs@usefadepath{stroke} + } + % clip to inside of path + \pgfbs@usefadepath{clip} + % fill inside with final darkest shadow color + \pgfsetfillcolor{pstb@shadow@color} + \pgfbs@usebbox{fill} + % draw the inner part of the fading, + % starting with the darkest, innermost line + \foreach \pgfbs@i in {0,...,\pgfbs@max@i} { + \pgfmathsetmacro\pgfbs@wth{% + 2 * \pgfbs@radius * (1 - \pgfbs@i/\pgfbs@steps)}% + \pgfmathsetmacro\pgfbs@op{(25/\pgfbs@steps) * (2*\pgfbs@i + 1)} + \pgfsetlinewidth{\pgfbs@wth pt} + \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color} + \pgfbs@usefadepath{stroke} + } + \endpgfpicture +} +\endinput +%% +%% End of file `tikzlibraryshadows.blur.code.tex'. diff --git a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx new file mode 100644 index 00000000000..54ca896b204 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx @@ -0,0 +1,799 @@ +% \iffalse meta-comment -*-mode:Latex;tex-command:"latex *;dvips -D600 pst-blur -o"-*- +%<*internal> +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +% +%<*install> +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +Copyright 2012 Martin Giese, martingi@ifi.uio.no + +This file is under the LaTeX Project Public License +See CTAN archives in directory macros/latex/base/lppl.txt. + +DESCRIPTION: + `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF + +\endpreamble +\generate{\file{tikzlibraryshadows.blur.code.tex}{\from{pgf-blur.dtx}{texfile}}} +\Msg{************************************************************} +\Msg{ } +\Msg{ To finish the installation you have to move the file} +\Msg{ `tikzlibraryshadows.blur.code.tex' into a directory} +\Msg{ searched by TeX.} +\Msg{ } +\Msg{ To type-set the documentation, including instructions,} +\Msg{ run the file `pgf-blur.dtx' through LaTeX.} +\Msg{ } +\Msg{***********************************************************} +% +%\endbatchfile +%<*internal> +\generate{ + \file{\jobname.ins}{\from{\jobname.dtx}{install}} +} +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\documentclass{ltxdoc} +\usepackage{tikz} +\usepackage{textcomp} +\usepackage{url} +\usetikzlibrary{shadows.blur} +\usetikzlibrary{shapes.symbols} +\usetikzlibrary{shapes.multipart} +\AtBeginDocument{ +% \OnlyDescription % comment out for implementation details + \EnableCrossrefs + \RecordChanges + \CodelineIndex} +%\AtEndDocument{ +% \PrintChanges +% \PrintIndex} +\MakeShortVerb{\|} +\newcommand\file[1]{\texttt{#1}} +\begin{document} +\DocInput{pgf-blur.dtx} +\end{document} +% +%\fi +% +% \CheckSum{299} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{v1.00}{2012/05/06}{First public release. (mg)} +% +% \DoNotIndex{\!,\",\#,\$,\%,\&,\',\(,\+,\*,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?} +% \setcounter{IndexColumns}{2} +% +% \title{\textsf{pgf-blur} package \\ version \fileversion} +% \author{Martin Giese\thanks{\protect\url{martingi@ifi.uio.no}}} +% \date{\filedate} +% \maketitle +% +%\def\tikzname{Ti\emph{k}Z} +% +% +%\begin{center} +% \small \textbf{Acknowledgement}\\ This package evolved from a discussion +% on \url{http://tex.stackexchange.com/}. In particular, the author received +% invaluable help from Andrew Stacey. +%\end{center} +% +%\section{Introduction} +% The ability to paint shadows on arbitrary shapes is a standard +% feature of TikZ/PGF. However, these shadows are usually `sharp': +% +%\newcommand\examplepath{ +% (0,0) -- (0,1) -- (1.5,1) -- (1,0.5) [rounded corners=2mm] -- (1,0) [sharp corners]-- cycle +% (0.5,0.5) circle (0.3) +% } +% +%\begin{center} +% \begin{tikzpicture} +% \filldraw[drop shadow,draw=black,fill=white] \examplepath ; +% \node[starburst,very thick,rounded corners=2pt,fill=white,draw=red, +% drop shadow] at (5,0.5) +% {\sffamily\bfseries SPLAT!}; +% \end{tikzpicture} +%\end{center} +% +% Such shadows are often optically too intrusive. A more pleasing effect +% is achieved if the edges of the shadow are `blurred,' i.e., getting +% gradually lighter and more transparent toward the outside. +% This effect can be achieved in TikZ/PGF with the |circular drop shadow| +% key, but that works only with ellipses and circles. +% +% The |pgf-blur| package provides blurred shadows that can be +% added to any closed path, including node borders: +% +%\begin{center} +% \begin{tikzpicture} +% \filldraw[blur shadow={shadow blur steps=8,shadow blur extra rounding},draw=black,fill=white] \examplepath ; +% \node[starburst,very thick,rounded corners=2pt,fill=white,draw=red, +% blur shadow={shadow blur steps=8,shadow blur extra rounding}] at (5,0.5) +% {\sffamily\bfseries SPLAT!}; +% \end{tikzpicture} +%\end{center} +% +% \medskip +% +% The new TikZ options provided by the package +% are described in section 2 of this document. Section 3, if present, documents the +% implementation consisting of a generic \TeX\ file. +% +%\section{Package Usage} +% +% To use the package, the document needs to say |\usepackage{tikz}| and +% \begin{verbatim} +% \usetikzlibrary{shadows.blur} +% \end{verbatim} +% in the preamble. +% +% \DescribeMacro{blur shadow} +% \noindent A blurred shadow is added to a path or node by the option +% |blur shadow|, e.g. +%\begin{verbatim} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, blur shadow] (0,0) circle (1); +% \node[fill=white, draw=black, blur shadow] at (4,0.5) {\Large Node}; +% \end{tikzpicture} +%\end{verbatim} +% which gives +%\begin{center} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, blur shadow] (0,0) circle (0.5); +% \node[fill=white, draw=black, blur shadow] at (2,0) {\Large Node}; +% \end{tikzpicture} +%\end{center} +% Note that this usually makes sense only with closed paths that are filled +% (otherwise the shadow is visible through the path, and one wonders +% what is throwing the shadow) and often looks best if used with +% a drawn outline. +% +% The appearance of the shadow can be fine-tuned by giving arguments +% to the |blur shadow| options. These options do not have any effect +% if given outside of the argument of either |blur shadow| or |every shadow| +% (described later) +% +% \DescribeMacro{shadow xshift} +% \DescribeMacro{shadow yshift} +% \DescribeMacro{shadow scale} +% \noindent The shadow is based on a shifted, and possibly scaled copy of the original path. +% These options are described in the \tikzname/PGF user manual, and they work in +% the same way for blurred shadows. See also Fig.~\ref{fig:geometry}. The default +% values are 3ex for |shadow xshift|, \textminus3ex for |shadow yshift|, and +% 1 for |shadow scale|. +% +%\begin{figure} +%\begin{center} +% \begin{tikzpicture} +%\begin{scope} +% \clip (0,1) rectangle (8,5); +% +% \filldraw[fill=white, draw=black, ultra thick, +% blur shadow={ +% shadow xshift=2cm,shadow yshift=-1cm, +% shadow blur radius=0.75cm, shadow blur steps=10}] (-4,3) rectangle (4,9); +% \draw[xshift=2cm,yshift=-1cm,thin,dotted,red] +% (4,3) circle (0.75) +% (-4,3) rectangle (4,9) +% (-4.75,3.75) rectangle (3.25,9.75) +% [rounded corners=0.75cm] (-3.25,2.25) rectangle (4.75,8.25); +%\end{scope} +% +% \draw[-stealth, thin] (4,3) -- (6,2) +% node[pos=0.6,left=0.7em] {\footnotesize (|shadow xshift|,\,|shadow yshift|)}; +% +% \draw[stealth-stealth, thin] (6,2) -- + (-60:0.75) +% node[pos=0.4,right=0.4em] {\footnotesize |shadow blur radius|}; +% \end{tikzpicture} +%\end{center} +% \caption{Shadow geometry} +% \label{fig:geometry} +%\end{figure} +% +% Here is an example for the usage of these options: +%\begin{verbatim} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow={shadow xshift=1ex, +% shadow yshift=1ex, +% shadow scale=1.2}] +% (0,0) circle (0.5); +% \end{tikzpicture} +%\end{verbatim} +% Which gives: +%\begin{center} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow={shadow xshift=1ex, +% shadow yshift=1ex, +% shadow scale=1.2}] +% (0,0) circle (0.5); +% \end{tikzpicture} +%\end{center} +% +% \DescribeMacro{shadow blur radius} +% \noindent Fig.~\ref{fig:geometry} shows how the blur shadow spreads out +% the boundary of the path over a circular region. The intent is +% to mimic the effect of a circular light source over the shape. +% the radius of the ``blurring'' can be set with the +% |shadow blur radius| option, which has a default value of +% \csname pgfbs@radius\endcsname. +% +% Here is an example of a drastically enlarged blur radius: +%\begin{verbatim} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow={shadow blur radius=1.5ex}] +% (0,0) circle (0.5); +% \end{tikzpicture} +%\end{verbatim} +% Which gives: +%\begin{center} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow={shadow blur radius=1.5ex}] +% (0,0) circle (0.5); +% \end{tikzpicture} +%\end{center} +% +% \DescribeMacro{shadow opacity} +% \noindent Shadows are transparent. They are always black since a shadow is the +% absence of light. The opacity of the interior of the shadow, i.e.~the +% darkest region can be controlled with the |shadow opacity| option. It +% is given as a percentage, i.e.~a number between 0 and 100. The default +% is \csname pgfbs@opacity\endcsname. +% +% Here are examples of lighter and darker shadows: +%\begin{verbatim} +% \begin{tikzpicture} +% \draw[help lines,step=0.5] (-1,-1) grid (3,1); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow opacity=20}] +% (0,0) circle (0.5); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow opacity=60}] +% (2,0) circle (0.5); +% \end{tikzpicture} +%\end{verbatim} +% Which gives: +%\begin{center} +% \begin{tikzpicture} +% \draw[help lines,step=0.5] (-1,-1) grid (3,1); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow opacity=20}] +% (0,0) circle (0.5); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow opacity=60}] +% (2,0) circle (0.5); +% \end{tikzpicture} +%\end{center} +% +% \DescribeMacro{shadow blur extra rounding} +% A close inspection of the shadow in Fig.~\ref{fig:geometry} +% reveals that if the original path has a corner, then +% the ``lines of equal opacity'' in the inner part of the shadow will +% also have corners. This is a consequence of the way the shadows are +% rendered by default. It gives the impression of the darkest part +% of the shadow extruding a little too much into the faded part. +% This effect can be reduced by adding the option |shadow extra rounding|, +% which has the effect of rounding all corners of the path before rendering +% the shadow. The rounding inset can be given as an argument; it +% defaults to the current value of the blur radius. +% +% Several points should be remembered when using this option: +% \begin{itemize} +% \item It uses the mechanism that \tikzname\ also uses for the +% |rounded corners| option. This works badly, distorting the +% path in strange ways, if the individual segments of the path +% are too short to be rounded with the given inset. If the +% shadows look strange, try reducing the inset, or drop this +% option altogether. +% \item Rounding many complex paths can slow \TeX\ down considerably. +% \item The ideal rounding inset depends on the angle the path has +% at each corner. This is not taken into account, the same +% inset is used everywhere. The default value is the one that +% works best with 90\textdegree\ angles, but it also looks +% fairly good with other angles. +% \item With or without this option, the shadows will not be +% photorealistic. +% \end{itemize} +% Here is an example of squares without and with extra rounding applied: +%\begin{verbatim} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow] +% (0,0) rectangle (1,1); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow blur extra rounding}] +% (2,0) rectangle (3,1); +% \end{tikzpicture} +%\end{verbatim} +% Which gives: +%\begin{center} +% \begin{tikzpicture} +% \filldraw[fill=white, draw=black, +% blur shadow] +% (0,0) rectangle (1,1); +% \filldraw[fill=white, draw=black, +% blur shadow={shadow blur extra rounding}] +% (2,0) rectangle (3,1); +% \end{tikzpicture} +%\end{center} +% +% \DescribeMacro{shadow blur steps} +% \noindent The transition of opacity in these shadows is actually not +% smooth, but proceeds in a finite number of discrete steps. +% Specifically, there is a number $n$, such that the (shifted and +% scaled) original path fades outward to complete transparency in $n$ +% steps and within the selected |shadow blur radius|, and inward to +% the maximum opacity of the shadow, also within $n$ steps and the +% |shadow blur radius|. This number of steps $n$ can be selected +% using the |shadow blur steps| option. It defaults to +% \csname pgfbs@steps\endcsname, which is +% enough e.g.~for inconspicuous shadows in presentations that nobody +% examines with a magnifying glass. The examples in the introduction +% use 8, under the assumption that readers will have a close look. +% Fig.~\ref{fig:geometry} uses 10 because the blur radius is so large. +% +% A large number of steps will slow down both the \TeX\ processing and the +% PDF rendering, usually with very little visible impact. +% +% \DescribeMacro{every shadow} +% To apply the same set of options to every shadow, it is possible to +% define the \emph{style} |every shadow|, which is taken from the +% standard shadow library. For instance, in the following, darker +% shadows with more steps are selected for several shapes: +%\begin{verbatim} +% \begin{tikzpicture} +% [every shadow/.style={shadow opacity=60, +% shadow blur steps=7}] +% \filldraw[fill=white, draw=black, blur shadow] +% (0,0) rectangle (1,1); +% \node[cloud,shape aspect=2,fill=white, draw=black, +% blur shadow] +% at (2.5,0.5) {Rain}; +% \end{tikzpicture} +%\end{verbatim} +% Which gives: +%\begin{center} +% \begin{tikzpicture} +% [every shadow/.style={shadow opacity=60, +% shadow blur steps=7}] +% \filldraw[fill=white, draw=black, blur shadow] +% (0,0) rectangle (1,1); +% \node[cloud,shape aspect=2,fill=white, draw=black, +% blur shadow] +% at (2.5,0.5) {Rain}; +% \end{tikzpicture} +%\end{center} + +% +% \StopEventually{} +% +% \subsection{A Note on Nodes} +% + +% While this library plays nicely with most closed paths, it doesn't +% like paths with non-closed parts. This is particularly annoying +% when used with standard node shapes, where you can't do much about +% the paths. Take the |rectangle split| shape for instance: +% +%\begin{verbatim} +% \begin{tikzpicture} +% \node[rectangle split, rectangle split parts=3, draw, fill=white, +% blur shadow={shadow xshift=1em}] {...}; +% \end{tikzpicture} +%\end{verbatim} +% +%\begin{center} +% \begin{tikzpicture} +% \node[rectangle split, rectangle split parts=3, draw, fill=white, +% blur shadow={shadow xshift=1em}] +% {Cake \nodepart{two} icing: Icing \nodepart{three} getIcing()}; +% \end{tikzpicture} +%\end{center} +% +% Note how the part separation lines produce white bars in the shadow. +% This is really hard to avoid in general. There are two simple +% workarounds: a) choosing a very small |shadow xshift| so most the +% ``bar'' gets hidden behind the shape, or b) putting +% the node inside a simple rectangle node and add a shadow to the latter. +% For solution b) to work, the inner padding of the outer node has to +% be removed. This in turn requires it to be reinstated for the inner +% node. Here's the example showing both workarounds: +% +%\begin{verbatim} +% \begin{tikzpicture} +% \node[rectangle split, rectangle split parts=3, +% draw, fill=white, +% blur shadow={shadow xshift=0.25ex}] at (-2,0) {...}; +% \node[blur shadow={shadow xshift=1em},inner sep=0pt] at (2,0) { +% \tikz\node[rectangle split, rectangle split parts=3, +% draw, fill=white, inner sep=0.333em] {...};}; +% \end{tikzpicture} +%\end{verbatim} +% +%\begin{center} +% \begin{tikzpicture} +% \node[rectangle split, rectangle split parts=3, +% draw, fill=white, +% blur shadow={shadow xshift=0.25ex}] at (-2,0) +% {Cake \nodepart{two} icing: Icing \nodepart{three} getIcing()}; +% \node[blur shadow={shadow xshift=1em},inner sep=0pt] at (2,0) { +% \tikz\node[rectangle split, rectangle split parts=3, +% draw, fill=white, inner sep=0.333em] +% {Cake \nodepart{two} icing: Icing \nodepart{three} getIcing()};}; +% \end{tikzpicture} +%\end{center} +% +% Solution b) is fine for rectangular outlines, but it wont work for e.g.~the +% |cylinder| shape. +% +% \section{Implementation} +% +%\begin{macro}{\fileversion} +% \begin{macro}{\filedate} +% We define the file version and date, and +% import the original shadow code for the offset and scale parameters. +% \begin{macrocode} +%<*texfile> +\def\fileversion{1.0} +\def\filedate{2012/05/06} +\message{ v\fileversion, \filedate} +\usetikzlibrary{shadows} +\usetikzlibrary{calc} +% \end{macrocode} +% \end{macro} +%\end{macro} +%\begin{macro}{shadow blur radius} +%\begin{macro}{shadow blur extra rounding} +%\begin{macro}{shadow blur steps} +%\begin{macro}{shadow opacity} +% Next we define the various \tikzname\ options, with their default values. +% The options |shadow xshift|, |shadow yshift|, |shadow scale| are imported +% from the standard \tikzname\ shadow library, so we don't need to do +% anything for them. +% Note how the default value of |shadow blur extra rounding| is by default +% set to the blur radius. This works because the value of this key is +% evaluated before it is used. All other options just store values +% in a couple of macros. +% \begin{macrocode} +\tikzset{ + /tikz/shadow blur radius/.store in=\pgfbs@radius, + /tikz/shadow blur radius=.4ex, + /tikz/shadow blur extra rounding/.store in=\pgfbs@extra@rounding, + /tikz/shadow blur extra rounding=\pgfutil@empty, + /tikz/shadow blur extra rounding/.default=\pgfbs@radius, + /tikz/shadow blur steps/.store in=\pgfbs@steps, + /tikz/shadow blur steps=3, + /tikz/shadow opacity/.store in=\pgfbs@opacity, + /tikz/shadow opacity=40, +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{blur shadow} +% The user level option |blur shadow| sets the +% |shadow xshift|, |shadow yshift|, |shadow scale| options to +% more useful defaults than the ones inherited from the shadows library. +% It includes any options set in the |every shadow| style, and the +% argument to |blur shadow|. Rendering the shadow is declared as a +% |.preaction| on the path. \tikzname\ will take care of saving the +% path for us. +% \begin{macrocode} + /tikz/blur shadow/.style={ + shadow scale=1, + shadow xshift=.5ex, + shadow yshift=-.5ex, + preaction=render blur shadow, + every shadow, + #1, + }, +% \end{macrocode} +%\end{macro} +% \begin{macro}{render blur shadow} +% The following does the actual shadow rendering. After some preliminary +% computation of dimensions, shifting and scaling is done using a +% canvas transform. The actual blurring effect is done using a special fading. +% Since PGF insists on centering every fading when it's constructed, +% it has to be shifted back again when it's installed. +% The shadow is painted by filling a large black rectangle using the +% constructed fading. +% \begin{macrocode} + /tikz/render blur shadow/.code={ + \pgfbs@savebb + \pgfsyssoftpath@getcurrentpath{\pgfbs@input@path}% + \pgfbs@compute@shadow@bbox + \pgfbs@process@rounding{\pgfbs@input@path}{\pgfbs@fadepath}% + \pgfbs@apply@canvas@transform + \colorlet{pstb@shadow@color}{white!\pgfbs@opacity!black}% + \pgfdeclarefading{shadowfading}{\pgfbs@paint@fading}% + \pgfsetfillcolor{black}% + \pgfsetfading{shadowfading}% + {\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}}% + \pgfbs@usebbox{fill}% + \pgfbs@restorebb + }, +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pgfbs@savebb} +% Shadow rendering works with a fading. For a fading to contain PGF code, +% it must contain a |pgfpicture|. And nested |pgfpicture|s mess up the +% bounding box of the surrounding picture. Which is why we save the +% current picture bounding box at the beginning of the shadow code +% and restore it at the end. Thanks go to Andrew Stacey for this! +% \begin{macrocode} +\def\pgfbs@savebb{% + \edef\pgfbs@restorebb{% + \global\pgf@picminx=\the\pgf@picminx\relax + \global\pgf@picmaxx=\the\pgf@picmaxx\relax + \global\pgf@picminy=\the\pgf@picminy\relax + \global\pgf@picmaxy=\the\pgf@picmaxy\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pgfbs@restorebb} +% Executing |\pgfbs@savebb| sets this bounding box restoring macro +% to something useful. +% \begin{macrocode} +\def\restorebb{}% +% \end{macrocode} +% \end{macro} +%\begin{macro}{\pgfbs@process@rounding} +% This macro prepares the path by taking care of all things having to do +% with rounding. First, it applies extra rounding to the path if requested +% by the |shadow blur extra rounding| option. Second, it removes all +% rounding tokens in the path by calling the |\pgfprocessround| macro. +% This is because rounding tokens don't work well with the fading code +% for some reason or other. +% |#1| must be a PGF soft path. |#2| must be a macro into which the resulting +% soft path will be stored. +% \begin{macrocode} +\def\pgfbs@process@rounding#1#2{ + \expandafter\ifx\pgfbs@extra@rounding\pgfutil@empty% + \pgfprocessround{#1}{#2}% + \else% + \pgfmathsetmacro\pgfbs@exrd@val{\pgfbs@extra@rounding}% + \pgfbs@roundpath{#1}{\pgfbs@exrd@val pt}% + \pgfsyssoftpath@getcurrentpath{\pgfbs@extraroundedpath}% + \pgfprocessround{\pgfbs@extraroundedpath}{#2}% + \fi% +} +% \end{macrocode} +%\end{macro} +% \begin{macro}{\pgfbs@roundpath} +% |\pgfbs@roundpath{#1}{#2}| rounds every potential corner in path |#1| +% with an inset of at least |#2|. +% Corners that are already rounded in |#1| are either left intact if +% their insets are $\geq$|#2|, or the insets are increased to |#2|. +% Any rectangle tokens are resolved into moveto/lineto/closepath with rounding. +% The result is appended to PGF's ``current path.'' +% +% The code works by giving an appropriate definition for each of the PGF +% soft path tokens and then executing the path. +% \begin{macrocode} +\def\pgfbs@roundpath#1#2{% + {% + \def\pgfbs@rp@skipround{% + \let\pgfbs@rp@possibleround\pgfbs@rp@insertround}% + \def\pgfbs@rp@insertround{\pgfsyssoftpath@specialround{#2}{#2}}% + \let\pgfbs@rp@possibleround\pgfbs@rp@insertround% + % + \def\pgfsyssoftpath@movetotoken##1##2{% + \pgfsyssoftpath@moveto{##1}{##2}}% + \def\pgfsyssoftpath@linetotoken##1##2{% + \pgfbs@rp@possibleround\pgfsyssoftpath@lineto{##1}{##2}}% + \def\pgfsyssoftpath@rectcornertoken##1##2##3##4##5{% + \pgf@xa=##1\relax% + \advance\pgf@xa by##4% + \pgf@ya=##2\relax% + \advance\pgf@ya by##5% + \pgfsyssoftpath@moveto{##1}{##2}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{\the\pgf@xa}{##2}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{\the\pgf@xa}{\the\pgf@ya}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@lineto{##1}{\the\pgf@ya}% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@closepath}% + \def\pgfsyssoftpath@curvetosupportatoken% + ##1##2##3##4##5##6##7##8{% + \pgfbs@rp@possibleround% + \pgfsyssoftpath@curveto{##1}{##2}{##4}{##5}{##7}{##8}}% + \def\pgfsyssoftpath@closepathtoken##1##2{% + \pgfbs@rp@possibleround\pgfsyssoftpath@closepath}% + \def\pgfsyssoftpath@specialroundtoken##1##2{% + \pgfmathsetmacro\pgfbs@rp@ra{max(##1,#2)}% + \pgfmathsetmacro\pgfbs@rp@rb{max(##2,#2)}% + \pgfsyssoftpath@specialround% + {\pgfbs@rp@ra pt}{\pgfbs@rp@rb pt}% + \let\pgfbs@rp@possibleround\pgfbs@rp@skipround% + } + #1% + } +} +% \end{macrocode} +% \end{macro} +%\begin{macro}{\pgfbs@compute@shadow@bbox} +%\begin{macro}{\pgfbs@minx} +%\begin{macro}{\pgfbs@midx} +%\begin{macro}{\pgfbs@maxx} +%\begin{macro}{\pgfbs@miny} +%\begin{macro}{\pgfbs@midy} +%\begin{macro}{\pgfbs@maxy} +%\begin{macro}{\pgfbs@shadow@bbox} +% This macro figures out the bounding box of the shadow: it's the +% same as the bounding box of the current path, but enlarged by +% the blur radius in each direction. It also computes the +% coordinates of the center of the bounding box. These are +% stored in macros |\pgfbs@|\{|min|$\mid$|mid|$\mid$|max|\}\{|x|$\mid$|y|\}. +% It also creates a soft path for the bounding box which is stored in +% |\pgfbs@shadow@bbox|. +% \begin{macrocode} +\def\pgfbs@compute@shadow@bbox{% + \edef\pgfbs@minx{\the\pgf@pathminx}% + \edef\pgfbs@miny{\the\pgf@pathminy}% + \edef\pgfbs@maxx{\the\pgf@pathmaxx}% + \edef\pgfbs@maxy{\the\pgf@pathmaxy}% + \pgfmathsetmacro\pgfbs@midx{0.5*(\pgfbs@minx + \pgfbs@maxx)}% + \pgfmathsetmacro\pgfbs@midy{0.5*(\pgfbs@miny + \pgfbs@maxy)}% + \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + \pgfbs@radius}% + \pgfmathsetmacro\pgfbs@wd{\pgfbs@maxx - \pgfbs@minx}% + \pgfmathsetmacro\pgfbs@ht{\pgfbs@maxy - \pgfbs@miny}% + \pgfsyssoftpath@setcurrentpath\pgfutil@empty% + \pgfsyssoftpath@rect{\pgfbs@minx pt}{\pgfbs@miny pt}% + {\pgfbs@wd pt}{\pgfbs@ht pt}% + \pgfsyssoftpath@getcurrentpath{\pgfbs@shadow@bbox}% + \pgfsyssoftpath@setcurrentpath\pgfutil@empty% +} +% \end{macrocode} +%\end{macro} +%\end{macro}\end{macro}\end{macro} +%\end{macro}\end{macro}\end{macro} +%\end{macro} +%\begin{macro}{\pgfbs@set@fading@pic@bbox} + +% Set the bounding box of the fading picture painted by +% |\pgfbs@paint@fading|. Normally, the bounding box is updated +% automatically, but this doesn't happen when PGF's soft paths are +% used. The code that applies a fading needs the dimensions +% of the fading to be correct. So we explicitly set the picture +% bounding box according to the previously computed values. +% Thanks again to Andrew Stacey for pointing out this subtlety! +% +% \begin{macrocode} +\def\pgfbs@set@fading@pic@bbox{ + \global\pgf@picminx=\pgfbs@minx pt\relax + \global\pgf@picminy=\pgfbs@miny pt\relax + \global\pgf@picmaxx=\pgfbs@maxx pt\relax + \global\pgf@picmaxy=\pgfbs@maxy pt\relax +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\pgfbs@usefadepath} +% The code of the |render blur shadow| option stores the pre-processed +% soft path into the macro |\pgfbs@fadepath|. This macro `uses' +% this path by executing |\pgfusepath{#1}| on it. +% +% \begin{macrocode} +\def\pgfbs@usefadepath#1{% + \pgfsyssoftpath@setcurrentpath{\pgfbs@fadepath}% + \pgfsyssoftpath@flushcurrentpath% + \pgfusepath{#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\pgfbs@usebbox} +% This is similar to the previous macro, but it `uses' the bounding box +% path. +% \begin{macrocode} +\def\pgfbs@usebbox#1{% + \pgfsyssoftpath@setcurrentpath{\pgfbs@shadow@bbox}% + \pgfsyssoftpath@flushcurrentpath% + \pgfusepath{#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\pgfbs@apply@canvas@transform} +% This achieves the scaling and shifting of the shadow. It is done by a +% canvas transform to avoid iterating through a soft path and transforming +% many coordinates inside \TeX. Scaling is `around' the bounding box +% mid point computed by |\pgfbs@compute@shadow@bbox|. +% \begin{macrocode} +\def\pgfbs@apply@canvas@transform{ + \pgflowlevel{ + \pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}} + \pgftransformscale{\pgfkeysvalueof{/tikz/shadow scale}} + \pgftransformshift{\pgfpoint% + {\pgfkeysvalueof{/tikz/shadow xshift}-\pgfbs@midx} + {\pgfkeysvalueof{/tikz/shadow yshift}-\pgfbs@midy} + } + } +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\pgfbs@paint@fading} +% This paints the actual fading picture. It works by repeatedly +% drawing the |\pgfbs@fadepath| with different line widths and +% different shades of gray, leading to different opacity. First, the +% outer part of the fading is drawn. Then, remaining operations +% are clipped to the inside of the path. Next, the path is filled with +% the shadow opacity. Finally, the inner part of the fading is drawn. +% As mentioned previously, the bounding box needs to be set explicitly. +% \begin{macrocode} +\def\pgfbs@paint@fading{ + \pgfpicture + % fix bounding box. + \pgfbs@set@fading@pic@bbox + % draw the outer part of the fading, + % starting with lightest, outermost line + \pgfsetroundjoin + \pgfmathsetmacro\pgfbs@max@i{\pgfbs@steps - 1} + \foreach \pgfbs@i in {0,...,\pgfbs@max@i} { + \pgfmathsetmacro\pgfbs@wth{% + 2 * \pgfbs@radius * (1 - \pgfbs@i/\pgfbs@steps)}% + \pgfmathsetmacro\pgfbs@op{% + 100 - (25/\pgfbs@steps) * (2*\pgfbs@i + 1)}% + \pgfsetlinewidth{\pgfbs@wth pt} + \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color} + \pgfbs@usefadepath{stroke} + } + % clip to inside of path + \pgfbs@usefadepath{clip} + % fill inside with final darkest shadow color + \pgfsetfillcolor{pstb@shadow@color} + \pgfbs@usebbox{fill} + % draw the inner part of the fading, + % starting with the darkest, innermost line + \foreach \pgfbs@i in {0,...,\pgfbs@max@i} { + \pgfmathsetmacro\pgfbs@wth{% + 2 * \pgfbs@radius * (1 - \pgfbs@i/\pgfbs@steps)}% + \pgfmathsetmacro\pgfbs@op{(25/\pgfbs@steps) * (2*\pgfbs@i + 1)} + \pgfsetlinewidth{\pgfbs@wth pt} + \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color} + \pgfbs@usefadepath{stroke} + } + \endpgfpicture +} +% +% \end{macrocode} +%\end{macro} +% +% \Finale +% diff --git a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins new file mode 100644 index 00000000000..68b5e92292b --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins @@ -0,0 +1,45 @@ +%% +%% This is file `pgf-blur.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pgf-blur.dtx (with options: `install') +%% Copyright 2012 Martin Giese, martingi@ifi.uio.no +%% +%% This file is under the LaTeX Project Public License +%% See CTAN archives in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF +%% +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +Copyright 2012 Martin Giese, martingi@ifi.uio.no + +This file is under the LaTeX Project Public License +See CTAN archives in directory macros/latex/base/lppl.txt. + +DESCRIPTION: + `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF + +\endpreamble +\generate{\file{tikzlibraryshadows.blur.code.tex}{\from{pgf-blur.dtx}{texfile}}} +\Msg{************************************************************} +\Msg{ } +\Msg{ To finish the installation you have to move the file} +\Msg{ `tikzlibraryshadows.blur.code.tex' into a directory} +\Msg{ searched by TeX.} +\Msg{ } +\Msg{ To type-set the documentation, including instructions,} +\Msg{ run the file `pgf-blur.dtx' through LaTeX.} +\Msg{ } +\Msg{***********************************************************} +\endbatchfile + + +\endinput +%% +%% End of file `pgf-blur.ins'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index c475441117c..e361ad9ebf7 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -304,7 +304,7 @@ my @TLP_working = qw( pdfpages pdfscreen pdfslide pdfsync pdftex-def pdftricks pdfx pecha pedigree-perl perception perltex permute persian-bib persian-modern petiteannonce petri-nets - pgf pgf-soroban pgf-umlsd pgfgantt pgfmolbio pgfopts pgfplots + pgf pgf-blur pgf-soroban pgf-umlsd pgfgantt pgfmolbio pgfopts pgfplots phaistos philex philokalia philosophersimprint phonetic photo physymb piano picinpar pict2e pictex pictex2 pictexsum piechartmp piff pigpen diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 5059ad503a1..0870aacb255 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -313,6 +313,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'ecards', "die 'skipping, per author request'", 'eCards', "die 'skipping, per author request'", 'ecc', "&MAKEflatten", + 'eclbip', "die 'skipping, use ecltree'", 'eco', "&MAKEeco", 'edmac', "die 'skipping, needs work (unzip xx)'", 'ednotes', "&MAKEnosymlinks", @@ -323,6 +324,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'elsarticle', "&MAKEflatten", 'em', "die 'skipping, european modern fonts too old, not packaged'", 'emerald', "die 'skipping, nonfree fonts'", + 'empheq', "die 'skipping, use mh'", 'enctex', "die 'skipping, engine requiring compilation'", 'encxvlna', "&MAKEcopy", 'enpassant', "die 'skipping, license unknown'", @@ -351,6 +353,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'excel2latex', "die 'skipping, only supports excel?'", 'expl3', "die 'skipping, now l3kernel, etc.'", 'expressgx', "&MAKEexpressg", + 'fac', "die 'skipping, noinfo license'", 'fancyvrb', "&MAKEfancyvrb", 'faq', "die 'skipping, use FAQ-en'", 'faq-en', "die 'skipping, use FAQ-en'", @@ -1817,6 +1820,7 @@ $standardsource='\.(bat|c|drv|dtx|fea|fdd|ins|sfd)$|configure.*|install-sh'; 'paper', 'install', 'papermas', "$package.dtx", 'parrun', 'parrun.ins', + 'pgf-blur', "$package.dtx", 'seuthesis', 'NULL', # don't want to run iconv, etc. 'stmaryrd', 'stmaryrd.dtx', 'tablists', 'tablists.dtx', diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc index 91322b5b95c..74b66c0c46b 100644 --- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc @@ -45,6 +45,7 @@ depend numericplots depend pb-diagram depend petri-nets depend pgf +depend pgf-blur depend pgf-soroban depend pgf-umlsd depend pgfgantt diff --git a/Master/tlpkg/tlpsrc/pgf-blur.tlpsrc b/Master/tlpkg/tlpsrc/pgf-blur.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3