首先,让我向你展示一个简单的工作示例:
\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}
这将在文档中的所有\marginpar
s、minipage
s、 es 以及s 和s\parbox
的 p 列中设置 raggedright 排版(允许使用连字符) 。tabular
array
完整 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
只需要\marginpar
s,但不需要在minipage
s、 es 以及s 和s\parbox
的 p 列中,您可以(a)加载包tabular
array
ragged2e
没有选项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}