我正在尝试创建一个命令,即为\twoc
特定问题创建一个简单的两列答案空间。输出应如下所示:
而我将要执行的文件代码.tex
应该只使用以下命令\twoc
:
代码
\Question What comes first?\\
\twoc
\text {apple}
\text {zebra}
\text {girrafe}
\text {dog}
\text {elephant}
\text {chicken}
\text {mouse}
\text {carabao}
笔记
该命令\twoc
将自动划分文本选项。例如,如果文本选项为 8,则每列应为 4。
答案1
使用稍微不同的语法,您可以使用multicol
来自包裹multicol
在enumerate
d 列表中。Question
下面的环境接受可选的第一个参数来控制列数(如果未指定,则默认为单列):
笔记:
- 特点
resume
包裹enumitem
用于对问题进行编号,以便后续使用时可以从最后一个问题编号继续编号。 - 我已经使用
newtoggle
过包裹etoolbox
因为我更喜欢那个语法而不是\newif
语法。但如果你不想包含额外的包,那么调整它以使用\newif
或其他一些条件方法。 - 同样地,
\IfEq
从包裹xstring
但无需包裹就应该能够做到这一点。
代码:
\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{etoolbox}
\usepackage{xstring}
\newtoggle{UseMulticolumns}
\newenvironment{Question}[2][1]{%
\IfEq{#1}{1}{%
\global\togglefalse{UseMulticolumns}%
}{%
\global\toggletrue{UseMulticolumns}%
}%
\begin{enumerate}[series=QuestionList,label=\arabic*.,resume=*]
\item #2
\begin{enumerate}[label={\protect\rule{1.0em}{0.5pt}}]
\iftoggle{UseMulticolumns}{\begin{multicols}{#1}}{}%
}{%
\iftoggle{UseMulticolumns}{\end{multicols}}{}%
\end{enumerate}%
\end{enumerate}%
}
\begin{document}
\begin{Question}{Which comes first?}
\item chicken
\item egg
\end{Question}
\begin{Question}[2]{What comes first?}
\item apple
\item zebra
\item girrafe
\item dog
\item elephant
\item chicken
\item mouse
\item carabao
\end{Question}
\begin{Question}[3]{Who shot first?}
\item Han
\item Greedo
\item Chewie
\end{Question}
\end{document}