Re: [问题] 选项

楼主: ChenMeng0518 (LSiYue)   2014-02-25 18:54:53
这个问题﹐其实在大陆这边的论坛里﹐不久前讨论过。当时讨论的内容﹐比你这个可能
还会更复杂一些。
下边的代码考虑﹕
1. 如果选项内容很短﹐则以
A ... B ... C ... D ...
来放置四个选项
2. 如果内容稍长﹐则以
A ... B ...
C ... D ...
来放置
3. 如果内容十分长﹐则以
A ...
B ...
C ...
D ...
来放置。
注意﹐这里 \choice 后边跟的数字﹐是用来标记答案的。如果该选项是正确答案﹐则
记录 1; 如果是错误答案﹐则记录 0. 当然﹐如果不想显示答案出来﹐一律填零即可。
\documentclass{article}
\usepackage{environ}
\newlength{\choiceslen}
\newif\ifshowcorrect
\newcounter{choices}
\newcommand{\choicefinal}[1]{%
\ifnum\value{choices}>0 \hfill\fi\egroup
\hspace{0pt}%
\hbox to\choiceslen
\bgroup
\stepcounter{choices}%
\ifcase#1\relax
(\Alph{choices})%
\else
\ifshowcorrect
\expandafter\underline
\fi
{(\Alph{choices})}%
\fi\space}
\newcommand{\choicetemp}[1]{\stepcounter{choices}\space(\Alph{choices})\cr}
\NewEnviron{choices}
{\setcounter{choices}{0}%
\let\choice\choicetemp
\settowidth{\choiceslen}{\vbox{\halign{##\hfil\cr\BODY\crcr}}}
\ifdim\choiceslen>.5\textwidth
\setlength{\choiceslen}{\textwidth}%
\else
\ifdim\choiceslen>.25\textwidth
\setlength{\choiceslen}{.5\textwidth}%
\else
\setlength{\choiceslen}{.25\textwidth}%
\fi
\fi
\let\choice\choicefinal
\setcounter{choices}{0}%
\begin{flushleft}
\bgroup\BODY\hfill\egroup
\end{flushleft}}
\begin{document}
\begin{choices}
\choice0 apple
\choice1 banana
\choice0 orange
\choice0 pear
\end{choices}
\begin{choices}
\choice0 apple
\choice1 banana
\choice0 orang, eeeeeeeee
\choice0 pear
\end{choices}
\showcorrecttrue
\begin{choices}
\choice0 apple
\choice1 banana
\choice0 orange, eeeeeeeee, eeeeeeeee, eeeeeeeee
\choice0 pear
\end{choices}
\end{document}
代码的一个问题是﹐如果选项确实很长﹐还要考虑换行的问题﹐但是这份代码里并没有
去实现。如果有需要的话﹐考虑使用 pbox 来实现即可﹐还是很简单的。所以就不多说
了。
※ 引述《s60984 (Angus)》之铭言:
: 在exam环境下,有choice可以用
: 但在article,book没有choice可用
: 所以我就用下列方式得到选择题
: \begin{enumerate}
: \item ABCCD
: \begin{multicols}{2}
: \begin{enumerate}
: \renewcommand{\labelenumii}{$($\Alph{enumii}$)$}
: \item ABCCDABCCDABCCD
: \item ABCCDABCCDABCCD
: \item ABCCDABCCDABCCD
: \item ABCCDABCCDABCCD
: \end{enumerate}
: \end{multicols}
: \end{enumerate}
: 显示为
: 1. ABCCD
: (A)BCCDABCCDABCCD (C) BCCDABCCDABCCD
: (B)BCCDABCCDABCCD (D) BCCDABCCDABCCD
: 请问要如何变成
: 1. ABCCD
: (A)BCCDABCCDABCCD (B) BCCDABCCDABCCD
: (C)BCCDABCCDABCCD (D) BCCDABCCDABCCD
作者: s60984 (Angus)   2014-02-27 00:07:00
感谢~~~

Links booklink

Contact Us: admin [ a t ] ucptt.com