当我转换数学方程式时,我喜欢为每个(主要)步骤添加一些解释,这样人们就可以很容易地看到我做了什么。有时这并不明显,解释一下通常也不会有什么坏处。现在我喜欢这样做的方式是从一个等号画一个箭头到下面的下一个等号,与前一个等号对齐。这就是现在的样子: 我在下面附上了生成此代码。这有点管用,但我想要实现的更像是这样的:
我的目标是:
- 从一个等号到下一个等号画一个箭头
- 能够在其旁边添加描述(数学和/或文本,可能是多行,可能是不同的字体或颜色)
- 简单使用,例如作为带有一个参数的命令(就像我现在拥有的那样)
- 能够在单列和双列文档中使用它
- 拥有干净、可靠的解决方案,没有瑕疵
- 如果能够在解释中添加图片那就更好了!
所以我的问题是:我该如何实现这一点?谢谢你的帮助!
这是我目前的代码。我实际上将它用作包,但选择在这里将其作为 MWE 放置:
\documentclass[a4paper]{article}
\usepackage{zref-abspos}
\usepackage{varwidth}
\makeatletter
\newlength{\remainder}
\newcounter{schritte}
\setcounter{schritte}{0}
\newcommand\setremainder{
\setlength{\remainder}{\linewidth}%
\addtolength{\remainder}{\oddsidemargin}%
\addtolength{\remainder}{1 in}%
\addtolength{\remainder}{\hoffset}%
\addtolength{\remainder}{-\zposx{ende\theschritte} sp}%
}
\newcommand\setremainderstart{%
\zsaveposx{ende\theschritte}%
}%
\newcommand{\schritttext}[1]{\stepcounter{schritte}\setremainder\left\downarrow\vphantom{\begin{varwidth}[c]{\remainder}%
\vspace*{0pt}{\small {#1}}\end{varwidth}}\right. & \,%
\setremainderstart\setremainder\begin{varwidth}[c]{\remainder}\vspace*{0pt}{\small {#1}}\end{varwidth} \nonumber\\}%
\newcommand{\schritt}[1]{\schritttext{\ensuremath{{#1}}}}
\makeatother
\usepackage{amsmath}
\begin{document}
\begin{align}
f(x)=&x^2-3x+2\\
\schritttext{Insert a "zero" }
=& \hphantom{{}-{}}x^2-2x\frac{3}{2} + \left(\frac{3}{2}\right)^2\nonumber\\
&- \left(\frac{3}{2}\right)^2 +2\\
\schritttext{use $a^2-2 ab+b^2=(a-b)^2$ (binomial formula)\\ also: $2-\left(\frac{3}{2}\right)^2= 2- \frac{9}{4}=\frac{8-9}{4}=-\frac{1}{4}$}
=&\left(x-\frac{3}{2}\right)^2-\frac{1}{4}
\end{align}
\end{document}
答案1
以下是使用 Ti 绝对定位系统的答案的尝试钾Z 而不是zref
。
\documentclass[a4paper]{article}
\usepackage{varwidth}
\usepackage{tikzpagenodes}
\usetikzlibrary{tikzmark,calc}
\makeatletter
\newcounter{schritte}
\setcounter{schritte}{0}
\newcommand{\schritttext}[1]{\stepcounter{schritte}%\setremainder\left\downarrow\vphantom{\begin{varwidth}[c]{\remainder}%
%\vspace*{0pt}{\small {#1}}\end{varwidth}}\right.
& \hphantom{{}={}}\,\tikzmark{x\theschritte}\begin{tikzpicture}[overlay,remember picture]
\path let \p1=($(current page text area.east)-(pic cs:x\theschritte)$)
in \pgfextra{\xdef\remainder{\x1}};
\end{tikzpicture}%
\begin{varwidth}[c]{\remainder}\vspace*{0pt}{\small {#1}}\end{varwidth} \nonumber\\}%
\newcommand{\schritt}[1]{\schritttext{\ensuremath{{#1}}}}
\makeatother
\usepackage{amsmath}
\begin{document}
\begin{align}
f(x)&\tikzmarknode{eq\theschritte}{=}x^2-3x+2\\
\schritttext{Insert a "zero" }
&\tikzmarknode{eq\theschritte}{=} \hphantom{{}-{}}x^2-2x\frac{3}{2} + \left(\frac{3}{2}\right)^2\nonumber\\
&\hphantom{{}=-{}}- \left(\frac{3}{2}\right)^2 +2\\
\schritttext{use $a^2-2 ab+b^2=(a-b)^2$ (binomial formula)\\ also: $2-\left(\frac{3}{2}\right)^2= 2- \frac{9}{4}=\frac{8-9}{4}=-\frac{1}{4}$}
&\tikzmarknode{eq\theschritte}{=}\left(x-\frac{3}{2}\right)^2-\frac{1}{4}
\end{align}
\begin{tikzpicture}[overlay,remember picture]
\foreach \X [evaluate=\X as \Y using {int(\X-1)}] in {1,...,\theschritte}
\draw[-latex,shorten >=2pt,shorten <=1pt] (eq\Y) -- (eq\X);
\end{tikzpicture}
\end{document}
\schritttext
在我看来,输出结果很合理。如果您愿意加载,您可以将箭头的绘制合并到 的定义中(只有在执行命令后才会设置atbegshi
下限)。但我必须承认,该提议会产生警告:,我无法解释这些警告,因此无法消除它们。\tikzmarknode
\schritttext
Package varwidth Warning: Failed to reprocess entire contents on input line 34.
在明亮的网站上,这个答案可以让你用足迹来说明 Schritte。;-)
\documentclass[a4paper]{article}
\usepackage{varwidth}
\usepackage{tikzpagenodes}
\usetikzlibrary{tikzmark,calc}
\usetikzlibrary{decorations.footprints}
\newcounter{schritte}
\setcounter{schritte}{0}
\newcommand{\schritttext}[1]{\stepcounter{schritte}%\setremainder\left\downarrow\vphantom{\begin{varwidth}[c]{\remainder}%
%\vspace*{0pt}{\small {#1}}\end{varwidth}}\right.
& \hphantom{{}={}}\,\tikzmark{x\theschritte}\begin{tikzpicture}[overlay,remember picture]
\path let \p1=($(current page text area.east)-(pic cs:x\theschritte)$)
in \pgfextra{\xdef\remainder{\x1}};
\end{tikzpicture}%
\begin{varwidth}[c]{\remainder}\vspace*{0pt}{\small {#1}}\end{varwidth} \nonumber\\}%
\newcommand{\schritt}[1]{\schritttext{\ensuremath{{#1}}}}
\usepackage{amsmath}
\begin{document}
\begin{align}
f(x)&\tikzmarknode{eq\theschritte}{=}x^2-3x+2\\
\schritttext{Insert a "zero" }
&\tikzmarknode{eq\theschritte}{=} \hphantom{{}-{}}x^2-2x\frac{3}{2} + \left(\frac{3}{2}\right)^2\nonumber\\
&\hphantom{{}=-{}}- \left(\frac{3}{2}\right)^2 +2\\
\schritttext{use $a^2-2 ab+b^2=(a-b)^2$ (binomial formula)\\ also: $2-\left(\frac{3}{2}\right)^2= 2- \frac{9}{4}=\frac{8-9}{4}=-\frac{1}{4}$}
&\tikzmarknode{eq\theschritte}{=}\left(x-\frac{3}{2}\right)^2-\frac{1}{4}
\end{align}
\begin{tikzpicture}[overlay,remember picture]
\foreach \X [evaluate=\X as \Y using {int(\X-1)}] in {1,...,\theschritte}
\fill[decorate,decoration={footprints,foot of=gnome,
stride length=12pt,foot sep=0pt}] (eq\Y) -- (eq\X);
\end{tikzpicture}
\end{document}
如果您对给定的步骤不是十分确定,您也可以使用波浪线。;-)