我使用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
包括最后一行在内的所有行仅获得受限的拉伸空间。