저는 xsim 패키지를 사용하여 운동 세트를 만들고 있습니다. 일부 연습은 소개 텍스트 없이 (a), (b) 부분 등으로 즉시 시작됩니다. 나는 여기에서 다른 답변을 사용하여 'before'에 대해 topsep = 0pt 및 음수 vspace를 사용하여 열거 항목 목록을 설정했습니다. 위 첨자가 수직 정렬에 영향을 미치는 것으로 보이는 이 예의 연습 2를 제외하고는 대부분의 경우 괜찮아 보입니다.
(a) 부분이 항상 연습 번호와 올바르게 정렬되도록 열거 항목 목록을 설정하는 더 좋은 방법이 있습니까?
\documentclass[a4paper,11pt]{memoir}
\usepackage[T1]{fontenc}
\usepackage[defaultsans]{opensans}
\usepackage{newtxtext,newtxmath}
\setlength{\parskip}{0.6em}
\setlength{\parindent}{0pt}
\usepackage{xsim}
\DeclareExerciseEnvironmentTemplate{margin} % simulate margin-nr style from exsheets
{%
\par\vspace{\baselineskip}
\Needspace*{2\baselineskip}
\noindent
\llap{%
\smash{%
\tabular[t]{@{}r@{}}
\sffamily\textbf{\GetExerciseProperty{counter}\,}
\endtabular
} % notice the space
}%
}
{}
\xsimsetup{
exercise/template = margin,
solution/template = margin
}
\usepackage{enumitem}
\newlist{exampartsnoskip}{enumerate}{2}
\setlist[exampartsnoskip]{topsep=0pt,before={\vspace*{-1.85em}},label={(\alph*)},itemsep=0.1em,leftmargin=\oddsidemargin}
\setlist[exampartsnoskip,1]{label=(\alph*)}
\begin{document}
\begin{exercise}
\begin{exampartsnoskip}
\item First
\item Second
\end{exampartsnoskip}
\end{exercise}
\begin{exercise}
\begin{exampartsnoskip}
\item Evaluate $\left(36^\frac12+16^\frac14\right)^\frac13$
\item Second
\end{exampartsnoskip}
\end{exercise}
\begin{exercise}
\begin{exampartsnoskip}
\item $\dfrac{x}{\dfrac{1}{x+1}}$
\item Second
\end{exampartsnoskip}
\end{exercise}
\end{document}
답변1
margin
다음을 사용하여 템플릿을 구현할 수도 있습니다 trivlist
.
\documentclass[a4paper,11pt]{memoir}
\usepackage[T1]{fontenc}
\usepackage[defaultsans]{opensans}
\usepackage{newtxtext,newtxmath}
\setlength{\parskip}{0.6em}
\setlength{\parindent}{0pt}
\usepackage{showframe}
\usepackage{xsim}
\DeclareExerciseEnvironmentTemplate{margin}{%
\trivlist
\item[\llap{\sffamily\textbf{\GetExerciseProperty{counter}}}]\relax
}
{\endtrivlist}
\xsimsetup{
exercise/template = margin,
solution/template = margin
}
\usepackage{enumitem}
\newlist{examparts}{enumerate}{2}
\setlist[examparts]{
topsep=0pt,
% before={\vspace*{-1.85\baselineskip}},
label={(\alph*)},
itemsep=0.1em,
leftmargin=\oddsidemargin
}
\setlist[examparts,1]{label=(\alph*)}
\begin{document}
\begin{exercise}
\begin{examparts}
\item First
\item Second
\end{examparts}
\end{exercise}
\begin{exercise}
\begin{examparts}
\item Evaluate $\left(36^\frac12+16^\frac14\right)^\frac13$
\item Second
\end{examparts}
\end{exercise}
\begin{exercise}
\begin{examparts}
\item $\dfrac{x}{\dfrac{1}{x+1}}$
\item Second
\end{examparts}
\end{exercise}
\end{document}
답변2
내부 표현식의 크기가 너무 큰 높이가 외부 레이블 번호의 위치에 영향을 미치도록 하려면 해당 숫자 설정을 지연한 다음 내부 레이블에 고정해야 합니다. LaTeX는 기본적으로 중첩 목록에 대해 비슷한 작업을 수행하지만 여기서는 수동으로 수행합니다.
\documentclass[a4paper,11pt]{memoir}
\usepackage[T1]{fontenc}
\usepackage[defaultsans]{opensans}
\usepackage{newtxtext,newtxmath}
\setlength{\parskip}{0.6em}
\setlength{\parindent}{0pt}
\usepackage{xsim}
\DeclareExerciseEnvironmentTemplate{margin} % simulate margin-nr style from exsheets
{%
\par\vspace{\baselineskip}
\Needspace*{2\baselineskip}
\protected\gdef\exno{\llap{%
\sffamily\textbf{\GetExerciseProperty{counter}\,} }% notice the space
\gdef\exno{}}%
}
{}
\xsimsetup{
exercise/template = margin,
solution/template = margin
}
\usepackage{enumitem}
\newlist{exampartsnoskip}{enumerate}{2}
\setlist[exampartsnoskip]{topsep=0pt,before={\vspace*{-1.85em}},label={(\alph*)},itemsep=0.1em,leftmargin=\oddsidemargin}
\setlist[exampartsnoskip,1]{label=\exno(\alph*)}
\begin{document}
\begin{exercise}
\begin{exampartsnoskip}
\item First
\item Second
\end{exampartsnoskip}
\end{exercise}
\begin{exercise}
\begin{exampartsnoskip}
\item Evaluate $\left(36^\frac12+16^\frac14\right)^\frac13$
\item Second
\end{exampartsnoskip}
\end{exercise}
\begin{exercise}
\begin{exampartsnoskip}
\item $\dfrac{x}{\dfrac{1}{x+1}}$
\item Second
\end{exampartsnoskip}
\end{exercise}
\end{document}