这是一些代码,解释了我正在尝试做什么,以及我一直在努力做到这一点:
\documentclass{article}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{multicol}
\definecolor{col}{rgb}{0.6,0.6,0.9}
\setlength{\columnsep}{0.5cm}
\newcommand{\floatingBox}[3]
{
\noindent
\begin{wrapfigure}{#1}{#2}
\begin{tikzpicture}
\node[rounded corners=5pt, fill=col, text width=\linewidth]{#3};
\end{tikzpicture}
\end{wrapfigure}
}
\begin{document}
\begin{multicols}{3}
\large
Some random rambling to fill a page.
Aardvark AB aback abacus abaft abalone abandon abandoned abandonment abase
abasement abash abashed abate abatement abattoir abbess abbey abbot
abbreviate abbreviation ABC abdicate abdication abdomen abdominal abduct
abduction abeam abed aberrant aberration abet abeyance abhor abhorrence
abhorrent abide abiding ability abject abjure ablaze able able-bodied ABM
abnegation abnormal abnormality aboard abode abolish abolition abolitionist
A-bomb abominable abominate abomination aboriginal aborigine abort abortion
abortionist abortive abound about about-face above aboveboard abracadabra
abrade Abraham abrasion abrasive abreast abridge abridgment abroad abrogate
abrogation abrupt abscess abscond absence absent absentee absenteeism
absent-minded absinthe absolute absolute zero absolution absolutism absolve
absorb absorbency absorbent absorbing absorption abstain abstemious
abstention abstinence abstinent abstract abstracted abstraction abstruse
absurd absurdity abundance abundant abuse abusive abut abutment abysmal
abyss AC acacia academia academic academician academy a cappella accede
accelerate acceleration accelerator accent accentuate accentuation accept
acceptability acceptable acceptance access accessibility accessible
accession.
\floatingBox{tr}{2\columnwidth + 1\columnsep}{
\begin{multicols}{2}
A box that spans 2 columns and should be floating on top of the page with
the text wrapping around it. It's aligned to the right, so it would be
exactly above 2 entire columns, with one column to its left.
\end{multicols}
}
Accessory accident accidental accident-prone acclaim acclamation acclimate
acclimation acclimatization acclimatize accolade accommodate accommodating
accommodation accompaniment accompanist accompany accomplice accomplish
accomplished accomplishment accord accordance accordingly according to
accordion accost account accountability accountable accountant accounting
accouterments accredit accreditation accrue accumulate accumulation
accumulative accuracy accurate accursed accusation accusative accusatory
accuse accused accusingly accustom accustomed ace acerbic acerbity
acetaminophen acetate acetic acid acetone acetylene ache achievable achieve
achievement.
\end{multicols}
\end{document}
答案 0 :(得分:1)
Nonfloating figure spanning two columns in multicol environment
我有类似的问题。小吃是我听过的最好的主意。
它也可以用wrapfig完成,但需要进行大量调整,但有可能:
Using wrapfig to span multiple columns
Wrapfig can't automatically make matching cutouts in adjacent columns
because it doesn't know which text will land in just the right place
in the column next-door. It certainly can't handle floating in such
situations!
Here are some methods for doing such layout "by hand". They are
practical for one or a few such figures where you can tweak the
layout for the final copy. It is too painful to do this for long
or frequently-revised documents. If you do have multiple fiddling,
fix the first one in each chapter (or after any forced page break),
rerun, then fix the second, etc.
(These examples use calc.sty to evaluate overhangs in place.)
Cutouts in Matching Columns
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~X ~~~~~~~~~~~~~~~~~Y
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
Initially, write the document without the wrapfigure, and locate the
desired natural linebreak at "X". (This first step is used for all
methods described here.) Then change to
~~~~~~~~X
\begin{wrapfigure}[6]{r}[.5\width+.5\columnsep]{6cm}
...
\end{wrapfigure}
~~~~....
and run LaTeX again. This will print the figure overlapping the right
column, but no matter. Use this run to locate position "Y" in the text.
For the final run, switch to:
~~~~~~~~X
\begin{wrapfigure}[6]{r}[.5\width+.5\columnsep]{6cm}
...
\end{wrapfigure}
~~~~....
...~~~~~~~Y
\begin{wrapfigure}[6]{l}[.5\width+.5\columnsep]{6cm}
\vfill
\end{wrapfigure}
~~~~~~~~~~~
Taking a whole column plus a cutout
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~X ~~~~~~~~~~~~~~~~~Y
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
Locate "X" first, without any figure, as above, then write the
document like:
~~~~~~~~X
\begin{wrapfigure}[6]{r}[\columnwidth+\columnsep]{9cm}
...
\end{wrapfigure}
~~~~....
and ignore the overprinting of the right column. Then, after locating
"Y" in the text, switch to:
~~~~~~~~X
\begin{wrapfigure}[6]{r}[\columnwidth+\columnsep]{9cm}
...
\end{wrapfigure}
~~~~....
...~~~~~~~Y\vspace{6\baselinskip}
~~~~~~~~~~~
for the final layout
a whole column preceding a cutout
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~X ~~~~~~~~~~~~~~~~~Y
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
After locating "X", write the draft document like:
~~~~~~~~X\vspace{6\baselinskip}
~~~~....
~~~~~~~~~~~~~
~~~~~~~~~
run LaTeX to locate "Y", and then switch to:
~~~~~~~~X\vspace{6\baselinskip}
~~~~....
~~~~~~~~~~~~~Y
\begin{wrapfigure}[6]{l}[\columnwidth+\columnsep]{9cm}
...
\end{wrapfigure}
~~~~~~~~~
Spanning (parts of) three columns
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~X ~~~~~~~~~~~~~~~~~Y ~~~~~~~~~~~~~~~~~Z
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~ ~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
This uses a combination of the above. First locate X, then use
~~~~~~~~X
\begin{wrapfigure}[6]{r}[.5\width+.5\columnwidth+\columnsep]{12cm}
...
\end{wrapfigure}
~~~~....
Locate Y from this, and change to
~~~~~~~~X
\begin{wrapfigure}[6]{r}[.5\width+.5\columnwidth+\columnsep]{12cm}
...
\end{wrapfigure}
~~~~....
~~~~~~~~~~~~Y\vspace{6\baselineskip}
~~~~~~~....
which allows you to locate Z, to end up with
~~~~~~~~X
\begin{wrapfigure}[6]{r}[.5\width+.5\columnwidth+\columnsep]{12cm}
...
\end{wrapfigure}
~~~~....
~~~~~~~~~~~~Y\vspace{6\baselineskip}
~~~~~~~....
~~~~~~~~~~~~Z
\begin{wrapfigure}[6]{l}[.5\width+.5\columnwidth+\columnsep]{12cm}
\vfill
\end{wrapfigure}
(Of course, to do matching cut-outs properly requires typesetting
the text to a grid.)
这是来自wrapfig文档。 祝你好运。
答案 1 :(得分:1)
根据我的经验,使用乳胶很难获得这样的布局(图中不止一个,但不是页面上的所有列)。
我所知道的最佳解决方案是flowfram package。该软件包允许您在编写文档内容之前定义页面布局(应放置某些框的位置)。
下面给出一个小代码示例。这是flowfram软件包附带的海报示例的重组。
\documentclass[a4wide]{article}
\usepackage{color}
\usepackage{helvet}
\usepackage{flowfram}
\setlength{\columnsep}{0.3cm}
% Base the page layout on 3 column with static header.
\NcolumnStop{3}{1 cm}
% give the static frame a label to make it easier to keep track of
\setstaticframe{\value{maxstatic}}{label={title},backcolor=[cmyk]{0.64,0,0.95,0.40},textcolor=white}
% On the first page, replace last two columns with
% 2 columns and a static above
\setflowframe{2,3}{pages={>1}}
\computeflowframearea{2,3}
\twocolumnStopinarea[1]{0.3\ffareaheight}{\ffareawidth}{\ffareaheight}{\ffareax}{\ffareay}
\setstaticframe{\value{maxstatic}}{label={info},backcolor=[cmyk]{0.26,0,0.76,0},clear}
\setallflowframes{backcolor=[cmyk]{0.15,0,0.69,0}}
\raggedright
\setlength{\parindent}{15pt}
\begin{document}
\begin{staticcontents*}{title}
\begin{center}
\bfseries\Large Creating stuff in \LaTeX\par
\end{center}
\end{staticcontents*}
\pagestyle{empty}
\begin{staticcontents*}{info}
\begin{staticfigure}
The {flowfram} package is designed to enable you to create
frames in a document such that the
contents of the {document} environment flow from one
frame to the next in the order that they were defined.
This is useful for creating posters
or magazines or any other form of document that does not
conform to the standard one or two column layout.
\vfill
\caption{The commands used to define the frames for this document g.}
\protect\label{fig:thisdoc}
\end{staticfigure}
\end{staticcontents*}
This is a modified version of the manual for the {flowfram}
package. It is intended to illustrated what can be done. See the
full manual (ffuserguide.pdf) for
a comprehensive description, as this may now be out of date.
The commands used to define the frames for
this document are shown in Figure~\ref{fig:thisdoc}.
If the columns are very narrow, it may be better to
use {raggedright}, otherwise \TeX\ may have a
problem working out the line breaks.
\section{Introduction}
The {flowfram} package is designed to enable you to create
frames in a document such that the
contents of the {document} environment flow from one
frame to the next in the order that they were defined.
This is useful for creating posters
or magazines or any other form of document that does not
conform to the standard one or two column layout.
\section{Setting up Frames}
The {flowfram} package provides three types of frame:
{flow frames}, {static
frames} and {dynamic frames}.
\subsection{Flow Frames}
The flow frame is the principle type of frame.
The text of the {document} environment will flow from
one frame to the next in order of definition. Each
flow frame has an associated width, height,
position on the page, and optionally a border.
It is recommended that all the flow frames in a document
have the same width, otherwise problems may occur
when a paragraph spans to flow frames of unequal
widths. This is because \TeX's output routine does not
register the change in {hsize} until it reaches
a paragraph break. If it is absolutely necessary for
flow frames to have unequal widths, judicious use of
{framebreak} is required.
\end{document}