一系列“枚举”中的不良对齐

一系列“枚举”中的不良对齐

(我首先要说的是,tex.se 上似乎有不少带有关键词“align”和“enumerate”的问题,但似乎它们都涉及枚举环境中的对齐问题或结合对齐和枚举环境的问题 - 所以我不认为我的问题是多余的。)

以下是我正在做的事情以及出现的问题的要点。我正在输入一个由三部分(数学)组成的问题的答案,这些部分被列举为 (i)、(ii) 和 (iii)。在陈述完每个部分后,我希望在下面写下答案。所以它应该是这样的

(一)问

A

(二)问

A

(三)问

A

也许这不是最有效的打字方式(当然,请随意推荐其他方式),但我已经这样做了

\begin{enumerate}[(i)]
\item question 1
\end{enumerate}
answer 1

\begin{enumerate}[(ii)]
\item question 2
\end{enumerate}
answer 2

\begin{enumerate}[(iii)]
\item question 3
\end{enumerate}
answer 3

但是,结果 (iii) 比 (ii) 向右移动得更远,而 (ii) 又比 (i) 向右移动得更远。谁能告诉我为什么会发生这种情况以及如何补救?

答案1

一种选择是为问题定义一个新的环境(或者可能是命令):

\documentclass{article}

\newcounter{question}
\newenvironment{question}
  {\stepcounter{question}\par\vspace{\topsep}\makebox[2em]{(\roman{question})\hfill}}
  {\par\vspace{\topsep}}

\begin{document}

\begin{question}
question 1
\end{question}
answer 1

\begin{question}
question 2
\end{question}
answer 2

\begin{question}
question 3
\end{question}
answer 3

\end{document}

在此处输入图片描述

另一个选项是通过包使用类似定理的结构(列表)amsthm

\documentclass{article}
\usepackage{amsthm}

\newtheoremstyle{question}
  {3pt}{3pt}{\normalfont}
  {}{\bfseries}{}{.5em}
  {#1\makebox[2em]{(#2)\hfill}#3}%

\theoremstyle{question}
\newtheorem{question}{}
\renewcommand\thequestion{\roman{question}}

\begin{document}

\begin{question}
question 1
\end{question}
answer 1

\begin{question}
question 2
\end{question}
answer 2

\begin{question}
question 3
\end{question}
answer 3

\end{document}

在此处输入图片描述

答案2

我建议使用包裹enumitem,它的resume*功能可以让您按所需的方式对齐问题标签:

在此处输入图片描述

笔记:

  • 您还可以使用它\newlist来定义自己的列表样式。

代码:

\documentclass{article}

\usepackage{enumitem}

\begin{document}

\begin{enumerate}[label={(\roman*)},series=Questions]
\item question 1
\end{enumerate}
answer 1

\begin{enumerate}[resume*=Questions]
\item question 2
\end{enumerate}
answer 2

\begin{enumerate}[resume*=Questions]
\item question 3
\end{enumerate}
answer 3
\end{document}

如果您还希望答案与问题开头的左侧对齐,那么您只需将答案放在枚举内即可\item

在此处输入图片描述

代码:

\documentclass{article}

\usepackage{enumitem}

\begin{document}

\begin{enumerate}[label={(\roman*)},series=Questions]
\item question 1

answer 1
\end{enumerate}


\begin{enumerate}[resume*=Questions]
\item question 2

answer 2
\end{enumerate}


\begin{enumerate}[resume*=Questions]
\item question 3

answer 3
\end{enumerate}
\end{document}

答案3

我建议使用exam文档类,因为它允许列举问题(罗马字体也行),并带有正确的答案缩进(参见i-ivMWE)或与左边距对齐(v-vi参见 MWE),而且还有许多其他有趣的问题选项,如打印带/不带答案、显示/隐藏要点等。CTAN 中的包很大但易于理解手动的

\documentclass[answers,12pt,addpoints]{exam}
\usepackage{xcolor}
\definecolor{SolutionColor}{rgb}{0.1,0.3,1}
\usepackage{lipsum}

\renewcommand{\thequestion}{\roman{question}}
\renewcommand\questionlabel{\llap{(\thequestion)}}

\begin{document}

\pointsinrightmargin
\boxedpoints
% \unframedsolutions
\shadedsolutions
\definecolor{SolutionColor}{rgb}{0.9,0.9,1}

\begin{questions}

\question[10] What is the exam class?
\begin{solution}
This is the solution
\end{solution}

\renewcommand{\solutiontitle}{}

\question[5]  Do you know the addpoints option?
\begin{solution}
This is the solution without label
\end{solution}

\renewcommand{\solutiontitle}{\noindent\textbf{Answer: }\par\noindent}


\question[10] Why is there air?
\begin{solution}
This is the solution with another label
\end{solution}

\question[15] How much wood would a woodchuck 
chuck if a woodchuck could chuck wood?
\begin{solution}
This is the solution
\end{solution}


\question[10] Compute $\displaystyle\int_0^1 x^2 \, dx$.

\begin{EnvFullwidth}
\begin{solution}
This is a WIDER solution %dummy solution
\end{solution}
\end{EnvFullwidth}

\bonusquestion[1] On what day of the week did he do it?

\renewcommand{\solutiontitle}{\noindent\textbf{Answer: }\par\noindent}

\begin{EnvFullwidth}
\begin{solution}
\lipsum[2]%dummy text
\end{solution}
\end{EnvFullwidth}

\end{questions}

\begin{center}

This exam has \numquestions\ questions, for a total 
of \numpoints\ points and \numbonuspoints\ bonus points.
\end{center}


\end{document}

在此处输入图片描述

相关内容