我的论文办公室要求所有章节标题都采用倒金字塔结构。下面是我用来生成结果的代码:
\newcommand{\invpyr}[1]{
\vbox{
\hsize=4.5in
\parindent=0pt
\emergencystretch=1in
\parshape 6
0.00in 4.50in
0.25in 4.00in
0.50in 3.50in
0.75in 3.00in
1.00in 2.50in
1.25in 2.00in
\leftskip=0pt plus 1fil
\rightskip=0pt plus -1fil
\parfillskip=0pt plus 2fil
#1\par
}
}
这样就成功地制作出了一个倒金字塔,但它也拉伸了单词之间的间距以“填充”金字塔的每一行。我需要间距与文档的其余部分相同。换句话说,如果金字塔的顶行有 4.5 英寸的可用空间,我最终可能会使用 4 英寸,因为单词之间的间距是正常间距。
答案1
我没有意识到我可以在章节标题中添加换行符,同时保持它们在目录中的显示方式。我最终的解决方案如下:
\chapter[This is a really long title that needs to be wrapped as an inverted pyramid]{This is a really long title that \\ needs to be wrapped as an \\ inverted pyramid}
答案2
我对博士办公室的风格指南也遇到了同样的问题。
我找到了与上面相同的代码片段,并遇到了相同的问题。我终于坐下来阅读了 Knuth 的 TeXbook 的相关部分并找到了答案。请特别参阅附录 A 中解答的练习 14.34。希望这个答案能帮助其他人(因为我假设 OP 已经提交了)。
下面是我使用的代码片段的修改版本,与上面的类似:
\newcommand\pyramidtitle[1]{%
\vbox{%
\hsize=5.0in
\parindent=0pt
\leftskip=0pt plus2em
\rightskip=0pt plus2em
\parfillskip=0pt
\emergencystretch=1in
\spaceskip=0.3333em
\xspaceskip=.5em
\hyphenpenalty=9999
\exhyphenpenalty=9999
\pretolerance=9999
\tolerance=9999
\parshape6
0.00in 5.00in
0.25in 4.50in
0.50in 4.00in
0.75in 3.50in
1.00in 3.00in
1.25in 2.50in
\strut
#1%
}%
}
以下是上面每一项的含义以及我改变它的原因。
\hsize=5.0in
- 这是 vbox 的宽度
\parindent=0pt
- 不要缩进
\leftskip=0pt plus2em
- 原始图像的拉伸量非常大。如果要居中,请减小拉伸量,以确保每条线的大小大致符合您的要求
\rightskip=0pt plus2em
- 这原本是否定的,这是“完全对齐”时所必需的。
\parfillskip=0pt
- 这是最后一行右侧的可用量。需要允许其拉伸两倍
\leftskip
或\rightskip
完全对齐时。现在,希望它为零,因为我们只是居中
- 这是最后一行右侧的可用量。需要允许其拉伸两倍
\emergencystretch=1in
- 这有助于解决箱子过满的问题。我没有管它。参见这个解释
\spaceskip=0.3333em
和\xspaceskip=.5em
\raddedright
这其实很关键。这是单词间距。我直接从 TeXbook 中获取了这些。这些也与TeX 中的定义相同。
\hyphenpenalty=9999
,,,,\exhyphenpenalty=9999
\pretolerance=9999
\tolerance=9999
- 这些确保标题中没有连字符
\parshape6
- 这是您开始定义倒金字塔的地方。这意味着您将使用 6 对数字来定义段落的形状。然后数字必须遵循
-
0.00in 5.00in 0.25in 4.50in 0.50in 4.00in 0.75in 3.50in 1.00in 3.00in 1.25in 2.50in
- 这是六对数字。每对数字代表 vbox 段落的一行。因此此定义允许六行。
- 第一个数字是从 左侧缩进的距离
vbox
。第二个数字是从起始处开始的此行的宽度。因此,每行都比前一行短,并且从上一行0.5in
缩进,这使得每行居中0.25in
\strut
- 这是一个零宽度支柱。说实话,我不确定它为什么必须在那里,但它也出现在 TeXbook 的许多示例中。
#1
- 这是放置标题的地方
我实际上有两个这样的定义:一个是论文标题(在我的文档中出现了大约 3 到 4 次),另一个是章节标题。对我来说,章节标题只允许为 4 英寸,所以它是一个较小的框。此外,我的标题不允许超过 4 行。我将上面的例子保留为 6 行,因为它在问题中。
我这样做的原因是OP 解决方案,是我想创建一个类并希望它是通用的。