特定の書式でalign環境をやり直す

特定の書式でalign環境をやり直す

\begin{align} 環境 \end{align} を何らかの様式で作り直したいのですが、どうすればよいかわかりません。正確に言うと、この環境で次の 2 つのことを実現したいと考えています。

  1. 各改行で、コマンドが区切られる場所に垂直線を追加したいです。つまり、 ここに画像の説明を入力してください

  2. 等価以外の演算の場合、改行があると次のようになるようにします。 ここに画像の説明を入力してください

これを実行するコードの開発をどのように開始すればよいかわかりません... おそらく tikz を使用する方が簡単な代替手段になるはずですが、これを実装する方法がわかりません。

私が投稿した画像は両方とも手描きで線を引きました。

答え1

以下は簡単なtikzmarkバージョンです (ただし、ライブラリは使用していません。ライブラリが提供する高度なテクニックは必要ないためです)。

と実際の線outer ysepの間の空白を調整するには、を変更します。( は境界ボックスに影響し、大きすぎると線の垂直配置が変わる可能性があります。)=inner ysep

コード

\documentclass[varwidth]{standalone}
%\documentclass{article}
\usepackage{amsmath, tikz}
\newcommand*\eqlineset{\pgfqkeys{/eqlines}}
\eqlineset{
  picture/.style={baseline, remember picture},
  line/.style={thick, draw=orange, line cap=round},
  node/.style={
    minimum size=+0pt, inner sep=+0pt, outer ysep=+.3333em, anchor=base,
    name=tma\thetikzmarkalign},
}
\newcounter{tikzmarkalign}
\makeatletter
\AtBeginEnvironment{align}{%
  \setcounter{tikzmarkalign}{0}%
  \newcommand*\noeq{\hphantom{{}={}}}%
  \newcommand*\eq{
    \ifnum\value{tikzmarkalign}=0
      \mathrel{\tikz[/eqlines/picture]\node[/eqlines/node]{$=$};}
    \else
      \mathrel{
        \begin{tikzpicture}[/eqlines/picture]
          \node[/eqlines/node] (tma\thetikzmarkalign) {$=$};
          \unless\ifmeasuring@
            \path[/eqlines/line, overlay] (tma\thetikzmarkalign)
                        -- (tma\pgfinteval{\thetikzmarkalign-1});
          \fi
        \end{tikzpicture}
      }
    \fi
    \stepcounter{tikzmarkalign}
  }%
}
\makeatother
\begin{document}
\begin{align}
 Lorem & \eq Ipsum \\
       & \eq dolor sit amet,\\
       & \noeq + \frac{consetetur sadipscing elitr}{sed diam nonumy} \\
       & \eq eirmod tempor invidunt.
\end{align}
\end{document}

出力

ここに画像の説明を入力してください

答え2

コメントに記載されているように、等号を配置し\tikzmarknodes{}適切な間隔を追加)、を使用してtikzこれらのノード間に線を描画できます(複数の行にまたがる場合があります)。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}

\begin{align}
    x & \tikzmarknode{eq1}{{}={}} a^2 + 2ab + b^2 \\
      & \tikzmarknode{eq2}{{}={}} (a + b)^2
\end{align}

\begin{tikzpicture}[remember picture, overlay]
    \draw[very thick, orange, shorten >=2pt, shorten <=2pt] (eq1) -- (eq2);
\end{tikzpicture}

\end{document}

ここに画像の説明を入力してください

関連情報