使用 Metapost 来显示上下文中的标题

使用 Metapost 来显示上下文中的标题

我想使用 Metapost 来格式化我的标题(不完全是这样,所以不需要抱怨设计问题:)): 我希望有的格式

问题是,当我尝试使用以下宏时出现错误:

tex error       > error on line 4 in file 
/------------/minimal-mpgraph.tex: ! Undefined control sequence

<argument> \setstrut \begstrut \getheadtitle 
                                  \endstrut 
\MPLIBgraphictext ...\startTEXpage [scale=10000]#1
                                                  \stopTEXpage 
l.4 ...\setstrut \begstrut \getheadtitle \endstrut }


1     \starttext
2     \def\MPLIBgraphictext#1{\startTEXpage[scale=10000]#1\stopTEXpage}
3     
4 >>  \MPLIBgraphictext{\setstrut \begstrut \getheadtitle \endstrut }
5     \stoptext

我猜问题出在 \getheadtitle 内部。不过我不知道如何解决这个问题。我的宏有问题吗,还是无法使用 Metapost 将章节标题传递给宏?任何帮助都非常感谢。代码:

\define[1]\DashedText%
    {%
    \startuseMPgraphic{dashed_number}
        graphictext "#1" % the part "#1" does not work :(
            scaled 5
            dashed evenly
            withdrawcolor (0.1,0.4,0.1)
            withfillcolor (0.6,0.8,0.9)
            withpen pencircle scaled 3.0pt
    \stopuseMPgraphic
    \useMPgraphic{dashed_number}{}%
    }

\setuphead [section]
    [
        number=no, 
        textcommand=\DashedText,
    ]

\starttext

\startsection [title={Fancy Title}]
\input knuth
\stopsection

\stoptext

答案1

这不是我所说的确定的答案,但这是我在调查中发现的。

看起来使用deeptextcommand是您的最佳选择。正如在上下文 Wikideeptextcommand让您可以访问命令的全文,而无需执行任何其他操作。当我查看使用-mpgraph.tex运行生成的文件时,我看到您的宏已传递contexttextcommand

\setstrut \begstrut \getheadtitle \endstrut

作为参数,并且(这只是猜测)\getheadtitle在分段上下文之外未定义,因为这位于单独的.tex文件中。使用deeptextcommand只会提供命令中使用的文本\startsection,因此-mpgraph.tex文件会看到

Fancy Title

作为其参数。

这是我在修改时注意到的一件事。如果你想要更改你花哨的部分标题的文本样式,我认为你需要将它包含在你的 中MPgraphic,就像在设置deeptextcommand之前应用的style那样。或者,你可以使用

\startsection[title={\em Fancy Title}]

相关内容