使用 \inmargin 时出现 \hbox 未满警告

使用 \inmargin 时出现 \hbox 未满警告

我越来越underfull \hbox\inmargin使用命令一些我不理解的警告。

例如:

\setuppapersize[A5] %%148mm x 210mm
\setuplayout[width=104mm, height=185mm, margin=20mm, backspace=24mm, topspace=12.5mm]
\setuppagenumbering[alternative=doublesided, location=right]

\setupindenting[yes,medium,next]
\setupbodyfont[10pt]

\def\pg#1{\inouter{\tfxx[#1]}}

\starttext
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at venenatis nulla, eu placerat elit. Sed nec nunc vitae neque faucibus congue. Nullam fringilla leo ut libero semper vulputate. Fusce pulvinar ligula lacinia justo mattis consequat. Sed non mauris et turpis bibendum ornare at ut diam. Aenean porttitor, tortor sed faucibus feugiat, risus eros convallis lacus, quis interdum mi augue et sem. Nullam quam lorem, venenatis non mauris sit amet, suscipit pharetra nibh. Sed gravida ante felis, cursus pharetra risus pellentesque sit amet. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean porta nunc sit amet urna auctor, vitae imperdiet leo porta. Pellentesque a elit ut mi suscipit ultricies. Aenean metus urna, interdum vel auctor ut, congue id libero. Pellentesque aliquam, nunc ac tristique accumsan, dui dui volutpat erat, eget efficitur neque velit sed purus.

Curabitur erat sem, ullamcorper ac ipsum in, dictum rutrum enim. Curabitur eu nisl ultrices, aliquam ante at, faucibus nunc. Nam orci lacus, accumsan in tortor faucibus, interdum tincidunt libero. Morbi et orci vel quam feugiat fermentum non id nisl. \pg{2}Sed aliquam libero in nisl aliquet, a tincidunt elit egestas. Mauris ut congue ligula. Morbi pellentesque est ac varius consequat. Vestibulum lobortis turpis ut lectus posuere, non venenatis nisl aliquet. Vestibulum tincidunt mattis augue et fringilla. Curabitur vehicula sodales sapien ac viverra. Donec vel bibendum velit. Quisque dapibus bibendum convallis. Proin efficitur tellus turpis, nec faucibus orci euismod ac. Proin at iaculis risus. Mauris finibus nisl ac est commodo molestie. Sed ac erat mauris.

Ut auctor eu enim nec iaculis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed eu mi est. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In volutpat elit in sapien auctor luctus. Morbi venenatis efficitur lorem et facilisis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris elementum ex accumsan maximus feugiat. Nunc pretium eget enim quis luctus. Duis ut luctus tortor, quis tempus turpis. Proin justo arcu, lobortis ut convallis vitae, condimentum quis purus. Fusce auctor mi sit amet cursus lobortis. In hac habitasse platea dictumst. Donec pulvinar nisl sed quam tincidunt, non aliquet arcu dictum. Duis laoreet ullamcorper elit vitae luctus. Vestibulum rutrum pellentesque nisl, sit amet maximus purus gravida vitae.

Donec nec congue magna, sit amet egestas dui. Maecenas efficitur tortor eros. Sed gravida molestie diam vitae facilisis. Pellentesque ultrices arcu sit amet tellus faucibus luctus efficitur sit amet risus. Nulla tempor, est in varius rutrum, lacus mauris rutrum tellus, quis ullamcorper diam ex nec purus. Proin eu magna mauris. Pellentesque feugiat tincidunt ante vel viverra.

Proin a odio non nisl hendrerit fringilla eleifend quis augue. Proin volutpat lorem quis mauris vehicula posuere. Mauris luctus a purus a rutrum. Mauris pharetra gravida mi, quis \pg{3} aliquet ligula finibus vel. Nullam odio arcu, faucibus vel orci ullamcorper, vestibulum fermentum urna. Duis vitae dignissim lectus, et interdum nibh. Curabitur et turpis a neque sagittis egestas et ac dui. Morbi condimentum sed metus ut ullamcorper. Mauris.
\stoptext

当我使用\inouter(如这里)时,我在正确的页面上收到错误;\ininner,我在左页上收到错误;而使用 时,\inmargin我在两页上都收到错误。

这似乎仅当以下两个条件都成立时才会发生:

  • 字体大小小于 12pt
  • 该文件是双面的

我尝试了各种配置\startalignment,但所有尝试要么不起作用,要么搞乱了边注的位置。

如果有人能解释一下这里发生了什么,我将非常感激。谢谢!

答案1

当您有一段短的右对齐文本且不超过一行时,您会收到警告。

运行以下示例时

\starttext
\framed[width=3cm,align=flushright]{M}
\stoptext

您会收到与您自己的示例相同的警告。

Underfull \hbox (badness 2608) in paragraph at lines 2--2
 [][]\3>modern-designsize-12pt-rm-tf-0--0 (lmroman12-regular) M[]

当您确定文本内容适合一行时,您可以将line关键字添加到align键中。

\starttext
\framed[width=3cm,align={flushright,line}]{M}
\stoptext

您可以通过创建自己的边距命令(该命令的名称为pg应用到上述示例中的对齐设置的位置)将此解决方案应用到您的示例中。

\setuppagenumbering[alternative=doublesided]

\definemargindata   [pg] [inouter] [style=\tfx,command=\groupedcommand{[}{]}]
\definemarginframed [pg] [inouter] [align={inner,line}]

\starttext
\dorecurse{4}{Text\expanded{\pg{\recurselevel}}\page}
\stoptext

相关内容