我是一个相当新的 LaTeX 用户,所以如果这是一个简单的新手问题,请原谅我。
我正在使用该exam
软件包创建考试。我同时使用\choices
和\oneparchoices
环境,我希望它们对齐,而不是选择项的缩进程度更高。这个 MWE 应该可以说明我的观点:
\documentclass{exam}
\begin{document}
\begin{questions}
\question
Question 1
\begin{oneparchoices}
\correctchoice Answer 1
\choice Answer 2
\choice Answer 3
\end{oneparchoices}
\question
Question 2
\begin{choices}
\correctchoice Answer 1
\choice Answer 2
\choice Answer 3
\end{choices}
\end{questions}
\end{document}
我相信更有经验的用户可以轻松解决这个问题,但我却陷入困境。
答案1
查看该类的源代码后exam
我发现左边距(\leftmargin
在 LaTeX 中实现)是choices
使用硬编码线设置的\settowidth{\leftmargin}{W.\hskip\labelsep\hskip 2.5em}%
,即,它被设置为 +labelsep+2.5em 的宽度W.
(em 是相对于字体大小的)。
我没有看到一种简单的方法来改变它,因为没有提供这个设置。您只能将choices
from的定义复制exam.cls
到文档中,在\makeatletter
和之间\makeatother
,然后将上面的行更改为\setlength{\leftmargin}{<your prefered length>}
。我建议这里使用 15pt,这是正常的\parindent
。您显然不能\parindent
直接使用,因为 中的列表环境choices
似乎重新定义了它。当然
,您还需要更改\newcommand
为\renewcommand
。
\documentclass{exam}
\makeatletter
% from exam.cls, line 4107:
\renewenvironment{choices}%
{\list{\choicelabel}%
{\usecounter{choice}\def\makelabel##1{\hss\llap{##1}}%
\setlength{\leftmargin}{15pt}%
\def\choice{%
\if@correctchoice
\color@endgroup
\endgroup
\fi
\item
\do@choice@pageinfo
} % choice
\def\CorrectChoice{%
\if@correctchoice
\color@endgroup
\endgroup
\fi
\ifprintanswers
\ifhmode \unskip\unskip\unvbox\voidb@x \fi
\begingroup \color@begingroup \@correctchoicetrue
\CorrectChoice@Emphasis
\fi
\item
\do@choice@pageinfo
} % CorrectChoice
\let\correctchoice\CorrectChoice
\labelwidth\leftmargin\advance\labelwidth-\labelsep
\topsep=0pt
\partopsep=0pt
\choiceshook
}%
}%
{\if@correctchoice \color@endgroup \endgroup \fi \endlist}
\makeatother
\begin{document}
\begin{questions}
\question
Question 1
\begin{oneparchoices}
\correctchoice Answer 1
\choice Answer 2
\choice Answer 3
\end{oneparchoices}
\question
Question 2
\begin{choices}
\correctchoice Answer 1
\choice Answer 2
\choice Answer 3
\end{choices}
\end{questions}
\end{document}