考试之前要先进行 Parskip 吗?

考试之前要先进行 Parskip 吗?

我想在段落结尾和开头之间添加一些空格parts。默认情况下,与传统的乳胶。

下面你会看到(a) Foo问题文本下方没有太多空间。我宁愿得到与列表中相同的内容(第二个红色箭头)。

我应该在哪里调整这个参数?\vskip 1em每次都添加一个还不够干净。

在此处输入图片描述

\documentclass{exam}    
\setlength{\parskip}{1em}

\qformat{%
  \Large\textbf{\thequestiontitle}
  \quad \thepoints \hfill
  \vrule depth 1.5em width 0pt
}

\renewcommand{\questionshook}{%
\setlength{\leftmargin}{0pt}%
\setlength{\labelwidth}{-\labelsep}%
}

\begin{document}
\begin{questions}
\titledquestion{1\hspace{0.7em} Foo}[10]\par
Lorem ipsum dolor sit amet\par
\begin{parts}
    \part Foo
\end{parts}
\end{questions}

\section{List}
Lorem ipsum dolor sit amet\par 
\begin{enumerate}
    \item Foo
\end{enumerate}
\end{document}

我发现我可以更改topsep其中的值exam.cls

 \list{\partlabel}%
    {%
    \usecounter{partno}\def\makelabel##1{\hss\llap{##1}}%
    \settowidth{\leftmargin}{(m)\hskip\labelsep}%
    \labelwidth\leftmargin\advance\labelwidth-\labelsep
    \topsep=1em     % <<<<<<<<<<<<<
    \partopsep=0pt
    \partshook
    }%
  }% newenvironment{parts}

但由于它是硬编码的,我不知道如何在不对考试类进行猴子修补的情况下更改它。我试过这个,但它不起作用:

\xpatchcmd*\process@part{\topsep=0em}{\topsep=1em}{}{}

答案1

使用parthook

A

\documentclass{exam}    
\setlength{\parskip}{1em}

\qformat{%
    \Large\textbf{\thequestiontitle}
    \quad \thepoints \hfill
    \vrule depth 1.5em width 0pt
}

\renewcommand{\questionshook}{%
    \setlength{\leftmargin}{0pt}%
    \setlength{\labelwidth}{-\labelsep}%
}

\renewcommand{\partshook}{% added <<<<<<<<<<<<<<<<
    \setlength{\partopsep}{5ex}%
}

\begin{document}
    \begin{questions}
        \titledquestion{1\hspace{0.7em} Foo}[10]\par
        Lorem ipsum dolor sit amet\par
        \begin{parts}
            \part Foo
        \end{parts}
    \end{questions}
    
    \section{List}
    Lorem ipsum dolor sit amet\par 
    \begin{enumerate}
        \item Foo
    \end{enumerate}
\end{document}

相关内容