aboutsummaryrefslogtreecommitdiff
path: root/comparison.sty
diff options
context:
space:
mode:
Diffstat (limited to 'comparison.sty')
-rw-r--r--comparison.sty80
1 files changed, 80 insertions, 0 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%
+}
+