1

私は現在、いくつかの詩を植字するために回想録クラスを使用しています。\ poemtitleコマンドを使用すると、中央に配置された詩のタイトルが表示されますが、タイトルを詩の本文の端と同じ高さにしたいと思います。自動センタリングを削除するために\poemtitleコマンドを再定義しました。\verse環境と結合された\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に適用して、詩のタイトルが終わるように、latexに発行できるコマンドのセットはありますか?独自の\verse環境で\poemtitleを設定せずに、テキストの左端と同じ高さにしますか?

4

2 に答える 2

2

私はクラスや詩の組版の経験がmemoirないので、これを行うことを意図した他の方法があるかどうかはわかりませんが、ここにあなたが望むことを行うように見える解決策があります(常にのスター付き形式\PoemTitle)。

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

\settowidth{\versewidth}{ここで最も長い詩行}
\begin{詩}
\leftPoemTitle{詩のタイトル}

...詩体...

\end{詩}

これにより、詩のタイトルが詩の本文と同じように左揃えになり、詩の本文から適切な間隔で配置され、正しい書体で、望ましくないインデントがなくなります。さらに、それは他のものともうまく機能します: 何らかのコマンド (またはパッケージ オプション) がタイトルのフォントまたはスペースを変更した場合、この\leftPoemTitleマクロは引き続き正しく動作します。


私があなたの編集を正しく理解していれば、詩のタイトルが詩の本文を含む環境のにあることを望んでverseいますが、タイトルが本文に合わせて左揃えになるようにインデントされています。これを行う特別な理由がない限り、上記の解決策の方が優れていると思いますが、気にしないでください。

memoirクラス マニュアルの第 19 章では、verse環境は lengthだけインデントされると記載されている\vleftmarginため、その長さだけタイトルをインデントできます。タイトルを少し大きめの書体にしたい場合は、次の解決策でうまくいくはずです。

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

\myPoemTitle{詩のタイトル}
\settowidth{\versewidth}{ここで最も長い詩行}
\begin{詩}

...詩体...

\end{詩}

これにより、タイトルが最初の解決策よりも本文に少し近づくことに注意してください。を再定義することにより、最初のソリューションでこの動作を得ることができます\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 では、各行の末尾に \\ を付けずに行を設定することもできます。行末 (およびスタンザ間のギャップを取得するための追加の行) を使用するだけです。これは、すばやく簡単に入力したり、コピーして貼り付けたりするのに最適です。

考えられる欠点: 回顧録と互換性がない可能性があります。コレクションに標準の book クラスを使用しているため、テストしていません。

于 2020-06-25T14:06:40.870 に答える