我在用着希望图形高度忽略侧面标题高度将标题放入外边距。不幸的是,我只能让它在左页上工作。在右页上,我无法将浮动放入外边距。
使用左页(外边距中的标题):
无法与正确的页面配合使用(装订边距中的标题):
附言:使用此 hack 能否实现正确的顶部和底部对齐\smashcaption
?结果总是有点不对。
代码:
\documentclass[twoside]{book}
\usepackage[
letterpaper,
includemp,
headheight=0.5in,
left=1.25in,
width=6.75in,
marginparsep=0.25in,
marginparwidth=2in,
bottom=1in,
top=1in]
{geometry}
\usepackage{lipsum}
\usepackage{blindtext}
\usepackage{floatrow}
\makeatletter
\newcommand*\smashcaption{
\def\FR@makecaption##1##2{%
\vbox to\z@{%
\vss
\captionfont
{\captionlabelfont##1}\caption@lsep##2%
\par
\vss
}%
}%
\caption
}
\makeatother
%\floatsetup[table]{}
\begin{document}
\blindtext
\thisfloatsetup{%
floatwidth=\linewidth,
capposition=beside,
capbesideposition={bottom,outside},
capbesideframe=yes,
capbesidewidth=\marginparwidth,
capbesidesep=quad,
floatrowsep=qquad}
\begin{figure}[h]
\makebox[\textwidth][l]{
\rule{4.5in}{0.5in}
}
\smashcaption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fer- mentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, mo- lestie nec, leo.}
\label{fig}
\end{figure}
\blindtext[4]
\thisfloatsetup{%
floatwidth=\linewidth,
capposition=beside,
capbesideposition={bottom,outside},
facing=no,
capbesideframe=yes,
capbesidewidth=\marginparwidth,
capbesidesep=quad,
floatrowsep=qquad}
\begin{figure}[h]
\makebox[\textwidth][r]{
\rule{4.5in}{0.5in}
}
\smashcaption{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut- pat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fer- mentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, mo- lestie nec, leo.}
\label{fig}
\end{figure}
\blindtext[2]
\end{document}
答案1
以下是双面布局的示例:
\documentclass[twoside]{book}
\usepackage[
letterpaper,
includemp,
headheight=0.5in,
left=1.25in,
width=6.75in,
marginparsep=0.25in,
marginparwidth=2in,
bottom=1in,
top=1in]
{geometry}
\usepackage{lipsum}
\usepackage{blindtext}
\usepackage{floatrow}
\makeatletter
\newcommand*\smashcaption{%
\def\FR@makecaption##1##2{%
\vbox to\z@{%
\vss
\captionfont
{\captionlabelfont##1}\caption@lsep##2%
\par
}%
}%
\caption
}
\makeatother
\floatsetup[figure]{%
heightadjust=nocaption,
margins=hangoutside,
floatwidth=\linewidth,
capposition=beside,
capbesideposition={bottom,outside},
capbesideframe=yes,
facing=yes,
capbesidewidth=\marginparwidth,
capbesidesep=quad,
floatrowsep=qquad}
\begin{document}
\blindtext
\begin{figure}[h]
\makebox[\textwidth][l]{
\rule{4.5in}{0.5in}
}
\smashcaption{Nulla malesuada porttitor diam. Donec felis erat, congue non,
volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
vitae, placerat a, molestie nec, leo.}
\label{fig}
\end{figure}
\blindtext[4]
\begin{figure}[h]
\makebox[\textwidth][l]{
\rule{4.5in}{0.5in}
}
\smashcaption{Nulla malesuada porttitor diam. Donec felis erat, congue
non, volutpat at, tincidunt tristique, libero. Vivamus viverra
fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing
semper elit. Proin fermentum massa ac quam. Sed diam turpis,
molestie vitae, placerat a, molestie nec, leo.}
\label{fig}
\end{figure}
\blindtext[2]
\end{document}
我做的更改如下:
在
\smashcaption
:在第一行添加了一个额外的注释字符,这导致了虚假的垂直间距;删除了最后的\vss
,所以标题是底部对齐,而不是居中。将所有浮动设置移至一个命令,以保持一致性。
添加了一个
margins=hangoutside
选项,将标题放在外部边缘,与facing=yes
[结合使用时与facing
您的示例不一致] 结合使用。
我还整理了您标题中的文字。
上述代码有一个警告:靠近页面顶部的图形的标题可能会超出顶部 - 标题的高度已完全隐藏在页面制作程序中。[您的原始代码中也有这种情况。]