我正在尝试为多项选择题创建一个新环境。我想确保每个问题都有一个编号并且具有恒定的缩进:
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
以段落形式提供一些虚拟文本,乱码风格。
优点:
- 可通过以下方式轻松修改
enumitem
; - 跨越页面边界的分页;以及
- 标准接口/使用。
question
对于全局采用专门创建的模拟/克隆的环境enumerate
,enumitem
的界面提供:
\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}