如何在 minipage 中保留相同的 parskip

如何在 minipage 中保留相同的 parskip

我有以下结构:

\begin{document}

Paragraph1.
Paragraph2.

\begin{minipage}
Some paragraph1.
Some paragraph2.
\end{minipage}

\end{document}

如何才能使小页面部分中的段落间距与普通段落中的段落间距相同?我想将其制作成宏,以免重复多次,但这失败了:

\let\currentparskip\parskip
\newenvironment{minipage_parskip}{
  \begin{minipage}{\textwidth}{
    \setlength{\parskip}{\currentparskip}
  }
}{
  \end{minipage}
}

答案1

\parskip是包含 parskip 当前值的长度参数的名称;因此\let\currentparskip=\parskip\setlength{\parskip}{\currentparskip}相当于\setlength{\parskip}{\parskip}minipage 内部的并且不执行任何操作,因为的值\parskip已经为零。

\newlength{\currentparskip}
\newenvironment{minipageparskip}
  {\setlength{\currentparskip}{\parskip}% save the value
   \begin{minipage}{\textwidth}% open the minipage
   \setlength{\parskip}{\currentparskip}% restore the value
  }
  {\end{minipage}}

虽然环境名称中的下划线并不被禁止,但最好不要使用它,因为有些软件包确实会改变其含义并可能破坏您的环境。

答案2

和 都会\parbox暂时\begin{minipage}重置\parindent=0pt\parskip=0pt(以及一些其他参数),这可能会造成麻烦。

幸运的是,在此之后\begin{minipage}还会执行\@minipagerestore宏,这是一个钩子,允许 LaTeX 样式覆盖这些默认值。(请参阅“texdoc source2e”中的 ltboxes 部分。)

所以尝试一下

\usepackage{parskip}
\setlength{\parskip}{\medskipamount}
\newcommand{\@minipagerestore}{\setlength{\parskip}{\medskipamount}}

在您的样式或类文件中。

改变现有“minipage”环境的行为的优点在于,这将自动影响内部使用 minipage 的许多其他环境(例如 beamer 中的“columns”)。

相关内容