使用 \RaggedLeft 发出 \hbox 未满警告

使用 \RaggedLeft 发出 \hbox 未满警告

我使用mcaption包将标题放在页边距列中。使用 包,\RaggedOuter我分别在偶数页和奇数页上正确对齐它们。只有在偶数页上,我才会收到 \hbox 未满警告。使用 包时会发生这种情况\RaggedLeft,但使用 包时不会发生这种\raggedleft情况。当然,我依赖改进后的 \RaggedLeft 包,因为当我添加提示时,原始包甚至不会对特定单词进行连字符连接\-

这是我的示例代码:

\documentclass[fontsize=11pt, paper=a4, DIV=classic]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\KOMAoption{headinclude}{false}
\KOMAoption{footinclude}{false}
\KOMAoption{mpinclude}{true}
\recalctypearea
\setlength{\marginparsep}{2em}
\setlength{\marginparwidth}{10em}

\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage[top]{mcaption}
\usepackage{blindtext}

\let\RaggedOuter\RaggedRight
\newcommand{\setOddEvenPageLayout}{\ifthispageodd%
  {\let\RaggedOuter\RaggedRight}{\let\RaggedOuter\RaggedLeft}}

\addtokomafont{caption}{\RaggedOuter\small}
\setkomafont{captionlabel}{\sffamily\bfseries}
\setcapindent*{0pt}
\renewcommand{\captionformat}{}


\begin{document}

\chapter{Margin captions}

\section{Odd Page}

\blindtext

\begin{table}[h]
\setOddEvenPageLayout
\begin{margincap}
\centering
\begin{tabular}{lll}
\toprule
Test & Test & Test \\
\midrule
Wer & das & liest \\
ist & selbst & schuld \\
\bottomrule
\end{tabular}
\caption{Überblick über die Kontrollstrukturen}
\end{margincap}
\end{table}

\blindtext

\clearpage

\section{Even page}

\blindtext

\begin{table}[h]
\setOddEvenPageLayout
\begin{margincap}
\centering
\begin{tabular}{lll}
\toprule
Test & Test & Test \\
\midrule
Wer & das & liest \\
ist & selbst & schuld \\
\bottomrule
\end{tabular}
\caption{Überblick über die Kontrollstrukturen}
\end{margincap}
\end{table}

\blindtext

\end{document}

\RaggedLeft仅产生而不\RaggedRight产生\raggedleft警告的奇怪行为的原因是什么?

答案1

用更简单的例子你也能看到同样的结果

\documentclass{article}

\usepackage{ragged2e}

\begin{document}

{\RaggedRight

abc

}

{\RaggedLeft

abc

}


\end{document}

段落\RaggedRight的最后一行位于\pafillskip右侧,但\RaggedLeft包括最后一行在内的所有行仅获得受限的拉伸空间。

相关内容