texlive[60037] Master: pfdicons (24jul21)

commits+karl at tug.org commits+karl at tug.org
Sat Jul 24 22:46:11 CEST 2021


Revision: 60037
          http://tug.org/svn/texlive?view=revision&revision=60037
Author:   karl
Date:     2021-07-24 22:46:11 +0200 (Sat, 24 Jul 2021)
Log Message:
-----------
pfdicons (24jul21)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/pfdicons/
    trunk/Master/texmf-dist/doc/latex/pfdicons/README.txt
    trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf
    trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.tex
    trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf
    trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.tex
    trunk/Master/texmf-dist/tex/latex/pfdicons/
    trunk/Master/texmf-dist/tex/latex/pfdicons/pfdicons.sty
    trunk/Master/tlpkg/tlpsrc/pfdicons.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/pfdicons/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pfdicons/README.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pfdicons/README.txt	2021-07-24 20:46:11 UTC (rev 60037)
@@ -0,0 +1,22 @@
+# The pfdicons package
+
+Copyright 2021 Aaron Drews.
+
+Contact: <adrews at ucsd.edu>
+
+Current version: 1.0, 2021/07/23
+
+
+## Abstract
+
+The `pfdicons` package provides TikZ shapes to represent commonly encountered unit operations for depiction in process flow diagrams (PFDs) and, to a lesser extent, process and instrumentation diagrams (PIDs). The package was designed with undergraduate chemical engineering students and faculty in mind, and the number of units provided should cover--in Turton's estimate--about 90 percent of all fluid processing operations.
+
+
+## Licensing 
+
+The `pfdicons` package is covered by the LaTeX Project Public License (LPPL), version 1.3c or later. The latest version can be found at <http://www.latex-project.org/lppl.txt>.
+
+
+## Documentation
+
+The documentation of the package can be found in `pfdicons-doc.pdf`, provided together with its source code `pfdicons-doc.tex`. A log of changes to the package is provided in `pfdicons-changelog.pdf`, which is provided together with its source code `pfdicons-changelog.tex`.
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/pfdicons/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf	2021-07-24 14:14:14 UTC (rev 60036)
+++ trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf	2021-07-24 20:46:11 UTC (rev 60037)

Property changes on: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.tex	2021-07-24 20:46:11 UTC (rev 60037)
@@ -0,0 +1,21 @@
+\documentclass{article}
+\usepackage[margin=1in]{geometry}
+
+\title{Changelog for \texttt{pfdicons} package}
+\author{Aaron Drews\\\texttt{adrews at ucsd dot edu}}
+\date{\today}
+
+\begin{document}
+	\maketitle
+	
+	\begin{description}
+	\item[Version 1.0, 2021/07/23:] Initial release
+		
+	\begin{itemize}
+		\item Package file: pfdicons.sty
+		\item Primary files: README.md, pfdicons-doc.tex, pfdicons-changelog.tex
+		\item Derived files: pfdicons-doc.pdf, pfdicons-changelog.pdf.
+	\end{itemize}
+		
+	\end{description}	
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-changelog.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf	2021-07-24 14:14:14 UTC (rev 60036)
+++ trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf	2021-07-24 20:46:11 UTC (rev 60037)

