ambiente de minipágina mantém parskip

ambiente de minipágina mantém parskip

Tentei criar um novo ambiente usando minipágina, que possui o mesmo espaço vertical entre os parágrafos que existiria quando não estivesse usando a minipágina. O que tenho até agora é:

\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 \\%
}

Porém, na linha, onde utilizo pela primeira vez esse novo ambiente, assim:

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

Estou tendo o erro a seguir:

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

A princípio pensei que fosse falando do 1.0\textwidth, mas depois vi que escrevi isso em todos os lugares onde usei minipage, então agora acho que pode não ser isso. Não entendo onde mais um número pode estar faltando, levando a esse erro.

O minipageparskipambiente é na verdade copiado de outroPostagem SE.

Em última análise, quero ter um ambiente em que não ocorra quebra de página e que contenha o verso de uma música.

Como posso corrigir o erro?

Exemplo ( samepagenão impedindo o pagebreak no songverse)

Nota: usando xelatexpara compilar.

    \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}

Responder1

Seu minipageparskipambiente não espera uma discussão. Ajustei sua definição, que o argumento seja repassado.

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

Editar:

Mas por que você aninha esses dois ambientes? Eu acho que seria muito mais fácil apenas usarumambiente.

\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}

Responder2

Você também pode usar a tabularpara fornecer um bloco inquebrável. Não sofre do mesmo\baselinequestões que \parboxe minipagetêm.

insira a descrição da imagem aqui

\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}

informação relacionada