答案1
这是改编自这个答案。
确保已加载以下包:
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
并在你的序言中添加以下定义:
\newcommand\sidecomment[5][0.1]%
{\begin{tikzpicture}[remember picture,overlay]
\draw[-stealth]
($({pic cs:#4}|-{pic cs:#2})+(#1,0)$)
.. controls +(0.2,-0.05) and +(0.2,0.1) ..
node[right,align=left]{#5}
($({pic cs:#4}|-{pic cs:#3})+(#1,0.1)$);
\end{tikzpicture}%
}
在希望箭头开始和结束的行末添加标记,使用
\tikzmark{name of mark}
然后你可以使用命令
\sidecomment[offset]{<start mark>}{<end mark>}{<alignment mark>}{<text>}
绘制一个从 到 的箭头,start mark
并end mark
标有text
。要垂直对齐箭头的起点和终点,请另外使用这两个标记中最右边的alignment mark
。offset
是一个可选参数,允许将箭头的起点和终点向右移动相同的量;它是一个数字x
,以厘米为单位给出 x 偏移量。默认值为0.1
,即\sidecomment{a}{b}{c}{d}
与 相同\sidecomment[0.1]{a}{b}{c}{d}
,这意味着箭头的起点和终点位于标记右侧 1 毫米处。
请注意,您必须运行两次 LaTeX 才能获得正确的位置。
下面的文档是根据下面的代码排版的。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark,calc}
\usepackage{amsmath}
\newcommand\sidecomment[5][0.1]%
{\begin{tikzpicture}[remember picture,overlay]
\draw[-stealth]
($({pic cs:#4}|-{pic cs:#2})+(#1,0)$)
.. controls +(0.2,-0.05) and +(0.2,0.1) ..
node[right,align=left]{#5}
($({pic cs:#4}|-{pic cs:#3})+(#1,0.1)$);
\end{tikzpicture}%
}
\begin{document}
\begin{align*}
3\cdot(-4) &=-12\tikzmark{a}\\
2\cdot(-4) &=-8\tikzmark{b}\\
1\cdot(-4) &=-4\tikzmark{c}\\
0\cdot(-4) &=0\tikzmark{d}
\end{align*}
\sidecomment{a}{b}{a}{step 1}
\sidecomment{b}{c}{a}{step 2}
\sidecomment{c}{d}{a}{step 3}
\end{document}
答案2
完成两个相邻的堆栈。我通过将 AMS 箭头 旋转\curvearrowright
90 度来获得箭头。
\documentclass{article}
\usepackage{tabstackengine,amssymb,graphicx}
\TABstackMath
\stackText
\newcommand\ldsar{\,\raisebox{-2pt}{\rotatebox[origin=bottom]{-90}{$\curvearrowright$}}\,}
\setstackgap{L}{1.1\baselineskip}
\begin{document}
\[
\alignCenterstack{
3\cdot(-4) =& -12\\
2\cdot(-4) =& -8\\
1\cdot(-4) =& -4\\
0\cdot(-4) =& 0
}
\Centerstack[l]{
\ldsar step 1\\
\ldsar step 2\\
\ldsar step 3
}
\]
\end{document}
如果需要,可以使用 展开线条,\setstackgap{L}{}
并使用 放大箭头\scalebox
,例如
\documentclass{article}
\usepackage{tabstackengine,amssymb,graphicx}
\TABstackMath
\stackText
\newcommand\ldsar{\,\scalebox{1.4}{%
\raisebox{-3pt}{\rotatebox[origin=bottom]{-90}{$\curvearrowright$}}%
}\,}
\setstackgap{L}{1.2\baselineskip}
\begin{document}
\[
\alignCenterstack{
3\cdot(-4) =& -12\\
2\cdot(-4) =& -8\\
1\cdot(-4) =& -4\\
0\cdot(-4) =& 0
}
\Centerstack[l]{
\ldsar step 1\\
\ldsar step 2\\
\ldsar step 3
}
\]
\end{document}