如何阻止 MetaPost 绘图在 ConText 中的不同行上重叠?

如何阻止 MetaPost 绘图在 ConText 中的不同行上重叠?

我有一个分项列表。在几行中有一些用 MetaPost 绘制的框。我过去常常\inframed[location=line]将它们垂直居中。问题是,它们相互重叠:

\define[1]\drawbox{%
    \scale[width=.1\textwidth]{%
        \startMPcode        
            draw (0,0)--(100,0)--(100,100)--(0,100)--(0,0);
        \stopMPcode%
    }%
}

\define[3]\showfacts{%
    \inframed[frame=off, location=line]{%
        \drawbox{#1}%
    }%
    {\it #2}\ #3%
}%

\starttext
    This is some text.
    \startitemize[n]
        \item \showfacts{a}{x}{3}
        \item \showfacts{b}{y}{4}
    \stopitemize
\stoptext

有没有办法让下一个项目(项目 #2)显示得更低,这样 MetaPost 图片就不会重叠?此外,这样它就不会太接近“这是一些文本”?外观应该更像这样:

This is some text.
    _____
   |     |
1. |     | x 3
   |_____|
    _____
   |     |
2. |     | y 4
   |_____|

当行有一个 MetaPost 对象时,如何自动提供更大的空间?

答案1

使用location=middle。 选项location=line只是将封闭物体的高度和深度都设置为.5\lineheight

注意: \inframed只是 的快捷方式\framed[location=low],因此通过覆盖位置,您可以取消此快捷方式。不妨使用普通的\framedthen。

\define[1]\drawbox{%
    \scale[width=.1\textwidth]{%
        \startMPcode        
            draw (0,0)--(100,0)--(100,100)--(0,100)--(0,0);
        \stopMPcode%
    }%
}

\define[3]\showfacts{%
    \framed[frame=off,location=middle]{%
        \drawbox{#1}%
    }%
    {\it #2}\ #3%
}%

\starttext
    This is some text.
    \startitemize[n]
        \item \showfacts{a}{x}{3}
        \item \showfacts{b}{y}{4}
    \stopitemize
\stoptext

在此处输入图片描述

相关内容