如何自动居中诗句

如何自动居中诗句

考虑以下代码:

\documentclass{book}
\textwidth 5.75in
\usepackage{verse}

\begin{document}
\thispagestyle{empty}
\LARGE

\vskip 25pt

\begin{center}
\textbf{Casey at the Bat}
\end{center}

\vspace*{5pt}

%\addtolength{\leftmargini}{60pt}
\begin{center}
\begin{verse}  
Oh, somewhere in this favoured land \\ 
the sun is shining bright, \\
The band is playing somewhere, \\
and somewhere hearts are light; 

\vskip 10pt

And somewhere men are laughing, \\
and somewhere children shout, \\
But there is no joy in Mudville--- \\
mighty Casey has struck out.
\end{verse}
\end{center}
\end{document}

产生

在此处输入图片描述

正如您所见,尽管\begin{center} \end{center}我使用了,但诗节并没有居中。

我知道,如果我取消注释该命令%\addtolength{\leftmargini}{60pt},然后直观地调整数量直到得到看起来可以接受的结果,我就能近似地得到我想要的结果;但是,我想自动执行此操作,就像将小页面或 tikzpicture 置于中心一样。

问题:有没有一种相当简单且自动的方式可以将诗节置于中心?如果可以,我该怎么做?

谢谢。

答案1

你问,

有没有一种合理简单的方法可以将诗节集中起来?

如果包加载后,verse环境会采用一个可选参数,该参数会告知 LaTeX 节的平均长度,进而影响节的水平定位。该参数应为长度变量或宏;包verse提供了一个为此目的调用的宏\versewidth。此机制应与center环境结合使用。(附言:如果您想在环境内允许分页符verse,则应使用\centering,而不是\begin{center}...\end{center}。)

您的查询进一步询问是否存在自动的水平居中的方法。\versewidth机制是不是全自动;不过,我认为这完全没问题,也不算缺点,因为从印刷术上讲,您真正想要实现的是“视觉”居中,而不是“数学”居中。一组诗节是否“看起来居中”取决于几个因素,而不仅仅是诗节中最宽或平均长度。在下面的例子中,经过几次试运行后,我选择了第二长诗节的长度作为基础\versewidth。您的审美偏好可能与我的不同。

以下屏幕截图中的框架线由展示架包裹。

在此处输入图片描述

\documentclass{book}
\setlength{\textwidth}{5.75in}
\usepackage{verse} 
\usepackage{showframe} % draw framelines around text block

\begin{document}

\begingroup % localize scope of '\centering' and '\LARGE' directives
\centering
\LARGE
\settowidth{\versewidth}{And somewhere men are laughing,} % 2nd-longest stanza
\textbf{Casey at the Bat}

\vspace{0.5\baselineskip}

\begin{verse}[\versewidth] % <-- note the optional argument
Oh, somewhere in this favoured land \\ 
the sun is shining bright, \\
The band is playing somewhere, \\
and somewhere hearts are light; 

And somewhere men are laughing, \\
and somewhere children shout, \\
But there is no joy in Mudville--- \\
mighty Casey has struck out.
\end{verse}
\endgroup

\end{document}

相关内容