Property changes on: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.tex	2021-07-24 20:46:11 UTC (rev 60037)
@@ -0,0 +1,3809 @@
+\documentclass[11pt]{article}
+\usepackage[margin=1in]{geometry}
+\usepackage{tikz, stix2, inconsolata, ifthen, lipsum, array, xspace, listings, booktabs, adjustbox, longtable, enumitem, amsmath}
+\usepackage[hidelinks, colorlinks=true, linkcolor=red]{hyperref}
+\usetikzlibrary{positioning, shapes, arrows.meta, matrix, calc, intersections, spath3, plotmarks, fit, decorations.pathmorphing}
+\usepackage{pfdicons}
+
+\definecolor{LightGray}{gray}{0.93}
+\lstset{
+	language=[LaTeX]TeX,
+	texcsstyle=*\bfseries, 
+	commentstyle=\color{gray}\ttfamily,
+	emph={draw, node, path, coordinate}, emphstyle=\bfseries,
+	tabsize=3,
+	numbers=left,
+	breaklines=true,
+	backgroundcolor=\color{LightGray},
+	basicstyle=\footnotesize\ttfamily,
+	xleftmargin=5ex,
+	xrightmargin=4ex}
+\lstMakeShortInline|
+
+%\input{pfdicons.sty}
+
+\newcommand\Tikz{Ti\textit{k}Z\xspace}
+\newcommand\redtt[1]{{\color{red}\texttt{#1}}}
+\newcommand\boldtt[1]{\textbf{\texttt{#1}}}
+
+
+\title{The \boldtt{pfdicons} Package: Documentation}
+\author{\Large Aaron Drews\\ \texttt{adrews at ucsd.edu}}
+\date{v1.0 from \today}
+\setcounter{tocdepth}{2}
+
+\begin{document}
+\maketitle
+
+\tableofcontents
+
+	
+\section{Introduction}
+This package provides \Tikz shapes and a few supporting functions to draw icons and streams for process flow diagrams (PFDs) in chemical engineering, and to a lesser extent process and instrumentation diagrams (PIDs) in the same field. Unit operations provided by this package are expected to cover--in Turton's estimate--about 90\% of fluid processing systems. 
+
+This package was developed to support students and faculty in undergraduate chemical engineering courses where excessive detail and customization are not necessary to convey meaning, as opposed to professionals who may require more customization than this package currently provides. Examples from several standard textbooks in undergraduate chemical engineering have been reproduced in the Examples section to illustrate the applicability of this package. A visual summary of all process units is provided at the end of this document as a quick reference.
+
+\section{Usage}
+To use this package simply provide
+\begin{lstlisting}[numbers=none]
+\usepackage{tikz}
+\usepackage{pfdicons}
+\end{lstlisting}
+in your preamble. The |tikz| package must be loaded first. The |pfdicons| package automatically loads the |ifthen| package as well as the following \Tikz libraries: |positioning|, |shapes|, |arrows.meta|, and |spath3|. Most shapes provided by the package are drawn within a |tikzpicture| 
+environment using the basic syntax
+\begin{lstlisting}[numbers=none]
+\begin{tikzpicture}
+	\node[<shape>] {};
+\end{tikzpicture}
+\end{lstlisting}
+where |<shape>| is the desired process unit. Like most \Tikz shapes the icons provided by |pfdicons| can be scaled, rotated, and colored in the usual ways:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\node[basic hx] at (0,0) {};
+	\node[basic hx, draw=blue] at (1,0) {};
+	\node[basic hx, draw=red, fill=yellow] at (0,-1) {};
+	\node[basic hx, scale=0.75, rotate=90, anchor=center] at (1,-1) {};				
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\node[basic hx] at (0,0) {};
+				\node[basic hx, draw=blue] at (1,0) {};
+				\node[basic hx, draw=red, fill=yellow] at (0,-1) {};
+				\node[basic hx, scale=0.75, rotate=90, thick] at (1,-1) {};				
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+Two additional PGF keys are available for some process units: |unit int| which modifies the interior contents of the process unit, and |unit ext| which modifies the exterior of the process unit.\footnote{A few other keys are available for drawing streams which are introduced later.} These keys can be used as
+\begin{lstlisting}[numbers=none]
+\node[<shape>, unit int=<intopt>, unit ext=<extopt>] {};
+\end{lstlisting}
+where |<intopt>| and |<extopt>| are interior and exterior options specific to the process unit. For most process units both keys can be used to combine effects. For example, the |basic hx| shape drawn above has keys |U tube| and |stems| which can be combined as follows:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\node[basic hx] at (0,0) {};
+	\node[basic hx, unit ext=util] at (1,0) {};
+	\node[basic hx, unit fill=U tube] at (0,-1) {};
+	\node[basic hx, unit fill=U tube, unit ext=util] at (1,-1) {};		
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\node[basic hx] at (0,0) {};
+				\node[basic hx, unit ext=util] at (1,0) {};
+				\node[basic hx, unit int=U tube] at (0,-1) {};
+				\node[basic hx, unit int=U tube, unit ext=util] at (1,-1) {};		
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+However, unlike ``standard'' nodes \textit{the curly braces should always be empty}; that is, text cannot be directly included as part of the node (this prohibition includes keys like |label|). Annotations and labels of shapes from |pfdicons| must be included as separate nodes:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	% No:
+	% \node[basic hx] {H-101};
+	
+	% Yes:
+	\node[basic hx] (g) {};
+	\node[right] at (g.east) {H-101};				
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				% No:
+				% \node[basic hx] {H-101};
+				
+				% Yes:
+				\node[basic hx] (g) {};
+				\node[right] at (g.east) {H-101};				
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+All process units have the standard cardinal and off-cardinal anchors which can be accessed using the standard \Tikz anchor notation such as |f.north| or |mycolumn.south east|. Some units have additional anchors on half-cardinal points (\textit{e.g.}, |north north east| or |east south east|) or special process unit features (\textit{e.g.}, |east jacket| or |actuator|). All compass anchors of custom shapes provided by the |pfdicons| package are \textbf{aliased with abbreviated versions} (\textit{e.g.}, |n| for |north|, |ene| for |east north east|) to allow for shortened code. Full anchor names can always be used to provide syntax consistency with core \Tikz.
+
+\section{Process units}
+\subsection{Reactors}
+\subsubsection{Tank reactor}
+\begin{lstlisting}[numbers=none]
+\node[tank reactor] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+		\node[tank reactor] {};	
+		&
+		\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+		\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+		\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+		\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+		\node[left] at (-10mm,0mm) {\color{blue!20}0};
+		\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+		\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+		\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+		\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+		\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+		\node[tank reactor] {};
+				&
+		\node[tank reactor, scale=1.5] (f) {};
+		
+		\foreach \anchor/\pos in {
+			n/above, 
+			e/right, 
+			w/left, 
+			s/below}
+		{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+			\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+		\foreach \anchor/\pos in {
+			ne/right, 
+			nw/left, 
+			se/right, 
+			sw/left,
+			nne/above right, 
+			nnw/above left, 
+			sse/below right, 
+			ssw/below left,
+			ese/right, 
+			wsw/left}
+		{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+		\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+
+		\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+		\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |tank reactor| shape provides a cylindrical tank reactor, also referred to as a stirred-tank reactor, continuous stirred-tank reactor (CSTRs), or autoclave. The |center| anchor is offset slightly to accommodate fill and interior options as described below. Several key modifiers are available:
+
+\begin{center}
+	\begin{longtable}{p{1.2in}p{2.5in}c}
+		\caption{Key-value pairs for the \boldtt{tank reactor} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{tank reactor} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit int=stirred} & Adds a rounded stirrer with motor and 
+		mixing blade. Three additional anchors are specific to this option: 
+		\redtt{west motor}, \redtt{north motor}, and \redtt{east motor}. & 
+		\adjustbox{valign=t}{
+		\begin{tikzpicture}
+			\node[tank reactor, unit int=stirred] (f) {};
+			\node[tank reactor, unit int=stirred, above=of f.north] {};
+			\foreach \anchor/\pos in {
+				west motor/left,
+				north motor/above,
+				east motor/right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+
+		\end{tikzpicture}} \\ 
+		& & \\
+		
+		\texttt{unit int=liquid} & Adds wavy lines from |west| to |east| to 
+		indicate a liquid surface. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tank reactor, unit int=liquid] {};				
+		\end{tikzpicture}} \\ 
+		& & \\
+		
+		\texttt{unit int=stirred} \texttt{liquid} & A combination of |unit int=stirred| and |unit int=liquid|.
+		& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tank reactor, unit int=stirred liquid] {};				
+		\end{tikzpicture}} \\ 
+		& & \\
+		
+		\texttt{unit ext=lower} \texttt{jacket} & Adds a jacket around the lower portion of the reactor. Two additional anchors are specific to this option: \redtt{west jacket} and \redtt{east jacket}. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tank reactor, unit ext=lower jacket] (f) {};
+				\foreach \anchor/\pos in {
+					west jacket/left,
+					east jacket/right}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}
+				
+				\node[align=left, anchor=west] at (f.east jacket) {\footnotesize\texttt{east}\\ \footnotesize\texttt{jacket}};
+				\node[align=right, anchor=east] at (f.west jacket) {\footnotesize\texttt{west}\\ \footnotesize\texttt{jacket}};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit ext=side} \texttt{jacket} & Adds a jacket around the side of the reactor. Several additional anchors available: \redtt{west jacket}, \redtt{north west jacket}, \redtt{south west jacket}, \redtt{east jacket}, \redtt{north east jacket}, and \redtt{south east jacket}. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture} [font=\footnotesize\ttfamily]
+				\node[tank reactor, unit ext=side jacket] (f) {};
+				\foreach \anchor in {
+					west jacket,
+					east jacket,
+					north west jacket,
+					north east jacket,
+					south west jacket,
+					south east jacket}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}
+				
+				\node[align=left, anchor=west] at (f.east jacket) {east jacket};
+				\node[align=left, anchor=south west] at (f.north east jacket) {north east\\[-3pt]jacket};
+				\node[align=left, anchor=north west] at (f.south east jacket) {south east\\[-3pt]jacket};
+				\node[align=right, anchor=east] at (f.west jacket) {west jacket};
+				\node[align=right, anchor=south east] at (f.north west jacket) {north west\\[-3pt]jacket};
+				\node[align=right, anchor=north east] at (f.south west jacket) {south west\\[-3pt]jacket};
+
+		\end{tikzpicture}} \\
+	\end{longtable}
+\end{center}
+
+
+
+
+\subsubsection{Tube reactor}
+\begin{lstlisting}{numbers=none}
+\node[tube reactor] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[tube reactor] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[tube reactor] {}; 
+			&
+			\node[tube reactor, scale=1.8] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |tube reactor| shape provides a horizontal cylinder with curved sides to be used for such reactors as plug flow reactors, packed bed reactors, fixed bed reactors, tubular reactors, and so forth. Several key-value pairs can be provided to indicate common fills and utility features:
+\begin{center}
+	\begin{longtable}{p{1.5in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{tube reactor} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{tube reactor} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit int=packed} & Adds a cross representing a packed, dumped, or random fill within the reactor.  & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tube reactor, unit int=packed] {};
+		\end{tikzpicture}} \\ 
+		& & \\
+		\texttt{unit int=fixed} & Adds angled lines representing a fixed bed.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tube reactor, unit int=fixed] {};
+		\end{tikzpicture}} \\
+		& & \\
+		\texttt{unit int=tubular} & Adds horizontal lines representing tubes for (\textit{e.g.}) shell-and-tube reactors, double-pipe reactors, and so forth.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[tube reactor, unit int=tubular] {};
+		\end{tikzpicture}} \\
+	
+		& & \\
+		\texttt{unit ext=cis shell} & Adds two shell-side stems, both on the north side with anchors \redtt{west shell} and \redtt{east shell}. Stems can be moved to the south side by rotating (|rotate=180|) or scaling (|yscale=-1|) the node. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}[font=\footnotesize\ttfamily]
+				\node[tube reactor, unit ext=cis shell] (f) {};
+				\foreach \anchor in {west shell, east shell}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}
+				\node[align=right, anchor=south east] at (f.west shell) {west\\[-3pt]shell};
+				\node[align=left, anchor=south west] at (f.east shell) {east\\[-3pt]shell};
+		\end{tikzpicture}} \\
+	
+		& & \\ 
+		\texttt{unit ext=trans shell} & Adds two shell-side stems, one on the north side and one on the south side, with anchors \redtt{north shell} and \redtt{south shell}. Stem locations can be swapped by scaling the node (|yscale=-1| or |xscale=-1|). & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}[font=\footnotesize\ttfamily]
+				\node[tube reactor, unit ext=trans shell] (f) {};
+				\foreach \anchor in {north shell, south shell}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}	
+				\node[align=right, anchor=south east] at (f.north shell) {north\\[-3pt]shell};
+				\node[align=left, anchor=north west] at (f.south shell) {south\\[-3pt]shell};
+		\end{tikzpicture}} \\
+	\end{longtable}
+\end{center}
+
+
+
+
+
+
+\subsection{Heat exchangers}
+\subsubsection{Basic heat exchanger}
+\begin{lstlisting}[numbers=none]
+\node[basic hx] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[basic hx] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[basic hx] {};
+			&
+			\node[basic hx, scale=1.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |basic hx| shape provides a circle with a jagged interior line and represents a generic heat exchange unit. Only the four cardinal and intercardinal anchors are used; the half-cardinals |nnw|, |nne|, |ssw|, and |sse| anchors are not used. Protrusions from the inner ``tube'' line can be added to provide additional indication of tube-side fluids, typically to indicate utility fluids (hence the |util| value). Additional anchors can be used to place labels at ends of the protrusions.
+\begin{center}
+	\begin{longtable}{p{1.5in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{basic hx} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{basic hx} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit ext=util} & Adds protrusions from the inner tube, typically to indicate utility fluids. Additional anchors \redtt{south util} and \redtt{north util} are available at the terminals. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[basic hx, unit ext=util] (f) {};
+				\foreach \anchor/\pos in {
+					north util/above,
+					south util/below}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\ 
+		& & \\
+		\texttt{unit int=U tube} & Modifies interior to a generic U-tube orientation with both tube points on the same shell side. The |south west| and |south east| anchors are located at these tube points. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[basic hx, unit int=U tube] {};
+		\end{tikzpicture}} \\
+		& & \\
+		\texttt{unit int=U tube,}\newline \texttt{unit ext=util} & Modifies interior to U-tube orientation and adds protrusions, typically to indicate utility fluids. Additional anchors \redtt{west util} and \redtt{east util} are available at the terminals. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[basic hx, unit int=U tube, unit ext=util] (f) {};
+				\foreach \anchor/\pos in {
+					west util/below left,
+					east util/below right}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\
+	\end{longtable}
+\end{center}
+
+
+\subsubsection{Shell and tube heat exchanger}
+\begin{lstlisting}[numbers=none]
+\node[shell and tube hx] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[shell and tube hx] (g) {};
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[shell and tube hx] {};
+			&
+			\node[shell and tube hx, scale=1.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |shell and tube hx| shape provides a rectangle with an inner set of horizontal lines representing a shell and tube heat exchanger. Keys can modify the appearance to provide shell-side stems or modify the tube ends to represent two-pass or four-pass arrangements.
+\begin{center}
+	\begin{longtable}{p{1.5in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{shell and tube hx} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{shell and tube hx} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit int=two pass} & Adds a horizontal line on the west shell side to indicate a two-pass heat exchanger.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[shell and tube hx, unit int=two pass] (f) {};
+		\end{tikzpicture}} \\ 
+		& & \\
+		\texttt{unit int=four pass} & Adds two horizontal line on the west shell side and one on the east to indicate a four-pass heat exchanger.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[shell and tube hx, unit int=four pass] (f) {};
+		\end{tikzpicture}} \\ 
+		& & \\
+		
+		\texttt{unit ext=cis shell} & Adds two shell-side stems, both on the north side with anchors \redtt{west shell} and \redtt{east shell}. Stems can be moved to the south side by rotating (|rotate=180|) or scaling (|yscale=-1|) the node. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}[font=\footnotesize\ttfamily]
+				\node[shell and tube hx, unit ext=cis shell] (f) {};
+				\foreach \anchor in {west shell, east shell}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}
+				\node[align=right, anchor=south east] at (f.west shell) {west\\[-3pt]shell};
+				\node[align=left, anchor=south west] at (f.east shell) {east\\[-3pt]shell};
+		\end{tikzpicture}} \\
+		
+		& & \\ 
+		\texttt{unit ext=trans shell} & Adds two shell-side stems, one on the north side and one on the south side, with anchors \redtt{north shell} and \redtt{south shell}. Stem locations can be swapped by scaling the node (|yscale=-1| or |xscale=-1|). & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}[font=\footnotesize\ttfamily]
+				\node[shell and tube hx, unit ext=trans shell] (f) {};
+				\foreach \anchor in {north shell, south shell}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}	
+				\node[align=right, anchor=south east] at (f.north shell) {north\\[-3pt]shell};
+				\node[align=left, anchor=north west] at (f.south shell) {south\\[-3pt]shell};
+		\end{tikzpicture}} \\
+	\end{longtable}
+\end{center}
+
+
+
+\subsubsection{Plate heat exchanger}
+\begin{lstlisting}[numbers=none]
+\node[plate hx] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[plate hx] {};
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[plate hx] {};
+			&
+			\node[plate hx, scale=1.8] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |plate hx| shape provides a rectangle with an inner set of vertical lines representing a plate-and-frame heat exchanger. This unit has no |key=value| pairs for additional modification.
+
+
+\subsubsection{Fired exchanger}
+\begin{lstlisting}[numbers=none]
+\node[fired hx] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[fired hx] {};
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[fired hx] {};
+			&
+			\node[fired hx, scale=1] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/right, 
+				sw/left,
+				nne/right, 
+				nnw/left, 
+				sse/below right, 
+				ssw/below left,
+				ese/below right, 
+				wsw/below left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |fired hx| shape provides a square unit with tapered chimney representing a fired heat exchanger. A horizontal through-line represents the process tube; a small circular icon at the bottom indicates the combustion region of the heat exchanger. The default number of process tubes is one (|unit int=single| or omitted) but additional process tubes can be added using the |unit int| key. Inlets and outlets will shift to correspond to half-cardinal anchors as shown below.
+\begin{center}
+	\begin{longtable}{p{1.5in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{fired hx} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{fired hx} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit int=double} & Provides two tubes roughly corresponding to 
+		the radiative and convective zones. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[fired hx, unit int=double] (f) {};
+				\foreach \anchor/\pos in {
+					ese/right, 
+					wsw/left,
+					wnw/left,
+					ene/right}
+				{\node[circle, draw, blue, fill=blue, inner sep=0pt, minimum size=2pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\ 
+		& & \\
+		\texttt{unit int=triple} & Provides three tubes roughly corresponding to a radiative zone and two convective zones. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[fired hx, unit int=triple] (f) {};
+				\foreach \anchor/\pos in {
+					nne/right, 
+					nnw/left, 
+					ese/right, 
+					wsw/left,
+					wnw/left,
+					ene/right}
+				{\node[circle, draw, blue, fill=blue, inner sep=0pt, minimum size=2pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\
+	\end{longtable}
+\end{center}
+
+
+\subsection{Separation units}
+\subsubsection{Column}
+\begin{lstlisting}[numbers=none]
+\node[column] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[column] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -15mm) grid (10mm, 15mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -15mm) to (0mm, 15mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[left] at (-10mm,15mm) {\color{blue!20}$+15$};
+			\node[left] at (-10mm,-15mm){\color{blue!20}$-15$};
+			\node[anchor=north east] at (12mm,-15mm) {\color{blue!20}mm}; 
+			\node[column] {};
+			&
+			\node[column] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left,
+				nne/above right, 
+				nnw/above left, 
+				sse/below right, 
+				ssw/below left,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |column| shape provides a vertical, elongated cylinder as a generic separation column. The default fill is empty but several |key=value| pairs are provided to represent the most common separation units. Several additional anchors and keys are available based on these settings.
+
+\begin{center}
+	\begin{longtable}{p{1.75in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{column} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+			
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{column} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+			
+		\bottomrule
+		\endfoot
+			
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit ext=simple hx} & Provides stylized representation of condenser and reboiler along with anchors \redtt{distillate} and \redtt{bottoms} for stream connections. These anchors always exist but coincide with |north east| and |south east| when the |simple hx| key is omitted.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit ext=simple hx] (f) {};
+				\foreach \anchor/\pos in {
+					distillate/right,
+					bottoms/right}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\ 
+	
+		& & \\
+		\texttt{unit int=tray}\newline \texttt{unit int=dashed tray} & Dashed, horizontal lines. Dashes will always have three segments and two openings.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit int=tray] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=weir tray} & Solid, horizontal lines with small risers to 
+		represent tray weirs.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit int=weir tray] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=numbered tray}\newline\newline\hspace*{1em}\textit{associated keys:}\newline\hspace*{2em}\texttt{top tray=99}\newline\hspace*{2em}\texttt{feed tray=00}\newline\hspace*{2em}\texttt{bottom tray=22} & Dashed, horizontal lines at top, feed, and bottom trays. Associated keys |top tray|, |feed tray|, and |bottom tray| can be used to indicate tray numbers \textbf{if column is not transformed}. If column is transformed then associated keys can be omitted and anchors \redtt{feed tray}, \redtt{top tray}, and \redtt{bottom tray} used for placement of additional text nodes.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit int=numbered tray, top tray=99, feed tray=00, 
+				bottom tray=22] (f) {};
+				\foreach \anchor/\pos in {
+					top tray/below,
+					feed tray/below,
+					bottom tray/below}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=packed} & Large cross symbol indicating random or dumped fill (packing).& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit int=packed] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=double packed} & Two sections of random or dumped fill (packing) separated by a small, central gap.& 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[column, unit int=double packed] (f) {};
+		\end{tikzpicture}} \\
+\end{longtable}
+\end{center}
+
+
+
+
+
+
+\subsubsection{Vessel}
+\begin{lstlisting}[numbers=none]
+\node[vessel] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[vessel] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[vessel] {};
+			&
+			\node[vessel, scale=1.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left,
+				nne/above right, 
+				nnw/above left, 
+				sse/below right, 
+				ssw/below left,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |vessel| shape provides a vertical cylinder as a generic vessel. Such a vessel can be, for example, down-scaled and rotated 90${^\circ}$ can represent a product tank or a phase separator after a condenser. The default fill is empty but several |key=value| pairs are provided to represent two common vapor-liquid units as well as liquid accumulation tanks. Several additional anchors are available based on these settings.
+
+\begin{center}
+	\begin{longtable}{p{1.75in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{vessel} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{vessel} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		
+		\texttt{unit int=liquid} & Adds wavy lines across the middle of the vessel to indicate a liquid level. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[vessel, unit int=liquid] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int = liquid rotated} & Adds wavy lines down the center of the vessel to indicate a liquid level. This key is intended to be used with a rotated node such as
+		\begin{lstlisting}[numbers=none]
+\node[vessel, rotate=90, unit int=liquid rotated] {};
+		\end{lstlisting}
+		 & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[vessel, rotate=90, unit int=liquid rotated] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=phase sep} & Adds a knock-down element near the |west| anchor and a dashed, horizontal line near the top of the vessel to indicate a demister pad. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[vessel, unit int=phase sep] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit ext=simple hx} & Adds a simplified heat transfer element to the bottom portion of the vessel. Two additional anchors, \redtt{north hx} and \redtt{south hx}, are located at the exterior points of the heat exchanger tubes. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[vessel, unit ext=simple hx] (f) {};
+				\foreach \anchor/\pos in {
+					north hx/right,
+					south hx/right}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\ 
+		
+		& & \\
+	\end{longtable}
+\end{center}
+
+
+
+
+\subsection{Fluid transport}
+\subsubsection{Centrifugal pump}
+\begin{lstlisting}[numbers=none]
+\node[centrifugal pump] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[centrifugal pump] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[centrifugal pump] {};
+			&
+			\node[centrifugal pump, scale=1.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |centrifugal pump| shape provides a circular element with a triangular base to represent a centrifugal pump. An additional half-circle can be added using the |unit int| key to indicate the pump inlet and a rectangular outlet direction can be added using the |unit ext| key.
+
+\begin{center}
+	\begin{longtable}{p{1.75in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{centrifugal pump} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{centrifugal pump} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit int=inlet west} & Adds a half-circle around the |center| anchor to accept an inlet stream to enter from the west. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit int=inlet west] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=inlet east} & Adds a half-circle around the |center| anchor to accept an inlet stream to enter from the east. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit int=inlet east] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=inlet north} & Adds a half-circle around the |center| anchor to accept an inlet stream to enter from the north. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit int=inlet north] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit int=inlet south} & Adds a half-circle around the |center| anchor to accept an inlet stream to enter from the south. Note that there is no means of removing the triangular base; such an inlet stream should be drawn as going through the base. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit int=inlet south] (f) {};
+		\end{tikzpicture}} \\
+		& & \\
+		
+		\texttt{unit ext=outlet east} & Adds a rectangular protrusion facing east to represent an outlet. Also adds the \redtt{outlet} anchor in the center of the outlet box. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit ext=outlet east] (f) {};
+				\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.outlet) {};
+				\node[right] at (f.outlet) {\footnotesize\texttt{outlet}};
+		\end{tikzpicture}} \\
+		
+		& & \\
+		\texttt{unit ext=outlet west} & Adds a rectangular protrusion facing west to represent an outlet. Also adds the \redtt{outlet} anchor in the center of the outlet box. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit ext=outlet west] (f) {};
+				\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.outlet) {};
+				\node[left] at (f.outlet) {\footnotesize\texttt{outlet}};
+		\end{tikzpicture}} \\
+		
+		& & \\
+		\texttt{unit ext=outlet north east} & Adds a rectangular protrusion facing north on the east side of the pump to represent an outlet. Also adds the \redtt{outlet} anchor in the center of the outlet box. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit ext=outlet north east] (f) {};
+				\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.outlet) {};
+				\node[above] at (f.outlet) {\footnotesize\texttt{outlet}};
+		\end{tikzpicture}} \\
+		
+		& & \\
+		\texttt{unit ext=outlet north west} & Adds a rectangular protrusion facing north on the west side of the pump  to represent an outlet. Also adds the \redtt{outlet} anchor in the center of the outlet box. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[centrifugal pump, unit ext=outlet north west] (f) {};
+				\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.outlet) {};
+				\node[above] at (f.outlet) {\footnotesize\texttt{outlet}};
+		\end{tikzpicture}} \\
+		& & \\
+
+	\end{longtable}
+\end{center}
+
+
+
+
+\subsubsection{Reciprocating pump}
+\begin{lstlisting}[numbers=none]
+\node[reciprocating pump] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[reciprocating pump] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[reciprocating pump] {};
+			&
+			\node[reciprocating pump, scale=1] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |reciprocating pump| shape provides two square elements--a pump head and motor--connected by a simple shaft. Most anchors are placed relative to the pump head. This unit has no |key=value| pairs for additional modification.
+
+
+\subsubsection{Compressor}
+\begin{lstlisting}[numbers=none]
+\node[compressor] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[compressor] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[compressor] {};
+			&
+			\node[compressor, scale=2.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/left, 
+				se/below right, 
+				sw/left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |compressor| shape provides a quadrilateral to represent a gas-phase compressor. This unit has no |key=value| pairs for additional modification. If mirrored along the $x$-axis (\textit{e.g.}, by using something like |xscale=-1| or |rotate=90|) then the |compressor| shape is identical to the |turbine| shape but with different anchor points.
+
+
+
+\subsubsection{Turbine}
+\begin{lstlisting}[numbers=none]
+\node[turbine] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[turbine] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[turbine] {};
+			&
+			\node[turbine, scale=2.5] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/above left, 
+				se/right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |turbine| shape provides a quadrilateral to represent a gas-phase turbine. This unit has no |key=value| pairs for additional modification. If mirrored along the $x$-axis (\textit{e.g.}, by using something like |xscale=-1| or |rotate=90|) then the |turbine| shape is identical to the |compressor| shape but with different anchor points.
+
+
+
+
+
+\section{Streams}
+
+
+\subsection{Feed terminal}
+\begin{lstlisting}[numbers=none]
+\node[feed] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[feed] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[feed] {};
+			&
+			\node[feed, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.stream) {};
+			\node[right] at (f.stream) {\footnotesize\texttt{\textbf{e}} \textit{or} \redtt{stream}};
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |feed| shape provides a half-filled circle representing a process feed point. The special anchor \redtt{stream} corresponds to the |east| anchor and is provided as an optional method to define stream starting points. This unit has no |key=value| pairs for additional modification.
+
+
+
+
+\subsection{Product terminal}
+\begin{lstlisting}[numbers=none]
+\node[product] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[product] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[product] {};
+			&
+			\node[product, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.stream) {};
+			\node[left] at (f.stream) {\footnotesize \redtt{stream} \textit{or} \boldtt{w}};
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |product| shape provides a half-filled circle representing a process product point. The special anchor \redtt{stream} corresponds to the |west| anchor and is provided as an optional method to define stream ending points. This unit has no |key=value| pairs for additional modification.
+
+
+
+\subsection{Stream numbers}
+\begin{lstlisting}[numbers=none]
+\node[sid] {99};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[sid] {99};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[sid] {99};
+			&
+			\node[sid, scale=2] (f) {99};		
+			\foreach \anchor/\pos in {
+				north/above, 
+				east/right, 
+				west/left, 
+				south/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				north east/above right, 
+				north west/above left, 
+				south east/below right, 
+				south west/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |sid| (read ``ess eye dee'' for ``stream identification'') shape provides a modified |diamond| shape from the |shapes| library for the purpose of labeling streams. The anchors \textbf{are not aliased} with their abbreviations because \textit{(a)} this is not a custom shape of the |pfdicons| package and \textit{(b)} the |sid| shape is typically used within a line (stream) without accessing its anchors. The fill of |sid| is white which allows it to be conveniently placed within a stream-drawing command such as
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- node[sid] {00} (2,0);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- node[sid] {00} (2,0);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+The |sid| shape has no |key=value| pairs to modify its appearance but you can modify the appearance by redefining its |tikzstyle|, which by default is
+\begin{lstlisting}[numbers=none]
+\tikzstyle{sid} = [diamond, draw, solid, fill=white, text badly centered, inner sep=1pt, font=\footnotesize]
+\end{lstlisting}
+Modifications to this definition can occur either in the preamble (to affect all drawings) or within the document (to affect individual drawings or lines). For example, if you'd like to use circular identifiers with a blue fill and more space around bigger numbers then you could do something like this:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- node[sid] {1} (2,0);
+	
+	\tikzstyle{sid} = [circle, draw, solid, fill=blue!15, text badly centered, inner sep=3pt, font=\tiny]
+	
+	\draw[->] (0,-1) -- node[sid] {2} (2,-1);
+	
+	\draw[->] (0,-2) -- node[sid] {3} (2,-2);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- node[sid] {1} (2,0);
+				
+				\tikzstyle{sid} = [circle, draw, solid, 
+				fill=blue!15, text badly centered,
+				inner sep=3pt, font=\tiny]
+				
+				\draw[->] (0,-1) -- node[sid] {2} (2,-1);
+				
+				\draw[->] (0,-2) -- node[sid] {3} (2,-2);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+You can also modify individual parameters while retaining others by passing additional modifiers within the |sid| node usage, like this:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- node[sid] {1} (2,0);
+			
+	\draw[->] (0,-1) -- node[sid, rectangle, fill=red!20] {2} (2,-1);
+		
+	\draw[->] (0,-2) -- node[sid] {3} (2,-2);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- node[sid] {1} (2,0);
+				
+				\draw[->] (0,-1) -- node[sid, rectangle, fill=red!20] {2} (2,-1);
+				
+				\draw[->] (0,-2) -- node[sid] {3} (2,-2);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+
+\subsection{Stream arrow tips}
+The arrow tip is set using the standard TikZ syntax
+\begin{lstlisting}[numbers=none]
+\tikzset{>=<tip style>}
+\end{lstlisting}
+When loaded the |pfdicons| package sets |<tip style>| to |Triangle| as
+\begin{lstlisting}[numbers=none]
+\tikzset{>=Triangle}
+\end{lstlisting}
+You can change this setting in the preamble or within the document itself to whatever arrow tip you prefer (see \S16.5 in the PGF manual for a summary of arrow tips). For example,
+\begin{center}
+\begin{minipage}{5in}
+\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- (1,0);
+	
+	\tikzset{>=Latex[open]} 
+	\draw[->] (0,-0.5) -- (1,-0.5);	
+	\draw[->] (0,-1) -- (1,-1);
+\end{tikzpicture}
+\end{lstlisting}
+\end{minipage}\hspace{0.25in}
+\begin{minipage}{1in}
+\begin{center}
+	\begin{tikzpicture}
+		\draw[->] (0,0) -- (1,0);
+		\tikzset{>=Latex[open]} % Latex-style arrow tip
+		\draw[->] (0,-0.5) -- (1,-0.5);
+		\draw[->] (0,-1) -- (1,-1);
+	\end{tikzpicture}
+\end{center}
+\end{minipage}
+\end{center}
+You can also make modifications to individual arrow tips simply by using a different tip for that particular arrow:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- (1,0);
+	\draw[-{Stealth[red]}] (0,-0.5) -- (1,-0.5);
+	\draw[->] (0,-1) -- (1,-1);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- (1,0);
+				\draw[-{Stealth[red]}] (0,-0.5) -- (1,-0.5);
+				\draw[->] (0,-1) -- (1,-1);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+
+\subsection{Stream crossings}
+When two streams cross it's desirable to indicate their status as distinct streams to avoid confusion with junctions or mixing points. Consider the following example:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0.5) -- node[sid, pos=0.25]{1} (2,0.5);
+	\draw[->] (0,0) -- node[sid]{2} (1.5,0) -- (1.5,1) -- (2,1);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0.5) -- node[sid, pos=0.25]{1} (2,0.5);
+				\draw[->] (0,0) -- node[sid]{2} (1.3,0) -- (1.3,1) -- (2,1);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+It may not be immediately obvious that the intersection between streams 1 and 2 is not a four-way pipe junction with two inlets and two outlets. To make such distinction a \textit{bridge} can be used, most commonly in the form of a break in one stream, an arc of one stream, or a combination of a break and an arc. The |pfdicons| package provides a |bridge| style which uses the |spath3| package to detect crossings and create bridges. The workflow to use the |bridge| style is as follows:
+\begin{enumerate}
+	\item Identify that a crossing has occurred (\textit{e.g.}, by completing a drawing as done above). Determine which stream is to be drawn continuously (the |over| stream) and which stream is to be broken (the |under| stream).
+	\item Re-define the original streams using the |path| operation, removing all decorations.
+	\item Use the |bridge| key with |tikzset| to set the |over| and |under| paths as |\tikzset{bridge={over}{under}}|.
+	\item Re-draw the streams with a |draw| operation, replacing any previously removed decorations.
+\end{enumerate}
+To demonstrate this process on the previous example we select stream 1 as the |over| stream (Turton recommends horizontal streams be continuous and vertical streams be broken). The remaining steps are completed as follows:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	% \draw[->] (0,0.5) -- node[sid, pos=0.25]{1} (2,0.5);
+	% \draw[->] (0,0) -- node[sid]{2} (1.5,0) -- (1.5,1) -- (2,1);
+	\path[spath/save=over] (0,0.5) -- (2,0.5);
+	\path[spath/save=under] (0,0) -- (1.3,0) -- (1.3,1) -- (2,1);
+	\tikzset{bridge={over}{under}}
+	\draw[->, spath/use=over] node[sid, pos=0.15]{1};
+	\draw[->, spath/use=under] node[sid, pos=0.1]{2};
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\path[spath/save=over] (0,0.5) -- (2,0.5);
+				\path[spath/save=under] (0,0) -- (1.3,0) -- (1.3,1) -- (2,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] node[sid, pos=0.2]{1};
+				\draw[->, spath/use=under] node[sid, pos=0.1]{2};
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+Lines 4 and 5 define the original streams using the |path| operation. Line 6 sets the |bridge| key to identify the |over| and |under| stream (the names here could be anything as long as the first input is the ``over'' path and the second input is the ``under'' path). Lines 7 and 8 re-draw the streams with an appropriate \texttt{draw} operation, adding the stream labels as well. Notice that the positioning of the stream labels must be modified slightly from the original syntax; getting the labels \textit{precisely} where they were before the bridging operation can be challenging (but is usually not necessary).
+
+The bridge style can be modified by using |\tikzset| to set the value of two keys, |bridge gap| and |bridge radius|, as summarized below.
+\begin{center}
+	\begin{longtable}{p{1in}p{3in}c}
+		\caption{Key-value pairs for use with stream crossings}\\
+		\toprule
+		\texttt{key} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the use with stream crossings \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{bridge gap} & Adjusts the amount of space around a stream break. The default value is |4pt|. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[above] at (1,1) {\footnotesize\verb|\tikzset{bridge gap=0pt}|};
+				\tikzset{bridge gap=0pt}
+				\path[spath/save=over] (0,0.5) -- (2,0.5);
+				\path[spath/save=under] (0,0) -- (1,0) -- (1,1) -- (2,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] ;
+				\draw[->, spath/use=under] ;				
+		\end{tikzpicture}} \\ 
+		
+		& & \\
+		
+		& & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[above] at (1,1) {\footnotesize\verb|\tikzset{bridge gap=15pt}|};
+				\tikzset{bridge gap=15pt}
+				\path[spath/save=over] (0,0.5) -- (2,0.5);
+				\path[spath/save=under] (0,0) -- (1,0) -- (1,1) -- (2,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] ;
+				\draw[->, spath/use=under] ;				
+		\end{tikzpicture}} \\ 
+		
+		& & \\
+		
+		\texttt{bridge radius} & Adjusts the radius of an arc bridge. The default value is |0pt| which produces a straight line. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[above] at (1,1) {\footnotesize\verb|\tikzset{bridge radius=8pt}|};
+				\tikzset{bridge gap=4pt}
+				\tikzset{bridge radius=8pt}
+				\path[spath/save=over] (0,0.5) -- (2,0.5);
+				\path[spath/save=under] (0,0) -- (1,0) -- (1,1) -- (2,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] ;
+				\draw[->, spath/use=under] ;				
+		\end{tikzpicture}} \\ 
+		
+		& & \\
+		
+		& & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[above] at (1,1) {\footnotesize\verb|\tikzset{bridge radius=20pt}|};
+				\tikzset{bridge radius=16pt}
+				\path[spath/save=over] (0,0.5) -- (2,0.5);
+				\path[spath/save=under] (0,0) -- (1,0) -- (1,1) -- (2,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] ;
+				\draw[->, spath/use=under] ;				
+		\end{tikzpicture}} \\ 
+		
+		& & \\
+
+	\end{longtable}
+\end{center}
+
+\section{Control elements}
+
+\subsection{Valve}
+\begin{lstlisting}[numbers=none]
+\node[valve] {};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[valve] {};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[valve] {};
+			&
+			\node[valve, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |valve| shape provides two opposing triangles as a generic valve shape. Unlike most other shapes the fill color of a |valve| shape is white which allows it to be conveniently placed within a line-drawing operation such as
+\begin{center}
+	\begin{minipage}{4in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- node[valve] {} (2,0);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- node[valve] {} (2,0);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+Placement of the valve on the stream can be modified using the standard placement keys (\textit{e.g.}, |middle| or |near start|) or by the |pos=number| key. The valve can also be rotated to an arbitrary angle using the |rotate=degree| key. For example:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0) -- node[valve, near start] {} (2,0);
+	\draw[->] (0,-0.5) -- node[valve, near end] {} (2,-0.5);
+	\draw[->] (0,-1) -- node[valve, pos=0.4] {} (2,-1);
+	\draw[->] (0,-1.5) -- (1,-1.5) -- node[valve, rotate=90] {} (1,-2.5) -- ++(1,0);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0) -- node[valve, near start] {} (2,0);
+				\draw[->] (0,-0.5) -- node[valve, near end] {} (2,-0.5);
+				\draw[->] (0,-1) -- node[valve, pos=0.4] {} (2,-1);
+				\draw[->] (0,-1.5) -- (1,-1.5) --node[valve, rotate=90] {}
+				(1,-2.5) -- ++(1,0);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+
+A generic actuator can be added to the |valve| shape by using the |unit ext| key as summarized below.
+\begin{center}
+	\begin{longtable}{p{1.5in}p{3in}c}
+		\caption{Key-value pairs for the \boldtt{valve} shape.}\\
+		\toprule
+		\texttt{key=value} & Description & Example \\
+		\midrule
+		\endfirsthead
+		
+		\multicolumn{3}{c}{\tablename\ \thetable: Key-value pairs for the \boldtt{valve} shape \textit{(cont'd)}} \\
+		\midrule
+		\endhead
+		
+		\bottomrule
+		\endfoot
+		
+		\bottomrule
+		\endlastfoot
+		
+		\texttt{unit ext=actuator} & Adds a hemisphere-capped protrusion as an indicator of a generic actuation device. The \redtt{actuator} anchor is placed at the top of the hemisphere for electrical connections. & 
+		\adjustbox{valign=t}{
+			\begin{tikzpicture}
+				\node[valve, unit ext=actuator, scale=1.5] (f) {};
+				\foreach \anchor/\pos in {
+					actuator/above}
+				{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+					\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+		\end{tikzpicture}} \\ 
+	\end{longtable}
+\end{center}
+
+
+\subsection{Electrical instruments}
+\begin{lstlisting}[numbers=none]
+\node[elec] {XX};
+\end{lstlisting}
+\begin{figure}[h!]
+	\centering
+	\begin{tikzpicture}[line width=0.6pt]
+		\matrix[column sep=1cm, row sep=1cm, nodes={font=\footnotesize}]{%
+			\node[elec] {XX};	
+			&
+			\draw[help lines, blue!5, step=1mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[help lines, blue!10, step=5mm, ultra thin] (-10mm, -10mm) grid (10mm, 10mm);
+			\draw[red!20, thin] (-10mm,0mm) to (10mm, 0mm);
+			\draw[red!20, thin] (0mm, -10mm) to (0mm, 10mm);
+			\node[left] at (-10mm,0mm) {\color{blue!20}0};
+			\node[left] at (-10mm,5mm) {\color{blue!20}$+5$};
+			\node[left] at (-10mm,-5mm) {\color{blue!20}$-5$};
+			\node[left] at (-10mm,10mm) {\color{blue!20}$+10$};
+			\node[left] at (-10mm,-10mm){\color{blue!20}$-10$};
+			\node[anchor=north east] at (12mm,-10mm) {\color{blue!20}mm}; 
+			\node[elec] {XX};
+			&
+			\node[elec, scale=2] (f) {XX};		
+			\foreach \anchor/\pos in {
+				north/above, 
+				east/right, 
+				west/left, 
+				south/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				north east/above right, 
+				north west/above left, 
+				south east/below right, 
+				south west/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			\\	
+		};	
+	\end{tikzpicture}
+\end{figure}
+The |elec| shape provides a modified |circle| shape from the |shapes| library for the purpose of labeling streams. The anchors \textbf{are not aliased} with their abbreviations because this is not a custom shape of the |pfdicons| package. Like the |valve| and |sid| shapes the fill of |elec| is white which allows it to be conveniently placed within a stream-drawing command such as
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[dashed] (0,0) -- node[elec] {XX} (2,0);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[dashed] (0,0) -- node[elec] {XX} (2,0);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+The |elec| shape has no |key=value| pairs to modify its appearance but you can modify the appearance by redefining its |tikzstyle|, which by default is
+\begin{lstlisting}[numbers=none]
+\tikzstyle{elec} = [circle, draw, solid, fill=white, text badly centered, inner sep=1pt, font=\footnotesize]
+\end{lstlisting}
+Modifications to this definition can occur either in the preamble (to affect all drawings) or within the document (to subsequent drawings or lines). For example, if you'd like to use circular identifiers with a blue fill and more space around bigger numbers then you could do something like this:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[dashed] (0,0) -- node[elec] {TT} (2,0);
+	
+	\tikzstyle{elec} = [circle, draw, solid, fill=blue!15, text badly centered, inner sep=3pt, font=\tiny]
+	
+	\draw[dashed] (0,-1) -- node[elec] {LT} (2,-1);
+	
+	\draw[dashed] (0,-2) -- node[elec] {PT} (2,-2);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[dashed] (0,0) -- node[elec] {TT} (2,0);
+			
+				\tikzstyle{elec} = [circle, draw, solid, fill=blue!15, text badly centered, inner sep=3pt, font=\tiny]
+				
+				\draw[dashed] (0,-1) -- node[elec] {LT} (2,-1);
+				
+				\draw[dashed] (0,-2) -- node[elec] {PT} (2,-2);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+You can also modify individual parameters while retaining others by passing additional modifiers within the |sid| node usage, like this:
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[dashed] (0,0) -- node[elec] {TT} (2,0);
+	
+	\draw[dashed] (0,-1) -- node[elec, rectangle, fill=red!20] {LT} (2,-1);
+	
+	\draw[dashed] (0,-2) -- node[elec] {PT} (2,-2);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[dashed] (0,0) -- node[elec] {TT} (2,0);
+			
+				\draw[dashed] (0,-1) -- node[elec, rectangle, fill=red!20] {LT} (2,-1);
+				
+				\draw[dashed] (0,-2) -- node[elec] {PT} (2,-2);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+
+\section{Examples}
+The following examples use the |pfdicons| package to replicate process flow diagrams and other diagrams found in several standard undergraduate textbooks. The examples are generally grouped according to the (approximate) course in which they occur: material and energy balances, thermodynamics, reaction engineering, separations, process controls, and capstone design.
+\subsection{Material and Energy Balances}
+\begin{enumerate}[itemindent=0.75in, leftmargin=0.25in, label=\textsc{\textbf{Example \arabic*:}}]
+	
+		\item A basic separation process consisting of a pump, flash unit, and valve. Source: Himmelblau, D.; Riggs, J. \textit{Basic Principles and Calculations in Chemical Engineering}, 8th ed.; Prentice Hall, 2012.
+		\begin{center}
+			\begin{tikzpicture}		
+				\node[centrifugal pump, unit ext=outlet east] (c) {};
+				\node[vessel, right=2cm of c.outlet] (s) {};				
+				\draw[<-] (c.west) -- ++(-2,0);
+				\draw[->] (c.outlet) -- (s.west);
+				\draw[->] (s.north) -- ++(0,0.5) -- node[valve] {} ++(2,0);
+				\draw[->] (s.south) |- ++(2,-0.5);		
+			\end{tikzpicture}
+		\end{center}
+		\begin{lstlisting}
+\begin{tikzpicture}		
+	\node[centrifugal pump, unit ext=outlet east] (c) {};
+	\node[vessel, right=2cm of c.outlet] (s) {};	
+	\draw[<-] (c.west) -- ++(-2,0);
+	\draw[->] (c.outlet) -- (s.west);
+	\draw[->] (s.north) -- ++(0,0.5) -- node[valve] {} ++(2,0);
+	\draw[->] (s.south) |- ++(2,-0.5);		
+\end{tikzpicture}
+		\end{lstlisting}
+	
+		\item A simplified ethylene dichloride synthesis process illustrating the reactor-separator-recycle-purge (RSRP) arrangement. Source: Himmelblau, D.; Riggs, J. \textit{Basic Principles and Calculations in Chemical Engineering}, 8th ed.; Prentice Hall, 2012.
+		\begin{center}
+			\begin{tikzpicture}		
+				\node[tube reactor, unit int=packed] (r) {};
+				\node[column, right=of r] (s) {};
+				\coordinate [left=of r] (m); % helps set recycle merge point
+				
+				\draw[<-] (r.west) -- ++(-2,0);
+				\draw[->] (r.east) -- (s.west);
+				\draw[->] (s.south) |- ++(1,-0.5);
+				\draw[->] (s.north) -- ++(0,1);
+				\draw[->] (s.north) -- ++(0,0.5) -| (m);
+			\end{tikzpicture}
+		\end{center}		
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\node[tube reactor, unit int=packed] (r) {};
+	\node[column, right=of r] (s) {};
+	\coordinate [left=of r] (m);
+		
+	\draw[<-] (r.west) -- ++(-2,0);
+	\draw[->] (r.east) -- (s.west);
+	\draw[->] (s.south) |- ++(1,-0.5);
+	\draw[->] (s.north) -- ++(0,1);
+	\draw[->] (s.north) -- ++(0,0.5) -| (m);
+\end{tikzpicture}
+		\end{lstlisting}
+\end{enumerate}
+
+
+\subsection{Thermodynamics}
+\begin{enumerate}[resume*]
+	\item A simple steam power plant. Source: Figure 8.1 on pg. 270 in Smith, J.M.; Van Ness, H.C.; Abbot, M.M. \textit{Introduction to Chemical Engineering Thermodynamics}, 6th ed.; McGraw-Hill, 2001. 
+	\begin{center}
+	\begin{tikzpicture}[font=\footnotesize]	
+		% Nodes
+		\node [basic hx, rotate=90] (boiler) {};
+		\node [turbine, below right=1cm and 2cm of boiler] (turbine) {};
+		\node [basic hx, rotate=90, below left=of turbine] (cond) {};
+		\node [centrifugal pump, below left=of boiler, unit int=inlet south, 
+		unit ext=outlet north west] (pump) {};
+		
+		% Streams
+		\draw[->] (boiler.south) -| (turbine.nnw);
+		\draw[->] (turbine.sse) |- (cond.south);
+		\draw[->] (cond.north) -| (pump.center);
+		\draw[->] (pump.outlet) |- (boiler.north);
+		
+		% Labels
+		\node[below] at (boiler.west) {Boiler};
+		\node[above] at (cond.east) {Condenser};
+		\node[left] at (turbine.west) {Turbine};
+		\draw[<-] (boiler.east) -- node[pos=1.5] {$\dot{Q}_H$} ++(0,5mm);
+		\draw[->] (cond.west) -- node[pos=1.5] {$\dot{Q}_C$} ++(0,-5mm);
+		\draw[->] (turbine.east) -- node[pos=1.5] {$\dot{W}_s$} ++(5mm,0);
+		\draw[<-] (pump.west) -- node[pos=1.5] {$\dot{W}_s$} ++(-5mm,0);
+	\end{tikzpicture}
+	\end{center}
+		\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]	
+	% Units
+	\node [basic hx, rotate=90] (boiler) {};
+	\node [turbine, below right=1cm and 2cm of boiler] (turbine) {};
+	\node [basic hx, rotate=90, below left=of turbine] (cond) {};
+	\node [centrifugal pump, below left=of boiler, unit int=inlet south, unit 
+	ext=outlet north west] (pump) {};
+	
+	% Streams
+	\draw[->] (boiler.south) -| (turbine.nnw);
+	\draw[->] (turbine.sse) |- (cond.south);
+	\draw[->] (cond.north) -| (pump.center);
+	\draw[->] (pump.outlet) |- (boiler.north);
+	
+	% Labels
+	\node[below] at (boiler.west) {Boiler};
+	\node[above] at (cond.east) {Condenser};
+	\node[left] at (turbine.west) {Turbine};
+	\draw[<-] (boiler.east) -- node[pos=1.5] {$\dot{Q}_H$} ++(0,5mm);
+	\draw[->] (cond.west) -- node[pos=1.5] {$\dot{Q}_C$} ++(0,-5mm);
+	\draw[->] (turbine.east) -- node[pos=1.5] {$\dot{W}_s$} ++(5mm,0);
+	\draw[<-] (pump.west) -- node[pos=1.5] {$\dot{W}_s$} ++(-5mm,0);
+\end{tikzpicture}
+		\end{lstlisting}
+	
+
+	\item A two-stage cascade refrigeration system. Here a |matrix| structure is used for node placement but one could equally use positioning keys (\textit{i.e.}, |above|, |below|, and so forth) to achieve similar placement. Source: Figure 9.3 on pg. 301 in Smith, J.M.; Van Ness, H.C.; Abbot, M.M. \textit{Introduction to Chemical Engineering Thermodynamics}, 6th ed.; McGraw-Hill, 2001.
+	\begin{center}
+	\begin{tikzpicture}[font=\footnotesize]
+		% Nodes
+		\matrix [column sep=1.5cm, row sep=0.75 cm] {
+			% Row 1
+			& \node[basic hx, rotate=90] (cond) {}; 
+			& \\
+			% Row 2
+			\node[valve, rotate=90] (v2) {}; & 
+			\node{\normalsize Cycle 2}; & 
+			\node[turbine] (c2) {}; \\
+			% Row 3
+			& \node[shell and tube hx] (intx) {}; 
+			& \\
+			% Row 4
+			\node[valve, rotate=90] (v1) {}; &
+			\node{\normalsize Cycle 1}; &
+			\node[turbine] (c1) {}; \\
+			% Row 5
+			& \node[basic hx, rotate=90] (evap) {}; & \\
+		};
+	
+		% Streams
+		\tikzset{>=Stealth} 
+		% Upper loop
+		\draw[->] (cond.n) -| (v2.e);
+		\draw[->] (v2.w) |- (intx.wnw);
+		\draw[->] (intx.ene) -| (c2.sse);
+		\draw[->] (c2.nnw) |- (cond.s);
+		% Lower loop
+		\draw[->] (intx.wsw) -| (v1.e);
+		\draw[->] (v1.w) |- (evap.n);
+		\draw[->] (evap.s) -| (c1.sse);
+		\draw[->] (c1.nnw) |- (intx.ese);
+		
+		% Labels
+		\node[above] at (intx.north) {Interchanger};
+		\node[below] at (cond.w) {Condenser at $T_H$};
+		\node[above] at (evap.e) {Evaporator at $T_C$};
+		\node[above left=1pt and 7mm of intx.wnw] {$T^{\prime}_C$};
+		\node[below left=1pt and 7mm of intx.wsw] {$T^{\prime}_H$};
+		
+		\draw[<-] (c2.e) -- node[pos=2] {$W_s(2)$} ++(5mm,0);
+		\draw[<-] (c1.e) -- node[pos=2] {$W_s(1)$} ++(5mm,0);
+		\draw[->] (cond.e) -- node[pos=1.5] {$\lvert Q_H \rvert$} ++(0,5mm);
+		\draw[<-] (evap.w) -- node[pos=1.5] {$\lvert Q_C \rvert$} ++(0,-5mm);
+	\end{tikzpicture}
+	\end{center}
+
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]
+	% \usetikzlibrary{matrix}
+	% Units
+	\matrix [column sep=1.5cm, row sep=0.75 cm] {
+		% Row 1
+		& \node[basic hx, rotate=90] (cond) {}; 
+		& \\
+		% Row 2
+		\node[valve, rotate=90] (v2) {}; & 
+		\node{\normalsize Cycle 2}; & 
+		\node[turbine] (c2) {}; \\
+		% Row 3
+		& \node[shell and tube hx] (intx) {}; 
+		& \\
+		% Row 4
+		\node[valve, rotate=90] (v1) {}; &
+		\node{\normalsize Cycle 1}; &
+		\node[turbine] (c1) {}; \\
+		% Row 5
+		& \node[basic hx, rotate=90] (evap) {}; & \\
+	};
+	
+	% Streams
+	\tikzset{>=Stealth} 
+	% Upper loop
+	\draw[->] (cond.n) -| (v2.e);
+	\draw[->] (v2.w) |- (intx.wnw);
+	\draw[->] (intx.ene) -| (c2.sse);
+	\draw[->] (c2.nnw) |- (cond.s);
+	% Lower loop
+	\draw[->] (intx.wsw) -| (v1.e);
+	\draw[->] (v1.w) |- (evap.n);
+	\draw[->] (evap.s) -| (c1.sse);
+	\draw[->] (c1.nnw) |- (intx.ese);
+	
+	% Labels
+	\node[above] at (intx.north) {Interchanger};
+	\node[below] at (cond.w) {Condenser at $T_H$};
+	\node[above] at (evap.e) {Evaporator at $T_C$};
+	\node[above left=1pt and 7mm of intx.wnw] {$T^{\prime}_C$};
+	\node[below left=1pt and 7mm of intx.wsw] {$T^{\prime}_H$};
+	
+	\draw[<-] (c2.e) -- node[pos=2] {$W_s(2)$} ++(5mm,0);
+	\draw[<-] (c1.e) -- node[pos=2] {$W_s(1)$} ++(5mm,0);
+	\draw[->] (cond.e) -- node[pos=1.5] {$\lvert Q_H \rvert$} ++(0,5mm);
+	\draw[<-] (evap.w) -- node[pos=1.5] {$\lvert Q_C \rvert$} ++(0,-5mm);
+\end{tikzpicture}
+	\end{lstlisting}
+\end{enumerate}
+
+
+
+\subsection{Reaction Engineering}
+\begin{enumerate}[resume*]
+	\item A series of two CSTRs followed by a PFR as part of a discussion regarding Levenspiel plots. Source: Figure 2-10 on pg. 61 in Fogler, H.S. \textit{Elements of Chemical Reaction Engineering}, 4th ed.; Pearson, 2006.
+	
+	\begin{center}
+		\begin{tikzpicture}[font=\footnotesize]
+			% Custom point marker
+			\tikzstyle{dot} = [circle, draw, fill=black, inner sep=1.5pt]
+			
+			% Units
+			\node[tank reactor, unit int=stirred liquid] (R1) {};
+			\node[tank reactor, unit int=stirred liquid, below right=of R1] 
+			(R2) {};
+			\node[tube reactor, unit int=tubular, right=2cm of R2.ese] (R3) {};
+			
+			% Streams
+			\draw[<-] (R1.nnw) |- coordinate[at end] (p0) ++(-1.5,0.5);
+			\draw[->] (R1.ese) -| node[dot, pos=0.3] (p1) {} (R2.nnw);
+			\draw[->] (R2.ese) -- node[dot, pos=0.3] (p2) {} (R3.w);
+			\draw[->] (R3.e) -- node[dot] (p3) {} coordinate[at end] (p4) ++(1.5,0);
+			
+			% Labels
+			\node[left, align=right] at (p0) {$F_{A0}$\\$X=0$};
+			\node[above] at (p1) {(1)};
+			\node[right=5mm of p1, align=left] {$F_{A1}$\\$X_1$};
+			\node[above] at (p2) {(2)};
+			\node[above left, align=left] at (R3.w) {$F_{A2}$\\$X_2$};
+			\node[above] at (p3) {(3)};
+			\node[right, align=left] at (p4) {$F_{A3}$\\$X_3$};
+		\end{tikzpicture}
+	\end{center}
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]
+	% Custom point marker
+	\tikzstyle{dot} = [circle, draw, fill=black, inner sep=1.5pt]
+	
+	% Units
+	\node[tank reactor, unit int=stirred liquid] (R1) {};
+	\node[tank reactor, unit int=stirred liquid, below right=of R1] (R2) {};
+	\node[tube reactor, unit int=tubular, right=2cm of R2.ese] (R3) {};
+	
+	% Streams
+	\draw[<-] (R1.nnw) |- coordinate[at end] (p0) ++(-1.5,0.5);
+	\draw[->] (R1.ese) -| node[dot, pos=0.3] (p1) {} (R2.nnw);
+	\draw[->] (R2.ese) -- node[dot, pos=0.3] (p2) {} (R3.w);
+	\draw[->] (R3.e) -- node[dot] (p3) {} coordinate[at end] (p4) ++(1.5,0);
+	
+	% Labels
+	\node[left, align=right] at (p0) {$F_{A0}$\\$X=0$};
+	\node[above] at (p1) {(1)};
+	\node[right=5mm of p1, align=left] {$F_{A1}$\\$X_1$};
+	\node[above] at (p2) {(2)};
+	\node[above left, align=left] at (R3.w) {$F_{A2}$\\$X_2$};
+	\node[above] at (p3) {(3)};
+	\node[right, align=left] at (p4) {$F_{A3}$\\$X_3$};
+\end{tikzpicture}		
+	\end{lstlisting}
+
+	\item Two adiabatic reactors separated by a heat exchanger as part of a discussion regarding interstage heating and cooling. Source: Figure 11.2 on pg. 300 in Drews, A. \textit{An Introduction to Chemical Reaction Engineering with MATLAB}; \texttt{ceng113.eng.ucsd.edu} (2019).
+	
+	\begin{center}
+	\begin{tikzpicture}[font=\footnotesize]
+		% Units
+		\node[tank reactor, unit int=stirred liquid] (R1) {};
+		\node[basic hx, unit ext=util, right=2cm of R1] (HX1) {};
+		\node[tube reactor, unit int=tubular, right=2cm of HX1] (R2) {};
+		
+		% Streams
+		\draw[<-] (R1.w) -- node[above, near end] {0} ++(-2,0);
+		\draw[->] (R1.e) -- node[above] {1} (HX1.w);
+		\draw[->] (HX1.e) -- node[above] {2} (R2.w);
+		\draw[->] (R2.e) -- node[above] {3} ++(2,0);
+
+		% Control volumes
+		\coordinate[above left=7mm and 5mm of R1.nw] (a);
+		\coordinate[below right=7mm and 5mm of R1.se] (b);
+		\coordinate[above left=9mm and 8mm of R1.nw] (c);
+		\coordinate[below right=11mm and 5mm of R2.se] (d);
+		\draw[dashed] (a) rectangle (b);
+		\draw[dashed] (c) rectangle (d);	
+			
+		% Labels
+		\node[below] at (R1.s) {R-1};
+		\node[below] at (HX1.south util) {HX-1};
+		\node[below] at (R2.s) {R-2};
+		\node[anchor=base west] at (b) {\textbf{CV1}};
+		\node[anchor=base west] at (d) {\textbf{CV2}};
+	\end{tikzpicture}
+	\end{center}
+
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]
+	% Units
+	\node[tank reactor, unit int=stirred liquid] (R1) {};
+	\node[basic hx, unit ext=util, right=2cm of R1] (HX1) {};
+	\node[tube reactor, unit int=tubular, right=2cm of HX1] (R2) {};
+	
+	% Streams
+	\draw[<-] (R1.w) -- node[above, near end] {0} ++(-2,0);
+	\draw[->] (R1.e) -- node[above] {1} (HX1.w);
+	\draw[->] (HX1.e) -- node[above] {2} (R2.w);
+	\draw[->] (R2.e) -- node[above] {3} ++(2,0);
+	
+	% Control volumes
+	\coordinate[above left=7mm and 5mm of R1.nw] (a);
+	\coordinate[below right=7mm and 5mm of R1.se] (b);
+	\coordinate[above left=9mm and 8mm of R1.nw] (c);
+	\coordinate[below right=11mm and 5mm of R2.se] (d);
+	\draw[dashed] (a) rectangle (b);
+	\draw[dashed] (c) rectangle (d);	
+	
+	% Labels
+	\node[below] at (R1.s) {R-1};
+	\node[below] at (HX1.south util) {HX-1};
+	\node[below] at (R2.s) {R-2};
+	\node[anchor=base west] at (b) {\textbf{CV1}};
+	\node[anchor=base west] at (d) {\textbf{CV2}};
+\end{tikzpicture}
+	\end{lstlisting}
+\end{enumerate}
+
+
+
+
+\subsection{Separations}
+\begin{enumerate}[resume*]
+	\item A general distillation system using a total condenser and partial reboiler. Some annotations have been excluded for clarity (clarity of this document, not the figure: if so desired it would only be a matter of additional |node| elements to replace the excluded annotations). Source: Figure 7.2 on pg. 261 in Seader, J.D.; Henley, E.J.; Roper, D.K. \textit{Separation Process Principles}, 3rd ed.; John Wiley and Sons, 2011. 
+	\begin{center}
+		\begin{tikzpicture}[font=\footnotesize]
+			%\usetikzlibrary{decorations.pathmorphing}
+			% Units	
+			\node[column, unit int=numbered tray, scale=1.5] (c) {};
+			\node[vessel, rotate=90, unit int=liquid rotated, above right=8mm 
+			and 15mm of c, anchor=north] (drum) {};
+			\node[basic hx, unit ext=util, above left=8mm and 5mm of drum.north] (cond) {};
+			\node[basic hx, unit int=U tube, unit ext=util, rotate=90, below 
+			right=5mm and 5mm of c, anchor=east] (reboil) {};
+			
+			% Helpful points
+			\coordinate[left=3cm of c.west] (F);
+			\coordinate[right=4cm of c.north east] (D);
+			\coordinate[below right=2cm and 2.5cm of c.south east] (B);
+			
+			% Streams
+			\draw[->] (c.north) |- (cond.west);
+			\draw[->] (cond.east) -| (drum.east);
+			\draw[->] (drum.west) |- (c.north east);
+			\draw[->] (drum.west) |- (D);			
+			\draw[->] (c.south) |- (reboil.north);
+			\draw[->] (reboil.east) |- (c.south east);		
+			\draw[->] (reboil.west) |- (B);			
+			\draw[->] (F) -- node[valve, near end] {} (c.west);
+			
+			% Distillate labels
+			\node[above=0.5pt of c.top tray] {1};	
+			\node[left=5mm of c.top tray, anchor=east] {Top stage};
+			\node[anchor=south west] at (c.ne) {Reflux};
+			\node[above] at (D) {Distillate};
+			\node[above right] at (cond.ne) {Total condenser};
+			\node[above right] at (drum.south east) {Reflux drum};
+			
+			% Feed labels
+			\node[above=0.5pt of c.feed tray] {$f$};
+			\node[anchor=south west] at (F) {Feed};
+			\node[right=5mm of c.feed tray, anchor=west] {Feed stage};
+			\node[align=left, anchor=north west] at (F) {Light-key\\mole frac, $z_F$};
+	
+			% Bottoms labels
+			\node[above=0.5pt of c.bottom tray] {$N$};
+			\node[above] at (B) {Bottoms};
+			\node[right] at (reboil.south) {Partial reboiler};
+			\node[left=5mm of c.bottom tray, anchor=east, align=center] {Bottom\\stage};
+			\node[below, align=center] at (D) {Light-key\\mole frac, $x_D$};	
+			\node[below, align=center] at (B) {Light-key\\mole frac, $x_B$};
+		\end{tikzpicture}
+	\end{center}
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]
+	%\usetikzlibrary{decorations.pathmorphing}
+	% Units	
+	\node[column, unit int=numbered tray, scale=1.5] (c) {};
+	\node[vessel, rotate=90, unit int=liquid rotated, above right=8mm and 15mm 
+	of c, anchor=north] (drum) {};
+	\node[basic hx, unit ext=util, above left=8mm and 5mm of drum.north] (cond) {};
+	\node[basic hx, unit int=U tube, unit ext=util, rotate=90, below 
+	right=5mm 
+	and 5mm of c, anchor=east] (reboil) {};
+	
+	% Helpful points
+	\coordinate[left=3cm of c.west] (F);
+	\coordinate[right=4cm of c.north east] (D);
+	\coordinate[below right=2cm and 2.5cm of c.south east] (B);
+	
+	% Streams
+	\draw[->] (c.north) |- (cond.west);
+	\draw[->] (cond.east) -| (drum.east);
+	\draw[->] (drum.west) |- (c.north east);
+	\draw[->] (drum.west) |- (D);			
+	\draw[->] (c.south) |- (reboil.north);
+	\draw[->] (reboil.east) |- (c.south east);		
+	\draw[->] (reboil.west) |- (B);			
+	\draw[->] (F) -- node[valve, near end] {} (c.west);
+	
+	% Distillate labels
+	\node[above=0.5pt of c.top tray] {1};	
+	\node[left=5mm of c.top tray, anchor=east] {Top stage};
+	\node[anchor=south west] at (c.ne) {Reflux};
+	\node[above] at (D) {Distillate};
+	\node[above right] at (cond.ne) {Total condenser};
+	\node[above right] at (drum.south east) {Reflux drum};	
+	
+	% Feed labels
+	\node[above=0.5pt of c.feed tray] {$f$};
+	\node[anchor=south west] at (F) {Feed};
+	\node[right=5mm of c.feed tray, anchor=west] {Feed stage};
+	\node[align=left, anchor=north west] at (F) {Light-key\\mole frac, $z_F$};
+	
+	% Bottoms labels
+	\node[above=0.5pt of c.bottom tray] {$N$};
+	\node[above] at (B) {Bottoms};
+	\node[right] at (reboil.south) {Partial reboiler};
+	\node[left=5mm of c.bottom tray, anchor=east, align=center] {Bottom\\stage};
+	\node[below, align=center] at (D) {Light-key\\mole frac, $x_D$};	
+	\node[below, align=center] at (B) {Light-key\\mole frac, $x_B$};
+\end{tikzpicture}
+	\end{lstlisting}
+
+\item A schematic of pressure-swing adsorption for the dehydration of air. In this diagram the original authors used approximately the same symbol for a filter as the adsorber, a similarity retained here. A matrix was again used to help with alignment and several |tikzstyle| definitions were used to create ``shortcut'' shapes for the |filter|, |ads|, and |pump| units. Source: Figure 15.2 on pg. 570 in Seader, J.D.; Henley, E.J.; Roper, D.K. \textit{Separation Process Principles}, 3rd ed.; John Wiley and Sons, 2011. 
+
+\begin{center}
+	\begin{tikzpicture}[font=\footnotesize]
+		% \usetikzlibrary{matrix}
+		
+		% Definitions
+		\tikzstyle{filter} = [tube reactor, unit int=packed, rotate=90, 
+		scale=0.75];
+		\tikzstyle{ads} = [tube reactor, unit int=packed, rotate=90];
+		\tikzstyle{pump} = [reciprocating pump, yscale=-1];	
+		
+		% Nodes
+		\matrix [column sep=1.5cm, row sep=0.5 cm] {
+			% 4 columns:  & & & \\
+			& & \node[filter] (f1) {}; & \\
+			& & & \\
+			& & & \\
+			& \node[ads] (ads1) {}; & & \node[ads] (ads2) {};\\
+			& & & \\
+			& & \node[filter] (f2) {}; & \\ % f2
+			\node[pump] (p) {}; & \node[basic hx, unit ext=util] (hx) {};& & \\ % pump+cooler
+		};
+			
+		% Helper points
+		\coordinate[above=5mm of f2.e] (v2); % for valves near f2
+		\coordinate[below=11mm of f1.w] (v1); % for valves near f1
+		
+		% Streams
+		\draw[<-] (p.w) -- node[pos=1.7] {Moist air} ++(-1,0);
+		\draw[->] (p.e) -- (hx.w);
+		\draw[->] (hx.e) -| (f2.w);
+		\draw[->] (f2.e) -- (v2);
+		\draw (v2) -| node[valve, near start] {} (ads1.w);
+		\draw[->] (ads1.w |- v2) -- node[valve] {} node[anchor=north, at end] {Purge} ++(-2,0);
+		\draw (v2) -| node[valve, near start] {} (ads2.w);
+		\draw[->] (ads2.w |- v2) -- node[valve] {} node[anchor=north, at end] {Purge} ++(2,0);
+		\draw (ads1.e) |- node[valve, near end] {} (v1) -| node[valve, near start] {} (ads2.e);
+		\draw (v1) -- node[valve, rotate=90] {} (f1.w);
+		\draw (ads1.e) -- ++(0,1.3) -| (ads2.e);
+		\draw[->] (f1.e) -- ++(0,5mm);
+		
+		% Labels
+		\node[right, align=center] at (f1.s) {Particulate\\filter};
+		\node[right, align=center] at (ads2.s) {Adsorber\\no. 2};
+		\node[left, align=center] at (ads1.n) {Adsorber\\no. 1};
+		\node[right, align=center] at (f2.s) {Coalescing\\filter};
+		\node[below, align=center] at (p.n) {Gas\\compressor};
+		\node[below] at (hx.south util) {Aftercooler};
+		\node[above] at (hx.north util) {cw};
+		
+	\end{tikzpicture}
+\end{center}
+
+
+\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]
+	% \usetikzlibrary{matrix}
+	
+	% Definitions
+	\tikzstyle{filter} = [tube reactor, unit int=packed, rotate=90, 
+	scale=0.75];
+	\tikzstyle{ads} = [tube reactor, unit int=packed, rotate=90];
+	\tikzstyle{pump} = [reciprocating pump, yscale=-1];	
+	
+	% Nodes
+	\matrix [column sep=1.5cm, row sep=0.5 cm] {
+		% 4 columns:  & & & \\
+		& & \node[filter] (f1) {}; & \\
+		& & & \\
+		& & & \\
+		& \node[ads] (ads1) {}; & & \node[ads] (ads2) {};\\
+		& & & \\
+		& & \node[filter] (f2) {}; & \\ % f2
+		\node[pump] (p) {}; & \node[basic hx, unit ext=util] (hx) {};& & \\ % pump+cooler
+	};
+	
+	% Helper points
+	\coordinate[above=5mm of f2.e] (v2); % for valves near f2
+	\coordinate[below=11mm of f1.w] (v1); % for valves near f1
+	
+	% Streams
+	\draw[<-] (p.w) -- node[pos=1.7] {Moist air} ++(-1,0);
+	\draw[->] (p.e) -- (hx.w);
+	\draw[->] (hx.e) -| (f2.w);
+	\draw[->] (f2.e) -- (v2);
+	\draw (v2) -| node[valve, near start] {} (ads1.w);
+	\draw[->] (ads1.w |- v2) -- node[valve] {} node[anchor=north, at end] {Purge} ++(-2,0);
+	\draw (v2) -| node[valve, near start] {} (ads2.w);
+	\draw[->] (ads2.w |- v2) -- node[valve] {} node[anchor=north, at end] {Purge} ++(2,0);
+	\draw (ads1.e) |- node[valve, near end] {} (v1) -| node[valve, near start] {} (ads2.e);
+	\draw (v1) -- node[valve, rotate=90] {} (f1.w);
+	\draw (ads1.e) -- ++(0,1.3) -| (ads2.e);
+	\draw[->] (f1.e) -- ++(0,5mm);
+	
+	% Labels
+	\node[right, align=center] at (f1.s) {Particulate\\filter};
+	\node[right, align=center] at (ads2.s) {Adsorber\\no. 2};
+	\node[left, align=center] at (ads1.n) {Adsorber\\no. 1};
+	\node[right, align=center] at (f2.s) {Coalescing\\filter};
+	\node[below, align=center] at (p.n) {Gas\\compressor};
+	\node[below] at (hx.south util) {Aftercooler};
+	\node[above] at (hx.north util) {cw};
+	
+\end{tikzpicture}
+\end{lstlisting}
+\end{enumerate}
+
+
+\subsection{Process Controls}
+\begin{enumerate}[resume*]
+	\item A comparison of feedforward and feedback control systems. This example illustrates the use of absolute positioning (only for variety, not because it's necessary). Source: Figure E1.9 on pg. 13 in Seborg, D.E.; Edgar, T.F.; Mellichamp, D.A.; Doyle III, F.J. \textit{Process Dynamics and Control}, 4th ed.; John Wiley and Sons, 2016. 
+	\begin{center}
+		\begin{tikzpicture}[font=\footnotesize]	
+			% Feedforward system
+			\draw[->] (0,0) -- ++(4,0);
+			\node[elec] at (1, 0.5) (ft1) {FT};
+			\node[elec] at (2, 1.2) (fc1) {FC};
+			\node[valve, unit ext=actuator, scale=1.5] at (3,0) (v1) {};
+			\node[left] at (0,0) {Liquid};
+			\node[below] at (2,-0.1) {System A};
+			\draw (1,0) -- (ft1.south);
+			\draw[->, dashed] (ft1.north) |- (fc1.west);
+			\draw[->, dashed] (fc1.east) -| (v1.actuator);
+					
+			% Feedback system
+			\draw[->] (0,-2.5) -- ++(4,0);
+			\node[valve, unit ext=actuator, scale=1.5] at (1,-2.5) (v2) {};
+			\node[elec] at (2, -1.2) (fc2) {FC};
+			\node[elec] at (3, -2) (ft2) {FT};
+			
+			\node[left] at (0,-2.5) {Liquid};
+			\node[below] at (2,-2.6) {System B};
+			\draw (3,-2.5) -- (ft2.south);
+			\draw[->, dashed] (ft2.north) |- (fc2.east);
+			\draw[->, dashed] (fc2.west) -| (v2.actuator);
+		\end{tikzpicture}
+	\end{center}
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]	
+	% Feedforward system
+	\draw[->] (0,0) -- ++(4,0);
+	\node[elec] at (1, 0.5) (ft1) {FT};
+	\node[elec] at (2, 1.2) (fc1) {FC};
+	\node[valve, unit ext=actuator, scale=1.5] at (3,0) (v1) {};
+	\node[left] at (0,0) {Liquid};
+	\node[below] at (2,-0.1) {System A};
+	\draw (1,0) -- (ft1.south);
+	\draw[->, dashed] (ft1.north) |- (fc1.west);
+	\draw[->, dashed] (fc1.east) -| (v1.actuator);
+	
+	% Feedback system
+	\draw[->] (0,-2.5) -- ++(4,0);
+	\node[valve, unit ext=actuator, scale=1.5] at (1,-2.5) (v2) {};
+	\node[elec] at (2, -1.2) (fc2) {FC};
+	\node[elec] at (3, -2) (ft2) {FT};
+	
+	\node[left] at (0,-2.5) {Liquid};
+	\node[below] at (2,-2.6) {System B};
+	\draw (3,-2.5) -- (ft2.south);
+	\draw[->, dashed] (ft2.north) |- (fc2.east);
+	\draw[->, dashed] (fc2.west) -| (v2.actuator);
+\end{tikzpicture}		
+	\end{lstlisting}
+	
+	
+	
+	\item A blending system controlled by measuring the composition of the stream 1 and adjusting a control valve on stream two. Source: Figure 1.5 on pg. 5 in Seborg, D.E.; Edgar, T.F.; Mellichamp, D.A.; Doyle III, F.J. \textit{Process Dynamics and Control}, 4th ed.; John Wiley and Sons, 2016. 
+	\begin{center}
+		\begin{tikzpicture}[font=\footnotesize]	
+			% Units
+			\node[tank reactor, unit int=stirred liquid, scale=2] (r) {};
+			\node[elec, above=of r] (ac) {AC};
+
+			% Helpful points
+			\coordinate[left=2cm of r.nw] (f1);
+			\coordinate[right=2cm of r.ne] (f2);
+			\coordinate[right=2cm of r.se] (p);
+			
+			% Streams and stream labels
+			\draw[->] (f1) -- coordinate[pos=0.7] (s) (r.nw);
+			\draw[->] (f2) -- node[valve, unit ext=actuator, pos=0.6] (v) {} (r.ne);
+			\draw[->] (r.e) -- ++(3mm,0) |- (p);
+			\node[left, align=right] at (f1) {$x_1$\\$w_1$};
+			\node[right, align=left] at (f2) {$x_2=1$\\$w_2$};
+			\node[right, align=left] at (p) {$x$\\$w$};
+			
+			% Control elements
+			\node[elec, above=5mm of s] (at) {AT};
+			\draw (s) -- (at.south);
+			\draw[->, dashed] (at.north) |- (ac.west);
+			\draw[->, dashed] (ac.east) -| (v.actuator);
+			
+			% Labels
+			\node[align=center, anchor=south east] at (at.west) {Composition\\analyzer/transmitter};
+			\node[align=left, anchor=south west] at (v.ne) {Control\\valve};
+			\node[align=center, above] at (ac.north) {Composition\\controller};
+		\end{tikzpicture}
+	\end{center}
+	\begin{lstlisting}
+\begin{tikzpicture}[font=\footnotesize]	
+	% Units
+	\node[tank reactor, unit int=stirred liquid, scale=2] (r) {};
+	\node[elec, above=of r] (ac) {AC};
+	
+	% Helpful points
+	\coordinate[left=2cm of r.nw] (f1);
+	\coordinate[right=2cm of r.ne] (f2);
+	\coordinate[right=2cm of r.se] (p);
+	
+	% Streams and stream labels
+	\draw[->] (f1) -- coordinate[pos=0.7] (s) (r.nw);
+	\draw[->] (f2) -- node[valve, unit ext=actuator, pos=0.6] (v) {} (r.ne);
+	\draw[->] (r.e) -- ++(3mm,0) |- (p);
+	\node[left, align=right] at (f1) {$x_1$\\$w_1$};
+	\node[right, align=left] at (f2) {$x_2=1$\\$w_2$};
+	\node[right, align=left] at (p) {$x$\\$w$};
+	
+	% Control elements
+	\node[elec, above=5mm of s] (at) {AT};
+	\draw (s) -- (at.south);
+	\draw[->, dashed] (at.north) |- (ac.west);
+	\draw[->, dashed] (ac.east) -| (v.actuator);
+	
+	% Labels
+	\node[align=center, anchor=south east] at (at.west) {Composition\\analyzer/transmitter};
+	\node[align=center, anchor=south west] at (v.ne) {Control\\valve};
+	\node[align=center, above] at (ac.north) {Composition\\controller};
+\end{tikzpicture}			
+	\end{lstlisting}
+
+\end{enumerate}
+
+\newpage
+\subsection{Capstone processes}
+\begin{enumerate}[resume*]
+	\item Hydrodealkylation of toluene to produce benzene. Source: Figure 1.3 in Turton, R.; Bailie, R.C.; Whiting, W.B.; Shaeiwitz, J.A. \textit{Analysis, Synthesis, and Design of Chemical Processes}, 3rd ed.; Pearson, 2009. 
+\end{enumerate}
+
+
+\begin{center}
+	\makebox[\textwidth][c]{%
+		\begin{tikzpicture}[font=\footnotesize]
+			% Reduce stream label sizes
+			\tikzstyle{sid} = [diamond, draw, solid, fill=white, text badly centered, inner sep=1pt, font=\tiny]
+			
+			% Units	
+			\node[vessel, rotate=90] (V101) {};
+			\node[reciprocating pump, below right=0.75cm and 0.5cm of V101] (P101) {};
+			\node[basic hx, unit ext=util, above right=0.25cm and 2.75cm of V101] (E101) {};
+			\node[fired hx, below right=1cm and 0.6cm of E101, anchor=west] (H101) {};
+			\node[tube reactor, unit int=packed, right=of H101, anchor=center, rotate=90] (R101) {};
+			\node[turbine, right=1.5cm of R101.se] (C101) {};
+			\node[basic hx, unit ext=util, below=of C101] (E102) {};
+			\node[vessel, unit int=phase sep, right=0.5cm of E102] (V102) {};
+			\node[vessel, unit int=phase sep, below=of V102.se, anchor=west] (V103) {};
+			\node[basic hx, unit ext=util, right=2.75cm of C101] (E103) {};
+			\node[column, unit int=tray, right=1cm of E103] (T101) {};
+			\node[basic hx, unit ext=util, below left=0.5cm and 0.7cm of T101.s] (E106) {};
+			\node[basic hx, unit ext=util, above right=0.5cm and 1cm of T101.n] (E104) {};
+			\node[vessel, rotate=90, below right=1cm and 0.5cm of E104] (V104) {};
+			\node[centrifugal pump, below=1cm of V104.nw] (P102) {};
+			\node[basic hx, unit ext=util, below=0.5cm of P102] (E105) {};
+			\node[product, right=1.3cm of E105] (bz) {};
+			\node[product, above=4.5cm of bz] (fuel) {};
+			\node[feed, above left=0.75cm and 1cm of V101.ne] (tol) {};
+			\node[feed, below=3.5cm of tol] (h2) {};
+			
+			% Streams
+			\draw[->] (tol.e) -| node[sid, near start]{1} node[valve, near end, rotate=90]{} (V101.ne);
+			\draw[->] (V101.sw) |- (P101.w);
+			\draw[->] (P101.n) |- (E101.w);
+			\draw[<-] (V101.se) |- node[valve, pos=0.6]{} node[sid, pos=0.83]{2} (E101.w) node[pos=0.92](n1){} ;
+			\draw[->] (E101.e) -- ++(0.2,0) |- node[sid, near start]{4} (H101.w);
+			\draw[->] (H101.e) -| node[sid,near end]{6} ++(0.3,1) -| (R101.e);	
+			\draw[->] (E102.e) -- (V102.w);
+			\draw[->] (V102.s) |- node[valve, rotate=90, near start]{} (V103.w);
+			\draw[->] (V103.s) |- node[valve, rotate=90, near start]{} ++(0.5,-0.6) |- node[sid, near start]{18} (E103.w);
+			\draw[->] (E103.e) -- node[sid, pos=0.4]{10} (T101.w);			
+			\draw[->] (T101.ssw) |- (E106.e);
+			\draw[->] (E106.w) -- ++(-0.2,0) |- (T101.sw);		
+			\draw[->] (T101.n) |- node[sid,near end]{13} (E104.w);
+			\draw[->] (E104.e) -| (V104.ne);
+			\draw[->] (V104.sw) |- (P102.e);
+			\draw[->] (P102.w) -- ++(-0.75,0) |- node[sid,pos=0.15]{12} node[valve,rotate=90,pos=0.4]{} (T101.ne);
+			\draw[->] (P102.w) -- node[sid]{14} ++(-0.75,0) |- node[valve,rotate=90,near start]{} (E105.w);
+			\draw[->] (E105.e) -- (bz.w);
+			\draw[->] (V103.n) |- node[sid, pos=0.2]{17} node[valve,rotate=90, pos=0.3]{} (fuel.w);
+			\draw[->] (V102.n) |- node[sid, pos=0.2]{8} node[valve,rotate=90, pos=0.3]{} node[sid, pos=0.96]{16} (fuel.w);
+			\draw[->] (V104.e) -- node[sid,pos=0.3]{19} node[valve,rotate=90,pos=0.6]{} (V104 |- fuel);
+			\draw[->] (V102.n) |- (C101.e);
+			\draw[->] (C101.w) -- node[valve, near start]{} node[sid,near end]{7} (R101.se) node[pos=0.5](n2){};	
+			
+			
+			% Cross stream 9 over 5
+			\path[spath/save=over1] (R101.w) |- (E102.w);
+			\path[spath/save=under1] (n2 |- C101) |- (n1 |- V103)  -| (n1 |- E101);
+			\tikzset{bridge={over1}{under1}}	
+			\draw[->, spath/use=over1] node[sid, pos=0.5]{9};
+			\draw[->, spath/use=under1] node[sid, pos=0.5]{5};
+			
+			
+			% Cross stream 3 over 11
+			\path[spath/save=over2] (h2.e) -- (n1 |- h2);
+			\path[spath/save=under2] (T101.s) -- ++(0,-3.5) -| (V101.w);
+			\tikzset{bridge={over2}{under2}}
+			\draw[->, spath/use=over2] node[sid, pos=0.2]{3};
+			\draw[->, spath/use=under2] node[sid, pos=0.4]{11};
+			
+			
+			% Unit labels
+			\node at (V101.center) {V-101};
+			\node[below] at (P101.s) {P-101};
+			\node[above] at (E101.north util) {E-101};
+			\node[left] at (H101.sw) {H-101};
+			\node[above=4mm of R101.e] {R-101};
+			\node[above=1mm of C101.n] {C-101};
+			\node[below] at (E102.south util) {E-102};
+			\node[left, anchor=south east] at (V102.n) {V-102};
+			\node[below left, anchor=north east] at (V103.sw) {V-103};
+			\node[above] at (E103.north util) {E-103};
+			\node[above left] at (T101.nw) {T-101};
+			\node[above] at (E104.north util) {E-104};
+			\node at (V104.center) {V-104};
+			\node[above] at (P102.n) {P-102};
+			\node[below] at (E105.south util) {E-105};
+			\node[below] at (E106.south util) {E-106};
+			
+			% Stream labels
+			\node[above] at (tol.n) {toluene};
+			\node[above] at (h2.n) {hydrogen};
+			\node[below] at (bz.s) {benzene};
+			\node[above] at (fuel.n) {fuel gas};
+			
+			% Utility labels
+			\tikzset{font=\scriptsize}
+			\node[right] at (E105.north util) {cw};
+			\node[below] at (E104.south util) {cw};
+			\node[above] at (E102.north util) {cw};
+			\node[right] at (E106.north util) {mps};
+			\node[below] at (E101.south util) {hps};
+			
+			\draw[->] (H101.n) -- node[at end, right, align=center] {combustion\\products} ++(0,0.8);
+			\draw[<-] (H101.sse) -- node[right, align=left] {fuel\\gas} ++(0,-0.8);
+			\draw[<-] (H101.ssw) -- node[left] {air} ++(0,-0.8);	
+		\end{tikzpicture}
+	}
+\end{center}
+
+\begin{lstlisting}
+		\begin{tikzpicture}[font=\footnotesize]
+	% Reduce stream label sizes
+	\tikzstyle{sid} = [diamond, draw, solid, fill=white, text badly centered, inner sep=1pt, font=\tiny]
+	
+	% Units	
+	\node[vessel, rotate=90] (V101) {};
+	\node[reciprocating pump, below right=0.75cm and 0.5cm of V101] (P101) {};
+	\node[basic hx, unit ext=util, above right=0.25cm and 2.75cm of V101] (E101) {};
+	\node[fired hx, below right=1cm and 0.6cm of E101, anchor=west] (H101) {};
+	\node[tube reactor, unit int=packed, right=of H101, anchor=center, rotate=90] (R101) {};
+	\node[turbine, right=1.5cm of R101.se] (C101) {};
+	\node[basic hx, unit ext=util, below=of C101] (E102) {};
+	\node[vessel, unit int=phase sep, right=0.5cm of E102] (V102) {};
+	\node[vessel, unit int=phase sep, below=of V102.se, anchor=west] (V103) {};
+	\node[basic hx, unit ext=util, right=2.75cm of C101] (E103) {};
+	\node[column, unit int=tray, right=1cm of E103] (T101) {};
+	\node[basic hx, unit ext=util, below left=0.5cm and 0.7cm of T101.s] (E106) {};
+	\node[basic hx, unit ext=util, above right=0.5cm and 1cm of T101.n] (E104) {};
+	\node[vessel, rotate=90, below right=1cm and 0.5cm of E104] (V104) {};
+	\node[centrifugal pump, below=1cm of V104.nw] (P102) {};
+	\node[basic hx, unit ext=util, below=0.5cm of P102] (E105) {};
+	\node[product, right=1.3cm of E105] (bz) {};
+	\node[product, above=4.5cm of bz] (fuel) {};
+	\node[feed, above left=0.75cm and 1cm of V101.ne] (tol) {};
+	\node[feed, below=3.5cm of tol] (h2) {};
+	
+	% Streams
+	\draw[->] (tol.e) -| node[sid, near start]{1} node[valve, near end, rotate=90]{} (V101.ne);
+	\draw[->] (V101.sw) |- (P101.w);
+	\draw[->] (P101.n) |- (E101.w);
+	\draw[<-] (V101.se) |- node[valve, pos=0.6]{} node[sid, pos=0.83]{2} (E101.w) node[pos=0.92](n1){} ;
+	\draw[->] (E101.e) -- ++(0.2,0) |- node[sid, near start]{4} (H101.w);
+	\draw[->] (H101.e) -| node[sid,near end]{6} ++(0.3,1) -| (R101.e);	
+	\draw[->] (E102.e) -- (V102.w);
+	\draw[->] (V102.s) |- node[valve, rotate=90, near start]{} (V103.w);
+	\draw[->] (V103.s) |- node[valve, rotate=90, near start]{} ++(0.5,-0.6) |- node[sid, near start]{18} (E103.w);
+	\draw[->] (E103.e) -- node[sid, pos=0.4]{10} (T101.w);			
+	\draw[->] (T101.ssw) |- (E106.e);
+	\draw[->] (E106.w) -- ++(-0.2,0) |- (T101.sw);		
+	\draw[->] (T101.n) |- node[sid,near end]{13} (E104.w);
+	\draw[->] (E104.e) -| (V104.ne);
+	\draw[->] (V104.sw) |- (P102.e);
+	\draw[->] (P102.w) -- ++(-0.75,0) |- node[sid,pos=0.15]{12} node[valve,rotate=90,pos=0.4]{} (T101.ne);
+	\draw[->] (P102.w) -- node[sid]{14} ++(-0.75,0) |- node[valve,rotate=90,near start]{} (E105.w);
+	\draw[->] (E105.e) -- (bz.w);
+	\draw[->] (V103.n) |- node[sid, pos=0.2]{17} node[valve,rotate=90, pos=0.3]{} (fuel.w);
+	\draw[->] (V102.n) |- node[sid, pos=0.2]{8} node[valve,rotate=90, pos=0.3]{} node[sid, pos=0.96]{16} (fuel.w);
+	\draw[->] (V104.e) -- node[sid,pos=0.3]{19} node[valve,rotate=90,pos=0.6]{} (V104 |- fuel);
+	\draw[->] (V102.n) |- (C101.e);
+	\draw[->] (C101.w) -- node[valve, near start]{} node[sid,near end]{7} (R101.se) node[pos=0.5](n2){};	
+	
+	
+	% Cross stream 9 over 5
+	\path[spath/save=over1] (R101.w) |- (E102.w);
+	\path[spath/save=under1] (n2 |- C101) |- (n1 |- V103)  -| (n1 |- E101);
+	\tikzset{bridge={over1}{under1}}	
+	\draw[->, spath/use=over1] node[sid, pos=0.5]{9};
+	\draw[->, spath/use=under1] node[sid, pos=0.5]{5};
+	
+	
+	% Cross stream 3 over 11
+	\path[spath/save=over2] (h2.e) -- (n1 |- h2);
+	\path[spath/save=under2] (T101.s) -- ++(0,-3.5) -| (V101.w);
+	\tikzset{bridge={over2}{under2}}
+	\draw[->, spath/use=over2] node[sid, pos=0.2]{3};
+	\draw[->, spath/use=under2] node[sid, pos=0.4]{11};
+	
+	
+	% Unit labels
+	\node at (V101.center) {V-101};
+	\node[below] at (P101.s) {P-101};
+	\node[above] at (E101.north util) {E-101};
+	\node[left] at (H101.sw) {H-101};
+	\node[above=4mm of R101.e] {R-101};
+	\node[above=1mm of C101.n] {C-101};
+	\node[below] at (E102.south util) {E-102};
+	\node[left, anchor=south east] at (V102.n) {V-102};
+	\node[below left, anchor=north east] at (V103.sw) {V-103};
+	\node[above] at (E103.north util) {E-103};
+	\node[above left] at (T101.nw) {T-101};
+	\node[above] at (E104.north util) {E-104};
+	\node at (V104.center) {V-104};
+	\node[above] at (P102.n) {P-102};
+	\node[below] at (E105.south util) {E-105};
+	\node[below] at (E106.south util) {E-106};
+	
+	% Stream labels
+	\node[above] at (tol.n) {toluene};
+	\node[above] at (h2.n) {hydrogen};
+	\node[below] at (bz.s) {benzene};
+	\node[above] at (fuel.n) {fuel gas};
+	
+	% Utility labels
+	\tikzset{font=\scriptsize}
+	\node[right] at (E105.north util) {cw};
+	\node[below] at (E104.south util) {cw};
+	\node[above] at (E102.north util) {cw};
+	\node[right] at (E106.north util) {mps};
+	\node[below] at (E101.south util) {hps};
+	
+	\draw[->] (H101.n) -- node[at end, right, align=center] {combustion\\products} ++(0,0.8);
+	\draw[<-] (H101.sse) -- node[right, align=left] {fuel\\gas} ++(0,-0.8);
+	\draw[<-] (H101.ssw) -- node[left] {air} ++(0,-0.8);	
+\end{tikzpicture}	
+\end{lstlisting}
+
+
+\newgeometry{margin=0.5in}
+\pagenumbering{gobble}
+
+\section{Quick reference}
+\begin{center}
+	\begin{tikzpicture}[font=\footnotesize\ttfamily]
+		\matrix[
+		column sep=0.5cm,
+		row sep=0.5cm,
+		column1/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}}]{
+			% ========================== 
+			% Header
+			% ==========================
+			\node (s) {\normalsize\textbf{shape name}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{default}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{anchors}};
+			\draw (s.south west) -- (s.south east);
+			& 
+			\node (s) {\normalsize\textbf{unit int}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{unit ext}};
+			\draw (s.south west) -- (s.south east);
+			\\
+			
+			% ========================== 
+			% Tank reactor
+			% ========================== 
+			\node {tank reactor};
+			&
+			\node[tank reactor] {}; 
+			&
+			\node[tank reactor] (f) {};
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left,
+				nne/above right, 
+				nnw/above left, 
+				sse/below right, 
+				ssw/below left,
+				ese/right, 
+				wsw/left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			& 
+			\node[tank reactor, unit int=stirred] at (0,-3mm) (f) {};
+			\node[left] at (f.west) {stirred};
+			\foreach \anchor/\pos in {west motor/left, north motor/above}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\anchor};
+			}
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.east motor) {};
+			\node[rotate=-90, above] at (f.east) {\color{red}east motor};
+			
+			\node[tank reactor, unit int=liquid, below=3mm of f] (g) {};
+			\node[left] at (g.west) {liquid}; 
+			\node[tank reactor, unit int=stirred liquid, below=5mm of g] (h) 
+			{};
+			\node[left, align=right] at (h.west) {stirred\\liquid};
+			&
+			\node[tank reactor, unit ext=lower jacket] (f) {}; 
+			\node[align=center, below] at (f.s) {lower\\[-3pt]jacket};
+			\foreach \anchor/\pos in {
+				west jacket/left,
+				east jacket/right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};}
+			
+			\node[align=left, anchor=west] at (f.east jacket) {\color{red}east\\[-3pt]\color{red}jacket};
+			\node[align=right, anchor=east] at (f.west jacket) {\color{red}west\\[-3pt]\color{red}jacket};
+			
+			
+			\node[tank reactor, unit ext=side jacket, below=1.3cm of f] (g) {};
+			\node[align=center, below] at (g.south) {side\\[-3pt]jacket};
+			\foreach \anchor in {
+				west jacket,
+				east jacket,
+				north west jacket,
+				north east jacket,
+				south west jacket,
+				south east jacket}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (g.\anchor) {};}
+			
+			\node[align=left, anchor=west] at (g.east jacket) {\color{red}east jacket};
+			\node[align=left, anchor=south west] at (g.north east jacket) {\color{red}north east\\[-3pt]\color{red}jacket};
+			\node[align=left, anchor=north west] at (g.south east jacket) {\color{red}south east\\[-3pt]\color{red}jacket};
+			\node[align=right, anchor=east] at (g.west jacket) {\color{red}west jacket};
+			\node[align=right, anchor=south east] at (g.north west jacket) {\color{red}north west\\[-3pt]\color{red}jacket};
+			\node[align=right, anchor=north east] at (g.south west jacket) {\color{red}south west\\[-3pt]\color{red}jacket};
+			\\ \hline
+			
+			% ========================== 
+			% Tube reactor
+			% ========================== 
+			\node {tube reactor};
+			&
+			\node[tube reactor] {};
+			& 
+			\node[tube reactor, scale=1.8] (f) {};
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			& 
+			\node[tube reactor, unit int=packed] (g) {};
+			\node[left] at (g.west) {packed};
+			\node[tube reactor, unit int=fixed, below=0.5cm of g] (h) {};
+			\node[left] at (h.west) {fixed};
+			\node[tube reactor, unit int=tubular, below=0.5cm of h] (j) {}; 
+			\node[left] at (j.west) {tubular};
+			&
+			\node[tube reactor, unit ext=cis shell] (f) {};
+			\foreach \anchor/\pos in {west shell/above left, east shell/above right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\anchor};}
+			\node[left] at (f.west) {cis shell};
+			
+			\node[tube reactor, unit ext=trans shell, below=7mm of f] (g) {};
+			\foreach \anchor/\pos in {north shell/above, south shell/below}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (g.\anchor) {};
+				\node[\pos] at (g.\anchor) {\color{red}\anchor};}
+			\node[left] at (g.west) {trans shell};
+			
+			\\ \hline
+			
+			% ========================== 
+			% Basic hx
+			% ========================== 
+			\node {basic hx};
+			& 
+			\node [basic hx] {};
+			&
+			\node[basic hx] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			\node[basic hx, unit ext=util, draw=white] (f) {};
+			\node[basic hx, unit int=U tube, below=of f] (g) {};
+			\node[left] at (g.west) {U tube};
+			&
+			\node[basic hx, unit ext=util] (f) {};
+			\node[left] at (f.west) {util};
+			\foreach \anchor/\pos in {
+				north util/right,
+				south util/left}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\footnotesize\texttt{\anchor}};}
+			
+			\node[basic hx, unit int=U tube, unit ext=util, below=of f] (g) 
+			{};
+			\node[left] at (g.west) {util};
+			\foreach \anchor/\pos in {
+				west util/left,
+				east util/right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (g.\anchor) {};
+				\node[\pos] at (g.\anchor) {\color{red}\anchor};
+			}
+			
+			\\ \hline
+			
+			% ========================== 
+			% Shell and tube hx
+			% ==========================
+			\node {shell and tube hx};
+			&
+			\node[shell and tube hx] {};
+			&
+			\node[shell and tube hx, scale=1.5] (f) {};			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			\node[shell and tube hx, unit int=two pass] (f) {};
+			\node[left] at (f.west) {two pass};
+			\node[shell and tube hx, unit int=four pass, below=0.5cm of f] (g) 
+			{};
+			\node[left] at (g.west) {four pass};
+			&
+			\node[shell and tube hx, unit ext=cis shell] (f) {};
+			\foreach \anchor/\pos in {west shell/above left, east shell/above right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\anchor};}
+			\node[left] at (f.west) {cis shell};
+			
+			\node[shell and tube hx, unit ext=trans shell, below=7mm of f] (g) {};
+			\foreach \anchor/\pos in {north shell/above, south shell/below}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (g.\anchor) {};
+				\node[\pos] at (g.\anchor) {\color{red}\anchor};}
+			\node[left] at (g.west) {trans shell};
+			
+			\\ \hline
+			
+			% ========================== 
+			% Plate hx
+			% ==========================
+			\node {plate hx};
+			&
+			\node[plate hx] {};
+			&
+			\node[plate hx, scale=1.8] (f) {};	
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			% ========================== 
+			% Fired hx
+			% ==========================
+			\node {fired hx};
+			&
+			\node[fired hx] {};
+			&
+			\node[fired hx] (f) {};
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/right, 
+				sw/left,
+				nne/right, 
+				nnw/left, 
+				sse/below right, 
+				ssw/below left,
+				ese/below right, 
+				wsw/below left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			\node[fired hx, unit int=double] at (0,3mm) (f) {};
+			\node[left=0.7cm of f.west] {double};
+			\foreach \anchor/\pos in {
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue, inner sep=0pt, minimum size=2pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{gray}\footnotesize\texttt{\anchor}};}
+			
+			\node[fired hx, unit int=triple, below=3mm of f] (g) {};
+			\node[left=0.7cm of g.west] {triple};
+			\foreach \anchor/\pos in {
+				nne/right, 
+				nnw/left, 
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue, inner sep=0pt, minimum size=2pt] at (g.\anchor) {};
+				\node[\pos] at (g.\anchor) {\color{gray}\footnotesize\texttt{\anchor}};}
+			&
+			% no unit ext
+			\\
+		};
+	\end{tikzpicture}
+\end{center}
+
+
+
+\begin{center}
+	\begin{tikzpicture}[font=\footnotesize\ttfamily]
+		\matrix[
+		column sep=0.5cm,
+		row sep=0.5cm,
+		column1/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}}]{
+			% ========================== 
+			% Header
+			% ==========================
+			\node (s) {\normalsize\textbf{shape name}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{default}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{anchors}};
+			\draw (s.south west) -- (s.south east);
+			& 
+			\node (s) {\normalsize\textbf{unit int}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{unit ext}};
+			\draw (s.south west) -- (s.south east);
+			\\ 
+			
+			% ========================== 
+			% Column
+			% ==========================
+			\node{column};
+			&
+			\node [column] {};
+			&
+			\node[column] (f) {};			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left,
+				nne/above right, 
+				nnw/above left, 
+				sse/below right, 
+				ssw/below left,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)}; 
+			&
+			\node[column, unit int=tray] at (-4mm,0mm) (c1) {};
+			\node[left, align=right] at (c1.west) {tray \textit{or}\\dashed tray};
+			\node[column, unit int=weir tray, right=0.25cm of c1] (c2) {};
+			\node[right] at (c2.east) {weir tray};
+			\node[column, unit int=double packed, below=0.5cm of c1] (c3) {};
+			\node[left] at (c3.west) {double packed};			
+			\node[column, unit int=packed, right=0.25cm of c3] (c4) {};
+			\node[right] at (c4.east) {packed};	
+			\node[column, unit int=numbered tray, feed tray=00, top tray=99, 
+			bottom tray=22, below=0.5cm of c3] (c5) {};
+			\node[left, align=right] at (c5.west) {numbered tray,\\top tray=99,\\feed tray=00,\\bottom tray=22};
+			\foreach \anchor/\pos in {
+				top tray/right,
+				feed tray/right,
+				bottom tray/right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (c5.\anchor) {};
+				\node[right=3mm of c5.\anchor] {\color{red}\anchor};}
+			
+			&
+			\node[column, unit ext=simple hx] (f) {};
+			\node[left] at (f.west) {simple hx};
+			\foreach \anchor/\pos in {
+				distillate/below,
+				bottoms/below}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos, rotate=90] at (f.\anchor) {\color{red}\anchor};}
+			\\ \hline
+			
+			% ========================== 
+			% Vessel
+			% ==========================
+			\node {vessel};
+			&
+			\node[vessel] {};
+			&
+			\node[vessel, scale=1.5] (f) {};
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left,
+				nne/above right, 
+				nnw/above left, 
+				sse/below right, 
+				ssw/below left,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}		
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			\node[vessel, unit int=phase sep] (f) {};
+			\node[left] at (f.west) {phase sep};
+			\node[vessel, unit int=liquid, below=5mm of f] (g) {};
+			\node[left] at (g.west) {liquid};
+			\node[vessel, unit int=liquid rotated, below=5mm of g] (h) {};
+			\node[left, align=right] at (h.west) {liquid\\rotated};
+			&
+			\node[vessel, unit ext=simple hx] (f) {};
+			\node[left] at (f.west) {simple hx};
+			\foreach \anchor/\pos in {
+				north hx/right,
+				south hx/right}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\anchor};}
+			\\ \hline
+			
+			% ========================== 
+			% Centrifugal pump
+			% ==========================
+			\node[align=center] {centrifugal\\pump};
+			&
+			\node[centrifugal pump] {};
+			&
+			\node[centrifugal pump, scale=1.5] (f) {};
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			\node[centrifugal pump, unit int=inlet west] (p1) {};
+			\node[left] at (p1.west) {inlet west};
+			\node[centrifugal pump, unit int=inlet east, below=0.25cm  of p1] 
+			(p2) {};
+			\node[left] at (p2.west) {inlet east};
+			\node[centrifugal pump, unit int=inlet north, below=0.25cm of p2] 
+			(p3) {};
+			\node[left] at (p3.west) {inlet north};
+			\node[centrifugal pump, unit int=inlet south, below=0.25cm of p3] 
+			(p4) {};
+			\node[left] at (p4.west) {inlet south};
+			&
+			\node[centrifugal pump, unit ext=outlet north west] (p1) {};
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (p1.outlet) {};
+			\node[left] at (p1.outlet) {\color{red}outlet};
+			\node[align=right, anchor=east] at (p1.west) {outlet\\[-5pt]north west};
+			
+			\node[centrifugal pump, unit ext=outlet north east, below=0.25cm of p1] (p2) {};
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (p2.outlet) {};
+			\node[below, rotate=90] at (p2.outlet) {\color{red}outlet};
+			\node[align=right, anchor=east] at (p2.west) {outlet\\[-5pt]north east};
+			
+			\node[centrifugal pump, unit ext=outlet west, below=0.25cm of p2] (p3) {};
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (p3.outlet) {};
+			\node[left] at (p3.outlet) {\color{red}outlet};
+			\node[left] at (p3.west) {outlet west};
+			
+			\node[centrifugal pump, unit ext=outlet east, below=0.25cm of p3] (p4) {};
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (p4.outlet) {};
+			\node[below, rotate=90] at (p4.outlet) {\color{red}outlet};
+			\node[left] at (p4.west) {outlet east};
+			\\ \hline
+			
+			% ========================== 
+			% Reciprocating pump
+			% ========================== 
+			\node[align=center]{reciprocating\\pump};
+			&
+			\node[reciprocating pump] {};
+			&
+			\node[reciprocating pump] (f) {};			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/left, 
+				se/right, 
+				sw/left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ 
+		};
+	\end{tikzpicture}
+\end{center}			
+
+
+\begin{center}
+	\begin{tikzpicture}[font=\footnotesize\ttfamily]
+		\matrix[
+		column sep=0.5cm,
+		row sep=0.5cm,
+		column1/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}},
+		column2/.style={nodes={anchor=center}}]{
+			% ========================== 
+			% Header
+			% ==========================
+			\node (s) {\normalsize\textbf{shape name}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{default}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{anchors}};
+			\draw (s.south west) -- (s.south east);
+			& 
+			\node (s) {\normalsize\textbf{unit int}};
+			\draw (s.south west) -- (s.south east);
+			&
+			\node (s) {\normalsize\textbf{unit ext}};
+			\draw (s.south west) -- (s.south east);
+			\\ 	
+			
+			% ========================== 
+			% Compressor
+			% ========================== 
+			\node{compressor};
+			&
+			\node[compressor] {};
+			&
+			\node[compressor, scale=2.5] (f) {};		
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/left, 
+				se/below right, 
+				sw/left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}		
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			% ========================== 
+			% Turbine
+			% ==========================
+			\node{turbine};
+			&
+			\node[turbine] {};
+			&
+			\node[turbine, scale=2.5] (f) {};			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}			
+			\foreach \anchor/\pos in {
+				ne/right, 
+				nw/above left, 
+				se/right, 
+				sw/below left,
+				nne/above, 
+				nnw/above, 
+				sse/below, 
+				ssw/below,
+				ese/right, 
+				wsw/left,
+				wnw/left,
+				ene/right}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			% ========================== 
+			% Feed
+			% ==========================
+			\node{feed};
+			&
+			\node[feed] {};
+			&
+			\node[feed, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.stream) {};
+			\node[right] at (f.stream) {\footnotesize\texttt{\textbf{e}} \textit{or} \redtt{stream}};
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			
+			% ========================== 
+			% Product
+			% ==========================
+			\node{product};
+			&
+			\node[product] {};
+			& 
+			\node[product, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.stream) {};
+			\node[left] at (f.stream) {\footnotesize \redtt{stream} \textit{or} \boldtt{w}};
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			& 
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			% ========================== 
+			% Valve
+			% ==========================
+			\node{valve};
+			&
+			\node[valve] {};
+			&
+			\node[valve, scale=2] (f) {};
+			
+			\foreach \anchor/\pos in {
+				n/above, 
+				e/right, 
+				w/left, 
+				s/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				ne/above right, 
+				nw/above left, 
+				se/below right, 
+				sw/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			\node[valve, unit ext=actuator, scale=1.5] (f) {};
+			\node[left] at (f.west) {actuator};
+			\foreach \anchor/\pos in {
+				actuator/above}
+			{\node[circle, draw, red, fill=red!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\color{red}\anchor};}
+			\\ \hline
+			
+			
+			% ========================== 
+			% Stream numbers
+			% ==========================
+			\node{\verb|\node[sid] {99};|};
+			&
+			\node[sid] (f) {99};
+			&
+			\node[sid, scale=2] (f) {99};		
+			\foreach \anchor/\pos in {
+				north/above, 
+				east/right, 
+				west/left, 
+				south/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				north east/above right, 
+				north west/above left, 
+				south east/below right, 
+				south west/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			&
+			% no unit ext
+			\\ \hline
+			
+			% ========================== 
+			% Electrical components
+			% ==========================
+			\node{\verb|\node[elec] {XX};|};
+			&
+			\node[elec] {XX};
+			&
+			\node[elec, scale=2] (f) {XX};		
+			\foreach \anchor/\pos in {
+				north/above, 
+				east/right, 
+				west/left, 
+				south/below}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\textbf{\anchor}}};}
+			
+			\foreach \anchor/\pos in {
+				north east/above right, 
+				north west/above left, 
+				south east/below right, 
+				south west/below left}
+			{\node[circle, draw, blue, fill=blue!25, inner sep=0pt, minimum size=3pt] at (f.\anchor) {};
+				\node[\pos] at (f.\anchor) {\footnotesize\texttt{\anchor}};}
+			
+			\draw[shift=(f.center),red] plot[mark=x] coordinates{(0,0)};
+			&
+			% no unit int
+			& 
+			% no unit ext
+			\\
+		};
+	\end{tikzpicture}
+\end{center}
+
+%\textbf{Drawing streams}
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\draw[->] (0,0.5) -- node[sid] {99} (2,0.5);
+	\draw[->] (0,0) -- node[valve] {} (2,0);
+	\draw[dashed] (0,-0.5) -- node[elec] {XX} (2,-0.5);
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\draw[->] (0,0.5) -- node[sid] {99} (2,0.5);
+				\draw[->] (0,0) -- node[valve] {} (2,0);
+				\draw[dashed] (0,-0.5) -- node[elec] {XX} (2,-0.5);
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+\vspace*{-1em}
+\begin{center}
+	\begin{minipage}{5in}
+		\begin{lstlisting}
+\begin{tikzpicture}
+	\tikzset{bridge radius=8pt} % default 0pt=straight line
+	\path[->, spath/save=over] (0,1) -- (1,1);
+	\path[->, spath/save=under] (0.5,-0.5) -- (0.5,0.5);
+	\tikzset{bridge={over}{under}}
+	\draw[->, spath/use=over] node[sid, pos=0.1]{1};
+	\draw[->, spath/use=under] node[sid, pos=0.1]{2};
+\end{tikzpicture}
+		\end{lstlisting}
+	\end{minipage}\hspace{0.25in}
+	\begin{minipage}{1in}
+		\begin{center}
+			\begin{tikzpicture}
+				\tikzset{bridge radius=8pt} % default 0pt=straight line
+				\path[->, spath/save=over] (0,0) -- (2,0);
+				\path[->, spath/save=under] (1,-1) -- (1,1);
+				\tikzset{bridge={over}{under}}
+				\draw[->, spath/use=over] node[sid, pos=0.1]{1};
+				\draw[->, spath/use=under] node[sid, pos=0.2]{2};
+			\end{tikzpicture}
+		\end{center}
+	\end{minipage}
+\end{center}
+
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/pfdicons/pfdicons-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pfdicons/pfdicons.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pfdicons/pfdicons.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pfdicons/pfdicons.sty	2021-07-24 20:46:11 UTC (rev 60037)
@@ -0,0 +1,1713 @@
+% ==============================================================
+% pfdicons.sty
+% Copyright 2021 Aaron Drews
+%
+% 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 “maintained”.
+% 
+% The Current Maintainer of this work is Aaron Drews.
+%
+% This work consists of the files pig.dtx and pig.ins
+% and the derived file pig.sty.
+
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pfdicons}[2021/07/23 PFD Icons package, v1.0]
+
+\RequirePackage{tikz}
+\RequirePackage{ifthen}
+
+\usetikzlibrary{positioning}
+\usetikzlibrary{spath3}
+\usetikzlibrary{arrows.meta}
+\usetikzlibrary{shapes}
+\usetikzlibrary{intersections}
+
+
+% ========= CUSTOM KEYS ==========
+\pgfkeys{/tikz/unit int/.initial = empty}
+\pgfkeys{/tikz/unit ext/.initial = none}
+
+
+% ========= CUSTOM SHAPES ==========
+\makeatletter
+
+% ==============================================================
+% tube reactor
+% ==============================================================
+\pgfdeclareshape{tube reactor}{
+	% A horizontal rectangle with curved endcaps
+	% Shape approved by kiwi
+	
+	% Saved anchors
+	\savedanchor{\bottomleft}{\pgfpoint{-4mm}{-3mm}}
+	\savedanchor{\topright}{\pgfpoint{4mm}{3mm}}
+	\savedanchor{\farleft}{\pgfpoint{-6mm}{0mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\topright \pgf at x=0mm}
+	\anchor{south}{\bottomleft \pgf at x=0mm}
+	\anchor{east}{\farleft \pgf at x=-\pgf at x}
+	\anchor{west}{\farleft}
+	\anchor{south west}{\bottomleft}
+	\anchor{north east}{\topright}
+	\anchor{north west}{\topright \pgf at x=-\pgf at x}
+	\anchor{south east}{\topright \pgf at y=-\pgf at y}
+	\anchor{north north east}{\pgfpoint{3mm}{3mm}}
+	\anchor{north north west}{\pgfpoint{-3mm}{3mm}}
+	\anchor{south south east}{\pgfpoint{3mm}{-3mm}}
+	\anchor{south south west}{\pgfpoint{-3mm}{-3mm}}
+	\anchor{east north east}{\pgfpointadd{\pgfpoint{4mm}{0mm}}{\pgfpointpolar{45}{2mm and 3mm}}}
+	\anchor{east south east}{\pgfpointadd{\pgfpoint{4mm}{0mm}}{\pgfpointpolar{-45}{2mm and 3mm}}}
+	\anchor{west north west}{\pgfpointadd{\pgfpoint{-4mm}{0mm}}{\pgfpointpolar{135}{2mm and 3mm}}}
+	\anchor{west south west}{\pgfpointadd{\pgfpoint{-4mm}{0mm}}{\pgfpointpolar{225}{2mm and 3mm}}}
+	
+	% Special anchors (only useful for certain key=value pairs)
+	\anchor{west shell}{\pgfpoint{-3mm}{4mm}}
+	\anchor{east shell}{\pgfpoint{3mm}{4mm}}
+	\anchor{north shell}{\pgfpoint{-3mm}{4mm}}
+	\anchor{south shell}{\pgfpoint{3mm}{-4mm}}
+	
+	% Draw it
+	\backgroundpath{		
+		% Main rectangle
+		\pgfpathmoveto{\topright}
+		\pgfpatharc{90}{-90}{2mm and 3mm}
+		\pgfpathlineto{\bottomleft}
+		\pgfpatharc{270}{90}{2mm and 3mm}		
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+	\foregroundpath{	
+		% Fills based on unit int variable	
+		
+		% unit int=packed (yields "X" symbol)
+		\ifthenelse{\equal{packed}{\pgfkeysvalueof{/tikz/unit int}}}
+		{\pgfpathmoveto{\topright}		
+			\pgfpathlineto{\bottomleft}
+			\pgfpathlineto{\bottomleft \pgf at y=-\pgf at y}
+			\pgfpathlineto{\topright \pgf at y=-\pgf at y}
+			\pgfpathclose
+		}{}
+		
+		% unit int=fixed (yields diagonal lines)
+		\ifthenelse{\equal{fixed}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\topright}
+			\pgfpathlineto{\topright \pgf at y=-\pgf at y}
+			\pgfpathmoveto{\bottomleft}
+			\pgfpathlineto{\bottomleft \pgf at y=-\pgf at y}
+			
+			\foreach \xOne/\yOne/\xTwo/\yTwo in
+			{	-4mm/1mm/-2mm/3mm, 
+				-4mm/-1mm/0mm/3mm,
+				-4mm/-3mm/2mm/3mm,
+				-2mm/-3mm/4mm/3mm,
+				0mm/-3mm/4mm/1mm,
+				2mm/-3mm/4mm/-1mm
+			}
+			{\pgfpathmoveto{\pgfpoint{\xOne}{\yOne}}
+				\pgfpathlineto{\pgfpoint{\xTwo}{\yTwo}}}
+		}{}
+		
+		% unit int=tubular (yields horizontal lines)
+		\ifthenelse{\equal{tubular}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\topright}
+			\pgfpathlineto{\topright \pgf at y=-\pgf at y}
+			\pgfpathmoveto{\bottomleft}
+			\pgfpathlineto{\bottomleft \pgf at y=-\pgf at y}
+			
+			\foreach \y in
+			{2mm, 1mm, 0mm, -1mm, -2mm} % also west/left
+			{\pgfpathmoveto{\pgfpoint{-4mm}{\y}}
+				\pgfpathlineto{\pgfpoint{4mm}{\y}}}		
+		}{}
+		
+		% unit ext=cis shell (yields utility stems, both on north side)
+		\ifthenelse{\equal{cis shell}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathrectanglecorners{\pgfpoint{-3.5mm}{3mm}}{\pgfpoint{-2.5mm}{4mm}}
+			\pgfpathrectanglecorners{\pgfpoint{2.5mm}{4mm}}{\pgfpoint{3.5mm}{3mm}}	
+			\pgfpathmoveto{\pgfpoint{-3.8mm}{4mm}}
+			\pgfpathlineto{\pgfpoint{-2.2mm}{4mm}}
+			\pgfpathmoveto{\pgfpoint{2.2mm}{4mm}}
+			\pgfpathlineto{\pgfpoint{3.8mm}{4mm}}
+		}{}
+	
+		% unit ext=trans shell (yields utility stems, one on north and one on south)
+		\ifthenelse{\equal{trans shell}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathrectanglecorners{\pgfpoint{-3.5mm}{3mm}}{\pgfpoint{-2.5mm}{4mm}}
+			\pgfpathrectanglecorners{\pgfpoint{2.5mm}{-4mm}}{\pgfpoint{3.5mm}{-3mm}}	
+			\pgfpathmoveto{\pgfpoint{-3.8mm}{4mm}}
+			\pgfpathlineto{\pgfpoint{-2.2mm}{4mm}}
+			\pgfpathmoveto{\pgfpoint{2.2mm}{-4mm}}
+			\pgfpathlineto{\pgfpoint{3.8mm}{-4mm}}
+		}{}
+	}
+}
+
+
+% ==============================================================
+% tank reactor
+% ==============================================================
+\pgfdeclareshape{tank reactor}{
+	% A squat tank with a mixer and jacket
+	
+	% Saved anchors
+	\savedanchor{\bottomleft}{\pgfpoint{-4mm}{-5mm}}
+	\savedanchor{\topright}{\pgfpoint{4mm}{2mm}}
+	\savedanchor{\bottom}{\pgfpoint{0mm}{-7mm}}
+	\savedanchor{\top}{\pgfpoint{0mm}{4mm}}
+	
+%	\ifthenelse{\equal{lower jacket}{\pgfkeysvalueof{/tikz/unit ext}}\OR
+%				\equal{none}{\pgfkeysvalueof{/tikz/unit ext}} }
+%	{% default (none) or unit ext=lower jacket
+%	\savedanchor{\westjacket}{\pgfpoint{-5mm}{-4mm}}
+%	}
+%	{% unit ext=side jacket (or anything else)
+%	\savedanchor{\westjacket}{\pgfpoint{-5mm}{-1.5mm}}
+%	}
+
+	\savedanchor{\westjacket}{
+		\pgf at x=-5mm
+		\ifthenelse{\equal{lower jacket}{\pgfkeysvalueof{/tikz/unit ext}}\OR
+			\equal{none}{\pgfkeysvalueof{/tikz/unit ext}} }
+		{\pgf at y=-4mm} % lower jacket or default
+		{\pgf at y=-1.5mm} % side jacket or anything else
+	} 
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\top}
+	\anchor{south}{\bottom}
+	\anchor{east}{\topright \pgf at y=0mm}
+	\anchor{west}{\bottomleft \pgf at y=0mm}
+	\anchor{south west}{\bottomleft}
+	\anchor{north east}{\topright}
+	\anchor{north west}{\topright \pgf at x=-\pgf at x}
+	\anchor{south east}{\bottomleft \pgf at x=-\pgf at x}
+	\anchor{north north east}{\pgfpointadd{\pgfpoint{0mm}{2mm}}{\pgfpointpolar{45}{4mm and 2mm}}}
+	\anchor{north north west}{\pgfpointadd{\pgfpoint{0mm}{2mm}}{\pgfpointpolar{135}{4mm and 2mm}}}
+	\anchor{west south west}{\pgfpoint{-4mm}{-3mm}}
+	\anchor{south south west}{\pgfpointadd{\pgfpoint{0mm}{-5mm}}{\pgfpointpolar{225}{4mm and 2mm}}}
+	\anchor{south south east}{\pgfpointadd{\pgfpoint{0mm}{-5mm}}{\pgfpointpolar{315}{4mm and 2mm}}}
+	\anchor{east south east}{\pgfpoint{4mm}{-3mm}}
+	
+	% Special anchors
+	% east/west jacket points move but north/south do not (they're essentially undefined for lower jacket but the definitions are retained to avoid errors)
+	\anchor{west jacket}{\westjacket}
+	\anchor{east jacket}{\westjacket \pgf at x=-\pgf at x}
+	\anchor{north west jacket}{\pgfpoint{-5mm}{1mm}}
+	\anchor{south west jacket}{\pgfpoint{-5mm}{-4mm}}
+	\anchor{north east jacket}{\pgfpoint{5mm}{1mm}}
+	\anchor{south east jacket}{\pgfpoint{5mm}{-4mm}}
+	\anchor{north motor}{\pgfpoint{0mm}{6.8mm}}
+	\anchor{west motor}{\pgfpoint{-1mm}{6.15mm}}
+	\anchor{east motor}{\pgfpoint{1mm}{6.15mm}}
+	
+	% Draw it
+	\backgroundpath{		
+		% Main rectangle
+		\pgfpathmoveto{\topright}
+		\pgfpatharc{0}{180}{4mm and 2mm}
+		\pgfpathlineto{\bottomleft}
+		\pgfpatharc{180}{360}{4mm and 2mm}		
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+		
+	}
+	\foregroundpath{	
+		% Fills based on unit int variable	
+		
+		% unit int=stirred (yields stirrer with motor)
+		\ifthenelse{\equal{stirred}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% Motor:
+			\pgfpathmoveto{\pgfpoint{-1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{6.8mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{6.8mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{0.6mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{-0.6mm}{5mm}}
+			\pgfpathclose
+			\pgfpathmoveto{\pgfpoint{-1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{5.5mm}}
+			
+			% Shaft and mixer: squared
+			\pgfpathmoveto{\pgfpoint{0mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{0mm}{-4mm}}
+			\pgfpathmoveto{\pgfpoint{-1.5mm}{-4mm}}
+			\pgfpathlineto{\pgfpoint{1.5mm}{-4mm}}
+			\pgfpathrectanglecorners{\pgfpoint{-1.5mm}{-4.8mm}}{\pgfpoint{-2mm}{-3.2mm}}
+			\pgfpathrectanglecorners{\pgfpoint{1.5mm}{-4.8mm}}{\pgfpoint{2mm}{-3.2mm}}
+		
+			% Shaft and mixer: rounded (removed because I thought squared looked better)
+%			\pgfpathmoveto{\pgfpoint{0mm}{5mm}}
+%			\pgfpathlineto{\pgfpoint{0mm}{-4mm}}
+%			\pgfpathlineto{\pgfpoint{1.5mm}{-3.25mm}}
+%			\pgfpatharc{90}{-90}{0.75mm}
+%			\pgfpathlineto{\pgfpoint{-1.5mm}{-3.25mm}}
+%			\pgfpatharc{90}{270}{0.75mm}		
+%			\pgfpathlineto{\pgfpoint{0mm}{-4mm}}
+		}{}
+		
+			
+		% unit int=liquid (liquid indicator from west to east)
+		\ifthenelse{\equal{liquid}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% Use arcs because they scale more easily (see note in VESSEL shape)
+			\pgfpathmoveto{\pgfpoint{-4mm}{0mm}}
+			\foreach \x in {-2.4mm,-0.8mm,...,4mm}{ 
+				\pgfpatharcto{1.6mm}{5mm}{0}{0}{1}{\pgfpoint{\x}{0mm}}
+			}
+		}{}
+	
+	
+		% unit int=stirred liquid (yields stirrer with motor and liquid level)
+		\ifthenelse{\equal{stirred liquid}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% Motor:
+			\pgfpathmoveto{\pgfpoint{-1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{6.8mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{6.8mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{0.6mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{-0.6mm}{5mm}}
+			\pgfpathclose
+			\pgfpathmoveto{\pgfpoint{-1mm}{5.5mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{5.5mm}}
+			
+			% Shaft and mixer:
+			\pgfpathmoveto{\pgfpoint{0mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{0mm}{-4mm}}
+			\pgfpathmoveto{\pgfpoint{-1.5mm}{-4mm}}
+			\pgfpathlineto{\pgfpoint{1.5mm}{-4mm}}
+			\pgfpathrectanglecorners{\pgfpoint{-1.5mm}{-4.8mm}}{\pgfpoint{-2mm}{-3.2mm}}
+			\pgfpathrectanglecorners{\pgfpoint{1.5mm}{-4.8mm}}{\pgfpoint{2mm}{-3.2mm}}
+			
+			% Use arcs because they scale more easily (see note in VESSEL shape)
+			\pgfpathmoveto{\pgfpoint{-4mm}{0mm}}
+			\foreach \x in {-2.4mm,-0.8mm,...,4mm}{ 
+				\pgfpatharcto{1.6mm}{5mm}{0}{0}{1}{\pgfpoint{\x}{0mm}}
+			}
+		}{}
+	
+	
+		% unit ext=lower jacket (yields jacket on lower portion)
+		\ifthenelse{\equal{lower jacket}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\pgfpoint{-4mm}{-2mm}}
+			\pgfpathlineto{\pgfpoint{-5mm}{-2.5mm}}
+			\pgfpathlineto{\pgfpoint{-5mm}{-5mm}}
+			\pgfpatharc{180}{360}{5mm and 3mm}
+			\pgfpathlineto{\pgfpoint{5mm}{-2.5mm}}
+			\pgfpathlineto{\pgfpoint{4mm}{-2mm}}
+			
+			\pgfpathlineto{\bottomleft \pgf at x=-\pgf at x}
+			\pgfpatharc{0}{-180}{4mm and 2mm}
+			\pgfpathclose
+		}{}
+	
+		% unit ext=side jacket (yields jacket sides)
+		\ifthenelse{\equal{side jacket}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\pgfpoint{-4mm}{-5mm}}
+			\pgfpathlineto{\pgfpoint{-5mm}{-4.5mm}}
+			\pgfpathlineto{\pgfpoint{-5mm}{1.5mm}}
+			\pgfpathlineto{\pgfpoint{-4mm}{2mm}}
+			\pgfpathclose
+			
+			\pgfpathmoveto{\pgfpoint{4mm}{-5mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{-4.5mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{1.5mm}}
+			\pgfpathlineto{\pgfpoint{4mm}{2mm}}
+			\pgfpathclose
+		}{}
+		
+	}
+}
+
+
+% ==============================================================
+% Column
+% ==============================================================
+\pgfkeys{/tikz/top tray/.initial = none}
+\pgfkeys{/tikz/feed tray/.initial = none}
+\pgfkeys{/tikz/bottom tray/.initial = none}
+\pgfdeclareshape{column}{
+	% A vertical rectangle with curved endcaps
+	
+	% Saved anchors
+	\savedanchor{\bottomleft}{\pgfpoint{-3mm}{-12mm}}
+	\savedanchor{\topright}{\pgfpoint{3mm}{12mm}}
+	\savedanchor{\farnorth}{\pgfpoint{0mm}{14mm}}
+	
+	% The distillate and bottoms anchors move based on whether the column has simple heat exchangers or not. They're stored as saved anchors so that they don't move when subsequent columns are placed.
+	\savedanchor{\distillate}{
+		\pgf at y=12mm
+		\ifthenelse{\equal{simple hx}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{\pgf at x=6mm} % simple hx
+		{\pgf at x=3mm} % anything else (same as north east)
+	} 
+	\savedanchor{\bottoms}{
+		\ifthenelse{\equal{simple hx}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{\pgf at x=6mm % simple hx
+			\pgf at y=-18mm} 
+		{\pgf at x=3mm % anything else (same as south east)
+			\pgf at y=-12mm} 
+	} 
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\farnorth}
+	\anchor{south}{\farnorth \pgf at y=-\pgf at y}
+	\anchor{east}{\topright \pgf at y=0mm}
+	\anchor{west}{\bottomleft \pgf at y=0mm}
+	\anchor{south west}{\bottomleft}
+	\anchor{north east}{\topright}
+	\anchor{north west}{\topright \pgf at x=-\pgf at x}
+	\anchor{south east}{\topright \pgf at y=-\pgf at y}
+	\anchor{west north west}{\pgfpoint{-3mm}{7mm}}
+	\anchor{east north east}{\pgfpoint{3mm}{7mm}}
+	\anchor{west south west}{\pgfpoint{-3mm}{-7mm}}
+	\anchor{east south east}{\pgfpoint{3mm}{-7mm}}
+	\anchor{south south east}{\pgfpointadd{\pgfpoint{0mm}{-12mm}}{\pgfpointpolar{315}{3mm and 2mm}}}
+	\anchor{south south west}{\pgfpointadd{\pgfpoint{0mm}{-12mm}}{\pgfpointpolar{225}{3mm and 2mm}}}
+	\anchor{north north east}{\pgfpointadd{\pgfpoint{0mm}{12mm}}{\pgfpointpolar{45}{3mm and 2mm}}}
+	\anchor{north north west}{\pgfpointadd{\pgfpoint{0mm}{12mm}}{\pgfpointpolar{135}{3mm and 2mm}}}
+	
+	
+	% Special anchors
+	\anchor{distillate}{\distillate} % distillate product
+	\anchor{bottoms}{\bottoms} % bottoms product
+	\anchor{feed tray}{\pgfpoint{0mm}{0mm}} % feed tray label anchor
+	\anchor{top tray}{\pgfpoint{0mm}{10mm}} % top tray label anchor
+	\anchor{bottom tray}{\pgfpoint{0mm}{-10mm}} % bottom tray label anchor
+	
+	% Draw it
+	\backgroundpath{		
+		% Main rectangle
+		\pgfpathmoveto{\bottomleft \pgf at x=-\pgf at x}
+		\pgfpatharc{0}{-180}{3mm and 2mm}
+		\pgfpathlineto{\bottomleft \pgf at y=-\pgf at y}
+		\pgfpatharc{180}{0}{3mm and 2mm}		
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+		
+	}
+	\foregroundpath{
+		% Fills based on unit int variable
+		
+		% unit int=tray OR dashed tray (yields horizontal, dashed lines)
+		% I didn't like how \pgfsetdash changed when drawings were scaled so I drew the lines manually to always have two openings
+		\ifthenelse{\equal{tray}{\pgfkeysvalueof{/tikz/unit int}}\OR
+			\equal{dashed tray}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	%\pgfsetdash{{1.333mm}{1mm}}{0mm}
+			\foreach \y in {10mm,8mm,...,-12mm} % also west/left
+			{\pgfpathmoveto{\pgfpoint{-3mm}{\y}}
+				\pgfpathlineto{\pgfpoint{-1.6mm}{\y}}
+				\pgfpathmoveto{\pgfpoint{-0.6mm}{\y}}
+				\pgfpathlineto{\pgfpoint{0.6mm}{\y}}
+				\pgfpathmoveto{\pgfpoint{1.6mm}{\y}}
+				\pgfpathlineto{\pgfpoint{3mm}{\y}}}			
+			\pgfsetroundjoin
+		}{}
+		
+		% unit int=weir tray (yields trays which alternate sides with small 
+		%weirs)
+		\ifthenelse{\equal{weir tray}{\pgfkeysvalueof{/tikz/unit int}}}
+		{\foreach \y in {8mm,4mm,...,-12mm}
+			{\pgfpathmoveto{\pgfpoint{-3mm}{\y}}
+				\pgfpathlineto{\pgfpoint{1.5mm}{\y}}
+				\pgfpathlineto{\pgfpointadd{\pgfpoint{1.5mm}{\y}}{\pgfpoint{0mm}{0.6mm}}}
+			}
+			\foreach \y in {10mm,6mm,...,-12mm} 
+			{\pgfpathmoveto{\pgfpoint{3mm}{\y}}
+				\pgfpathlineto{\pgfpoint{-1.5mm}{\y}}
+				\pgfpathlineto{\pgfpointadd{\pgfpoint{-1.5mm}{\y}}{\pgfpoint{0mm}{0.6mm}}}
+			}				
+			\pgfsetroundjoin
+		}{}
+		
+		
+		% unit int=numbered tray (yields horizontal, dashed lines at bottom, 
+		%middle, top only)
+		\ifthenelse{\equal{numbered tray}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\foreach \y in {10mm,0mm,-10mm} % also west/left
+			{\pgfpathmoveto{\pgfpoint{-3mm}{\y}}
+				\pgfpathlineto{\pgfpoint{-1.6mm}{\y}}
+				\pgfpathmoveto{\pgfpoint{-0.6mm}{\y}}
+				\pgfpathlineto{\pgfpoint{0.6mm}{\y}}
+				\pgfpathmoveto{\pgfpoint{1.6mm}{\y}}
+				\pgfpathlineto{\pgfpoint{3mm}{\y}}}						
+			\pgfsetroundjoin
+
+		}{}		
+		% Add text if unit int=numbered tray and numbers given
+		\ifthenelse{ % top tray
+			\equal{numbered tray}{\pgfkeysvalueof{/tikz/unit int}}\AND
+			\NOT\equal{none}{\pgfkeysvalueof{/tikz/top tray}}
+		}{\pgftext[bottom, at={\pgfpoint{0mm}{10mm}}, y=1pt] {\footnotesize \pgfkeysvalueof{/tikz/top tray}}}
+		{}
+		\ifthenelse{ % feed tray
+			\equal{numbered tray}{\pgfkeysvalueof{/tikz/unit int}}\AND
+			\NOT\equal{none}{\pgfkeysvalueof{/tikz/feed tray}}
+		}{\pgftext[bottom, y=1pt] {\footnotesize \pgfkeysvalueof{/tikz/feed tray}}}
+		{}
+		\ifthenelse{ % bottom tray
+			\equal{numbered tray}{\pgfkeysvalueof{/tikz/unit int}}\AND
+			\NOT\equal{none}{\pgfkeysvalueof{/tikz/bottom tray}}
+		}{\pgftext[bottom, at={\pgfpoint{0mm}{-10mm}}, y=1pt] {\footnotesize \pgfkeysvalueof{/tikz/bottom tray}}}
+		{}
+		
+		
+		% unit int=packed (yields X)
+		\ifthenelse{\equal{packed}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{-3mm}{-10mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{10mm}}
+			\pgfpathlineto{\pgfpoint{-3mm}{10mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{-10mm}}
+			\pgfpathclose
+			\pgfsetroundjoin
+		}{}
+	
+	
+		% unit int= double packed (yields two X segments)
+		\ifthenelse{\equal{double packed}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{-3mm}{10mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{10mm}}
+			\pgfpathlineto{\pgfpoint{-3mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{1mm}}
+			\pgfpathclose
+			
+			\pgfpathmoveto{\pgfpoint{-3mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{-3mm}{-10mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{-10mm}}
+			\pgfpathclose
+			\pgfsetroundjoin
+		}{}				
+	
+		% Exterior add-ons based on unit ext variable
+		% unit ext=simple hx (gives simple circles for condenser, reboiler)
+		% To prevent the interiors from being filled the "pen" has to be moved after *each* straight line segment, which is why there are seeming duplicates of \pgfpathmoveto for this key. 
+		\ifthenelse{\equal{simple hx}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\farnorth}
+			\pgfpathlineto{\pgfpoint{0mm}{18mm}}
+			\pgfpathmoveto{\pgfpoint{0mm}{18mm}} % pen up
+			\pgfpathlineto{\pgfpoint{6mm}{18mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{18mm}} % pen up
+			\pgfpathlineto{\pgfpoint{6mm}{16mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{14mm}} % pen up
+			\pgfpathlineto{\pgfpoint{6mm}{12mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{12mm}} % pen up
+			\pgfpathlineto{\pgfpoint{3mm}{12mm}}
+			\pgfpathmoveto{\pgfpoint{3mm}{12mm}} % pen up
+			\pgfpathcircle{\pgfpoint{6mm}{15mm}}{1mm}
+			
+			\pgfpathmoveto{\farnorth \pgf at y=-\pgf at y}
+			\pgfpathlineto{\pgfpoint{0mm}{-18mm}}
+			\pgfpathmoveto{\pgfpoint{0mm}{-18mm}} % pen up
+			\pgfpathlineto{\pgfpoint{6mm}{-18mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{-18mm}} % pen up
+			\pgfpathlineto{\pgfpoint{6mm}{-16mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{-14mm}}
+			\pgfpathlineto{\pgfpoint{6mm}{-12mm}}
+			\pgfpathmoveto{\pgfpoint{6mm}{-12mm}} % pen up
+			\pgfpathlineto{\pgfpoint{3mm}{-12mm}}
+			\pgfpathmoveto{\pgfpoint{3mm}{-12mm}} % pen up
+			\pgfpathcircle{\pgfpoint{6mm}{-15mm}}{1mm}
+			\pgfsetroundjoin
+		}{}	
+	}
+}
+
+% ==============================================================
+% Basic Heat Exchanger
+% ==============================================================
+\pgfdeclareshape{basic hx}{
+	% Circular hx with straight or U-tube pipes, stems optional
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{3mm}}
+	\savedanchor{\east}{\pgfpoint{3mm}{0mm}}
+	\savedanchor{\northeast}{\pgfpointpolar{45}{3mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\east}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\northeast \pgf at x=-\pgf at x}
+	\anchor{west}{\east \pgf at x=-\pgf at x}
+	\anchor{south west}{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	\anchor{south}{\north \pgf at y=-\pgf at y}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	% Special anchors (only useful for certain key=value pairs)
+	\anchor{north util}{\pgfpoint{0mm}{5mm}}
+	\anchor{south util}{\pgfpoint{0mm}{-5mm}}
+	\anchor{east util}{\pgfpointadd
+		{\northeast \pgf at y=-\pgf at y}
+		{\pgfpoint{0mm}{-2mm}}
+	}
+	\anchor{west util}{
+		\pgfpointadd
+		{\northeast \pgf at y=-\pgf at y \pgf at x=-\pgf at x}
+		{\pgfpoint{0mm}{-2mm}}
+	}
+	
+	% Draw it
+	\backgroundpath{		
+		% Main circle = 3mm
+		\pgfpathcircle{\pgfpointorigin}{3mm}
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+	\foregroundpath{	
+		% Fills based on unit int variable
+		% Straight-thru	
+		\ifthenelse{\equal{straight}{\pgfkeysvalueof{/tikz/unit int}}\OR
+			\equal{empty}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{0mm}{-3mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{0mm}{3mm}} 			
+		}{}
+		
+		% U-tube
+		\ifthenelse{\equal{U tube}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y} 
+			\pgfpathlineto{\northeast \pgf at x=-\pgf at x \pgf at y=1mm}
+			\pgfpathlineto{\pgfpoint{0mm}{-1mm}}
+			\pgfpathlineto{\northeast \pgf at y=1mm}
+			\pgfpathlineto{\northeast \pgf at y=-\pgf at y} 			
+		}{}
+		
+		% Stems based on both unit int and unit ext
+		% Straight util
+		\ifthenelse{{\equal{straight}{\pgfkeysvalueof{/tikz/unit int}}}\OR
+			{\equal{empty}{\pgfkeysvalueof{/tikz/unit int}}}
+			\AND
+			\equal{util}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\pgfpoint{0mm}{-5mm}}
+			\pgfpathlineto{\pgfpoint{0mm}{-3mm}}
+			\pgfpathmoveto{\pgfpoint{0mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{0mm}{5mm}}			
+		}{}
+		
+		% U-tube util
+		\ifthenelse{\equal{U tube}{\pgfkeysvalueof{/tikz/unit int}}\AND
+			\equal{util}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+			\pgfpathlineto{\pgfpointadd
+				{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+				{\pgfpoint{0mm}{-2mm}}
+			}
+			\pgfpathmoveto{\northeast \pgf at y=-\pgf at y} % 2.236 = sqrt(5) 
+			\pgfpathlineto{\pgfpointadd
+				{\northeast \pgf at y=-\pgf at y}
+				{\pgfpoint{0mm}{-2mm}}
+			}			
+		}{}
+	}
+}
+
+
+% ==============================================================
+% Fired heat exchanger
+% ==============================================================
+\pgfdeclareshape{fired hx}{
+	% Box with chimney, flame, and through tube
+	% Three unit int keys--single, double, or triple--for process tubes
+	
+	% Saved anchors
+	\savedanchor{\chimneynorth}{\pgfpoint{1mm}{11mm}}
+	\savedanchor{\chimneysouth}{\pgfpoint{1mm}{7mm}}
+	\savedanchor{\northeast}{\pgfpoint{5mm}{4mm}}
+	\savedanchor{\southwest}{\pgfpoint{-5mm}{-6mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\chimneynorth \pgf at x=0mm}
+	\anchor{north west}{\northeast \pgf at x=-\pgf at x}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{south west}{\southwest}
+	\anchor{south}{\southwest \pgf at x=0mm}
+	\anchor{south east}{\southwest \pgf at x=-\pgf at x}
+	
+	% Half-cardinals which align with double/triple tubes:
+	\anchor{north north east}{\pgfpoint{1mm}{9mm}}
+	\anchor{north north west}{\pgfpoint{-1mm}{9mm}}
+	\anchor{east north east}{\pgfpoint{5mm}{3mm}}
+	\anchor{west north west}{\pgfpoint{-5mm}{3mm}}
+	\anchor{east south east}{\pgfpoint{5mm}{-1mm}}
+	\anchor{west south west}{\pgfpoint{-5mm}{-1mm}}
+	
+	% Remaining half-cardinals distributed across base
+	\anchor{south south east}{\pgfpoint{3mm}{-6mm}}
+	\anchor{south south west}{\pgfpoint{-3mm}{-6mm}}
+	
+	% Draw it			
+	\backgroundpath{		
+		% Main outline
+		\pgfpathmoveto{\chimneynorth}
+		\pgfpathlineto{\chimneysouth}
+		\pgfpathlineto{\northeast}
+		\pgfpathlineto{\southwest \pgf at x=-\pgf at x}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\northeast \pgf at x=-\pgf at x}
+		\pgfpathlineto{\chimneysouth \pgf at x=-\pgf at x}
+		\pgfpathlineto{\chimneynorth \pgf at x=-\pgf at x}
+		
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+	\foregroundpath{	
+		% Thru-tubes and burner based on unit int keys
+		% Single or empty (default)
+		\ifthenelse{{\equal{single}{\pgfkeysvalueof{/tikz/unit int}}}\OR
+			{\equal{empty}{\pgfkeysvalueof{/tikz/unit int}}}
+		}{
+			\pgfpathmoveto{\southwest \pgf at y=0mm}
+			\pgfpathlineto{\pgfpoint{-2mm}{0mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{2mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{-2mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{0mm}}
+			\pgfpathlineto{\northeast \pgf at y=0mm}
+			
+			% Burner
+			\pgfpathmoveto{\southwest \pgf at x=0mm}
+			\pgfpathlineto{\pgfpoint{0mm}{-4mm}}
+			\pgfpathcircle{\pgfpoint{0mm}{-3.5mm}}{0.5mm}
+		}{}
+		
+		% Double (two process tubes)
+		\ifthenelse{\equal{double}{\pgfkeysvalueof{/tikz/unit int}}
+		}{
+			% Lower line
+			\pgfpathmoveto{\pgfpoint{-5mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{-3mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{-1mm}}
+			% Upper line
+			\pgfpathmoveto{\pgfpoint{-5mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{3mm}}
+			
+			% Burner
+			\pgfpathmoveto{\southwest \pgf at x=0mm}
+			\pgfpathlineto{\pgfpoint{0mm}{-5mm}}
+			\pgfpathcircle{\pgfpoint{0mm}{-4.5mm}}{0.5mm}
+		}{}
+	
+		% Triple (three process tubes)
+		\ifthenelse{\equal{triple}{\pgfkeysvalueof{/tikz/unit int}}
+		}{
+			% Lower line
+			\pgfpathmoveto{\pgfpoint{-5mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{-3mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{-1mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{-1mm}}
+			% Middle line
+			\pgfpathmoveto{\pgfpoint{-5mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{5mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{2mm}{3mm}}
+			\pgfpathlineto{\pgfpoint{5mm}{3mm}}
+			% Upper line
+			\pgfpathmoveto{\pgfpoint{-1mm}{9mm}}
+			\pgfpathlineto{\pgfpoint{-0.5mm}{10mm}}
+			\pgfpathlineto{\pgfpoint{0.5mm}{8mm}}
+			\pgfpathlineto{\pgfpoint{1mm}{9mm}}
+			
+			% Burner
+			\pgfpathmoveto{\southwest \pgf at x=0mm}
+			\pgfpathlineto{\pgfpoint{0mm}{-5mm}}
+			\pgfpathcircle{\pgfpoint{0mm}{-4.5mm}}{0.5mm}
+		}{}
+	}
+}
+
+% ==============================================================
+% Shell and tube heat exchanger
+% ==============================================================
+\pgfdeclareshape{shell and tube hx}{
+	% Box with horizontal lines for tubes
+	
+	% Saved anchors
+	\savedanchor{\northeast}{\pgfpoint{6mm}{3mm}}
+	\savedanchor{\southwest}{\pgfpoint{-6mm}{-3mm}}
+	\savedanchor{\shellnortheast}{\pgfpoint{3mm}{3mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\northeast \pgf at x=0mm}
+	\anchor{south}{\northeast \pgf at x=0mm \pgf at y=-\pgf at y}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{north east}{\pgfpoint{5mm}{3mm}}
+	\anchor{south east}{\pgfpoint{5mm}{-3mm}}
+	\anchor{north west}{\pgfpoint{-5mm}{3mm}}
+	\anchor{south west}{\pgfpoint{-5mm}{-3mm}}
+	
+	\anchor{north north east}{\shellnortheast}
+	\anchor{north north west}{\shellnortheast \pgf at x=-\pgf at x}
+	\anchor{south south east}{\shellnortheast \pgf at y=-\pgf at y}
+	\anchor{south south west}{\shellnortheast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	\anchor{east north east}{\pgfpoint{6mm}{2mm}}
+	\anchor{east south east}{\pgfpoint{6mm}{-2mm}}
+	\anchor{west north west}{\pgfpoint{-6mm}{2mm}}
+	\anchor{west south west}{\pgfpoint{-6mm}{-2mm}}
+	
+	% Special anchors	
+	\anchor{west shell}{\pgfpoint{-3mm}{4mm}}
+	\anchor{east shell}{\pgfpoint{3mm}{4mm}}
+	\anchor{north shell}{\pgfpoint{-3mm}{4mm}}
+	\anchor{south shell}{\pgfpoint{3mm}{-4mm}}
+	
+	% Draw it
+	\backgroundpath{		
+		% Main outline
+		\pgfpathmoveto{\northeast}
+		\pgfpathlineto{\northeast \pgf at x=-\pgf at x}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\northeast \pgf at y=-\pgf at y}
+		\pgfpathclose
+		
+		% Vertical lines for tube sheets
+		\pgfpathmoveto{\pgfpoint{-4mm}{3mm}}
+		\pgfpathlineto{\pgfpoint{-4mm}{-3mm}}
+		\pgfpathmoveto{\pgfpoint{4mm}{3mm}}
+		\pgfpathlineto{\pgfpoint{4mm}{-3mm}}
+		
+		% Horizontal lines for pipes
+		\foreach \y in {3mm,2mm,...,-3mm} 
+		{\pgfpathmoveto{\pgfpoint{-4mm}{\y}}
+			\pgfpathlineto{\pgfpoint{4mm}{\y}}}
+		
+		\pgfsetroundjoin
+		\pgfsetroundcap
+		
+	}
+	\foregroundpath{
+	% Two pass: adds a horizontal line on shell side
+	\ifthenelse{\equal{two pass}{\pgfkeysvalueof{/tikz/unit int}}
+	}{
+		\pgfpathmoveto{\pgfpoint{-6mm}{0mm}}
+		\pgfpathlineto{\pgfpoint{-4mm}{0mm}}
+	}{}
+
+	% Four pass: adds three horizontal line on shell sides
+	\ifthenelse{\equal{four pass}{\pgfkeysvalueof{/tikz/unit int}}
+	}{	% east-side line
+		\pgfpathmoveto{\pgfpoint{4mm}{0mm}}
+		\pgfpathlineto{\pgfpoint{6mm}{0mm}}
+		% west-side line, top
+		\pgfpathmoveto{\pgfpoint{-6mm}{1.5mm}}
+		\pgfpathlineto{\pgfpoint{-4mm}{1.5mm}}
+		% west-side line, bottom
+		\pgfpathmoveto{\pgfpoint{-6mm}{-1.5mm}}
+		\pgfpathlineto{\pgfpoint{-4mm}{-1.5mm}}
+	}{}
+
+	% unit ext=cis shell (yields utility stems, both on north side)
+	\ifthenelse{\equal{cis shell}{\pgfkeysvalueof{/tikz/unit ext}}}
+	{	\pgfpathrectanglecorners{\pgfpoint{-3.5mm}{3mm}}{\pgfpoint{-2.5mm}{4mm}}
+		\pgfpathrectanglecorners{\pgfpoint{2.5mm}{4mm}}{\pgfpoint{3.5mm}{3mm}}	
+		\pgfpathmoveto{\pgfpoint{-3.8mm}{4mm}}
+		\pgfpathlineto{\pgfpoint{-2.2mm}{4mm}}
+		\pgfpathmoveto{\pgfpoint{2.2mm}{4mm}}
+		\pgfpathlineto{\pgfpoint{3.8mm}{4mm}}
+	}{}
+	
+	% unit ext=trans shell (yields utility stems, one on north and one on south)
+	\ifthenelse{\equal{trans shell}{\pgfkeysvalueof{/tikz/unit ext}}}
+	{	\pgfpathrectanglecorners{\pgfpoint{-3.5mm}{3mm}}{\pgfpoint{-2.5mm}{4mm}}
+		\pgfpathrectanglecorners{\pgfpoint{2.5mm}{-4mm}}{\pgfpoint{3.5mm}{-3mm}}	
+		\pgfpathmoveto{\pgfpoint{-3.8mm}{4mm}}
+		\pgfpathlineto{\pgfpoint{-2.2mm}{4mm}}
+		\pgfpathmoveto{\pgfpoint{2.2mm}{-4mm}}
+		\pgfpathlineto{\pgfpoint{3.8mm}{-4mm}}
+	}{}
+	}
+}
+
+% ==============================================================
+% Plate heat exchanger
+% ==============================================================
+\pgfdeclareshape{plate hx}{
+	% Box with vertical lines for plates
+	
+	% Saved anchors
+	\savedanchor{\northeast}{\pgfpoint{4mm}{3mm}}
+	\savedanchor{\southwest}{\pgfpoint{-4mm}{-3mm}}
+	\savedanchor{\northeastanchor}{\pgfpoint{4mm}{3mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\northeast \pgf at x=0mm}
+	\anchor{south}{\southwest \pgf at x=0mm}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{north east}{\northeastanchor}
+	\anchor{north west}{\northeastanchor \pgf at x=-\pgf at x}
+	\anchor{south east}{\northeastanchor \pgf at y=-\pgf at y}
+	\anchor{south west}{\northeastanchor \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	
+	\anchor{north north east}{\pgfpoint{3mm}{3mm}}
+	\anchor{north north west}{\pgfpoint{-3mm}{3mm}}
+	\anchor{south south east}{\pgfpoint{3mm}{-3mm}}
+	\anchor{south south west}{\pgfpoint{-3mm}{-3mm}}
+	\anchor{east north east}{\pgfpoint{4mm}{2mm}}
+	\anchor{east south east}{\pgfpoint{4mm}{-2mm}}
+	\anchor{west north west}{\pgfpoint{-4mm}{2mm}}
+	\anchor{west south west}{\pgfpoint{-4mm}{-2mm}}
+	
+	% Draw it
+	\backgroundpath{		
+		% Main outline
+		\pgfpathmoveto{\northeast}
+		\pgfpathlineto{\northeast \pgf at x=-\pgf at x}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\northeast \pgf at y=-\pgf at y}
+		\pgfpathclose
+		
+		% Vertical lines for tube sheets
+		\foreach \x in {3mm,2mm,...,-4mm} 
+		{\pgfpathmoveto{\pgfpoint{\x}{-3mm}}
+			\pgfpathlineto{\pgfpoint{\x}{3mm}}}
+		
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+}
+
+% ==============================================================
+% Vessel
+% ==============================================================
+\pgfdeclareshape{vessel}{
+	% A small cylinder for storage, flash, phase separation, etc
+	
+	% Saved anchors
+	\savedanchor{\bottomleft}{\pgfpoint{-3mm}{-5mm}}
+	\savedanchor{\topright}{\pgfpoint{3mm}{5mm}}
+	\savedanchor{\top}{\pgfpoint{0mm}{7mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\top}
+	\anchor{south}{\top \pgf at y=-\pgf at y}
+	\anchor{east}{\topright \pgf at y=0mm}
+	\anchor{west}{\bottomleft \pgf at y=0mm}
+	\anchor{south west}{\bottomleft}
+	\anchor{north east}{\topright}
+	\anchor{north west}{\topright \pgf at x=-\pgf at x}
+	\anchor{south east}{\bottomleft \pgf at x=-\pgf at x}
+	
+	\anchor{east north east}{\pgfpoint{3mm}{3mm}}
+	\anchor{east south east}{\pgfpoint{3mm}{-3mm}}
+	\anchor{west north west}{\pgfpoint{-3mm}{3mm}}
+	\anchor{west south west}{\pgfpoint{-3mm}{-3mm}}
+	\anchor{south south east}{\pgfpointadd{\pgfpoint{0mm}{-5mm}}{\pgfpointpolar{315}{3mm and 2mm}}}
+	\anchor{south south west}{\pgfpointadd{\pgfpoint{0mm}{-5mm}}{\pgfpointpolar{225}{3mm and 2mm}}}
+	\anchor{north north east}{\pgfpointadd{\pgfpoint{0mm}{5mm}}{\pgfpointpolar{45}{3mm and 2mm}}}
+	\anchor{north north west}{\pgfpointadd{\pgfpoint{0mm}{5mm}}{\pgfpointpolar{135}{3mm and 2mm}}}
+	
+	% Special anchors (only useful for unit ext=hx)
+	\anchor{north hx}{\pgfpoint{5mm}{-2mm}}
+	\anchor{south hx}{\pgfpoint{5mm}{-5mm}}	
+	
+	% Draw it
+	\backgroundpath{		
+		% Main tank
+		\pgfpathmoveto{\topright}
+		\pgfpatharc{0}{180}{3mm and 2mm}
+		\pgfpathlineto{\bottomleft}
+		\pgfpatharc{180}{360}{3mm and 2mm}		
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+	\foregroundpath{
+		% Fills based on unit int variable	
+
+		% unit int=liquid (liquid indicator from west to east)
+		\ifthenelse{\equal{liquid}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% Use arcs because they scale more easily (see note below)
+			\pgfpathmoveto{\pgfpoint{-3mm}{0mm}}
+			\foreach \x in {-1.5mm,0mm,...,3mm}{ 
+				\pgfpatharcto{1.5mm}{5mm}{0}{0}{1}{\pgfpoint{\x}{0mm}}
+			}		
+			% Previously this drawing was attempted with decorations but it was hard to get the decorations to scale correctly when the shape was scaled (read: I couldn't get it to work). Thus the various arc operations above were used instead, which had the ancillary benefit of being easier to get to start and stop at specific locations.
+		}{}
+	
+	
+		% unit int=liquid rotated (liquid indicator from north to south)
+		% To be used with \node[vessel, rotate=90, unit int=liquid rot] {}
+		\ifthenelse{\equal{liquid rotated}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% Use arcs because they scale more easily (see note below)
+			\pgfpathmoveto{\pgfpoint{0mm}{7mm}}
+			\foreach \y in {5mm,3mm,...,-9mm}{ 
+				\pgfpatharcto{5mm}{2mm}{0}{0}{1}{\pgfpoint{0mm}{\y}}
+			}	
+		}{}
+		
+		% unit int=phase sep (demister and knock-down)
+		\ifthenelse{\equal{phase sep}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	% knock-down
+			\pgfpathmoveto{\pgfpoint{-3mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{-2mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{-1mm}}
+			
+			% demister (avoid "dashed")
+			\pgfpathmoveto{\topright}
+			\pgfpathlineto{\topright \pgf at x=2.1mm}
+			\pgfpathmoveto{\topright \pgf at x=1.3mm}
+			\pgfpathlineto{\topright \pgf at x=0.4mm}
+			\pgfpathmoveto{\topright \pgf at x=-0.4mm}
+			\pgfpathlineto{\topright \pgf at x=-1.3mm}
+			\pgfpathmoveto{\topright \pgf at x=-2.1mm}
+			\pgfpathlineto{\topright \pgf at x=-\pgf at x}
+		
+		}{}
+				
+		% unit ext=simple hx (yields hx on lower portion)
+		\ifthenelse{\equal{simple hx}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	% An additional \pgfpathmoveto is used after each stroke to "raise the pen" and prevent fill inside the hx stems
+			\pgfpathmoveto{\pgfpoint{5mm}{-2mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{-2mm}}
+			\pgfpathmoveto{\pgfpoint{-1mm}{-2mm}} % pen up
+			\pgfpathlineto{\pgfpoint{1mm}{-3.5mm}}
+			\pgfpathmoveto{\pgfpoint{1mm}{-3.5mm}} % pen up
+			\pgfpathlineto{\pgfpoint{-1mm}{-5mm}}
+			\pgfpathmoveto{\pgfpoint{-1mm}{-5mm}} % pen up
+			\pgfpathlineto{\pgfpoint{5mm}{-5mm}}
+		}{}
+		
+	}
+}
+
+
+% ==============================================================
+% Centrifugal pump
+% ==============================================================
+\pgfdeclareshape{centrifugal pump}{
+	% Plain or with stylized inlets, outlets
+			
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{3mm}}
+	\savedanchor{\east}{\pgfpoint{3mm}{0mm}}
+	\savedanchor{\northeast}{\pgfpointpolar{45}{3mm}}
+	
+	% The outlet anchor defaults to north but is otherwise selected based on unit ext
+	\savedanchor{\outlet}{
+		\ifthenelse{\equal{none}{\pgfkeysvalueof{/tikz/unit ext}}} % default to north
+			{\pgf at x=0mm \pgf at y=3mm}{}
+		\ifthenelse{\equal{outlet east}{\pgfkeysvalueof{/tikz/unit ext}}}
+			{\pgf at x=4mm \pgf at y=2mm}{}
+		\ifthenelse{\equal{outlet west}{\pgfkeysvalueof{/tikz/unit ext}}}
+			{\pgf at x=-4mm \pgf at y=2mm}{}
+		\ifthenelse{\equal{outlet north east}{\pgfkeysvalueof{/tikz/unit ext}}}
+			{\pgf at x=2mm \pgf at y=4mm}{}
+		\ifthenelse{\equal{outlet north west}{\pgfkeysvalueof{/tikz/unit ext}}}
+			{\pgf at x=-2mm \pgf at y=4mm}{}		
+	} 	
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\east}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\northeast \pgf at x=-\pgf at x}
+	\anchor{west}{\east \pgf at x=-\pgf at x}
+	\anchor{south west}{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	\anchor{south}{\pgf at x=0mm \pgf at y=-4mm}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	% Special anchors (only useful for certain key=value pairs)
+	\anchor{outlet}{\outlet}
+	
+	% Draw it
+	\backgroundpath{				
+		\pgfsetroundjoin
+		\pgfsetroundcap
+		% Draw plain circle if UNITEXTERIOR is not set
+		\ifthenelse{\equal{none}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathcircle{\pgfpointorigin}{3mm} % Main circle = 3mm			
+		}{}
+		
+		% Outlets based on unit ext variable
+		% Outlet to east	
+		\ifthenelse{\equal{outlet east}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\north}
+			\pgfpatharc{-270}{19.4712}{3mm} % 19.4712 = asin(1/3)
+			\pgfpathlineto{\pgfpoint{4mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{4mm}{3mm}}
+			\pgfpathclose
+		}{}
+
+		% Outlet to west	
+		\ifthenelse{\equal{outlet west}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\north}
+			\pgfpatharc{90}{-199.4712}{3mm} % -199.4712 = rad2deg(asin(1/3))-180
+			\pgfpathlineto{\pgfpoint{-4mm}{1mm}}
+			\pgfpathlineto{\pgfpoint{-4mm}{3mm}}
+			\pgfpathclose		
+		}{}
+		% Outlet to north west
+		\ifthenelse{\equal{outlet north west}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\east \pgf at x=-\pgf at x} % west point
+			\pgfpatharc{-180}{109.4712}{3mm} % 109.4712 = 180-rad2deg(acos(1/3))
+			\pgfpathlineto{\pgfpoint{-1mm}{4mm}}
+			\pgfpathlineto{\pgfpoint{-3mm}{4mm}}
+			\pgfpathclose	
+		}{}
+		% Outlet to north east
+		\ifthenelse{\equal{outlet north east}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\east}
+			\pgfpatharc{0}{-289.4712}{3mm} % -289.4712 = rad2deg(acos(1/3))-360
+			\pgfpathlineto{\pgfpoint{1mm}{4mm}}
+			\pgfpathlineto{\pgfpoint{3mm}{4mm}}
+			\pgfpathclose
+		}{}
+	
+
+	}
+	\foregroundpath{
+		% Inlets are in FOREGROUNDPATH so that when a fill color is used they don't produce an unfilled region.
+		
+		% Fills based on unit int variable
+
+		% Inlet from north	
+		\ifthenelse{\equal{inlet north}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{-1mm}{0mm}}
+			\pgfpatharc{180}{360}{1mm}			
+		}{}
+	
+		% Inlet from west	
+		\ifthenelse{\equal{inlet west}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{0mm}{1mm}}
+			\pgfpatharc{90}{-90}{1mm}			
+		}{}
+		
+		% Inlet from east	
+		\ifthenelse{\equal{inlet east}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{0mm}{1mm}}
+			\pgfpatharc{90}{270}{1mm}			
+		}{}
+		
+		% Inlet from south	
+		\ifthenelse{\equal{inlet south}{\pgfkeysvalueof{/tikz/unit int}}}
+		{	\pgfpathmoveto{\pgfpoint{1mm}{0mm}}
+			\pgfpatharc{0}{180}{1mm}			
+		}{}
+
+	}
+
+	\behindbackgroundpath{
+		% The base goes here so that when a fill color is used it doesn't produce an unfilled region. It's always drawn.
+		\pgfpathmoveto{\pgfpointpolar{225}{3mm}}
+		\pgfpathlineto{\pgfpoint{-3mm}{-4mm}}
+		\pgfpathlineto{\pgfpoint{3mm}{-4mm}}
+		\pgfpathlineto{\pgfpointpolar{315}{3mm}}
+		\pgfpatharc{315}{225}{3mm}
+		\pgfpathclose	
+	}
+		
+}
+
+
+% ==============================================================
+% Reciprocating pump
+% ==============================================================
+\pgfdeclareshape{reciprocating pump}{
+	% Two squares connected by a shaft
+	
+	% Saved anchors
+	\savedanchor{\bottomleft}{\pgfpoint{-2mm}{-8mm}}
+	\savedanchor{\topright}{\pgfpoint{2mm}{2mm}}
+	
+	% Normal anchors
+	\anchor{center}{\pgfpointorigin}
+	\anchor{north}{\topright \pgf at x=0mm}
+	\anchor{south}{\bottomleft \pgf at x=0mm}
+	\anchor{east}{\topright \pgf at y=0mm}
+	\anchor{west}{\bottomleft \pgf at y=0mm}
+	\anchor{south west}{\bottomleft}
+	\anchor{north east}{\topright}
+	\anchor{north west}{\topright \pgf at x=-\pgf at x}
+	\anchor{south east}{\bottomleft \pgf at x=-\pgf at x}
+	
+	% Special anchors
+	% OUTLET defined only so that switching between centrifugal and reciprocating doesn't break
+	\anchor{outlet}{\topright \pgf at x=0mm}
+	
+	% Draw it
+	\backgroundpath{		
+		% Pump head
+		\pgfpathrectanglecorners{\topright}{\topright \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+		% Shaft
+		\pgfpathrectanglecorners{\pgfpoint{-0.3mm}{-2mm}}{\pgfpoint{0.3mm}{-4mm}}
+		% Motor
+		\pgfpathrectanglecorners{\bottomleft}{\pgfpoint{2mm}{-4mm}}
+
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+}
+
+
+
+
+% ==============================================================
+% Compressor
+% ==============================================================
+\pgfdeclareshape{compressor}{
+	% Squashed quadrilateral
+	
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{2mm}}
+	\savedanchor{\northeast}{\pgfpoint{3mm}{1mm}}
+	\savedanchor{\southwest}{\pgfpoint{-3mm}{-3mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\southwest \pgf at y=-\pgf at y}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{south west}{\southwest}
+	\anchor{south}{\north \pgf at y=-\pgf at y}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	\anchor{north north west}{\pgfpointlineatdistance{1mm}{\southwest \pgf at y=-\pgf at y}{\north}}
+	\anchor{north north east}{\pgfpointlineatdistance{1mm}{\northeast}{\north}}
+	\anchor{south south west}{\pgfpointlineatdistance{1mm}{\southwest}{\north \pgf at y=-\pgf at y}}
+	\anchor{south south east}{\pgfpointlineatdistance{1mm}{\northeast \pgf at y=-\pgf at y}{\north \pgf at y=-\pgf at y}}
+	\anchor{west north west}{\pgfpointlineatdistance{1mm}{\southwest \pgf at y=-\pgf at y}{\southwest}}
+	\anchor{west south west}{\pgfpointlineatdistance{1mm}{\southwest}{\southwest \pgf at y=0mm}}
+	
+	% Spacing is tight on the outlet side so these anchors placed partway between cardinals and off-cardinals
+	\anchor{east north east}{\pgfpointlineattime{0.5}{\northeast}{\northeast \pgf at y=0mm}}
+	\anchor{east south east}{\pgfpointlineattime{0.5}{\northeast \pgf at y=-\pgf at y}{\northeast \pgf at y=0mm}}
+	
+	% Draw it
+	\backgroundpath{
+		% Main circle
+		\pgfpathmoveto{\northeast}
+		\pgfpathlineto{\southwest \pgf at y=-\pgf at y}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\northeast \pgf at y=-\pgf at y}
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+}
+
+
+% ==============================================================
+% Turbine
+% ==============================================================
+\pgfdeclareshape{turbine}{
+	% Squashed quadrilateral (simple mirror of compressor)
+	
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{2mm}}
+	\savedanchor{\northeast}{\pgfpoint{3mm}{3mm}}
+	\savedanchor{\southwest}{\pgfpoint{-3mm}{-1mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\southwest \pgf at y=-\pgf at y}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{south west}{\southwest}
+	\anchor{south}{\north \pgf at y=-\pgf at y}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	\anchor{north north west}{\pgfpointlineatdistance{1mm}{\southwest \pgf at y=-\pgf at y}{\north}}
+	\anchor{north north east}{\pgfpointlineatdistance{1mm}{\northeast}{\north}}
+	\anchor{south south west}{\pgfpointlineatdistance{1mm}{\southwest}{\north \pgf at y=-\pgf at y}}
+	\anchor{south south east}{\pgfpointlineatdistance{1mm}{\northeast \pgf at y=-\pgf at y}{\north \pgf at y=-\pgf at y}}
+	\anchor{east north east}{\pgfpointlineatdistance{1mm}{\northeast}{\northeast \pgf at y=0mm}}
+	\anchor{east south east}{\pgfpointlineatdistance{1mm}{\northeast \pgf at y=-\pgf at y}{\northeast \pgf at y=0mm}}
+	
+	% Spacing is tight on the inlet side so these anchors placed partway between cardinals and off-cardinals
+	\anchor{west north west}{\pgfpointlineattime{0.5}{\southwest \pgf at y=-\pgf at y}{\southwest \pgf at y=0mm}}
+	\anchor{west south west}{\pgfpointlineattime{0.5}{\southwest}{\southwest \pgf at y=0mm}}
+	
+	% Draw it
+	\backgroundpath{
+		% Main circle
+		\pgfpathmoveto{\northeast}
+		\pgfpathlineto{\southwest \pgf at y=-\pgf at y}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\northeast \pgf at y=-\pgf at y}
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+}
+
+
+% ==============================================================
+% Valve
+% ==============================================================
+\pgfdeclareshape{valve}{
+	% General valve with or without unspecified actuator
+	
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\northeast}{\pgfpoint{1.5mm}{1mm}}
+	\savedanchor{\southwest}{\pgfpoint{-1.5mm}{-1mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\northeast \pgf at y=0mm}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\northeast \pgf at x=0mm}
+	\anchor{north west}{\southwest \pgf at y=-\pgf at y}
+	\anchor{west}{\southwest \pgf at y=0mm}
+	\anchor{south west}{\southwest}
+	\anchor{south}{\southwest \pgf at x=0mm}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	% Special anchors
+	\anchor{actuator}{\pgfpoint{0mm}{3mm}}
+	
+	% Draw it
+	\backgroundpath{
+		\pgfpathmoveto{\northeast}
+		\pgfpathlineto{\southwest}
+		\pgfpathlineto{\southwest \pgf at y=-\pgf at y}
+		\pgfpathlineto{\northeast \pgf at y=-\pgf at y}
+		\pgfpathclose
+		\pgfsetroundjoin
+		\pgfsetroundcap
+	}
+	\foregroundpath{
+		% Actuator based on unit ext key
+		% Unspecified actuator	
+		\ifthenelse{\equal{actuator}{\pgfkeysvalueof{/tikz/unit ext}}}
+		{	\pgfpathmoveto{\center}
+			\pgfpathlineto{\pgfpoint{0mm}{2mm}}
+			\pgfpathlineto{\pgfpoint{-1mm}{2mm}}
+			\pgfpatharc{180}{0}{1mm}
+			\pgfpathlineto{\pgfpoint{0mm}{2mm}}
+			\pgfpathclose % unnecessary for stroke purposes but removes 
+			%arrowheads since used inside paths			
+		}{}	
+	}
+}
+
+
+
+
+% ==============================================================
+% Feed
+% ==============================================================
+\pgfdeclareshape{feed}{
+	% Half-filled circle, radius = 1.5 mm
+	
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{1.5mm}}
+	\savedanchor{\east}{\pgfpoint{1.5mm}{0mm}}
+	\savedanchor{\northeast}{\pgfpointpolar{45}{1.5mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\east}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\northeast \pgf at x=-\pgf at x}
+	\anchor{west}{\east \pgf at x=-\pgf at x}
+	\anchor{south west}{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	\anchor{south}{\north \pgf at y=-\pgf at y}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	% Special anchors (only useful for certain key=value pairs)
+	\anchor{stream}{\east}
+	
+	% Draw it
+	\backgroundpath{
+		% Main circle
+		\pgfpathcircle{\pgfpointorigin}{1.5mm}
+	}
+	\beforebackgroundpath{		
+		% Filled half uses stroke color as fill
+		% Procedure for this derived from tex.stackexchange.com/questions/218968
+		\expandafter\global\expandafter\let\expandafter\pgfmysavedstrokecolor\csname\string\color at pgfstrokecolor\endcsname%
+		\expandafter\pgf at setfillcolor\pgfmysavedstrokecolor
+		\pgfpathmoveto{\north}
+		\pgfpatharc{90}{270}{1.5mm}
+		\pgfusepath{stroke, fill}
+	}
+}
+
+
+% ==============================================================
+% Product
+% ==============================================================
+\pgfdeclareshape{product}{
+	% Half-filled circle, radius = 1.5 mm
+	
+	% Saved anchors
+	\savedanchor{\center}{\pgfpointorigin}
+	\savedanchor{\north}{\pgfpoint{0mm}{1.5mm}}
+	\savedanchor{\east}{\pgfpoint{1.5mm}{0mm}}
+	\savedanchor{\northeast}{\pgfpointpolar{45}{1.5mm}}
+	
+	% Normal anchors
+	\anchor{center}{\center}
+	\anchor{east}{\east}
+	\anchor{north east}{\northeast}
+	\anchor{north}{\north}
+	\anchor{north west}{\northeast \pgf at x=-\pgf at x}
+	\anchor{west}{\east \pgf at x=-\pgf at x}
+	\anchor{south west}{\northeast \pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+	\anchor{south}{\north \pgf at y=-\pgf at y}
+	\anchor{south east}{\northeast \pgf at y=-\pgf at y}
+	
+	% Special anchors (only useful for certain key=value pairs)
+	\anchor{stream}{\east \pgf at x=-\pgf at x}
+	
+	% Draw it
+	\backgroundpath{
+		% Main circle
+		\pgfpathcircle{\pgfpointorigin}{1.5mm}
+	}
+	\beforebackgroundpath{
+		% Filled half uses stroke color as fill
+		% Procedure for this derived from tex.stackexchange.com/questions/218968
+		\expandafter\global\expandafter\let\expandafter\pgfmysavedstrokecolor\csname\string\color at pgfstrokecolor\endcsname%
+		\expandafter\pgf at setfillcolor\pgfmysavedstrokecolor
+		% Filled half
+		\pgfpathmoveto{\north}
+		\pgfpatharc{90}{-90}{1.5mm}
+		\pgfusepath{stroke, fill}
+	}
+}
+
+
+
+\makeatother
+
+
+
+% ========= ADDITIONAL SHAPES ==========
+% These shapes do not require custom PGF shapes; they're modifications of 
+%existing shapes.
+\tikzset{>=Triangle} % see section 16.5 for other arrowheads (arrow tips)
+\tikzstyle{sid} = [diamond, draw, solid, fill=white, text badly centered,inner 
+sep=1pt, font=\footnotesize]
+\tikzstyle{elec} = [circle, draw, solid, fill=white, text badly centered,inner 
+sep=1pt, font=\footnotesize]
+
+
+
+% ========= DEFAULT TIKZSTYLES ==========
+% The following TIKZSTYLES set all custom shapes to, by default, be drawn with a stroke in black and no fill.
+\tikzset{tube reactor/.style={shape=tube reactor, draw=black}}
+\tikzset{tank reactor/.style={shape=tank reactor, draw=black}}
+\tikzset{column/.style={shape=column, draw=black}}
+\tikzset{vessel/.style={shape=vessel, draw=black}}
+\tikzset{basic hx/.style={shape=basic hx, draw=black}}
+\tikzset{fired hx/.style={shape=fired hx, draw=black}}
+\tikzset{shell and tube hx/.style={shape=shell and tube hx, draw=black}}
+\tikzset{plate hx/.style={shape=plate hx, draw=black}}
+\tikzset{centrifugal pump/.style={shape=centrifugal pump, draw=black}}
+\tikzset{reciprocating pump/.style={shape=reciprocating pump, draw=black}}
+\tikzset{compressor/.style={shape=compressor, draw=black}}
+\tikzset{turbine/.style={shape=turbine, draw=black}}
+\tikzset{feed/.style={shape=feed, draw=black}}
+\tikzset{product/.style={shape=product, draw=black}}
+\tikzset{valve/.style={shape=valve, draw=black, fill=white}} % fill=white since usually placed on paths
+
+
+
+% ========= ANCHOR ALIASING ==========
+% Command for aliasing anchors (tex.stackexchange.com/questions/145134)
+%\pgfdeclareanchoralias{<shape>}{<anchor>}{<alias>}
+\newcommand*\pgfdeclareanchoralias[3]{%
+	\expandafter\def\csname pgf at anchor@#1@#3\expandafter\endcsname
+	\expandafter{\csname pgf at anchor@#1@#2\endcsname}}
+
+% In general, all compass directions are aliased with their abbreviations: north=n, south east = se, etc.
+% Sure would be nice if this could be done in a for loop :/ but some are different.
+
+% Tank reactor
+\pgfdeclareanchoralias{tank reactor}{north}{n}
+\pgfdeclareanchoralias{tank reactor}{south}{s}
+\pgfdeclareanchoralias{tank reactor}{east}{e}
+\pgfdeclareanchoralias{tank reactor}{west}{w}
+\pgfdeclareanchoralias{tank reactor}{north east}{ne}
+\pgfdeclareanchoralias{tank reactor}{north west}{nw}
+\pgfdeclareanchoralias{tank reactor}{south east}{se}
+\pgfdeclareanchoralias{tank reactor}{south west}{sw}
+\pgfdeclareanchoralias{tank reactor}{north north east}{nne}
+\pgfdeclareanchoralias{tank reactor}{north north west}{nnw}
+\pgfdeclareanchoralias{tank reactor}{south south west}{ssw}
+\pgfdeclareanchoralias{tank reactor}{south south east}{sse}
+\pgfdeclareanchoralias{tank reactor}{east south east}{ese}
+\pgfdeclareanchoralias{tank reactor}{west south west}{wsw}
+
+% Tube reactor
+\pgfdeclareanchoralias{tube reactor}{north}{n}
+\pgfdeclareanchoralias{tube reactor}{south}{s}
+\pgfdeclareanchoralias{tube reactor}{east}{e}
+\pgfdeclareanchoralias{tube reactor}{west}{w}
+\pgfdeclareanchoralias{tube reactor}{north east}{ne}
+\pgfdeclareanchoralias{tube reactor}{north west}{nw}
+\pgfdeclareanchoralias{tube reactor}{south east}{se}
+\pgfdeclareanchoralias{tube reactor}{south west}{sw}
+\pgfdeclareanchoralias{tube reactor}{north north east}{nne}
+\pgfdeclareanchoralias{tube reactor}{north north west}{nnw}
+\pgfdeclareanchoralias{tube reactor}{south south west}{ssw}
+\pgfdeclareanchoralias{tube reactor}{south south east}{sse}
+\pgfdeclareanchoralias{tube reactor}{east south east}{ese}
+\pgfdeclareanchoralias{tube reactor}{west south west}{wsw}
+\pgfdeclareanchoralias{tube reactor}{west north west}{wnw}
+\pgfdeclareanchoralias{tube reactor}{east north east}{ene}
+
+% Basic hx
+\pgfdeclareanchoralias{basic hx}{north}{n}
+\pgfdeclareanchoralias{basic hx}{south}{s}
+\pgfdeclareanchoralias{basic hx}{east}{e}
+\pgfdeclareanchoralias{basic hx}{west}{w}
+\pgfdeclareanchoralias{basic hx}{north east}{ne}
+\pgfdeclareanchoralias{basic hx}{north west}{nw}
+\pgfdeclareanchoralias{basic hx}{south east}{se}
+\pgfdeclareanchoralias{basic hx}{south west}{sw}
+
+% Shell and tube hx
+\pgfdeclareanchoralias{shell and tube hx}{north}{n}
+\pgfdeclareanchoralias{shell and tube hx}{south}{s}
+\pgfdeclareanchoralias{shell and tube hx}{east}{e}
+\pgfdeclareanchoralias{shell and tube hx}{west}{w}
+\pgfdeclareanchoralias{shell and tube hx}{north east}{ne}
+\pgfdeclareanchoralias{shell and tube hx}{north west}{nw}
+\pgfdeclareanchoralias{shell and tube hx}{south east}{se}
+\pgfdeclareanchoralias{shell and tube hx}{south west}{sw}
+\pgfdeclareanchoralias{shell and tube hx}{north north east}{nne}
+\pgfdeclareanchoralias{shell and tube hx}{north north west}{nnw}
+\pgfdeclareanchoralias{shell and tube hx}{south south west}{ssw}
+\pgfdeclareanchoralias{shell and tube hx}{south south east}{sse}
+\pgfdeclareanchoralias{shell and tube hx}{east south east}{ese}
+\pgfdeclareanchoralias{shell and tube hx}{west south west}{wsw}
+\pgfdeclareanchoralias{shell and tube hx}{west north west}{wnw}
+\pgfdeclareanchoralias{shell and tube hx}{east north east}{ene}
+
+% Plate hx
+\pgfdeclareanchoralias{plate hx}{north}{n}
+\pgfdeclareanchoralias{plate hx}{south}{s}
+\pgfdeclareanchoralias{plate hx}{east}{e}
+\pgfdeclareanchoralias{plate hx}{west}{w}
+\pgfdeclareanchoralias{plate hx}{north east}{ne}
+\pgfdeclareanchoralias{plate hx}{north west}{nw}
+\pgfdeclareanchoralias{plate hx}{south east}{se}
+\pgfdeclareanchoralias{plate hx}{south west}{sw}
+\pgfdeclareanchoralias{plate hx}{north north east}{nne}
+\pgfdeclareanchoralias{plate hx}{north north west}{nnw}
+\pgfdeclareanchoralias{plate hx}{south south west}{ssw}
+\pgfdeclareanchoralias{plate hx}{south south east}{sse}
+\pgfdeclareanchoralias{plate hx}{east south east}{ese}
+\pgfdeclareanchoralias{plate hx}{west south west}{wsw}
+\pgfdeclareanchoralias{plate hx}{west north west}{wnw}
+\pgfdeclareanchoralias{plate hx}{east north east}{ene}
+
+% Fired hx
+\pgfdeclareanchoralias{fired hx}{north}{n}
+\pgfdeclareanchoralias{fired hx}{south}{s}
+\pgfdeclareanchoralias{fired hx}{east}{e}
+\pgfdeclareanchoralias{fired hx}{west}{w}
+\pgfdeclareanchoralias{fired hx}{north east}{ne}
+\pgfdeclareanchoralias{fired hx}{north west}{nw}
+\pgfdeclareanchoralias{fired hx}{south east}{se}
+\pgfdeclareanchoralias{fired hx}{south west}{sw}
+\pgfdeclareanchoralias{fired hx}{north north east}{nne}
+\pgfdeclareanchoralias{fired hx}{north north west}{nnw}
+\pgfdeclareanchoralias{fired hx}{south south west}{ssw}
+\pgfdeclareanchoralias{fired hx}{south south east}{sse}
+\pgfdeclareanchoralias{fired hx}{east south east}{ese}
+\pgfdeclareanchoralias{fired hx}{west south west}{wsw}
+\pgfdeclareanchoralias{fired hx}{west north west}{wnw}
+\pgfdeclareanchoralias{fired hx}{east north east}{ene}
+
+% Column
+\pgfdeclareanchoralias{column}{north}{n}
+\pgfdeclareanchoralias{column}{south}{s}
+\pgfdeclareanchoralias{column}{east}{e}
+\pgfdeclareanchoralias{column}{west}{w}
+\pgfdeclareanchoralias{column}{north east}{ne}
+\pgfdeclareanchoralias{column}{north west}{nw}
+\pgfdeclareanchoralias{column}{south east}{se}
+\pgfdeclareanchoralias{column}{south west}{sw}
+\pgfdeclareanchoralias{column}{north north east}{nne}
+\pgfdeclareanchoralias{column}{north north west}{nnw}
+\pgfdeclareanchoralias{column}{south south west}{ssw}
+\pgfdeclareanchoralias{column}{south south east}{sse}
+\pgfdeclareanchoralias{column}{east south east}{ese}
+\pgfdeclareanchoralias{column}{west south west}{wsw}
+\pgfdeclareanchoralias{column}{west north west}{wnw}
+\pgfdeclareanchoralias{column}{east north east}{ene}
+
+% Vessel
+\pgfdeclareanchoralias{vessel}{north}{n}
+\pgfdeclareanchoralias{vessel}{south}{s}
+\pgfdeclareanchoralias{vessel}{east}{e}
+\pgfdeclareanchoralias{vessel}{west}{w}
+\pgfdeclareanchoralias{vessel}{north east}{ne}
+\pgfdeclareanchoralias{vessel}{north west}{nw}
+\pgfdeclareanchoralias{vessel}{south east}{se}
+\pgfdeclareanchoralias{vessel}{south west}{sw}
+\pgfdeclareanchoralias{vessel}{north north east}{nne}
+\pgfdeclareanchoralias{vessel}{north north west}{nnw}
+\pgfdeclareanchoralias{vessel}{south south west}{ssw}
+\pgfdeclareanchoralias{vessel}{south south east}{sse}
+\pgfdeclareanchoralias{vessel}{east south east}{ese}
+\pgfdeclareanchoralias{vessel}{west south west}{wsw}
+\pgfdeclareanchoralias{vessel}{west north west}{wnw}
+\pgfdeclareanchoralias{vessel}{east north east}{ene}
+
+% Centrifugal pump
+\pgfdeclareanchoralias{centrifugal pump}{north}{n}
+\pgfdeclareanchoralias{centrifugal pump}{south}{s}
+\pgfdeclareanchoralias{centrifugal pump}{east}{e}
+\pgfdeclareanchoralias{centrifugal pump}{west}{w}
+\pgfdeclareanchoralias{centrifugal pump}{north east}{ne}
+\pgfdeclareanchoralias{centrifugal pump}{north west}{nw}
+\pgfdeclareanchoralias{centrifugal pump}{south east}{se}
+\pgfdeclareanchoralias{centrifugal pump}{south west}{sw}
+
+% Reciprocating pump
+\pgfdeclareanchoralias{reciprocating pump}{north}{n}
+\pgfdeclareanchoralias{reciprocating pump}{south}{s}
+\pgfdeclareanchoralias{reciprocating pump}{east}{e}
+\pgfdeclareanchoralias{reciprocating pump}{west}{w}
+\pgfdeclareanchoralias{reciprocating pump}{north east}{ne}
+\pgfdeclareanchoralias{reciprocating pump}{north west}{nw}
+\pgfdeclareanchoralias{reciprocating pump}{south east}{se}
+\pgfdeclareanchoralias{reciprocating pump}{south west}{sw}
+
+% Compressor
+\pgfdeclareanchoralias{compressor}{north}{n}
+\pgfdeclareanchoralias{compressor}{south}{s}
+\pgfdeclareanchoralias{compressor}{east}{e}
+\pgfdeclareanchoralias{compressor}{west}{w}
+\pgfdeclareanchoralias{compressor}{north east}{ne}
+\pgfdeclareanchoralias{compressor}{north west}{nw}
+\pgfdeclareanchoralias{compressor}{south east}{se}
+\pgfdeclareanchoralias{compressor}{south west}{sw}
+\pgfdeclareanchoralias{compressor}{north north east}{nne}
+\pgfdeclareanchoralias{compressor}{north north west}{nnw}
+\pgfdeclareanchoralias{compressor}{south south west}{ssw}
+\pgfdeclareanchoralias{compressor}{south south east}{sse}
+\pgfdeclareanchoralias{compressor}{east south east}{ese}
+\pgfdeclareanchoralias{compressor}{west south west}{wsw}
+\pgfdeclareanchoralias{compressor}{west north west}{wnw}
+\pgfdeclareanchoralias{compressor}{east north east}{ene}
+
+% Turbine
+\pgfdeclareanchoralias{turbine}{north}{n}
+\pgfdeclareanchoralias{turbine}{south}{s}
+\pgfdeclareanchoralias{turbine}{east}{e}
+\pgfdeclareanchoralias{turbine}{west}{w}
+\pgfdeclareanchoralias{turbine}{north east}{ne}
+\pgfdeclareanchoralias{turbine}{north west}{nw}
+\pgfdeclareanchoralias{turbine}{south east}{se}
+\pgfdeclareanchoralias{turbine}{south west}{sw}
+\pgfdeclareanchoralias{turbine}{north north east}{nne}
+\pgfdeclareanchoralias{turbine}{north north west}{nnw}
+\pgfdeclareanchoralias{turbine}{south south west}{ssw}
+\pgfdeclareanchoralias{turbine}{south south east}{sse}
+\pgfdeclareanchoralias{turbine}{east south east}{ese}
+\pgfdeclareanchoralias{turbine}{west south west}{wsw}
+\pgfdeclareanchoralias{turbine}{west north west}{wnw}
+\pgfdeclareanchoralias{turbine}{east north east}{ene}
+
+% Valve
+\pgfdeclareanchoralias{valve}{north}{n}
+\pgfdeclareanchoralias{valve}{south}{s}
+\pgfdeclareanchoralias{valve}{east}{e}
+\pgfdeclareanchoralias{valve}{west}{w}
+\pgfdeclareanchoralias{valve}{north east}{ne}
+\pgfdeclareanchoralias{valve}{north west}{nw}
+\pgfdeclareanchoralias{valve}{south east}{se}
+\pgfdeclareanchoralias{valve}{south west}{sw}
+
+% Feed
+\pgfdeclareanchoralias{feed}{north}{n}
+\pgfdeclareanchoralias{feed}{south}{s}
+\pgfdeclareanchoralias{feed}{east}{e}
+\pgfdeclareanchoralias{feed}{west}{w}
+\pgfdeclareanchoralias{feed}{north east}{ne}
+\pgfdeclareanchoralias{feed}{north west}{nw}
+\pgfdeclareanchoralias{feed}{south east}{se}
+\pgfdeclareanchoralias{feed}{south west}{sw}
+
+% Product
+\pgfdeclareanchoralias{product}{north}{n}
+\pgfdeclareanchoralias{product}{south}{s}
+\pgfdeclareanchoralias{product}{east}{e}
+\pgfdeclareanchoralias{product}{west}{w}
+\pgfdeclareanchoralias{product}{north east}{ne}
+\pgfdeclareanchoralias{product}{north west}{nw}
+\pgfdeclareanchoralias{product}{south east}{se}
+\pgfdeclareanchoralias{product}{south west}{sw}
+
+% SID (Stream identification)
+\pgfdeclareanchoralias{sid}{north}{n}
+\pgfdeclareanchoralias{sid}{south}{s}
+\pgfdeclareanchoralias{sid}{east}{e}
+\pgfdeclareanchoralias{sid}{west}{w}
+\pgfdeclareanchoralias{sid}{north east}{ne}
+\pgfdeclareanchoralias{sid}{north west}{nw}
+\pgfdeclareanchoralias{sid}{south east}{se}
+\pgfdeclareanchoralias{sid}{south west}{sw}
+
+
+% ======================================
+% Code from SPATH3 documentation for creating line breaks
+
+%\AtBeginDocument{\tikz[overlay] \path[spath/save=arc] (0,0) arc[radius=1cm, start angle=180, delta angle=-180];}
+
+% Updated to eliminate occasional whitespace per tex.stackexchange.com/questions/605800
+\AtBeginDocument{\sbox0{\tikz[overlay] \path[spath/save global=myarc] (0,0) arc[radius=1cm, start angle=180, delta angle=-180];}}
+
+\tikzset{
+	bridge path/.initial=myarc,
+	bridge radius/.initial=0pt,
+	bridge gap/.initial=4pt,
+	bridge/.style 2 args={
+		spath/split at intersections with={#1}{#2},
+		spath/insert gaps after
+		components={#1}{\pgfkeysvalueof{/tikz/bridge radius}},
+		spath/join components upright
+		with={#1}{\pgfkeysvalueof{/tikz/bridge path}},
+		spath/split at intersections with={#2}{#1},
+		spath/insert gaps after
+		components={#2}{\pgfkeysvalueof{/tikz/bridge gap}},
+	}
+}


Property changes on: trunk/Master/texmf-dist/tex/latex/pfdicons/pfdicons.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2021-07-24 14:14:14 UTC (rev 60036)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2021-07-24 20:46:11 UTC (rev 60037)
@@ -591,7 +591,7 @@
     pdftex-quiet pdftexcmds pdftricks pdftricks2 pdfx pdfxup
     pecha pedigree-perl penrose perception perfectcut perltex
     permute persian-bib
-    petiteannonce petri-nets pfarrei
+    petiteannonce petri-nets pfarrei pfdicons
     pgf pgf-blur pgf-cmykshadings pgf-pie
     pgf-soroban pgf-spectra pgf-umlcd pgf-umlsd
     pgfgantt pgfkeyx pgfmath-xfp pgfmolbio pgfmorepages

Modified: trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2021-07-24 14:14:14 UTC (rev 60036)
+++ trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2021-07-24 20:46:11 UTC (rev 60037)
@@ -150,6 +150,7 @@
 depend ot-tableau
 depend oubraces
 depend perfectcut
+depend pfdicons
 depend physconst
 depend physics
 depend physunits

Added: trunk/Master/tlpkg/tlpsrc/pfdicons.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.