将 fbox 外部的文本与 fbox 内部的文本对齐

将 fbox 外部的文本与 fbox 内部的文本对齐

我正在尝试复制以下内容:

fbox 外部带有对齐文本

我可以创建一个类似的 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}

在此处输入图片描述

相关内容