如何使在环境内部声明的 \parshape 应用在环境外部的下一段?

如何使在环境内部声明的 \parshape 应用在环境外部的下一段?

我正在尝试做类似下面的 MWE 的事情:

\documentclass{article}
\usepackage{lipsum}

\newenvironment{myenv}{%
  \parshape = 4
    0pt 0.5\textwidth
    0pt 0.5\textwidth
    0pt 0.5\textwidth
    0pt \textwidth
}{}

\begin{document}

\begin{myenv}
\end{myenv}%
\lipsum[1]

\end{document}

我需要环境\parshape中声明的内容myenv应用于myenv环境后面的下一段。但显然它现在无法做到这一点。有什么办法可以让它工作吗?

答案1

请始终发布完整的文档而不仅仅是片段。

在 LaTeX 中设置注释\parshape几乎总是错误的,除非非常小心(几乎所有的 LaTeX 构造都使用\list严重依赖于\parshape不被干扰的机制)。

然而

\documentclass{article}
\usepackage{lipsum}
\newenvironment{myenv}{%
  \gdef\foo{\parshape = 4
    0pt 0.5\textwidth
    0pt 0.5\textwidth
    0pt 0.5\textwidth
    0pt \textwidth}\aftergroup\foo
}{}

\begin{document}

\begin{myenv}
\end{myenv}%
\lipsum[1]

\end{document}

相关内容