我需要在我的文档中插入一个点符号,例如“•”或 METAPOST 圆圈,在字符基线和顶部之间的不同高度,如下例所示:
_____ _____ _____
* | | \ / |
* * * | | \ / |
* * * * | |____ \/ |
* * | | /\ |
* | | / \ |
* | |____ / \ |
字母TEXT
显示为常规大小的文本,*
圆圈位于不同的高度。彼此之间不会出现点。
在数学模式下使用^
和_
,我能够将点垂直放置在 3 个不同的位置,例如:
\math{^•} prints high
\math{•} prints in the middle
\math{_•} prints low
但这有几个问题:
- 上标和下标点比中间点小,但我需要一致的半径。
- 上标太高,超出了同一行字符的顶部。下标也太低,低于基线。理想情况下,最低点不会低于基线,最高点不会高于大写字母的顶部。
- 我需要在 6 个不同的层次上画点。
如果点很大,则它们的级别可能会重叠,例如:
__
/ \ __
\__/ / \
\__/
我如何控制点字符或类似 METAPOST 点的垂直位置,并确保位置位于同一行上单词的基线和顶部之间?
答案1
您可以使用 MetaPost 来放置点。您可以精确控制将什么放置在何处。在这里我使用了表达式\strutheight-\strutdepth
您所指的表达式字符高度这当然取决于下面的性格。
的第一个参数shifted
是x
偏移,第二个参数是方向的偏移y
。这允许精确放置。这里有一个简单的例子:
\starttext
Foo%%
\startMPcode
pickup pencircle scaled .5mm;
h := \strutheight-\strutdepth;
for i=0 upto 5:
fill fullcircle shifted (i*h/10, i*h/5);
endfor
\stopMPcode
Bar
\stoptext