优化 wrapfigure[]{r} 或 wrapfigure[]{l}

优化 wrapfigure[]{r} 或 wrapfigure[]{l}

我经常使用这种形式的包裹图,但我注意到有时会遇到这个问题。

 \documentclass[pdftex,10pt,a4paper]{book}
\setlength{\oddsidemargin}{0 mm}
\setlength{\topmargin}{0 mm}
%\setlength{\headheight}{7 mm} %latezza capotesta
%\setlength{\headsep}{9 mm} 
\setlength{\evensidemargin}{0 mm}
\setlength{\marginparwidth}{0 mm} %% per le note a bordo?
\setlength{\textheight}{230mm} %Altezza Testo
\setlength{\textwidth}{150mm}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}
\usepackage{mwe}
\usepackage{caption}
\usepackage{lipsum}


\begin{document}
\lipsum[1-1]
    \begin{wrapfigure}[11]{l}[\dimexpr \marginparwidth]{5.5cm}
        \centering\raisebox{\dimexpr \topskip-\height}{%
            \includegraphics[width=5.0cm]{example-image-a}}
        \captionof{figure}{Titolo dell'immagine casuale}
    \end{wrapfigure}\hfil

\lipsum[2-3]

\begin{wrapfigure}[11]{r}[\dimexpr \marginparwidth]{5.5cm}
    \centering\raisebox{\dimexpr \topskip-\height}{%
        \includegraphics[width=5.0cm]{example-image-a}}
    \captionof{figure}{Titolo dell'immagine casuale}
\end{wrapfigure}\hfil


\lipsum[4-5]
    
\end{document}

在此处输入图片描述

对此有什么建议吗?

答案1

替代:


\documentclass[pdftex,10pt,a4paper]{book}
\usepackage[textheight=230mm,
            textwidth=150mm,
            marginparwidth=0mm]{geometry} % for defining page layout
\usepackage{graphicx}
\usepackage{wrapfig}
\setlength{\intextsep}{0pt} % <--- push image to top of paragraph
\usepackage{caption}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{blindtext}    % wrapfigure doesn't work well with lipsum

\begin{document}

    \begin{wrapfigure}[12]{l}{0.4\linewidth}% explicit reserved space for wrapfigure
    \includegraphics[width=\linewidth]{example-image-duck}
    \caption{Titolo dell'immagine casuale}
    \end{wrapfigure}
\blindtext[1]

\begin{wrapfigure}{r}{5.5cm}% implicit reserved space for wrapfigure
    \centering
    \includegraphics[width=5.0cm]{example-image-a}
    \caption{Titolo dell'immagine casuale}
\end{wrapfigure}
\blindtext[2]
\end{document}

在此处输入图片描述

答案2

看起来您主要担心的是底部的过度打印,但您手动指定了要换行的行数。因此,要么[11]完全省略该参数,要么将其更改为[12]

还有其他您没有用红色圈出的问题。

每个 wrapfig 的开头附近都有一个空的单行段落,在输出中显示为空行。如果这不是故意的,请删除导致\hfil这种情况的 。

\raisebox没有达到您想要的效果(关于页面顶部的定位)。我猜您想减少 wrapfig 周围的垂直间隙。因此,请使用\setlength{\intextsep}{4pt}或其他长度。

使用\captionof是不必要的,但不会造成任何损害。(我怀疑它会破坏 width 的自动宽度功能0pt,但它似乎有效。)

我不知道为什么要指定边距悬垂,并将边距宽度设置为零。只需省略该可选参数即可。

总而言之,我认为你太过努力了。你可以使用

\lipsum[1-1]

\setlength\intextsep{4pt}
\begin{wrapfigure}{l}{5.5cm}
    \centering
    \includegraphics[width=5.0cm]{example-image-a}
    \caption{Titolo dell'immagine casuale}
\end{wrapfigure}

\lipsum[2-3]

答案3

这似乎效果更好:

\documentclass[pdftex,10pt,a4paper]{book}
\setlength{\oddsidemargin}{0 mm}
\setlength{\topmargin}{0 mm}
%\setlength{\headheight}{7 mm} %latezza capotesta
%\setlength{\headsep}{9 mm} 
\setlength{\evensidemargin}{0 mm}
\setlength{\marginparwidth}{0 mm} %% per le note a bordo?
\setlength{\textheight}{230mm} %Altezza Testo
\setlength{\textwidth}{150mm}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}
\usepackage{mwe}
\usepackage{caption}
\usepackage{lipsum}


\begin{document}
\lipsum[1-1]
    \begin{wrapfigure}{l}[\dimexpr \marginparwidth]{5.5cm}
        \centering\raisebox{\dimexpr \topskip-\height}{%
            \includegraphics[width=5.0cm]{example-image-a}}
        \caption{Titolo dell'immagine casuale}
    \end{wrapfigure}\hfil

\lipsum[2-3]

\begin{wrapfigure}{r}[\dimexpr \marginparwidth]{5.5cm}
    \centering\raisebox{\dimexpr \topskip-\height}{%
        \includegraphics[width=5.0cm]{example-image-a}}
    \caption{Titolo dell'immagine casuale}
\end{wrapfigure}\hfil


\lipsum[4-5]
    
\end{document}

在此处输入图片描述

避免\captionof{}{}并仅使用\caption{}(wrapfigure 环境处理标题本身但可能无法识别\captionof)...此外,通过提供线条的可选参数11...你“强制”该行为...

相关内容