在数学模式中嵌套轮廓框(来自形式定律的公式)

在数学模式中嵌套轮廓框(来自形式定律的公式)

我想排版 Spencer-Brown 的一些公式形式法则使用嵌套交叉格式,最好使用数学模式,有时内联到段落中。例如以下内容:

在此处输入图片描述

所以我需要的是使用三角形/线条作为分隔符来嵌套块的可能性。

如果我不借助于绘制和嵌入 SVG 图形,我该怎么做呢?

答案1

这是使用一些低级 TeX 编程可以完成的事情。

\documentclass{article}
\usepackage{amsmath}

\newcommand\CROSS[1]{%
  \hbox{%
    \vbox{
      \hrule
      \kern1.5pt
      \hbox{$#1$\,\strut}
    }%
  \vrule
  }\mskip\thickmuskip
}

\begin{document}

\begin{align*}
f &= \CROSS{\CROSS{\CROSS{\CROSS{\dots a}b}a}b} \\
  &= \CROSS{\CROSS{fa}b}
\end{align*}

\end{document}

在此处输入图片描述

答案2

该解决方案使用了该stackengine包的各种功能。

\documentclass{article}
\usepackage{stackengine}
\newlength\Lobj
\newsavebox{\newobj}
\newcommand\LoF[2]{%
  \def\obj{$#1$~$#2$\,}%
  \setlength\Lobj{\widthof{\obj}}%
  \sbox\newobj{\stackon[3pt]{\obj}{\rule{\Lobj}{.3pt}}}%
  \usebox{\newobj}%
  \rule{.3pt}{\ht\newobj}%
}
\begin{document}
\def\stackalignment{l}
\(\stackunder[2ex]{$f$ = \LoF{\LoF{\LoF{\LoF{}{a}}{b}}{a}}{b}}
             {\phantom{$f$} = \LoF{\LoF{}{fa}}{b}}
\)
\end{document}

在此处输入图片描述

答案3

这是我的最终版本,允许插入垂直空格。我不知道如何自动检测水平空格,所以我有两个宏。“梯队”(第 55 页):

\documentclass{article}
\usepackage{amsmath}

\newcommand\LoF[2][0]{%
  \hbox{%
    \vbox{
      \hrule
      \kern \dimexpr 2pt + #1\dimexpr 2.7pt\relax\relax
      \hbox{$#2$\,\footnotesize\strut}
    }%
  {\vrule depth 1pt}}\mskip7mu
}
\newcommand\LoFN[2][0]{%
  \hbox{%
    \vbox{
      \hrule
      \kern \dimexpr 2pt + #1\dimexpr 2.7pt\relax\relax
      \hbox{$#2$\,\footnotesize\strut}
    }%
  {\vrule depth 1pt}}\mskip1mu
}

\begin{document}    
\begin{align*}
&\LoF{\LoF{a}b} \\[0.5ex] % ((a)b)
&= \LoF{\LoF{a}b}\LoF{\LoF{a}b} \\[0.5ex] % ((a)b)((a)b)
&= \LoF{\LoF{a}\LoFN{\LoFN{b}}}\LoF[1]{\LoF{a}b} \\[0.5ex] % (((a)b)a)(((a)b)(b))
&= \LoF{\LoF{\LoF{\LoF{a}b}a}\LoFN{\LoF{\LoF{a}b}\LoFN{b}}} \\[0.5ex] % ((((a)b)a)(((a)b)(b)))
&= \LoF{\LoF{\LoF{\LoF{a}b}a}\LoFN{\LoFN{b}}} \\[0.5ex] % ((((a)b)a)((b)))
&= \LoF{\LoF{\LoF{\LoF{a}b}a}b}  % ((((a)b)a)((b)))
\end{align*}    
\end{document}

在此处输入图片描述

相关内容