\documentclass[10pt]{article}

\usepackage[a4paper,margin=18mm]{geometry}
\usepackage{adjustbox}
\usepackage{array}
\usepackage{booktabs}
\usepackage{enumitem}
\usepackage{listings}
\usepackage{longtable}
\usepackage{xcolor}
\usepackage{xurl}
\usepackage{tikz-sections}

\title{TikZ-Sections Manual}
\author{Parsa Yazdi}
\date{Version 0.2.0, 2026-05-25}

\setlength{\parindent}{0pt}
\setlength{\parskip}{5pt}
\setlist[itemize]{leftmargin=*,topsep=2pt,itemsep=1pt}
\renewcommand{\arraystretch}{1.15}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}

\definecolor{CodeBack}{RGB}{246,247,249}
\definecolor{RuleGray}{RGB}{210,214,220}

\lstdefinestyle{TikZSectionsCode}{
  basicstyle=\ttfamily\footnotesize,
  columns=fullflexible,
  keepspaces=true,
  breaklines=true,
  breakatwhitespace=false,
  frame=single,
  rulecolor=\color{RuleGray},
  backgroundcolor=\color{CodeBack},
  xleftmargin=2mm,
  xrightmargin=2mm,
  aboveskip=5pt,
  belowskip=5pt
}

\lstset{style=TikZSectionsCode}

