多行部分中的对齐

多行部分中的对齐

我有一些很长的章节名称,跨越多行,所以我用\\(我正在使用fancyhdr这种方法) 将它们分成两行。结果不太美观。

我希望对于多行部分,第一行将像往常一样向左对齐,但第二行将向右对齐(类似于多行方程式)。我希望同样的行为也适用于标题和目录。

答案1

诀窍是将\leftskip和都设置\rightskip为具有无限可拉伸空间,使它们相互抵消。对于最后一行,\parfillskip也将使用 ,因此您可以取消 的效果\rightskip。基本上,您只需编写

\leftskip=0pt plus 1fil %
\rightskip=0pt plus -1fil %
\parfillskip=0pt plus 1fil % 

您想要使用此格式的位置。您通常可以省略定义\parfillskip,因为上述值通常是默认值。这是一个完整的示例,显示了对节标题的影响。

\documentclass[11pt]{article}

\usepackage{lipsum}

\usepackage{sectsty}
\sectionfont{\leftskip=0pt plus 1fil \rightskip=0pt plus -1fil}

\begin{document}

\section*{This is a short heading}

\lipsum[4]

\section*{This a long (but not an extremely long) heading, spanning span two lines}

\lipsum[10]

\section*{This an extremely long heading, even longer than the one above, and spanning not one, not two, but three lines}

\lipsum[2]

\end{document}

显示上述代码结果的图像。

请注意,除最后一行之外的所有行都是合理的,就像在普通的 LaTeX 类中一样,它们可能看起来很丑,单词间距很大。要使它们不整齐,请使用

\leftskip=0pt plus 1fil %
\rightskip=0pt plus 1fill %
\parfillskip=0pt plus -1fill %

然而,如果最后一行很短,你确实有可能最后一行的第一个单词开始正确的前一行(或前几行)最后一个单词的拼写错误,使得最后一行看起来与章节标题的其余部分没有联系。

换句话说,如果章节标题的第一部分两端对齐或者靠右对齐,都可能导致标题不好看,所以您可能需要重新考虑这种格式选择。

对于标题,只需使用相同的命令。例如,使用fancyhdr包(以及编号且稍长的部分标题):

\fancyhead{}
\fancyhead[L]{\leftskip=0pt plus 1fil \rightskip=0pt plus -1fil \leftmark}

使用 的默认设置fancyhdr,但使用编号部分,它看起来像这样:

显示上述标题代码结果的图像

对于目录,要使用的代码取决于您使用的类(book/ Koma-Script/ memoir/…)和/或包(tocloft/ titletoc/…),但我强烈建议只使用较短版本的标题。示例:

\section[Extremely long heading]{This an extremely long heading, even longer than the one above, and it's spanning not one, not two, but three lines}

简短版本也将默认用于标题中。

答案2

fancyhdr已经为您中断了较长的部分名称 - 删除您的手动换行符,它看起来会不错。

否则,请提供问题的示例。

相关内容