ConTeXt 中行首的边框文本后出现不必要的换行符

ConTeXt 中行首的边框文本后出现不必要的换行符

我正在尝试使用 ConTeXt 命令\inframed为行/段落内的任意文本添加边框。MWE 显示问题:

\starttext
a \inframed{b} c
\blank
\inframed{d} e
\stoptext

预期输出:“d”和“e”出现在同一行,与“a”、“b”和“c”一样。

实际输出:“d”后换行。

示例输出

这是否会发生?无论是哪种情况,可以做些什么来防止它发生?ConTeXt Wiki 页面上的“(in)framed”命令和 Google 搜索均未找到任何线索。

答案1

这种行为实际上与 ConTeXt 无关,而是由于框无法开始段落而导致的。有几种强制段落的可能性。还给出了一些建议在花园里

  1. 不要以方框开始段落。

    \starttext
    a \inframed{b} c
    \stoptext
    

    在此处输入图片描述

  2. 强制 TeX 切换到水平模式。这可以通过 或 来实现\dontleavehmode\leavevmode推荐这样做,\dontleavehmode因为它在切换之前不会检查 vmode,因此性能会略好一些。

    \starttext
    \dontleavehmode\inframed{b} c
    \stoptext
    

    在此处输入图片描述

  3. 明确放置缩进框。

    \starttext
    \indent\inframed{b} c
    \stoptext
    

    在此处输入图片描述

我确信还有更多的方法,但这些是我立即想到的。


阅读您的评论后,我认为您对此感兴趣:

\definetextbackground
  [framedsnippet]
  [
    background=,
    framecolor=black,
    location=text,
  ]

\starttext

Hello World!
\starttextbackground[framedsnippet]
This is a very long sentence spanning several lines to show off that
\type{textbackground} can span accross lines.
\stoptextbackground\ % <- We need this to avoid skipping spaces
Goodbye World!

\stoptext

在此处输入图片描述

相关内容