过去 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