Parshape 没有对齐文本

Parshape 没有对齐文本

我的论文办公室要求所有章节标题都采用倒金字塔结构。下面是我用来生成结果的代码:

\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 解决方案,是我想创建一个类并希望它是通用的。

相关内容