У меня очень мало опыта работы с LaTeX. Так что, простите мое невежество, но есть ли эквивалент float для \framebox
?
В идеале мне нужна простая конструкция для текста в рамке, которую я мог бы расположить вверху [t] или внизу [b] страницы.
Я нашел два поста, которые, как мне показалось, не совсем соответствовали моим потребностям:
решение1
Вот альтернативный вариант использования tcolorbox
для создания плавающего ящика.
Первая версия представляет собой минималистичный подход:
\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
позволяет использовать гораздо больше опций для создания более причудливого стиля, если вы ищете что-то подобное. Вторая версия использует некоторые параметры цвета и заменяет параметр опции на список опций, разделенных запятыми. Опция float
принимает известные плавающие параметры.
\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}
решение2
\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}
решение3
Вот вариант с использованием комбинацииmdframed
,newfloat
, иxparse
пакет (который загружается mdframed
).
Следующая строка:
\DeclareFloatingEnvironment[placement={!ht}]{myfloat}
объявляет новую плавающую среду, называемую myfloat
, которая имеетпо умолчаниюразмещение !ht
и может быть переопределено.
Следующие строки создают новую плавающую среду, которая объединяется myfloat
со средой из mdframed
пакета:
\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}
}
Как видите, он использует синтаксис из xparse
пакета для объявления двух необязательных аргументов:
% #1: float position (optional)
% #2: options for mdframed (optional)
Его можно использовать любым из следующих способов (например):
\begin{framefloat}
\begin{framefloat}[t]
\begin{framefloat}[b][backgroundcolor=blue]
\begin{framefloat}[][backgroundcolor=red]
Вот полный MWE, с которым можно поиграться. Каждый из пакетов, которые я использовал, имеетмногобольше функций; изучайте по своему усмотрению.
% 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}