我想使用 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
是您的最佳选择。正如在上下文 Wiki,deeptextcommand
让您可以访问命令的全文,而无需执行任何其他操作。当我查看使用-mpgraph.tex
运行生成的文件时,我看到您的宏已传递context
textcommand
\setstrut \begstrut \getheadtitle \endstrut
作为参数,并且(这只是猜测)\getheadtitle
在分段上下文之外未定义,因为这位于单独的.tex
文件中。使用deeptextcommand
只会提供命令中使用的文本\startsection
,因此-mpgraph.tex
文件会看到
Fancy Title
作为其参数。
这是我在修改时注意到的一件事。如果你想要更改你花哨的部分标题的文本样式,我认为你需要将它包含在你的 中MPgraphic
,就像在设置deeptextcommand
之前应用的style
那样。或者,你可以使用
\startsection[title={\em Fancy Title}]