entorno de minipágina mantener parskip

entorno de minipágina mantener parskip

Intenté crear un nuevo entorno usando minipágina, que tiene el mismo espacio vertical entre párrafos que tendría cuando no usara la minipágina. Lo que tengo hasta ahora es:

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

Sin embargo, en la línea donde utilizo por primera vez este nuevo entorno, así:

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

Obtuve el siguiente error:

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

Al principio pensé que se refería a 1.0\textwidth, pero luego vi que lo había escrito en todas partes donde usaba minipage, así que ahora creo que podría no ser eso. No entiendo en qué otro lugar podría faltar un número, lo que provoca este error.

En realidad, el minipageparskipentorno se copia de otro.publicación SE.

En última instancia, quiero tener un entorno en el que no se produzca ningún salto de página y que contenga una estrofa de una canción.

¿Cómo puedo solucionar el error?

Ejemplo ( samepagesin evitar el salto de página dentro del verso de la canción)

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}

Respuesta1

Su minipageparskipentorno no espera una discusión. Ajusté su definición, que se pasa el argumento.

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

Editar:

Pero, ¿por qué anidas estos dos entornos? Creo que sería mucho más fácil simplemente usarunoambiente.

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

Respuesta2

También puedes usar a tabularpara proporcionar un bloque irrompible. No sufre lo mismo\baselineproblemas que \parboxy minipagetienen.

ingrese la descripción de la imagen aquí

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

información relacionada