aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--comparison.sty80
-rw-r--r--example.tex27
-rw-r--r--projdoc.cls1
3 files changed, 107 insertions, 1 deletions
diff --git a/comparison.sty b/comparison.sty
new file mode 100644
index 0000000..d10f95f
--- /dev/null
+++ b/comparison.sty
@@ -0,0 +1,80 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{comparison}[2024-01-19 package comparison]
+
+\RequirePackage{booktabs}
+\RequirePackage{etoolbox}
+\RequirePackage{tabularx}
+\RequirePackage{environ}
+\RequirePackage{enumitem}
+
+% comparison environment, usage:
+%
+% \begin{comparison}
+% \pro{reason why thing is good}
+% \pro{...}
+% \con{reason why thing is bad}
+% \con{...}
+% \end{comparison}
+%
+% output:
+%
+% Pros (2) Cons (2)
+% ----------------------------------------------------------
+% - reason why thing is good - reason why thing is bad
+% - ... - ...
+%
+
+\newcounter{pro-count}
+\newcounter{pro-index}
+\newcounter{con-count}
+\newcounter{con-index}
+\newcounter{cmp-count}
+\newcounter{cmp-index}
+\NewEnviron{comparison}{%
+ \par%
+ \setcounter{pro-count}{0}%
+ \newcommand{\pro}[1]{%
+ \stepcounter{pro-count}%
+ \csdef{pro-\the\value{pro-count}}{##1}%
+ }%
+ \setcounter{con-count}{0}%
+ \newcommand{\con}[1]{%
+ \stepcounter{con-count}%
+ \csdef{con-\the\value{con-count}}{##1}%
+ }%
+ \BODY%
+ \def\spacing{3mm}%
+ \newcommand{\halfbox}[1]{%
+ \begin{minipage}[t]{\dimexpr(\linewidth - \spacing) / 2\relax}%
+ ##1%
+ \end{minipage}%
+ }%
+ \begin{minipage}{\linewidth}%
+ \halfbox{\strut\centering\textsc{Benefits}~(\the\value{pro-count})\strut}%
+ \hfill%
+ \halfbox{\strut\centering\textsc{Drawbacks}~(\the\value{con-count})\strut}%
+ \par%
+ \vspace*{\dimexpr-\parskip-0.5\baselineskip\relax}%
+ \noindent\rule{\linewidth}{0.66pt}\par%
+ \vspace*{\dimexpr-\parskip\relax}%
+ \halfbox{%
+ \begin{itemize}[leftmargin=5mm]%
+ \setcounter{pro-index}{0}%
+ \whileboolexpr{test{\ifnumcomp{\value{pro-index}}{<}{\value{pro-count}}}}{%
+ \stepcounter{pro-index}%
+ \item \csuse{pro-\the\value{pro-index}}%
+ }%
+ \end{itemize}%
+ }\hfill\halfbox{%
+ \begin{itemize}[leftmargin=5mm]%
+ \setcounter{con-index}{0}%
+ \whileboolexpr{test{\ifnumcomp{\value{con-index}}{<}{\value{con-count}}}}{%
+ \stepcounter{con-index}%
+ \item \csuse{con-\the\value{con-index}}%
+ }%
+ \end{itemize}%
+ }%
+ \end{minipage}%
+ \par%
+}
+
diff --git a/example.tex b/example.tex
index 8525973..ce45f6f 100644
--- a/example.tex
+++ b/example.tex
@@ -108,7 +108,7 @@ The \codeinline{blockcode} environment can be used to insert a code block:
This is all included verbatim: \verb|asdf| \ $%!(*@#&)$
\end{blockcode}
-\subsection{Lists}
+\subsection{Information dumps}
Unordered (bullet) list:
@@ -136,9 +136,34 @@ Numbered list:
(See \cref{item:enum-nest-ref})
+Description:
+
+\begin{description}
+ \item[Item one] description of item one
+ \item[Item two] description of item two
+ \item[Item three] ...
+\end{description}
+
+\subsection{Comparisons}
+
+\begin{comparison}
+ \pro{Good thing}
+ \con{Bad thing}
+ \pro{Good thing 2}
+ \con{Bad thing 2}
+\end{comparison}
+
\subsection{Citations}
Citations are inserted using the \codeinline{\autocite} command \autocite{rfc:3339}.
+The bibliography is automatically printed after \codeinline{\end{document}}.
+
+\subsection{Glossary}
+
+Glossary entries can be inserted using the \codeinline{\gls} commands. Example:
+``\Gls{sdl2} handles \glspl{hid} as well!''. In following occurrences of acronyms,
+only their short form is printed: `\gls{sdl2}' and `\gls{hid}'. All of these link to
+the glossary that is automatically printed after \codeinline{\end{document}}.
\end{document}
diff --git a/projdoc.cls b/projdoc.cls
index 503f049..388f901 100644
--- a/projdoc.cls
+++ b/projdoc.cls
@@ -57,6 +57,7 @@
\RequirePackage{enumitem}
\RequirePackage{subcaption}
\RequirePackage{multicol}
+\RequirePackage{comparison} % ./comparison.sty
% font style
\setmainfont{TeX Gyre Schola}