Neugestaltung der Align-Umgebung mit einer bestimmten Formatierung

Neugestaltung der Align-Umgebung mit einer bestimmten Formatierung

Ich möchte die \begin{align}-Umgebung \end{align} mit etwas Stilisierung neu gestalten und habe keine Ahnung, wie ich das machen soll. Genauer gesagt möchte ich, dass in dieser Umgebung zwei bestimmte Dinge passieren:

  1. Ich möchte, dass bei jedem Zeilenumbruch eine vertikale Linie an der Stelle eingefügt wird, an der der Befehl endet, also: Bildbeschreibung hier eingeben

  2. Wenn es sich um eine andere Operation als Gleichheit handelt, möchte ich, dass es bei einem Zeilenumbruch folgendermaßen aussieht: Bildbeschreibung hier eingeben

Ich habe keine Ahnung, wie ich mit der Entwicklung von Code beginnen soll, der dies ermöglicht ... Vielleicht wäre die Verwendung von Tikz eine einfachere Alternative, aber ich weiß nicht, wie ich dies implementieren soll.

Bei den beiden Bildern, die ich gepostet habe, habe ich die Linien von Hand gezeichnet.

Antwort1

Hier ist eine Kurzversion tikzmark(allerdings ohne die Bibliothek, da wir keine der darin enthaltenen fortgeschrittenen Techniken benötigen).

Ändern Sie, outer ysepum den Leerraum zwischen =und der eigentlichen Zeile anzupassen. (Das inner ysepträgt zum Begrenzungsrahmen bei und kann die vertikale Platzierung der Zeilen ändern, wenn es zu groß ist.)

Code

\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}

Ausgabe

Bildbeschreibung hier eingeben

Antwort2

Wie in den Kommentaren erwähnt, können Sie die Gleichheitszeichen einfügen \tikzmarknodes( {}für den richtigen Abstand hinzufügen) und dann verwenden, tikzum Linien zwischen diesen Knoten zu zeichnen (die sich über mehrere Zeilen erstrecken können):

\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}

Bildbeschreibung hier eingeben

verwandte Informationen