латексные мемуары, стихотворное окружение и поэма - PullRequest
1 голос
/ 06 августа 2009

В настоящее время я использую класс мемуаров для набора некоторых стихов. Команда \ poemtitle дает мне центрированный заголовок стихотворения, но я бы предпочел, чтобы заголовок находился на одном уровне с краем тела стихотворения. Я переопределил команду \ poemtitle для удаления автоматического центрирования. Среда \ verse coupled \ settowidth {\ versewidth} {} будет центрировать стихотворение с выравниванием по левому краю ... таким образом, чтобы заголовок находился на одном уровне со средой стихов, я называю заголовок в среде \ verse следующим образом: *

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

...Poem body...

\end{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 так, чтобы стих заголовок заканчивается вровень с левым краем текста, не устанавливая \ poemtitle в своей собственной среде \ verse?

1 Ответ

2 голосов
/ 06 августа 2009

У меня нет опыта работы с memoir классом или наборными стихами, поэтому я не знаю, есть ли какой-то другой способ, которым вы намеревались это сделать, но вот решение, которое, кажется, делает то, что вы хотите (при условии, что вы всегда используете звездную форму \PoemTitle).

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

\settowidth{\versewidth}{longest poem line here} 
\begin{verse}
\leftPoemTitle{Poem Title}

...Poem body...

\end{verse}

Это приводит к тому, что заголовок стихотворения выровнен по левому краю, как тело стихотворения, правильно отделено от тела стихотворения, в правильной гарнитуре и без нежелательных отступов. Более того, он хорошо работает с другими: если какая-либо команда (или опция пакета) изменяет шрифт заголовка или интервал, этот макрос \leftPoemTitle продолжает работать правильно.


Если я правильно понимаю ваше редактирование, вы хотите, чтобы заголовок стихотворения был вне verse окружения, которое содержит тело стихотворения, но все еще с отступом таким образом, что заголовок выравнивался слева с помощью тело. Если у вас нет особых причин для этого, я думаю, что вышеупомянутое решение лучше, но не обращайте на это внимания.

Глава 19 руководства класса memoir гласит, что среда verse имеет отступ с длиной \vleftmargin, поэтому вы можете просто сделать отступ для вашего заголовка по этой длине. Я предполагаю, что вы по-прежнему хотите, чтобы заголовок был слегка увеличенным шрифтом, поэтому следующее решение должно помочь:

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

\myPoemTitle{Poem Title}
\settowidth{\versewidth}{longest poem line here} 
\begin{verse}

...Poem body...

\end{verse}

Обратите внимание, что заголовок несколько ближе к телу, чем первое решение. Такое поведение можно получить в первом решении, переопределив \afterPoemTitleskip.

...