用线连接的方程

用线连接的方程

我编写了一个代码,定义了一个新环境,其中对齐的方程式通过线连接起来,如图所示:

在此处输入图片描述

我认为,当在对齐环境中需要在多行上拆分步骤时,它很有用,就像在第二个示例中一样:

在此处输入图片描述

它使用tikzamsmath封装。线可以连接不同的数学符号,=并且线宽可自定义。

我的问题是:

  1. 我最初编写此代码是为了学习,但后来我搜索了已包含此功能的软件包,却没有找到任何东西。您知道是否存在这样的软件包吗?
  2. 您认为这个功能有用吗?我该如何改进它?
  3. 如果第二点的答案是“是”,那么您认为最好编写一个具有此功能的包还是建议将其插入到包中amsmath

编辑

\vdotswithin提供的功能有所mathtools不同,因为它vdots在单独的行中添加了:

\usepackage{mathtools}
\begin{align*}
\prod_{z^n=-1}(w_1(z)^n+1) &= \prod_{z^n=-1}(w_1(z)^n+1) + \prod_{z^n=-1}(w_1(z)^n+1) \\
&\vdotswithin{=}\\
&= \prod_{z^n=-1}(w_1(z)^n+1)
\end{align*}

在此处输入图片描述

答案1

运行以下命令xelatex

\documentclass{article}
\usepackage{amsmath}
\usepackage{pst-node}
\begin{document}
\begin{align*}
\prod_{z^n=-1}(w_1(z)^n+1) & \rnode{A}{\;=\;} \prod_{z^n=-1}(w_1(z)^n+1)+\prod_{z^n=-1}(w_1(z)^n+1) \\
                           & \rnode{B}{\;=\;} \prod_{z^n=-1}(w_1(z)^n+1)\\
                           & \rnode{C}{\;=\;} mx+b\\
                           & \rnode{D}{\;=\;} Ax + By + C
\end{align*}
\psset{nodesepB=2pt}\ncline{A}{B}\ncline{B}{C}\ncline{C}{D}
\end{document}

在此处输入图片描述

答案2

从问题来看,如果没有给出代码,很难判断 OP 当前的实现有多容易/困难。所以我提出了这一点,意识到这可能是倒退。如果是这样,请提出建议,我会删除答案。

修改后的答案:

这里,我创建了三个宏\topeq\mideq\boteq,每个宏都有一个可选参数。第一个宏从等号向下延伸一个短竖线,就好像它是列表中的顶部方程式;第二个宏向上和向下延伸一个短竖线;第三个宏向上延伸一个竖线,就好像它是列表中的最后一个方程式。对于文本样式的方程式,这应该足以解决问题。但是,如果方程式在显示样式中垂直延伸,竖线将太短,如下所示:

在此处输入图片描述

因此,每个宏的可选参数都是制作其中一个条的长度(对于\topeq,它是 下方的条长度=,对于\mideq\boteq,它是延伸到 上方的长度=)。

与我原来的解决方案相比,这种方法的优点在于,我们不需要知道垂直线的精确长度,而只需要让它足够长以覆盖相邻的垂直线。因此,可选参数长度通常只需精确到,比如说。1ex另一个优点,正如前面提到的,是对于 textstyle 方程,不需要可选参数。

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\newcommand\topeq[1][1ex]{%
  \mathrel{\stackunder[0pt]{=}{\smash{\rule[-#1]{.5pt}{#1}}}}%
}
\newcommand\boteq[1][1.5ex]{%
  \mathrel{\stackon[1.6pt]{=}{\smash{\rule{.5pt}{#1}}}}%
}
\newcommand\mideq[1][1.5ex]{%
  \mathrel{\stackon[1.6pt]{%
    \stackunder[0pt]{=}{\smash{\rule[-1ex]{.5pt}{1ex}}}%
  }{\smash{\rule{.5pt}{#1}}}}}
\begin{document}
\begin{align*}
\prod_{z^n=-1}(w_1(z)^n+1) &\topeq \prod_{z^n=-1}(w_1(z)^n+1) + \prod_{z^n=-1}(w_1(z)^n+1) \\
&\mideq[5ex] \prod_{z^n=-1}(w_1(z)^n+1)\\
&\mideq[4ex] mx+b\\
&\boteq Ax + By + C
\end{align*}
\end{document}

经过扩展的相同结果如下所示:

在此处输入图片描述


原始答案:

在这个 MWE 中,我实现了\coneq(连接等号),它从等号向上绘制一条垂直线。缺点是用户必须指定垂直线的长度。优点是实现很简单。(我正在研究一个稍微修改过的概念,如果成功的话,我会发布)。

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\def\coneq#1{\mathrel{\stackon[2pt]{=}{\smash{\rule{.5pt}{#1}}}}}
\begin{document}
\begin{align*}
\prod_{z^n=-1}(w_1(z)^n+1) &= \prod_{z^n=-1}(w_1(z)^n+1) + \prod_{z^n=-1}(w_1(z)^n+1) \\
&\coneq{5.1ex} \prod_{z^n=-1}(w_1(z)^n+1)\\
&\coneq{4.5ex} mx+b\\
&\coneq{2.0ex} Ax + By + C
\end{align*}
\end{document}

在此处输入图片描述

相关内容