我在某个环境下的数学模式下画出了非常相似的线条\align
。当我使用\cancel
或时,\bcancel
它不会为宽度应该相似的项绘制平行线。
我认为一个简单的再现是:
\begin{align}
f &= \left(\cancel{\frac{\partial v}{\partial x}}\right) \\
g &= \left(\cancel{\frac{\partial v}{\partial z}}\right)
\end{align}
我尝试制作一些基于 tikz 的解决方案这个问题,但不能很好地与说\left(\frac{\partial u}{\partial y} + \cancel{\frac{\partial v}{\partial z}}\right)
和产生类似的东西
编辑:
答案1
该\cancel
宏内部使用图片模式,测量其参数的宽度和高度来决定笔画的斜率。代码
\documentclass{article}
\begin{document}
\setbox0=\hbox{$x$}\showthe\wd0
\setbox0=\hbox{$z$}\showthe\wd0
\end{document}
返回
> 5.71527pt.
l.3 \setbox0=\hbox{$x$}\showthe\wd0
> 5.0903pt.
l.4 \setbox0=\hbox{$z$}\showthe\wd0
因此 的x
宽度至少比 的宽度要宽z
;至少要宽,但足以触发不同的斜率。最快(也是最不优雅)的解决方案是在符号周围添加一些手动字距调整。
我在这里通过以下解决方法实现了这个“解决方案”:\cancel
in的原始定义cancel.sty
是
\DeclareRobustCommand\cancel[1]{\ifmmode
\mathpalette{\@cancel{\@can@slash{}}}{#1}\else
\@cancel{\@can@slash{}}\hbox{#1}\fi}
我修补了这个问题(希望唐纳德不会介意),通过添加一个可选参数,该参数在参数中添加一些字距\cancel
,并在取消的表达式之外减去它,以使总宽度保持不变。
\documentclass{article}
\usepackage{cancel}
\makeatletter
\DeclareRobustCommand\cancel[2][0]{%
\ifmmode
\mkern-#1mu
\mathpalette{\@cancel{\@can@slash{}}}{\mkern#1mu #2 \mkern#1mu}%
\mkern-#1mu
\else
\dimen@=\dimexpr 1em*#1/18\relax
\kern-\dimen@
\@cancel{\@can@slash{}}\hbox{\kern\dimen@ #2\kern\dimen@}%
\kern-\dimen@
\fi}
\makeatother
\begin{document}
\[
\cancel{\frac{\partial v}{\partial x}}
\quad
\cancel[1]{\frac{\partial v}{\partial z}}
\quad
\cancel[-1]{\frac{\partial v}{\partial x}}
\quad
\cancel{\frac{\partial v}{\partial z}}
\]
\end{document}
您是否想为包含的分数添加一些宽度z
或从包含的分数中减去一些宽度x
,正如 Barbara Beeton 在她的评论),这是一个品味问题。(我同意芭芭拉的观点,但是德古斯蒂布斯...)