我知道在 Latex 中可以构建一个“重要”的方程式,例如 mathmode 中建议的方程式,但我认为最好有一个专门的环境,而不是在方程式周围放置框架或框。所以我想出了以下内容,只需调整现有的方程式环境即可:
\documentclass[fleqn,12pt]{book}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{framed}
\renewcommand*\FrameCommand{\fcolorbox{red!80}{red!20}}%
\makeatletter
\newenvironment{fequation}{%
%\setlength\abovedisplayskip{3pt}
%\setlength\belowdisplayskip{3pt}
\incr@eqnum%
\mathdisplay@push%
\st@rredfalse \global\@eqnswtrue%
\MakeFramed{%
\vspace*{-\baselineskip}%
\FrameRestore}%
\mathdisplay{equation}%
}{%
\endmathdisplay{equation}%
\mathdisplay@pop%
\ignorespacesafterend%
\vspace*{-\baselineskip}
\endMakeFramed\noindent%
}%
\makeatother
\begin{document}
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec
\begin{equation}
\cos t=\pi
\end{equation}
porttitor, orci nec nonummy molestie, enim est eleifend mi, non
\begin{fequation}
\cos t=\pi
\end{fequation}
vitae, consequat in, pretium a, enim. Pellentesque congue.
\begin{fequation}
\begin{aligned}
&\cos t=\pi\\
&\sin t=-\pi
\end{aligned}
\end{fequation}
vitae, consequat in, pretium a, enim. Pellentesque congue.
\begin{fequation}
\biggl(\int_\Omega \frac{t^2}{t+1}\D{t}\biggr)=1
\end{fequation}
\end{document}
我一直在尝试使用\vspace*
以及\abovedisplayskip
和\belowdisplayskip
命令进行调整,但我想知道如何控制主文本和框架方程之间的垂直空白?此外,欢迎您提出任何有趣的改进。
答案1
这是带有简单框的代码:
\documentclass[fleqn,12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\usepackage{microtype}
\usepackage{xcolor}
\usepackage{amsmath}
\newsavebox\MBox
\newenvironment{fequation}{%
\setlength\abovedisplayskip{0pt}%
\setlength\belowdisplayskip{0pt}%
\setlength\abovedisplayshortskip{0pt}%
\setlength\belowdisplayshortskip{0pt}%
\par\noindent\begin{lrbox}{\MBox}
\minipage{\dimexpr \linewidth-2\fboxsep-2\fboxrule\relax}
\equation\strut%
}{%
\endequation%
\endminipage%
\end{lrbox}\fcolorbox{red!80}{red!20}{\usebox\MBox}%
\ignorespacesafterend\par\noindent}%
\begin{document}
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec
%
\begin{equation}
\cos t=\pi
\end{equation}
%
por
%
\begin{fequation}
\cos t=\pi
\end{fequation}
%
vitae,
\begin{fequation}
\begin{aligned}
&\cos t=\pi\\
&\sin t=-\pi
\end{aligned}
\end{fequation}
%
vitae, consequat in, pretium a, enim. Pellentesque congue.
\begin{fequation}
\biggl(\int_\Omega \frac{t^2}{t+1}\D{t}\biggr)=1
\end{fequation}
%
\end{document}
答案2
借助tcolorbox
帮助,您可以轻松声明自己的盒式方程环境
\documentclass[fleqn,12pt]{book}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\tcbset{colback=red!20, colframe=red!80}
\newtcolorbox{fequation}[1][]{ams equation,size=small,#1}
\begin{document}
\lipsum[4]
\begin{equation}
\cos t=\pi
\end{equation}
\lipsum[4]
\begin{fequation}
\cos t=\pi
\end{fequation}
vitae, consequat in, pretium a, enim. Pellentesque congue.
\begin{fequation}[ams align]
\cos t&=\pi\\
\sin t&=-\pi
\end{fequation}
vitae, consequat in, pretium a, enim. Pellentesque congue.
\begin{fequation}
\biggl(\int_\Omega \frac{t^2}{t+1}\D{t}\biggr)=1
\end{fequation}
\end{document}
答案3
您可以使用float
以下选项创建自己的浮动环境boxed
:
\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{float}
\usepackage{lipsum}
\floatstyle{boxed}
\newfloat{frameequation}{hbtp}{feq}[section]
\floatname{frameequation}{Equation}
\newcommand{\freq}[2]{%
\begin{frameequation}%
\ensuremath{\hfill #1 \hfill}%
\caption{#2}
\end{frameequation}%
}
\begin{document}
\section{Some math topic}
\lipsum[1]
\freq{\int\limits^{\infty}_{0}\left(\frac{1}{x}\right)dx=???}{One}
\lipsum[1]
\freq{\int\limits^{\infty}_{0}\left(\frac{1}{x}\right)dx=???}{Two}
\lipsum[1]
\freq{\int\limits^{\infty}_{0}\left(\frac{1}{x}\right)dx=???}{Three}
\lipsum[1]
\end{document}
其结果为:
答案4
除了empheq
Herbert 提到的包之外,还有一个mdframed
提供类似功能的包。这个包的一个优点mdframed
是,如果要框架的块包含分页符,则不会出现任何问题——它周围的框架也会跨越页面边界。:-)