边距注释抛出“underfull \hbox”错误

边距注释抛出“underfull \hbox”错误

首先,让我向你展示一个简单的工作示例:

\documentclass{amsart}

\usepackage{color}
\definecolor{mycol}{rgb}{0,0.5,0}
\newcommand\marginComment[1]{\marginpar{\hsize1.7cm\tiny\color{mycol}C: {#1}}}

\begin{document}

\marginComment{No, this really shouldn't fail!}
\end{document}

当我在 TexMaker 4.3 上运行此程序时,出现以下错误:

Badbox line 9 Underfull \hbox (badness 4636) in paragraph at lines 9--9

最奇怪的是,如果我编辑单词,有时我根本不会收到错误。所以我的假设是,这是因为长度或其他原因。有没有办法避免发生此错误和/或如果我犯了错误,有办法解决它?

答案1

出现“\hbox 未满”的情况是因为 marginpar 框三行中的第二行(即“eally”和“shouldn't”之间的行)的单词间距需要过度拉伸才能实现完全对齐。为了解决这种情况,我建议您在序言中包含以下说明:

\usepackage[raggedrightboxes]{ragged2e}

这将在文档中的所有\marginpars、minipages、 es 以及s 和s\parbox的 p 列中设置 raggedright 排版(允许使用连字符) 。tabulararray

完整 MWE 的结果(为便于阅读,颜色改为蓝色):

在此处输入图片描述

\documentclass{amsart}
\usepackage[raggedrightboxes]{ragged2e}
\usepackage{color}
\definecolor{mycol}{rgb}{0,0,1}
\newcommand\marginComment[1]{\marginpar{\hsize1.7cm\tiny\color{mycol}C: {#1}}}

\begin{document}
\marginComment{No, this really shouldn't fail!}
\end{document}

附录:如果您\RaggedRight只需要\marginpars,但不需要在minipages、 es 以及s 和s\parbox的 p 列中,您可以(a)加载包tabulararrayragged2e没有选项raggedrightboxes和(b)(重新)定义你的\marginComment宏如下:

\newcommand\marginComment[1]{\marginpar{\RaggedRight\hsize1.7cm\tiny\color{mycol}C: {#1}}}

此方法的附带好处是,您将不再被神秘的“命令 \@arrayparboxrestore 已更改。”警告消息所困扰。:-)

答案2

如果可以,请使用marginnote包和\marginnote而不是\marginpar

\documentclass{amsart}

\usepackage{color}
\usepackage{marginnote}
\definecolor{mycol}{rgb}{0,0.5,0}
\newcommand\marginComment[1]{\marginnote{\hsize1.7cm\tiny\color{mycol}C: {#1}}}

\begin{document}

\marginComment{No, this really shouldn't fail!}
\end{document}

在此处输入图片描述

相关内容