我正在使用一个带有周围环境的对齐环境(使用包empheq
)\fbox
来显示一组公式。现在我试图在“第 1 部分”和“第 2 部分”下绘制一条水平线,该水平线的范围是边界\fbox
。我尝试了一个简单的方法\hline
,但当然边界是不匹配的。
\documentclass{article}
\usepackage{empheq}
\begin{document}
\begin{empheq}[box=\fbox]{flalign*}
& \text{Part 1} & \\
& x=x & \text{(A1)} \\
& \text{Part 2} & \\
& y=y & \text{(K)}
\end{empheq}
\end{document}
答案1
根据您在原始问题关于您的方程式框的格式,并假设您不受empheq
包的约束,您可以尝试以下操作 - 即使该线没有跨越整个框的长度(但结果看起来相当令人信服)。
\documentclass{article}
\usepackage{titlesec}
\titleformat{\section}
{\normalfont\Large\bfseries}{\thesection}{1em}{}[{\titlerule[.8pt]}]
\usepackage[fleqn]{amsmath}
\usepackage{framed}
\begin{document}
\begin{framed}
\section*{Part 1}
\begin{equation*}
x=x \tag{A1}
\end{equation*}
\section*{Part 2}
\begin{equation*}
y=y \tag{K}
\end{equation*}
\end{framed}
\end{document}
答案2
我认为您不需要“第 1 部分”和“第 2 部分”下方的规则,而是需要两部分之间的规则。无论如何,我提供了两种解决方案。
\documentclass{article}
\usepackage{array}
\begin{document}
\[
\renewcommand{\arraystretch}{1.2}
\begin{tabular*}{\displaywidth}{
|@{\extracolsep{\fill}\hspace{\tabcolsep}}
l >{$\displaystyle}r<{$} @{\extracolsep{0pt}} >{$\displaystyle{}}l<{$}
@{\extracolsep{\fill}} r|
}
\hline
\textit{Part 1} &&&\\
\hline
(A1) & x&=a & \\
\hline
\textit{Part 2} &&&\\
\hline
(K) & y&=c+d & \\
\hline
\end{tabular*}
\]
\[
\renewcommand{\arraystretch}{1.2}
\begin{tabular*}{\displaywidth}{
|@{\extracolsep{\fill}\hspace{\tabcolsep}}
l >{$\displaystyle}r<{$} @{\extracolsep{0pt}} >{$\displaystyle{}}l<{$}
@{\extracolsep{\fill}} r|
}
\hline
\textit{Part 1} &&&\\
(A1) & x&=a & \\
\hline
\textit{Part 2} &&&\\
(K) & y&=c+d & \\
\hline
\end{tabular*}
\]
\end{document}
如果您想要右侧的标签,请参见这里:
\documentclass{article}
\usepackage{array}
\begin{document}
\[
\renewcommand{\arraystretch}{1.2}
\begin{tabular*}{\displaywidth}{
|@{\extracolsep{\fill}\hspace{\tabcolsep}}
l >{$\displaystyle}r<{$} @{\extracolsep{0pt}} >{$\displaystyle{}}l<{$}
@{\extracolsep{\fill}} r|
}
\hline
\textit{Part 1} &&&\\
\hline
& x&=a & (A1)\\
\hline
\textit{Part 2} &&&\\
\hline
& y&=c+d & (K)\\
\hline
\end{tabular*}
\]
\[
\renewcommand{\arraystretch}{1.2}
\begin{tabular*}{\displaywidth}{
|@{\extracolsep{\fill}\hspace{\tabcolsep}}
l >{$\displaystyle}r<{$} @{\extracolsep{0pt}} >{$\displaystyle{}}l<{$}
@{\extracolsep{\fill}} r|
}
\hline
\textit{Part 1} &&&\\
& x&=a & (A1)\\
\hline
\textit{Part 2} &&&\\
& y&=c+d & (K)\\
\hline
\end{tabular*}
\]
\end{document}
不同的实现:
\documentclass{article}
\usepackage{empheq}
\begin{document}
\begingroup\setlength{\fboxsep}{0pt}
\begin{empheq}[box=\fbox]{flalign*}
\noalign{\vspace{3pt}}
\, & \text{Part 1} & \\\
\, & x=x & \text{(A1)}\, \\\noalign{\vspace{3pt}\hrule\vspace{3pt}}
\, & \text{Part 2} & \\
\, & y=y & \text{(K)\strut} \,
\end{empheq}
\endgroup
\end{document}
但说实话,我不会使用这种方法。元素之间的空间太大了。
答案3
如果我很清楚你想要什么的话,这里有一个解决方案:
\documentclass{article}
\usepackage{empheq}
\newcommand\eqsection[1]{%
\shortintertext{\rlap{#1}\hspace{-\fontdimen2\font}\rule[-1ex]{\dimexpr\linewidth + 2\fontdimen2\font}{0.4pt}}}
\begin{document}
\begin{empheq}[box=\fbox]{flalign*}
\eqsection{Part 1}
& x=x & \text{(A1)} \\
\eqsection{Part 2}
& y=y & \text{(K)}
\end{empheq}
\end{document}
答案4
未被覆盖的边距来自于带尺寸\hrule
的内边距。\fbox
\fboxsep
以下命令\empheqsepline
将规则放入 中\hbox
。然后,可以更轻松地使规则更长,并让其向左和向右延伸。\nointerlineskip
删除 引入的垂直空间\hbox
。在规则\kern
命令之前和之后添加一些空间。示例使用\fboxsep
,但可以根据需要进行更改。
示例文件第一种使用线条来分隔各部分。第二种情况将线条放在部分标题下方,并使用空格来分隔各部分。
\documentclass{article}
\usepackage{empheq}
\newcommand*{\empheqsepline}{%
\noalign{%
% Space above the rule
\kern\fboxsep
% The rule
\nointerlineskip
\hbox to 0pt{%
\kern-\fboxsep
\vrule width\dimexpr\displaywidth+2\fboxsep height \fboxrule
\hss
}%
\nointerlineskip
% Space below the rule
\kern\fboxsep
}%
}
\begin{document}
\begin{empheq}[box=\fbox]{flalign*}
& \text{Part 1} & \\
& x=x & \text{(A1)} \\
\empheqsepline
& \text{Part 2} & \\
& y=y & \text{(K)}
\end{empheq}
\begin{empheq}[box=\fbox]{flalign*}
& \text{Part 1} & \\
\empheqsepline
& x=x & \text{(A1)} \\[2ex]
& \text{Part 2} & \\
\empheqsepline
& y=y & \text{(K)}
\end{empheq}
\end{document}