latex - Multicol 和页面顶部的 float 框,文本环绕在它周围

标签 latex tex pdflatex

我正在为一家杂志写一篇文章。我试图在 3 列文档的右上角插入一个( float 的)2 列框,文本很好地环绕它,然后对齐列。我正在使用 tikz 包制作盒子,这样我就可以得到一个带有圆边和背景颜色的盒子。 我正在尝试使用 wrapfig 进行包装(我也尝试了一些 minipage 的东西),但我无法让它工作。

这是一些代码,解释了我正在尝试做什么,以及我一直在尝试做什么:

\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}

最佳答案

根据我的经验,这种布局(图形跨越不止一个,但不是页面上的所有列)很难用 latex 获得。

据我所知,最好的解决方案是 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}

关于latex - Multicol 和页面顶部的 float 框,文本环绕在它周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693300/

相关文章:

Latex\tableofcontents 命令在第一次构建时始终显示空白内容

latex - pdflatex中的 "Too many open files"错误

android - 在 LaTeX 中排版数学函数以在 Android 应用程序中呈现

r - 在没有 "rownumber"(和书签)的情况下将 data.frame 从 R 转置到 Latex

python - 如何在 pandas.to_latex() 生成的 LaTeX 表中自动换行文本?

当我点击那里的内容时,LaTeX hyperref 链接会转到错误的页面

latex - 用于教育书籍的开源 LaTeX 环境?

latex - 如何在 BibTeX 中保留引号

latex - 使 Latex 排版在两个对开的页面上给定文本

latex - Pandoc:多个脚注彼此相邻?