Tengo muy poca experiencia con LaTeX. Entonces, disculpe mi ignorancia, pero ¿existe un equivalente flotante de \framebox
?
Idealmente, me gustaría una construcción simple para texto enmarcado que pueda colocar en la parte superior [t] o inferior [b] de la página.
Encontré dos publicaciones que no parecían satisfacer mis necesidades:
Respuesta1
Aquí hay una alternativa tcolorbox
para crear el cuadro flotante.
La primera versión es un enfoque 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 muchas más opciones para crear un estilo más elegante, si buscas algo así. La segunda versión usa algunas opciones de color e intercambia el parámetro de opción para tomar una lista de opciones separadas por comas. La float
opción toma los parámetros flotantes conocidos.
\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}
Respuesta2
\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}
Respuesta3
Aquí hay una opción que usa una combinación demdframed
,newfloat
, yxparse
paquete (que es cargado por mdframed
).
La siguiente línea:
\DeclareFloatingEnvironment[placement={!ht}]{myfloat}
declara un nuevo entorno flotante llamado myfloat
, que tienepor defectoubicación de !ht
y se puede anular.
Las siguientes líneas crean un nuevo entorno flotante que se combina myfloat
con un entorno del mdframed
paquete:
\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 puede ver, utiliza la sintaxis del xparse
paquete para declarar dos argumentos opcionales:
% #1: float position (optional)
% #2: options for mdframed (optional)
Se puede utilizar de cualquiera de las siguientes formas (por ejemplo):
\begin{framefloat}
\begin{framefloat}[t]
\begin{framefloat}[b][backgroundcolor=blue]
\begin{framefloat}[][backgroundcolor=red]
Aquí tienes un MWE completo para jugar. Cada uno de los paquetes que he utilizado tienemuchomás características; explora como mejor te parezca.
% 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}