我有一些很长的章节名称,跨越多行,所以我用\\
(我正在使用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
已经为您中断了较长的部分名称 - 删除您的手动换行符,它看起来会不错。
否则,请提供问题的示例。