Насколько мне известно, двойной перенос строки вводит новый абзац. Внутри verse
он используется для разделения строф, что также можно сделать с помощью \\!
. Так что в исходном коде LaTeX для длинных отдельных стихотворений почти каждая строка заканчивается на \\
. Можно ли вместо этого использовать одинарный перенос строки для новых строк?
По сути у меня есть
\begin{verse}
There was a young lady of Niger \\
Who smiled as she rode on a tiger; \\
They returned from the ride \\
With the lady inside, \\
And the smile on the face of the tiger.
Second verse.
\end{verse}
и вместо этого хотел бы иметь возможность писать
\begin{verse}
There was a young lady of Niger
Who smiled as she rode on a tiger;
They returned from the ride
With the lady inside,
And the smile on the face of the tiger.
Second verse.
\end{verse}
решение1
Вот одна из возможностей, используя\obeylines
и вариацииответ egregкВставка автоматического вертикального пробела между блоками при активном \obeylinesдля переопределения стандартной verse
среды:
\documentclass{article}
\makeatletter
\renewenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}
\item\relax\obeylines\begingroup\lccode`~=`\^^M
\lowercase{\endgroup\def~}{\par\leavevmode}%
\parskip=0pt plus 1pt%
}
{\endlist}
\makeatother
\begin{document}
\begin{verse}
There was a young lady of Niger
Who smiled as she rode on a tiger;
They returned from the ride
With the lady inside,
And the smile on the face of the tiger.
Second verse.
\end{verse}
\end{document}
решение2
Отличный вопрос и фантастический ответ Гонсало Медины! Работает отлично! Усовершенствование для текущей версии MiKTeX 2.9:
\makeatletter
\renewenvironment{verse}[1][\linewidth]{%
\stepcounter{verse@envctr}%
\setcounter{poemline}{0}\refstepcounter{poemline}%
\setcounter{vslineno}{1}%
\let\\=\@vscentercr
\list{}{\itemsep \z@
\itemindent -\vindent%
\listparindent\itemindent
\parsep \stanzaskip
\ifdim #1 < \linewidth
\rightmargin \z@
\setlength{\leftmargin}{\linewidth}%
\addtolength{\leftmargin}{-#1}%
\addtolength{\leftmargin}{-0.5\leftmargin}%
\else
\rightmargin \leftmargin
\fi
\addtolength{\leftmargin}{\vindent}}%
\item\relax\obeylines\begingroup\lccode`~=`\^^M
\lowercase{\endgroup\def~}{\par\leavevmode}%
\parskip=0pt plus 1pt%
}
{\endlist}
\makeatother