
Я попытался создать новую среду с помощью мини-страницы, которая имеет то же вертикальное пространство между абзацами, которое было бы без использования мини-страницы. Что у меня есть на данный момент:
\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
не предотвращающий разрыв страницы внутри стиха)
Примечание: используется 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
Вы также можете использовать a 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}