我希望我能正确表达这一点:
我想要的 LaTeX 示例如下:
例子
a+b*c=
| a=1+2
| b=g*2+3
||g=2b
|||g=3
|c= 4+d
||d=3
并且 | 应该连接起来。就像带有制表符空格的普通列表一样。
或者是否有另一种方式将方程式显示为某种连通的图形。
我发现xypic
但这并不是我真正想要的。
我可以用表格来做到这一点,将第一列连接起来,里面有一条大的垂直线,……
你知道吗?你有什么建议吗?
这不仅适用于纯数学。
答案1
规则之间的间距是可设置的,在 的定义中\lbar
,当前设置为 0.7ex。下面,我分别用数学轴在底线、顶线或中间(奇数行,然后偶数行)来显示它。
按键是\Longstack
哪个在基线上方堆叠且具有均匀的行间距,\Longunderstack
哪个从基线向下堆叠且具有均匀的行间距,以及(对于最后一个例子)\stackanchor
(对于\stacktype
“L”)将聚合基线移动到上下项目基线之间的中间位置。
\documentclass{article}
\usepackage{stackengine}
\def\lbar{%
\protect\rule[-.3\baselineskip]{.1ex}{\baselineskip}%
\protect\rule{.7ex}{0ex}%
}
\begin{document}
\[
x =
\Longstack[l]{%
{$a+b*c$}
{\lbar $a = 1 + 2$}
{\lbar $b = g*2 + 3$}
{\lbar\lbar $g = 2b$}
{\lbar\lbar\lbar $g = 3$}
{\lbar $c = 4 + d$}
{\lbar $d = 3$}%
}
\]
\[
x =
\Longunderstack[l]{%
{$a+b*c$}
{\lbar $a = 1 + 2$}
{\lbar $b = g*2 + 3$}
{\lbar\lbar $g = 2b$}
{\lbar\lbar\lbar $g = 3$}
{\lbar $c = 4 + d$}
{\lbar $d = 3$}%
}
\]
\[
x=
\savestack{\upperstack}{\Longstack[l]{%
{$a+b*c$}
{\lbar $a = 1 + 2$}
{\lbar $b = g*2 + 3$}
{\lbar\lbar $g = 2b$}%
}}
\Longunderstack[l]{%
{\upperstack}
{\lbar\lbar\lbar $g = 3$}
{\lbar $c = 4 + d$}
{\lbar $d = 3$}%
}
\]
\[
x=
\savestack{\upperstack}{\Longstack[l]{%
{$a+b*c$}
{\lbar $a = 1 + 2$}
{\lbar $b = g*2 + 3$}%
}}
\savestack{\lowerstack}{\Longunderstack[l]{%
{\lbar\lbar $g = 2b$}
{\lbar\lbar\lbar $g = 3$}
{\lbar $c = 4 + d$}%
}}
\def\stackalignment{l}
\def\stacktype{L}
\stackanchor{\upperstack}{\lowerstack}
\]
\end{document}
答案2
还有另一种可能性:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
a&+b*c = \\
&\left|\begin{aligned}
a&=1+2\\
b&=g*2+3\\
&\left|\begin{aligned}
g&=2b\\
&\left|\begin{aligned}
g=3
\end{aligned}\right.\\
\end{aligned}\right.\\
c&= 4+d\\
&\left|\begin{aligned}
d=3
\end{aligned}\right.\\
\end{aligned}\right.
\end{align}
\end{document}
答案3
这是一种可能性,通过修改 Steven Segletes 关于如何格式化电子邮件对话的旧答案获得(https://tex.stackexchange.com/a/121987/25356)。
\documentclass{article}
\usepackage{scalerel}
\global\newcounter{embedlevel}
\global\newlength\embedspace
\embedspace=3ex
\setcounter{embedlevel}{1}
\newcommand\embed[1]{%
\stepcounter{embedlevel}%
\stretchrel{\rule{0.2ex}{1ex}}{\hspace{\embedspace}\parbox{%
\textwidth-\value{embedlevel}\embedspace}{%
\rule{0ex}{2ex}$#1$\rule[-1.3ex]{0ex}{1.3ex}%
}}%
\vspace{.5ex}%
\addtocounter{embedlevel}{-1}%
}
\parindent=0pt
\begin{document}
\[
\begin{array}{l}
a+b*c=\\
\embed{%
a=1+2 \\
b=g*2+3\\
\embed{%
g=2b\\
\embed{%
g=3
}%
}\\
c= 4+d\\
\embed{%
d=3
}%
}
\end{array}
\]
\end{document}