1

我目前正在使用回忆录类来排版一些诗歌。\poemtitle 命令给了我一个居中的诗标题,但我宁愿标题与诗体的边缘齐平。我重新定义了 \poemtitle 命令以删除自动居中。\verse 环境加上 \settowidth{\versewidth}{} 将使诗歌居中,左对齐...因此为了使标题与 verse 环境齐平,我在 \verse 环境中调用标题,如下所示:

\settowidth{\versewidth}{longest poem line here} 
\begin{verse}[\versewidth]
\PoemTitle*{Poem Tite}
\PlainPoemTitle 

...Poem body...

\end{verse}

然而,这有时会缩进诗歌的第一行,或将标题设置为缩进。我看到的唯一其他解决方案是将标题设置在自己的 verse 环境中,如下所示:

\settowidth{\versewidth}{longest poem line here} 
\begin{verse}[\versewidth]
\PoemTitle*{Poem Tite}
\PlainPoemTitle 
\end{verse}

\settowidth{\versewidth}{longest poem line here} 
\begin{verse}

...Poem body...

\end{verse}

有一个更好的方法吗?还是我错过了回忆录文档中的某些内容(我已经阅读了很多次)?

编辑:也许我应该问一个更明确的问题:我可以向乳胶发出任何一组命令,以计算来自 \verse 命令的边距缩进,然后将该边距应用于 \poemtitle 以便诗标题结束与文本的左边缘齐平,而不在自己的 \verse 环境中设置 \poemtitle?

4

2 回答 2

2

我对上课或排版诗歌没有任何经验memoir,所以我不知道您是否打算这样做,但这里有一个似乎可以满足您要求的解决方案(假设您总是使用的星号形式\PoemTitle)。

\newcommand{\leftPoemTitle}[1]{{\PoemTitlefont{#1}}\\[\afterPoemTitleskip]}

\settowidth{\versewidth}{这里最长的诗行}
\开始{诗句}
\leftPoemTitle{诗名}

……诗体……

\结束{诗}

这会产生像诗体一样左对齐的诗标题,与诗体正确隔开,使用正确的字体,并且没有不受欢迎的缩进。此外,它与其他命令配合得很好:如果某些命令(或包选项)修改了标题字体或间距,此\leftPoemTitle宏将继续正常运行。


如果我正确理解您的编辑,您希望诗歌标题位于包含诗歌主体的环境之外,但仍以这样的方式缩进,以使标题与正文对齐。verse除非您有特殊原因这样做,否则我认为上述解决方案更好,但不要介意。

课程手册的第 19 章memoirverse环境是按长度缩进的\vleftmargin,所以你可以按那个长度缩进你的标题。我假设您仍然希望标题使用稍大的字体,因此以下解决方案应该可以解决问题:

\newcommand{\myPoemTitle}[1]{\noindent\hspace{\vleftmargin}{\PoemTitlefont #1}}

\myPoemTitle{诗名}
\settowidth{\versewidth}{这里最长的诗行}
\开始{诗句}

……诗体……

\结束{诗}

请注意,这使标题比第一个解决方案更接近正文。您可以通过重新定义在第一个解决方案中获得这种行为\afterPoemTitleskip

于 2009-08-06T02:44:42.227 回答
0

截至 2020 年,实现这一目标的最简单方法是加载 verse 环境,然后加载 gmverse 环境。

然后将上面的代码替换为:

\poemtitle*{Poem Title here}
%use epigraph package for a subtile, author, etc
\begin{verse}

...Poem body...

\end{verse}

这将根据平均行长将诗歌和标题居中。有多种计算平均值的方法是可能的(参见 gmverse 文档)。我发现默认看起来不错。

它还将包裹较长的行,因此溢出设置为右对齐,这在诗歌书中是正常的。我还没有找到另一种自动执行此操作的方法。

Gmverse 还允许您在每行的末尾设置不带 \\ 的行,只使用行尾(以及一个额外的行来获得节之间的间隙)。这非常适合快速轻松地键入或复制和粘贴。

可能的缺点:可能与回忆录不兼容。自从我为我的收藏使用标准书籍类以来,我还没有测试过它。

于 2020-06-25T14:06:40.870 回答