我正在尝试绘制一些方程周围的拟合框。但是,我无法控制框的宽度。我该如何实现?
\documentclass{beamer}
\usepackage{amssymb,amsmath,empheq}
\newcommand*\widefbox[1]{\fbox{\hspace{2em}#1\hspace{2em}}}
\begin{document}
\begin{frame}{Higher Order Equations}
\begin{itemize}
\item Must make into a system of first-order equations to use ODE solvers
\item Nonlinear is OK!
\item Pendulum example:
\end{itemize}
\scriptsize
\begin{flalign*}
&\ddot{\theta}+\frac{g}{L}sin(\theta)=0&\\
&\ddot{\theta}=-\frac{g}{L}sin(\theta)&\\
&\text{let } \dot{\theta} = \gamma&\\
&\dot{\gamma}=-\dfrac{g}{L}sin(\theta)&
\end{flalign*}
\begin{subequations}
\begin{empheq}[box=\widefbox]{flalign*}
&\overrightarrow{x} = \begin{bmatrix}\theta\\\gamma\end{bmatrix}&\\
&\dfrac{d\overrightarrow{x}}{dt} = \begin{bmatrix}\dot{\theta}\\\dot{\gamma}\end{bmatrix}&
\end{empheq}
\end{subequations}
\normalsize
\end{frame}
\end{document}
答案1
为了使框架框适合其内容,首先需要测量内容宽度。在这种情况下,我只需将要测量的内容分配给框寄存器 0,即\setbox0=\hbox{...}
并从中检索其宽度\wd0
。因此,您的框宏将被定义为
\newcommand*\WideFittedFramebox[1]{%
\setbox0=\hbox{\hspace{2em}#1\hspace{2em}}%
\framebox[\the\wd0]{\hspace{2em}#1\hspace{2em}}%
}
请注意,我更改了它的名称,\framebox
现在用它来创建框架,而不是\fbox
像\framebox
命令那样采用设置宽度的可选参数。(否则就需要\fbox{\parbox{\the\wd0}{...}}
。)
另外,我调整了代码的标记
\scriptsize
在组内使用\scriptsize...\normalsize
,而不是- 环境
gather
与fleqn
选项一起,而不是flalign
带有空列的环境, \sin...
而不是简单的sin...
和- 通过在环境内正确嵌套方程块
subequations
。
完整的代码如下
\documentclass[fleqn]{beamer}
\usepackage{amssymb,amsmath,empheq}
\newcommand*\WideFittedFramebox[1]{%
\setbox0=\hbox{\hspace{2em}#1\hspace{2em}}
\framebox[\the\wd0]{\hspace{2em}#1\hspace{2em}}
}
\begin{document}
\begin{frame}{Higher Order Equations}
\begin{itemize}
\item Must make into a system of first-order equations to use ODE solvers
\item Nonlinear is OK!
\item Pendulum example:
\end{itemize}
\begingroup \scriptsize
\begin{subequations}
\begin{gather*}
\ddot{\theta}+\frac{g}{L}\sin(\theta)=0\\
\ddot{\theta}=-\frac{g}{L}\sin(\theta)\\
\text{let }\dot{\theta}=\gamma\\
\dot{\gamma}=-\dfrac{g}{L}\sin(\theta)
\end{gather*}
\begin{empheq}[box=\WideFittedFramebox]{gather*}
\overrightarrow{x}=\begin{bmatrix}\theta\\\gamma\end{bmatrix}\\
\dfrac{d\overrightarrow{x}}{dt}=\begin{bmatrix}\dot{\theta}\\\dot{\gamma}\end{bmatrix}
\end{empheq}
\end{subequations}
\endgroup
\end{frame}
\end{document}