\newcommand{\command}[1]{\texttt{\textbackslash #1}}
\newcommand{\smallcommand}[1]{{\scriptsize\texttt{\textbackslash #1}}}
\newcommand{\keyname}[1]{\texttt{#1}}

\newcommand{\CodeInline}[1]{%
  \begingroup
  \ttfamily\scriptsize\raggedright\Urlmuskip=0mu plus 1mu\url{#1}%
  \endgroup
}

\newcommand{\ShapePreview}[1]{%
  \begin{center}
  \begin{adjustbox}{max width=26mm,max height=22mm}
    \begin{tikzpicture}
      #1
    \end{tikzpicture}
  \end{adjustbox}
  \end{center}
}

\newcommand{\WideShapePreview}[1]{%
  \begin{center}
  \begin{adjustbox}{max width=34mm,max height=20mm}
    \begin{tikzpicture}
      #1
    \end{tikzpicture}
  \end{adjustbox}
  \end{center}
}

\newcommand{\ReferenceRow}[6]{%
  \textbf{\command{#1}}\par
  #2\par
  \vspace{2pt}
  \begin{tabular}{@{}p{0.20\linewidth}p{0.34\linewidth}p{0.38\linewidth}@{}}
    #6 & \footnotesize #3 & \CodeInline{#4}
  \end{tabular}
  \par\vspace{4mm}
}

\newcommand{\CommandSummary}[4]{%
  \smallcommand{#1} & #2 & #3 & #4 \\
}

\begin{document}

\maketitle
\tableofcontents
\newpage

\section{Purpose and Scope}

TikZ-Sections provides TikZ commands for drawing structural cross-section
sketches. The current package covers cold-formed steel (CFS), hot-rolled steel
(HRS), and initial reinforced-concrete (RC) cross-sections.

The package has two command layers:

\begin{itemize}
  \item Public key-value commands such as \command{TikZSectionsChannel}. These are
  recommended for new documents because the options are readable and can be
  omitted when defaults are acceptable.
  \item Positional helper commands such as \command{csChannel}. These remain
  available for lower-level drawings.
\end{itemize}

\section{Installation and Loading}

Place \texttt{tikz-sections.sty} next to your document or in a directory searched by
your LaTeX installation, then load it in the preamble:

\begin{lstlisting}
\usepackage{tikz-sections}
\end{lstlisting}

TikZ-Sections loads TikZ and the TikZ \keyname{calc} library.

\section{Quick Start}

The example below draws a lipped cold-formed channel with a label, centerlines,
and a basic dimension legend.

\begin{center}
\begin{adjustbox}{max width=45mm,max height=40mm}
\begin{tikzpicture}
  \TikZSectionsChannel[
    depth=245,
    flange=75,
    lip=20,
    thickness=2.5,
    radius=5,
    centerline=true,
    dimensions=true,
    label=C245,
    scale=0.03
  ]
\end{tikzpicture}
\end{adjustbox}
\end{center}

\begin{lstlisting}
\begin{tikzpicture}
  \TikZSectionsChannel[
    depth=245,
    flange=75,
    lip=20,
    thickness=2.5,
    radius=5,
    centerline=true,
    dimensions=true,
    label=C245,
    scale=0.03
  ]
\end{tikzpicture}
\end{lstlisting}

\section{Key-Value Model}

Every public drawing command accepts a single optional key list:

\begin{lstlisting}
\TikZSectionsChannel[depth=180, flange=55, thickness=2, radius=4]
\end{lstlisting}

The keys are reset to package defaults each time a public drawing command is
called. Use \keyname{at}, \keyname{x}, \keyname{y}, \keyname{scale}, \keyname{xscale}, \keyname{yscale}, and \keyname{rotate} to
position a section inside a larger \texttt{tikzpicture}.

Public section commands draw into the current \texttt{tikzpicture}; they do not
create a \texttt{tikzpicture} internally. They may be used inside ordinary TikZ
\texttt{scope} environments and mixed with commands such as \command{draw},
\command{fill}, \command{node}, and \command{foreach}.

\subsection{Default Keys}

\begin{longtable}{p{0.22\linewidth}p{0.18\linewidth}p{0.50\linewidth}}
\toprule
Key & Default & Meaning \\
\midrule
\keyname{depth} & 245 & Section depth or vertical size \\
\keyname{width} & 75 & Section width, horizontal size, or circular diameter for RC commands \\
\keyname{diameter} & 75 & Alias stored as the circular width/diameter value \\
\keyname{flange} & 75 & Common CFS flange width used when top/bottom values are not supplied \\
\keyname{top flange}, \keyname{bottom flange} & 75 & Independent CFS flange widths honored in \keyname{detailed} mode \\
\keyname{left flange}, \keyname{right flange} & 35 & Hat-section flange widths \\
\keyname{lip} & 0 & Common CFS lip length used when top/bottom values are not supplied \\
\keyname{top lip}, \keyname{bottom lip} & 0 & Independent CFS lip lengths honored in \keyname{detailed} mode \\
\keyname{thickness} & 2.5 & Steel thickness or drawing line width in millimetres \\
\keyname{radius}, \keyname{inside radius}, \keyname{bend radius}, \keyname{root radius} & 5 & Bend radius or rolled-section root radius \\
\keyname{position}, \keyname{stiffener position} & 0.5 & Relative stiffener position along the web \\
\keyname{leg} & 60 & Equal-angle leg length \\
\keyname{vertical leg}, \keyname{horizontal leg} & 60, 40 & Unequal-angle leg lengths \\
\keyname{web depth}, \keyname{web thickness} & 95, 1 & Welded I-section web dimensions \\
\keyname{flange thickness} & 2 & Rolled flange thickness \\
\keyname{top flange width}, \keyname{bottom flange width} & 35 & Welded I-section flange widths \\
\keyname{top flange thickness}, \keyname{bottom flange thickness} & 2 & Welded I-section flange thicknesses \\
\keyname{reference line width} & 0 & Optional plate/bar reference line width \\
\keyname{line width} & 1 & Round-bar line width \\
\keyname{cover} & 40 & RC cover distance to the longitudinal bar centerline. Stirrups are drawn around the outside edge of the longitudinal bar envelope \\
\keyname{bar diameter} & 16 & RC rebar diameter \\
\keyname{top bars}, \keyname{bottom bars} & 2 & Rectangular RC bar counts \\
\keyname{left bars}, \keyname{right bars} & 0 & Rectangular RC side-bar counts \\
\keyname{top layers}, \keyname{bottom layers}, \keyname{side layers} & 1 & RC reinforcement layer counts \\
\keyname{layer spacing} & 25 & RC spacing between bar layers \\
\keyname{perimeter bars} & 8 & Circular RC perimeter bar count \\
\keyname{label}, \keyname{label x}, \keyname{label y} & empty, 0, 0 & Optional text label. Without explicit coordinates, labels are placed above the top-left of the section with the local scale in brackets \\
\keyname{mode} & simplified & Input mode. \keyname{simplified} uses nominal symmetric dimensions; \keyname{detailed} honors independent detailed dimensions where available \\
\keyname{simplified}, \keyname{detailed} & -- & Convenience styles for \keyname{mode=simplified} and \keyname{mode=detailed} \\
\keyname{filled} & false & Fill closed steel/bar shapes before drawing the outline \\
\keyname{centerline} & false & Draw horizontal and vertical centerlines \\
\keyname{dimensions} & false & Draw dimension assistance. Channel and zee commands use a boxed dimension legend; other families currently use the older guide overlay \\
\keyname{monochrome} & false & Draw straight and curved steel segments in black \\
\keyname{tie} & true & Draw RC tie/closed stirrup line \\
\keyname{at}, \keyname{shift}, \keyname{scale}, \keyname{xscale}, \keyname{yscale}, \keyname{rotate}, \keyname{x}, \keyname{y} & (0,0), (0,0), 1, 1, 1, 0, 0, 0 & Placement and local transform values \\
\bottomrule
\end{longtable}

\section{Style Hooks}

The package routes drawing through TikZ styles. This lets users keep the same
geometry while changing color, line style, or fill appearance.

\begin{longtable}{p{0.28\linewidth}p{0.60\linewidth}}
\toprule
Style & Purpose \\
\midrule
\keyname{tikzSections/straight} & Straight steel segments \\
\keyname{tikzSections/round} & Curved/radius steel segments \\
\keyname{tikzSections/centerline} & Optional centerlines \\
\keyname{tikzSections/hidden} & Hidden or reference lines \\
\keyname{tikzSections/dimension} & Current dimension overlay lines \\
\keyname{tikzSections/callout} & Reserved for future arrow-style annotations \\
\keyname{tikzSections/dimension legend} & Box style used by channel and zee dimension legends \\
\keyname{tikzSections/label} & Labels drawn with the \keyname{label} key \\
\keyname{tikzSections/fill} & Fills for closed steel/bar shapes \\
\keyname{tikzSections/concrete} & RC concrete fill \\
\keyname{tikzSections/concrete edge} & RC concrete edge. The default line is heavier than reinforcement lines \\
\keyname{tikzSections/rebar} & RC longitudinal rebar circles. The default fill is blue \\
\keyname{tikzSections/tie} & RC tie/stirrup outline. The default line is red \\
\bottomrule
\end{longtable}

\begin{lstlisting}
\TikZSectionsSetup{
  tikzSections/straight/.style={tikzSections/default, black},
  tikzSections/round/.style={tikzSections/default, gray},
  tikzSections/fill/.style={fill=gray!15}
}
\end{lstlisting}

\section{Input Modes}

The public key-value API supports two input modes. The default is
\keyname{mode=simplified}.

\keyname{simplified} mode is the nominal engineering-sketch interface. For CFS
channel and zee sections, use the main dimensions:

\begin{lstlisting}
\TikZSectionsChannel[
  depth=180,
  flange=55,
  lip=18,
  thickness=2,
  radius=4
]
\end{lstlisting}

In simplified mode, \keyname{flange} is used for both top and bottom flanges,
and \keyname{lip} is used for both lips. Independent top/bottom keys are not
part of the simplified contract.

\keyname{detailed} mode is the explicit geometry interface. It honors
independent dimensions where the section command supports them:

\begin{lstlisting}
\TikZSectionsChannel[
  detailed=true,
  depth=180,
  top flange=55,
  bottom flange=60,
  top lip=18,
  bottom lip=20,
  thickness=2,
  radius=4
]
\end{lstlisting}

Detailed mode is intended for asymmetric dimensions and future
section-specific options such as independent radii, stiffener geometry, or
rolled-shape details.

\section{Dimension Assistance}

The \keyname{dimensions=true} key currently provides dimension assistance rather
than a full traditional engineering dimensioning system. For
\command{TikZSectionsChannel} and \command{TikZSectionsZee}, it draws a compact
boxed legend for the web depth, flange, lip, thickness, and bend radius where
those values are present. The current notation is \(b_w\) for web depth, \(b_f\)
for flange width, \(b_l\) for lip length, \(t\) for thickness, and \(r\) for
bend radius. Detailed asymmetric dimensions use \(b_{ft}\), \(b_{fb}\),
\(b_{lt}\), and \(b_{lb}\). Other section families still draw the older generic
horizontal and vertical dimension guide overlay.

The legend direction is deliberate: it avoids misleading arrow placement until
traditional dimension lines with extension lines, standardized offsets,
collision avoidance, and notation presets are implemented. Traditional
engineering dimension lines remain future work.

\section{Cold-Formed Lip Handling}

Cold-formed channel and zee families use one geometry path for lipped and
unlipped forms. Set \keyname{lip=0}, or set both \keyname{top lip=0} and
\keyname{bottom lip=0}, to suppress the lips. This is also the default.

For equal top and bottom geometry, use \keyname{flange} and \keyname{lip}. For
asymmetric geometry, use \keyname{detailed=true} with \keyname{top flange},
\keyname{bottom flange}, \keyname{top lip}, and \keyname{bottom lip}. The
current CFS public API covers single-section primitives; built-up assemblies are
intended to be composed with ordinary TikZ scopes and transforms.

\begin{lstlisting}
% Equal flange/lip values
\TikZSectionsChannel[depth=180, flange=55, lip=18]

% Independent top and bottom values
\TikZSectionsChannel[
  detailed=true,
  depth=180,
  top flange=55,
  top lip=18,
  bottom flange=60,
  bottom lip=20
]

% Unlipped form through the same channel family
\TikZSectionsChannel[depth=180, flange=55, lip=0]
\end{lstlisting}

\section{Command Summary}

\begin{footnotesize}
\begin{longtable}{@{}L{0.32\linewidth}L{0.19\linewidth}L{0.32\linewidth}L{0.05\linewidth}@{}}
\toprule
Command & Shape & Main keys & Group \\
\midrule
\CommandSummary{TikZSectionsChannel}{Channel family}{\keyname{depth}, \keyname{flange}/top/bottom flanges, \keyname{lip}/top/bottom lips, \keyname{thickness}, \keyname{radius}}{CFS}
\CommandSummary{TikZSectionsStiffenedChannel}{Intermediate-stiffened channel}{\keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}, \keyname{stiffener position}}{CFS}
\CommandSummary{TikZSectionsZee}{Zee family}{\keyname{depth}, \keyname{flange}/top/bottom flanges, \keyname{lip}/top/bottom lips, \keyname{thickness}, \keyname{radius}}{CFS}
\CommandSummary{TikZSectionsSigma}{Sigma section}{\keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}}{CFS}
\CommandSummary{TikZSectionsHat}{Hat section}{\keyname{depth}, \keyname{width}, \keyname{left flange}, \keyname{right flange}}{CFS}
\CommandSummary{TikZSectionsAngle}{Cold-formed angle}{\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{thickness}, \keyname{radius}}{CFS}
\CommandSummary{TikZSectionsLippedAngle}{Lipped angle}{\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{lip}}{CFS}
\CommandSummary{TikZSectionsRHS}{Rectangular hollow section}{\keyname{depth}, \keyname{width}, \keyname{thickness}, \keyname{radius}}{CFS}
\CommandSummary{TikZSectionsSHS}{Square hollow section}{\keyname{width}, \keyname{thickness}, \keyname{radius}}{CFS}
\CommandSummary{TikZSectionsCHS}{Circular hollow section}{\keyname{radius}, \keyname{thickness}}{CFS}
\CommandSummary{TikZSectionsUniversalBeam}{Universal beam/I-section}{\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}}{HRS}
\CommandSummary{TikZSectionsUniversalColumn}{Universal column/I-section}{\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}}{HRS}
\CommandSummary{TikZSectionsWeldedI}{Welded I-section}{\keyname{web depth}, \keyname{top flange width}, \keyname{bottom flange width}}{HRS}
\CommandSummary{TikZSectionsTee}{Tee section}{\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}}{HRS}
\CommandSummary{TikZSectionsHRSChannel}{Hot-rolled channel}{\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}}{HRS}
\CommandSummary{TikZSectionsEqualAngle}{Equal angle}{\keyname{leg}, \keyname{thickness}, \keyname{root radius}}{HRS}
\CommandSummary{TikZSectionsUnequalAngle}{Unequal angle}{\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{thickness}}{HRS}
\CommandSummary{TikZSectionsPlate}{Plate}{\keyname{width}, \keyname{thickness}, \keyname{filled}}{HRS}
\CommandSummary{TikZSectionsFlatBar}{Flat bar}{\keyname{width}, \keyname{thickness}, \keyname{filled}}{HRS}
\CommandSummary{TikZSectionsRoundBar}{Round bar}{\keyname{radius}, \keyname{line width}, \keyname{filled}}{HRS}
\CommandSummary{TikZSectionsHRSCHS}{Hot-rolled circular hollow section}{\keyname{radius}, \keyname{thickness}}{HRS}
\CommandSummary{TikZSectionsHRSRHS}{Hot-rolled rectangular hollow section}{\keyname{depth}, \keyname{width}, \keyname{thickness}, \keyname{root radius}}{HRS}
\CommandSummary{TikZSectionsHRSSHS}{Hot-rolled square hollow section}{\keyname{width}, \keyname{thickness}, \keyname{root radius}}{HRS}
\CommandSummary{TikZRCRectangular}{Rectangular RC section}{\keyname{width}, \keyname{depth}, \keyname{cover}, \keyname{bar diameter}, bar counts}{RC}
\CommandSummary{TikZRCCircular}{Circular RC section}{\keyname{diameter}, \keyname{cover}, \keyname{bar diameter}, \keyname{perimeter bars}}{RC}
\bottomrule
\end{longtable}
\end{footnotesize}

\section{Visual Catalogue}

The previews in this section are deliberately bounded with maximum width and
height limits. The example code can be pasted into any \texttt{tikzpicture}.

\subsection{Cold-Formed Steel}

\ReferenceRow
  {TikZSectionsChannel}
  {Channel family with the default unlipped form.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip=0}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsChannel[depth=180, flange=55, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsChannel[depth=180, flange=55, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsChannel}
  {Channel with equal lips at the flange tips. Use \keyname{flange} and \keyname{lip} for equal top/bottom values.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsChannel}
  {Asymmetric lipped channel using independent top and bottom flange/lip dimensions.}
  {\keyname{detailed}, \keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}}
  {\TikZSectionsChannel[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsChannel[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsChannel}
  {Explicit unlipped channel by setting \keyname{lip=0}.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip=0}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsChannel[depth=180, flange=55, lip=0, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsChannel[depth=180, flange=55, lip=0, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsStiffenedChannel}
  {Channel with one intermediate web stiffener. Use \keyname{stiffener position} from 0 to 1.}
  {\keyname{depth}, \keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}, \keyname{stiffener position}}
  {\TikZSectionsStiffenedChannel[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, stiffener position=0.55, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsStiffenedChannel[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, stiffener position=0.55, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsZee}
  {Zee family with the default unlipped form.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip=0}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsZee[depth=180, flange=55, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsZee[depth=180, flange=55, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsZee}
  {Zee section with equal lips. Use independent top/bottom keys for asymmetric geometry.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsZee[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsZee[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsZee}
  {Asymmetric lipped zee using independent top and bottom flange/lip dimensions.}
  {\keyname{detailed}, \keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}}
  {\TikZSectionsZee[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsZee[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsZee}
  {Explicit unlipped zee by setting \keyname{lip=0}.}
  {\keyname{depth}, \keyname{flange}, \keyname{lip=0}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsZee[depth=180, flange=55, lip=0, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsZee[depth=180, flange=55, lip=0, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsSigma}
  {Sigma-style stiffened section with independent top and bottom flange/lip dimensions.}
  {\keyname{depth}, \keyname{top flange}, \keyname{top lip}, \keyname{bottom flange}, \keyname{bottom lip}}
  {\TikZSectionsSigma[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}
  {}
  {\ShapePreview{\TikZSectionsSigma[detailed=true, depth=180, top flange=55, top lip=18, bottom flange=60, bottom lip=20, thickness=2, radius=4, scale=0.03]}}

\ReferenceRow
  {TikZSectionsHat}
  {Hat section with independent left and right outward flanges.}
  {\keyname{depth}, \keyname{width}, \keyname{left flange}, \keyname{right flange}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsHat[depth=100, width=45, left flange=25, right flange=25, thickness=2, radius=4, scale=0.04]}
  {}
  {\WideShapePreview{\TikZSectionsHat[depth=100, width=45, left flange=25, right flange=25, thickness=2, radius=4, scale=0.04]}}

\ReferenceRow
  {TikZSectionsAngle}
  {Cold-formed angle.}
  {\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsAngle[vertical leg=100, horizontal leg=60, thickness=2, radius=4, scale=0.04]}
  {}
  {\ShapePreview{\TikZSectionsAngle[vertical leg=100, horizontal leg=60, thickness=2, radius=4, scale=0.04]}}

\ReferenceRow
  {TikZSectionsLippedAngle}
  {Cold-formed angle with a lip at the horizontal leg tip.}
  {\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{lip}, \keyname{thickness}, \keyname{radius}}
  {\TikZSectionsLippedAngle[vertical leg=100, horizontal leg=60, lip=20, thickness=2, radius=4, scale=0.04]}
  {}
  {\ShapePreview{\TikZSectionsLippedAngle[vertical leg=100, horizontal leg=60, lip=20, thickness=2, radius=4, scale=0.04]}}

\ReferenceRow
  {TikZSectionsRHS}
  {Rectangular hollow section. Set \keyname{filled=true} for a grey fill behind the outline.}
  {\keyname{depth}, \keyname{width}, \keyname{thickness}, \keyname{radius}, \keyname{filled}}
  {\TikZSectionsRHS[depth=120, width=70, thickness=2, radius=4, filled=true, scale=0.04]}
  {}
  {\ShapePreview{\TikZSectionsRHS[depth=120, width=70, thickness=2, radius=4, filled=true, scale=0.04]}}

\ReferenceRow
  {TikZSectionsSHS}
  {Square hollow section.}
  {\keyname{width}, \keyname{thickness}, \keyname{radius}, \keyname{filled}}
  {\TikZSectionsSHS[width=80, thickness=2, radius=4, filled=true, scale=0.04]}
  {}
  {\ShapePreview{\TikZSectionsSHS[width=80, thickness=2, radius=4, filled=true, scale=0.04]}}

\ReferenceRow
  {TikZSectionsCHS}
  {Circular hollow section.}
  {\keyname{radius}, \keyname{thickness}, \keyname{filled}}
  {\TikZSectionsCHS[radius=35, thickness=2, filled=true, scale=0.04]}
  {}
  {\ShapePreview{\TikZSectionsCHS[radius=35, thickness=2, filled=true, scale=0.04]}}

\subsection{Hot-Rolled Steel}

\ReferenceRow
  {TikZSectionsUniversalBeam}
  {Rolled I-section/universal beam sketch.}
  {\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}, \keyname{root radius}}
  {\TikZSectionsUniversalBeam[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}
  {}
  {\ShapePreview{\TikZSectionsUniversalBeam[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}}

\ReferenceRow
  {TikZSectionsUniversalColumn}
  {Rolled I-section/universal column sketch.}
  {\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}, \keyname{root radius}}
  {\TikZSectionsUniversalColumn[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}
  {}
  {\ShapePreview{\TikZSectionsUniversalColumn[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}}

\ReferenceRow
  {TikZSectionsWeldedI}
  {Fabricated I-section with independent flange dimensions.}
  {\keyname{web depth}, \keyname{web thickness}, \keyname{top flange width}, \keyname{top flange thickness}, \keyname{bottom flange width}, \keyname{bottom flange thickness}}
  {\TikZSectionsWeldedI[web depth=95, web thickness=1, top flange width=35, top flange thickness=2, bottom flange width=35, bottom flange thickness=2, scale=0.1]}
  {}
  {\ShapePreview{\TikZSectionsWeldedI[web depth=95, web thickness=1, top flange width=35, top flange thickness=2, bottom flange width=35, bottom flange thickness=2, scale=0.1]}}

\ReferenceRow
  {TikZSectionsTee}
  {Hot-rolled tee section.}
  {\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}, \keyname{root radius}}
  {\TikZSectionsTee[depth=30.6, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.2]}
  {}
  {\ShapePreview{\TikZSectionsTee[depth=30.6, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.2]}}

\ReferenceRow
  {TikZSectionsHRSChannel}
  {Hot-rolled channel.}
  {\keyname{depth}, \keyname{width}, \keyname{flange thickness}, \keyname{web thickness}, \keyname{root radius}}
  {\TikZSectionsHRSChannel[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}
  {}
  {\ShapePreview{\TikZSectionsHRSChannel[depth=61.2, width=22.9, flange thickness=1.96, web thickness=1.19, root radius=1.4, scale=0.16]}}

\ReferenceRow
  {TikZSectionsEqualAngle}
  {Hot-rolled equal angle.}
  {\keyname{leg}, \keyname{thickness}, \keyname{root radius}}
  {\TikZSectionsEqualAngle[leg=35, thickness=3, root radius=2, scale=0.18]}
  {}
  {\ShapePreview{\TikZSectionsEqualAngle[leg=35, thickness=3, root radius=2, scale=0.18]}}

\ReferenceRow
  {TikZSectionsUnequalAngle}
  {Hot-rolled unequal angle.}
  {\keyname{vertical leg}, \keyname{horizontal leg}, \keyname{thickness}, \keyname{root radius}}
  {\TikZSectionsUnequalAngle[vertical leg=45, horizontal leg=30, thickness=3, root radius=2, scale=0.18]}
  {}
  {\ShapePreview{\TikZSectionsUnequalAngle[vertical leg=45, horizontal leg=30, thickness=3, root radius=2, scale=0.18]}}

\ReferenceRow
  {TikZSectionsPlate}
  {Plate rectangle.}
  {\keyname{width}, \keyname{thickness}, \keyname{filled}, \keyname{reference line width}}
  {\TikZSectionsPlate[width=40, thickness=8, filled=true, scale=0.2]}
  {}
  {\WideShapePreview{\TikZSectionsPlate[width=40, thickness=8, filled=true, scale=0.2]}}

\ReferenceRow
  {TikZSectionsFlatBar}
  {Flat bar.}
  {\keyname{width}, \keyname{thickness}, \keyname{filled}, \keyname{reference line width}}
  {\TikZSectionsFlatBar[width=40, thickness=8, filled=true, scale=0.2]}
  {}
  {\WideShapePreview{\TikZSectionsFlatBar[width=40, thickness=8, filled=true, scale=0.2]}}

\ReferenceRow
  {TikZSectionsRoundBar}
  {Round bar.}
  {\keyname{radius}, \keyname{line width}, \keyname{filled}}
  {\TikZSectionsRoundBar[radius=10, line width=1, filled=true, scale=0.2]}
  {}
  {\ShapePreview{\TikZSectionsRoundBar[radius=10, line width=1, filled=true, scale=0.2]}}

\ReferenceRow
  {TikZSectionsHRSCHS}
  {Hot-rolled circular hollow section.}
  {\keyname{radius}, \keyname{thickness}, \keyname{filled}}
  {\TikZSectionsHRSCHS[radius=20, thickness=3, filled=true, scale=0.18]}
  {}
  {\ShapePreview{\TikZSectionsHRSCHS[radius=20, thickness=3, filled=true, scale=0.18]}}

\ReferenceRow
  {TikZSectionsHRSRHS}
  {Hot-rolled rectangular hollow section.}
  {\keyname{depth}, \keyname{width}, \keyname{thickness}, \keyname{root radius}, \keyname{filled}}
  {\TikZSectionsHRSRHS[depth=50, width=35, thickness=3, root radius=4, filled=true, scale=0.18]}
  {}
  {\ShapePreview{\TikZSectionsHRSRHS[depth=50, width=35, thickness=3, root radius=4, filled=true, scale=0.18]}}

\ReferenceRow
  {TikZSectionsHRSSHS}
  {Hot-rolled square hollow section.}
  {\keyname{width}, \keyname{thickness}, \keyname{root radius}, \keyname{filled}}
  {\TikZSectionsHRSSHS[width=40, thickness=3, root radius=4, filled=true, scale=0.18]}
  {}
  {\ShapePreview{\TikZSectionsHRSSHS[width=40, thickness=3, root radius=4, filled=true, scale=0.18]}}

\subsection{Reinforced Concrete}

\ReferenceRow
  {TikZRCRectangular}
  {Rectangular concrete section with top, bottom, and optional side bars.}
  {\keyname{width}, \keyname{depth}, \keyname{cover}, \keyname{bar diameter}, \keyname{top bars}, \keyname{bottom bars}, \keyname{left bars}, \keyname{right bars}}
  {\TikZRCRectangular[width=300, depth=500, cover=40, bar diameter=18, top bars=2, bottom bars=3, bottom layers=2, layer spacing=28, scale=0.025]}
  {}
  {\ShapePreview{\TikZRCRectangular[width=300, depth=500, cover=40, bar diameter=18, top bars=2, bottom bars=3, bottom layers=2, layer spacing=28, scale=0.025]}}

\ReferenceRow
  {TikZRCCircular}
  {Circular concrete section with perimeter bars.}
  {\keyname{diameter}, \keyname{cover}, \keyname{bar diameter}, \keyname{perimeter bars}, \keyname{tie}}
  {\TikZRCCircular[diameter=450, cover=45, bar diameter=20, perimeter bars=10, scale=0.025]}
  {}
  {\ShapePreview{\TikZRCCircular[diameter=450, cover=45, bar diameter=20, perimeter bars=10, scale=0.025]}}

\section{Composing Sections With TikZ}

TikZ-Sections focuses on single-section primitives. Built-up assemblies should
be made with ordinary TikZ scopes and transforms so users can compose any
combination without package-specific built-up commands.

\begin{center}
\begin{tabular}{@{}ccc@{}}
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \begin{scope}[shift={(3.6,0)}, xscale=-1]
    \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \end{scope}
  \node [tikzSections/label] at (1.8,-0.7) {Back-to-back channels};
\end{tikzpicture}
\end{adjustbox}
&
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \begin{scope}[shift={(6.8,0)}]
    \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \end{scope}
  \draw [tikzSections/hidden] (3.2,0.5) -- (3.6,0.5);
  \draw [tikzSections/hidden] (3.2,4.9) -- (3.6,4.9);
  \node [tikzSections/label] at (3.4,-0.7) {Boxed channels};
\end{tikzpicture}
\end{adjustbox}
&
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsAngle[vertical leg=90, horizontal leg=55, thickness=2, radius=4, scale=0.04]
  \begin{scope}[shift={(4.8,0)}, xscale=-1]
    \TikZSectionsAngle[vertical leg=90, horizontal leg=55, thickness=2, radius=4, scale=0.04]
  \end{scope}
  \fill (2.2,1.2) circle [radius=0.08];
  \fill (2.2,2.4) circle [radius=0.08];
  \node [tikzSections/label] at (2.4,-0.7) {Double angles};
\end{tikzpicture}
\end{adjustbox}
\end{tabular}
\par\vspace{5mm}
\begin{tabular}{@{}ccc@{}}
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \begin{scope}[shift={(3.3,0)}]
    \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \end{scope}
  \fill (3.1,1.1) circle [radius=0.07];
  \fill (3.1,4.3) circle [radius=0.07];
  \node [tikzSections/label] at (3.1,-0.7) {Toe-to-toe channels};
\end{tikzpicture}
\end{adjustbox}
&
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsChannel[depth=180, flange=65, lip=18, thickness=2, radius=4, scale=0.03]
  \begin{scope}[shift={(1.1,0.45)}, xscale=-1, scale=0.85]
    \TikZSectionsChannel[depth=180, flange=50, lip=14, thickness=2, radius=4, scale=0.03]
  \end{scope}
  \node [tikzSections/label] at (1.9,-0.7) {Nested channels};
\end{tikzpicture}
\end{adjustbox}
&
\begin{adjustbox}{max width=42mm,max height=30mm}
\begin{tikzpicture}
  \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \begin{scope}[shift={(3.6,0)}, xscale=-1]
    \TikZSectionsChannel[depth=180, flange=55, lip=18, thickness=2, radius=4, scale=0.03]
  \end{scope}
  \draw [tikzSections/hidden, line width=0.35mm] (1.3,1.2) -- (2.3,1.2);
  \draw [tikzSections/hidden, line width=0.35mm] (1.3,4.2) -- (2.3,4.2);
  \fill (1.8,1.2) circle [radius=0.08];
  \fill (1.8,4.2) circle [radius=0.08];
  \node [tikzSections/label] at (1.8,-0.7) {Channels with bolts};
\end{tikzpicture}
\end{adjustbox}
\end{tabular}
\end{center}

\begin{lstlisting}
\begin{tikzpicture}
  \TikZSectionsChannel[
    depth=180,
    flange=55,
    lip=18,
    thickness=2,
    radius=4,
    scale=0.03
  ]
  \begin{scope}[shift={(4,0)}, xscale=-1]
    \TikZSectionsChannel[
      depth=180,
      flange=55,
      lip=18,
      thickness=2,
      radius=4,
      scale=0.03
    ]
  \end{scope}
\end{tikzpicture}
\end{lstlisting}

The same composition pattern can be used for toe-to-toe channels, nested
channels, bolts, weld marks, or plates. TikZ additions are drawn in the same
picture as the section commands, so the package does not need a separate
built-up command family for each assembly.

\section{Positional Helper Commands}

The following lower-level helper commands use positional
arguments and therefore are less self-documenting than the public key-value API.

\begin{footnotesize}
\begin{longtable}{@{}L{0.39\linewidth}L{0.53\linewidth}@{}}
\toprule
Command & Positional arguments \\
\midrule
\smallcommand{csCFSChannel} & depth, flange, thickness, radius \\
\smallcommand{csCFSLippedChannel} & depth, flange, lip, thickness, radius \\
\smallcommand{csCFSChannelGeneral} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius \\
\smallcommand{csCFSEdgeStiffenedChannel} & depth, flange, lip, thickness, radius \\
\smallcommand{csCFSChannelWithOneStiffener} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius, position \\
\smallcommand{csCFSChannelWithTwoStiffeners} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius \\
\smallcommand{csCFSChannelWithThreeStiffeners} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius, position \\
\smallcommand{csCFSZee} & depth, flange, thickness, radius \\
\smallcommand{csCFSLippedZee} & depth, flange, lip, thickness, radius \\
\smallcommand{csCFSZeeGeneral} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius \\
\smallcommand{csCFSSigma} & depth, top flange, top lip, bottom flange, bottom lip, thickness, radius \\
\smallcommand{csCFSHat} & depth, left flange, width, right flange, thickness, radius \\
\smallcommand{csCFSAngle} & vertical leg, horizontal leg, thickness, radius \\
\smallcommand{csCFSLippedAngle} & vertical leg, horizontal leg, thickness, radius, lip \\
\smallcommand{csCFSBox}, \smallcommand{csCFSRHS} & depth, width, thickness, radius \\
\smallcommand{csCFSSHS} & width, thickness, radius \\
\smallcommand{csCFSCHS} & radius, thickness \\
\smallcommand{csCFSFoldedPlate} & point list, thickness \\
\smallcommand{csHRSUniversalBeam}, \smallcommand{csHRSUniversalColumn}, \smallcommand{csHRSISection} & depth, width, flange thickness, web thickness, root radius \\
\smallcommand{csHRSWeldedI} & web depth, web thickness, bottom flange width, bottom flange thickness, top flange width, top flange thickness \\
\smallcommand{csHRSTee}, \smallcommand{csHRSChannel} & depth, width, flange thickness, web thickness, root radius \\
\smallcommand{csHRSEqualAngle} & leg, thickness, root radius \\
\smallcommand{csHRSUnequalAngle} & vertical leg, horizontal leg, thickness, root radius \\
\smallcommand{csHRSPlate}, \smallcommand{csHRSFlatBar} & width, thickness, reference line width \\
\smallcommand{csHRSRoundBar}, \smallcommand{csHRSCHS} & radius, thickness or line width \\
\smallcommand{csHRSRHS} & depth, width, thickness, root radius \\
\smallcommand{csHRSSHS} & width, thickness, root radius \\
\bottomrule
\end{longtable}
\end{footnotesize}

\section{Current Limitations}

\begin{itemize}
  \item The \keyname{dimensions=true} feature is currently a mix of
  section-specific legends for channel and zee commands and the older generic
  overlay for other families. It is not yet a standard-based engineering
  dimensioning system.
  \item RC cross-sections are schematic. Stirrups are drawn around the outside
  edge of the longitudinal bar envelope, but beam elevations, column elevations,
  slab/wall detailing, and reinforcement spacing along member length remain
  future work.
  \item The \keyname{simplified} and \keyname{detailed} mode contract is defined
  first for CFS channel, stiffened-channel, zee, and sigma inputs. Detailed
  rolled-radius behavior is still future work.
  \item Generated figures are schematic cross-section sketches. They are not
  section-property calculators and do not validate engineering dimensions.
\end{itemize}

\end{document}
