내가 아는 한, 이중 줄 바꿈은 새로운 단락을 소개합니다. 이 안에는 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
의 가능성이 있습니다.에그레그의 답변에게\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
Gonzalo Medina의 훌륭한 질문과 환상적인 답변! 잘 작동해요! 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