具有 center 和 parsep 的新环境

具有 center 和 parsep 的新环境

我想要创建一个新的环境,其中内容居中,并且可以在其中指定本地 parsep 值。

我尝试做以下工作:

\documentclass{article}                                                           

\usepackage{lipsum}

\newenvironment{myenv}[1]{%
    \center %
    \begingroup %
    \setlength{\parsep}{#1} %
}{%
    \endgroup %
    \endcenter %
}

\begin{document}

\lipsum[1]

\lipsum[2]

\begin{myenv}{1cm}
  Hello

  world
\end{myenv}

\lipsum[3]

\end{document}

该环境根据需要将“Hello”和“world”居中,但段落间距与 lipsum[1] 和 lipsum[2] 之间的间距相同,并且我希望它是 1 厘米(在此示例中)。

答案1

您正在使用的环境center是根据 定义的,trivlist不受 的设置影响\parsep。您需要一个完整的list环境:

\documentclass{article}                                                           

\usepackage{lipsum}

\newenvironment{myenv}[1]
  {\list{}{%
     \setlength{\parsep}{#1}%
     \setlength{\leftmargin}{0pt}%
     \setlength{\labelwidth}{0pt}%
     \setlength{\labelsep}{0pt}%
   }\centering\item\relax}
  {\endlist}

\begin{document}

\lipsum[1-2]
\begin{myenv}{1cm}
  Hello

  world
\end{myenv}
\begin{center}
Hello

world
\end{center}
\lipsum[3]

\end{document}

我添加了一个center用于比较的环境。

在此处输入图片描述


请谨慎%使用行尾的 :在您的\center行中不需要它,而行前%\setlength空格可能引入虚假空间(在本例中不会出现这种情况,因为 TeX 以垂直模式处理它)。\begingroup\endgroup标记不是必需的,因为每个环境都已隐式提供它们;因此,在 中执行的任何(本地)赋值都将在处理myenv时消失。\end{myenv}

答案2

不要%在行末的 之前留空格,否则你会强制产生行末的百分比试图避免的效果,即定义中的额外空格标记。此外,每当你更改段落设置时,你都需要确保段落结束该组重置设置。最后\parsep是 latex 列表环境的参数,您需要\parskip在这里输入。

\documentclass{article}                                                           

\usepackage{lipsum}

\newenvironment{myenv}[1]{%
    \center %
    \setlength{\parskip}{#1}%
}{%
    \endcenter %
}

\begin{document}

\lipsum[1]

\lipsum[2]

\begin{myenv}{1cm}
  Hello

  world
\end{myenv}

\lipsum[3]

\end{document}

答案3

\parsep是列表中使用的内部参数。您可能想要的是长度\parskip。您没有指定环境开头或结尾的间距,但这里有一个可行的示例。请注意,我们通过添加最后一个\par命令并再次插入垂直跳过来关闭环境。

示例输出

\documentclass{article}                                                           

\usepackage{lipsum}

\newenvironment{myenv}[1]{%
    \center
    \begingroup
    \setlength{\parskip}{#1}%
}{%
    \par\vspace{\parskip}%
    \endgroup
    \endcenter
}

\begin{document}

\lipsum[1]

\lipsum[2]

\begin{myenv}{1cm}
  Hello

  world
\end{myenv}

\lipsum[3]

\end{document}

相关内容