删除wrapfigure环境后添加的额外空间

删除wrapfigure环境后添加的额外空间

我正在尝试使用以下代码匹配企业设计。该设计仅影响信件的第一页,我目前使用 minipages 来正确定位元素。此外,我希望主文本在左侧“列”中流动,然后流到下一页,同时我希望将右列固定在第一页上。我想到的解决方案是将 minipage 放置在 wrapfigure 环境中,该环境的长度与页面上剩余的垂直空间完全相同:

\documentclass[12pt,a4paper,dvipsnames]{article}

\usepackage[a4paper,left=24mm,right=14mm,top=15mm,bottom=18mm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}

\usepackage{lipsum}

\newlength\savecolumnsep
\newlength\saveintextsep

\renewcommand{\familydefault}{\sfdefault}
\pagestyle{plain}

\begin{document}
\thispagestyle{empty}
\noindent\includegraphics[width=142mm]{./dummy.pdf}
\vspace{1mm}

\setlength{\savecolumnsep}{\columnsep}\setlength{\columnsep}{0pt}
\setlength{\saveintextsep}{\intextsep}\setlength{\intextsep}{0pt}
\begin{wrapfigure}{r}{55mm}
  \begin{minipage}[t]{5mm}\ \end{minipage}%
  \begin{minipage}[t][217mm]{50mm}
    \textbf{Date:}\\[-3pt] \today\\[4mm]
    \textbf{Address:}\\
    Street\\Zip\\[4pt]
    Phone: +123 456 789 1234\\
    Telefax: +123 456 789 1234\\[4pt]
    \vfill
    \textbf{Bank details:}\\
    BIC/SWIFT:\\
    IBAN:
  \end{minipage}
\end{wrapfigure}
%
\setlength{\columnsep}{\savecolumnsep}%
\setlength{\intextsep}{\saveintextsep}%
\noindent\textbf{Subject:} ....,
\vspace{48pt}\\
\noindent Dear ....\\[12pt]
\lipsum
\end{document}

但是,如果我使用间距命令将主题行与正文分开,则空间会被添加两次:一次是在我想要的位置,一次是在包装图环境的底部,出现在第二页。我该如何避免这种情况?也就是说,如何在流动文本中添加垂直空间,而不会在下一页出现额外的垂直空间?

我想要的是下图所示的内容(唯一缺少的是主题行和正文之间的一些空格):

在此处输入图片描述

然而,如果我在主题行和正文之间添加空格,那么第二页上就会出现一些额外的空白。

在此处输入图片描述

在想要的行为和不想要的行为之间进行插值的参数是我的 MWE 中的最后一个 \vspace 命令。

答案1

就我个人而言,我会使用两个小页面并手动插入分页符(参见如何在当前页面的侧面排列一张大图片?)。

\documentclass[12pt,a4paper,dvipsnames]{article}

\usepackage[a4paper,left=24mm,right=14mm,top=15mm,bottom=18mm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}

\usepackage{lipsum}

\newlength\savecolumnsep
\newlength\saveintextsep

\renewcommand{\familydefault}{\sfdefault}
\pagestyle{plain}

\begin{document}
\thispagestyle{empty}
\noindent\includegraphics[width=142mm]{./dummy.pdf}
\vspace{1mm}

\setlength{\savecolumnsep}{\columnsep}\setlength{\columnsep}{0pt}
\setlength{\saveintextsep}{\intextsep}\setlength{\intextsep}{0pt}
\begin{wrapfigure}{r}{55mm}
  \vspace{-\baselineskip}%
  \begin{minipage}[t][221mm][s]{50mm}
    \textbf{Date:}\\[-3pt] \today\\[4mm]
    \textbf{Address:}\\
    Street\\Zip\\[4pt]
    Phone: +123 456 789 1234\\
    Telefax: +123 456 789 1234\\[4pt]
    \vfill
    \textbf{Bank details:}\\
    BIC/SWIFT:\\
    IBAN:
  \end{minipage}
\end{wrapfigure}
%
\setlength{\columnsep}{\savecolumnsep}%
\setlength{\intextsep}{\saveintextsep}%
\noindent\textbf{Subject:} ....,
\newline\newline\newline\newline
\noindent Dear ....\\[12pt]
\lipsum
\end{document}

这更符合您的预期。既然\columnsep不可避免,您不妨使用它。请注意,即使有,环境末尾\intextsep=0pt也会有一个额外的,这是您想要避免的。\newlinewrapfig

\documentclass[12pt,a4paper,dvipsnames]{article}

\usepackage[a4paper,left=24mm,right=14mm,top=15mm,bottom=18mm,showframe]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}

\usepackage{lipsum}

\renewcommand{\familydefault}{\sfdefault}
\pagestyle{plain}

\setlength{\intextsep}{0pt}% used only by wrapfig

\begin{document}
\thispagestyle{empty}
\noindent\includegraphics[width=142mm]{./dummy.pdf}
\vspace{1mm}
\begin{wrapfigure}{r}{50mm}%
  \begin{minipage}[t][221mm][s]{50mm}
    \textbf{Date:}\\[-3pt] \today\\[4mm]
    \textbf{Address:}\\
    Street\\Zip\\[4pt]
    Phone: +123 456 789 1234\\
    Telefax: +123 456 789 1234\\[4pt]
    \vfill
    \textbf{Bank details:}\\
    BIC/SWIFT:\\
    IBAN:
  \end{minipage}\vspace{-\baselineskip}% automatic \newline at end
\end{wrapfigure}
%
\noindent\textbf{Subject:} ....,
\newline\newline\newline\newline
\noindent Dear ....\\[12pt]
\lipsum
\end{document}

相关内容