From 1fe2a4db97f0240614f55ae98f15b64097dbc5c6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 25 Jun 2022 20:23:31 +0000 Subject: multiple-choice (25jun22) git-svn-id: svn://tug.org/texlive/trunk@63722 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/multiple-choice/multiple-choice.sty | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/multiple-choice/multiple-choice.sty (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/multiple-choice/multiple-choice.sty b/Master/texmf-dist/tex/latex/multiple-choice/multiple-choice.sty new file mode 100644 index 00000000000..e672e5dd541 --- /dev/null +++ b/Master/texmf-dist/tex/latex/multiple-choice/multiple-choice.sty @@ -0,0 +1,99 @@ +%% +%% This is file `multiple-choice.sty'. +%% +%% LaTeX package for multiple-choice questions +%% +%% Copyright © 2022 +%% ------------------------------------------------------------------ +%% Author: Seiied-Mohammad-Javad Razavian +%% +%% This work may be distributed and/or modified under the +%% conditions of the Latex Project Public License, either +%% version 1.3 of this license or (at your option) any +%% later version. +%% The latest version of the license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2003/06/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% This work is “author-maintained” (as per LPPL maintenance status). +%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian. +%% ------------------------------------------------------------------ +%% +\NeedsTeXFormat{LaTeX2e} +\def\choicesdate{2022/06/24} +\def\choicesversion{0.2} +\ProvidesPackage{multiple-choice}[\choicesdate\space v\choicesversion^^JMultiple-choice question with automatic adjustment of the choices based on their widths] +\RequirePackage{biditools} +\newdimen\mc@ChoiceLabelWidth +\newdimen\mc@ChoiceLabelSep +\mc@ChoiceLabelWidth=1.5em +\mc@ChoiceLabelSep=0.5em +\newcounter{mc@MultChoiceCount} +\newcommand{\mc@InitialChoice}{% + \ifnum\value{mc@MultChoiceCount}>\z@ + \cr + \fi + \stepcounter{mc@MultChoiceCount}% + \hbox to \mc@ChoiceLabelWidth{\hss(\Alph{mc@MultChoiceCount})}% + \kern\mc@ChoiceLabelSep +}% +\newcommand{\mc@FinalChoice}{% + \ifnum\value{mc@MultChoiceCount}>\z@ + \egroup + \egroup + \fi + \stepcounter{mc@MultChoiceCount}% + \hspace{0pt plus 1pt}% + \hbox\bgroup + \hbox to \mc@ChoiceLabelWidth{\hss(\Alph{mc@MultChoiceCount})}% + \kern\mc@ChoiceLabelSep + \vtop\bgroup + \hsize\mc@MultChoicesWidth + \advance\hsize-\mc@ChoiceLabelWidth + \advance\hsize-\mc@ChoiceLabelSep +}% +\newbox\mc@MultChoicesBox +\newdimen\mc@MultChoicesWidth +\newcommand{\mc@ComputeMultChoicesWidth}[1]{% + \setbox\mc@MultChoicesBox\hbox{% + \vbox{% + \halign{% + ##\hfil\cr + #1\crcr + }% + }% + }% +}% +% MultipltChoices Environment. +\newenvironment{choices}{% + \setcounter{mc@MultChoiceCount}{0}% + \let\choice\mc@InitialChoice + \bidi@collect@long@body\mc@ComputeMultChoicesWidth +}{% + \mc@MultChoicesWidth-\fontcharwd\font` + \advance\mc@MultChoicesWidth\wd\mc@MultChoicesBox + \ifdim\mc@MultChoicesWidth>0.5\linewidth + \mc@MultChoicesWidth=\linewidth + \else + \ifdim\mc@MultChoicesWidth>0.25\linewidth + \mc@MultChoicesWidth=0.5\linewidth + \else + \mc@MultChoicesWidth=0.25\linewidth + \fi + \fi + \setcounter{mc@MultChoiceCount}{0}% + \let\choice\mc@FinalChoice + \parindent\z@ + \ifvmode + \else + \par + \fi + \the\@bidi@envbody + \egroup + \egroup +}% +%% +%% +%% End of file `multiple-choice.sty'. -- cgit v1.2.3