我正在尝试使用以下代码匹配企业设计。该设计仅影响信件的第一页,我目前使用 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
也会有一个额外的,这是您想要避免的。\newline
wrapfig
\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}