如何在 LaTeX 中自动完成我自己课堂上的多项选择题类型?
答案1
一种方式是定义\hcoices
(或\vchoices
)使用\foreach
表单pgffor
包。
1.使用exam
类:
下面的第一部分如果使用环境choices
,接下来的两个部分是您将使用的自定义部分:
笔记:
- 您的代码中有一个小拼写错误,我已在下面进行了更正。
\end parts
应该是\end{parts}
。 - 您还应该使用
choices
替代parts
环境来进行多项选择。
代码:
\documentclass{exam}
\usepackage{pgffor}
\newcommand{\hchoices}[1]{%
\par
\begin{oneparchoices}
\foreach \Choice in {#1} {%
\choice \Choice
}%
\end{oneparchoices}
}%
\newcommand{\vchoices}[1]{%
\begin{choices}
\foreach \Choice in {#1} {%
\choice \Choice
}%
\end{choices}
}%
\begin{document}
\noindent\textbf{Choices:}
\begin{questions}
\question Which among the following focuses on values?
\begin{choices}
\choice Axiology
\choice Epistomology
\choice Philosophy
\end{choices}
\end{questions}
\hrule\medskip\noindent\textbf{hchoices:}
\begin{questions}
\question Which among the following focuses on values?
\hchoices{Axiology, Epistomology, Philosophy}
\end{questions}
\hrule\medskip\noindent\textbf{vchoices:}
\begin{questions}
\question Which among the following focuses on values?
\vchoices{Axiology, Epistomology, Philosophy}
\end{questions}
\end{document}
2.无exam
类别:
要生成类似但不带exam
类的内容,可以使用枚举列表。我使用了包裹enumitem
因为它更加灵活:
笔记:
- 感谢 Heiko Oberdiek 提供的解决方案如何通过宏创建内联列表这里需要这个。
我曾经
\hspace*{2.0em}
将各个水平项目分开,但如果您希望项目根据项目数量更均匀地分布,则可以使用hfill
以下itemjoin
选项:\setlist*[MyHChoices]{label=\Alph*., itemjoin={\hfill}}
代码:
\documentclass{article}
\usepackage[inline]{enumitem}
\usepackage{pgffor}
\newlist{MyHChoices}{enumerate*}{2}
\newlist{MyVChoices}{enumerate}{2}
\setlist*[MyHChoices]{label=\Alph*., itemjoin={\hspace*{2.0em}}}
\setlist*[MyVChoices]{label=\Alph*.}
% https://tex.stackexchange.com/questions/78628/how-to-create-an-inline-list-via-a-macro
\newtoks\gInlineToks
\newcommand*{\hchoices}[1]{%
\global\gInlineToks{}%
\foreach \Choice in {#1} {%
\global\gInlineToks\expandafter{%
\the\expandafter\gInlineToks
\expandafter\item\Choice
}%
}%
\par%
\begin{MyHChoices}\the\gInlineToks\end{MyHChoices}%
}%
\newcommand{\vchoices}[1]{%
\begin{MyVChoices}
\foreach \Choice in {#1} {%
\item \Choice
}%
\end{MyVChoices}
}%
\newenvironment{questions}{
\let\question\item
\begin{enumerate}[label=\arabic*.]
}{%
\end{enumerate}
}
\begin{document}
\noindent\textbf{hchoices:}
\begin{questions}
\question Which among the following focuses on values?
\hchoices{Axiology, Epistomology, Philosophy}
\end{questions}
\noindent\textbf{vchoices:}
\begin{questions}
\question Which among the following focuses on values?
\vchoices{Axiology, Epistomology, Philosophy}
\end{questions}
\end{document}