Espacio vertical no deseado con lista enumitem en el entorno de ejercicio xsim

Espacio vertical no deseado con lista enumitem en el entorno de ejercicio xsim

Estoy usando el paquete xsim para crear series de ejercicios. Algunos ejercicios comienzan inmediatamente con las partes (a), (b), etc., y sin texto introductorio. He usado otras respuestas de aquí para configurar una lista enumitem con topsep = 0pt y vspace negativo para el 'antes'. Esto parece estar bien en la mayoría de los casos, excepto en el ejercicio 2 de este ejemplo, donde el superíndice parece afectar la alineación vertical.

¿Existe una mejor manera de configurar la lista de enumitem para que la parte (a) siempre se alinee correctamente con el número de ejercicio?

\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}

Captura de pantalla del problema de alineación en el ejercicio 2

Respuesta1

Tal vez implementar la marginplantilla con un 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}

ingrese la descripción de la imagen aquí

Respuesta2

ingrese la descripción de la imagen aquí

Si desea que la altura sobredimensionada de la expresión interna afecte la posición del número de la etiqueta externa, debe retrasar la configuración de ese número y luego pegarlo a la etiqueta interna. LaTeX hace algo similar de forma predeterminada para las listas anidadas, pero aquí lo hago a mano.

\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}

información relacionada