minipage 环境保持 parskip

minipage 环境保持 parskip

我尝试使用 minipage 创建一个新环境,该环境的段落间垂直间距与不使用 minipage 时相同。到目前为止,我拥有的是:

\usepackage{boxedminipage} % had to use this to get minipage

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

\newenvironment{songverse}
{%
    \begin{minipageparskip}{1.0\textwidth}%
    \begin{center}%
}
{%
    \end{center}%
    \end{minipageparskip}%
    \leavevmode \\%
}

但是,在我第一次使用这个新环境的地方,如下所示:

\begin{songverse}
...
Text
...
\end{songverse}

我收到以下错误:

! Missing number, treated as zero.
<to be read again> 
                   }
\songverse ...in {minipageparskip}{1.0\textwidth }
                                                  \begin {center}
l.118 \begin{songverse}

起初我以为是在谈论1.0\textwidth,但后来我发现,我在使用 的所有地方都写了minipage,所以现在我认为可能不是那样。我不明白还有什么地方可能缺少数字,导致这个错误。

环境minipageparskip实际上是从另一个复制而来的SE帖子

最终,我想要一个没有分页符并且包含一首歌曲的环境。

我该如何修复这个错误?

示例(samepage不阻止 Songverse 中的分页符)

注意:使用xelatex进行编译。

    \documentclass[12pt, a5paper]{extarticle}
\usepackage[
    top=20mm,
    bottom=20mm,
    left=24mm,
    right=24mm
]{geometry}

\usepackage{fontspec}
\usepackage{xunicode}
\usepackage[UTF8]{ctex}

% AUTOMATICAL PINYIN PHONETIC SCRIPT
\newfontfamily{\DVS}{DejaVu Sans}
\usepackage{xpinyin}
\xpinyinsetup{ratio={.6}, hsep={.5em plus .1em}, vsep={1.1em}, multiple={\color{red}}, pysep={.2em}, footnote=false, font=\DVS}


\newenvironment{songverse}
{%
    \begin{samepage}%
    \begin{center}%
}{%
    \end{center}%
    \end{samepage}%
}


\begin{document}

\begin{pinyinscope}

\begin{songverse}

无量心 生福报 无极限

无极限 生息息 爱相连

为何君视而不见

规矩定方圆

悟性 悟觉 悟空 心甘情愿

\end{songverse}
\begin{songverse}

放下 颠倒梦想 放下云烟

放下 空欲色 放下悬念

多一物 却添了 太多危险

少一物 贪嗔痴 会少一点

\end{songverse}
\begin{songverse}

若是缘 再苦味也是甜

若无缘 藏爱 在心田

尘世 藕断还丝连

回首一瞬间

种颗善因 陪你走好每一天

\end{songverse}
\begin{songverse}

唯有 心无挂碍 成就大愿

唯有 心无故 妙不可言

算天算\xpinyin{地}{di4} 算尽\xpinyin{了}{liao3} 从前

算不出 生死 会在哪一天

\end{songverse}
\begin{songverse}

勿生恨 点化虚空的眼

勿生怨 欢喜 不遥远

缠绕 欲望的思念

善恶一瞬间

心怀忏悔 陪你走好每一天

\end{songverse}
\begin{songverse}

再牢的谎言

却逃不过天眼

明日之前 心流离更远

浮云霎那间

障眼 人心渐离间

集苦连连 不断的出现

\end{songverse}
\begin{songverse}

无量心 生福报 无极限

无极限 生息息 爱相连

凡人却视而不见

规矩定方圆

悟性 悟觉 悟空 心甘情愿

\end{songverse}
\begin{songverse}

简简单单 陪你走好每一天

\end{songverse}
\end{pinyinscope}

\end{document}

答案1

您的minipageparskip环境不需要参数。我调整了您的定义,参数已传递。

\newenvironment{minipageparskip}[1]
{%
    \setlength{\currentparskip}{\parskip}% save the value
    \begin{minipage}{#1}% open the minipage
    \setlength{\parskip}{\currentparskip}% restore the value
}%
{\end{minipage}}

编辑:

但为什么要嵌套这两个环境呢?我认为使用环境。

\documentclass{article}
\newlength{\currentparskip}
\newenvironment{songverse}
{%
    \setlength{\currentparskip}{\parskip}% save the value
    \begin{minipage}{1.0\textwidth}%
    \setlength{\parskip}{\currentparskip}% restore the value
    \begin{center}%
}{%
    \end{center}%
    \end{minipage}%
    \leavevmode \\%
}
\begin{document}
\begin{songverse}
...
Text
...
\end{songverse}
\end{document}

答案2

您还可以使用tabular提供牢不可破的方块。它不会受到同样的\baseline\parbox存在minipage的问题

在此处输入图片描述

\documentclass{article}

\usepackage[nopar]{lipsum}% Just for this example

\newlength{\currentparskip}

\newenvironment{songverse}
{%
  \setlength{\currentparskip}{\parskip}% Save current \parskip
  \par%\vspace{\baselineskip}% Add possible separation
  \noindent\begin{tabular}[t]{@{} p{\textwidth} @{}}%
    \centering
    \setlength{\parskip}{\currentparskip}% Restore current \parskip
}
{%
  \end{tabular}%
  \par%\vspace{\baselineskip}% Add possible vertical separation
}

\begin{document}

\setlength{\parskip}{10pt}

\lipsum[1]

\lipsum[2]

\newpage

\begin{songverse}
\lipsum[1]

\lipsum[2]
\end{songverse}

\end{document}

相关内容