Tenho muito pouca experiência com LaTeX. Então, perdoe minha ignorância, mas existe um float equivalente a \framebox
?
Idealmente, eu gostaria de uma construção simples para texto emoldurado que pudesse posicionar na parte superior [t] ou inferior [b] da página.
Encontrei duas postagens que não pareciam atender às minhas necessidades:
Responder1
Aqui está uma alternativa tcolorbox
para criar a caixa flutuante.
A primeira versão é uma abordagem minimalista:
\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\newtcolorbox{framefloat}[1][!tb]{arc=0pt,outer arc=0pt,boxrule=0.4pt,
colframe=black,colback=white,float=#1}
\begin{document}
\begin{framefloat}
\textbf{Box on top:}
\lipsum[2]
\end{framefloat}
\begin{framefloat}[b]
\textbf{Box on bottom:}
\lipsum[2]
\end{framefloat}
\lipsum[1-3]
\end{document}
tcolorbox
permite usar muito mais opções para criar um estilo mais sofisticado, se você estiver procurando por algo assim. A segunda versão usa algumas opções de cores e troca o parâmetro option para obter uma lista de opções separadas por vírgula. A float
opção utiliza os parâmetros flutuantes conhecidos.
\documentclass{article}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\newtcolorbox{framefloat}[1][]{fonttitle=\bfseries,
colframe=yellow!30!black,colback=yellow!10!white,float=!tb,#1}
\begin{document}
\begin{framefloat}[title=Box on top]
\lipsum[2]
\end{framefloat}
\begin{framefloat}[title=Box on bottom,float=b]
\lipsum[2]
\end{framefloat}
\lipsum[1-3]
\end{document}
Responder2
\documentclass{scrartcl}
\usepackage{varwidth}
\newsavebox\FBox
\newenvironment{framefloat}[1][!htb]
{\begin{table}[#1]\centering\begin{lrbox}{\FBox}
\varwidth{\dimexpr\linewidth-2\fboxsep-2\fboxrule}}
{\endvarwidth\end{lrbox}\fbox{\usebox\FBox}\end{table}}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{framefloat}[t]
\blindtext
\end{framefloat}
\blindtext
\begin{framefloat}
\blindtext
\end{framefloat}
\end{document}
Responder3
Aqui está uma opção usando uma combinação dosmdframed
,newfloat
, exparse
pacote (que é carregado por mdframed
).
A seguinte linha:
\DeclareFloatingEnvironment[placement={!ht}]{myfloat}
declara um novo ambiente flutuante chamado myfloat
, que tempadrãoposicionamento de !ht
e pode ser substituído.
As linhas a seguir criam um novo ambiente flutuante que se combina myfloat
com um ambiente do mdframed
pacote:
\NewDocumentEnvironment{framefloat}{O{}O{}}
{% #1: float position (optional)
% #2: options for mdframed (optional)
\begin{myfloat}[#1]
\begin{mdframed}[roundcorner=10pt,backgroundcolor=green,#2]
}
{\end{mdframed}\end{myfloat}
}
Como você pode ver, ele usa a sintaxe do xparse
pacote para declarar dois argumentos opcionais:
% #1: float position (optional)
% #2: options for mdframed (optional)
Pode ser usado de qualquer uma das seguintes maneiras (por exemplo):
\begin{framefloat}
\begin{framefloat}[t]
\begin{framefloat}[b][backgroundcolor=blue]
\begin{framefloat}[][backgroundcolor=red]
Aqui está um MWE completo para brincar. Cada um dos pacotes que usei tembastantemais recursos; explore como achar melhor.
% arara: pdflatex
\documentclass{article}
\usepackage{newfloat}
\usepackage{lipsum}
\usepackage[framemethod=TikZ]{mdframed}
% new float
\DeclareFloatingEnvironment[placement={!ht}]{myfloat}
% new floating framed environment
\NewDocumentEnvironment{framefloat}{O{}O{}}
{\begin{myfloat}[#1]
\begin{mdframed}[roundcorner=10pt,backgroundcolor=green,#2]
}
{\end{mdframed}\end{myfloat}
}
\begin{document}
\lipsum
\begin{framefloat}
\lipsum[1]
\end{framefloat}
\lipsum
\begin{framefloat}[t]
\lipsum[1]
\end{framefloat}
\lipsum
\begin{framefloat}[b][backgroundcolor=blue]
\lipsum[1]
\end{framefloat}
\lipsum
\begin{framefloat}[][backgroundcolor=red]
\lipsum[1]
\end{framefloat}
\end{document}