为多项选择题创建新环境

为多项选择题创建新环境

我正在尝试为多项选择题创建一个新环境。我想确保每个问题都有一个编号并且具有恒定的缩进:

1.  Lorem ipsum
    dolor sit amet.
    Lorem ipsum
    dolor sit amet.

2.  Lorem ipsum
    dolor sit amet.
    Lorem ipsum
    dolor sit amet.

我认为我应该minipage在环境定义中为每个问题使用一个。但我不知道如何调整间距以使每个问题主体对齐。我应该用什么来表示数字?

编辑:我附上了我的工作示例。下面是 latex.ltx 文件的一部分,其中 enumerate 被修改为 以cnumerate防止名称冲突。我基本上想创建一个像equation或 这样的独立环境tabular。假设这\begin{question} \item Lorem. \end{question}是创建一个带有数字的缩进项目。

为什么 cnumerate 不打印数字?缩进没问题,但没有数字。我为每个项目打印 \thecnumi,它有效,但数字没有显示在标签中。

cnumerate.sty:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{cnumerate}
          [1999/03/05 v3.00 cnumerate extcnsions (DPC)]

% latex.ltx

\newcount\@cnumdepth \@cnumdepth = 0
\@definecounter{cnumi}
\@definecounter{cnumii}
\@definecounter{cnumiii}
\@definecounter{cnumiv}
\def\cnumerate{%
  \ifnum \@cnumdepth >\thr@@\@toodeep\else
    \advance\@cnumdepth\@ne
    \edef\@cnumctr{cnum\romannumeral\the\@cnumdepth}%
      \expandafter
      \list
        \csname label\@cnumctr\endcsname
        {\usecounter\@cnumctr\def\makelabel##1{\hss\llap{##1}}}%
  \fi}
\let\endcnumerate =\endlist
\endinput

主文件 doc.tex

\documentclass{article}
\usepackage{cnumerate}
\begin{document}
\begin{cnumerate}
\item Lorem ipsum.
\end{cnumerate}
end{document}

答案1

我是否可以建议exam 文档类?

示例文件:

\documentclass{exam}

\usepackage{lipsum}

\printanswers

\firstpagefootrule % Use a footer rule on the first page
\runningheadrule   % and so on
\runningfootrule   % and so on (note that this does not cancel out \firstpagefootrule

% define the header for the first page (left, center, right), and so on
\firstpageheader{MATH 351 -- Analysis}{\large \sc Fall 2012 Midterm}{\today}
\firstpagefooter{}{\thepage\ of \numpages}{}
\runningheader{MATH 351 -- Analysis}{Fall 2012 Midterm}{\today}
\runningfooter{}{\thepage\ of \numpages}{}

\begin{document}
Read each question carefully. % Preliminary instructions
\begin{questions}
    \question[50] How long should a man's legs be? % This question is worth 50 points
        \begin{solutionorlines}[1in] % If \printanswers is specified,
                                     % the solution will be printed.
                                     % Otherwise, a box 1 inch tall
                                     % will be printed instead.
            Long enough to reach the ground!
        \end{solutionorlines}
    \question[$\infty$] \lipsum[1]   % arbitrary symbolic point values
        \begin{equation}
        \int_0^{2\pi} \sin x\ \mathbf{d}x
        \end{equation}
        \begin{solutionorbox}[2in]
            \lipsum[2]
            \begin{equation}
            \int_0^{2\pi} \sin x\ \mathbf{d}x = 0
            \end{equation}
        \end{solutionorbox}
\uplevel{\lipsum[1-2]} % Perhaps a different part of the exam? More instructions?
\newpage
    \question \lipsum[4]
        \begin{parts}
            \part[10] \lipsum[5]
                \begin{solutionorbox}[2in]
                    \lipsum[10]
                \end{solutionorbox}
            \part[15] \lipsum[6]
                \begin{solutionorbox}[2in]
                    \lipsum[12]
                \end{solutionorbox}
        \end{parts}
\end{questions}
\end{document}

产生留有答案空间的文件,而添加\printanswers到序言中将产生相同的文件,但打印了答案。 如果您想要自定义问题标签(而不是简单的增量),我为此编写了一些新命令:

% for the `exam` class
\newcommand{\xquestion}[1]{
    % Set the questionlabel to the user's choice
    \renewcommand{\questionlabel}{#1}
    \question % do the question thing
    % and reset it back to default
    \renewcommand{\questionlabel}{\thequestion.}
}
\newcommand{\xpart}[1]{
    % Set the partlabel to the user's choice
    \renewcommand{\partlabel}{#1}
    \part % do the part thing
    % and reset it back to default
    \renewcommand{\partlabel}{(\thepartno)}
}

与往常一样,文档类的完整文档位于CTAN

希望这可以帮助!

答案2

我认为在这种情况下(考虑到您的输出),使用标准enumerate环境最容易。可以使用以下方法操作/更改可能的对齐或计数器格式/交叉引用enumitem,如有必要:

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\begin{enumerate}[label=\arabic*.]
  \item \lipsum[1-2]
  \item \lipsum[3-4]
  \item \lipsum[5-6]
\end{enumerate}
\end{document}

lipsum以段落形式提供一些虚拟文本,乱码风格。

优点:

  1. 可通过以下方式轻松修改enumitem
  2. 跨越页面边界的分页;以及
  3. 标准接口/使用。

question对于全局采用专门创建的模拟/克隆的环境enumerateenumitem的界面提供:

\newlist{question}{enumerate}{3}% Clone enumerate as question environment (depth of 3)
\setlist[question]{label=\arabic*.}% All labels are "\arabic."

现在您可以使用

\begin{question}
  \item \lipsum[1-2]
  \item \lipsum[3-4]
  \item \lipsum[5-6]
\end{question}

有关详细信息,请参阅enumitem文档(部分7 克隆基本列表,第 10 页)。

答案3

我发现每个类都定义了自己的样式枚举标签。所以我借鉴了文章并针对 cnumerate 进行了修改。将以下内容添加到 cnumerate.sty 即可解决问题。此外,choices来自的环境exam与我需要的类似,可以进行相应的修改。

\newtoks\@cnLab\renewcommand\thecnumi{\@arabic\c@cnumi}
\renewcommand\thecnumii{\@alph\c@cnumii}
\renewcommand\thecnumiii{\@roman\c@cnumiii}
\renewcommand\thecnumiv{\@Alph\c@cnumiv}
\newcommand\labelcnumi{\thecnumi.}
\newcommand\labelcnumii{(\thecnumii)}
\newcommand\labelcnumiii{\thecnumiii.}
\newcommand\labelcnumiv{\thecnumiv.}
\renewcommand\p@cnumii{\thecnumi}
\renewcommand\p@cnumiii{\thecnumi(\thecnumii)}
\renewcommand\p@cnumiv{\p@cnumiii\thecnumiii}

相关内容