|
|
|
|
|
|
|
% a coloured inttype label with \item in the payload table
|
|
|
|
\newcommand{\cfieldx}[1]{{\color{RubineRed} \texttt{#1}}}
|
|
|
|
\newcommand{\cfield}[1]{\item \cfieldx{#1}\,} % \tabto{1cm}
|
|
|
|
|
|
|
|
\newcommand{\cname}[1]{\textbf{#1}\newline}
|
|
|
|
|
|
|
|
% https://tex.stackexchange.com/questions/157389/how-to-center-column-values-in-a-table
|
|
|
|
% P will be a centered column that can have width
|
|
|
|
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
|
|
|
|
|
|
|
|
% this is put before a response that follows a request
|
|
|
|
% this is needed for nice looking spacing
|
|
|
|
\newcommand*{\cjoin}{\null\vspace*{-2pt}}
|
|
|
|
|
|
|
|
% This is a table of commands of events
|
|
|
|
\newenvironment{cmdlist}
|
|
|
|
{
|
|
|
|
\tabulinesep=5pt
|
|
|
|
\begin{longtabu} to \textwidth {P{2.2em} X[3] X[3,l]}
|
|
|
|
\toprule
|
|
|
|
\textbf{Code} & \textbf{Function} & \textbf{Structure} \\
|
|
|
|
\midrule
|
|
|
|
\endhead
|
|
|
|
|
|
|
|
\bottomrule
|
|
|
|
\endfoot
|
|
|
|
}{
|
|
|
|
\end{longtabu}
|
|
|
|
}
|
|
|
|
|
|
|
|
% a list of generic payload fields
|
|
|
|
\newenvironment{pldlist}
|
|
|
|
{
|
|
|
|
\begin{itemize}[
|
|
|
|
leftmargin=.7cm,
|
|
|
|
rightmargin=1mm,
|
|
|
|
nosep
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{itemize}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
% a list of request fields, with a caption
|
|
|
|
\newenvironment{cmditemlistenv}[1]
|
|
|
|
{
|
|
|
|
\begin{minipage}[t]{\linewidth}
|
|
|
|
|
|
|
|
\begin{flushleft} % fix weird spacing in wrapped lines
|
|
|
|
|
|
|
|
\textit{#1} % the caption, like Request: or Response:
|
|
|
|
\begin{pldlist}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{pldlist}
|
|
|
|
\end{flushleft}
|
|
|
|
|
|
|
|
% the minipage somehow fixes vertical alignment
|
|
|
|
% and also removes mysterious spacing around the itemize
|
|
|
|
\end{minipage}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
% a list of request fields, with a caption
|
|
|
|
\newenvironment{cmdreq}
|
|
|
|
{
|
|
|
|
\begin{cmditemlistenv}{Request:}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{cmditemlistenv}
|
|
|
|
}
|
|
|
|
|
|
|
|
% a list of request fields, with a caption
|
|
|
|
\newenvironment{cmdresp}
|
|
|
|
{
|
|
|
|
\begin{cmditemlistenv}{Response:}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{cmditemlistenv}
|
|
|
|
}
|
|
|
|
|
|
|
|
% a list of payload fields, with a caption
|
|
|
|
\newenvironment{cmdpld}
|
|
|
|
{
|
|
|
|
\begin{cmditemlistenv}{Payload:}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{cmditemlistenv}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
%% hack from https://tex.stackexchange.com/questions/145812/using-fbox-in-a-newenvironment
|
|
|
|
% to allow using fbox inside a environment
|
|
|
|
\newsavebox{\mybox}
|
|
|
|
|
|
|
|
% a list of payload fields, with a caption
|
|
|
|
\newenvironment{boxedpayload}[1][]
|
|
|
|
{
|
|
|
|
\begingroup\setlength{\fboxsep}{0pt}
|
|
|
|
\indent
|
|
|
|
\begin{lrbox}{\mybox}
|
|
|
|
\begin{minipage}{\textwidth - \parindent*2}\null
|
|
|
|
\ifthenelse{\equal{#1}{}}{
|
|
|
|
\vspace{3pt} % no title
|
|
|
|
}{
|
|
|
|
% with title
|
|
|
|
\hspace{6pt}\textit{#1}
|
|
|
|
\vspace{-6pt}\newline
|
|
|
|
\noindent\rule{\textwidth}{.4pt}
|
|
|
|
\vspace{-\baselineskip}
|
|
|
|
\vspace{-4pt}
|
|
|
|
}
|
|
|
|
\begin{itemize}[
|
|
|
|
itemsep=0pt, % this is not actually 0, for some reason. that's okay
|
|
|
|
leftmargin=24pt,
|
|
|
|
rightmargin=1mm
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{
|
|
|
|
\end{itemize}
|
|
|
|
\vspace{-\baselineskip}
|
|
|
|
\vspace{14pt}
|
|
|
|
\end{minipage}
|
|
|
|
\end{lrbox}\fbox{\usebox{\mybox}}
|
|
|
|
\endgroup
|
|
|
|
}
|