如何在 ConTeXt 中在一行文本下制作花式规则

如何在 ConTeXt 中在一行文本下制作花式规则

过去 10 年里,我断断续续地(误用)使用过 LaTeX,现在正在尝试使用 ConTeXt,主要是因为它允许与基线网格对齐。我想在某些文本下方生成一条规则(线),规则如下:

  • 距离文本基线以下有一段距离(假设为 1pt)(假设文本适合一行),
  • 与文本区域一样宽(\textwidth),并且
  • 右端以规则垂直居中的小黑色方块终止。

在 LaTeX 中,我可以做这样的事情:

\documentclass{article}
\usepackage{calc}

\begin{document}
\makebox[0pt][l]{%
  \rule[-1pt]{\textwidth-4pt}{.4pt}%
  \rule[-2.6pt]{4pt}{4pt}
}%
This text sits on the fancy rule.
\end{document}

这给了我这个:

按照奇特的规则书写文字

我如何在 ConTeXt 中做类似的事情?我尝试过叠加和\blackrule,但我不知道如何\blackrule垂直移动。我愿意接受任何解决方案,无论是叠加和\blackrule还是其他什么,但如果可能的话,我希望文本与基线网格对齐。

答案1

在 ConTeXt 中有许多其他方法可以做到这一点,但您的方法的字面翻译如下:

\starttext

\dontleavehmode
\rlap{\lower 1pt \blackrule[width=\dimexpr\textwidth-4pt\relax, height=0.4pt]%
      \lower 2.6pt \blackrule[width=4pt, height=4pt]}%
This text sits on the fancy rule.


\stoptext

这使

在此处输入图片描述

答案2

您可以使用该\framed命令绘制线条作为文本的背景图形。使用 创建新\framed命令时\defineframed,只需应用一次所有设置。

\startuseMPgraphic{fancyrule}
  draw (0,StrutDepth)--(OverlayWidth,StrutDepth) withpen pensquare scaled .4pt ;
  drawdot (OverlayWidth,StrutDepth) withpen pensquare scaled 4pt ;
  setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\defineoverlay[fancyrule][\useMPgraphic{fancyrule}]

\defineframed
  [FancyRule]
  [frame=off,
   offset=0pt,
   strut=yes,
   width=max,
   align=flushleft,
   background=fancyrule]

\starttext
\FancyRule{This text sits on the fancy rule.}
\stoptext

文本行下方的奇特规则。

相关内容