Espaciado del nuevo entorno en listas.

Espaciado del nuevo entorno en listas.

El título no es tan descriptivo. Intento escribir un entorno remarkde estilo personalizado amsthmque pueda tomar argumentos como encabezado (no necesito funcionalidades de referencia). Quería simplificar el código evitando trivlist. remark-Los entornos de teoremas de estilo tienen .5\topsepespacio antes y después del entorno. Pero esto parece realmente extraño en entornos de listas como itemize. Esto es lo que tengo:

\documentclass{article}
\usepackage{lipsum} % for testing

% paragraph environment, takes one mandatory header text
\newenvironment{para}[1]{
    % add space before environment
    \par\addvspace{.5\topsep}
    % header text 
    \noindent\textit{#1.}%
    % default rubber space after header text and ignore following spaces
    \hspace*{5pt plus 1pt minus 1pt}\ignorespaces
}{
    % add space after environment
    \par\addvspace{.5\topsep}
}

\begin{document}

\lipsum[66]

\begin{para}{Looks good}
    \lipsum[66]
\end{para}

\lipsum[66]

\begin{itemize}
    \item \lipsum[66]

        Compare \verb|\parsep| above and the \verb|\parsep+.5\topsep| below.

        \begin{para}{Looks weird}
            \lipsum[66]
        \end{para}

        \lipsum[66]
\end{itemize}

\end{document}

Como puede ver, en entornos de lista, .5\topsepse agrega al valor distinto de cero \parsep, creando una brecha mayor. Los entornos originales amsthmevitan esto empleando los mecanismos de Latex para las listas (configuración \@topsepy \@topsepaddespaciado deseado de .5\topsep). De manera similar, preferiría no agregar ningún espacio si parase llama dentro de la lista de entornos.¿Hay alguna manera de detectar si uno está en un entorno de lista? ¿O existe una solución más elegante?


Editar:Se agregó una imagen del archivo compilado.

ingrese la descripción de la imagen aquí

Respuesta1

ComoDavid Carlisle dijo, no debe usarlo \topseppara definir su entorno, ya que lo configura y restablece la lista de entornos y su entorno no dará un comportamiento consistente (ya que depende de una longitud que se cambia con frecuencia sobre la marcha). Probablemente quieras codificar un valor (conviértelo en pegamento si quieres, pero lo tomaré 4ptporque parece ser la cantidad deseada).

Para manejar el efecto \parskipque puede estar presente o no (en un entorno de lista, \parskipestá configurado para ser igual a \parsep), puede simplemente cancelarlo agregando un vspace adicional. Lo siguiente probablemente hará lo que quieras:

\documentclass{article}
\usepackage{lipsum} % for testing

% paragraph environment, takes one mandatory header text
\newenvironment{para}[1]{
    % add space before environment
    \par\addvspace{4pt}\addvspace{-\parskip}
    % header text 
    \noindent\textit{#1.}%
    % default rubber space after header text and ignore following spaces
    \hspace*{5pt plus 1pt minus 1pt}\ignorespaces
}{
    % add space after environment
    \par\addvspace{4pt}\addvspace{-\parskip}
}

\begin{document}

\lipsum[66]

\begin{para}{Looks good}
    \lipsum[66]
\end{para}

\lipsum[66]

\begin{itemize}
    \item \lipsum[66]

        Compare \verb|\parsep| above and the \verb|\parsep+.5\topsep| below.

        \begin{para}{Looks weird}
            \lipsum[66]
        \end{para}

        \lipsum[66]
\end{itemize}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada