Я хочу переделать среду \begin{align} \end{align} с некоторой стилизацией и не представляю, как это сделать. Ну, если быть точным, я хочу, чтобы в этой среде произошло две конкретные вещи:
Я хочу, чтобы каждый перенос строки добавлял вертикальную линию в месте разрыва команды, например:
Когда это операция, отличная от равенства, я хочу, чтобы при наличии переноса строки она выглядела следующим образом:
Я понятия не имею, как начать разрабатывать код, который это делает... Возможно, использование 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}