![是否可以在环境中本地设置长度?](https://linux22.com/image/371863/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%9C%AC%E5%9C%B0%E8%AE%BE%E7%BD%AE%E9%95%BF%E5%BA%A6%EF%BC%9F.png)
我使用该类编写了很多文档exam
。我的一份典型文档如下所示:
\documentclass{exam}
\setlength{\marginpointssep}{2.5cm}%
\begin{document}
\begin{questions}
\question Answer the following.
\begin{parts}\setlength{\marginpointssep}{.05cm}%
\part[10] First question.
\part[10] Second question.
\end{parts}\setlength{\marginpointssep}{2.5cm}%
\end{questions}
\end{document}
注意,在环境外部,的parts
值为。在环境内部, 的值为。\marginpointssep
2.5cm
parts
\marginpointssep
.05cm
是否可以自动完成此操作,以便它\marginpointssep
位于每个环境2.5cm
之外和每个零件环境之内?parts
.05cm
答案1
要添加
\setlength{\marginpointssep}{.05cm}
到环境中parts
,可以使用etoolbox
包由于变化发生在组内,因此在环境之后将长度重置为 2.5 厘米
parts
是不必要的,因此只有环境内的内容parts
会受到此变化的影响。
\documentclass{exam}
\setlength{\marginpointssep}{1.5cm}%
\usepackage{etoolbox}
\AtBeginEnvironment{parts}{\setlength{\marginpointssep}{.05cm}}
\begin{document}
\begin{questions}
\pointsinmargin
\question Answer the following.
\begin{parts}
\part[10] First question.
\part[10] Second question.
\end{parts}%
\question[15]
\end{questions}
\end{document}
答案2
我不确定 2.5 厘米左右,在正常情况下这会将点推到纸张左边距之外。
使用\partshook
:
\documentclass{exam}
\pointsinmargin
\setlength{\marginpointssep}{1.5cm}
\renewcommand{\partshook}{\setlength{\marginpointssep}{0pt}}
\begin{document}
\begin{questions}
\question[20] Answer the following.
\begin{parts}
\part[10] First question.
\part[10] Second question.
\end{parts}
\question[20] Answer the following.
\begin{parts}
\part[10] First question.
\part[10] Second question.
\end{parts}
\end{questions}
\end{document}