From e2129e31d57eb6967094e26960e59256c1f9dbab Mon Sep 17 00:00:00 2001
From: Loek Le Blansch <loek@pipeframe.xyz>
Date: Tue, 10 Sep 2024 13:13:46 +0200
Subject: add comparison environment + more example LaTeX code

---
 comparison.sty | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 comparison.sty

(limited to 'comparison.sty')

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%
+}
+
-- 
cgit v1.2.3

