![诗歌按页而不是按节排版](https://linux22.com/image/285988/%E8%AF%97%E6%AD%8C%E6%8C%89%E9%A1%B5%E8%80%8C%E4%B8%8D%E6%98%AF%E6%8C%89%E8%8A%82%E6%8E%92%E7%89%88.png)
我正在设置一本诗集,这是一首连续的长诗。有些诗行很短。其他诗行很长。有没有办法让 LaTeX 为任何给定页面上的诗行而不是单个诗行找到最佳水平位置?
没有太长的线条需要断开。理想情况下,文本框应该居中,但大致居中也足够了。
我经常使用 memoir 自己的诗歌功能,也使用过 verse 包。这两个包都没有提供逐页设置行数而不是逐行设置行数的选项。目前我没有最低限度的工作示例,因为我甚至不确定如何解决这个问题。
答案1
请总是提供一个完整的例子。这样你就不用读下面我的文学杰作了,也省去了我创作的时间。
\documentclass{article}
\addtolength\textheight{-30\baselineskip}
\begin{document}
\setbox0\vbox{\parindent0pt\obeylines
This is my poem
it has lines
that are short
very short
later they get longer
as we will see
\bigskip
one
two
three
four
five
\bigskip
verse 3
starts short
but the lines get longer
and then they get really quite long
some would say that this line is excessively long
\bigskip
and then we shrink again
in time for the third page
\bigskip
1
2
3
4
5
6
7
\bigskip
8
9
10
11
12
13
14
\vfill}
\centering
\loop
\setbox2\vsplit0 to \textheight
\ifvoid2
\else
\global\setbox1\vbox{}%
\setbox4\vbox{\unvbox2
\loop
\setbox0\lastbox
\skip0\lastskip\unskip
\skip2\lastskip\unskip
\global\setbox1\vbox{%
\vskip\skip2
\vskip\skip0
\hbox{\unhbox0\unskip\unskip}%
\unvbox1}%
\ifnum\lastnodetype=-1
\else
\repeat}%
\leavevmode\box1
\par
\pagebreak
\repeat
\end{document}
答案2
我想,如果我是一名书籍设计师,并且必须设计一首由多行短诗和多行长诗组成的长诗,我不会想将诗句逐页居中,因为这会破坏你想在读者心中保留的印象,即所有这些诗行都是一首诗的一部分。
但是,如果我愿意这样做,我想我会找到分页符的位置,并将每一页设置为一首单独的诗歌,使用verse 和 poemscol 中使用的机制将该特定页面的诗歌居中。如果您要添加行号,您可以使用和命令\versewidth
来解决在分页符处开始和停止诗歌的问题。\savelinenumber
\restorelinenumber