使用特定格式重做對齊環境

使用特定格式重做對齊環境

我想用一些風格化來重新製作 \begin{align} 環境 \end{align} ,但我不知道如何做到這一點。嗯,確切地說,我希望在這個環境中發生兩件具體的事情:

  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}

在此輸入影像描述

相關內容