Estou escrevendo um documento com um layout simples de três colunas usando o pacote multicols
.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{lipsum}
\usepackage{multicol}
\begin{document}
\begin{multicols}{3}
[
\section{First Section}
All human things are subject to decay. And when fate summons, Monarchs must obey.
]
\lipsum
\end{multicols}
\end{document}
No entanto, gostaria de mesclar dois deles no início, que podem ser assim:
onde a seção 'resumo' ocupa duas colunas. Alguma maneira simples de fazer isso?
Responder1
Se flowfram
não atender às suas necessidades, não existe uma maneira simples de fazer isso, mas pode ser feito. Esta solução corrige multicol
para reduzir a altura da segunda coluna no ambiente pelo valor especificado em \columnshrink
. A altura necessária é calculada definindo o resumo que abrange as duas primeiras colunas em uma caixa de salvamento e medindo sua altura total.
\documentclass{article}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{xpatch}
\newlength{\abstractwidth}
\newlength{\columnshrink}
\newsavebox{\twocolinsert}
\makeatletter
\newlength{\resized@col}
\newcounter{column@count}
\xpatchcmd{\multi@column@out}{\process@cols\mult@gfirstbox{%
\setbox\count@
\vsplit\@cclv to\dimen@
\set@keptmarks
\setbox\count@
\vbox to\dimen@
{\unvbox\count@
\ifshr@nking\vfilmaxdepth\fi}%
}%
}{\process@cols\mult@gfirstbox{%
\global\advance\c@column@count\@ne
\resized@col\dimen@%
\ifnum\c@column@count=\tw@
\advance\resized@col-\columnshrink
\fi%
\setbox\count@
\vsplit\@cclv to\resized@col
\set@keptmarks
\setbox\count@
\vbox to\dimen@
{ \ifnum\c@column@count=\tw@ \vspace*{\columnshrink} \fi%
\unvbox\count@
\ifshr@nking\vfilmaxdepth\fi}%
}%
}{\typeout{Success}}{\typeout{Failure}}
\makeatother
\begin{document}
\begin{multicols}{3}
\setlength{\abstractwidth}{2\linewidth}
\addtolength{\abstractwidth}{\columnsep}
\savebox{\twocolinsert}{\begin{minipage}{\abstractwidth}
\section*{Abstract}
\lipsum[1]
\end{minipage}}
\setlength{\columnshrink}{\ht\twocolinsert}
\addtolength{\columnshrink}{\dp\twocolinsert}
\noindent\usebox{\twocolinsert}
\section*{Introduction}
\lipsum[2-10]
\end{multicols}
\end{document}
Resultado: