如何从多个选择中创建列布局?

如何从多个选择中创建列布局?

我正在尝试创建一个命令,即为\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来自包裹multicolenumerated 列表中。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}

相关内容