我正在尝试复制以下内容:
我可以创建一个类似的 fbox,但我不明白如何将 fbox 外部的文本与其内部的文本对齐。
我最接近的方法是使用大量空格命令,尝试手动对齐它们,如下所示。尽管如此,我还是无法让它们完美对齐,而且我确信一定有更好的方法来实现这一点……
\documentclass{article}
\begin{document}
\begin{center}
\vspace{.1in}
\renewcommand{\arraystretch}{.5}
\setlength{\arraycolsep}{1pt}
\mbox{$N\;:\;p\quad+\quad N\backslash S\;:\;F\quad\quad\quad\quad\quad\quad\quad\quad\quad$}\\
\mbox{$\downarrow\;|\;\downarrow\quad+\quad \downarrow| \downarrow\;|\;\downarrow\quad\quad\quad\quad\quad\quad\quad\quad\quad$}\\
\fbox{$\begin{array}{cl@{\rule{.0in}{0pt}}cl@{\rule{.0in}{0pt}}cl}
\mbox{$Y\;:\;\alpha\quad+\quad Y\backslash X\;:\;\phi\;\quad\Rightarrow\;\quad X\;:\;(\phi\;\alpha)$}
\end{array}$}
\end{center}
\end{document}
答案1
叠加框架比匹配不同框之间的间距要容易得多。这也使用了 TikZ 装饰下撑。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\usetikzlibrary{decorations.pathreplacing}
\tikzstyle{underbrace style}=[decorate,decoration={brace,raise=2pt,amplitude=4pt,mirror,pre=moveto,pre length=1pt,post=moveto,post length=1pt}]
\begin{document}
\begin{equation*}% everying in math mode
\def\arraystretch{1.4}
%\setlength{\arraycolsep}{1pt}
\begin{array}{cccccccccccccccc}
N & : & p && N & \backslash & S & : & C \\
\downarrow & | & \downarrow & + & \downarrow & | & \downarrow \\
\tikzmark{AA}Y & : & \alpha & + & Y & \backslash & X & : & \phi & \Rightarrow & X & : & ( & \phi & \alpha & )\tikzmark{AB} \\
\tikzmark{BA}| &&&& |\tikzmark{BB} &&&&&& \downarrow & | & | & \downarrow & \downarrow& | \\[4pt]
\multicolumn{5}{c}{=} &&&&&& S & : & ( & C & p & )
\end{array}
\end{equation*}
\begin{tikzpicture}[overlay, remember picture]
\draw ($(pic cs:AA)+(-2pt,-2pt-\dp\strutbox)$) rectangle ($(pic cs:AB)+(2pt,2pt+\ht\strutbox)$);
\draw [underbrace style] ($(pic cs:BA)+(-2pt,-4pt)$) -- ($(pic cs:BB)+(2pt,-4pt)$);
\end{tikzpicture}
\end{document}
答案2
使用标准方法:
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\begin{document}
\[
\renewcommand{\arraystretch}{1.5}
\def\foo{%
\begin{array}{@{}*{5}{c}@{}} Y & : & \alpha & + & Y\end{array}%
}
\begin{array}{ *{16}{c} }
N & : & p & & N & \setminus & S & : & C \\[-1ex]
\downarrow & | & \downarrow & & \downarrow & | & \downarrow & | & \downarrow \\
\hline
\multicolumn{1}{|c}{Y} & : & \alpha & + & Y & \setminus & X & : & \phi &
\Rightarrow & X & : & ( & \phi & \alpha & \multicolumn{1}{c|}{)} \\
\hline
| & & & & | & & & & & & \downarrow & | & | & \downarrow & \downarrow & | \\[-3ex]
\multicolumn{5}{c}{\underbrace{\hphantom{\foo}}_{\textstyle\mathstrut{=}}} \\[-4ex]
& & & & & & & & & & S & : & ( & C & p & )
\end{array}
\]
\end{document}