diff options
author | Karl Berry <karl@freefriends.org> | 2020-07-13 21:09:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-07-13 21:09:51 +0000 |
commit | b5ace0fe467478d11be04649421226e574f4b556 (patch) | |
tree | 14ae2848b731a97772998ec5106785fe1fba0cd1 /Master/texmf-dist/doc | |
parent | 0b1733479c6d0e549e72090cce6aaf526aad3de7 (diff) |
tikzpackets (13jul20)
git-svn-id: svn://tug.org/texlive/trunk@55827 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzpackets/README | 27 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.pdf | bin | 0 -> 65270 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.tex | 170 |
3 files changed, 197 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tikzpackets/README b/Master/texmf-dist/doc/latex/tikzpackets/README new file mode 100644 index 00000000000..9a985463116 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzpackets/README @@ -0,0 +1,27 @@ +Package tikzPackets provide command for simple build network packets illustration with tikz. + +Usage example (UDP): + +\begin{tikzpicture} + \packetsInit + \packetsPrintBitScale{31} + + \packetsPutField{16}{Source Port} + \packetsPutField{16}{Destination Port} + \packetsEndLine{0}{} + + \packetsPutField{16}{Length} + \packetsPutField{16}{Checksum} + \packetsEndLine{32}{} + + \packetsPutField[protocolsField, minimum height = 1.5cm]{32}{Data} + \packetsEndLine{64}{} +\end{tikzpicture} + + +Version 1.0 (2020-07-13): first public release + + +Copyright (C) 2020, Robert Ryszard Paciorek <rrp@opcode.eu.org> + +This is free software distributed under terms of The MIT License. diff --git a/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.pdf b/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.pdf Binary files differnew file mode 100644 index 00000000000..7e311747d08 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.pdf diff --git a/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.tex b/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.tex new file mode 100644 index 00000000000..585550ebad6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzpackets/tikzPackets.tex @@ -0,0 +1,170 @@ +% Copyright (c) 2020 Robert Ryszard Paciorek <rrp@opcode.eu.org> +% +% MIT License +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the "Software"), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. + +\documentclass[a4paper]{article} + +\usepackage{tikzPackets} +\usepackage{adjustbox,hyperref,fancyvrb-ex,fvextra} + +\oddsidemargin=0pt +\textwidth=430pt + +\topmargin=-30pt +\textheight=662pt + +\newcommand{\pkgLink}[1]{\texttt{\href{https://ctan.org/pkg/#1}{#1}}} + +\fvset{ + breaklines=true, + breakanywhere=true, + breakaftersymbolpre={}, + breakaftersymbolpost={\tiny\ensuremath{\ \lhook\joinrel\rightarrow\ }}, + breakanywheresymbolpre={}, + breakanywheresymbolpost={\tiny\ensuremath{\ \lhook\joinrel\rightarrow\ }} +} + +\begin{document} + +\title{The \texttt{tikzPackets} package} +\author{Robert Ryszard Paciorek <rrp@opcode.eu.org>} +\date{2020-07-13} +\maketitle + +This package provide command for simple build network packets illustration with \pkgLink{tikz}. +Similar functionality (with tables instead of tikz) provide package \pkgLink{bytefield}. + +\section{Basic Example} + +\begin{CenterExample} +\begin{tikzpicture} + \packetsInit + \packetsBitWidth=4.5mm + \packetsPrintBitScale{31} + + \packetsPutField{16}{Source Port} + \packetsPutField{16}{Destination Port} + \packetsEndLine{0}{} + + \packetsPutField{16}{Length} + \packetsPutField{16}{Checksum} + \packetsEndLine{32}{} + + \packetsPutField[protocolsField, minimum height=1.5cm]{32}{Data} + \packetsEndLine{64}{} +\end{tikzpicture} +\end{CenterExample} + + +\section{Macros description} + +\subsection{packetsInit} + +\Verb$\packetsInit$ is used to initialise \textit{tikzPackets} variables, counters and tikz styles. +Must be used in every \Verb$tikzpicture$ that use \textit{tikzPackets} package commands before any other \textit{tikzPackets} command. + +\subsection{packetsPrintBitScale} + +\Verb$\packetsPrintBitScale$ draw bits scale. It takes one argument: last bit value. + +Formatting of bits scale can be adjust by redefine (after \Verb$\packetsInit$) tikz style \Verb$bitScaleInfo$, redefine \Verb$\packetsBitFont$ or \Verb$\packetsPrintBitNumber$ macro. + +\subsection{packetsPutField} + +\Verb$\packetsPutField$ draw packet field. It takes 4 arguments: +\begin{enumerate} + \item (optional) node style and formatting options + \item number of bits (width of field) + \item (optional) node name for new created node + \item name (text to display) +\end{enumerate} + +\subsection{packetsPrintRangeOnLeft and packetsPrintRangeOnRight} + +\Verb$\packetsPrintRangeOnLeft$ and \Verb$\packetsPrintRangeOnRight$ prints info (start bit number or bits range) on left or right side of current line. +Should be call after call all \Verb$\packetsPutField$ for this line. Both commands takes two arguments: first bit in line and last bit in line, +but \Verb$\packetsPrintRangeOnLeft$ ignore second argument. + +Formatting of printing text can be adjust by redefine \Verb$\packetsBitFont$ macro or redefine \Verb$\packetsPrintRangeOnLeft$ / \Verb$\packetsPrintRangeOnRight$ macros. + +\begin{CenterExample} +\begin{tikzpicture} + \packetsInit + \renewcommand{\packetsBitFont}{\scriptsize} + \packetsPutField{4}{A} \packetsPutField{4}{B} \packetsPutField{4}{C} + \packetsPrintRangeOnLeft{a}{b} + \packetsPrintRangeOnRight{d}{e} +\end{tikzpicture} +\end{CenterExample} + +\subsection{packetsNextLine} + +\Verb$\packetsNextLine$ end current line of field and prepare to start next line of field. It don't have arguments. + +\subsection{packetsEndLine} + +\Verb$\packetsEndLine$ call \Verb$\packetsPrintRangeOnLeft$ and \Verb$\packetsNextLine$. +Arguments are passed to \Verb$\packetsPrintRangeOnLeft$. + +\subsection{packetsLastNode and packetsFirstNodeInLastLine} + +\Verb$\packetsLastNode$ hold name of last added node by \Verb$\packetsPutField$ or \Verb$\packetsPrintBitScale$ (and is used for node positioning in \Verb$\packetsPutField$ and \Verb$\packetsPrintRangeOnRight$ macros). + +\Verb$\packetsFirstNodeInLastLine$ hold name of first node (added by macro \Verb$\packetsPutField$ or \Verb$\packetsPrintBitScale$) in current line (and is used in \Verb$\packetsPutField$ and \Verb$\packetsPrintRangeOnLeft$ for positioning) + +Both can be use for external to reference node adding by these macros (can be captured after add node by \Verb$\edef$) or can be used to start adding nodes by \Verb$\packetsPutField$ relative to some manually added node. + +\begin{CenterExample} +\begin{tikzpicture} + \packetsInit + \packetsPutField{4}{A} + \packetsPutField{4}{B} + + \node[ + align=left, anchor=north west, + text width=7\packetsBitWidth, node font=\footnotesize + ] [] at (\packetsFirstNodeInLastLine.south west) { + Some extra info about this packet. And more more info \ldots + }; +\end{tikzpicture} +\end{CenterExample} + +\section{Styles and dimmensions} + +Width of single bit is set by \Verb$\packetsBitWidth$ and default is 5mm. Default style for node created by \Verb$\packetsPutField$ is \Verb$protocolsField$ and it set line height to 1cm. +Package provide also \Verb$protocolsFieldBase$ style with minimal setting for node style. +Macro \Verb$\packetsBitFont$ define font settings for bits info. +All this change should be done after use \Verb$\packetsInit$. + +\begin{CenterExample} +\begin{tikzpicture} + \packetsInit + \tikzstyle{protocolsField}=[protocolsFieldBase, draw, minimum height = 0.8cm] + \packetsBitWidth=10mm + \renewcommand{\packetsBitFont}{\scriptsize\it} + + \packetsPrintBitScale{7} + \packetsPutField{4}{Long field names} + \packetsPutField{4}{and low rows} +\end{tikzpicture} +\end{CenterExample} + +\end{document} |