左边是文字,右边是图片

左边是文字,右边是图片

我有一篇技术文本,其中包含小图片,必须将其放在文本的右侧。我尝试了许多解决方案/wrapfig 包、表格、2 列包等/但都无法使其工作。当图片太低时,它会被绘制在页脚区域。

所以我从空白开始。我应该用什么来编写具有以下规格的文本:

  1. 文本 /TEXT/ 应放在左侧,图片 /FIG/ 应放在右侧 - 不上不下,当然也不是文本的下一页 - 应从同一页开始。图片很小(约 5 厘米,文本应为横向模式)。文本可能是一个段落或更多,因此最好(但不是必须)放在左侧,而图片放在右侧。

  2. 当 FIG 在页面上的位置太低时,它会被绘制在底部文本边距上,TEXT 和 FIG 都应该从下一页开始,同时在页面底部留出空白空间/无垂直对齐/。

  3. 整个对齐过程必须是自动的,所以当我用稍大一点的图片替换图片时,整个过程必须自动处理/无需手动分页和其他操作/。

  4. 文本可以或不可以围绕图形流动,但边距必须相对较小 /5mm/。

我怎样才能做到这一点?

答案1

根据我的经验,这种设计使用包永远不会有好的效果。你最好根据自己的需求构建自己的代码。下面是一个包含相当大数字的示例,它说明了一些问题(代码在下面的 MWE 中)。

在此处输入图片描述在此处输入图片描述

此处文本的位置取决于页面是奇数页还是偶数页,可以是左侧也可以是右侧。您观察到文本的高度不正确。因此,我的建议是先直观地描述您的要求(也许可以从您喜欢的书籍或文章中借鉴想法),然后看看这在您所使用的类的整体设计中如何发挥作用。

\documentclass[imperial]{octavo}
\usepackage{geometry}
%\usepackage{textsamples}
\usepackage{graphicx,xcolor}
\usepackage{changepage}
\newcommand\lorem{Fusce adipiscing justo nec ante. Nullam in enim.
 Pellentesque felis orci, sagittis ac, malesuada et, facilisis in,
 ligula. Nunc non magna sit amet mi aliquam dictum. In mi. Curabitur
 sollicitudin justo sed quam et quadd. \par}
\begin{document}
\newpage

\newgeometry{left=10mm,right=10mm,top=1.0cm,bottom=1cm}
%%%%%%%%%%%  RENOIR NARROW
\def\ballatbougival{ballatbougival}
\def\ballatbougivalcaption{\lorem\lorem}
\def\ballatbougivaltitle{{\large\bf Ball at Bougival}}
\checkoddpage
\begin{minipage}[c]{\textwidth}%
\fboxrule0pt%
\fboxsep1pt%
\fbox{%
\ifoddpage\relax\else%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
   \ballatbougivaltitle\par%
   \ballatbougivalcaption%
   \the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi%
\begin{minipage}[b]{\the\dimexpr(\textwidth-150pt)}%
\includegraphics[width=\textwidth]{./graphics/\ballatbougival}
\end{minipage}\hspace*{10pt}%
\ifoddpage%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
   \ballatbougivaltitle\par%
   \ballatbougivalcaption%
   \the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi
}
\end{minipage}
\clearpage

%%%%%%%%%%%  RENOIR NARROW
\def\ballatbougival{ballatbougival}
\def\ballatbougivalcaption{\lorem\lorem}
\def\ballatbougivaltitle{{\large\bf Ball at Bougival}}
\checkoddpage
\begin{minipage}[c]{\textwidth}%
\fboxrule0pt%
\fboxsep0pt%
\fbox{%
\ifoddpage\relax\else
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
   \ballatbougivaltitle\par%
   \ballatbougivalcaption%
   \the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\hspace*{10pt}%
\fi%
\begin{minipage}[b]{\the\dimexpr(\textwidth-130pt)}%
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{./graphics/Pierre-Auguste_Renoir_019}%
\end{minipage}%
\ifoddpage%
\hspace*{10pt}%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
   \ballatbougivaltitle\par%
   \ballatbougivalcaption%
   \the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi
}
\end{minipage}
\end{document}

从代码中可以看出,图片和标题位于 内minipages,因此可以有效确保它们保持在一起。如果希望它们浮动,请将它们括在

\begin{figure}...\end{figure}

如果您想要编号标题或转到内容的标题,您可以使用包来设置它们的样式caption

对文本位置进行微调,您可以添加规则(使用零宽度使它们不可见或通过 vspace 添加空间)。

虽然这可能看起来很繁琐,需要做很多工作来设置,但对于一本书来说,最多会有 3-5 种布局设计。一旦你满意了,你可以将所有内容更改为环境或宏,让生活更轻松。

答案2

如果没有 MWE,很难知道为什么wrapfig它不起作用。在下面有 14 行的文档中,第二个“图”转到第二页,如果将其增加到 15 行,它会与相邻的文本行一起返回到第一页。

编辑 示例已更新,以解决芭芭拉 (Barbara) 的案例,使用 e-tex 寡妇惩罚控制。

\documentclass[draft]{article}

\usepackage{lipsum,wrapfig}
\setlength\intextsep{0pt}
\textheight15\baselineskip

\makeatletter
\def\widows{%
\count@-\c@WF@wrappedlines
\ifnum\count@>\z@
\edef\@tempa{\widowpenalties \the\count@\space}
\loop
\ifnum\count@>\z@
\advance\count@\m@ne
\edef\@tempa{\@tempa 10000\space}%
\repeat
%\show\@tempa
\@tempa
\fi}
\makeatother
\begin{document}

\begin{wrapfigure}{r}{0pt}
\fbox{\parbox{2cm}{a\\b\\c}}
\end{wrapfigure}\widows
\lipsum[1]

\begin{wrapfigure}{r}{0pt}
\fbox{\parbox{2cm}{a\\b\\c\\d}}
\end{wrapfigure}\widows
\lipsum[1]


\end{document}

相关内容